obsidian-dev-utils 52.0.3 → 52.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/dist/lib/cjs/function.cjs +16 -1
- package/dist/lib/cjs/function.d.cts +11 -0
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/object-utils.cjs +3 -2
- package/dist/lib/cjs/script-utils/cli-utils.cjs +33 -9
- package/dist/lib/cjs/script-utils/cli-utils.d.cts +23 -2
- package/dist/lib/cjs/script-utils/exec.cjs +39 -12
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +2 -1
- package/dist/lib/cjs/script-utils/obsidian-cli.cjs +3 -2
- package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +20 -10
- package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +18 -7
- package/dist/lib/cjs/script-utils/version.cjs +3 -1
- package/dist/lib/esm/function.d.mts +11 -0
- package/dist/lib/esm/function.mjs +15 -1
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/object-utils.mjs +3 -2
- package/dist/lib/esm/script-utils/cli-utils.d.mts +23 -2
- package/dist/lib/esm/script-utils/cli-utils.mjs +32 -9
- package/dist/lib/esm/script-utils/exec.mjs +43 -13
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +2 -1
- package/dist/lib/esm/script-utils/obsidian-cli.mjs +3 -2
- package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +18 -7
- package/dist/lib/esm/script-utils/test-runners/vitest.mjs +20 -10
- package/dist/lib/esm/script-utils/version.mjs +3 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -121,12 +121,24 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
121
121
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
122
122
|
var function_exports = {};
|
|
123
123
|
__export(function_exports, {
|
|
124
|
+
getFunctionExpressionString: () => getFunctionExpressionString,
|
|
124
125
|
noop: () => noop,
|
|
125
126
|
noopAsync: () => noopAsync,
|
|
126
127
|
omitAsyncReturnType: () => omitAsyncReturnType,
|
|
127
128
|
omitReturnType: () => omitReturnType
|
|
128
129
|
});
|
|
129
130
|
module.exports = __toCommonJS(function_exports);
|
|
131
|
+
function getFunctionExpressionString(fn) {
|
|
132
|
+
const fnString = fn.toString();
|
|
133
|
+
if (FUNCTION_EXPRESSION_RE.test(fnString)) {
|
|
134
|
+
return fnString;
|
|
135
|
+
}
|
|
136
|
+
const asyncMatch = ASYNC_KEYWORD_RE.exec(fnString);
|
|
137
|
+
if (asyncMatch) {
|
|
138
|
+
return `async function ${fnString.slice(asyncMatch[0].length)}`;
|
|
139
|
+
}
|
|
140
|
+
return `function ${fnString}`;
|
|
141
|
+
}
|
|
130
142
|
function noop() {
|
|
131
143
|
}
|
|
132
144
|
async function noopAsync() {
|
|
@@ -136,6 +148,8 @@ function omitAsyncReturnType(fn) {
|
|
|
136
148
|
await fn(...args);
|
|
137
149
|
};
|
|
138
150
|
}
|
|
151
|
+
const FUNCTION_EXPRESSION_RE = /^(?:function\b|async\b\s*(?:function\b|\()|\()/;
|
|
152
|
+
const ASYNC_KEYWORD_RE = /^async\b\s*/;
|
|
139
153
|
function omitReturnType(fn) {
|
|
140
154
|
return (...args) => {
|
|
141
155
|
fn(...args);
|
|
@@ -143,9 +157,10 @@ function omitReturnType(fn) {
|
|
|
143
157
|
}
|
|
144
158
|
// Annotate the CommonJS export names for ESM import in node:
|
|
145
159
|
0 && (module.exports = {
|
|
160
|
+
getFunctionExpressionString,
|
|
146
161
|
noop,
|
|
147
162
|
noopAsync,
|
|
148
163
|
omitAsyncReturnType,
|
|
149
164
|
omitReturnType
|
|
150
165
|
});
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Z1bmN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggZnVuY3Rpb25zLlxuICovXG5cbi8qKlxuICogQ29udmVydHMgYSBmdW5jdGlvbiBpbnRvIGEgc3RyaW5nIHRoYXQgaXMgYSB2YWxpZCBmdW5jdGlvbiBleHByZXNzaW9uLlxuICpcbiAqIGBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcoKWAgb24gYSBzaG9ydGhhbmQgbWV0aG9kIGxpa2UgYHsgZm4oKSB7fSB9YFxuICogcmV0dXJucyBgXCJmbigpIHt9XCJgLCB3aGljaCBpcyBub3QgYSB2YWxpZCBleHByZXNzaW9uLlxuICogVGhpcyBoZWxwZXIgZGV0ZWN0cyB0aGF0IGZvcm0gYW5kIHByZWZpeGVzIGl0IHdpdGggYGZ1bmN0aW9uIGAuXG4gKlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHN0cmluZyB0aGF0IGlzIGEgdmFsaWQgZnVuY3Rpb24gZXhwcmVzc2lvbi5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZSAtLSBXZSBuZWVkIHRvIHVzZSBgRnVuY3Rpb25gIHR5cGUuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnVuY3Rpb25FeHByZXNzaW9uU3RyaW5nKGZuOiBGdW5jdGlvbik6IHN0cmluZyB7XG4gIGNvbnN0IGZuU3RyaW5nID0gZm4udG9TdHJpbmcoKTtcblxuICBpZiAoRlVOQ1RJT05fRVhQUkVTU0lPTl9SRS50ZXN0KGZuU3RyaW5nKSkge1xuICAgIHJldHVybiBmblN0cmluZztcbiAgfVxuXG4gIGNvbnN0IGFzeW5jTWF0Y2ggPSBBU1lOQ19LRVlXT1JEX1JFLmV4ZWMoZm5TdHJpbmcpO1xuICBpZiAoYXN5bmNNYXRjaCkge1xuICAgIHJldHVybiBgYXN5bmMgZnVuY3Rpb24gJHtmblN0cmluZy5zbGljZShhc3luY01hdGNoWzBdLmxlbmd0aCl9YDtcbiAgfVxuXG4gIHJldHVybiBgZnVuY3Rpb24gJHtmblN0cmluZ31gO1xufVxuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdGhpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub29wKCk6IHZvaWQge1xuICAvLyBEb2VzIG5vdGhpbmcuXG59XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5vb3BBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gRG9lcyBub3RoaW5nLlxufVxuXG4vKipcbiAqIE1ha2VzIGFuIGFzeW5jIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIG9yaWdpbmFsIGFzeW5jIGZ1bmN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgb21pdHMgdGhlIHJldHVybiB2YWx1ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBBcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBmbiAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC5cbiAqIEByZXR1cm5zIEFuIGFzeW5jIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgb21pdHMgdGhlIHJldHVybiB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9taXRBc3luY1JldHVyblR5cGU8QXJncyBleHRlbmRzIHVua25vd25bXT4oZm46ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPHVua25vd24+KTogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gYXN5bmMgKC4uLmFyZ3M6IEFyZ3MpID0+IHtcbiAgICBhd2FpdCBmbiguLi5hcmdzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBNYXRjaGVzIHN0cmluZ3MgdGhhdCBhcmUgYWxyZWFkeSB2YWxpZCBmdW5jdGlvbiBleHByZXNzaW9uczpcbiAqIC0gYGZ1bmN0aW9uIC4uLmAgKGtleXdvcmQsIG5vdCBpZGVudGlmaWVyIGxpa2UgYGZ1bmN0aW9uMWApXG4gKiAtIGAoYCAoYXJyb3cgZnVuY3Rpb24pXG4gKiAtIGBhc3luY1xcYmAgZm9sbG93ZWQgYnkgYGZ1bmN0aW9uXFxiYCBvciBgKGAgKGFzeW5jIGZ1bmN0aW9uL2Fycm93KVxuICovXG5jb25zdCBGVU5DVElPTl9FWFBSRVNTSU9OX1JFID0gL14oPzpmdW5jdGlvblxcYnxhc3luY1xcYlxccyooPzpmdW5jdGlvblxcYnxcXCgpfFxcKCkvO1xuXG4vKipcbiAqIE1hdGNoZXMgdGhlIGBhc3luY2Aga2V5d29yZCAod29yZCBib3VuZGFyeSwgbm90IGBhc3luYzFgKSBmb2xsb3dlZCBieSBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICogVXNlZCB0byBzdHJpcCB0aGUgYGFzeW5jYCBwcmVmaXggZnJvbSBhc3luYyBzaG9ydGhhbmQgbWV0aG9kcyBiZWZvcmUgcmUtYWRkaW5nIGBhc3luYyBmdW5jdGlvbmAuXG4gKi9cbmNvbnN0IEFTWU5DX0tFWVdPUkRfUkUgPSAvXmFzeW5jXFxiXFxzKi87XG5cbi8qKlxuICogTWFrZXMgYSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYW5kIG9taXRzIHRoZSByZXR1cm4gdmFsdWUuXG4gKlxuICogQHR5cGVQYXJhbSBBcmdzIC0gQXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gZm4gLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgb21pdHMgdGhlIHJldHVybiB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9taXRSZXR1cm5UeXBlPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KGZuOiAoLi4uYXJnczogQXJncykgPT4gdW5rbm93bik6ICguLi5hcmdzOiBBcmdzKSA9PiB2b2lkIHtcbiAgcmV0dXJuICguLi5hcmdzOiBBcmdzKSA9PiB7XG4gICAgZm4oLi4uYXJncyk7XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUJPLFNBQVMsNEJBQTRCLElBQXNCO0FBQ2hFLFFBQU0sV0FBVyxHQUFHLFNBQVM7QUFFN0IsTUFBSSx1QkFBdUIsS0FBSyxRQUFRLEdBQUc7QUFDekMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGFBQWEsaUJBQWlCLEtBQUssUUFBUTtBQUNqRCxNQUFJLFlBQVk7QUFDZCxXQUFPLGtCQUFrQixTQUFTLE1BQU0sV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0FBQUEsRUFDL0Q7QUFFQSxTQUFPLFlBQVksUUFBUTtBQUM3QjtBQUtPLFNBQVMsT0FBYTtBQUU3QjtBQUtBLGVBQXNCLFlBQTJCO0FBRWpEO0FBU08sU0FBUyxvQkFBNEMsSUFBMkU7QUFDckksU0FBTyxVQUFVLFNBQWU7QUFDOUIsVUFBTSxHQUFHLEdBQUcsSUFBSTtBQUFBLEVBQ2xCO0FBQ0Y7QUFRQSxNQUFNLHlCQUF5QjtBQU0vQixNQUFNLG1CQUFtQjtBQVNsQixTQUFTLGVBQXVDLElBQXlEO0FBQzlHLFNBQU8sSUFBSSxTQUFlO0FBQ3hCLE9BQUcsR0FBRyxJQUFJO0FBQUEsRUFDWjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Contains utility functions for working with functions.
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Converts a function into a string that is a valid function expression.
|
|
8
|
+
*
|
|
9
|
+
* `Function.prototype.toString()` on a shorthand method like `{ fn() {} }`
|
|
10
|
+
* returns `"fn() {}"`, which is not a valid expression.
|
|
11
|
+
* This helper detects that form and prefixes it with `function `.
|
|
12
|
+
*
|
|
13
|
+
* @param fn - The function to convert.
|
|
14
|
+
* @returns A string that is a valid function expression.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getFunctionExpressionString(fn: Function): string;
|
|
6
17
|
/**
|
|
7
18
|
* A function that does nothing.
|
|
8
19
|
*/
|
package/dist/lib/cjs/library.cjs
CHANGED
|
@@ -126,7 +126,7 @@ __export(library_exports, {
|
|
|
126
126
|
LIBRARY_VERSION: () => LIBRARY_VERSION
|
|
127
127
|
});
|
|
128
128
|
module.exports = __toCommonJS(library_exports);
|
|
129
|
-
const LIBRARY_VERSION = "52.0
|
|
129
|
+
const LIBRARY_VERSION = "52.1.0";
|
|
130
130
|
const LIBRARY_NAME = "obsidian-dev-utils";
|
|
131
131
|
const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACzCJ;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACAA;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
|
|
132
132
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -141,6 +141,7 @@ __export(object_utils_exports, {
|
|
|
141
141
|
});
|
|
142
142
|
module.exports = __toCommonJS(object_utils_exports);
|
|
143
143
|
var import_error = require('./error.cjs');
|
|
144
|
+
var import_function = require('./function.cjs');
|
|
144
145
|
var import_string = require('./string.cjs');
|
|
145
146
|
var import_type_guards = require('./type-guards.cjs');
|
|
146
147
|
var FunctionHandlingMode = /* @__PURE__ */ ((FunctionHandlingMode2) => {
|
|
@@ -460,7 +461,7 @@ function handleFunction(value, functionTexts, fullOptions) {
|
|
|
460
461
|
return void 0;
|
|
461
462
|
}
|
|
462
463
|
const index = functionTexts.length;
|
|
463
|
-
const functionText = fullOptions.functionHandlingMode === "full" /* Full */ ?
|
|
464
|
+
const functionText = fullOptions.functionHandlingMode === "full" /* Full */ ? (0, import_function.getFunctionExpressionString)(value) : `function ${value.name || "anonymous"}() { /* ... */ }`;
|
|
464
465
|
functionTexts.push(functionText);
|
|
465
466
|
return makePlaceholder("Function" /* Function */, index);
|
|
466
467
|
}
|
|
@@ -551,4 +552,4 @@ function tryHandleToJSON(value, key, depth, fullOptions, functionTexts, usedObje
|
|
|
551
552
|
setNestedPropertyValue,
|
|
552
553
|
toJson
|
|
553
554
|
});
|
|
554
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29iamVjdC11dGlscy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgT2JqZWN0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvbnN0cnVjdG9yLFxuICBSZXF1aXJlZEtleXNPZixcbiAgVW5kZWZpbmVkT25QYXJ0aWFsRGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNPYmplY3QgfSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgRXhhY3RNZW1iZXJzLFxuICBNYXliZVJldHVybixcbiAgU3RyaW5nS2V5c1xufSBmcm9tICcuL3R5cGUudHMnO1xuXG5pbXBvcnQgeyBlcnJvclRvU3RyaW5nIH0gZnJvbSAnLi9lcnJvci50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi9zdHJpbmcudHMnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBlbnN1cmVHZW5lcmljT2JqZWN0LFxuICBlbnN1cmVOb25OdWxsYWJsZVxufSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFuZGxlZCBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gKi9cbmV4cG9ydCBlbnVtIEZ1bmN0aW9uSGFuZGxpbmdNb2RlIHtcbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIGZ1bmN0aW9ucyBmcm9tIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIEV4Y2x1ZGUgPSAnZXhjbHVkZScsXG4gIC8qKlxuICAgKiBJbmNsdWRlcyB0aGUgZnVsbCBmdW5jdGlvbiBkZWZpbml0aW9uIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIEZ1bGwgPSAnZnVsbCcsXG4gIC8qKlxuICAgKiBJbmNsdWRlcyBvbmx5IHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIE5hbWVPbmx5ID0gJ25hbWVPbmx5J1xufVxuXG5lbnVtIFRva2VuU3Vic3RpdHV0aW9uS2V5IHtcbiAgQ2lyY3VsYXJSZWZlcmVuY2UgPSAnQ2lyY3VsYXJSZWZlcmVuY2UnLFxuICBGdW5jdGlvbiA9ICdGdW5jdGlvbicsXG4gIE1heERlcHRoTGltaXRSZWFjaGVkID0gJ01heERlcHRoTGltaXRSZWFjaGVkJyxcbiAgTWF4RGVwdGhMaW1pdFJlYWNoZWRBcnJheSA9ICdNYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5JyxcbiAgVG9KU09ORmFpbGVkID0gJ1RvSlNPTkZhaWxlZCcsXG4gIFVuZGVmaW5lZCA9ICdVbmRlZmluZWQnXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHRvSnNvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9Kc29uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFuZGxlZCBpbiB0aGUgSlNPTiBvdXRwdXQgKGRlZmF1bHQ6IGBleGNsdWRlYCkuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGU7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBkZXB0aCBvZiBuZXN0ZWQgb2JqZWN0cyB0byBpbmNsdWRlIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogVXNlIGAtMWAgZm9yIG5vIGxpbWl0LlxuICAgKiBEZWZhdWx0cyB0byBgLTFgLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4RGVwdGg6IG51bWJlcjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gY2F0Y2ggZXJyb3JzIGluIGB0b0pTT04oKWAgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGEgcGxhY2Vob2xkZXIuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRDYXRjaFRvSlNPTkVycm9yczogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gaGFuZGxlIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2VzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBoYW5kbGUgZXJyb3JzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEhhbmRsZUVycm9yczogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gaGFuZGxlIGB1bmRlZmluZWRgIHZhbHVlcyBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRIYW5kbGVVbmRlZmluZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHNvcnQgdGhlIGtleXMgb2YgdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU29ydEtleXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIEpTT04gb3V0cHV0LiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBzcGFjZXMgb3IgYSBzdHJpbmcuIERlZmF1bHRzIHRvIGAyYC5cbiAgICovXG4gIHJlYWRvbmx5IHNwYWNlOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc3Vic3RpdHV0aW9ucyB0byB1c2UgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5TdWJzdGl0dXRpb25zOiBQYXJ0aWFsPFRva2VuU3Vic3RpdHV0aW9ucz47XG59XG5cbmludGVyZmFjZSBBcHBseVN1YnN0aXR1dGlvbnNQYXJhbXMge1xuICByZWFkb25seSBmdW5jdGlvblRleHRzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgaW5kZXg6IG51bWJlcjtcbiAgcmVhZG9ubHkga2V5OiBUb2tlblN1YnN0aXR1dGlvbktleTtcbiAgcmVhZG9ubHkgc3Vic3RpdHV0aW9uczogVG9rZW5TdWJzdGl0dXRpb25zO1xufVxuXG5pbnRlcmZhY2UgRXF1YWxpdHlDb21wYXJlckVudHJ5PFQ+IHtcbiAgY29uc3RydWN0b3I6IENvbnN0cnVjdG9yPFQ+O1xuICBlcXVhbGl0eUNvbXBhcmVyKGE6IFQsIGI6IFQpOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgSlNPTlNlcmlhbGl6YWJsZSB7XG4gIHRvSlNPTiguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgTW9kdWxlV2l0aERlZmF1bHRFeHBvcnQ8VD4ge1xuICBkZWZhdWx0OiBUO1xufVxuXG5pbnRlcmZhY2UgUmVzb2x2ZWRUb0pzb25PcHRpb25zIGV4dGVuZHMgVG9Kc29uT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHRva2VuU3Vic3RpdHV0aW9uczogVG9rZW5TdWJzdGl0dXRpb25zO1xufVxuXG5pbnRlcmZhY2UgVG9rZW5TdWJzdGl0dXRpb25zIHtcbiAgY2lyY3VsYXJSZWZlcmVuY2U6IHN0cmluZztcbiAgbWF4RGVwdGhMaW1pdFJlYWNoZWQ6IHN0cmluZztcbiAgdG9KU09ORmFpbGVkOiBzdHJpbmc7XG59XG5cbmNvbnN0IEtFWV9TRVBBUkFUT1IgPSAnLic7XG5jb25zdCBlcXVhbGl0eUNvbXBhcmVyRW50cmllcyA9IGNyZWF0ZUVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKFxuICBbXG4gICAgeyBjb25zdHJ1Y3RvcjogQXJyYXlCdWZmZXIsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbEFycmF5QnVmZmVyIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogRGF0ZSwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsRGF0ZSB9LFxuICAgIHsgY29uc3RydWN0b3I6IFJlZ0V4cCwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsUmVnRXhwIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogTWFwLCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxNYXAgfSxcbiAgICB7IGNvbnN0cnVjdG9yOiBTZXQsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbFNldCB9XG4gIF0gYXMgY29uc3Rcbik7XG5cbnR5cGUgS2V5c1dpdGhVbmRlZmluZWQ8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdLT86IHVuZGVmaW5lZCBleHRlbmRzIFRbS10gPyBLIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG50eXBlIE1hbmRhdG9yeUtleXNXaXRoVW5kZWZpbmVkPFQgZXh0ZW5kcyBvYmplY3Q+ID0gRXh0cmFjdDxSZXF1aXJlZEtleXNPZjxUPiAmIFN0cmluZ0tleXM8VD4sIEtleXNXaXRoVW5kZWZpbmVkPFQ+PjtcblxudHlwZSBSZW1vdmVVbmRlZmluZWRPdmVybG9hZDxUIGV4dGVuZHMgb2JqZWN0PiA9IE1hbmRhdG9yeUtleXNXaXRoVW5kZWZpbmVkPFQ+IGV4dGVuZHMgbmV2ZXIgPyBbb2JqOiBUXVxuICA6IG5ldmVyO1xuXG50eXBlIFJlbW92ZVVuZGVmaW5lZFdpdGhLZXlzT3ZlcmxvYWQ8VCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdPiA9IFtvYmo6IFQsIGtleXNUb0tlZXA6IEV4YWN0TWVtYmVyczxNYW5kYXRvcnlLZXlzV2l0aFVuZGVmaW5lZDxUPiwgSz5dO1xuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZSAtIFRoZSBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3QsIFU+KHRhcmdldDogVCwgc291cmNlOiBVKTogVCAmIFU7XG4vKipcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UxIC0gVGhlIGZpcnN0IHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UyIC0gVGhlIHNlY29uZCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3QsIFUsIFY+KHRhcmdldDogVCwgc291cmNlMTogVSwgc291cmNlMjogVik6IFQgJiBVICYgVjtcbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTMgLSBUaGUgdGhpcmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWLCBXPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYsIHNvdXJjZTM6IFcpOiBUICYgVSAmIFYgJiBXO1xuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2VzIC0gVGhlIHNvdXJjZSBvYmplY3RzIHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIHJldHVybiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXNJbXBsKHRhcmdldCwgLi4uc291cmNlcyk7XG59XG4vKipcbiAqIENhc3RzIGEgdmFsdWUgdG8gYSBzcGVjaWZpYyB0eXBlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjYXN0LlxuICogQHJldHVybnMgVGhlIHZhbHVlIGFzIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byBjYXN0LlxuZXhwb3J0IGZ1bmN0aW9uIGNhc3RUbzxUPih2YWx1ZTogdW5rbm93bik6IFQge1xuICByZXR1cm4gdmFsdWUgYXMgVDtcbn1cbi8qKlxuICogQ2xvbmVzIGFuIG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyBBIG5ldyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBvcmlnaW5hbCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVXaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogVCB7XG4gIHJldHVybiBPYmplY3QuY3JlYXRlKGdldFByb3RvdHlwZU9mKG9iaiksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iaikpIGFzIFQ7XG59XG4vKipcbiAqIENvbXBhcmVzIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGRlZXBseSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZGVlcGx5IGVxdWFsLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBFcXVhbChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IGIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBhQ29uc3RydWN0b3IgPSBhLmNvbnN0cnVjdG9yO1xuICBjb25zdCBiQ29uc3RydWN0b3IgPSBiLmNvbnN0cnVjdG9yO1xuXG4gIGlmIChhQ29uc3RydWN0b3IgIT09IGJDb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChhQ29uc3RydWN0b3IgIT09IE9iamVjdCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGRlZXBFcXVhbFR5cGVkKGEsIGIpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBrZXlzQSA9IGdldEFsbEtleXMoYSk7XG4gIGNvbnN0IGtleXNCID0gZ2V0QWxsS2V5cyhiKTtcblxuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBhUmVjb3JkID0gZW5zdXJlR2VuZXJpY09iamVjdChhKTtcbiAgY29uc3QgYlJlY29yZCA9IGVuc3VyZUdlbmVyaWNPYmplY3QoYik7XG5cbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0EpIHtcbiAgICBpZiAoIWtleXNCLmluY2x1ZGVzKGtleSkgfHwgIWRlZXBFcXVhbChhUmVjb3JkW2tleV0sIGJSZWNvcmRba2V5XSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBEZWxldGVzIG11bHRpcGxlIHByb3BlcnRpZXMgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGRlbGV0ZSB0aGUgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHByb3BlcnR5TmFtZXMgLSBUaGUgbmFtZXMgb2YgdGhlIHByb3BlcnRpZXMgdG8gZGVsZXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIGFueSBvZiB0aGUgcHJvcGVydGllcyB3ZXJlIHByZXNlbnQsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQsIHByb3BlcnR5TmFtZXM6IChrZXlvZiBUKVtdKTogYm9vbGVhbiB7XG4gIGxldCBhbnMgPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiBwcm9wZXJ0eU5hbWVzKSB7XG4gICAgYW5zID0gZGVsZXRlUHJvcGVydHkob2JqLCBwcm9wZXJ0eU5hbWUpIHx8IGFucztcbiAgfVxuXG4gIHJldHVybiBhbnM7XG59XG5cbi8qKlxuICogRGVsZXRlcyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBkZWxldGUgdGhlIHByb3BlcnR5IGZyb20uXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgd2FzIHByZXNlbnQsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlUHJvcGVydHk8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBULCBwcm9wZXJ0eU5hbWU6IGtleW9mIFQpOiBib29sZWFuIHtcbiAgaWYgKCFPYmplY3QuaGFzT3duKG9iaiwgcHJvcGVydHlOYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlIC0tIFdlIGhhdmUgbm8gb3RoZXIgd2F5IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkuXG4gIGRlbGV0ZSBvYmpbcHJvcGVydHlOYW1lXTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGRlZmF1bHQgZXhwb3J0IGZyb20gYSBtb2R1bGUuXG4gKlxuICogVXNlZnVsIHRvIGhhbmRsZSBpbmNvcnJlY3QgZGVmYXVsdCBleHBvcnQgaW50ZXJvcCBiZXR3ZWVuIEVTTSBhbmQgQ0pTLlxuICpcbiAqIEBwYXJhbSBtb2R1bGUgLSBUaGUgbW9kdWxlIHRvIGV4dHJhY3QgdGhlIGRlZmF1bHQgZXhwb3J0IGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZGVmYXVsdCBleHBvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3A8VD4obW9kdWxlOiBNb2R1bGVXaXRoRGVmYXVsdEV4cG9ydDxUPiB8IFQpOiBUIHtcbiAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICdvYmplY3QnIHx8IG1vZHVsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBtb2R1bGU7XG4gIH1cblxuICBpZiAoJ2RlZmF1bHQnIGluIG1vZHVsZSkge1xuICAgIHJldHVybiBtb2R1bGUuZGVmYXVsdDtcbiAgfVxuXG4gIHJldHVybiBtb2R1bGU7XG59XG5cbi8qKlxuICogR2V0cyBhbGwgZW50cmllcyBvZiBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBlbnRyaWVzIG9mLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWxsIGVudHJpZXMgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbEVudHJpZXM8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogW1N0cmluZ0tleXM8VD4sIFRbU3RyaW5nS2V5czxUPl1dW10ge1xuICByZXR1cm4gZ2V0QWxsS2V5cyhvYmopLm1hcCgoa2V5KSA9PiBba2V5LCBvYmpba2V5XV0pO1xufVxuXG4vKipcbiAqIEdldHMgYWxsIGtleXMgb2YgYW4gb2JqZWN0LlxuICogSW5jbHVkZXMgZmllbGRzIGFuZCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB0aGUga2V5cyBvZi5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBrZXlzIG9mIHRoZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxLZXlzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFN0cmluZ0tleXM8VD5bXSB7XG4gIGNvbnN0IGtleXM6IFN0cmluZ0tleXM8VD5bXSA9IFtdO1xuICBsZXQgY3VycmVudDogbnVsbCB8IG9iamVjdCA9IG9iajtcbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGN1cnJlbnQpIGFzIFJlY29yZDxzdHJpbmcsIFByb3BlcnR5RGVzY3JpcHRvcj47XG4gICAgZm9yIChjb25zdCBba2V5LCBkZXNjcmlwdG9yXSBvZiBPYmplY3QuZW50cmllcyhkZXNjcmlwdG9ycykpIHtcbiAgICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IudmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhc0dldHRlciA9IHR5cGVvZiBkZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIGNvbnN0IGhhc1NldHRlciA9IHR5cGVvZiBkZXNjcmlwdG9yLnNldCA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIGlmIChoYXNHZXR0ZXIgfHwgaGFzU2V0dGVyKSB7XG4gICAgICAgIGlmIChoYXNHZXR0ZXIgJiYgaGFzU2V0dGVyKSB7XG4gICAgICAgICAga2V5cy5wdXNoKGtleSBhcyBTdHJpbmdLZXlzPFQ+KTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKSB7XG4gICAgICAgIGtleXMucHVzaChrZXkgYXMgU3RyaW5nS2V5czxUPik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY3VycmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjdXJyZW50KSBhcyBudWxsIHwgb2JqZWN0O1xuICB9XG4gIHJldHVybiBrZXlzLnNvcnQoKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgdGhlIG5lc3RlZCBwcm9wZXJ0eSB2YWx1ZSBmcm9tLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKG9iajogR2VuZXJpY09iamVjdCwgcGF0aDogc3RyaW5nKTogdW5rbm93biB7XG4gIGxldCBub2RlOiBHZW5lcmljT2JqZWN0IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdChLRVlfU0VQQVJBVE9SKTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG5vZGUgPSBub2RlW2tleV0gYXMgR2VuZXJpY09iamVjdCB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc3BlY2lmaWVkIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIGluc3RhbmNlIC0gVGhlIG9iamVjdCBpbnN0YW5jZSB0byByZXRyaWV2ZSB0aGUgcHJvdG90eXBlIG9mLlxuICogQHJldHVybnMgVGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2Y8VD4oaW5zdGFuY2U6IFQpOiBUIHtcbiAgaWYgKGluc3RhbmNlID09PSB1bmRlZmluZWQgfHwgaW5zdGFuY2UgPT09IG51bGwpIHtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnN0YW5jZSkgYXMgVDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIG5hbWUgb2YgYSBwcm9wZXJ0eSBvZiBhIGdpdmVuIHR5cGUgYFRgLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgcHJvcGVydHkuXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBhcyBhIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hbWVvZjxUIGV4dGVuZHMgb2JqZWN0PihuYW1lOiBTdHJpbmdLZXlzPFQ+KTogU3RyaW5nS2V5czxUPiB7XG4gIHJldHVybiBuYW1lO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgb3B0aW9uYWwgcHJvcGVydGllcyB0byBhbGxvdyBgdW5kZWZpbmVkYCBhc3NpZ25tZW50IGluIHN0cmljdCBtb2RlLlxuICpcbiAqIFRoaXMgdXRpbGl0eSBwcm92aWRlcyBhIHdvcmthcm91bmQgZm9yIHRoZSBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNgIFR5cGVTY3JpcHQgZmxhZyxcbiAqIHdoaWNoIHByb2hpYml0cyBkaXJlY3RseSBhc3NpZ25pbmcgYHVuZGVmaW5lZGAgdG8gb3B0aW9uYWwgcHJvcGVydGllcyB3aGVuIHRoZSB0eXBlXG4gKiBleHBsaWNpdGx5IG9taXRzIGB1bmRlZmluZWRgLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBXaXRoIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlczogdHJ1ZWBcbiAqIGNvbnN0IHg6IHsgcHJvcD86IHN0cmluZyB9ID0geyBwcm9wOiB1bmRlZmluZWQgfTsgLy8gQ29tcGlsZXIgZXJyb3JcbiAqXG4gKiAvLyBVc2luZyB0aGlzIHV0aWxpdHk6XG4gKiBjb25zdCB5OiB7IHByb3A/OiBzdHJpbmcgfSA9IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczx7IHByb3A/OiBzdHJpbmcgfT4oeyBwcm9wOiB1bmRlZmluZWQgfSk7IC8vIFdvcmtzXG4gKiBgYGBcbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdGFyZ2V0IHR5cGUgd2l0aCBvcHRpb25hbCBwcm9wZXJ0aWVzIHRvIG5vcm1hbGl6ZS5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIG5vcm1hbGl6ZSwgYWxsb3dpbmcgZXhwbGljaXQgYHVuZGVmaW5lZGAgZm9yIG9wdGlvbmFsIHByb3BlcnRpZXMuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBvYmplY3QsIGNvbXBhdGlibGUgd2l0aCBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFQ+KG9iajogVW5kZWZpbmVkT25QYXJ0aWFsRGVlcDxUPik6IFQge1xuICByZXR1cm4gb2JqIGFzIFQ7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwgYHVuZGVmaW5lZGAgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdCB3aGVuIHRoZXJlIGFyZSBubyBtYW5kYXRvcnkga2V5cyB3aXRoIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBvYmplY3Qgd2l0aCBhbGwgYHVuZGVmaW5lZGAgcHJvcGVydGllcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllczxUeXBlIGV4dGVuZHMgb2JqZWN0PihcbiAgLi4uYXJnczogUmVtb3ZlVW5kZWZpbmVkT3ZlcmxvYWQ8VHlwZT5cbik6IFR5cGU7XG4vKipcbiAqIFJlbW92ZXMgYWxsIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgZnJvbSBhbiBvYmplY3Qgd2hlbiB0aGVyZSBhcmUgbWFuZGF0b3J5IGtleXMgd2l0aCBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEB0eXBlUGFyYW0gS2V5c1RvS2VlcCAtIFRoZSBrZXlzIHRvIGtlZXAuXG4gKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIG9iamVjdCB3aXRoIGFsbCBgdW5kZWZpbmVkYCBwcm9wZXJ0aWVzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzPFR5cGUgZXh0ZW5kcyBvYmplY3QsIGNvbnN0IEtleXNUb0tlZXAgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXT4oXG4gIC4uLmFyZ3M6IFJlbW92ZVVuZGVmaW5lZFdpdGhLZXlzT3ZlcmxvYWQ8VHlwZSwgS2V5c1RvS2VlcD5cbik6IFR5cGU7XG4vKipcbiAqIFJlbW92ZXMgYWxsIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEB0eXBlUGFyYW0gS2V5c1RvS2VlcCAtIFRoZSBrZXlzIHRvIGtlZXAuXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byByZW1vdmUgYHVuZGVmaW5lZGAgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIGtleXNUb0tlZXAgLSBUaGUga2V5cyB0byBrZWVwLlxuICogQHJldHVybnMgVGhlIG9iamVjdCB3aXRoIGFsbCBgdW5kZWZpbmVkYCBwcm9wZXJ0aWVzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzPFR5cGUgZXh0ZW5kcyBvYmplY3Q+KG9iajogVHlwZSwga2V5c1RvS2VlcD86IHJlYWRvbmx5IHN0cmluZ1tdKTogVHlwZSB7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikgYXMgW1N0cmluZ0tleXM8VHlwZT4sIHVua25vd25dW10pIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAha2V5c1RvS2VlcD8uaW5jbHVkZXMoa2V5IGFzIHN0cmluZykpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgICAgIGRlbGV0ZSBvYmpba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBpbiBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gc2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgaW4uXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IEdlbmVyaWNPYmplY3QsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFByb3BlcnR5IHBhdGggJHtwYXRofSBub3QgZm91bmRgKTtcbiAgbGV0IG5vZGU6IEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQgPSBvYmo7XG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KEtFWV9TRVBBUkFUT1IpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzLnNsaWNlKDAsIC0xKSkge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBsYXN0S2V5ID0gZW5zdXJlTm9uTnVsbGFibGUoa2V5cy5hdCgtMSkpO1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBub2RlW2xhc3RLZXldID0gdmFsdWU7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBnaXZlbiB2YWx1ZSB0byBhIEpTT04gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgdG8gSlNPTi4gVGhpcyBjYW4gYmUgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIHRoZSBKU09OIGNvbnZlcnNpb24gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIFRoZSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb24odmFsdWU6IHVua25vd24sIG9wdGlvbnM6IFBhcnRpYWw8VG9Kc29uT3B0aW9ucz4gPSB7fSk6IHN0cmluZyB7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUmVzb2x2ZWRUb0pzb25PcHRpb25zID0ge1xuICAgIGZ1bmN0aW9uSGFuZGxpbmdNb2RlOiBGdW5jdGlvbkhhbmRsaW5nTW9kZS5FeGNsdWRlLFxuICAgIG1heERlcHRoOiAtMSxcbiAgICBzaG91bGRDYXRjaFRvSlNPTkVycm9yczogZmFsc2UsXG4gICAgc2hvdWxkSGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2VzOiBmYWxzZSxcbiAgICBzaG91bGRIYW5kbGVFcnJvcnM6IGZhbHNlLFxuICAgIHNob3VsZEhhbmRsZVVuZGVmaW5lZDogZmFsc2UsXG4gICAgc2hvdWxkU29ydEtleXM6IGZhbHNlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgc3BhY2U6IDIsXG4gICAgdG9rZW5TdWJzdGl0dXRpb25zOiB7XG4gICAgICBjaXJjdWxhclJlZmVyZW5jZTogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5LkNpcmN1bGFyUmVmZXJlbmNlKSxcbiAgICAgIG1heERlcHRoTGltaXRSZWFjaGVkOiBtYWtlT2JqZWN0VG9rZW5TdWJzdGl0dXRpb24oVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWQpLFxuICAgICAgdG9KU09ORmFpbGVkOiBtYWtlT2JqZWN0VG9rZW5TdWJzdGl0dXRpb24oVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkKVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBmdWxsT3B0aW9ucyA9IHtcbiAgICAuLi5ERUZBVUxUX09QVElPTlMsXG4gICAgLi4ub3B0aW9ucyxcbiAgICB0b2tlblN1YnN0aXR1dGlvbnM6IHtcbiAgICAgIC4uLkRFRkFVTFRfT1BUSU9OUy50b2tlblN1YnN0aXR1dGlvbnMsXG4gICAgICAuLi5vcHRpb25zLnRva2VuU3Vic3RpdHV0aW9uc1xuICAgIH1cbiAgfTtcblxuICBpZiAoZnVsbE9wdGlvbnMubWF4RGVwdGggPT09IC0xKSB7XG4gICAgZnVsbE9wdGlvbnMubWF4RGVwdGggPSBJbmZpbml0eTtcbiAgfVxuXG4gIGNvbnN0IGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHVzZWRPYmplY3RzID0gbmV3IFdlYWtTZXQ8b2JqZWN0PigpO1xuXG4gIGNvbnN0IHBsYWluT2JqZWN0ID0gdG9QbGFpbk9iamVjdCh2YWx1ZSwgJycsIDAsIHRydWUsIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gIGxldCBqc29uID0gZW5zdXJlTm9uTnVsbGFibGUoSlNPTi5zdHJpbmdpZnkocGxhaW5PYmplY3QsIG51bGwsIGZ1bGxPcHRpb25zLnNwYWNlKSk7XG4gIGpzb24gPSByZXBsYWNlQWxsKGpzb24sIC9cIlxcW1xcWyg/PEtleT5bQS1aYS16XSspKD88SW5kZXg+XFxkKilcXF1cXF1cIi9nLCAoXywga2V5LCBpbmRleFN0cikgPT5cbiAgICBhcHBseVN1YnN0aXR1dGlvbnMoe1xuICAgICAgZnVuY3Rpb25UZXh0cyxcbiAgICAgIGluZGV4OiBpbmRleFN0ciA/IHBhcnNlSW50KGluZGV4U3RyLCAxMCkgOiAwLFxuICAgICAga2V5OiBrZXkgYXMgVG9rZW5TdWJzdGl0dXRpb25LZXksXG4gICAgICBzdWJzdGl0dXRpb25zOiBmdWxsT3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9KSk7XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiBhcHBseVN1YnN0aXR1dGlvbnMocGFyYW1zOiBBcHBseVN1YnN0aXR1dGlvbnNQYXJhbXMpOiBNYXliZVJldHVybjxzdHJpbmc+IHtcbiAgc3dpdGNoIChwYXJhbXMua2V5KSB7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5DaXJjdWxhclJlZmVyZW5jZTpcbiAgICAgIHJldHVybiBwYXJhbXMuc3Vic3RpdHV0aW9ucy5jaXJjdWxhclJlZmVyZW5jZTtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LkZ1bmN0aW9uOlxuICAgICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHBhcmFtcy5mdW5jdGlvblRleHRzW3BhcmFtcy5pbmRleF0sIGBGdW5jdGlvbiB3aXRoIGluZGV4ICR7U3RyaW5nKHBhcmFtcy5pbmRleCl9IG5vdCBmb3VuZGApO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWQ6XG4gICAgICByZXR1cm4gcGFyYW1zLnN1YnN0aXR1dGlvbnMubWF4RGVwdGhMaW1pdFJlYWNoZWQ7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5OlxuICAgICAgcmV0dXJuIGBBcnJheSgke1N0cmluZyhwYXJhbXMuaW5kZXgpfSlgO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkOlxuICAgICAgcmV0dXJuIHBhcmFtcy5zdWJzdGl0dXRpb25zLnRvSlNPTkZhaWxlZDtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LlVuZGVmaW5lZDpcbiAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQ7IGRlZmF1bHQgYnJhbmNoIGlzIHVucmVhY2hhYmxlLiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICBhc3NlcnQoZmFsc2UsICdVbmhhbmRsZWQgc3Vic3RpdHV0aW9uIGtleScpO1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXNJbXBsKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGRlc2NyaXB0b3JdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0b3JzKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQXZvaWQgcmVkZWZpbmluZyByZWFkLW9ubHkgcHJvcGVydGllcyAoZXNwZWNpYWxseSBgcHJvdG90eXBlYClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSA9PT0gJ3Byb3RvdHlwZSdcbiAgICAgICAgICB8fCAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk/LndyaXRhYmxlID09PSBmYWxzZVxuICAgICAgICAgICAgJiYgIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpPy5jb25maWd1cmFibGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgaWYgZGVmaW5lUHJvcGVydHkgZmFpbHNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzb3VyY2VQcm90b3R5cGVzID0gc291cmNlc1xuICAgIC5tYXAoKHNvdXJjZSkgPT4gZ2V0UHJvdG90eXBlT2Y8b2JqZWN0IHwgdW5kZWZpbmVkPihzb3VyY2UpKVxuICAgIC5maWx0ZXIoKHByb3RvKTogcHJvdG8gaXMgb2JqZWN0ID0+ICEhcHJvdG8pO1xuXG4gIGlmIChzb3VyY2VQcm90b3R5cGVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXJnZXRQcm90b3R5cGUgPSBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXNJbXBsKHt9LCBnZXRQcm90b3R5cGVPZih0YXJnZXQpLCAuLi5zb3VyY2VQcm90b3R5cGVzKTtcblxuICAgIHRyeSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB0YXJnZXRQcm90b3R5cGUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGlmIHNldFByb3RvdHlwZU9mIGZhaWxzXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gYHVua25vd25gIGRvZXNuJ3Qgd29yaywgZ2V0dGluZyBjb21waWxlciBlcnJvcnMuXG5mdW5jdGlvbiBjcmVhdGVFcXVhbGl0eUNvbXBhcmVyRW50cmllczxjb25zdCBUIGV4dGVuZHMgcmVhZG9ubHkgRXF1YWxpdHlDb21wYXJlckVudHJ5PGFueT5bXT4oZW50cmllczogVCk6IFQge1xuICByZXR1cm4gZW50cmllcztcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsQXJyYXlCdWZmZXIoYTogQXJyYXlCdWZmZXIsIGI6IEFycmF5QnVmZmVyKTogYm9vbGVhbiB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHZpZXdBID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIGNvbnN0IHZpZXdCID0gbmV3IFVpbnQ4QXJyYXkoYik7XG4gIHJldHVybiBkZWVwRXF1YWwodmlld0EsIHZpZXdCKTtcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsRGF0ZShhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbE1hcChhOiBNYXA8dW5rbm93biwgdW5rbm93bj4sIGI6IE1hcDx1bmtub3duLCB1bmtub3duPik6IGJvb2xlYW4ge1xuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBhLmVudHJpZXMoKSkge1xuICAgIGlmICghYi5oYXMoa2V5KSB8fCAhZGVlcEVxdWFsKHZhbHVlLCBiLmdldChrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxSZWdFeHAoYTogUmVnRXhwLCBiOiBSZWdFeHApOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxTZXQoYTogU2V0PHVua25vd24+LCBiOiBTZXQ8dW5rbm93bj4pOiBib29sZWFuIHtcbiAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCB2YWx1ZUEgb2YgYSkge1xuICAgIGlmIChiLmhhcyh2YWx1ZUEpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB2YWx1ZUIgb2YgYikge1xuICAgICAgaWYgKGRlZXBFcXVhbCh2YWx1ZUEsIHZhbHVlQikpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxUeXBlZChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgeyBjb25zdHJ1Y3RvciwgZXF1YWxpdHlDb21wYXJlciB9IG9mIGVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKSB7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvciAmJiBiIGluc3RhbmNlb2YgY29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBlcXVhbGl0eUNvbXBhcmVyKGEgYXMgbmV2ZXIsIGIgYXMgbmV2ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVBcnJheShcbiAgdmFsdWU6IHVua25vd25bXSxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWRBcnJheSwgdmFsdWUubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB0b1BsYWluT2JqZWN0KGl0ZW0sIFN0cmluZyhpbmRleCksIGRlcHRoICsgMSwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWU6IG9iamVjdCwga2V5OiBzdHJpbmcsIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXMpIHtcbiAgICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkNpcmN1bGFyUmVmZXJlbmNlKTtcbiAgfVxuICBjb25zdCB2YWx1ZUNvbnN0cnVjdG9yTmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHwgJ09iamVjdCc7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoYENvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cbi0tPiBzdGFydGluZyBhdCBvYmplY3Qgd2l0aCBjb25zdHJ1Y3RvciAnJHt2YWx1ZUNvbnN0cnVjdG9yTmFtZX0nXG4tLS0gcHJvcGVydHkgJyR7a2V5fScgY2xvc2VzIHRoZSBjaXJjbGVgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZSAtLSBXZSBuZWVkIHRvIHVzZSBgRnVuY3Rpb25gIHR5cGUgdG8gaGFuZGxlIHRoZW0gc2VwYXJhdGVseS5cbmZ1bmN0aW9uIGhhbmRsZUZ1bmN0aW9uKHZhbHVlOiBGdW5jdGlvbiwgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5mdW5jdGlvbkhhbmRsaW5nTW9kZSA9PT0gRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgaW5kZXggPSBmdW5jdGlvblRleHRzLmxlbmd0aDtcbiAgY29uc3QgZnVuY3Rpb25UZXh0ID0gZnVsbE9wdGlvbnMuZnVuY3Rpb25IYW5kbGluZ01vZGUgPT09IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkZ1bGxcbiAgICA/IFN0cmluZyh2YWx1ZSlcbiAgICA6IGBmdW5jdGlvbiAke3ZhbHVlLm5hbWUgfHwgJ2Fub255bW91cyd9KCkgeyAvKiAuLi4gKi8gfWA7XG4gIGZ1bmN0aW9uVGV4dHMucHVzaChmdW5jdGlvblRleHQpO1xuICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkZ1bmN0aW9uLCBpbmRleCk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU9iamVjdChcbiAgdmFsdWU6IG9iamVjdCxcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGNhblVzZVRvSlNPTjogYm9vbGVhbixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgaWYgKHVzZWRPYmplY3RzLmhhcyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWUsIGtleSwgZnVsbE9wdGlvbnMpO1xuICB9XG5cbiAgdXNlZE9iamVjdHMuYWRkKHZhbHVlKTtcblxuICBpZiAoY2FuVXNlVG9KU09OKSB7XG4gICAgY29uc3QgdG9KU09OUmVzdWx0ID0gdHJ5SGFuZGxlVG9KU09OKHZhbHVlLCBrZXksIGRlcHRoLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xuICAgIGlmICh0b0pTT05SZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRvSlNPTlJlc3VsdDtcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaGFuZGxlQXJyYXkodmFsdWUsIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gIH1cblxuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWQpO1xuICB9XG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IgJiYgZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlRXJyb3JzKSB7XG4gICAgcmV0dXJuIGVycm9yVG9TdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVBsYWluT2JqZWN0KHZhbHVlLCBkZXB0aCwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVQbGFpbk9iamVjdChcbiAgdmFsdWU6IG9iamVjdCxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkU29ydEtleXMpIHtcbiAgICBlbnRyaWVzLnNvcnQoKFtrZXkxXSwgW2tleTJdKSA9PiBrZXkxLmxvY2FsZUNvbXBhcmUoa2V5MikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBlbnRyaWVzLm1hcCgoW2tleTIsIHZhbHVlMl0pID0+IFtcbiAgICAgIGtleTIsXG4gICAgICB0b1BsYWluT2JqZWN0KHZhbHVlMiwga2V5MiwgZGVwdGggKyAxLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cylcbiAgICBdKVxuICApO1xufVxuXG5mdW5jdGlvbiBtYWtlT2JqZWN0VG9rZW5TdWJzdGl0dXRpb24oa2V5OiBUb2tlblN1YnN0aXR1dGlvbktleSk6IHN0cmluZyB7XG4gIHJldHVybiBgeyBcIltbJHtrZXl9XV1cIjogbnVsbCB9YDtcbn1cblxuZnVuY3Rpb24gbWFrZVBsYWNlaG9sZGVyKGtleTogVG9rZW5TdWJzdGl0dXRpb25LZXksIGluZGV4PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBbWyR7a2V5fSR7aW5kZXggPyBTdHJpbmcoaW5kZXgpIDogJyd9XV1gO1xufVxuXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KFxuICB2YWx1ZTogdW5rbm93bixcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGNhblVzZVRvSlNPTjogYm9vbGVhbixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gKGRlcHRoID09PSAwIHx8IGZ1bGxPcHRpb25zLnNob3VsZEhhbmRsZVVuZGVmaW5lZClcbiAgICAgID8gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LlVuZGVmaW5lZClcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBoYW5kbGVGdW5jdGlvbih2YWx1ZSwgZnVuY3Rpb25UZXh0cywgZnVsbE9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlT2JqZWN0KHZhbHVlLCBrZXksIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIHRyeUhhbmRsZVRvSlNPTihcbiAgdmFsdWU6IG9iamVjdCxcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zLFxuICBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSxcbiAgdXNlZE9iamVjdHM6IFdlYWtTZXQ8b2JqZWN0PlxuKTogdW5rbm93biB7XG4gIGNvbnN0IHRvSlNPTiA9ICh2YWx1ZSBhcyBQYXJ0aWFsPEpTT05TZXJpYWxpemFibGU+KS50b0pTT047XG4gIGlmICh0eXBlb2YgdG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdG9KU09OLmNhbGwodmFsdWUsIGtleSk7XG4gICAgICByZXR1cm4gdG9QbGFpbk9iamVjdChuZXdWYWx1ZSwga2V5LCBkZXB0aCwgZmFsc2UsIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZENhdGNoVG9KU09ORXJyb3JzKSB7XG4gICAgICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FB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QUEsRUFDbEU7QUFFQSxNQUFJLGlCQUFpQixTQUFTLFlBQVksb0JBQW9CO0FBQzVELGVBQU8sNEJBQWMsS0FBSztBQUFBLEVBQzVCO0FBRUEsU0FBTyxrQkFBa0IsT0FBTyxPQUFPLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFDOUY7QUFFQSxTQUFTLGtCQUNQLE9BQ0EsT0FDQSxjQUNBLGFBQ0EsZUFDQSxhQUNTO0FBQ1QsUUFBTSxVQUFVLE9BQU8sUUFBUSxLQUFLO0FBQ3BDLE1BQUksWUFBWSxnQkFBZ0I7QUFDOUIsWUFBUSxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLE1BQU0sS0FBSyxjQUFjLElBQUksQ0FBQztBQUFBLEVBQzNEO0FBRUEsU0FBTyxPQUFPO0FBQUEsSUFDWixRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sTUFBTSxNQUFNO0FBQUEsTUFDOUI7QUFBQSxNQUNBLGNBQWMsUUFBUSxNQUFNLFFBQVEsR0FBRyxjQUFjLGFBQWEsZUFBZSxXQUFXO0FBQUEsSUFDOUYsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQUVBLFNBQVMsNEJBQTRCLEtBQW1DO0FBQ3RFLFNBQU8sUUFBUSxHQUFHO0FBQ3BCO0FBRUEsU0FBUyxnQkFBZ0IsS0FBMkIsT0FBd0I7QUFDMUUsU0FBTyxLQUFLLEdBQUcsR0FBRyxRQUFRLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDOUM7QUFFQSxTQUFTLGNBQ1AsT0FDQSxLQUNBLE9BQ0EsY0FDQSxhQUNBLGVBQ0EsYUFDUztBQUNULE1BQUksVUFBVSxRQUFXO0FBQ3ZCLFdBQVEsVUFBVSxLQUFLLFlBQVksd0JBQy9CLGdCQUFnQiwyQkFBOEIsSUFDOUM7QUFBQSxFQUNOO0FBRUEsTUFBSSxPQUFPLFVBQVUsWUFBWTtBQUMvQixXQUFPLGVBQWUsT0FBTyxlQUFlLFdBQVc7QUFBQSxFQUN6RDtBQUVBLE1BQUksT0FBTyxVQUFVLFlBQVksVUFBVSxNQUFNO0FBQy9DLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxhQUFhLE9BQU8sS0FBSyxPQUFPLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFDOUY7QUFFQSxTQUFTLGdCQUNQLE9BQ0EsS0FDQSxPQUNBLGFBQ0EsZUFDQSxhQUNTO0FBQ1QsUUFBTSxTQUFVLE1BQW9DO0FBQ3BELE1BQUksT0FBTyxXQUFXLFlBQVk7QUFDaEMsUUFBSTtBQUNGLFlBQU0sV0FBVyxPQUFPLEtBQUssT0FBTyxHQUFHO0FBQ3ZDLGFBQU8sY0FBYyxVQUFVLEtBQUssT0FBTyxPQUFPLGFBQWEsZUFBZSxXQUFXO0FBQUEsSUFDM0YsU0FBUyxHQUFHO0FBQ1YsVUFBSSxZQUFZLHlCQUF5QjtBQUN2QyxlQUFPLGdCQUFnQixpQ0FBaUM7QUFBQSxNQUMxRDtBQUNBLFlBQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsiRnVuY3Rpb25IYW5kbGluZ01vZGUiLCAibW9kdWxlIl0KfQo=
|
|
555
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29iamVjdC11dGlscy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgT2JqZWN0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvbnN0cnVjdG9yLFxuICBSZXF1aXJlZEtleXNPZixcbiAgVW5kZWZpbmVkT25QYXJ0aWFsRGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNPYmplY3QgfSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgRXhhY3RNZW1iZXJzLFxuICBNYXliZVJldHVybixcbiAgU3RyaW5nS2V5c1xufSBmcm9tICcuL3R5cGUudHMnO1xuXG5pbXBvcnQgeyBlcnJvclRvU3RyaW5nIH0gZnJvbSAnLi9lcnJvci50cyc7XG5pbXBvcnQgeyBnZXRGdW5jdGlvbkV4cHJlc3Npb25TdHJpbmcgfSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IHJlcGxhY2VBbGwgfSBmcm9tICcuL3N0cmluZy50cyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGVuc3VyZUdlbmVyaWNPYmplY3QsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuXG4vKipcbiAqIFNwZWNpZmllcyBob3cgZnVuY3Rpb25zIHNob3VsZCBiZSBoYW5kbGVkIGluIHRoZSBKU09OIG91dHB1dC5cbiAqL1xuZXhwb3J0IGVudW0gRnVuY3Rpb25IYW5kbGluZ01vZGUge1xuICAvKipcbiAgICogRXhjbHVkZXMgZnVuY3Rpb25zIGZyb20gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRXhjbHVkZSA9ICdleGNsdWRlJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIHRoZSBmdWxsIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRnVsbCA9ICdmdWxsJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIG9ubHkgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgTmFtZU9ubHkgPSAnbmFtZU9ubHknXG59XG5cbmVudW0gVG9rZW5TdWJzdGl0dXRpb25LZXkge1xuICBDaXJjdWxhclJlZmVyZW5jZSA9ICdDaXJjdWxhclJlZmVyZW5jZScsXG4gIEZ1bmN0aW9uID0gJ0Z1bmN0aW9uJyxcbiAgTWF4RGVwdGhMaW1pdFJlYWNoZWQgPSAnTWF4RGVwdGhMaW1pdFJlYWNoZWQnLFxuICBNYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5ID0gJ01heERlcHRoTGltaXRSZWFjaGVkQXJyYXknLFxuICBUb0pTT05GYWlsZWQgPSAnVG9KU09ORmFpbGVkJyxcbiAgVW5kZWZpbmVkID0gJ1VuZGVmaW5lZCdcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgdG9Kc29ufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb0pzb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgZnVuY3Rpb25zIHNob3VsZCBiZSBoYW5kbGVkIGluIHRoZSBKU09OIG91dHB1dCAoZGVmYXVsdDogYGV4Y2x1ZGVgKS5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uSGFuZGxpbmdNb2RlOiBGdW5jdGlvbkhhbmRsaW5nTW9kZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIGRlcHRoIG9mIG5lc3RlZCBvYmplY3RzIHRvIGluY2x1ZGUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBVc2UgYC0xYCBmb3Igbm8gbGltaXQuXG4gICAqIERlZmF1bHRzIHRvIGAtMWAuXG4gICAqL1xuICByZWFkb25seSBtYXhEZXB0aDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBjYXRjaCBlcnJvcnMgaW4gYHRvSlNPTigpYCBhbmQgcmVwbGFjZSB0aGVtIHdpdGggYSBwbGFjZWhvbGRlci5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZENhdGNoVG9KU09ORXJyb3JzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBoYW5kbGUgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBlcnJvcnMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSGFuZGxlRXJyb3JzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBoYW5kbGUgYHVuZGVmaW5lZGAgdmFsdWVzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEhhbmRsZVVuZGVmaW5lZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gc29ydCB0aGUga2V5cyBvZiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTb3J0S2V5czogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgSlNPTiBvdXRwdXQuIFRoaXMgY2FuIGJlIGEgbnVtYmVyIG9mIHNwYWNlcyBvciBhIHN0cmluZy4gRGVmYXVsdHMgdG8gYDJgLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BhY2U6IG51bWJlciB8IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBzdWJzdGl0dXRpb25zIHRvIHVzZSBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqL1xuICByZWFkb25seSB0b2tlblN1YnN0aXR1dGlvbnM6IFBhcnRpYWw8VG9rZW5TdWJzdGl0dXRpb25zPjtcbn1cblxuaW50ZXJmYWNlIEFwcGx5U3Vic3RpdHV0aW9uc1BhcmFtcyB7XG4gIHJlYWRvbmx5IGZ1bmN0aW9uVGV4dHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICByZWFkb25seSBpbmRleDogbnVtYmVyO1xuICByZWFkb25seSBrZXk6IFRva2VuU3Vic3RpdHV0aW9uS2V5O1xuICByZWFkb25seSBzdWJzdGl0dXRpb25zOiBUb2tlblN1YnN0aXR1dGlvbnM7XG59XG5cbmludGVyZmFjZSBFcXVhbGl0eUNvbXBhcmVyRW50cnk8VD4ge1xuICBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8VD47XG4gIGVxdWFsaXR5Q29tcGFyZXIoYTogVCwgYjogVCk6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBKU09OU2VyaWFsaXphYmxlIHtcbiAgdG9KU09OKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd247XG59XG5cbmludGVyZmFjZSBNb2R1bGVXaXRoRGVmYXVsdEV4cG9ydDxUPiB7XG4gIGRlZmF1bHQ6IFQ7XG59XG5cbmludGVyZmFjZSBSZXNvbHZlZFRvSnNvbk9wdGlvbnMgZXh0ZW5kcyBUb0pzb25PcHRpb25zIHtcbiAgcmVhZG9ubHkgdG9rZW5TdWJzdGl0dXRpb25zOiBUb2tlblN1YnN0aXR1dGlvbnM7XG59XG5cbmludGVyZmFjZSBUb2tlblN1YnN0aXR1dGlvbnMge1xuICBjaXJjdWxhclJlZmVyZW5jZTogc3RyaW5nO1xuICBtYXhEZXB0aExpbWl0UmVhY2hlZDogc3RyaW5nO1xuICB0b0pTT05GYWlsZWQ6IHN0cmluZztcbn1cblxuY29uc3QgS0VZX1NFUEFSQVRPUiA9ICcuJztcbmNvbnN0IGVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzID0gY3JlYXRlRXF1YWxpdHlDb21wYXJlckVudHJpZXMoXG4gIFtcbiAgICB7IGNvbnN0cnVjdG9yOiBBcnJheUJ1ZmZlciwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsQXJyYXlCdWZmZXIgfSxcbiAgICB7IGNvbnN0cnVjdG9yOiBEYXRlLCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxEYXRlIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogUmVnRXhwLCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxSZWdFeHAgfSxcbiAgICB7IGNvbnN0cnVjdG9yOiBNYXAsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbE1hcCB9LFxuICAgIHsgY29uc3RydWN0b3I6IFNldCwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsU2V0IH1cbiAgXSBhcyBjb25zdFxuKTtcblxudHlwZSBLZXlzV2l0aFVuZGVmaW5lZDxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF0tPzogdW5kZWZpbmVkIGV4dGVuZHMgVFtLXSA/IEsgOiBuZXZlcjtcbn1ba2V5b2YgVF07XG5cbnR5cGUgTWFuZGF0b3J5S2V5c1dpdGhVbmRlZmluZWQ8VCBleHRlbmRzIG9iamVjdD4gPSBFeHRyYWN0PFJlcXVpcmVkS2V5c09mPFQ+ICYgU3RyaW5nS2V5czxUPiwgS2V5c1dpdGhVbmRlZmluZWQ8VD4+O1xuXG50eXBlIFJlbW92ZVVuZGVmaW5lZE92ZXJsb2FkPFQgZXh0ZW5kcyBvYmplY3Q+ID0gTWFuZGF0b3J5S2V5c1dpdGhVbmRlZmluZWQ8VD4gZXh0ZW5kcyBuZXZlciA/IFtvYmo6IFRdXG4gIDogbmV2ZXI7XG5cbnR5cGUgUmVtb3ZlVW5kZWZpbmVkV2l0aEtleXNPdmVybG9hZDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW10+ID0gW29iajogVCwga2V5c1RvS2VlcDogRXhhY3RNZW1iZXJzPE1hbmRhdG9yeUtleXNXaXRoVW5kZWZpbmVkPFQ+LCBLPl07XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVT4odGFyZ2V0OiBULCBzb3VyY2U6IFUpOiBUICYgVTtcbi8qKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZTEgLSBUaGUgZmlyc3Qgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTIgLSBUaGUgc2Vjb25kIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVSwgVj4odGFyZ2V0OiBULCBzb3VyY2UxOiBVLCBzb3VyY2UyOiBWKTogVCAmIFUgJiBWO1xuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UxIC0gVGhlIGZpcnN0IHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UyIC0gVGhlIHNlY29uZCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMyAtIFRoZSB0aGlyZCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3QsIFUsIFYsIFc+KHRhcmdldDogVCwgc291cmNlMTogVSwgc291cmNlMjogViwgc291cmNlMzogVyk6IFQgJiBVICYgViAmIFc7XG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZXMgLSBUaGUgc291cmNlIG9iamVjdHMgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0OiBvYmplY3QsIC4uLnNvdXJjZXM6IG9iamVjdFtdKTogb2JqZWN0IHtcbiAgcmV0dXJuIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllc0ltcGwodGFyZ2V0LCAuLi5zb3VyY2VzKTtcbn1cbi8qKlxuICogQ2FzdHMgYSB2YWx1ZSB0byBhIHNwZWNpZmljIHR5cGUuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNhc3QuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgYXMgdGhlIHNwZWNpZmllZCB0eXBlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHRvIGNhc3QuXG5leHBvcnQgZnVuY3Rpb24gY2FzdFRvPFQ+KHZhbHVlOiB1bmtub3duKTogVCB7XG4gIHJldHVybiB2YWx1ZSBhcyBUO1xufVxuLyoqXG4gKiBDbG9uZXMgYW4gb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIEEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIG9yaWdpbmFsIG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVdpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBUIHtcbiAgcmV0dXJuIE9iamVjdC5jcmVhdGUoZ2V0UHJvdG90eXBlT2Yob2JqKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSkgYXMgVDtcbn1cbi8qKlxuICogQ29tcGFyZXMgdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZGVlcGx5IGVxdWFsLlxuICpcbiAqIEBwYXJhbSBhIC0gVGhlIGZpcnN0IHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0gYiAtIFRoZSBzZWNvbmQgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBkZWVwbHkgZXF1YWwsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcEVxdWFsKGE6IHVua25vd24sIGI6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYSAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIGIgIT09ICdvYmplY3QnIHx8IGEgPT09IG51bGwgfHwgYiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFDb25zdHJ1Y3RvciA9IGEuY29uc3RydWN0b3I7XG4gIGNvbnN0IGJDb25zdHJ1Y3RvciA9IGIuY29uc3RydWN0b3I7XG5cbiAgaWYgKGFDb25zdHJ1Y3RvciAhPT0gYkNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGFDb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gZGVlcEVxdWFsVHlwZWQoYSwgYik7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGtleXNBID0gZ2V0QWxsS2V5cyhhKTtcbiAgY29uc3Qga2V5c0IgPSBnZXRBbGxLZXlzKGIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFSZWNvcmQgPSBlbnN1cmVHZW5lcmljT2JqZWN0KGEpO1xuICBjb25zdCBiUmVjb3JkID0gZW5zdXJlR2VuZXJpY09iamVjdChiKTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSB8fCAhZGVlcEVxdWFsKGFSZWNvcmRba2V5XSwgYlJlY29yZFtrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgbXVsdGlwbGUgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lcyAtIFRoZSBuYW1lcyBvZiB0aGUgcHJvcGVydGllcyB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYW55IG9mIHRoZSBwcm9wZXJ0aWVzIHdlcmUgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCwgcHJvcGVydHlOYW1lczogKGtleW9mIFQpW10pOiBib29sZWFuIHtcbiAgbGV0IGFucyA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHByb3BlcnR5TmFtZXMpIHtcbiAgICBhbnMgPSBkZWxldGVQcm9wZXJ0eShvYmosIHByb3BlcnR5TmFtZSkgfHwgYW5zO1xuICB9XG5cbiAgcmV0dXJuIGFucztcbn1cblxuLyoqXG4gKiBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZGVsZXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSB3YXMgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eTxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQsIHByb3BlcnR5TmFtZToga2V5b2YgVCk6IGJvb2xlYW4ge1xuICBpZiAoIU9iamVjdC5oYXNPd24ob2JqLCBwcm9wZXJ0eU5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgZGVsZXRlIG9ialtwcm9wZXJ0eU5hbWVdO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZGVmYXVsdCBleHBvcnQgZnJvbSBhIG1vZHVsZS5cbiAqXG4gKiBVc2VmdWwgdG8gaGFuZGxlIGluY29ycmVjdCBkZWZhdWx0IGV4cG9ydCBpbnRlcm9wIGJldHdlZW4gRVNNIGFuZCBDSlMuXG4gKlxuICogQHBhcmFtIG1vZHVsZSAtIFRoZSBtb2R1bGUgdG8gZXh0cmFjdCB0aGUgZGVmYXVsdCBleHBvcnQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGV4cG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcDxUPihtb2R1bGU6IE1vZHVsZVdpdGhEZWZhdWx0RXhwb3J0PFQ+IHwgVCk6IFQge1xuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ29iamVjdCcgfHwgbW9kdWxlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG1vZHVsZTtcbiAgfVxuXG4gIGlmICgnZGVmYXVsdCcgaW4gbW9kdWxlKSB7XG4gICAgcmV0dXJuIG1vZHVsZS5kZWZhdWx0O1xuICB9XG5cbiAgcmV0dXJuIG1vZHVsZTtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCBlbnRyaWVzIG9mIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgdGhlIGVudHJpZXMgb2YuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwgZW50cmllcyBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsRW50cmllczxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBbU3RyaW5nS2V5czxUPiwgVFtTdHJpbmdLZXlzPFQ+XV1bXSB7XG4gIHJldHVybiBnZXRBbGxLZXlzKG9iaikubWFwKChrZXkpID0+IFtrZXksIG9ialtrZXldXSk7XG59XG5cbi8qKlxuICogR2V0cyBhbGwga2V5cyBvZiBhbiBvYmplY3QuXG4gKiBJbmNsdWRlcyBmaWVsZHMgYW5kIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBrZXlzIG9mLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWxsIGtleXMgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbEtleXM8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogU3RyaW5nS2V5czxUPltdIHtcbiAgY29uc3Qga2V5czogU3RyaW5nS2V5czxUPltdID0gW107XG4gIGxldCBjdXJyZW50OiBudWxsIHwgb2JqZWN0ID0gb2JqO1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoY3VycmVudCkgYXMgUmVjb3JkPHN0cmluZywgUHJvcGVydHlEZXNjcmlwdG9yPjtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGRlc2NyaXB0b3JdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0b3JzKSkge1xuICAgICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGVzY3JpcHRvci52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFzR2V0dGVyID0gdHlwZW9mIGRlc2NyaXB0b3IuZ2V0ID09PSAnZnVuY3Rpb24nO1xuICAgICAgY29uc3QgaGFzU2V0dGVyID0gdHlwZW9mIGRlc2NyaXB0b3Iuc2V0ID09PSAnZnVuY3Rpb24nO1xuICAgICAgaWYgKGhhc0dldHRlciB8fCBoYXNTZXR0ZXIpIHtcbiAgICAgICAgaWYgKGhhc0dldHRlciAmJiBoYXNTZXR0ZXIpIHtcbiAgICAgICAgICBrZXlzLnB1c2goa2V5IGFzIFN0cmluZ0tleXM8VD4pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlICYmIGRlc2NyaXB0b3Iud3JpdGFibGUpIHtcbiAgICAgICAga2V5cy5wdXNoKGtleSBhcyBTdHJpbmdLZXlzPFQ+KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjdXJyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cnJlbnQpIGFzIG51bGwgfCBvYmplY3Q7XG4gIH1cbiAgcmV0dXJuIGtleXMuc29ydCgpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB0aGUgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGZyb20uXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5lc3RlZFByb3BlcnR5VmFsdWUob2JqOiBHZW5lcmljT2JqZWN0LCBwYXRoOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgbGV0IG5vZGU6IEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQgPSBvYmo7XG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KEtFWV9TRVBBUkFUT1IpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBHZW5lcmljT2JqZWN0IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcHJvdG90eXBlIG9mIHRoZSBzcGVjaWZpZWQgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gaW5zdGFuY2UgLSBUaGUgb2JqZWN0IGluc3RhbmNlIHRvIHJldHJpZXZlIHRoZSBwcm90b3R5cGUgb2YuXG4gKiBAcmV0dXJucyBUaGUgcHJvdG90eXBlIG9mIHRoZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZjxUPihpbnN0YW5jZTogVCk6IFQge1xuICBpZiAoaW5zdGFuY2UgPT09IHVuZGVmaW5lZCB8fCBpbnN0YW5jZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKSBhcyBUO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiBhIHByb3BlcnR5IG9mIGEgZ2l2ZW4gdHlwZSBgVGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGFzIGEgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZW9mPFQgZXh0ZW5kcyBvYmplY3Q+KG5hbWU6IFN0cmluZ0tleXM8VD4pOiBTdHJpbmdLZXlzPFQ+IHtcbiAgcmV0dXJuIG5hbWU7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBvcHRpb25hbCBwcm9wZXJ0aWVzIHRvIGFsbG93IGB1bmRlZmluZWRgIGFzc2lnbm1lbnQgaW4gc3RyaWN0IG1vZGUuXG4gKlxuICogVGhpcyB1dGlsaXR5IHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AgVHlwZVNjcmlwdCBmbGFnLFxuICogd2hpY2ggcHJvaGliaXRzIGRpcmVjdGx5IGFzc2lnbmluZyBgdW5kZWZpbmVkYCB0byBvcHRpb25hbCBwcm9wZXJ0aWVzIHdoZW4gdGhlIHR5cGVcbiAqIGV4cGxpY2l0bHkgb21pdHMgYHVuZGVmaW5lZGAuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFdpdGggYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzOiB0cnVlYFxuICogY29uc3QgeDogeyBwcm9wPzogc3RyaW5nIH0gPSB7IHByb3A6IHVuZGVmaW5lZCB9OyAvLyBDb21waWxlciBlcnJvclxuICpcbiAqIC8vIFVzaW5nIHRoaXMgdXRpbGl0eTpcbiAqIGNvbnN0IHk6IHsgcHJvcD86IHN0cmluZyB9ID0gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPHsgcHJvcD86IHN0cmluZyB9Pih7IHByb3A6IHVuZGVmaW5lZCB9KTsgLy8gV29ya3NcbiAqIGBgYFxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0YXJnZXQgdHlwZSB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gbm9ybWFsaXplLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gbm9ybWFsaXplLCBhbGxvd2luZyBleHBsaWNpdCBgdW5kZWZpbmVkYCBmb3Igb3B0aW9uYWwgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIG9iamVjdCwgY29tcGF0aWJsZSB3aXRoIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VD4ob2JqOiBVbmRlZmluZWRPblBhcnRpYWxEZWVwPFQ+KTogVCB7XG4gIHJldHVybiBvYmogYXMgVDtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBgdW5kZWZpbmVkYCBwcm9wZXJ0aWVzIGZyb20gYW4gb2JqZWN0IHdoZW4gdGhlcmUgYXJlIG5vIG1hbmRhdG9yeSBrZXlzIHdpdGggYHVuZGVmaW5lZGAgdmFsdWVzLlxuICpcbiAqIEB0eXBlUGFyYW0gVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIG9iamVjdCB3aXRoIGFsbCBgdW5kZWZpbmVkYCBwcm9wZXJ0aWVzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzPFR5cGUgZXh0ZW5kcyBvYmplY3Q+KFxuICAuLi5hcmdzOiBSZW1vdmVVbmRlZmluZWRPdmVybG9hZDxUeXBlPlxuKTogVHlwZTtcbi8qKlxuICogUmVtb3ZlcyBhbGwgYHVuZGVmaW5lZGAgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdCB3aGVuIHRoZXJlIGFyZSBtYW5kYXRvcnkga2V5cyB3aXRoIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHR5cGVQYXJhbSBLZXlzVG9LZWVwIC0gVGhlIGtleXMgdG8ga2VlcC5cbiAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgb2JqZWN0IHdpdGggYWxsIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXM8VHlwZSBleHRlbmRzIG9iamVjdCwgY29uc3QgS2V5c1RvS2VlcCBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdPihcbiAgLi4uYXJnczogUmVtb3ZlVW5kZWZpbmVkV2l0aEtleXNPdmVybG9hZDxUeXBlLCBLZXlzVG9LZWVwPlxuKTogVHlwZTtcbi8qKlxuICogUmVtb3ZlcyBhbGwgYHVuZGVmaW5lZGAgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHR5cGVQYXJhbSBLZXlzVG9LZWVwIC0gVGhlIGtleXMgdG8ga2VlcC5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIHJlbW92ZSBgdW5kZWZpbmVkYCBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ga2V5c1RvS2VlcCAtIFRoZSBrZXlzIHRvIGtlZXAuXG4gKiBAcmV0dXJucyBUaGUgb2JqZWN0IHdpdGggYWxsIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXM8VHlwZSBleHRlbmRzIG9iamVjdD4ob2JqOiBUeXBlLCBrZXlzVG9LZWVwPzogcmVhZG9ubHkgc3RyaW5nW10pOiBUeXBlIHtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSBhcyBbU3RyaW5nS2V5czxUeXBlPiwgdW5rbm93bl1bXSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICFrZXlzVG9LZWVwPy5pbmNsdWRlcyhrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICAgICAgZGVsZXRlIG9ialtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IGluIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBzZXQgdGhlIG5lc3RlZCBwcm9wZXJ0eSB2YWx1ZSBpbi5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKG9iajogR2VuZXJpY09iamVjdCwgcGF0aDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgUHJvcGVydHkgcGF0aCAke3BhdGh9IG5vdCBmb3VuZGApO1xuICBsZXQgbm9kZTogR2VuZXJpY09iamVjdCB8IHVuZGVmaW5lZCA9IG9iajtcbiAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoS0VZX1NFUEFSQVRPUik7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMuc2xpY2UoMCwgLTEpKSB7XG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIG5vZGUgPSBub2RlW2tleV0gYXMgR2VuZXJpY09iamVjdCB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGxhc3RLZXkgPSBlbnN1cmVOb25OdWxsYWJsZShrZXlzLmF0KC0xKSk7XG4gIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIG5vZGVbbGFzdEtleV0gPSB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGdpdmVuIHZhbHVlIHRvIGEgSlNPTiBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZCB0byBKU09OLiBUaGlzIGNhbiBiZSBvZiBhbnkgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIEpTT04gY29udmVyc2lvbiBwcm9jZXNzLlxuICogQHJldHVybnMgVGhlIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbih2YWx1ZTogdW5rbm93biwgb3B0aW9uczogUGFydGlhbDxUb0pzb25PcHRpb25zPiA9IHt9KTogc3RyaW5nIHtcbiAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXNvbHZlZFRvSnNvbk9wdGlvbnMgPSB7XG4gICAgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkV4Y2x1ZGUsXG4gICAgbWF4RGVwdGg6IC0xLFxuICAgIHNob3VsZENhdGNoVG9KU09ORXJyb3JzOiBmYWxzZSxcbiAgICBzaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXM6IGZhbHNlLFxuICAgIHNob3VsZEhhbmRsZUVycm9yczogZmFsc2UsXG4gICAgc2hvdWxkSGFuZGxlVW5kZWZpbmVkOiBmYWxzZSxcbiAgICBzaG91bGRTb3J0S2V5czogZmFsc2UsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBzcGFjZTogMixcbiAgICB0b2tlblN1YnN0aXR1dGlvbnM6IHtcbiAgICAgIGNpcmN1bGFyUmVmZXJlbmNlOiBtYWtlT2JqZWN0VG9rZW5TdWJzdGl0dXRpb24oVG9rZW5TdWJzdGl0dXRpb25LZXkuQ2lyY3VsYXJSZWZlcmVuY2UpLFxuICAgICAgbWF4RGVwdGhMaW1pdFJlYWNoZWQ6IG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZCksXG4gICAgICB0b0pTT05GYWlsZWQ6IG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihUb2tlblN1YnN0aXR1dGlvbktleS5Ub0pTT05GYWlsZWQpXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGZ1bGxPcHRpb25zID0ge1xuICAgIC4uLkRFRkFVTFRfT1BUSU9OUyxcbiAgICAuLi5vcHRpb25zLFxuICAgIHRva2VuU3Vic3RpdHV0aW9uczoge1xuICAgICAgLi4uREVGQVVMVF9PUFRJT05TLnRva2VuU3Vic3RpdHV0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMudG9rZW5TdWJzdGl0dXRpb25zXG4gICAgfVxuICB9O1xuXG4gIGlmIChmdWxsT3B0aW9ucy5tYXhEZXB0aCA9PT0gLTEpIHtcbiAgICBmdWxsT3B0aW9ucy5tYXhEZXB0aCA9IEluZmluaXR5O1xuICB9XG5cbiAgY29uc3QgZnVuY3Rpb25UZXh0czogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgdXNlZE9iamVjdHMgPSBuZXcgV2Vha1NldDxvYmplY3Q+KCk7XG5cbiAgY29uc3QgcGxhaW5PYmplY3QgPSB0b1BsYWluT2JqZWN0KHZhbHVlLCAnJywgMCwgdHJ1ZSwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgbGV0IGpzb24gPSBlbnN1cmVOb25OdWxsYWJsZShKU09OLnN0cmluZ2lmeShwbGFpbk9iamVjdCwgbnVsbCwgZnVsbE9wdGlvbnMuc3BhY2UpKTtcbiAganNvbiA9IHJlcGxhY2VBbGwoanNvbiwgL1wiXFxbXFxbKD88S2V5PltBLVphLXpdKykoPzxJbmRleD5cXGQqKVxcXVxcXVwiL2csIChfLCBrZXksIGluZGV4U3RyKSA9PlxuICAgIGFwcGx5U3Vic3RpdHV0aW9ucyh7XG4gICAgICBmdW5jdGlvblRleHRzLFxuICAgICAgaW5kZXg6IGluZGV4U3RyID8gcGFyc2VJbnQoaW5kZXhTdHIsIDEwKSA6IDAsXG4gICAgICBrZXk6IGtleSBhcyBUb2tlblN1YnN0aXR1dGlvbktleSxcbiAgICAgIHN1YnN0aXR1dGlvbnM6IGZ1bGxPcHRpb25zLnRva2VuU3Vic3RpdHV0aW9uc1xuICAgIH0pKTtcbiAgcmV0dXJuIGpzb247XG59XG5cbmZ1bmN0aW9uIGFwcGx5U3Vic3RpdHV0aW9ucyhwYXJhbXM6IEFwcGx5U3Vic3RpdHV0aW9uc1BhcmFtcyk6IE1heWJlUmV0dXJuPHN0cmluZz4ge1xuICBzd2l0Y2ggKHBhcmFtcy5rZXkpIHtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LkNpcmN1bGFyUmVmZXJlbmNlOlxuICAgICAgcmV0dXJuIHBhcmFtcy5zdWJzdGl0dXRpb25zLmNpcmN1bGFyUmVmZXJlbmNlO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuRnVuY3Rpb246XG4gICAgICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUocGFyYW1zLmZ1bmN0aW9uVGV4dHNbcGFyYW1zLmluZGV4XSwgYEZ1bmN0aW9uIHdpdGggaW5kZXggJHtTdHJpbmcocGFyYW1zLmluZGV4KX0gbm90IGZvdW5kYCk7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZDpcbiAgICAgIHJldHVybiBwYXJhbXMuc3Vic3RpdHV0aW9ucy5tYXhEZXB0aExpbWl0UmVhY2hlZDtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkQXJyYXk6XG4gICAgICByZXR1cm4gYEFycmF5KCR7U3RyaW5nKHBhcmFtcy5pbmRleCl9KWA7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5Ub0pTT05GYWlsZWQ6XG4gICAgICByZXR1cm4gcGFyYW1zLnN1YnN0aXR1dGlvbnMudG9KU09ORmFpbGVkO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuVW5kZWZpbmVkOlxuICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZDsgZGVmYXVsdCBicmFuY2ggaXMgdW5yZWFjaGFibGUuICovXG4gICAgZGVmYXVsdDpcbiAgICAgIGFzc2VydChmYWxzZSwgJ1VuaGFuZGxlZCBzdWJzdGl0dXRpb24ga2V5Jyk7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllc0ltcGwodGFyZ2V0OiBvYmplY3QsIC4uLnNvdXJjZXM6IG9iamVjdFtdKTogb2JqZWN0IHtcbiAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgZGVzY3JpcHRvcl0gb2YgT2JqZWN0LmVudHJpZXMoZGVzY3JpcHRvcnMpKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBBdm9pZCByZWRlZmluaW5nIHJlYWQtb25seSBwcm9wZXJ0aWVzIChlc3BlY2lhbGx5IGBwcm90b3R5cGVgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAga2V5ID09PSAncHJvdG90eXBlJ1xuICAgICAgICAgIHx8IChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KT8ud3JpdGFibGUgPT09IGZhbHNlXG4gICAgICAgICAgICAmJiAhT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk/LmNvbmZpZ3VyYWJsZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIFNpbGVudGx5IGlnbm9yZSBpZiBkZWZpbmVQcm9wZXJ0eSBmYWlsc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNvdXJjZVByb3RvdHlwZXMgPSBzb3VyY2VzXG4gICAgLm1hcCgoc291cmNlKSA9PiBnZXRQcm90b3R5cGVPZjxvYmplY3QgfCB1bmRlZmluZWQ+KHNvdXJjZSkpXG4gICAgLmZpbHRlcigocHJvdG8pOiBwcm90byBpcyBvYmplY3QgPT4gISFwcm90byk7XG5cbiAgaWYgKHNvdXJjZVByb3RvdHlwZXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHRhcmdldFByb3RvdHlwZSA9IGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllc0ltcGwoe30sIGdldFByb3RvdHlwZU9mKHRhcmdldCksIC4uLnNvdXJjZVByb3RvdHlwZXMpO1xuXG4gICAgdHJ5IHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIHRhcmdldFByb3RvdHlwZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBTaWxlbnRseSBpZ25vcmUgaWYgc2V0UHJvdG90eXBlT2YgZmFpbHNcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSBgdW5rbm93bmAgZG9lc24ndCB3b3JrLCBnZXR0aW5nIGNvbXBpbGVyIGVycm9ycy5cbmZ1bmN0aW9uIGNyZWF0ZUVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzPGNvbnN0IFQgZXh0ZW5kcyByZWFkb25seSBFcXVhbGl0eUNvbXBhcmVyRW50cnk8YW55PltdPihlbnRyaWVzOiBUKTogVCB7XG4gIHJldHVybiBlbnRyaWVzO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxBcnJheUJ1ZmZlcihhOiBBcnJheUJ1ZmZlciwgYjogQXJyYXlCdWZmZXIpOiBib29sZWFuIHtcbiAgaWYgKGEuYnl0ZUxlbmd0aCAhPT0gYi5ieXRlTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgdmlld0EgPSBuZXcgVWludDhBcnJheShhKTtcbiAgY29uc3Qgdmlld0IgPSBuZXcgVWludDhBcnJheShiKTtcbiAgcmV0dXJuIGRlZXBFcXVhbCh2aWV3QSwgdmlld0IpO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxEYXRlKGE6IERhdGUsIGI6IERhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuZ2V0VGltZSgpID09PSBiLmdldFRpbWUoKTtcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsTWFwKGE6IE1hcDx1bmtub3duLCB1bmtub3duPiwgYjogTWFwPHVua25vd24sIHVua25vd24+KTogYm9vbGVhbiB7XG4gIGlmIChhLnNpemUgIT09IGIuc2l6ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGEuZW50cmllcygpKSB7XG4gICAgaWYgKCFiLmhhcyhrZXkpIHx8ICFkZWVwRXF1YWwodmFsdWUsIGIuZ2V0KGtleSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbFJlZ0V4cChhOiBSZWdFeHAsIGI6IFJlZ0V4cCk6IGJvb2xlYW4ge1xuICByZXR1cm4gYS5zb3VyY2UgPT09IGIuc291cmNlICYmIGEuZmxhZ3MgPT09IGIuZmxhZ3M7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbFNldChhOiBTZXQ8dW5rbm93bj4sIGI6IFNldDx1bmtub3duPik6IGJvb2xlYW4ge1xuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IHZhbHVlQSBvZiBhKSB7XG4gICAgaWYgKGIuaGFzKHZhbHVlQSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IHZhbHVlQiBvZiBiKSB7XG4gICAgICBpZiAoZGVlcEVxdWFsKHZhbHVlQSwgdmFsdWVCKSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbFR5cGVkKGE6IHVua25vd24sIGI6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCB7IGNvbnN0cnVjdG9yLCBlcXVhbGl0eUNvbXBhcmVyIH0gb2YgZXF1YWxpdHlDb21wYXJlckVudHJpZXMpIHtcbiAgICBpZiAoYSBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yICYmIGIgaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIGVxdWFsaXR5Q29tcGFyZXIoYSBhcyBuZXZlciwgYiBhcyBuZXZlcik7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUFycmF5KFxuICB2YWx1ZTogdW5rbm93bltdLFxuICBkZXB0aDogbnVtYmVyLFxuICBjYW5Vc2VUb0pTT046IGJvb2xlYW4sXG4gIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zLFxuICBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSxcbiAgdXNlZE9iamVjdHM6IFdlYWtTZXQ8b2JqZWN0PlxuKTogdW5rbm93biB7XG4gIGlmIChkZXB0aCA+IGZ1bGxPcHRpb25zLm1heERlcHRoKSB7XG4gICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5LCB2YWx1ZS5sZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlLm1hcCgoaXRlbSwgaW5kZXgpID0+IHRvUGxhaW5PYmplY3QoaXRlbSwgU3RyaW5nKGluZGV4KSwgZGVwdGggKyAxLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cykpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVDaXJjdWxhclJlZmVyZW5jZSh2YWx1ZTogb2JqZWN0LCBrZXk6IHN0cmluZywgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMpOiB1bmtub3duIHtcbiAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlcykge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuQ2lyY3VsYXJSZWZlcmVuY2UpO1xuICB9XG4gIGNvbnN0IHZhbHVlQ29uc3RydWN0b3JOYW1lID0gdmFsdWUuY29uc3RydWN0b3IubmFtZSB8fCAnT2JqZWN0JztcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ29udmVydGluZyBjaXJjdWxhciBzdHJ1Y3R1cmUgdG8gSlNPTlxuLS0+IHN0YXJ0aW5nIGF0IG9iamVjdCB3aXRoIGNvbnN0cnVjdG9yICcke3ZhbHVlQ29uc3RydWN0b3JOYW1lfSdcbi0tLSBwcm9wZXJ0eSAnJHtrZXl9JyBjbG9zZXMgdGhlIGNpcmNsZWApO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlIC0tIFdlIG5lZWQgdG8gdXNlIGBGdW5jdGlvbmAgdHlwZSB0byBoYW5kbGUgdGhlbSBzZXBhcmF0ZWx5LlxuZnVuY3Rpb24gaGFuZGxlRnVuY3Rpb24odmFsdWU6IEZ1bmN0aW9uLCBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSwgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMpOiB1bmtub3duIHtcbiAgaWYgKGZ1bGxPcHRpb25zLmZ1bmN0aW9uSGFuZGxpbmdNb2RlID09PSBGdW5jdGlvbkhhbmRsaW5nTW9kZS5FeGNsdWRlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBpbmRleCA9IGZ1bmN0aW9uVGV4dHMubGVuZ3RoO1xuICBjb25zdCBmdW5jdGlvblRleHQgPSBmdWxsT3B0aW9ucy5mdW5jdGlvbkhhbmRsaW5nTW9kZSA9PT0gRnVuY3Rpb25IYW5kbGluZ01vZGUuRnVsbFxuICAgID8gZ2V0RnVuY3Rpb25FeHByZXNzaW9uU3RyaW5nKHZhbHVlKVxuICAgIDogYGZ1bmN0aW9uICR7dmFsdWUubmFtZSB8fCAnYW5vbnltb3VzJ30oKSB7IC8qIC4uLiAqLyB9YDtcbiAgZnVuY3Rpb25UZXh0cy5wdXNoKGZ1bmN0aW9uVGV4dCk7XG4gIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuRnVuY3Rpb24sIGluZGV4KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlT2JqZWN0KFxuICB2YWx1ZTogb2JqZWN0LFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAodXNlZE9iamVjdHMuaGFzKHZhbHVlKSkge1xuICAgIHJldHVybiBoYW5kbGVDaXJjdWxhclJlZmVyZW5jZSh2YWx1ZSwga2V5LCBmdWxsT3B0aW9ucyk7XG4gIH1cblxuICB1c2VkT2JqZWN0cy5hZGQodmFsdWUpO1xuXG4gIGlmIChjYW5Vc2VUb0pTT04pIHtcbiAgICBjb25zdCB0b0pTT05SZXN1bHQgPSB0cnlIYW5kbGVUb0pTT04odmFsdWUsIGtleSwgZGVwdGgsIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gICAgaWYgKHRvSlNPTlJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdG9KU09OUmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBoYW5kbGVBcnJheSh2YWx1ZSwgZGVwdGgsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgfVxuXG4gIGlmIChkZXB0aCA+IGZ1bGxPcHRpb25zLm1heERlcHRoKSB7XG4gICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZCk7XG4gIH1cblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvciAmJiBmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVFcnJvcnMpIHtcbiAgICByZXR1cm4gZXJyb3JUb1N0cmluZyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlUGxhaW5PYmplY3QodmFsdWUsIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVBsYWluT2JqZWN0KFxuICB2YWx1ZTogb2JqZWN0LFxuICBkZXB0aDogbnVtYmVyLFxuICBjYW5Vc2VUb0pTT046IGJvb2xlYW4sXG4gIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zLFxuICBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSxcbiAgdXNlZE9iamVjdHM6IFdlYWtTZXQ8b2JqZWN0PlxuKTogdW5rbm93biB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRTb3J0S2V5cykge1xuICAgIGVudHJpZXMuc29ydCgoW2tleTFdLCBba2V5Ml0pID0+IGtleTEubG9jYWxlQ29tcGFyZShrZXkyKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIGVudHJpZXMubWFwKChba2V5MiwgdmFsdWUyXSkgPT4gW1xuICAgICAga2V5MixcbiAgICAgIHRvUGxhaW5PYmplY3QodmFsdWUyLCBrZXkyLCBkZXB0aCArIDEsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKVxuICAgIF0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihrZXk6IFRva2VuU3Vic3RpdHV0aW9uS2V5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGB7IFwiW1ske2tleX1dXVwiOiBudWxsIH1gO1xufVxuXG5mdW5jdGlvbiBtYWtlUGxhY2Vob2xkZXIoa2V5OiBUb2tlblN1YnN0aXR1dGlvbktleSwgaW5kZXg/OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYFtbJHtrZXl9JHtpbmRleCA/IFN0cmluZyhpbmRleCkgOiAnJ31dXWA7XG59XG5cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QoXG4gIHZhbHVlOiB1bmtub3duLFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAoZGVwdGggPT09IDAgfHwgZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlVW5kZWZpbmVkKVxuICAgICAgPyBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuVW5kZWZpbmVkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGhhbmRsZUZ1bmN0aW9uKHZhbHVlLCBmdW5jdGlvblRleHRzLCBmdWxsT3B0aW9ucyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVPYmplY3QodmFsdWUsIGtleSwgZGVwdGgsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbn1cblxuZnVuY3Rpb24gdHJ5SGFuZGxlVG9KU09OKFxuICB2YWx1ZTogb2JqZWN0LFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgY29uc3QgdG9KU09OID0gKHZhbHVlIGFzIFBhcnRpYWw8SlNPTlNlcmlhbGl6YWJsZT4pLnRvSlNPTjtcbiAgaWYgKHR5cGVvZiB0b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0b0pTT04uY2FsbCh2YWx1ZSwga2V5KTtcbiAgICAgIHJldHVybiB0b1BsYWluT2JqZWN0KG5ld1ZhbHVlLCBrZXksIGRlcHRoLCBmYWxzZSwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnMpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5Ub0pTT05GYWlsZWQpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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RDtBQUVBLE1BQUksT0FBTyxVQUFVLFlBQVksVUFBVSxNQUFNO0FBQy9DLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxhQUFhLE9BQU8sS0FBSyxPQUFPLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFDOUY7QUFFQSxTQUFTLGdCQUNQLE9BQ0EsS0FDQSxPQUNBLGFBQ0EsZUFDQSxhQUNTO0FBQ1QsUUFBTSxTQUFVLE1BQW9DO0FBQ3BELE1BQUksT0FBTyxXQUFXLFlBQVk7QUFDaEMsUUFBSTtBQUNGLFlBQU0sV0FBVyxPQUFPLEtBQUssT0FBTyxHQUFHO0FBQ3ZDLGFBQU8sY0FBYyxVQUFVLEtBQUssT0FBTyxPQUFPLGFBQWEsZUFBZSxXQUFXO0FBQUEsSUFDM0YsU0FBUyxHQUFHO0FBQ1YsVUFBSSxZQUFZLHlCQUF5QjtBQUN2QyxlQUFPLGdCQUFnQixpQ0FBaUM7QUFBQSxNQUMxRDtBQUNBLFlBQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsiRnVuY3Rpb25IYW5kbGluZ01vZGUiLCAibW9kdWxlIl0KfQo=
|
|
@@ -132,6 +132,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
132
132
|
var cli_utils_exports = {};
|
|
133
133
|
__export(cli_utils_exports, {
|
|
134
134
|
CliTaskResult: () => CliTaskResult,
|
|
135
|
+
cmdEscapeCommandLine: () => cmdEscapeCommandLine,
|
|
135
136
|
toCommandLine: () => toCommandLine,
|
|
136
137
|
wrapCliTask: () => wrapCliTask
|
|
137
138
|
});
|
|
@@ -242,15 +243,37 @@ class SuccessTaskResult extends CliTaskResult {
|
|
|
242
243
|
}
|
|
243
244
|
}
|
|
244
245
|
function toCommandLine(args) {
|
|
245
|
-
return args.map((arg) =>
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
escapedArg = (0, import_string.replaceAll)(escapedArg, /\n/g, "\\n");
|
|
250
|
-
return `"${escapedArg}"`;
|
|
251
|
-
}
|
|
246
|
+
return args.map((arg) => argvQuote(arg)).join(" ");
|
|
247
|
+
}
|
|
248
|
+
function argvQuote(arg) {
|
|
249
|
+
if (arg.length > 0 && !/[\s\t\n\v"]/.test(arg)) {
|
|
252
250
|
return arg;
|
|
253
|
-
}
|
|
251
|
+
}
|
|
252
|
+
const BACKSLASH_ESCAPE_FACTOR = 2;
|
|
253
|
+
let result = '"';
|
|
254
|
+
for (let i = 0; i < arg.length; i++) {
|
|
255
|
+
let numBackslashes = 0;
|
|
256
|
+
while (i < arg.length && arg[i] === "\\") {
|
|
257
|
+
i++;
|
|
258
|
+
numBackslashes++;
|
|
259
|
+
}
|
|
260
|
+
if (i === arg.length) {
|
|
261
|
+
result += "\\".repeat(numBackslashes * BACKSLASH_ESCAPE_FACTOR);
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
const ch = arg.charAt(i);
|
|
265
|
+
if (ch === '"') {
|
|
266
|
+
result += `${"\\".repeat(numBackslashes * BACKSLASH_ESCAPE_FACTOR + 1)}"`;
|
|
267
|
+
} else {
|
|
268
|
+
result += "\\".repeat(numBackslashes) + ch;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
result += '"';
|
|
272
|
+
return result;
|
|
273
|
+
}
|
|
274
|
+
const CMD_META_RE = /[()%!^"<>&|]/g;
|
|
275
|
+
function cmdEscapeCommandLine(commandLine) {
|
|
276
|
+
return (0, import_string.replaceAll)(commandLine, CMD_META_RE, "^$&");
|
|
254
277
|
}
|
|
255
278
|
async function wrapCliTask(taskFn) {
|
|
256
279
|
(0, import_debug.enableLibraryDebuggers)();
|
|
@@ -268,7 +291,8 @@ async function wrapResult(taskFn) {
|
|
|
268
291
|
// Annotate the CommonJS export names for ESM import in node:
|
|
269
292
|
0 && (module.exports = {
|
|
270
293
|
CliTaskResult,
|
|
294
|
+
cmdEscapeCommandLine,
|
|
271
295
|
toCommandLine,
|
|
272
296
|
wrapCliTask
|
|
273
297
|
});
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9jbGktdXRpbHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIHRhc2sgcmVzdWx0cywgaW5jbHVkaW5nXG4gKiBzdWNjZXNzLCBleGl0IGNvZGVzLCBhbmQgY2hhaW5pbmcgbXVsdGlwbGUgdGFza3MuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4uL3R5cGUudHMnO1xuXG5pbXBvcnQgeyBlbmFibGVMaWJyYXJ5RGVidWdnZXJzIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uL2Vycm9yLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi9mdW5jdGlvbi50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi4vc3RyaW5nLnRzJztcblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBhIHRhc2suIEluY2x1ZGVzIG1ldGhvZHMgZm9yIGhhbmRsaW5nIHN1Y2Nlc3MsXG4gKiBleGl0IGNvZGVzLCBhbmQgY2hhaW5pbmcgdGFza3MuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbGlUYXNrUmVzdWx0IHtcbiAgLyoqXG4gICAqIENoYWlucyBtdWx0aXBsZSB0YXNrcyB0b2dldGhlciwgZXhlY3V0aW5nIHRoZW0gc2VxdWVudGlhbGx5IHVudGlsIG9uZSBmYWlscy5cbiAgICpcbiAgICogQHBhcmFtIHRhc2tzIC0gQW4gYXJyYXkgb2YgdGFzayBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gb3IgYHZvaWRgLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGZpcnN0IGZhaWxlZCB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gb3IgYSBzdWNjZXNzIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgY2hhaW4odGFza3M6ICgoKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPENsaVRhc2tSZXN1bHQ+PilbXSk6IFByb21pc2U8Q2xpVGFza1Jlc3VsdD4ge1xuICAgIGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd3JhcFJlc3VsdCh0YXNrKTtcbiAgICAgIGlmICghcmVzdWx0LmlzU3VjY2Vzc2Z1bCgpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIENsaVRhc2tSZXN1bHQuU3VjY2VzcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBDbGlUYXNrUmVzdWx0fSB0aGF0IGRvZXMgbm90IGV4aXQgdGhlIHByb2Nlc3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERvTm90RXhpdCgpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gbmV3IERvTm90RXhpdFRhc2tSZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGZhaWx1cmUgcmVzdWx0IG9mIGEgQ0xJIHRhc2suXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBmYWlsdXJlIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRmFpbHVyZSgpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gdGhpcy5TdWNjZXNzKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IGJhc2VkIG9uIGFuIGV4aXQgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIGV4aXRDb2RlIC0gVGhlIGV4aXQgY29kZSB0byByZXByZXNlbnQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIENsaVRhc2tSZXN1bHR9IHJlcHJlc2VudGluZyB0aGUgZXhpdCBjb2RlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBGcm9tRXhpdENvZGUoZXhpdENvZGU6IG51bWJlcik6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiBuZXcgRXhpdENvZGVUYXNrUmVzdWx0KGV4aXRDb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgQ2xpVGFza1Jlc3VsdCByZXByZXNlbnRpbmcgYSBzdWNjZXNzZnVsIHRhc2sgcmVzdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gaXNTdWNjZXNzIC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFzayB3YXMgc3VjY2Vzc2Z1bC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEByZXR1cm5zIEEgQ2xpVGFza1Jlc3VsdCBvYmplY3QgcmVwcmVzZW50aW5nIGEgc3VjY2Vzc2Z1bCB0YXNrIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgU3VjY2Vzcyhpc1N1Y2Nlc3MgPSB0cnVlKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBTdWNjZXNzVGFza1Jlc3VsdChpc1N1Y2Nlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4aXRzIHRoZSBwcm9jZXNzIGJhc2VkIG9uIHRoZSB0YXNrIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBleGl0KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgdGFzayB3YXMgbm90IHN1Y2Nlc3NmdWwuXG4gICAqL1xuICBwdWJsaWMgdGhyb3dPbkZhaWx1cmUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzU3VjY2Vzc2Z1bCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rhc2sgZmFpbGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdGFzayB3YXMgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaXNTdWNjZXNzZnVsKCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSB0YXNrIHJlc3VsdCB0aGF0IGRvZXMgbm90IGV4aXQgdGhlIHByb2Nlc3MuXG4gKi9cbmNsYXNzIERvTm90RXhpdFRhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgLyoqXG4gICAqIERvZXMgbm90IGV4aXQgdGhlIHByb2Nlc3MuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZXhpdCgpOiB2b2lkIHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaXNTdWNjZXNzZnVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQSB0YXNrIHJlc3VsdCBiYXNlZCBvbiBhbiBleGl0IGNvZGUuXG4gKi9cbmNsYXNzIEV4aXRDb2RlVGFza1Jlc3VsdCBleHRlbmRzIENsaVRhc2tSZXN1bHQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBleGl0Q29kZTogbnVtYmVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGl0cyB0aGUgcHJvY2VzcyB3aXRoIHRoZSBzcGVjaWZpZWQgZXhpdCBjb2RlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGV4aXQoKTogdm9pZCB7XG4gICAgcHJvY2Vzcy5leGl0KHRoaXMuZXhpdENvZGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leGl0Q29kZSA9PT0gMDtcbiAgfVxufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgYmFzZWQgb24gc3VjY2VzcyBvciBmYWlsdXJlLlxuICovXG5jbGFzcyBTdWNjZXNzVGFza1Jlc3VsdCBleHRlbmRzIENsaVRhc2tSZXN1bHQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfaXNTdWNjZXNzZnVsOiBib29sZWFuKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGl0cyB0aGUgcHJvY2VzcyBiYXNlZCBvbiB0aGUgc3VjY2VzcyBvZiB0aGUgdGFzay5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBleGl0KCk6IHZvaWQge1xuICAgIHByb2Nlc3MuZXhpdCh0aGlzLl9pc1N1Y2Nlc3NmdWwgPyAwIDogMSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaXNTdWNjZXNzZnVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1N1Y2Nlc3NmdWw7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGludG8gYSBzaW5nbGUgY29tbWFuZC1saW5lIHN0cmluZy5cbiAqIEhhbmRsZXMgZXNjYXBpbmcgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIHN1Y2ggYXMgc3BhY2VzLCBxdW90ZXMsIGFuZCBuZXdsaW5lcy5cbiAqXG4gKiBAcGFyYW0gYXJncyAtIFRoZSBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbW1hbmQtbGluZSBpbnZvY2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Db21tYW5kTGluZShhcmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiBhcmdzXG4gICAgLm1hcCgoYXJnKSA9PiB7XG4gICAgICBpZiAoL1tcXHNcIlxcbl0vLnRlc3QoYXJnKSkge1xuICAgICAgICBsZXQgZXNjYXBlZEFyZyA9IGFyZztcbiAgICAgICAgZXNjYXBlZEFyZyA9IHJlcGxhY2VBbGwoZXNjYXBlZEFyZywgL1wiL2csICdcXFxcXCInKTtcbiAgICAgICAgZXNjYXBlZEFyZyA9IHJlcGxhY2VBbGwoZXNjYXBlZEFyZywgL1xcbi9nLCAnXFxcXG4nKTtcbiAgICAgICAgcmV0dXJuIGBcIiR7ZXNjYXBlZEFyZ31cImA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJnO1xuICAgIH0pXG4gICAgLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBXcmFwcyBhIENMSSB0YXNrIGZ1bmN0aW9uIHRvIGVuc3VyZSBpdCBydW5zIHNhZmVseSBhbmQgaGFuZGxlcyBpdHMge0BsaW5rIENsaVRhc2tSZXN1bHR9LlxuICpcbiAqIEBwYXJhbSB0YXNrRm4gLSBUaGUgdGFzayBmdW5jdGlvbiB0byBleGVjdXRlLCB3aGljaCBtYXkgcmV0dXJuIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGB2b2lkYC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFzayBpcyBjb21wbGV0ZWQgYW5kIGV4aXRzIHdpdGggdGhlIGFwcHJvcHJpYXRlIHN0YXR1cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyYXBDbGlUYXNrKHRhc2tGbjogKCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxDbGlUYXNrUmVzdWx0Pj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZW5hYmxlTGlicmFyeURlYnVnZ2VycygpO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCB3cmFwUmVzdWx0KHRhc2tGbik7XG4gIHJlc3VsdC5leGl0KCk7XG59XG5cbi8qKlxuICogU2FmZWx5IGV4ZWN1dGVzIGEgdGFzayBmdW5jdGlvbiBhbmQgcmV0dXJucyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fS4gSWYgdGhlIHRhc2sgZnVuY3Rpb24gdGhyb3dzIGFuIGVycm9yLFxuICogQW4gZXJyb3IgaXMgY2F1Z2h0LCBhbmQgYSBmYWlsdXJlIHtAbGluayBDbGlUYXNrUmVzdWx0fSBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdGFza0ZuIC0gVGhlIHRhc2sgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSByZXByZXNlbnRpbmcgdGhlIG91dGNvbWUgb2YgdGhlIHRhc2suXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdyYXBSZXN1bHQodGFza0ZuOiAoKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPENsaVRhc2tSZXN1bHQ+Pik6IFByb21pc2U8Q2xpVGFza1Jlc3VsdD4ge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgdGFza0ZuKCkpIGFzIENsaVRhc2tSZXN1bHQgfCB1bmRlZmluZWQgPz8gQ2xpVGFza1Jlc3VsdC5TdWNjZXNzKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0YXNrIGV4ZWN1dGlvbicsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgICByZXR1cm4gQ2xpVGFza1Jlc3VsdC5GYWlsdXJlKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQSwwQkFBb0I7QUFJcEIsbUJBQXVDO0FBQ3ZDLG1CQUEyQjtBQUMz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
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9jbGktdXRpbHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIHRhc2sgcmVzdWx0cywgaW5jbHVkaW5nXG4gKiBzdWNjZXNzLCBleGl0IGNvZGVzLCBhbmQgY2hhaW5pbmcgbXVsdGlwbGUgdGFza3MuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4uL3R5cGUudHMnO1xuXG5pbXBvcnQgeyBlbmFibGVMaWJyYXJ5RGVidWdnZXJzIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uL2Vycm9yLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi9mdW5jdGlvbi50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi4vc3RyaW5nLnRzJztcblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBhIHRhc2suIEluY2x1ZGVzIG1ldGhvZHMgZm9yIGhhbmRsaW5nIHN1Y2Nlc3MsXG4gKiBleGl0IGNvZGVzLCBhbmQgY2hhaW5pbmcgdGFza3MuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbGlUYXNrUmVzdWx0IHtcbiAgLyoqXG4gICAqIENoYWlucyBtdWx0aXBsZSB0YXNrcyB0b2dldGhlciwgZXhlY3V0aW5nIHRoZW0gc2VxdWVudGlhbGx5IHVudGlsIG9uZSBmYWlscy5cbiAgICpcbiAgICogQHBhcmFtIHRhc2tzIC0gQW4gYXJyYXkgb2YgdGFzayBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gb3IgYHZvaWRgLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGZpcnN0IGZhaWxlZCB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gb3IgYSBzdWNjZXNzIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgY2hhaW4odGFza3M6ICgoKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPENsaVRhc2tSZXN1bHQ+PilbXSk6IFByb21pc2U8Q2xpVGFza1Jlc3VsdD4ge1xuICAgIGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd3JhcFJlc3VsdCh0YXNrKTtcbiAgICAgIGlmICghcmVzdWx0LmlzU3VjY2Vzc2Z1bCgpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIENsaVRhc2tSZXN1bHQuU3VjY2VzcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gdGhhdCBkb2VzIG5vdCBleGl0IHRoZSBwcm9jZXNzLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBDbGlUYXNrUmVzdWx0fSB0aGF0IGRvZXMgbm90IGV4aXQgdGhlIHByb2Nlc3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERvTm90RXhpdCgpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gbmV3IERvTm90RXhpdFRhc2tSZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGZhaWx1cmUgcmVzdWx0IG9mIGEgQ0xJIHRhc2suXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBmYWlsdXJlIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRmFpbHVyZSgpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gdGhpcy5TdWNjZXNzKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IGJhc2VkIG9uIGFuIGV4aXQgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIGV4aXRDb2RlIC0gVGhlIGV4aXQgY29kZSB0byByZXByZXNlbnQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIENsaVRhc2tSZXN1bHR9IHJlcHJlc2VudGluZyB0aGUgZXhpdCBjb2RlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBGcm9tRXhpdENvZGUoZXhpdENvZGU6IG51bWJlcik6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiBuZXcgRXhpdENvZGVUYXNrUmVzdWx0KGV4aXRDb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgQ2xpVGFza1Jlc3VsdCByZXByZXNlbnRpbmcgYSBzdWNjZXNzZnVsIHRhc2sgcmVzdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gaXNTdWNjZXNzIC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFzayB3YXMgc3VjY2Vzc2Z1bC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEByZXR1cm5zIEEgQ2xpVGFza1Jlc3VsdCBvYmplY3QgcmVwcmVzZW50aW5nIGEgc3VjY2Vzc2Z1bCB0YXNrIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgU3VjY2Vzcyhpc1N1Y2Nlc3MgPSB0cnVlKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBTdWNjZXNzVGFza1Jlc3VsdChpc1N1Y2Nlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4aXRzIHRoZSBwcm9jZXNzIGJhc2VkIG9uIHRoZSB0YXNrIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBleGl0KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgdGFzayB3YXMgbm90IHN1Y2Nlc3NmdWwuXG4gICAqL1xuICBwdWJsaWMgdGhyb3dPbkZhaWx1cmUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzU3VjY2Vzc2Z1bCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rhc2sgZmFpbGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHRhc2sgd2FzIHN1Y2Nlc3NmdWwuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdGFzayB3YXMgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaXNTdWNjZXNzZnVsKCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSB0YXNrIHJlc3VsdCB0aGF0IGRvZXMgbm90IGV4aXQgdGhlIHByb2Nlc3MuXG4gKi9cbmNsYXNzIERvTm90RXhpdFRhc2tSZXN1bHQgZXh0ZW5kcyBDbGlUYXNrUmVzdWx0IHtcbiAgLyoqXG4gICAqIERvZXMgbm90IGV4aXQgdGhlIHByb2Nlc3MuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZXhpdCgpOiB2b2lkIHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaXNTdWNjZXNzZnVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQSB0YXNrIHJlc3VsdCBiYXNlZCBvbiBhbiBleGl0IGNvZGUuXG4gKi9cbmNsYXNzIEV4aXRDb2RlVGFza1Jlc3VsdCBleHRlbmRzIENsaVRhc2tSZXN1bHQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBleGl0Q29kZTogbnVtYmVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGl0cyB0aGUgcHJvY2VzcyB3aXRoIHRoZSBzcGVjaWZpZWQgZXhpdCBjb2RlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGV4aXQoKTogdm9pZCB7XG4gICAgcHJvY2Vzcy5leGl0KHRoaXMuZXhpdENvZGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leGl0Q29kZSA9PT0gMDtcbiAgfVxufVxuXG4vKipcbiAqIEEgdGFzayByZXN1bHQgYmFzZWQgb24gc3VjY2VzcyBvciBmYWlsdXJlLlxuICovXG5jbGFzcyBTdWNjZXNzVGFza1Jlc3VsdCBleHRlbmRzIENsaVRhc2tSZXN1bHQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfaXNTdWNjZXNzZnVsOiBib29sZWFuKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGl0cyB0aGUgcHJvY2VzcyBiYXNlZCBvbiB0aGUgc3VjY2VzcyBvZiB0aGUgdGFzay5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBleGl0KCk6IHZvaWQge1xuICAgIHByb2Nlc3MuZXhpdCh0aGlzLl9pc1N1Y2Nlc3NmdWwgPyAwIDogMSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaXNTdWNjZXNzZnVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1N1Y2Nlc3NmdWw7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGludG8gYSBzaW5nbGUgY29tbWFuZC1saW5lIHN0cmluZ1xuICogdXNpbmcgdGhlIGBDb21tYW5kTGluZVRvQXJndldgIGNvbnZlbnRpb24gKHRoZSBzdGFuZGFyZCB1c2VkIGJ5IHRoZVxuICogTWljcm9zb2Z0IEMgcnVudGltZSBhbmQgbW9zdCBXaW5kb3dzIHByb2dyYW1zKS5cbiAqXG4gKiBJbXBsZW1lbnRzIHRoZSBBcmd2UXVvdGUgYWxnb3JpdGhtIGZyb21cbiAqIHtAbGluayBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vYXJjaGl2ZS9ibG9ncy90d2lzdHlsaXR0bGVwYXNzYWdlc2FsbGFsaWtlL2V2ZXJ5b25lLXF1b3Rlcy1jb21tYW5kLWxpbmUtYXJndW1lbnRzLXRoZS13cm9uZy13YXkgfCBFdmVyeW9uZSBxdW90ZXMgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0aGUgd3Jvbmcgd2F5fTpcbiAqIGJhY2tzbGFzaGVzIGJlZm9yZSBxdW90ZXMgYW5kIGF0IHRoZSBlbmQgb2YgYSBxdW90ZWQgYXJndW1lbnQgYXJlIGRvdWJsZWQuXG4gKlxuICogVGhpcyBwcm9kdWNlcyBhIHNoZWxsLWFnbm9zdGljIGNvbW1hbmQgbGluZS4gQ2FsbGVycyB0aGF0IHJvdXRlIHRocm91Z2hcbiAqIGEgc3BlY2lmaWMgc2hlbGwgKGNtZC5leGUsIFBvd2VyU2hlbGwsIHNoKSBtdXN0IGFwcGx5IHNoZWxsLXNwZWNpZmljXG4gKiBlc2NhcGluZyBvbiB0b3AgXHUyMDE0IHNlZSB7QGxpbmsgY21kRXNjYXBlQ29tbWFuZExpbmV9LlxuICpcbiAqIEBwYXJhbSBhcmdzIC0gVGhlIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZC1saW5lIGludm9jYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NvbW1hbmRMaW5lKGFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGFyZ3MubWFwKChhcmcpID0+IGFyZ3ZRdW90ZShhcmcpKS5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogUXVvdGVzIGEgc2luZ2xlIGFyZ3VtZW50IHNvIHRoYXQgYENvbW1hbmRMaW5lVG9Bcmd2V2Agd2lsbCBkZWNvZGUgaXRcbiAqIHVuY2hhbmdlZC4gSW1wbGVtZW50cyB0aGUgQXJndlF1b3RlIGFsZ29yaXRobSBmcm9tXG4gKiB7QGxpbmsgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2FyY2hpdmUvYmxvZ3MvdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS9ldmVyeW9uZS1xdW90ZXMtY29tbWFuZC1saW5lLWFyZ3VtZW50cy10aGUtd3Jvbmctd2F5IHwgRXZlcnlvbmUgcXVvdGVzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdGhlIHdyb25nIHdheX0uXG4gKlxuICogQHBhcmFtIGFyZyAtIFRoZSByYXcgYXJndW1lbnQgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHF1b3RlZCBhcmd1bWVudCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGFyZ3ZRdW90ZShhcmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChhcmcubGVuZ3RoID4gMCAmJiAhL1tcXHNcXHRcXG5cXHZcIl0vLnRlc3QoYXJnKSkge1xuICAgIHJldHVybiBhcmc7XG4gIH1cblxuICBjb25zdCBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUiA9IDI7XG4gIGxldCByZXN1bHQgPSAnXCInO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBudW1CYWNrc2xhc2hlcyA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmcubGVuZ3RoICYmIGFyZ1tpXSA9PT0gJ1xcXFwnKSB7XG4gICAgICBpKys7XG4gICAgICBudW1CYWNrc2xhc2hlcysrO1xuICAgIH1cblxuICAgIGlmIChpID09PSBhcmcubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgKz0gJ1xcXFwnLnJlcGVhdChudW1CYWNrc2xhc2hlcyAqIEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGNoID0gYXJnLmNoYXJBdChpKTtcbiAgICBpZiAoY2ggPT09ICdcIicpIHtcbiAgICAgIHJlc3VsdCArPSBgJHsnXFxcXCcucmVwZWF0KG51bUJhY2tzbGFzaGVzICogQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IgKyAxKX1cImA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCArPSAnXFxcXCcucmVwZWF0KG51bUJhY2tzbGFzaGVzKSArIGNoO1xuICAgIH1cbiAgfVxuXG4gIHJlc3VsdCArPSAnXCInO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIE1hdGNoZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHRoYXQgbXVzdCBiZSBgXmAtZXNjYXBlZC5cbiAqL1xuY29uc3QgQ01EX01FVEFfUkUgPSAvWygpJSFeXCI8PiZ8XS9nO1xuXG4vKipcbiAqIEVzY2FwZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHdpdGggYF5gIHNvIHRoYXQgYGNtZC5leGVgIHBhc3NlcyB0aGVtXG4gKiB0aHJvdWdoIGxpdGVyYWxseS4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBgY21kLmV4ZWAncyBgXCJgIGhhbmRsaW5nXG4gKiBkaWZmZXJzIGZyb20gYENvbW1hbmRMaW5lVG9Bcmd2V2AgYW5kIGNhbm5vdCBiZSByZWxpZWQgdXBvbi5cbiAqXG4gKiBBcHBseSB0aGlzIHRvIGEgY29tbWFuZCBsaW5lIHN0cmluZyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgdmlhIGBjbWQuZXhlYFxuICogKGUuZy4sIGBzcGF3bihjbWQsIFtdLCB7IHNoZWxsOiB0cnVlIH0pYCBvbiBXaW5kb3dzKS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZExpbmUgLSBUaGUgYWxyZWFkeS1xdW90ZWQgY29tbWFuZCBsaW5lIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBhbGwgY21kIG1ldGFjaGFyYWN0ZXJzIGBeYC1lc2NhcGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY21kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZExpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKGNvbW1hbmRMaW5lLCBDTURfTUVUQV9SRSwgJ14kJicpO1xufVxuXG4vKipcbiAqIFdyYXBzIGEgQ0xJIHRhc2sgZnVuY3Rpb24gdG8gZW5zdXJlIGl0IHJ1bnMgc2FmZWx5IGFuZCBoYW5kbGVzIGl0cyB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0uXG4gKlxuICogQHBhcmFtIHRhc2tGbiAtIFRoZSB0YXNrIGZ1bmN0aW9uIHRvIGV4ZWN1dGUsIHdoaWNoIG1heSByZXR1cm4gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gb3IgYHZvaWRgLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0YXNrIGlzIGNvbXBsZXRlZCBhbmQgZXhpdHMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgc3RhdHVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JhcENsaVRhc2sodGFza0ZuOiAoKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPENsaVRhc2tSZXN1bHQ+Pik6IFByb21pc2U8dm9pZD4ge1xuICBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdyYXBSZXN1bHQodGFza0ZuKTtcbiAgcmVzdWx0LmV4aXQoKTtcbn1cblxuLyoqXG4gKiBTYWZlbHkgZXhlY3V0ZXMgYSB0YXNrIGZ1bmN0aW9uIGFuZCByZXR1cm5zIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9LiBJZiB0aGUgdGFzayBmdW5jdGlvbiB0aHJvd3MgYW4gZXJyb3IsXG4gKiBBbiBlcnJvciBpcyBjYXVnaHQsIGFuZCBhIGZhaWx1cmUge0BsaW5rIENsaVRhc2tSZXN1bHR9IGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB0YXNrRm4gLSBUaGUgdGFzayBmdW5jdGlvbiB0byBleGVjdXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IHJlcHJlc2VudGluZyB0aGUgb3V0Y29tZSBvZiB0aGUgdGFzay5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gd3JhcFJlc3VsdCh0YXNrRm46ICgpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48Q2xpVGFza1Jlc3VsdD4+KTogUHJvbWlzZTxDbGlUYXNrUmVzdWx0PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCB0YXNrRm4oKSkgYXMgQ2xpVGFza1Jlc3VsdCB8IHVuZGVmaW5lZCA/PyBDbGlUYXNrUmVzdWx0LlN1Y2Nlc3MoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKG5ldyBFcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRhc2sgZXhlY3V0aW9uJywgeyBjYXVzZTogZXJyb3IgfSkpO1xuICAgIHJldHVybiBDbGlUYXNrUmVzdWx0LkZhaWx1cmUoKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0EsMEJBQW9CO0FBSXBCLG1CQUF1QztBQUN2QyxtQkFBMkI7QUFDM0Isc0JBQXFCO0FBQ3JCLG9CQUEyQjtBQU1wQixNQUFlLGNBQWM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9sQyxhQUFvQixNQUFNLE9BQWlGO0FBQ3pHLGVBQVcsUUFBUSxPQUFPO0FBQ3hCLFlBQU0sU0FBUyxNQUFNLFdBQVcsSUFBSTtBQUNwQyxVQUFJLENBQUMsT0FBTyxhQUFhLEdBQUc7QUFDMUIsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBRUEsV0FBTyxjQUFjLFFBQVE7QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMsWUFBMkI7QUFDdkMsV0FBTyxJQUFJLG9CQUFvQjtBQUFBLEVBQ2pDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBYyxVQUF5QjtBQUNyQyxXQUFPLEtBQUssUUFBUSxLQUFLO0FBQUEsRUFDM0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsYUFBYSxVQUFpQztBQUMxRCxXQUFPLElBQUksbUJBQW1CLFFB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
|
|
@@ -60,13 +60,34 @@ export declare abstract class CliTaskResult {
|
|
|
60
60
|
protected abstract isSuccessful(): boolean;
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
|
-
* Converts an array of command-line arguments into a single command-line string
|
|
64
|
-
*
|
|
63
|
+
* Converts an array of command-line arguments into a single command-line string
|
|
64
|
+
* using the `CommandLineToArgvW` convention (the standard used by the
|
|
65
|
+
* Microsoft C runtime and most Windows programs).
|
|
66
|
+
*
|
|
67
|
+
* Implements the ArgvQuote algorithm from
|
|
68
|
+
* {@link https://learn.microsoft.com/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way | Everyone quotes command line arguments the wrong way}:
|
|
69
|
+
* backslashes before quotes and at the end of a quoted argument are doubled.
|
|
70
|
+
*
|
|
71
|
+
* This produces a shell-agnostic command line. Callers that route through
|
|
72
|
+
* a specific shell (cmd.exe, PowerShell, sh) must apply shell-specific
|
|
73
|
+
* escaping on top — see {@link cmdEscapeCommandLine}.
|
|
65
74
|
*
|
|
66
75
|
* @param args - The array of command-line arguments to convert.
|
|
67
76
|
* @returns A string representing the command-line invocation.
|
|
68
77
|
*/
|
|
69
78
|
export declare function toCommandLine(args: string[]): string;
|
|
79
|
+
/**
|
|
80
|
+
* Escapes `cmd.exe` metacharacters with `^` so that `cmd.exe` passes them
|
|
81
|
+
* through literally. This is necessary because `cmd.exe`'s `"` handling
|
|
82
|
+
* differs from `CommandLineToArgvW` and cannot be relied upon.
|
|
83
|
+
*
|
|
84
|
+
* Apply this to a command line string that will be executed via `cmd.exe`
|
|
85
|
+
* (e.g., `spawn(cmd, [], { shell: true })` on Windows).
|
|
86
|
+
*
|
|
87
|
+
* @param commandLine - The already-quoted command line string.
|
|
88
|
+
* @returns The string with all cmd metacharacters `^`-escaped.
|
|
89
|
+
*/
|
|
90
|
+
export declare function cmdEscapeCommandLine(commandLine: string): string;
|
|
70
91
|
/**
|
|
71
92
|
* Wraps a CLI task function to ensure it runs safely and handles its {@link CliTaskResult}.
|
|
72
93
|
*
|