cdktn 0.25.0-pre.2 → 0.25.0-pre.21
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/.jsii +927 -107
- package/lib/annotations.js +4 -4
- package/lib/app.js +54 -5
- package/lib/aspect.js +3 -4
- package/lib/asset-hash.d.ts +75 -0
- package/lib/asset-hash.js +129 -0
- package/lib/assets.d.ts +168 -0
- package/lib/assets.js +128 -0
- package/lib/backends/azurerm-backend.js +4 -6
- package/lib/backends/cloud-backend.js +10 -10
- package/lib/backends/consul-backend.js +4 -6
- package/lib/backends/cos-backend.js +4 -6
- package/lib/backends/gcs-backend.js +4 -6
- package/lib/backends/http-backend.js +4 -6
- package/lib/backends/local-backend.js +38 -7
- package/lib/backends/oss-backend.js +4 -6
- package/lib/backends/pg-backend.js +4 -6
- package/lib/backends/remote-backend.js +8 -10
- package/lib/backends/s3-backend.js +4 -6
- package/lib/backends/swift-backend.js +4 -6
- package/lib/complex-computed-list.js +114 -65
- package/lib/errors.d.ts +6 -0
- package/lib/errors.js +24 -3
- package/lib/functions/provider-function.js +2 -4
- package/lib/functions/terraform-functions.generated.js +2 -4
- package/lib/ignore-strategy.d.ts +82 -0
- package/lib/ignore-strategy.js +29 -0
- package/lib/importable-resource.js +3 -4
- package/lib/index.d.ts +3 -0
- package/lib/index.js +27 -2
- package/lib/manifest.js +56 -14
- package/lib/private/fs.d.ts +74 -2
- package/lib/private/fs.js +129 -17
- package/lib/private/unique.js +35 -2
- package/lib/resource.js +3 -4
- package/lib/synthesize/synthesizer.js +43 -4
- package/lib/terraform-asset.d.ts +33 -2
- package/lib/terraform-asset.js +118 -34
- package/lib/terraform-backend.js +3 -4
- package/lib/terraform-count.js +3 -4
- package/lib/terraform-data-resource.js +12 -10
- package/lib/terraform-data-source.js +10 -4
- package/lib/terraform-dynamic-block.js +5 -2
- package/lib/terraform-dynamic-expression.js +4 -1
- package/lib/terraform-element.js +34 -6
- package/lib/terraform-ephemeral-resource.js +10 -4
- package/lib/terraform-functions.js +2 -4
- package/lib/terraform-hcl-module.js +3 -4
- package/lib/terraform-iterator.js +11 -12
- package/lib/terraform-local.js +3 -4
- package/lib/terraform-module-asset.js +45 -5
- package/lib/terraform-module.js +8 -4
- package/lib/terraform-operators.js +2 -4
- package/lib/terraform-output.js +7 -4
- package/lib/terraform-provider.js +5 -4
- package/lib/terraform-provisioner.js +2 -4
- package/lib/terraform-remote-state.js +5 -5
- package/lib/terraform-resource-targets.js +3 -7
- package/lib/terraform-resource.js +16 -5
- package/lib/terraform-stack.js +38 -38
- package/lib/terraform-variable.js +25 -22
- package/lib/testing/index.js +42 -8
- package/lib/testing/matchers.js +39 -6
- package/lib/tfExpression.js +25 -8
- package/lib/tokens/lazy.js +11 -7
- package/lib/tokens/private/dependency.js +2 -2
- package/lib/tokens/private/encoding.js +6 -1
- package/lib/tokens/private/intrinsic.js +6 -1
- package/lib/tokens/private/resolve.js +2 -5
- package/lib/tokens/private/token-map.js +4 -6
- package/lib/tokens/private/uniqueid.js +35 -2
- package/lib/tokens/resolvable.js +4 -6
- package/lib/tokens/string-fragments.js +6 -10
- package/lib/tokens/token.js +15 -18
- package/lib/upgrade-id-aspect.js +37 -6
- package/lib/validations/target-versions.js +39 -2
- package/lib/validations/validate-binary-version.js +39 -2
- package/lib/validations/validate-function-version-support.js +2 -1
- package/lib/validations/validate-provider-function-target-support.js +2 -1
- package/lib/validations/validate-provider-presence.js +10 -9
- package/lib/validations/validate-terraform-version.js +3 -1
- package/package.json +5 -5
- package/scripts/pack.mjs +57 -15
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/tsconfig.json +0 -40
- package/tsconfig.test.json +0 -12
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a, _b;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.TerraformVariable = exports.VariableType = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -9,6 +8,23 @@ const tokens_1 = require("./tokens");
|
|
|
9
8
|
const tfExpression_1 = require("./tfExpression");
|
|
10
9
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
11
10
|
class VariableType {
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.VariableType", version: "0.25.0-pre.21" };
|
|
12
|
+
static STRING = "string";
|
|
13
|
+
static NUMBER = "number";
|
|
14
|
+
static BOOL = "bool";
|
|
15
|
+
static ANY = "any";
|
|
16
|
+
static LIST = "list";
|
|
17
|
+
static MAP = "map";
|
|
18
|
+
static SET = "set";
|
|
19
|
+
static LIST_STRING = "list(string)";
|
|
20
|
+
static LIST_NUMBER = "list(number)";
|
|
21
|
+
static LIST_BOOL = "list(bool)";
|
|
22
|
+
static MAP_STRING = "map(string)";
|
|
23
|
+
static MAP_NUMBER = "map(number)";
|
|
24
|
+
static MAP_BOOL = "map(bool)";
|
|
25
|
+
static SET_STRING = "set(string)";
|
|
26
|
+
static SET_NUMBER = "set(number)";
|
|
27
|
+
static SET_BOOL = "set(bool)";
|
|
12
28
|
static list(type) {
|
|
13
29
|
return `list(${type})`;
|
|
14
30
|
}
|
|
@@ -28,26 +44,15 @@ class VariableType {
|
|
|
28
44
|
}
|
|
29
45
|
}
|
|
30
46
|
exports.VariableType = VariableType;
|
|
31
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
32
|
-
VariableType[_a] = { fqn: "cdktn.VariableType", version: "0.25.0-pre.2" };
|
|
33
|
-
VariableType.STRING = "string";
|
|
34
|
-
VariableType.NUMBER = "number";
|
|
35
|
-
VariableType.BOOL = "bool";
|
|
36
|
-
VariableType.ANY = "any";
|
|
37
|
-
VariableType.LIST = "list";
|
|
38
|
-
VariableType.MAP = "map";
|
|
39
|
-
VariableType.SET = "set";
|
|
40
|
-
VariableType.LIST_STRING = "list(string)";
|
|
41
|
-
VariableType.LIST_NUMBER = "list(number)";
|
|
42
|
-
VariableType.LIST_BOOL = "list(bool)";
|
|
43
|
-
VariableType.MAP_STRING = "map(string)";
|
|
44
|
-
VariableType.MAP_NUMBER = "map(number)";
|
|
45
|
-
VariableType.MAP_BOOL = "map(bool)";
|
|
46
|
-
VariableType.SET_STRING = "set(string)";
|
|
47
|
-
VariableType.SET_NUMBER = "set(number)";
|
|
48
|
-
VariableType.SET_BOOL = "set(bool)";
|
|
49
47
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
50
48
|
class TerraformVariable extends terraform_element_1.TerraformElement {
|
|
49
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.TerraformVariable", version: "0.25.0-pre.21" };
|
|
50
|
+
default;
|
|
51
|
+
description;
|
|
52
|
+
type;
|
|
53
|
+
sensitive;
|
|
54
|
+
nullable;
|
|
55
|
+
_validation;
|
|
51
56
|
constructor(scope, id, config) {
|
|
52
57
|
super(scope, id, "var");
|
|
53
58
|
this.default = config.default;
|
|
@@ -156,6 +161,4 @@ class TerraformVariable extends terraform_element_1.TerraformElement {
|
|
|
156
161
|
}
|
|
157
162
|
}
|
|
158
163
|
exports.TerraformVariable = TerraformVariable;
|
|
159
|
-
_b = JSII_RTTI_SYMBOL_1;
|
|
160
|
-
TerraformVariable[_b] = { fqn: "cdktn.TerraformVariable", version: "0.25.0-pre.2" };
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXZhcmlhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlcnJhZm9ybS12YXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLDJEQUF1RDtBQUN2RCxpQ0FBb0Q7QUFDcEQscUNBQWlDO0FBQ2pDLGlEQUFxQztBQUtyQywrQ0FBK0M7QUFDL0MsTUFBc0IsWUFBWTtJQXNCekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQzdCLE9BQU8sUUFBUSxJQUFJLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQWtCO1FBQ3ZDLE9BQU8sU0FBUyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDekMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBcUM7UUFDeEQsT0FBTyxXQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQzs7QUExQ0gsb0NBMkNDOzs7QUExQ3dCLG1CQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLG1CQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLGlCQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ2QsZ0JBQUcsR0FBRyxLQUFLLENBQUM7QUFFWixpQkFBSSxHQUFHLE1BQU0sQ0FBQztBQUNkLGdC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QUFjO1FBQ25CLE9BQU87WUFDTCxRQUFRLEVBQUU7Z0JBQ1IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFBLGdCQUFTLEVBQ2hDLElBQUEsc0JBQWUsRUFBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxFQUMvQyxJQUFJLENBQUMsWUFBWSxDQUNsQjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU87WUFDTCxRQUFRLEVBQUU7Z0JBQ1IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFBLGdCQUFTLEVBQ2hDLElBQUEsc0JBQWUsRUFBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUM1QyxJQUFJLENBQUMsWUFBWSxDQUNsQjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQzs7QUE3SUgsOENBOElDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1FbGVtZW50IH0gZnJvbSBcIi4vdGVycmFmb3JtLWVsZW1lbnRcIjtcbmltcG9ydCB7IGtleXNUb1NuYWtlQ2FzZSwgZGVlcE1lcmdlIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlbnNcIjtcbmltcG9ydCB7IHJlZiB9IGZyb20gXCIuL3RmRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgSVJlc29sdmFibGUgfSBmcm9tIFwiLi90b2tlbnMvcmVzb2x2YWJsZVwiO1xuaW1wb3J0IHsgSVRlcnJhZm9ybUFkZHJlc3NhYmxlIH0gZnJvbSBcIi4vdGVycmFmb3JtLWFkZHJlc3NhYmxlXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWcgfSBmcm9tIFwiLi90ZXJyYWZvcm0tY29uZGl0aW9uc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhcmlhYmxlVHlwZSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RSSU5HID0gXCJzdHJpbmdcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOVU1CRVIgPSBcIm51bWJlclwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJPT0wgPSBcImJvb2xcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTlkgPSBcImFueVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVCA9IFwibGlzdFwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUCA9IFwibWFwXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VUID0gXCJzZXRcIjtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExJU1RfU1RSSU5HID0gXCJsaXN0KHN0cmluZylcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSVNUX05VTUJFUiA9IFwibGlzdChudW1iZXIpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVF9CT09MID0gXCJsaXN0KGJvb2wpXCI7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVBfU1RSSU5HID0gXCJtYXAoc3RyaW5nKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUF9OVU1CRVIgPSBcIm1hcChudW1iZXIpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFQX0JPT0wgPSBcIm1hcChib29sKVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VUX1NUUklORyA9IFwic2V0KHN0cmluZylcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVRfTlVNQkVSID0gXCJzZXQobnVtYmVyKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFVF9CT09MID0gXCJzZXQoYm9vbClcIjtcblxuICBwdWJsaWMgc3RhdGljIGxpc3QodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBsaXN0KCR7dHlwZX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbWFwKHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBgbWFwKCR7dHlwZX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0KHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBgc2V0KCR7dHlwZX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHVwbGUoLi4uZWxlbWVudHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIGB0dXBsZSgke2VsZW1lbnRzLmpvaW4oXCIsIFwiKX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgb2JqZWN0KGF0dHJpYnV0ZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gYG9iamVjdCh7JHtPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKVxuICAgICAgLm1hcCgoaykgPT4gayArIFwiPVwiICsgYXR0cmlidXRlc1trXSlcbiAgICAgIC5qb2luKFwiLCBcIil9fSlgO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtVmFyaWFibGVDb25maWcge1xuICByZWFkb25seSBkZWZhdWx0PzogYW55O1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgYXJndW1lbnQgaW4gYSB2YXJpYWJsZSBibG9jayBhbGxvd3MgeW91IHRvIHJlc3RyaWN0IHRoZSB0eXBlIG9mIHZhbHVlIHRoYXQgd2lsbCBiZSBhY2NlcHRlZCBhcyB0aGUgdmFsdWUgZm9yIGEgdmFyaWFibGUuIElmIG5vIHR5cGUgY29uc3RyYWludCBpcyBzZXQgdGhlbiBhIHZhbHVlIG9mIGFueSB0eXBlIGlzIGFjY2VwdGVkLlxuICAgKlxuICAgKiBXaGlsZSB0eXBlIGNvbnN0cmFpbnRzIGFyZSBvcHRpb25hbCwgd2UgcmVjb21tZW5kIHNwZWNpZnlpbmcgdGhlbTsgdGhleSBzZXJ2ZSBhcyBlYXN5IHJlbWluZGVycyBmb3IgdXNlcnMgb2YgdGhlIG1vZHVsZSwgYW5kIGFsbG93IFRlcnJhZm9ybSB0byByZXR1cm4gYSBoZWxwZnVsIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHdyb25nIHR5cGUgaXMgdXNlZC5cbiAgICpcbiAgICogVHlwZSBjb25zdHJhaW50cyBhcmUgY3JlYXRlZCBmcm9tIGEgbWl4dHVyZSBvZiB0eXBlIGtleXdvcmRzIGFuZCB0eXBlIGNvbnN0cnVjdG9ycy4gVGhlIHN1cHBvcnRlZCB0eXBlIGtleXdvcmRzIGFyZTpcbiAgICpcbiAgICogLSBzdHJpbmdcbiAgICogLSBudW1iZXJcbiAgICogLSBib29sXG4gICAqXG4gICAqIFRoZSB0eXBlIGNvbnN0cnVjdG9ycyBhbGxvdyB5b3UgdG8gc3BlY2lmeSBjb21wbGV4IHR5cGVzIHN1Y2ggYXMgY29sbGVjdGlvbnM6XG4gICAqXG4gICAqIC0gbGlzdChcXDxUWVBFXFw+KVxuICAgKiAtIHNldChcXDxUWVBFXFw+KVxuICAgKiAtIG1hcChcXDxUWVBFXFw+KVxuICAgKiAtIG9iamVjdCh7XFw8QVRUUiBOQU1FXFw+ID0gXFw8VFlQRVxcPiwgLi4uIH0pXG4gICAqIC0gdHVwbGUoW1xcPFRZUEVcXD4sIC4uLl0pXG4gICAqXG4gICAqIFRoZSBrZXl3b3JkIGFueSBtYXkgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGFueSB0eXBlIGlzIGFjY2VwdGFibGUuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBtZWFuaW5nIGFuZCBiZWhhdmlvciBvZiB0aGVzZSBkaWZmZXJlbnQgdHlwZXMsIGFzIHdlbGwgYXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYXV0b21hdGljIGNvbnZlcnNpb24gb2YgY29tcGxleCB0eXBlcywgcmVmZXIgdG8ge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL2V4cHJlc3Npb25zL3R5cGUtY29uc3RyYWludHMgVHlwZSBDb25zdHJhaW50c30uXG4gICAqXG4gICAqIElmIGJvdGggdGhlIHR5cGUgYW5kIGRlZmF1bHQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBnaXZlbiBkZWZhdWx0IHZhbHVlIG11c3QgYmUgY29udmVydGlibGUgdG8gdGhlIHNwZWNpZmllZCB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICByZWFkb25seSBzZW5zaXRpdmU/OiBib29sZWFuO1xuXG4gIC8qXG4gICAqIFRoZSBudWxsYWJsZSBhcmd1bWVudCBpbiBhIHZhcmlhYmxlIGJsb2NrIGNvbnRyb2xzIHdoZXRoZXIgdGhlIG1vZHVsZSBjYWxsZXIgbWF5IGFzc2lnbiB0aGUgdmFsdWUgbnVsbCB0byB0aGUgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBudWxsYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYXJiaXRyYXJ5IGN1c3RvbSB2YWxpZGF0aW9uIHJ1bGVzIGZvciBhIHBhcnRpY3VsYXIgdmFyaWFibGUgdXNpbmcgYSB2YWxpZGF0aW9uIGJsb2NrIG5lc3RlZCB3aXRoaW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGUgYmxvY2tcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRpb24/OiBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWdbXTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1WYXJpYWJsZVxuICBleHRlbmRzIFRlcnJhZm9ybUVsZW1lbnRcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtQWRkcmVzc2FibGVcbntcbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHQ/OiBhbnk7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzZW5zaXRpdmU/OiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgbnVsbGFibGU/OiBib29sZWFuO1xuICBwcml2YXRlIF92YWxpZGF0aW9uPzogVGVycmFmb3JtVmFyaWFibGVWYWxpZGF0aW9uQ29uZmlnW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlnOiBUZXJyYWZvcm1WYXJpYWJsZUNvbmZpZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgXCJ2YXJcIik7XG5cbiAgICB0aGlzLmRlZmF1bHQgPSBjb25maWcuZGVmYXVsdDtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMudHlwZSA9IGNvbmZpZy50eXBlO1xuICAgIHRoaXMuc2Vuc2l0aXZlID0gY29uZmlnLnNlbnNpdGl2ZTtcbiAgICB0aGlzLm51bGxhYmxlID0gY29uZmlnLm51bGxhYmxlO1xuICAgIHRoaXMuX3ZhbGlkYXRpb24gPSBjb25maWcudmFsaWRhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RyaW5nVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcy5pbnRlcnBvbGF0aW9uKCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBudW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlcih0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpc3RWYWx1ZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdCh0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJvb2xlYW5WYWx1ZSgpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiBUb2tlbi5hc0FueSh0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb24oKTogVGVycmFmb3JtVmFyaWFibGVWYWxpZGF0aW9uQ29uZmlnW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uO1xuICB9XG5cbiAgcHVibGljIGFkZFZhbGlkYXRpb24odmFsaWRhdGlvbjogVGVycmFmb3JtVmFyaWFibGVWYWxpZGF0aW9uQ29uZmlnKSB7XG4gICAgaWYgKCF0aGlzLl92YWxpZGF0aW9uKSB7XG4gICAgICB0aGlzLl92YWxpZGF0aW9uID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsaWRhdGlvbi5wdXNoKHZhbGlkYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcnBvbGF0aW9uKCk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gcmVmKGB2YXIuJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YCwgdGhpcy5jZGt0ZlN0YWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBhdHRycyA9IHtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZGVmYXVsdCxcbiAgICAgICAgdHlwZTogXCJhbnlcIixcbiAgICAgIH0sXG5cbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMudHlwZSxcbiAgICAgICAgdHlwZTogXCJ0eXBlXCIsXG4gICAgICB9LFxuICAgICAgc2Vuc2l0aXZlOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLnNlbnNpdGl2ZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJib29sZWFuXCIsXG4gICAgICB9LFxuICAgICAgbnVsbGFibGU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMubnVsbGFibGUsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsaWRhdGlvbj8ubWFwKCh2YWxpZGF0aW9uKSA9PiAoe1xuICAgICAgICAgIGVycm9yX21lc3NhZ2U6IHZhbGlkYXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgICAgIGNvbmRpdGlvbjogdmFsaWRhdGlvbi5jb25kaXRpb24sXG4gICAgICAgIH0pKSxcbiAgICAgICAgaXNCbG9jazogdHJ1ZSxcbiAgICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwib2JqZWN0TGlzdFwiLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJzKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+ICEhdmFsdWU/LnZhbHVlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7XG4gICAgICBkZWZhdWx0OiB0aGlzLmRlZmF1bHQsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNlbnNpdGl2ZTogdGhpcy5zZW5zaXRpdmUsXG4gICAgICBudWxsYWJsZTogdGhpcy5udWxsYWJsZSxcbiAgICAgIHZhbGlkYXRpb246IHRoaXMudmFsaWRhdGlvbj8ubWFwKCh2YWxpZGF0aW9uKSA9PiAoe1xuICAgICAgICBlcnJvcl9tZXNzYWdlOiB2YWxpZGF0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgICAgY29uZGl0aW9uOiB2YWxpZGF0aW9uLmNvbmRpdGlvbixcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhcmlhYmxlOiB7XG4gICAgICAgIFt0aGlzLmZyaWVuZGx5VW5pcXVlSWRdOiBkZWVwTWVyZ2UoXG4gICAgICAgICAga2V5c1RvU25ha2VDYXNlKHRoaXMuc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKSksXG4gICAgICAgICAgdGhpcy5yYXdPdmVycmlkZXMsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGRlZXBNZXJnZShcbiAgICAgICAgICBrZXlzVG9TbmFrZUNhc2UodGhpcy5zeW50aGVzaXplQXR0cmlidXRlcygpKSxcbiAgICAgICAgICB0aGlzLnJhd092ZXJyaWRlcyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBhIHN0cmluZyB0b2tlbiByZWZlcmVuY2luZyB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZVxuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdWYWx1ZTtcbiAgfVxufVxuIl19
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXZhcmlhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlcnJhZm9ybS12YXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsMkRBQXVEO0FBQ3ZELGlDQUFvRDtBQUNwRCxxQ0FBaUM7QUFDakMsaURBQXFDO0FBS3JDLCtDQUErQztBQUMvQyxNQUFzQixZQUFZOztJQUN6QixNQUFNLENBQVUsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUNsQyxNQUFNLENBQVUsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUNsQyxNQUFNLENBQVUsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUM5QixNQUFNLENBQVUsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUU1QixNQUFNLENBQVUsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUM5QixNQUFNLENBQVUsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUM1QixNQUFNLENBQVUsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUU1QixNQUFNLENBQVUsV0FBVyxHQUFHLGNBQWMsQ0FBQztJQUM3QyxNQUFNLENBQVUsV0FBVyxHQUFHLGNBQWMsQ0FBQztJQUM3QyxNQUFNLENBQVUsU0FBUyxHQUFHLFlBQVksQ0FBQztJQUV6QyxNQUFNLENBQVUsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUMzQyxNQUFNLENBQVUsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUMzQyxNQUFNLENBQVUsUUFBUSxHQUFHLFdBQVcsQ0FBQztJQUV2QyxNQUFNLENBQVUsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUMzQyxNQUFNLENBQVUsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUMzQyxNQUFNLENBQVUsUUFBUSxHQUFHLFdBQVcsQ0FBQztJQUV2QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVk7UUFDN0IsT0FBTyxRQUFRLElBQUksR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDNUIsT0FB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LFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxhQUFhLEVBQUUsVUFBVSxDQUFDLFlBQVk7Z0JBQ3RDLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUzthQUNoQyxDQUFDLENBQUM7U0FDSixDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUEsZ0JBQVMsRUFDaEMsSUFBQSxzQkFBZSxFQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEVBQy9DLElBQUksQ0FBQyxZQUFZLENBQ2xCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUEsZ0JBQVMsRUFDaEMsSUFBQSxzQkFBZSxFQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQzVDLElBQUksQ0FBQyxZQUFZLENBQ2xCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOztBQTdJSCw4Q0E4SUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUVsZW1lbnQgfSBmcm9tIFwiLi90ZXJyYWZvcm0tZWxlbWVudFwiO1xuaW1wb3J0IHsga2V5c1RvU25ha2VDYXNlLCBkZWVwTWVyZ2UgfSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2Vuc1wiO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSBcIi4vdGZFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBJUmVzb2x2YWJsZSB9IGZyb20gXCIuL3Rva2Vucy9yZXNvbHZhYmxlXCI7XG5pbXBvcnQgeyBJVGVycmFmb3JtQWRkcmVzc2FibGUgfSBmcm9tIFwiLi90ZXJyYWZvcm0tYWRkcmVzc2FibGVcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVZhcmlhYmxlVmFsaWRhdGlvbkNvbmZpZyB9IGZyb20gXCIuL3RlcnJhZm9ybS1jb25kaXRpb25zXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmFyaWFibGVUeXBlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVFJJTkcgPSBcInN0cmluZ1wiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5VTUJFUiA9IFwibnVtYmVyXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQk9PTCA9IFwiYm9vbFwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFOWSA9IFwiYW55XCI7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSVNUID0gXCJsaXN0XCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFQID0gXCJtYXBcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVQgPSBcInNldFwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVF9TVFJJTkcgPSBcImxpc3Qoc3RyaW5nKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExJU1RfTlVNQkVSID0gXCJsaXN0KG51bWJlcilcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSVNUX0JPT0wgPSBcImxpc3QoYm9vbClcIjtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUF9TVFJJTkcgPSBcIm1hcChzdHJpbmcpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFQX05VTUJFUiA9IFwibWFwKG51bWJlcilcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVBfQk9PTCA9IFwibWFwKGJvb2wpXCI7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVRfU1RSSU5HID0gXCJzZXQoc3RyaW5nKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFVF9OVU1CRVIgPSBcInNldChudW1iZXIpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VUX0JPT0wgPSBcInNldChib29sKVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgbGlzdCh0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYGxpc3QoJHt0eXBlfSlgO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBtYXAodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBtYXAoJHt0eXBlfSlgO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXQodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBzZXQoJHt0eXBlfSlgO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0dXBsZSguLi5lbGVtZW50czogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gYHR1cGxlKCR7ZWxlbWVudHMuam9pbihcIiwgXCIpfSlgO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBvYmplY3QoYXR0cmlidXRlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiBgb2JqZWN0KHske09iamVjdC5rZXlzKGF0dHJpYnV0ZXMpXG4gICAgICAubWFwKChrKSA9PiBrICsgXCI9XCIgKyBhdHRyaWJ1dGVzW2tdKVxuICAgICAgLmpvaW4oXCIsIFwiKX19KWA7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1WYXJpYWJsZUNvbmZpZyB7XG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBhbnk7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBhcmd1bWVudCBpbiBhIHZhcmlhYmxlIGJsb2NrIGFsbG93cyB5b3UgdG8gcmVzdHJpY3QgdGhlIHR5cGUgb2YgdmFsdWUgdGhhdCB3aWxsIGJlIGFjY2VwdGVkIGFzIHRoZSB2YWx1ZSBmb3IgYSB2YXJpYWJsZS4gSWYgbm8gdHlwZSBjb25zdHJhaW50IGlzIHNldCB0aGVuIGEgdmFsdWUgb2YgYW55IHR5cGUgaXMgYWNjZXB0ZWQuXG4gICAqXG4gICAqIFdoaWxlIHR5cGUgY29uc3RyYWludHMgYXJlIG9wdGlvbmFsLCB3ZSByZWNvbW1lbmQgc3BlY2lmeWluZyB0aGVtOyB0aGV5IHNlcnZlIGFzIGVhc3kgcmVtaW5kZXJzIGZvciB1c2VycyBvZiB0aGUgbW9kdWxlLCBhbmQgYWxsb3cgVGVycmFmb3JtIHRvIHJldHVybiBhIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSBpZiB0aGUgd3JvbmcgdHlwZSBpcyB1c2VkLlxuICAgKlxuICAgKiBUeXBlIGNvbnN0cmFpbnRzIGFyZSBjcmVhdGVkIGZyb20gYSBtaXh0dXJlIG9mIHR5cGUga2V5d29yZHMgYW5kIHR5cGUgY29uc3RydWN0b3JzLiBUaGUgc3VwcG9ydGVkIHR5cGUga2V5d29yZHMgYXJlOlxuICAgKlxuICAgKiAtIHN0cmluZ1xuICAgKiAtIG51bWJlclxuICAgKiAtIGJvb2xcbiAgICpcbiAgICogVGhlIHR5cGUgY29uc3RydWN0b3JzIGFsbG93IHlvdSB0byBzcGVjaWZ5IGNvbXBsZXggdHlwZXMgc3VjaCBhcyBjb2xsZWN0aW9uczpcbiAgICpcbiAgICogLSBsaXN0KFxcPFRZUEVcXD4pXG4gICAqIC0gc2V0KFxcPFRZUEVcXD4pXG4gICAqIC0gbWFwKFxcPFRZUEVcXD4pXG4gICAqIC0gb2JqZWN0KHtcXDxBVFRSIE5BTUVcXD4gPSBcXDxUWVBFXFw+LCAuLi4gfSlcbiAgICogLSB0dXBsZShbXFw8VFlQRVxcPiwgLi4uXSlcbiAgICpcbiAgICogVGhlIGtleXdvcmQgYW55IG1heSBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgYW55IHR5cGUgaXMgYWNjZXB0YWJsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG1lYW5pbmcgYW5kIGJlaGF2aW9yIG9mIHRoZXNlIGRpZmZlcmVudCB0eXBlcywgYXMgd2VsbCBhcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhdXRvbWF0aWMgY29udmVyc2lvbiBvZiBjb21wbGV4IHR5cGVzLCByZWZlciB0byB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvdHlwZS1jb25zdHJhaW50cyBUeXBlIENvbnN0cmFpbnRzfS5cbiAgICpcbiAgICogSWYgYm90aCB0aGUgdHlwZSBhbmQgZGVmYXVsdCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGdpdmVuIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHNlbnNpdGl2ZT86IGJvb2xlYW47XG5cbiAgLypcbiAgICogVGhlIG51bGxhYmxlIGFyZ3VtZW50IGluIGEgdmFyaWFibGUgYmxvY2sgY29udHJvbHMgd2hldGhlciB0aGUgbW9kdWxlIGNhbGxlciBtYXkgYXNzaWduIHRoZSB2YWx1ZSBudWxsIHRvIHRoZSB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG51bGxhYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmeSBhcmJpdHJhcnkgY3VzdG9tIHZhbGlkYXRpb24gcnVsZXMgZm9yIGEgcGFydGljdWxhciB2YXJpYWJsZSB1c2luZyBhIHZhbGlkYXRpb24gYmxvY2sgbmVzdGVkIHdpdGhpbiB0aGUgY29ycmVzcG9uZGluZyB2YXJpYWJsZSBibG9ja1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvbj86IFRlcnJhZm9ybVZhcmlhYmxlVmFsaWRhdGlvbkNvbmZpZ1tdO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybVZhcmlhYmxlXG4gIGV4dGVuZHMgVGVycmFmb3JtRWxlbWVudFxuICBpbXBsZW1lbnRzIElUZXJyYWZvcm1BZGRyZXNzYWJsZVxue1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdD86IGFueTtcbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNlbnNpdGl2ZT86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBudWxsYWJsZT86IGJvb2xlYW47XG4gIHByaXZhdGUgX3ZhbGlkYXRpb24/OiBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWdbXTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6IFRlcnJhZm9ybVZhcmlhYmxlQ29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBcInZhclwiKTtcblxuICAgIHRoaXMuZGVmYXVsdCA9IGNvbmZpZy5kZWZhdWx0O1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy50eXBlID0gY29uZmlnLnR5cGU7XG4gICAgdGhpcy5zZW5zaXRpdmUgPSBjb25maWcuc2Vuc2l0aXZlO1xuICAgIHRoaXMubnVsbGFibGUgPSBjb25maWcubnVsbGFibGU7XG4gICAgdGhpcy5fdmFsaWRhdGlvbiA9IGNvbmZpZy52YWxpZGF0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJpbmdWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyh0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG51bWJlclZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKHRoaXMuaW50ZXJwb2xhdGlvbigpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGlzdFZhbHVlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gVG9rZW4uYXNMaXN0KHRoaXMuaW50ZXJwb2xhdGlvbigpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYm9vbGVhblZhbHVlKCk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIFRva2VuLmFzQW55KHRoaXMuaW50ZXJwb2xhdGlvbigpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsaWRhdGlvbigpOiBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb247XG4gIH1cblxuICBwdWJsaWMgYWRkVmFsaWRhdGlvbih2YWxpZGF0aW9uOiBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWcpIHtcbiAgICBpZiAoIXRoaXMuX3ZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb24gPSBbXTtcbiAgICB9XG5cbiAgICB0aGlzLl92YWxpZGF0aW9uLnB1c2godmFsaWRhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGludGVycG9sYXRpb24oKTogSVJlc29sdmFibGUge1xuICAgIHJldHVybiByZWYoYHZhci4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gLCB0aGlzLmNka3RmU3RhY2spO1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGNvbnN0IGF0dHJzID0ge1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB2YWx1ZTogdGhpcy5kZWZhdWx0LFxuICAgICAgICB0eXBlOiBcImFueVwiLFxuICAgICAgfSxcblxuICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgdHlwZToge1xuICAgICAgICB2YWx1ZTogdGhpcy50eXBlLFxuICAgICAgICB0eXBlOiBcInR5cGVcIixcbiAgICAgIH0sXG4gICAgICBzZW5zaXRpdmU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuc2Vuc2l0aXZlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcImJvb2xlYW5cIixcbiAgICAgIH0sXG4gICAgICBudWxsYWJsZToge1xuICAgICAgICB2YWx1ZTogdGhpcy5udWxsYWJsZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJib29sZWFuXCIsXG4gICAgICB9LFxuICAgICAgdmFsaWRhdGlvbjoge1xuICAgICAgICB2YWx1ZTogdGhpcy52YWxpZGF0aW9uPy5tYXAoKHZhbGlkYXRpb24pID0+ICh7XG4gICAgICAgICAgZXJyb3JfbWVzc2FnZTogdmFsaWRhdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgY29uZGl0aW9uOiB2YWxpZGF0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgfSkpLFxuICAgICAgICBpc0Jsb2NrOiB0cnVlLFxuICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJvYmplY3RMaXN0XCIsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMoYXR0cnMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gISF2YWx1ZT8udmFsdWUpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlZmF1bHQ6IHRoaXMuZGVmYXVsdCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgc2Vuc2l0aXZlOiB0aGlzLnNlbnNpdGl2ZSxcbiAgICAgIG51bGxhYmxlOiB0aGlzLm51bGxhYmxlLFxuICAgICAgdmFsaWRhdGlvbjogdGhpcy52YWxpZGF0aW9uPy5tYXAoKHZhbGlkYXRpb24pID0+ICh7XG4gICAgICAgIGVycm9yX21lc3NhZ2U6IHZhbGlkYXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgICBjb25kaXRpb246IHZhbGlkYXRpb24uY29uZGl0aW9uLFxuICAgICAgfSkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9IY2xUZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGRlZXBNZXJnZShcbiAgICAgICAgICBrZXlzVG9TbmFrZUNhc2UodGhpcy5zeW50aGVzaXplSGNsQXR0cmlidXRlcygpKSxcbiAgICAgICAgICB0aGlzLnJhd092ZXJyaWRlcyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB2YXJpYWJsZToge1xuICAgICAgICBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXTogZGVlcE1lcmdlKFxuICAgICAgICAgIGtleXNUb1NuYWtlQ2FzZSh0aGlzLnN5bnRoZXNpemVBdHRyaWJ1dGVzKCkpLFxuICAgICAgICAgIHRoaXMucmF3T3ZlcnJpZGVzLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGEgc3RyaW5nIHRva2VuIHJlZmVyZW5jaW5nIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlXG4gICAqL1xuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ1ZhbHVlO1xuICB9XG59XG4iXX0=
|
package/lib/testing/index.js
CHANGED
|
@@ -1,14 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
3
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
39
|
exports.Testing = void 0;
|
|
5
40
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
41
|
// Copyright (c) HashiCorp, Inc
|
|
7
42
|
// SPDX-License-Identifier: MPL-2.0
|
|
8
|
-
const fs = require("node:fs");
|
|
9
|
-
const path = require("node:path");
|
|
10
|
-
const os = require("node:os");
|
|
11
|
-
const safe_stable_stringify_1 = require("safe-stable-stringify");
|
|
43
|
+
const fs = __importStar(require("node:fs"));
|
|
44
|
+
const path = __importStar(require("node:path"));
|
|
45
|
+
const os = __importStar(require("node:os"));
|
|
46
|
+
const safe_stable_stringify_1 = __importDefault(require("safe-stable-stringify"));
|
|
12
47
|
const __1 = require("..");
|
|
13
48
|
const manifest_1 = require("../manifest");
|
|
14
49
|
const features_1 = require("../features");
|
|
@@ -25,6 +60,7 @@ const DefaultTestingAppConfig = {
|
|
|
25
60
|
* Testing utilities for cdktf applications.
|
|
26
61
|
*/
|
|
27
62
|
class Testing {
|
|
63
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.Testing", version: "0.25.0-pre.21" };
|
|
28
64
|
/**
|
|
29
65
|
* Returns an app for testing with the following properties:
|
|
30
66
|
* - Output directory is a temp dir.
|
|
@@ -181,6 +217,4 @@ class Testing {
|
|
|
181
217
|
}
|
|
182
218
|
}
|
|
183
219
|
exports.Testing = Testing;
|
|
184
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
185
|
-
Testing[_a] = { fqn: "cdktn.Testing", version: "0.25.0-pre.2" };
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFFbkMsOEJBQThCO0FBQzlCLGtDQUFrQztBQUNsQyw4QkFBOEI7QUFFOUIsaUVBQThDO0FBQzlDLDBCQUF5QztBQUN6QywwQ0FBdUM7QUFDdkMsMENBQTJDO0FBRTNDLDBDQUE0QztBQUM1QywyREFBMEQ7QUFDMUQseUNBS29CO0FBZXBCLE1BQU0sdUJBQXVCLEdBQXFCO0lBQ2hELFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsaUJBQWlCLEVBQUUsS0FBSztDQUN6QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFDbEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUE0QixFQUFFO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEVBQUUsR0FBRyx1QkFBdUIsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FDeEMsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQUcsQ0FBQztZQUNsQixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07WUFDeEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1lBQ2xDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBUTtRQUNoQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFrQixHQUFHLFNBQVMsQ0FBQztRQUM3QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBUTtRQUN0QyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFRO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FDNUIsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBa0I7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxrQkFBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDVixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFxQixFQUFFLGNBQWMsR0FBRyxLQUFLO1FBQy9ELElBQUEsMkJBQWEsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLG1FQUFtRTtZQUNuRSwrREFBK0Q7WUFDL0QscUVBQXFFO1lBQ3JFLG1FQUFtRTtZQUNuRSxvRUFBb0U7WUFDcEUsbUVBQW1FO1lBQ25FLG1FQUFtRTtZQUNuRSxzRUFBc0U7WUFDdEUsMEVBQTBFO1lBQzFFLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzdCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFckMsK0NBQStDO1FBQy9DLFNBQVMsY0FBYyxDQUFDLElBQVM7WUFDL0IsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2dCQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUN0Qyx1QkFBdUI7cUJBQ3RCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDdEMsTUFBTSxDQUNMLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUNqRSxFQUFFLENBQ0gsQ0FBQztnQkFFSixrQkFBa0I7Z0JBQ2xCLE9BQVEsV0FBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsT0FBTyxXQUFXLENBQUM7WUFDckIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUEsK0JBQVMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBVyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQ3BCLEtBQXFCLEVBQ3JCLGNBQWMsR0FBRyxLQUFLLEVBQ3RCLGNBQWMsR0FBRyxLQUFLO1FBRXRCLElBQUEsMkJBQWEsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLHNFQUFzRTtZQUN0RSxzRUFBc0U7WUFDdEUsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDN0IsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QyxJQUFJLGNBQWM7WUFBRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFFM0MsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQXFCO1FBQzNDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUV2RSxNQUFNLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4RCxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUMzQixNQUFNO1lBQ04sUUFBUTtTQUNULENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQXFCO1FBQ3JELE9BQU8sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbkMsK0NBQStDO1FBQy9DLFNBQVMsTUFBTSxDQUNiLFNBQXFCLEVBQ3JCLEtBQWEsRUFDYixNQUFlO1lBRWYsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2xDLE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQztZQUNuQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsT0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxLQUFLO2dCQUNQLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDM0QsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRO2lCQUNoRCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUN2QixNQUFNLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQztpQkFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyw4QkFBOEIsQ0FDMUMsUUFBZ0IsRUFDaEIsWUFBb0IsRUFDcEIsYUFBa0MsRUFBRTtRQUVwQyxPQUFPLElBQUEsNENBQWlDLEdBQUUsQ0FDeEMsUUFBUSxFQUNSLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxFQUNoQyxVQUFVLENBQ1gsQ0FBQyxJQUFJLENBQUM7SUFDVCxDQUFDO0lBRU0sTUFBTSxDQUFDLGdCQUFnQixDQUM1QixRQUFnQixFQUNoQixZQUFvQjtRQUVwQixPQUFPLElBQUEsNENBQWlDLEdBQUUsQ0FDeEMsUUFBUSxFQUNSLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxFQUNoQyxFQUFFLENBQ0gsQ0FBQyxJQUFJLENBQUM7SUFDVCxDQUFDO0lBRU0sTUFBTSxDQUFDLDRCQUE0QixDQUN4QyxRQUFnQixFQUNoQixZQUFvQixFQUNwQixhQUFrQyxFQUFFO1FBRXBDLE9BQU8sSUFBQSwwQ0FBK0IsR0FBRSxDQUN0QyxRQUFRLEVBQ1IsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEVBQ2hDLFVBQVUsQ0FDWCxDQUFDLElBQUksQ0FBQztJQUNULENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUMxQixRQUFnQixFQUNoQixZQUFvQjtRQUVwQixPQUFPLElBQUEsMENBQStCLEdBQUUsQ0FDdEMsUUFBUSxFQUNSLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxFQUNoQyxFQUFFLENBQ0gsQ0FBQyxJQUFJLENBQUM7SUFDVCxDQUFDO0lBRU0sTUFBTSxDQUFDLDRCQUE0QixDQUN4QyxRQUFnQixFQUNoQixZQUFvQixFQUNwQixhQUFrQyxFQUFFO1FBRXBDLE9BQU8sSUFBQSwwQ0FBK0IsR0FBRSxDQUN0QyxRQUFRLEVBQ1IsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEVBQ2hDLFVBQVUsQ0FDWCxDQUFDLElBQUksQ0FBQztJQUNULENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUMxQixRQUFnQixFQUNoQixZQUFvQjtRQUVwQixPQUFPLElBQUEsMENBQStCLEdBQUUsQ0FDdEMsUUFBUSxFQUNSLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxFQUNoQyxFQUFFLENBQ0gsQ0FBQyxJQUFJLENBQUM7SUFDVCxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLFFBQWdCO1FBQy9DLE9BQU8sSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTO1FBQ3JCLElBQUEsZ0JBQVMsR0FBRSxDQUFDO0lBQ2QsQ0FBQzs7QUF0UEgsMEJBdVBDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm5vZGU6b3NcIjtcblxuaW1wb3J0IHN0cmluZ2lmeSBmcm9tIFwic2FmZS1zdGFibGUtc3RyaW5naWZ5XCI7XG5pbXBvcnQgeyBBcHAsIFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gXCIuLi9tYW5pZmVzdFwiO1xuaW1wb3J0IHsgRlVUVVJFX0ZMQUdTIH0gZnJvbSBcIi4uL2ZlYXR1cmVzXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0LCBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgc2V0dXBKZXN0IH0gZnJvbSBcIi4vYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgaW52b2tlQXNwZWN0cyB9IGZyb20gXCIuLi9zeW50aGVzaXplL3N5bnRoZXNpemVyXCI7XG5pbXBvcnQge1xuICBnZXRUb0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzLFxuICBnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMsXG4gIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMsXG4gIHRvQmVWYWxpZFRlcnJhZm9ybSxcbn0gZnJvbSBcIi4vbWF0Y2hlcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJU2NvcGVDYWxsYmFjayB7XG4gIChzY29wZTogQ29uc3RydWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0aW5nQXBwQ29uZmlnIHtcbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xuICByZWFkb25seSBzdGFja1RyYWNlcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHN0dWJWZXJzaW9uPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW5hYmxlRnV0dXJlRmxhZ3M/OiBib29sZWFuO1xuICByZWFkb25seSBmYWtlQ2RrdGZKc29uUGF0aD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5jb25zdCBEZWZhdWx0VGVzdGluZ0FwcENvbmZpZzogVGVzdGluZ0FwcENvbmZpZyA9IHtcbiAgc3RhY2tUcmFjZXM6IGZhbHNlLFxuICBzdHViVmVyc2lvbjogdHJ1ZSxcbiAgZW5hYmxlRnV0dXJlRmxhZ3M6IHRydWUsXG4gIGZha2VDZGt0Zkpzb25QYXRoOiBmYWxzZSxcbn07XG5cbi8qKlxuICogVGVzdGluZyB1dGlsaXRpZXMgZm9yIGNka3RmIGFwcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlc3Rpbmcge1xuICAvKipcbiAgICogUmV0dXJucyBhbiBhcHAgZm9yIHRlc3Rpbmcgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqIC0gT3V0cHV0IGRpcmVjdG9yeSBpcyBhIHRlbXAgZGlyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcHAob3B0aW9uczogVGVzdGluZ0FwcENvbmZpZyA9IHt9KTogQXBwIHtcbiAgICBjb25zdCBhcHBDb25maWcgPSB7IC4uLkRlZmF1bHRUZXN0aW5nQXBwQ29uZmlnLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKCFhcHBDb25maWcub3V0ZGlyKSB7XG4gICAgICBhcHBDb25maWcub3V0ZGlyID0gZnMubWtkdGVtcFN5bmMoXG4gICAgICAgIHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJjZGt0Zi5vdXRkaXIuXCIpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBhcHAgPSBuZXcgQXBwKHtcbiAgICAgIG91dGRpcjogYXBwQ29uZmlnLm91dGRpcixcbiAgICAgIHN0YWNrVHJhY2VzOiBhcHBDb25maWcuc3RhY2tUcmFjZXMsXG4gICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgfSk7XG5cbiAgICBpZiAoYXBwQ29uZmlnLnN0dWJWZXJzaW9uKSB7XG4gICAgICB0aGlzLnN0dWJWZXJzaW9uKGFwcCk7XG4gICAgfVxuICAgIGlmIChhcHBDb25maWcuZW5hYmxlRnV0dXJlRmxhZ3MpIHtcbiAgICAgIHRoaXMuZW5hYmxlRnV0dXJlRmxhZ3MoYXBwKTtcbiAgICB9XG4gICAgaWYgKGFwcENvbmZpZy5mYWtlQ2RrdGZKc29uUGF0aCkge1xuICAgICAgdGhpcy5mYWtlQ2RrdGZKc29uUGF0aChhcHApO1xuICAgIH1cblxuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN0dWJWZXJzaW9uKGFwcDogQXBwKTogQXBwIHtcbiAgICBhcHAubm9kZS5zZXRDb250ZXh0KFwiY2RrdGZWZXJzaW9uXCIsIFwic3R1YmJlZFwiKTtcbiAgICAoYXBwLm1hbmlmZXN0LnZlcnNpb24gYXMgc3RyaW5nKSA9IFwic3R1YmJlZFwiO1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZha2VDZGt0Zkpzb25QYXRoKGFwcDogQXBwKTogQXBwIHtcbiAgICBhcHAubm9kZS5zZXRDb250ZXh0KFwiY2RrdGZKc29uUGF0aFwiLCBgJHtwcm9jZXNzLmN3ZCgpfS9jZGt0Zi5qc29uYCk7XG4gICAgYXBwLm5vZGUuc2V0Q29udGV4dChcImNka3RmUmVsYXRpdmVNb2R1bGVzXCIsIFtcIi4vdGVzdC9maXh0dXJlcy9cIl0pO1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVuYWJsZUZ1dHVyZUZsYWdzKGFwcDogQXBwKTogQXBwIHtcbiAgICBjb25zdCBub2RlID0gYXBwLm5vZGU7XG4gICAgT2JqZWN0LmVudHJpZXMoRlVUVVJFX0ZMQUdTKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+XG4gICAgICBub2RlLnNldENvbnRleHQoa2V5LCB2YWx1ZSksXG4gICAgKTtcbiAgICByZXR1cm4gYXBwO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzeW50aFNjb3BlKGZuOiBJU2NvcGVDYWxsYmFjaykge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFRlcnJhZm9ybVN0YWNrKFRlc3RpbmcuYXBwKCksIFwic3RhY2tcIik7XG4gICAgZm4oc3RhY2spO1xuICAgIHJldHVybiBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBUZXJyYWZvcm0gc3ludGhlc2l6ZWQgSlNPTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3ludGgoc3RhY2s6IFRlcnJhZm9ybVN0YWNrLCBydW5WYWxpZGF0aW9ucyA9IGZhbHNlKSB7XG4gICAgaW52b2tlQXNwZWN0cyhzdGFjayk7XG4gICAgaWYgKHJ1blZhbGlkYXRpb25zKSB7XG4gICAgICAvLyBEZWxpYmVyYXRlbHkgbm90IHRoZSBmdWxsIGBwcmVwYXJlU3RhY2soKWAgLSB0aGF0IGFsc28gaW5qZWN0cyBhXG4gICAgICAvLyBsb2NhbCBiYWNrZW5kIHZpYSBgZW5zdXJlQmFja2VuZEV4aXN0cygpYCwgd2hpY2ggd291bGQgYWRkIGFcbiAgICAgIC8vIGJhY2tlbmQgYmxvY2sgdG8gZXZlcnkgZXhpc3Rpbmcgc25hcHNob3QgdGhhdCBuZXZlciBhc2tlZCBmb3Igb25lLlxuICAgICAgLy8gT25seSBydW4gdGhlIHJlc29sdmUvcmVzZXQgaGFsZiB0aGF0IChyZS0pZGlzY292ZXJzIGN1cnJlbnQtcGFzc1xuICAgICAgLy8gcHJvdmlkZXItZmVhdHVyZSBhbmQgVGVycmFmb3JtLWZ1bmN0aW9uIHVzYWdlLCBzbyB0aGUgdmFsaWRhdGlvbnNcbiAgICAgIC8vIGJlbG93IHNlZSB3aGF0IHRoaXMgcGFzcyBhY3R1YWxseSByZW5kZXJzIGluc3RlYWQgb2Ygc3RhbGUgdXNhZ2VcbiAgICAgIC8vIChvciBub25lIGF0IGFsbCkgbGVmdCBvdmVyIGZyb20gYSBwcmV2aW91cyBjYWxsIGFnYWluc3QgdGhlIHNhbWVcbiAgICAgIC8vIHN0YWNrLiBgX3J1blByZXBhcmluZ1Jlc29sdmVgIGNsZWFycyB0aGUgc3RhY2sncyBvd24gZnVuY3Rpb24tdXNhZ2VcbiAgICAgIC8vIHNldHMgaXRzZWxmIGJlZm9yZSByZWRpc2NvdmVyaW5nIC0gc2VlIGBUZXJyYWZvcm1TdGFjay5fdXNlZEZ1bmN0aW9uc2AuXG4gICAgICBzdGFjay5fcnVuUHJlcGFyaW5nUmVzb2x2ZSgpO1xuICAgICAgc3RhY2sucnVuQWxsVmFsaWRhdGlvbnMoKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZkNvbmZpZyA9IHN0YWNrLnRvVGVycmFmb3JtKCk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZ1bmN0aW9uIHJlbW92ZU1ldGFkYXRhKGl0ZW06IGFueSk6IGFueSB7XG4gICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgICAgICAgIHJldHVybiBpdGVtLm1hcChyZW1vdmVNZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGVhbmVkSXRlbSA9IE9iamVjdC5lbnRyaWVzKGl0ZW0pXG4gICAgICAgICAgLy8gb3JkZXIgYWxwaGFiZXRpY2FsbHlcbiAgICAgICAgICAuc29ydCgoW2FdLCBbYl0pID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoeyAuLi5hY2MsIFtrZXldOiByZW1vdmVNZXRhZGF0YSh2YWx1ZSkgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlbW92ZSBtZXRhZGF0YVxuICAgICAgICBkZWxldGUgKGNsZWFuZWRJdGVtIGFzIGFueSlbXCIvL1wiXTtcbiAgICAgICAgcmV0dXJuIGNsZWFuZWRJdGVtO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgY29uc3QgY2xlYW5lZCA9IHJlbW92ZU1ldGFkYXRhKHRmQ29uZmlnKTtcblxuICAgIHJldHVybiBzdHJpbmdpZnkoY2xlYW5lZCwgbnVsbCwgMikgYXMgc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIFRlcnJhZm9ybSBzeW50aGVzaXplZCBKU09OLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzeW50aEhjbChcbiAgICBzdGFjazogVGVycmFmb3JtU3RhY2ssXG4gICAgcnVuVmFsaWRhdGlvbnMgPSBmYWxzZSxcbiAgICByZXR1cm5NZXRhZGF0YSA9IGZhbHNlLFxuICApIHtcbiAgICBpbnZva2VBc3BlY3RzKHN0YWNrKTtcbiAgICBpZiAocnVuVmFsaWRhdGlvbnMpIHtcbiAgICAgIC8vIFNlZSB0aGUgbWF0Y2hpbmcgY29tbWVudCBpbiBUZXN0aW5nLnN5bnRoKCk6IG9ubHkgdGhlIHJlc29sdmUvcmVzZXRcbiAgICAgIC8vIGRpc2NvdmVyeSBoYWxmIG9mIHByZXBhcmVTdGFjaygpLCBuZXZlciB0aGUgYmFja2VuZC1pbmplY3RpbmcgaGFsZi5cbiAgICAgIHN0YWNrLl9ydW5QcmVwYXJpbmdSZXNvbHZlKCk7XG4gICAgICBzdGFjay5ydW5BbGxWYWxpZGF0aW9ucygpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHN0YWNrLnRvSGNsVGVycmFmb3JtKCk7XG5cbiAgICBpZiAocmV0dXJuTWV0YWRhdGEpIHJldHVybiBjb25maWcubWV0YWRhdGE7XG5cbiAgICByZXR1cm4gY29uZmlnLmhjbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZnVsbFN5bnRoKHN0YWNrOiBUZXJyYWZvcm1TdGFjayk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3V0ZGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCBcImNka3RmLm91dGRpci5cIikpO1xuXG4gICAgY29uc3QgbWFuaWZlc3QgPSBuZXcgTWFuaWZlc3QoXCJzdHViYmVkXCIsIG91dGRpciwgZmFsc2UpO1xuXG4gICAgc3RhY2suc3ludGhlc2l6ZXIuc3ludGhlc2l6ZSh7XG4gICAgICBvdXRkaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIG1hbmlmZXN0LndyaXRlVG9GaWxlKCk7XG5cbiAgICByZXR1cm4gb3V0ZGlyO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyByZW5kZXJDb25zdHJ1Y3RUcmVlKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlbmRlcihjb25zdHJ1Y3QsIDAsIGZhbHNlKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZnVuY3Rpb24gcmVuZGVyKFxuICAgICAgY29uc3RydWN0OiBJQ29uc3RydWN0LFxuICAgICAgbGV2ZWw6IG51bWJlcixcbiAgICAgIGlzTGFzdDogYm9vbGVhbixcbiAgICApOiBzdHJpbmcge1xuICAgICAgbGV0IHByZWZpeCA9IFwiXCI7XG4gICAgICBpZiAobGV2ZWwgPiAwKSB7XG4gICAgICAgIGNvbnN0IHNwYWNlcyA9IFwiIFwiLnJlcGVhdCgobGV2ZWwgLSAxKSAqIDQpO1xuICAgICAgICBjb25zdCBzeW1ib2wgPSBpc0xhc3QgPyBcIuKUlFwiIDogXCLilJxcIjtcbiAgICAgICAgcHJlZml4ID0gYCR7c3BhY2VzfSR7c3ltYm9sfeKUgOKUgCBgO1xuICAgICAgfVxuICAgICAgY29uc3QgbmFtZSA9IEFwcC5pc0FwcChjb25zdHJ1Y3QpXG4gICAgICAgID8gXCJBcHBcIlxuICAgICAgICA6IGAke2NvbnN0cnVjdC5ub2RlLmlkfSAoJHtjb25zdHJ1Y3QuY29uc3RydWN0b3IubmFtZX0pYDtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtuYW1lfVxcbiR7Y29uc3RydWN0Lm5vZGUuY2hpbGRyZW5cbiAgICAgICAgLm1hcCgoY2hpbGQsIGlkeCwgYXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNMYXN0ID0gaWR4ID09PSBhcnIubGVuZ3RoIC0gMTtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyKGNoaWxkLCBsZXZlbCArIDEsIGlzTGFzdCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpfWA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlRGF0YVNvdXJjZShcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKCkoXG4gICAgICByZWNlaXZlZCxcbiAgICAgIHsgdGZSZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSB9LFxuICAgICAge30sXG4gICAgKS5wYXNzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBzdHJpbmcsXG4gICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcygpKFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICB7IHRmUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUgfSxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgKS5wYXNzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVSZXNvdXJjZShcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcygpKFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICB7IHRmUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUgfSxcbiAgICAgIHt9LFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyhcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUHJvdmlkZXIoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICB7fSxcbiAgICApLnBhc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZCkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0dXBKZXN0KCkge1xuICAgIHNldHVwSmVzdCgpO1xuICB9XG59XG4iXX0=
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUVuQyw0Q0FBOEI7QUFDOUIsZ0RBQWtDO0FBQ2xDLDRDQUE4QjtBQUU5QixrRkFBOEM7QUFDOUMsMEJBQXlDO0FBQ3pDLDBDQUF1QztBQUN2QywwQ0FBMkM7QUFFM0MsMENBQTRDO0FBQzVDLDJEQUEwRDtBQUMxRCx5Q0FLb0I7QUFlcEIsTUFBTSx1QkFBdUIsR0FBcUI7SUFDaEQsV0FBVyxFQUFFLEtBQUs7SUFDbEIsV0FBVyxFQUFFLElBQUk7SUFDakIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixpQkFBaUIsRUFBRSxLQUFLO0NBQ3pCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQWEsT0FBTzs7SUFDbEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUE0QixFQUFFO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEVBQUUsR0FBRyx1QkFBdUIsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FDeEMsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQUcsQ0FBQztZQUNsQixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07WUFDeEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1lBQ2xDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLFNBQVMsQ0FBQyxXQUFX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QUFFLFlBQVksRUFBRSxFQUNoQyxFQUFFLENBQ0gsQ0FBQyxJQUFJLENBQUM7SUFDVCxDQUFDO0lBRU0sTUFBTSxDQUFDLDRCQUE0QixDQUN4QyxRQUFnQixFQUNoQixZQUFvQixFQUNwQixhQUFrQyxFQUFFO1FBRXBDLE9BQU8sSUFBQSwwQ0FBK0IsR0FBRSxDQUN0QyxRQUFRLEVBQ1IsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEVBQ2hDLFVBQVUsQ0FDWCxDQUFDLElBQUksQ0FBQztJQUNULENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUMxQixRQUFnQixFQUNoQixZQUFvQjtRQUVwQixPQUFPLElBQUEsMENBQStCLEdBQUUsQ0FDdEMsUUFBUSxFQUNSLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxFQUNoQyxFQUFFLENBQ0gsQ0FBQyxJQUFJLENBQUM7SUFDVCxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLFFBQWdCO1FBQy9DLE9BQU8sSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTO1FBQ3JCLElBQUEsZ0JBQVMsR0FBRSxDQUFDO0lBQ2QsQ0FBQzs7QUF0UEgsMEJBdVBDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm5vZGU6b3NcIjtcblxuaW1wb3J0IHN0cmluZ2lmeSBmcm9tIFwic2FmZS1zdGFibGUtc3RyaW5naWZ5XCI7XG5pbXBvcnQgeyBBcHAsIFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gXCIuLi9tYW5pZmVzdFwiO1xuaW1wb3J0IHsgRlVUVVJFX0ZMQUdTIH0gZnJvbSBcIi4uL2ZlYXR1cmVzXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0LCBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgc2V0dXBKZXN0IH0gZnJvbSBcIi4vYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgaW52b2tlQXNwZWN0cyB9IGZyb20gXCIuLi9zeW50aGVzaXplL3N5bnRoZXNpemVyXCI7XG5pbXBvcnQge1xuICBnZXRUb0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzLFxuICBnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMsXG4gIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMsXG4gIHRvQmVWYWxpZFRlcnJhZm9ybSxcbn0gZnJvbSBcIi4vbWF0Y2hlcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJU2NvcGVDYWxsYmFjayB7XG4gIChzY29wZTogQ29uc3RydWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0aW5nQXBwQ29uZmlnIHtcbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xuICByZWFkb25seSBzdGFja1RyYWNlcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHN0dWJWZXJzaW9uPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW5hYmxlRnV0dXJlRmxhZ3M/OiBib29sZWFuO1xuICByZWFkb25seSBmYWtlQ2RrdGZKc29uUGF0aD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5jb25zdCBEZWZhdWx0VGVzdGluZ0FwcENvbmZpZzogVGVzdGluZ0FwcENvbmZpZyA9IHtcbiAgc3RhY2tUcmFjZXM6IGZhbHNlLFxuICBzdHViVmVyc2lvbjogdHJ1ZSxcbiAgZW5hYmxlRnV0dXJlRmxhZ3M6IHRydWUsXG4gIGZha2VDZGt0Zkpzb25QYXRoOiBmYWxzZSxcbn07XG5cbi8qKlxuICogVGVzdGluZyB1dGlsaXRpZXMgZm9yIGNka3RmIGFwcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlc3Rpbmcge1xuICAvKipcbiAgICogUmV0dXJucyBhbiBhcHAgZm9yIHRlc3Rpbmcgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqIC0gT3V0cHV0IGRpcmVjdG9yeSBpcyBhIHRlbXAgZGlyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcHAob3B0aW9uczogVGVzdGluZ0FwcENvbmZpZyA9IHt9KTogQXBwIHtcbiAgICBjb25zdCBhcHBDb25maWcgPSB7IC4uLkRlZmF1bHRUZXN0aW5nQXBwQ29uZmlnLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKCFhcHBDb25maWcub3V0ZGlyKSB7XG4gICAgICBhcHBDb25maWcub3V0ZGlyID0gZnMubWtkdGVtcFN5bmMoXG4gICAgICAgIHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJjZGt0Zi5vdXRkaXIuXCIpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBhcHAgPSBuZXcgQXBwKHtcbiAgICAgIG91dGRpcjogYXBwQ29uZmlnLm91dGRpcixcbiAgICAgIHN0YWNrVHJhY2VzOiBhcHBDb25maWcuc3RhY2tUcmFjZXMsXG4gICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgfSk7XG5cbiAgICBpZiAoYXBwQ29uZmlnLnN0dWJWZXJzaW9uKSB7XG4gICAgICB0aGlzLnN0dWJWZXJzaW9uKGFwcCk7XG4gICAgfVxuICAgIGlmIChhcHBDb25maWcuZW5hYmxlRnV0dXJlRmxhZ3MpIHtcbiAgICAgIHRoaXMuZW5hYmxlRnV0dXJlRmxhZ3MoYXBwKTtcbiAgICB9XG4gICAgaWYgKGFwcENvbmZpZy5mYWtlQ2RrdGZKc29uUGF0aCkge1xuICAgICAgdGhpcy5mYWtlQ2RrdGZKc29uUGF0aChhcHApO1xuICAgIH1cblxuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN0dWJWZXJzaW9uKGFwcDogQXBwKTogQXBwIHtcbiAgICBhcHAubm9kZS5zZXRDb250ZXh0KFwiY2RrdGZWZXJzaW9uXCIsIFwic3R1YmJlZFwiKTtcbiAgICAoYXBwLm1hbmlmZXN0LnZlcnNpb24gYXMgc3RyaW5nKSA9IFwic3R1YmJlZFwiO1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZha2VDZGt0Zkpzb25QYXRoKGFwcDogQXBwKTogQXBwIHtcbiAgICBhcHAubm9kZS5zZXRDb250ZXh0KFwiY2RrdGZKc29uUGF0aFwiLCBgJHtwcm9jZXNzLmN3ZCgpfS9jZGt0Zi5qc29uYCk7XG4gICAgYXBwLm5vZGUuc2V0Q29udGV4dChcImNka3RmUmVsYXRpdmVNb2R1bGVzXCIsIFtcIi4vdGVzdC9maXh0dXJlcy9cIl0pO1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVuYWJsZUZ1dHVyZUZsYWdzKGFwcDogQXBwKTogQXBwIHtcbiAgICBjb25zdCBub2RlID0gYXBwLm5vZGU7XG4gICAgT2JqZWN0LmVudHJpZXMoRlVUVVJFX0ZMQUdTKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+XG4gICAgICBub2RlLnNldENvbnRleHQoa2V5LCB2YWx1ZSksXG4gICAgKTtcbiAgICByZXR1cm4gYXBwO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzeW50aFNjb3BlKGZuOiBJU2NvcGVDYWxsYmFjaykge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFRlcnJhZm9ybVN0YWNrKFRlc3RpbmcuYXBwKCksIFwic3RhY2tcIik7XG4gICAgZm4oc3RhY2spO1xuICAgIHJldHVybiBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBUZXJyYWZvcm0gc3ludGhlc2l6ZWQgSlNPTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3ludGgoc3RhY2s6IFRlcnJhZm9ybVN0YWNrLCBydW5WYWxpZGF0aW9ucyA9IGZhbHNlKSB7XG4gICAgaW52b2tlQXNwZWN0cyhzdGFjayk7XG4gICAgaWYgKHJ1blZhbGlkYXRpb25zKSB7XG4gICAgICAvLyBEZWxpYmVyYXRlbHkgbm90IHRoZSBmdWxsIGBwcmVwYXJlU3RhY2soKWAgLSB0aGF0IGFsc28gaW5qZWN0cyBhXG4gICAgICAvLyBsb2NhbCBiYWNrZW5kIHZpYSBgZW5zdXJlQmFja2VuZEV4aXN0cygpYCwgd2hpY2ggd291bGQgYWRkIGFcbiAgICAgIC8vIGJhY2tlbmQgYmxvY2sgdG8gZXZlcnkgZXhpc3Rpbmcgc25hcHNob3QgdGhhdCBuZXZlciBhc2tlZCBmb3Igb25lLlxuICAgICAgLy8gT25seSBydW4gdGhlIHJlc29sdmUvcmVzZXQgaGFsZiB0aGF0IChyZS0pZGlzY292ZXJzIGN1cnJlbnQtcGFzc1xuICAgICAgLy8gcHJvdmlkZXItZmVhdHVyZSBhbmQgVGVycmFmb3JtLWZ1bmN0aW9uIHVzYWdlLCBzbyB0aGUgdmFsaWRhdGlvbnNcbiAgICAgIC8vIGJlbG93IHNlZSB3aGF0IHRoaXMgcGFzcyBhY3R1YWxseSByZW5kZXJzIGluc3RlYWQgb2Ygc3RhbGUgdXNhZ2VcbiAgICAgIC8vIChvciBub25lIGF0IGFsbCkgbGVmdCBvdmVyIGZyb20gYSBwcmV2aW91cyBjYWxsIGFnYWluc3QgdGhlIHNhbWVcbiAgICAgIC8vIHN0YWNrLiBgX3J1blByZXBhcmluZ1Jlc29sdmVgIGNsZWFycyB0aGUgc3RhY2sncyBvd24gZnVuY3Rpb24tdXNhZ2VcbiAgICAgIC8vIHNldHMgaXRzZWxmIGJlZm9yZSByZWRpc2NvdmVyaW5nIC0gc2VlIGBUZXJyYWZvcm1TdGFjay5fdXNlZEZ1bmN0aW9uc2AuXG4gICAgICBzdGFjay5fcnVuUHJlcGFyaW5nUmVzb2x2ZSgpO1xuICAgICAgc3RhY2sucnVuQWxsVmFsaWRhdGlvbnMoKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZkNvbmZpZyA9IHN0YWNrLnRvVGVycmFmb3JtKCk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZ1bmN0aW9uIHJlbW92ZU1ldGFkYXRhKGl0ZW06IGFueSk6IGFueSB7XG4gICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgICAgICAgIHJldHVybiBpdGVtLm1hcChyZW1vdmVNZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGVhbmVkSXRlbSA9IE9iamVjdC5lbnRyaWVzKGl0ZW0pXG4gICAgICAgICAgLy8gb3JkZXIgYWxwaGFiZXRpY2FsbHlcbiAgICAgICAgICAuc29ydCgoW2FdLCBbYl0pID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoeyAuLi5hY2MsIFtrZXldOiByZW1vdmVNZXRhZGF0YSh2YWx1ZSkgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlbW92ZSBtZXRhZGF0YVxuICAgICAgICBkZWxldGUgKGNsZWFuZWRJdGVtIGFzIGFueSlbXCIvL1wiXTtcbiAgICAgICAgcmV0dXJuIGNsZWFuZWRJdGVtO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgY29uc3QgY2xlYW5lZCA9IHJlbW92ZU1ldGFkYXRhKHRmQ29uZmlnKTtcblxuICAgIHJldHVybiBzdHJpbmdpZnkoY2xlYW5lZCwgbnVsbCwgMikgYXMgc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIFRlcnJhZm9ybSBzeW50aGVzaXplZCBKU09OLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzeW50aEhjbChcbiAgICBzdGFjazogVGVycmFmb3JtU3RhY2ssXG4gICAgcnVuVmFsaWRhdGlvbnMgPSBmYWxzZSxcbiAgICByZXR1cm5NZXRhZGF0YSA9IGZhbHNlLFxuICApIHtcbiAgICBpbnZva2VBc3BlY3RzKHN0YWNrKTtcbiAgICBpZiAocnVuVmFsaWRhdGlvbnMpIHtcbiAgICAgIC8vIFNlZSB0aGUgbWF0Y2hpbmcgY29tbWVudCBpbiBUZXN0aW5nLnN5bnRoKCk6IG9ubHkgdGhlIHJlc29sdmUvcmVzZXRcbiAgICAgIC8vIGRpc2NvdmVyeSBoYWxmIG9mIHByZXBhcmVTdGFjaygpLCBuZXZlciB0aGUgYmFja2VuZC1pbmplY3RpbmcgaGFsZi5cbiAgICAgIHN0YWNrLl9ydW5QcmVwYXJpbmdSZXNvbHZlKCk7XG4gICAgICBzdGFjay5ydW5BbGxWYWxpZGF0aW9ucygpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHN0YWNrLnRvSGNsVGVycmFmb3JtKCk7XG5cbiAgICBpZiAocmV0dXJuTWV0YWRhdGEpIHJldHVybiBjb25maWcubWV0YWRhdGE7XG5cbiAgICByZXR1cm4gY29uZmlnLmhjbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZnVsbFN5bnRoKHN0YWNrOiBUZXJyYWZvcm1TdGFjayk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3V0ZGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCBcImNka3RmLm91dGRpci5cIikpO1xuXG4gICAgY29uc3QgbWFuaWZlc3QgPSBuZXcgTWFuaWZlc3QoXCJzdHViYmVkXCIsIG91dGRpciwgZmFsc2UpO1xuXG4gICAgc3RhY2suc3ludGhlc2l6ZXIuc3ludGhlc2l6ZSh7XG4gICAgICBvdXRkaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIG1hbmlmZXN0LndyaXRlVG9GaWxlKCk7XG5cbiAgICByZXR1cm4gb3V0ZGlyO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyByZW5kZXJDb25zdHJ1Y3RUcmVlKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlbmRlcihjb25zdHJ1Y3QsIDAsIGZhbHNlKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZnVuY3Rpb24gcmVuZGVyKFxuICAgICAgY29uc3RydWN0OiBJQ29uc3RydWN0LFxuICAgICAgbGV2ZWw6IG51bWJlcixcbiAgICAgIGlzTGFzdDogYm9vbGVhbixcbiAgICApOiBzdHJpbmcge1xuICAgICAgbGV0IHByZWZpeCA9IFwiXCI7XG4gICAgICBpZiAobGV2ZWwgPiAwKSB7XG4gICAgICAgIGNvbnN0IHNwYWNlcyA9IFwiIFwiLnJlcGVhdCgobGV2ZWwgLSAxKSAqIDQpO1xuICAgICAgICBjb25zdCBzeW1ib2wgPSBpc0xhc3QgPyBcIuKUlFwiIDogXCLilJxcIjtcbiAgICAgICAgcHJlZml4ID0gYCR7c3BhY2VzfSR7c3ltYm9sfeKUgOKUgCBgO1xuICAgICAgfVxuICAgICAgY29uc3QgbmFtZSA9IEFwcC5pc0FwcChjb25zdHJ1Y3QpXG4gICAgICAgID8gXCJBcHBcIlxuICAgICAgICA6IGAke2NvbnN0cnVjdC5ub2RlLmlkfSAoJHtjb25zdHJ1Y3QuY29uc3RydWN0b3IubmFtZX0pYDtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtuYW1lfVxcbiR7Y29uc3RydWN0Lm5vZGUuY2hpbGRyZW5cbiAgICAgICAgLm1hcCgoY2hpbGQsIGlkeCwgYXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNMYXN0ID0gaWR4ID09PSBhcnIubGVuZ3RoIC0gMTtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyKGNoaWxkLCBsZXZlbCArIDEsIGlzTGFzdCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpfWA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlRGF0YVNvdXJjZShcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKCkoXG4gICAgICByZWNlaXZlZCxcbiAgICAgIHsgdGZSZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSB9LFxuICAgICAge30sXG4gICAgKS5wYXNzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBzdHJpbmcsXG4gICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcygpKFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICB7IHRmUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUgfSxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgKS5wYXNzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVSZXNvdXJjZShcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcygpKFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICB7IHRmUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUgfSxcbiAgICAgIHt9LFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyhcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUHJvdmlkZXIoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICB7fSxcbiAgICApLnBhc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZCkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0dXBKZXN0KCkge1xuICAgIHNldHVwSmVzdCgpO1xuICB9XG59XG4iXX0=
|
package/lib/testing/matchers.js
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
3
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
36
|
exports.AssertionReturn = void 0;
|
|
5
37
|
exports.returnMatcherToJest = returnMatcherToJest;
|
|
@@ -12,8 +44,8 @@ exports.toPlanSuccessfully = toPlanSuccessfully;
|
|
|
12
44
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
13
45
|
// Copyright (c) HashiCorp, Inc
|
|
14
46
|
// SPDX-License-Identifier: MPL-2.0
|
|
15
|
-
const fs = require("fs");
|
|
16
|
-
const path = require("path");
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
17
49
|
const child_process_1 = require("child_process");
|
|
18
50
|
const util_1 = require("../util");
|
|
19
51
|
const errors_1 = require("../errors");
|
|
@@ -21,6 +53,9 @@ const errors_1 = require("../errors");
|
|
|
21
53
|
* Class representing the contents of a return by an assertion
|
|
22
54
|
*/
|
|
23
55
|
class AssertionReturn {
|
|
56
|
+
message;
|
|
57
|
+
pass;
|
|
58
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.testingMatchers.AssertionReturn", version: "0.25.0-pre.21" };
|
|
24
59
|
/**
|
|
25
60
|
* Create an AssertionReturn
|
|
26
61
|
* @param message - String message containing information about the result of the assertion
|
|
@@ -32,8 +67,6 @@ class AssertionReturn {
|
|
|
32
67
|
}
|
|
33
68
|
}
|
|
34
69
|
exports.AssertionReturn = AssertionReturn;
|
|
35
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
36
|
-
AssertionReturn[_a] = { fqn: "cdktn.testingMatchers.AssertionReturn", version: "0.25.0-pre.2" };
|
|
37
70
|
/**
|
|
38
71
|
* Reformats the contents of the base testing matcher return type AssertionReturn into type useable by jest
|
|
39
72
|
* @param toReturn
|
|
@@ -277,4 +310,4 @@ function toPlanSuccessfully(received) {
|
|
|
277
310
|
return new AssertionReturn(withProcessOutput(`Expected subject to plan successfully`, e), false);
|
|
278
311
|
}
|
|
279
312
|
}
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9tYXRjaGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBNkNBLGtEQU9DO0FBU0Qsd0ZBK0NDO0FBZ0dELDhFQXVCQztBQU9ELDBFQXVCQztBQXlDRCwwRUF1QkM7QUFPRCxnREErQ0M7QUFPRCxnREF5Q0M7O0FBdmFELCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpREFBMkQ7QUFDM0Qsa0NBQXlEO0FBQ3pELHNDQUltQjtBQWFuQjs7R0FFRztBQUNILE1BQWEsZUFBZTtJQUMxQjs7OztPQUlHO0lBQ0gsWUFDa0IsT0FBZSxFQUNmLElBQWE7UUFEYixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBUztJQUM1QixDQUFDOztBQVROLDBDQVVDOzs7QUFJRDs7OztHQUlHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQ2pDLFFBQXlCO0lBRXpCLE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU87UUFDL0IsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0Isc0NBQXNDLENBQ3BELFFBQWlCLEVBQ2pCLFFBQWlCO0lBRWpCLFFBQVEsT0FBTyxRQUFRLEVBQUUsQ0FBQztRQUN4QixLQUFLLFFBQVE7WUFDWCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUNMLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO29CQUN2QixRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxNQUFNO29CQUNuQyxRQUFRLENBQUMsS0FBSyxDQUNaLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ2Qsc0NB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RSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzNCLE1BQU0sSUFBSSxHQUFHO2dCQUNYLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRyxLQUFhLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzVELEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztnQkFDaEIsS0FBSyxFQUFFLFFBQVE7YUFDVCxDQUFDO1lBQ1QsSUFBQSx3QkFBUSxFQUFDLEdBQUcsMEJBQW1CLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU5QyxpQ0FBaUM7WUFDakMsSUFBQSx3QkFBUSxFQUFDLEdBQUcsMEJBQW1CLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLGVBQWUsQ0FDeEIsMkNBQTJDLEVBQzNDLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLElBQUksZUFBZSxDQUN4QixpQkFBaUIsQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDLENBQUMsRUFDN0QsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGV4ZWNTeW5jLCBTcGF3blN5bmNSZXR1cm5zIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHNuYWtlQ2FzZSwgdGVycmFmb3JtQmluYXJ5TmFtZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQge1xuICBpbnZhbGlkU3RhY2ssXG4gIG1hdGNoZXJzRm91bmRFcnJvcnNJblN0YWNrLFxuICBtYXRjaGVyc1BhdGhJc05vdERpcmVjdG9yeSxcbn0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG4vLyBUZXJyYWZvcm1Db25zdHJ1Y3RvciBpcyBjbGFzcyB3aXRoIHRoZSBzdGF0aWMgcHJvcGVydHkgJ3RmUmVzb3VyY2VUeXBlJ1xuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1Db25zdHJ1Y3RvciB7XG4gIHJlYWRvbmx5IHRmUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN5bnRoZXNpemVkU3RhY2sgPSB7XG4gIHJlc291cmNlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwcm92aWRlcjogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5cbi8qKlxuICogQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBjb250ZW50cyBvZiBhIHJldHVybiBieSBhbiBhc3NlcnRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvblJldHVybiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gQXNzZXJ0aW9uUmV0dXJuXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gU3RyaW5nIG1lc3NhZ2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVzdWx0IG9mIHRoZSBhc3NlcnRpb25cbiAgICogQHBhcmFtIHBhc3MgLSBCb29sZWFuIHBhc3MgZGVub3RpbmcgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGFzc2VydGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGFzczogYm9vbGVhbixcbiAgKSB7fVxufVxuXG5leHBvcnQgdHlwZSBNYXRjaGVyUmV0dXJuSmVzdCA9IHsgbWVzc2FnZTogKCkgPT4gc3RyaW5nOyBwYXNzOiBib29sZWFuIH07XG5cbi8qKlxuICogUmVmb3JtYXRzIHRoZSBjb250ZW50cyBvZiB0aGUgYmFzZSB0ZXN0aW5nIG1hdGNoZXIgcmV0dXJuIHR5cGUgQXNzZXJ0aW9uUmV0dXJuIGludG8gdHlwZSB1c2VhYmxlIGJ5IGplc3RcbiAqIEBwYXJhbSB0b1JldHVyblxuICogQHJldHVybnMge01hdGNoZXJSZXR1cm5KZXN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuTWF0Y2hlclRvSmVzdChcbiAgdG9SZXR1cm46IEFzc2VydGlvblJldHVybixcbik6IE1hdGNoZXJSZXR1cm5KZXN0IHtcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAoKSA9PiB0b1JldHVybi5tZXNzYWdlLFxuICAgIHBhc3M6IHRvUmV0dXJuLnBhc3MsXG4gIH07XG59XG5cbi8qKlxuICogQ29tcGFyZXMgZXhwZWN0ZWQgYW5kIHJlY2VpdmVkLiBBbGwgZXhwZWN0ZWQgcHJvcGVydGllcyBhcmUgbWF0Y2hlZCBhbmQgY29uc2lkZXJlZCBlcXVhbCBldmVuIGlmXG4gKiB0aGVyZSBhcmUgbW9yZSBwcm9wZXJ0aWVzIGluIHRoZSByZWNlaXZlZCBvYmplY3QgdGhhbiBpbiB0aGUgZXhwZWN0ZWQgb2JqZWN0IGluIHdoaWNoIGNhc2UgaXQgd2lsbCBzdGlsbCByZXR1cm4gdHJ1ZS5cbiAqIEBwYXJhbSBleHBlY3RlZFxuICogQHBhcmFtIHJlY2VpdmVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICBleHBlY3RlZDogdW5rbm93bixcbiAgcmVjZWl2ZWQ6IHVua25vd24sXG4pOiBib29sZWFuIHtcbiAgc3dpdGNoICh0eXBlb2YgZXhwZWN0ZWQpIHtcbiAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBBcnJheS5pc0FycmF5KHJlY2VpdmVkKSAmJlxuICAgICAgICAgIGV4cGVjdGVkLmxlbmd0aCA9PT0gcmVjZWl2ZWQubGVuZ3RoICYmXG4gICAgICAgICAgZXhwZWN0ZWQuZXZlcnkoXG4gICAgICAgICAgICAoaXRlbSwgaW5kZXgpID0+XG4gICAgICAgICAgICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKGl0ZW0sIHJlY2VpdmVkW2luZGV4XSksIC8vIHJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGV4cGVjdGVkID09PSBudWxsICYmIHJlY2VpdmVkID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGV4cGVjdGVkID09PSB1bmRlZmluZWQgJiYgcmVjZWl2ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChleHBlY3RlZCA9PT0gbnVsbCB8fCByZWNlaXZlZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIHJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyBhbmQgYWxsb3cgc25ha2UgY2FzZSBhcyB3ZWxsIGFzIGNhbWVsIGNhc2VcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhleHBlY3RlZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuZXZlcnkoKGtleSkgPT4ge1xuICAgICAgICBpZiAoKHJlY2VpdmVkIGFzIGFueSlba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICAgICAgICAgICAgKGV4cGVjdGVkIGFzIGFueSlba2V5XSxcbiAgICAgICAgICAgIChyZWNlaXZlZCBhcyBhbnkpW2tleV0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgocmVjZWl2ZWQgYXMgYW55KVtzbmFrZUNhc2Uoa2V5KV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBhc3ltZXRyaWNEZWVwRXF1YWxJZ25vcmluZ09iamVjdENhc2luZyhcbiAgICAgICAgICAgIChleHBlY3RlZCBhcyBhbnkpW2tleV0sXG4gICAgICAgICAgICAocmVjZWl2ZWQgYXMgYW55KVtzbmFrZUNhc2Uoa2V5KV0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZXhwZWN0ZWQgPT09IHJlY2VpdmVkO1xuICB9XG59XG5jb25zdCBkZWZhdWx0UGFzc0V2YWx1YXRpb24gPSAoXG4gIGl0ZW1zOiBhbnksXG4gIGFzc2VydGVkUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbikgPT4ge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpdGVtcykuc29tZSgoaXRlbTogYW55KSA9PlxuICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKGFzc2VydGVkUHJvcGVydGllcywgaXRlbSksXG4gICk7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gaXNBc3ltbWV0cmljKG9iajogYW55KSB7XG4gIHJldHVybiAhIW9iaiAmJiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmIFwiYXN5bW1ldHJpY01hdGNoXCIgaW4gb2JqO1xufVxuLy8gWW91IGNhbiB1c2UgZXhwZWN0LkFueXRoaW5nKCksIGV4cGVjdC5PYmplY3RDb250YWluaW5nLCBldGMgaW4gamVzdCwgdGhpcyBtYWtlcyBpdCBuaWNlciB0byByZWFkXG4vLyB3aGVuIHdlIHByaW50IGVycm9yIG1lc3NhZ2VzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gamVzdEFzeW1ldHJpY01hdGNoZXJTdHJpbmdpZnlSZXBsYWNlcihfa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIGlzQXN5bW1ldHJpYyh2YWx1ZSkgPyBgZXhwZWN0LiR7dmFsdWUudG9TdHJpbmcoKX1gIDogdmFsdWU7XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gZ2V0QXNzZXJ0RWxlbWVudFdpdGhQcm9wZXJ0aWVzKFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgLy8gV2UgaGF2ZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBjb25maWd1cmFibGUgc28gd2UgY2FuIG1ha2UgdXNlIG9mIHRoZSBzcGVjaWZpYyB0ZXN0aW5nIGZyYW1ld29ya3MgY2FwYWJpbGl0aWVzXG4gIC8vIFRoaXMgbWFrZXMgdGhlIHJlc3VsdGluZyB0ZXN0cyBtb3JlIG5hdGl2ZSB0byB0aGUgdGVzdGluZyBmcmFtZXdvcmtcbiAgY3VzdG9tUGFzc0V2YWx1YXRpb24/OiAoXG4gICAgaXRlbXM6IGFueVtdLCAvLyBjb25maWd1cmF0aW9ucyBvZiB0aGUgcmVxdWVzdGVkIHR5cGVcbiAgICBhc3NlcnRlZFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICkgPT4gYm9vbGVhbixcbikge1xuICBjb25zdCBwYXNzRXZhbHVhdGlvbiA9IGN1c3RvbVBhc3NFdmFsdWF0aW9uIHx8IGRlZmF1bHRQYXNzRXZhbHVhdGlvbjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICB0eXBlOiBrZXlvZiBTeW50aGVzaXplZFN0YWNrLFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgaXRlbVR5cGU6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogQXNzZXJ0aW9uUmV0dXJuIHtcbiAgICBsZXQgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2s7XG5cbiAgICAvLyBSZWNlY2l2ZWQgY291bGQgZWl0aGVyIGJlIGEgSlNPTiBzdHJpbmcgb3IgYSBwYXRoIHRvIGEgZmlsZVxuICAgIGNvbnN0IHN0YWNrQ29udGVudCA9IGZzLmV4aXN0c1N5bmMocmVjZWl2ZWQpXG4gICAgICA/IGZzLnJlYWRGaWxlU3luYyhyZWNlaXZlZCwgXCJ1dGY4XCIpXG4gICAgICA6IHJlY2VpdmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIHN0YWNrID0gSlNPTi5wYXJzZShzdGFja0NvbnRlbnQpIGFzIFN5bnRoZXNpemVkU3RhY2s7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgaW52YWxpZFN0YWNrKGZ1bmN0aW9uTmFtZSwgc3RhY2tDb250ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtcyA9XG4gICAgICBPYmplY3QudmFsdWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhzdGFja1t0eXBlXSB8fCB7fSkgLy8gZm9yIGFsbCBkYXRhL3Jlc291cmNlIGVudHJpZXNcbiAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgIC8vIGZpbmQgdGhlIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFtZVxuICAgICAgICAgICAgKFt0eXBlLCBfdmFsdWVzXSkgPT4gdHlwZSA9PT0gaXRlbVR5cGUudGZSZXNvdXJjZVR5cGUsXG4gICAgICAgICAgKT8uWzFdIHx8IHt9LCAvLyBnZXQgYWxsIGl0ZW1zIG9mIHRoYXQgdHlwZSAoZW5jb2RlZCBhcyBhIHJlY29yZCBvZiBuYW1lIC0+IGNvbmZpZylcbiAgICAgICkgfHwgW107IC8vIGdldCBhIGxpc3Qgb2YgYWxsIGNvbmZpZ3Mgb2YgdGhhdCB0eXBlXG4gICAgY29uc3QgcGFzcyA9IHBhc3NFdmFsdWF0aW9uKGl0ZW1zLCBwcm9wZXJ0aWVzKTtcbiAgICBpZiAocGFzcykge1xuICAgICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICAgIGBFeHBlY3RlZCBubyAke1xuICAgICAgICAgIGl0ZW1UeXBlLnRmUmVzb3VyY2VUeXBlXG4gICAgICAgIH0gd2l0aCBwcm9wZXJ0aWVzICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICBqZXN0QXN5bWV0cmljTWF0Y2hlclN0cmluZ2lmeVJlcGxhY2VyLFxuICAgICAgICApfSB0byBiZSBwcmVzZW50IGluIHN5bnRoZXNpemVkIHN0YWNrLlxuRm91bmQgJHtpdGVtcy5sZW5ndGggPT09IDAgPyBcIm5vXCIgOiBpdGVtcy5sZW5ndGh9ICR7XG4gICAgICAgICAgaXRlbVR5cGUudGZSZXNvdXJjZVR5cGVcbiAgICAgICAgfSByZXNvdXJjZXMgaW5zdGVhZCR7XG4gICAgICAgICAgaXRlbXMubGVuZ3RoID4gMCA/IFwiOlxcblwiICsgSlNPTi5zdHJpbmdpZnkoaXRlbXMsIG51bGwsIDIpIDogXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgcGFzcyxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uUmV0dXJuKFxuICAgICAgICBgRXhwZWN0ZWQgJHtpdGVtVHlwZS50ZlJlc291cmNlVHlwZX0gd2l0aCBwcm9wZXJ0aWVzICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICBqZXN0QXN5bWV0cmljTWF0Y2hlclN0cmluZ2lmeVJlcGxhY2VyLFxuICAgICAgICApfSB0byBiZSBwcmVzZW50IGluIHN5bnRoZXNpemVkIHN0YWNrLlxuRm91bmQgJHtpdGVtcy5sZW5ndGggPT09IDAgPyBcIm5vXCIgOiBpdGVtcy5sZW5ndGh9ICR7XG4gICAgICAgICAgaXRlbVR5cGUudGZSZXNvdXJjZVR5cGVcbiAgICAgICAgfSByZXNvdXJjZXMgaW5zdGVhZCR7XG4gICAgICAgICAgaXRlbXMubGVuZ3RoID4gMCA/IFwiOlxcblwiICsgSlNPTi5zdHJpbmdpZnkoaXRlbXMsIG51bGwsIDIpIDogXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgcGFzcyxcbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZ1bmN0aW9uIHRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyB1c2luZyB0aGUgZXZhbHVhdGlvbiBwcm9wZXJ0aWVzIG9mIGN1c3RvbVBhc3NFdmFsdWF0aW9uXG4gKiBAcGFyYW0gY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEByZXR1cm5zIHtnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXN+dG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICBjdXN0b21QYXNzRXZhbHVhdGlvbj86IChcbiAgICBpdGVtczogYW55LFxuICAgIGFzc2VydGVkUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgKSA9PiBib29sZWFuLFxuKSB7XG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgdGhlIHJlY2VpdmVkIHN0YWNrIHRvIGhhdmUgdGhlIGRhdGEgc291cmNlIHJlc291cmNlVHlwZSBjb250YWluaW5nIHNwZWNpZmllZCBwcm9wZXJ0aWVzXG4gICAqIEBwYXJhbSByZWNlaXZlZFxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIHtBc3NlcnRpb25SZXR1cm59XG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gdG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IEFzc2VydGlvblJldHVybiB7XG4gICAgcmV0dXJuIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICAgIFwidG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzXCIsXG4gICAgICBjdXN0b21QYXNzRXZhbHVhdGlvbixcbiAgICApKFwiZGF0YVwiLCByZWNlaXZlZCwgcmVzb3VyY2VUeXBlLCBwcm9wZXJ0aWVzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmdW5jdGlvbiB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzIHVzaW5nIHRoZSBldmFsdWF0aW9uIHByb3BlcnRpZXMgb2YgY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEBwYXJhbSBjdXN0b21QYXNzRXZhbHVhdGlvblxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMoXG4gIGN1c3RvbVBhc3NFdmFsdWF0aW9uPzogKFxuICAgIGl0ZW1zOiBhbnksXG4gICAgYXNzZXJ0ZWRQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApID0+IGJvb2xlYW4sXG4pIHtcbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB0aGUgcmVjZWl2ZWQgc3RhY2sgdG8gaGF2ZSB0aGUgcmVzb3VyY2UgcmVzb3VyY2VUeXBlIGNvbnRhaW5pbmcgc3BlY2lmaWVkIHByb3BlcnRpZXNcbiAgICogQHBhcmFtIHJlY2VpdmVkXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGVcbiAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMge0Fzc2VydGlvblJldHVybn1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IEFzc2VydGlvblJldHVybiB7XG4gICAgcmV0dXJuIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICAgIFwidG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllc1wiLFxuICAgICAgY3VzdG9tUGFzc0V2YWx1YXRpb24sXG4gICAgKShcInJlc291cmNlXCIsIHJlY2VpdmVkLCByZXNvdXJjZVR5cGUsIHByb3BlcnRpZXMpO1xuICB9O1xufVxuXG4vKipcbiAqIEEgaGVscGVyIHV0aWwgdG8gdmVyaWZ5IHdldGhlciBhbiBFcnJvciB3YXMgY2F1c2VkIGJ5IHRoZSBOb2RlanMgYHByb2Nlc3Muc3Bhd25gIEFQSS5cbiAqXG4gKiBAcGFyYW0gICB7RXJyb3J9ICAgZXJyIFRoZSBFcnJvciBvYmplY3QgdG8gdmVyaWZ5XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdldGhlciB0aGUgaW5wdXQgRXJyb3IgaXMgY29udGFpbmluZyBwcm9jZXNzLnNwYXduIG91dHB1dC5cbiAqL1xuY29uc3QgaXNFeGVjU3Bhd25FcnJvciA9IChlcnI6IGFueSk6IGVyciBpcyBFcnJvciAmIFNwYXduU3luY1JldHVybnM8YW55PiA9PlxuICBcIm91dHB1dFwiIGluIGVyciAmJlxuICBBcnJheS5pc0FycmF5KGVyci5vdXRwdXQpICYmXG4gIGVyci5vdXRwdXQuc29tZSgoYnVmOiBhbnkpID0+IEJ1ZmZlci5pc0J1ZmZlcihidWYpKTtcblxuLyoqXG4gKiBBIGhlbHBlciB1dGlsIHRvIGFwcGVuZCBgcHJvY2Vzcy5zcGF3bmAgb3V0cHV0IHRvIGFzc2VydGlvbiBtZXNzYWdlcyB0byBpbXByb3ZlIGRldmVsb3BlciBleHBpcmllbmNlLlxuICpcbiAqIEBwYXJhbSAgIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gb3B0aW9uYWxseSBhcHBlbmQgcHJvY2VzcyBvdXRwdXQgdG8uXG4gKiBAcGFyYW0gICB7RXJyb3J9ICBlcnIgICAgIFRoZSBlcnJvciBmcm9tIHdoaWNoIHRoZSBgcHJvY2Vzcy5zcGF3bmAgb3V0cHV0IHNob3VsZCBiZSByZXRyZWl2ZWQgZnJvbS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9ICAgICAgICAgVGhlIGZpbmFsaXplZCBhc3NlcnRpb24gbWVzc2FnZSBkZWNvcmF0ZWQgd2l0aCB0aGUgYHByb2Nlc3Muc3Bhd25gIG91dHB1dC5cbiAqL1xuY29uc3Qgd2l0aFByb2Nlc3NPdXRwdXQgPSAobWVzc2FnZTogc3RyaW5nLCBlcnI6IHVua25vd24pID0+IHtcbiAgbGV0IG91dHB1dCA9IFwiXCI7XG5cbiAgaWYgKGlzRXhlY1NwYXduRXJyb3IoZXJyKSkge1xuICAgIG91dHB1dCA9XG4gICAgICBlcnIub3V0cHV0XG4gICAgICAgID8ubWFwKChidWZmZXI6IEJ1ZmZlcikgPT4gYnVmZmVyPy50b1N0cmluZyhcInV0ZjhcIikpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oXCJcXG5cIikgPz8gXCJcIjtcbiAgfVxuXG4gIGNvbnN0IGFwcGVuZGl4ID0gb3V0cHV0Lmxlbmd0aCA/IGAuIE91dHB1dDogJHtvdXRwdXR9YCA6IFwiXCI7XG5cbiAgcmV0dXJuIGAke21lc3NhZ2V9OiAke2Vycn0ke2FwcGVuZGl4fS5gO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmdW5jdGlvbiB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzIHVzaW5nIHRoZSBldmFsdWF0aW9uIHByb3BlcnRpZXMgb2YgY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEBwYXJhbSBjdXN0b21QYXNzRXZhbHVhdGlvblxuICogQHJldHVybnMge2dldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXN+dG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoXG4gIGN1c3RvbVBhc3NFdmFsdWF0aW9uPzogKFxuICAgIGl0ZW1zOiBhbnksXG4gICAgYXNzZXJ0ZWRQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApID0+IGJvb2xlYW4sXG4pIHtcbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB0aGUgcmVjZWl2ZWQgc3RhY2sgdG8gaGF2ZSB0aGUgcHJvdmlkZXIgcmVzb3VyY2VUeXBlIGNvbnRhaW5pbmcgc3BlY2lmaWVkIHByb3BlcnRpZXNcbiAgICogQHBhcmFtIHJlY2VpdmVkXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGVcbiAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMge0Fzc2VydGlvblJldHVybn1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IEFzc2VydGlvblJldHVybiB7XG4gICAgcmV0dXJuIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICAgIFwidG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllc1wiLFxuICAgICAgY3VzdG9tUGFzc0V2YWx1YXRpb24sXG4gICAgKShcInByb3ZpZGVyXCIsIHJlY2VpdmVkLCByZXNvdXJjZVR5cGUsIHByb3BlcnRpZXMpO1xuICB9O1xufVxuXG4vKipcbiAqIEV2YWx1YXRlcyB0aGUgdmFsaWRpdHkgb2YgdGhlIHJlY2VpdmVkIHN0YWNrXG4gKiBAcGFyYW0gcmVjZWl2ZWRcbiAqIEByZXR1cm5zIHtBc3NlcnRpb25SZXR1cm59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0JlVmFsaWRUZXJyYWZvcm0ocmVjZWl2ZWQ6IHN0cmluZyk6IEFzc2VydGlvblJldHVybiB7XG4gIHRyeSB7XG4gICAgaWYgKCFmcy5zdGF0U3luYyhyZWNlaXZlZCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGhyb3cgbWF0Y2hlcnNQYXRoSXNOb3REaXJlY3RvcnkoXCJ0b0JlVmFsaWRUZXJyYWZvcm1cIik7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCB0byBiZSBhIHRlcnJhZm9ybSBkaXJlY3Rvcnk6ICR7ZX1gLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgXCJtYW5pZmVzdC5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YWNrcyA9IE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LnN0YWNrcyk7XG5cbiAgICBzdGFja3MuZm9yRWFjaCgoW25hbWUsIHN0YWNrXSkgPT4ge1xuICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgY3dkOiBwYXRoLnJlc29sdmUocmVjZWl2ZWQsIChzdGFjayBhcyBhbnkpLndvcmtpbmdEaXJlY3RvcnkpLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBzdGRpbzogXCJwaXBlXCIsXG4gICAgICB9IGFzIGFueTtcbiAgICAgIGV4ZWNTeW5jKGAke3RlcnJhZm9ybUJpbmFyeU5hbWV9IGluaXRgLCBvcHRzKTtcbiAgICAgIGNvbnN0IG91dCA9IGV4ZWNTeW5jKGAke3RlcnJhZm9ybUJpbmFyeU5hbWV9IHZhbGlkYXRlIC1qc29uYCwgb3B0cyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2Uob3V0LnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKCFyZXN1bHQudmFsaWQpIHtcbiAgICAgICAgdGhyb3cgbWF0Y2hlcnNGb3VuZEVycm9yc0luU3RhY2soXG4gICAgICAgICAgcmVzdWx0LmVycm9yX2NvdW50LFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcmVzdWx0LmRpYWdub3N0aWNzLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCBub3QgdG8gYmUgYSB2YWxpZCB0ZXJyYWZvcm0gc3RhY2tgLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICB3aXRoUHJvY2Vzc091dHB1dChgRXhwZWN0ZWQgc3ViamVjdCB0byBiZSBhIHZhbGlkIHRlcnJhZm9ybSBzdGFja2AsIGUpLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEV2YWx1YXRlcyB0aGUgYWJpbGl0eSBmb3IgdGhlIHJlY2VpdmVkIHN0YWNrIHRvIHN1Y2Nlc3NmdWxseSBwbGFuXG4gKiBAcGFyYW0gcmVjZWl2ZWRcbiAqIEByZXR1cm5zIHtBc3NlcnRpb25SZXR1cm59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BsYW5TdWNjZXNzZnVsbHkocmVjZWl2ZWQ6IHN0cmluZyk6IEFzc2VydGlvblJldHVybiB7XG4gIHRyeSB7XG4gICAgaWYgKCFmcy5zdGF0U3luYyhyZWNlaXZlZCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGhyb3cgbWF0Y2hlcnNQYXRoSXNOb3REaXJlY3RvcnkoXCJ0b1BsYW5TdWNjZXNzZnVsbHlcIik7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCB0byBiZSBhIHRlcnJhZm9ybSBkaXJlY3Rvcnk6ICR7ZX1gLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgXCJtYW5pZmVzdC5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YWNrcyA9IE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LnN0YWNrcyk7XG5cbiAgICBzdGFja3MuZm9yRWFjaCgoWywgc3RhY2tdKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICBjd2Q6IHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgKHN0YWNrIGFzIGFueSkud29ya2luZ0RpcmVjdG9yeSksXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHN0ZGlvOiBcImlnbm9yZVwiLFxuICAgICAgfSBhcyBhbnk7XG4gICAgICBleGVjU3luYyhgJHt0ZXJyYWZvcm1CaW5hcnlOYW1lfSBpbml0YCwgb3B0cyk7XG5cbiAgICAgIC8vIFRocm93cyBvbiBhIG5vbi16ZXJvIGV4aXQgY29kZVxuICAgICAgZXhlY1N5bmMoYCR7dGVycmFmb3JtQmluYXJ5TmFtZX0gcGxhbiAtaW5wdXQ9ZmFsc2UgLWxvY2s9ZmFsc2UgYCwgb3B0cyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIGBFeHBlY3RlZCBzdWJqZWN0IG5vdCB0byBwbGFuIHN1Y2Nlc3NmdWxseWAsXG4gICAgICB0cnVlLFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIHdpdGhQcm9jZXNzT3V0cHV0KGBFeHBlY3RlZCBzdWJqZWN0IHRvIHBsYW4gc3VjY2Vzc2Z1bGx5YCwgZSksXG4gICAgICBmYWxzZSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9tYXRjaGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2Q0Esa0RBT0M7QUFTRCx3RkErQ0M7QUFnR0QsOEVBdUJDO0FBT0QsMEVBdUJDO0FBeUNELDBFQXVCQztBQU9ELGdEQStDQztBQU9ELGdEQXlDQzs7QUF2YUQsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGlEQUEyRDtBQUMzRCxrQ0FBeUQ7QUFDekQsc0NBSW1CO0FBYW5COztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBT1I7SUFDQTs7SUFQbEI7Ozs7T0FJRztJQUNILFlBQ2tCLE9BQWUsRUFDZixJQUFhO1FBRGIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFNBQUksR0FBSixJQUFJLENBQVM7SUFDNUIsQ0FBQzs7QUFUTiwwQ0FVQztBQUlEOzs7O0dBSUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsUUFBeUI7SUFFekIsT0FBTztRQUNMLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTztRQUMvQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7S0FDcEIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixzQ0FBc0MsQ0FDcEQsUUFBaUIsRUFDakIsUUFBaUI7SUFFakIsUUFBUSxPQUFPLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLEtBQUssUUFBUTtZQUNYLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7b0JBQ3ZCLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE1BQU07b0JBQ25DLFFBQVEsQ0FBQyxLQUFLLENB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QztRQUUvQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEdBQUc7Z0JBQ1gsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFHLEtBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDNUQsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO2dCQUNoQixLQUFLLEVBQUUsUUFBUTthQUNULENBQUM7WUFDVCxJQUFBLHdCQUFRLEVBQUMsR0FBRywwQkFBbUIsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTlDLGlDQUFpQztZQUNqQyxJQUFBLHdCQUFRLEVBQUMsR0FBRywwQkFBbUIsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksZUFBZSxDQUN4QiwyQ0FBMkMsRUFDM0MsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sSUFBSSxlQUFlLENBQ3hCLGlCQUFpQixDQUFDLHVDQUF1QyxFQUFFLENBQUMsQ0FBQyxFQUM3RCxLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgZXhlY1N5bmMsIFNwYXduU3luY1JldHVybnMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgc25ha2VDYXNlLCB0ZXJyYWZvcm1CaW5hcnlOYW1lIH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7XG4gIGludmFsaWRTdGFjayxcbiAgbWF0Y2hlcnNGb3VuZEVycm9yc0luU3RhY2ssXG4gIG1hdGNoZXJzUGF0aElzTm90RGlyZWN0b3J5LFxufSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbi8vIFRlcnJhZm9ybUNvbnN0cnVjdG9yIGlzIGNsYXNzIHdpdGggdGhlIHN0YXRpYyBwcm9wZXJ0eSAndGZSZXNvdXJjZVR5cGUnXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybUNvbnN0cnVjdG9yIHtcbiAgcmVhZG9ubHkgdGZSZXNvdXJjZVR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgU3ludGhlc2l6ZWRTdGFjayA9IHtcbiAgcmVzb3VyY2U6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHByb3ZpZGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcblxuLyoqXG4gKiBDbGFzcyByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnRzIG9mIGEgcmV0dXJuIGJ5IGFuIGFzc2VydGlvblxuICovXG5leHBvcnQgY2xhc3MgQXNzZXJ0aW9uUmV0dXJuIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBBc3NlcnRpb25SZXR1cm5cbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBTdHJpbmcgbWVzc2FnZSBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIGFzc2VydGlvblxuICAgKiBAcGFyYW0gcGFzcyAtIEJvb2xlYW4gcGFzcyBkZW5vdGluZyB0aGUgc3VjY2VzcyBvZiB0aGUgYXNzZXJ0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBwYXNzOiBib29sZWFuLFxuICApIHt9XG59XG5cbmV4cG9ydCB0eXBlIE1hdGNoZXJSZXR1cm5KZXN0ID0geyBtZXNzYWdlOiAoKSA9PiBzdHJpbmc7IHBhc3M6IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBSZWZvcm1hdHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBiYXNlIHRlc3RpbmcgbWF0Y2hlciByZXR1cm4gdHlwZSBBc3NlcnRpb25SZXR1cm4gaW50byB0eXBlIHVzZWFibGUgYnkgamVzdFxuICogQHBhcmFtIHRvUmV0dXJuXG4gKiBAcmV0dXJucyB7TWF0Y2hlclJldHVybkplc3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5NYXRjaGVyVG9KZXN0KFxuICB0b1JldHVybjogQXNzZXJ0aW9uUmV0dXJuLFxuKTogTWF0Y2hlclJldHVybkplc3Qge1xuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICgpID0+IHRvUmV0dXJuLm1lc3NhZ2UsXG4gICAgcGFzczogdG9SZXR1cm4ucGFzcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyBleHBlY3RlZCBhbmQgcmVjZWl2ZWQuIEFsbCBleHBlY3RlZCBwcm9wZXJ0aWVzIGFyZSBtYXRjaGVkIGFuZCBjb25zaWRlcmVkIGVxdWFsIGV2ZW4gaWZcbiAqIHRoZXJlIGFyZSBtb3JlIHByb3BlcnRpZXMgaW4gdGhlIHJlY2VpdmVkIG9iamVjdCB0aGFuIGluIHRoZSBleHBlY3RlZCBvYmplY3QgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIHN0aWxsIHJldHVybiB0cnVlLlxuICogQHBhcmFtIGV4cGVjdGVkXG4gKiBAcGFyYW0gcmVjZWl2ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcoXG4gIGV4cGVjdGVkOiB1bmtub3duLFxuICByZWNlaXZlZDogdW5rbm93bixcbik6IGJvb2xlYW4ge1xuICBzd2l0Y2ggKHR5cGVvZiBleHBlY3RlZCkge1xuICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGV4cGVjdGVkKSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVjZWl2ZWQpICYmXG4gICAgICAgICAgZXhwZWN0ZWQubGVuZ3RoID09PSByZWNlaXZlZC5sZW5ndGggJiZcbiAgICAgICAgICBleHBlY3RlZC5ldmVyeShcbiAgICAgICAgICAgIChpdGVtLCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcoaXRlbSwgcmVjZWl2ZWRbaW5kZXhdKSwgLy8gcmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXNcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwgJiYgcmVjZWl2ZWQgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZXhwZWN0ZWQgPT09IHVuZGVmaW5lZCAmJiByZWNlaXZlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGV4cGVjdGVkID09PSBudWxsIHx8IHJlY2VpdmVkID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIGFuZCBhbGxvdyBzbmFrZSBjYXNlIGFzIHdlbGwgYXMgY2FtZWwgY2FzZVxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGV4cGVjdGVkIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5ldmVyeSgoa2V5KSA9PiB7XG4gICAgICAgIGlmICgocmVjZWl2ZWQgYXMgYW55KVtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcoXG4gICAgICAgICAgICAoZXhwZWN0ZWQgYXMgYW55KVtrZXldLFxuICAgICAgICAgICAgKHJlY2VpdmVkIGFzIGFueSlba2V5XSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChyZWNlaXZlZCBhcyBhbnkpW3NuYWtlQ2FzZShrZXkpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICAgICAgICAgICAgKGV4cGVjdGVkIGFzIGFueSlba2V5XSxcbiAgICAgICAgICAgIChyZWNlaXZlZCBhcyBhbnkpW3NuYWtlQ2FzZShrZXkpXSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBleHBlY3RlZCA9PT0gcmVjZWl2ZWQ7XG4gIH1cbn1cbmNvbnN0IGRlZmF1bHRQYXNzRXZhbHVhdGlvbiA9IChcbiAgaXRlbXM6IGFueSxcbiAgYXNzZXJ0ZWRQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSA9PiB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGl0ZW1zKS5zb21lKChpdGVtOiBhbnkpID0+XG4gICAgYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcoYXNzZXJ0ZWRQcm9wZXJ0aWVzLCBpdGVtKSxcbiAgKTtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5mdW5jdGlvbiBpc0FzeW1tZXRyaWMob2JqOiBhbnkpIHtcbiAgcmV0dXJuICEhb2JqICYmIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgJiYgXCJhc3ltbWV0cmljTWF0Y2hcIiBpbiBvYmo7XG59XG4vLyBZb3UgY2FuIHVzZSBleHBlY3QuQW55dGhpbmcoKSwgZXhwZWN0Lk9iamVjdENvbnRhaW5pbmcsIGV0YyBpbiBqZXN0LCB0aGlzIG1ha2VzIGl0IG5pY2VyIHRvIHJlYWRcbi8vIHdoZW4gd2UgcHJpbnQgZXJyb3IgbWVzc2FnZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5mdW5jdGlvbiBqZXN0QXN5bWV0cmljTWF0Y2hlclN0cmluZ2lmeVJlcGxhY2VyKF9rZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICByZXR1cm4gaXNBc3ltbWV0cmljKHZhbHVlKSA/IGBleHBlY3QuJHt2YWx1ZS50b1N0cmluZygpfWAgOiB2YWx1ZTtcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5mdW5jdGlvbiBnZXRBc3NlcnRFbGVtZW50V2l0aFByb3BlcnRpZXMoXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAvLyBXZSBoYXZlIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGNvbmZpZ3VyYWJsZSBzbyB3ZSBjYW4gbWFrZSB1c2Ugb2YgdGhlIHNwZWNpZmljIHRlc3RpbmcgZnJhbWV3b3JrcyBjYXBhYmlsaXRpZXNcbiAgLy8gVGhpcyBtYWtlcyB0aGUgcmVzdWx0aW5nIHRlc3RzIG1vcmUgbmF0aXZlIHRvIHRoZSB0ZXN0aW5nIGZyYW1ld29ya1xuICBjdXN0b21QYXNzRXZhbHVhdGlvbj86IChcbiAgICBpdGVtczogYW55W10sIC8vIGNvbmZpZ3VyYXRpb25zIG9mIHRoZSByZXF1ZXN0ZWQgdHlwZVxuICAgIGFzc2VydGVkUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgKSA9PiBib29sZWFuLFxuKSB7XG4gIGNvbnN0IHBhc3NFdmFsdWF0aW9uID0gY3VzdG9tUGFzc0V2YWx1YXRpb24gfHwgZGVmYXVsdFBhc3NFdmFsdWF0aW9uO1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0QXNzZXJ0RWxlbWVudFdpdGhQcm9wZXJ0aWVzKFxuICAgIHR5cGU6IGtleW9mIFN5bnRoZXNpemVkU3RhY2ssXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICBpdGVtVHlwZTogVGVycmFmb3JtQ29uc3RydWN0b3IsXG4gICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICApOiBBc3NlcnRpb25SZXR1cm4ge1xuICAgIGxldCBzdGFjazogU3ludGhlc2l6ZWRTdGFjaztcblxuICAgIC8vIFJlY2VjaXZlZCBjb3VsZCBlaXRoZXIgYmUgYSBKU09OIHN0cmluZyBvciBhIHBhdGggdG8gYSBmaWxlXG4gICAgY29uc3Qgc3RhY2tDb250ZW50ID0gZnMuZXhpc3RzU3luYyhyZWNlaXZlZClcbiAgICAgID8gZnMucmVhZEZpbGVTeW5jKHJlY2VpdmVkLCBcInV0ZjhcIilcbiAgICAgIDogcmVjZWl2ZWQ7XG5cbiAgICB0cnkge1xuICAgICAgc3RhY2sgPSBKU09OLnBhcnNlKHN0YWNrQ29udGVudCkgYXMgU3ludGhlc2l6ZWRTdGFjaztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBpbnZhbGlkU3RhY2soZnVuY3Rpb25OYW1lLCBzdGFja0NvbnRlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zID1cbiAgICAgIE9iamVjdC52YWx1ZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHN0YWNrW3R5cGVdIHx8IHt9KSAvLyBmb3IgYWxsIGRhdGEvcmVzb3VyY2UgZW50cmllc1xuICAgICAgICAgIC5maW5kKFxuICAgICAgICAgICAgLy8gZmluZCB0aGUgb2JqZWN0IHdpdGggYSBtYXRjaGluZyBuYW1lXG4gICAgICAgICAgICAoW3R5cGUsIF92YWx1ZXNdKSA9PiB0eXBlID09PSBpdGVtVHlwZS50ZlJlc291cmNlVHlwZSxcbiAgICAgICAgICApPy5bMV0gfHwge30sIC8vIGdldCBhbGwgaXRlbXMgb2YgdGhhdCB0eXBlIChlbmNvZGVkIGFzIGEgcmVjb3JkIG9mIG5hbWUgLT4gY29uZmlnKVxuICAgICAgKSB8fCBbXTsgLy8gZ2V0IGEgbGlzdCBvZiBhbGwgY29uZmlncyBvZiB0aGF0IHR5cGVcbiAgICBjb25zdCBwYXNzID0gcGFzc0V2YWx1YXRpb24oaXRlbXMsIHByb3BlcnRpZXMpO1xuICAgIGlmIChwYXNzKSB7XG4gICAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgICAgYEV4cGVjdGVkIG5vICR7XG4gICAgICAgICAgaXRlbVR5cGUudGZSZXNvdXJjZVR5cGVcbiAgICAgICAgfSB3aXRoIHByb3BlcnRpZXMgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICAgIGplc3RBc3ltZXRyaWNNYXRjaGVyU3RyaW5naWZ5UmVwbGFjZXIsXG4gICAgICAgICl9IHRvIGJlIHByZXNlbnQgaW4gc3ludGhlc2l6ZWQgc3RhY2suXG5Gb3VuZCAke2l0ZW1zLmxlbmd0aCA9PT0gMCA/IFwibm9cIiA6IGl0ZW1zLmxlbmd0aH0gJHtcbiAgICAgICAgICBpdGVtVHlwZS50ZlJlc291cmNlVHlwZVxuICAgICAgICB9IHJlc291cmNlcyBpbnN0ZWFkJHtcbiAgICAgICAgICBpdGVtcy5sZW5ndGggPiAwID8gXCI6XFxuXCIgKyBKU09OLnN0cmluZ2lmeShpdGVtcywgbnVsbCwgMikgOiBcIlwiXG4gICAgICAgIH1gLFxuICAgICAgICBwYXNzLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICAgIGBFeHBlY3RlZCAke2l0ZW1UeXBlLnRmUmVzb3VyY2VUeXBlfSB3aXRoIHByb3BlcnRpZXMgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICAgIGplc3RBc3ltZXRyaWNNYXRjaGVyU3RyaW5naWZ5UmVwbGFjZXIsXG4gICAgICAgICl9IHRvIGJlIHByZXNlbnQgaW4gc3ludGhlc2l6ZWQgc3RhY2suXG5Gb3VuZCAke2l0ZW1zLmxlbmd0aCA9PT0gMCA/IFwibm9cIiA6IGl0ZW1zLmxlbmd0aH0gJHtcbiAgICAgICAgICBpdGVtVHlwZS50ZlJlc291cmNlVHlwZVxuICAgICAgICB9IHJlc291cmNlcyBpbnN0ZWFkJHtcbiAgICAgICAgICBpdGVtcy5sZW5ndGggPiAwID8gXCI6XFxuXCIgKyBKU09OLnN0cmluZ2lmeShpdGVtcywgbnVsbCwgMikgOiBcIlwiXG4gICAgICAgIH1gLFxuICAgICAgICBwYXNzLFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZnVuY3Rpb24gdG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzIHVzaW5nIHRoZSBldmFsdWF0aW9uIHByb3BlcnRpZXMgb2YgY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEBwYXJhbSBjdXN0b21QYXNzRXZhbHVhdGlvblxuICogQHJldHVybnMge2dldFRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllc350b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gIGN1c3RvbVBhc3NFdmFsdWF0aW9uPzogKFxuICAgIGl0ZW1zOiBhbnksXG4gICAgYXNzZXJ0ZWRQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApID0+IGJvb2xlYW4sXG4pIHtcbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB0aGUgcmVjZWl2ZWQgc3RhY2sgdG8gaGF2ZSB0aGUgZGF0YSBzb3VyY2UgcmVzb3VyY2VUeXBlIGNvbnRhaW5pbmcgc3BlY2lmaWVkIHByb3BlcnRpZXNcbiAgICogQHBhcmFtIHJlY2VpdmVkXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGVcbiAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMge0Fzc2VydGlvblJldHVybn1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiB0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogQXNzZXJ0aW9uUmV0dXJuIHtcbiAgICByZXR1cm4gZ2V0QXNzZXJ0RWxlbWVudFdpdGhQcm9wZXJ0aWVzKFxuICAgICAgXCJ0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXNcIixcbiAgICAgIGN1c3RvbVBhc3NFdmFsdWF0aW9uLFxuICAgICkoXCJkYXRhXCIsIHJlY2VpdmVkLCByZXNvdXJjZVR5cGUsIHByb3BlcnRpZXMpO1xuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZ1bmN0aW9uIHRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMgdXNpbmcgdGhlIGV2YWx1YXRpb24gcHJvcGVydGllcyBvZiBjdXN0b21QYXNzRXZhbHVhdGlvblxuICogQHBhcmFtIGN1c3RvbVBhc3NFdmFsdWF0aW9uXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcyhcbiAgY3VzdG9tUGFzc0V2YWx1YXRpb24/OiAoXG4gICAgaXRlbXM6IGFueSxcbiAgICBhc3NlcnRlZFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICkgPT4gYm9vbGVhbixcbikge1xuICAvKipcbiAgICogRXZhbHVhdGVzIHRoZSByZWNlaXZlZCBzdGFjayB0byBoYXZlIHRoZSByZXNvdXJjZSByZXNvdXJjZVR5cGUgY29udGFpbmluZyBzcGVjaWZpZWQgcHJvcGVydGllc1xuICAgKiBAcGFyYW0gcmVjZWl2ZWRcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZVxuICAgKiBAcGFyYW0gcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyB7QXNzZXJ0aW9uUmV0dXJufVxuICAgKi9cbiAgcmV0dXJuIGZ1bmN0aW9uIHRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogQXNzZXJ0aW9uUmV0dXJuIHtcbiAgICByZXR1cm4gZ2V0QXNzZXJ0RWxlbWVudFdpdGhQcm9wZXJ0aWVzKFxuICAgICAgXCJ0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzXCIsXG4gICAgICBjdXN0b21QYXNzRXZhbHVhdGlvbixcbiAgICApKFwicmVzb3VyY2VcIiwgcmVjZWl2ZWQsIHJlc291cmNlVHlwZSwgcHJvcGVydGllcyk7XG4gIH07XG59XG5cbi8qKlxuICogQSBoZWxwZXIgdXRpbCB0byB2ZXJpZnkgd2V0aGVyIGFuIEVycm9yIHdhcyBjYXVzZWQgYnkgdGhlIE5vZGVqcyBgcHJvY2Vzcy5zcGF3bmAgQVBJLlxuICpcbiAqIEBwYXJhbSAgIHtFcnJvcn0gICBlcnIgVGhlIEVycm9yIG9iamVjdCB0byB2ZXJpZnlcbiAqIEByZXR1cm5zIHtCb29sZWFufSAgICAgQSBib29sIGluZGljYXRpbmcgd2V0aGVyIHRoZSBpbnB1dCBFcnJvciBpcyBjb250YWluaW5nIHByb2Nlc3Muc3Bhd24gb3V0cHV0LlxuICovXG5jb25zdCBpc0V4ZWNTcGF3bkVycm9yID0gKGVycjogYW55KTogZXJyIGlzIEVycm9yICYgU3Bhd25TeW5jUmV0dXJuczxhbnk+ID0+XG4gIFwib3V0cHV0XCIgaW4gZXJyICYmXG4gIEFycmF5LmlzQXJyYXkoZXJyLm91dHB1dCkgJiZcbiAgZXJyLm91dHB1dC5zb21lKChidWY6IGFueSkgPT4gQnVmZmVyLmlzQnVmZmVyKGJ1ZikpO1xuXG4vKipcbiAqIEEgaGVscGVyIHV0aWwgdG8gYXBwZW5kIGBwcm9jZXNzLnNwYXduYCBvdXRwdXQgdG8gYXNzZXJ0aW9uIG1lc3NhZ2VzIHRvIGltcHJvdmUgZGV2ZWxvcGVyIGV4cGlyaWVuY2UuXG4gKlxuICogQHBhcmFtICAge1N0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBvcHRpb25hbGx5IGFwcGVuZCBwcm9jZXNzIG91dHB1dCB0by5cbiAqIEBwYXJhbSAgIHtFcnJvcn0gIGVyciAgICAgVGhlIGVycm9yIGZyb20gd2hpY2ggdGhlIGBwcm9jZXNzLnNwYXduYCBvdXRwdXQgc2hvdWxkIGJlIHJldHJlaXZlZCBmcm9tLlxuICogQHJldHVybnMge1N0cmluZ30gICAgICAgICBUaGUgZmluYWxpemVkIGFzc2VydGlvbiBtZXNzYWdlIGRlY29yYXRlZCB3aXRoIHRoZSBgcHJvY2Vzcy5zcGF3bmAgb3V0cHV0LlxuICovXG5jb25zdCB3aXRoUHJvY2Vzc091dHB1dCA9IChtZXNzYWdlOiBzdHJpbmcsIGVycjogdW5rbm93bikgPT4ge1xuICBsZXQgb3V0cHV0ID0gXCJcIjtcblxuICBpZiAoaXNFeGVjU3Bhd25FcnJvcihlcnIpKSB7XG4gICAgb3V0cHV0ID1cbiAgICAgIGVyci5vdXRwdXRcbiAgICAgICAgPy5tYXAoKGJ1ZmZlcjogQnVmZmVyKSA9PiBidWZmZXI/LnRvU3RyaW5nKFwidXRmOFwiKSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbihcIlxcblwiKSA/PyBcIlwiO1xuICB9XG5cbiAgY29uc3QgYXBwZW5kaXggPSBvdXRwdXQubGVuZ3RoID8gYC4gT3V0cHV0OiAke291dHB1dH1gIDogXCJcIjtcblxuICByZXR1cm4gYCR7bWVzc2FnZX06ICR7ZXJyfSR7YXBwZW5kaXh9LmA7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZ1bmN0aW9uIHRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMgdXNpbmcgdGhlIGV2YWx1YXRpb24gcHJvcGVydGllcyBvZiBjdXN0b21QYXNzRXZhbHVhdGlvblxuICogQHBhcmFtIGN1c3RvbVBhc3NFdmFsdWF0aW9uXG4gKiBAcmV0dXJucyB7Z2V0VG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllc350b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyhcbiAgY3VzdG9tUGFzc0V2YWx1YXRpb24/OiAoXG4gICAgaXRlbXM6IGFueSxcbiAgICBhc3NlcnRlZFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICkgPT4gYm9vbGVhbixcbikge1xuICAvKipcbiAgICogRXZhbHVhdGVzIHRoZSByZWNlaXZlZCBzdGFjayB0byBoYXZlIHRoZSBwcm92aWRlciByZXNvdXJjZVR5cGUgY29udGFpbmluZyBzcGVjaWZpZWQgcHJvcGVydGllc1xuICAgKiBAcGFyYW0gcmVjZWl2ZWRcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZVxuICAgKiBAcGFyYW0gcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyB7QXNzZXJ0aW9uUmV0dXJufVxuICAgKi9cbiAgcmV0dXJuIGZ1bmN0aW9uIHRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogQXNzZXJ0aW9uUmV0dXJuIHtcbiAgICByZXR1cm4gZ2V0QXNzZXJ0RWxlbWVudFdpdGhQcm9wZXJ0aWVzKFxuICAgICAgXCJ0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzXCIsXG4gICAgICBjdXN0b21QYXNzRXZhbHVhdGlvbixcbiAgICApKFwicHJvdmlkZXJcIiwgcmVjZWl2ZWQsIHJlc291cmNlVHlwZSwgcHJvcGVydGllcyk7XG4gIH07XG59XG5cbi8qKlxuICogRXZhbHVhdGVzIHRoZSB2YWxpZGl0eSBvZiB0aGUgcmVjZWl2ZWQgc3RhY2tcbiAqIEBwYXJhbSByZWNlaXZlZFxuICogQHJldHVybnMge0Fzc2VydGlvblJldHVybn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZDogc3RyaW5nKTogQXNzZXJ0aW9uUmV0dXJuIHtcbiAgdHJ5IHtcbiAgICBpZiAoIWZzLnN0YXRTeW5jKHJlY2VpdmVkKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0aHJvdyBtYXRjaGVyc1BhdGhJc05vdERpcmVjdG9yeShcInRvQmVWYWxpZFRlcnJhZm9ybVwiKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIGBFeHBlY3RlZCBzdWJqZWN0IHRvIGJlIGEgdGVycmFmb3JtIGRpcmVjdG9yeTogJHtlfWAsXG4gICAgICBmYWxzZSxcbiAgICApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5yZXNvbHZlKHJlY2VpdmVkLCBcIm1hbmlmZXN0Lmpzb25cIiksIFwidXRmOFwiKSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhY2tzID0gT2JqZWN0LmVudHJpZXMobWFuaWZlc3Quc3RhY2tzKTtcblxuICAgIHN0YWNrcy5mb3JFYWNoKChbbmFtZSwgc3RhY2tdKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICBjd2Q6IHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgKHN0YWNrIGFzIGFueSkud29ya2luZ0RpcmVjdG9yeSksXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHN0ZGlvOiBcInBpcGVcIixcbiAgICAgIH0gYXMgYW55O1xuICAgICAgZXhlY1N5bmMoYCR7dGVycmFmb3JtQmluYXJ5TmFtZX0gaW5pdGAsIG9wdHMpO1xuICAgICAgY29uc3Qgb3V0ID0gZXhlY1N5bmMoYCR7dGVycmFmb3JtQmluYXJ5TmFtZX0gdmFsaWRhdGUgLWpzb25gLCBvcHRzKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShvdXQudG9TdHJpbmcoKSk7XG4gICAgICBpZiAoIXJlc3VsdC52YWxpZCkge1xuICAgICAgICB0aHJvdyBtYXRjaGVyc0ZvdW5kRXJyb3JzSW5TdGFjayhcbiAgICAgICAgICByZXN1bHQuZXJyb3JfY291bnQsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICByZXN1bHQuZGlhZ25vc3RpY3Muam9pbihcIlxcblwiKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIGBFeHBlY3RlZCBzdWJqZWN0IG5vdCB0byBiZSBhIHZhbGlkIHRlcnJhZm9ybSBzdGFja2AsXG4gICAgICB0cnVlLFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIHdpdGhQcm9jZXNzT3V0cHV0KGBFeHBlY3RlZCBzdWJqZWN0IHRvIGJlIGEgdmFsaWQgdGVycmFmb3JtIHN0YWNrYCwgZSksXG4gICAgICBmYWxzZSxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogRXZhbHVhdGVzIHRoZSBhYmlsaXR5IGZvciB0aGUgcmVjZWl2ZWQgc3RhY2sgdG8gc3VjY2Vzc2Z1bGx5IHBsYW5cbiAqIEBwYXJhbSByZWNlaXZlZFxuICogQHJldHVybnMge0Fzc2VydGlvblJldHVybn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGxhblN1Y2Nlc3NmdWxseShyZWNlaXZlZDogc3RyaW5nKTogQXNzZXJ0aW9uUmV0dXJuIHtcbiAgdHJ5IHtcbiAgICBpZiAoIWZzLnN0YXRTeW5jKHJlY2VpdmVkKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0aHJvdyBtYXRjaGVyc1BhdGhJc05vdERpcmVjdG9yeShcInRvUGxhblN1Y2Nlc3NmdWxseVwiKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIGBFeHBlY3RlZCBzdWJqZWN0IHRvIGJlIGEgdGVycmFmb3JtIGRpcmVjdG9yeTogJHtlfWAsXG4gICAgICBmYWxzZSxcbiAgICApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5yZXNvbHZlKHJlY2VpdmVkLCBcIm1hbmlmZXN0Lmpzb25cIiksIFwidXRmOFwiKSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhY2tzID0gT2JqZWN0LmVudHJpZXMobWFuaWZlc3Quc3RhY2tzKTtcblxuICAgIHN0YWNrcy5mb3JFYWNoKChbLCBzdGFja10pID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICAgIGN3ZDogcGF0aC5yZXNvbHZlKHJlY2VpdmVkLCAoc3RhY2sgYXMgYW55KS53b3JraW5nRGlyZWN0b3J5KSxcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgc3RkaW86IFwiaWdub3JlXCIsXG4gICAgICB9IGFzIGFueTtcbiAgICAgIGV4ZWNTeW5jKGAke3RlcnJhZm9ybUJpbmFyeU5hbWV9IGluaXRgLCBvcHRzKTtcblxuICAgICAgLy8gVGhyb3dzIG9uIGEgbm9uLXplcm8gZXhpdCBjb2RlXG4gICAgICBleGVjU3luYyhgJHt0ZXJyYWZvcm1CaW5hcnlOYW1lfSBwbGFuIC1pbnB1dD1mYWxzZSAtbG9jaz1mYWxzZSBgLCBvcHRzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uUmV0dXJuKFxuICAgICAgYEV4cGVjdGVkIHN1YmplY3Qgbm90IHRvIHBsYW4gc3VjY2Vzc2Z1bGx5YCxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uUmV0dXJuKFxuICAgICAgd2l0aFByb2Nlc3NPdXRwdXQoYEV4cGVjdGVkIHN1YmplY3QgdG8gcGxhbiBzdWNjZXNzZnVsbHlgLCBlKSxcbiAgICAgIGZhbHNlLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|