@cdktn/hcl2cdk 0.23.0-pre.7 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient.d.ts +0 -1
- package/build/__tests__/coerceType.test.js +165 -0
- package/build/__tests__/expressionToTs.test.js +693 -0
- package/build/__tests__/expressions.test.js +415 -0
- package/build/__tests__/findExpressionType.test.js +105 -0
- package/build/__tests__/functions.test.js +605 -0
- package/build/__tests__/generation.test.js +45 -0
- package/build/__tests__/jsii-rosetta-workarounds.test.js +86 -0
- package/build/__tests__/partialCode.test.js +390 -0
- package/build/__tests__/terraformSchema.test.js +105 -0
- package/build/__tests__/testHelpers.js +16 -0
- package/build/coerceType.js +240 -0
- package/build/dynamic-blocks.js +44 -0
- package/build/expressions.js +633 -0
- package/build/function-bindings/functions.generated.js +1142 -0
- package/build/function-bindings/functions.js +73 -0
- package/{lib → build}/generation.js +4 -4
- package/{lib → build}/index.d.ts +2 -2
- package/build/index.js +364 -0
- package/build/iteration.js +87 -0
- package/build/jsii-rosetta-workarounds.js +126 -0
- package/build/partialCode.js +116 -0
- package/build/provider.js +40 -0
- package/build/references.js +141 -0
- package/build/schema.js +81 -0
- package/build/telemetryAllowList.json +24 -0
- package/build/terraformSchema.js +136 -0
- package/build/types.js +3 -0
- package/build/utils.js +25 -0
- package/build/variables.js +172 -0
- package/package.json +13 -14
- package/tsconfig.json +4 -2
- package/lib/__tests__/coerceType.test.js +0 -165
- package/lib/__tests__/expressionToTs.test.js +0 -693
- package/lib/__tests__/expressions.test.js +0 -415
- package/lib/__tests__/findExpressionType.test.js +0 -105
- package/lib/__tests__/functions.test.js +0 -605
- package/lib/__tests__/generation.test.js +0 -45
- package/lib/__tests__/jsii-rosetta-workarounds.test.js +0 -86
- package/lib/__tests__/partialCode.test.js +0 -390
- package/lib/__tests__/terraformSchema.test.js +0 -105
- package/lib/__tests__/testHelpers.js +0 -16
- package/lib/coerceType.js +0 -240
- package/lib/dynamic-blocks.js +0 -44
- package/lib/expressions.js +0 -634
- package/lib/function-bindings/functions.generated.js +0 -1142
- package/lib/function-bindings/functions.js +0 -73
- package/lib/index.js +0 -364
- package/lib/iteration.js +0 -87
- package/lib/jsii-rosetta-workarounds.js +0 -126
- package/lib/partialCode.js +0 -116
- package/lib/provider.js +0 -40
- package/lib/references.js +0 -141
- package/lib/schema.js +0 -81
- package/lib/terraformSchema.js +0 -136
- package/lib/types.js +0 -3
- package/lib/utils.js +0 -25
- package/lib/variables.js +0 -172
- /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
- /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
- /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
- /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
- /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
- /package/{lib → build}/coerceType.d.ts +0 -0
- /package/{lib → build}/dynamic-blocks.d.ts +0 -0
- /package/{lib → build}/expressions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
- /package/{lib → build}/generation.d.ts +0 -0
- /package/{lib → build}/iteration.d.ts +0 -0
- /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
- /package/{lib → build}/partialCode.d.ts +0 -0
- /package/{lib → build}/provider.d.ts +0 -0
- /package/{lib → build}/references.d.ts +0 -0
- /package/{lib → build}/schema.d.ts +0 -0
- /package/{lib → build}/terraformSchema.d.ts +0 -0
- /package/{lib → build}/types.d.ts +0 -0
- /package/{lib → build}/utils.d.ts +0 -0
- /package/{lib → build}/variables.d.ts +0 -0
- /package/{lib → src}/telemetryAllowList.json +0 -0
package/ambient.d.ts
CHANGED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
// Copyright (c) HashiCorp, Inc
|
|
7
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
8
|
+
const coerceType_1 = require("../coerceType");
|
|
9
|
+
const template_1 = __importDefault(require("@babel/template"));
|
|
10
|
+
const generator_1 = __importDefault(require("@babel/generator"));
|
|
11
|
+
function expressionify(code) {
|
|
12
|
+
return template_1.default.ast(code).expression;
|
|
13
|
+
}
|
|
14
|
+
function generateCode(ast) {
|
|
15
|
+
return (0, generator_1.default)(ast).code;
|
|
16
|
+
}
|
|
17
|
+
const scope = {
|
|
18
|
+
importables: [],
|
|
19
|
+
variables: {
|
|
20
|
+
a_user_defined_variable: {
|
|
21
|
+
resource: "var",
|
|
22
|
+
variableName: "aUserDefinedVariable",
|
|
23
|
+
},
|
|
24
|
+
a_user_defined_local: {
|
|
25
|
+
resource: "var",
|
|
26
|
+
variableName: "aUserDefinedTerraformLocal",
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
describe("coerceType", () => {
|
|
31
|
+
it.each([
|
|
32
|
+
{ code: `"hello-world"`, type: "string", targetType: undefined },
|
|
33
|
+
{ code: `"hello-world"`, type: "string", targetType: "string" },
|
|
34
|
+
])("should change nothing for %p ", ({ code, type, targetType }) => {
|
|
35
|
+
expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(code);
|
|
36
|
+
});
|
|
37
|
+
it.each([
|
|
38
|
+
{
|
|
39
|
+
code: `"300"`,
|
|
40
|
+
type: "string",
|
|
41
|
+
targetType: "number",
|
|
42
|
+
expectedCode: `Token.asNumber("300")`,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
code: `300`,
|
|
46
|
+
type: "number",
|
|
47
|
+
targetType: "string",
|
|
48
|
+
expectedCode: `Token.asString(300)`,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
code: `"['foo', 'bar']"`,
|
|
52
|
+
type: "string",
|
|
53
|
+
targetType: ["list", "string"],
|
|
54
|
+
expectedCode: `Token.asList("['foo', 'bar']")`,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
code: `"[1,2,3]"`,
|
|
58
|
+
type: "string",
|
|
59
|
+
targetType: ["list", "number"],
|
|
60
|
+
expectedCode: `Token.asNumberList("[1,2,3]")`,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
code: `"['foo', 'bar']"`,
|
|
64
|
+
type: "string",
|
|
65
|
+
targetType: ["set", "string"],
|
|
66
|
+
expectedCode: `Token.asList("['foo', 'bar']")`,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
code: `"[1,2,3]"`,
|
|
70
|
+
type: "string",
|
|
71
|
+
targetType: ["set", "number"],
|
|
72
|
+
expectedCode: `Token.asNumberList("[1,2,3]")`,
|
|
73
|
+
},
|
|
74
|
+
// We don't have a token function for boolean lists, so we need to take an asAny
|
|
75
|
+
{
|
|
76
|
+
code: `"[true,false,true]"`,
|
|
77
|
+
type: "string",
|
|
78
|
+
targetType: ["list", "bool"],
|
|
79
|
+
expectedCode: `Token.asAny("[true,false,true]")`,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
code: `"{ foo: 'bar' }"`,
|
|
83
|
+
type: "string",
|
|
84
|
+
targetType: ["map", "string"],
|
|
85
|
+
expectedCode: `Token.asStringMap("{ foo: 'bar' }")`,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
code: `"{ foo: 1 }"`,
|
|
89
|
+
type: "string",
|
|
90
|
+
targetType: ["map", "number"],
|
|
91
|
+
expectedCode: `Token.asNumberMap("{ foo: 1 }")`,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
code: `"{ foo: true }"`,
|
|
95
|
+
type: "string",
|
|
96
|
+
targetType: ["map", "bool"],
|
|
97
|
+
expectedCode: `Token.asBooleanMap("{ foo: true }")`,
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
code: `"{ foo: {bar: true} }"`,
|
|
101
|
+
type: "string",
|
|
102
|
+
targetType: ["map", ["map", "boolean"]],
|
|
103
|
+
expectedCode: `Token.asAnyMap("{ foo: {bar: true} }")`,
|
|
104
|
+
},
|
|
105
|
+
])("should use Token functions %p", ({ code, type, targetType, expectedCode }) => {
|
|
106
|
+
expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(expectedCode);
|
|
107
|
+
});
|
|
108
|
+
it.each([
|
|
109
|
+
{
|
|
110
|
+
code: `aUserDefinedVariable.value`,
|
|
111
|
+
type: "dynamic",
|
|
112
|
+
targetType: "string",
|
|
113
|
+
expectedCode: `aUserDefinedVariable.stringValue`,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
code: `aUserDefinedVariable.value`,
|
|
117
|
+
type: "dynamic",
|
|
118
|
+
targetType: "number",
|
|
119
|
+
expectedCode: `aUserDefinedVariable.numberValue`,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
code: `aUserDefinedVariable.value`,
|
|
123
|
+
type: "dynamic",
|
|
124
|
+
targetType: ["list", "string"],
|
|
125
|
+
expectedCode: `aUserDefinedVariable.listValue`,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
code: `aUserDefinedVariable.value`,
|
|
129
|
+
type: "dynamic",
|
|
130
|
+
targetType: "bool",
|
|
131
|
+
expectedCode: `aUserDefinedVariable.booleanValue`,
|
|
132
|
+
},
|
|
133
|
+
])("should use TerraformVariables accessors %p", ({ code, type, targetType, expectedCode }) => {
|
|
134
|
+
expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(expectedCode);
|
|
135
|
+
});
|
|
136
|
+
it.each([
|
|
137
|
+
{
|
|
138
|
+
code: `aUserDefinedTerraformLocal.value`,
|
|
139
|
+
type: "dynamic",
|
|
140
|
+
targetType: "string",
|
|
141
|
+
expectedCode: `aUserDefinedTerraformLocal.stringValue`,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
code: `aUserDefinedTerraformLocal.value`,
|
|
145
|
+
type: "dynamic",
|
|
146
|
+
targetType: "number",
|
|
147
|
+
expectedCode: `aUserDefinedTerraformLocal.numberValue`,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
code: `aUserDefinedTerraformLocal.value`,
|
|
151
|
+
type: "dynamic",
|
|
152
|
+
targetType: ["list", "string"],
|
|
153
|
+
expectedCode: `aUserDefinedTerraformLocal.listValue`,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
code: `aUserDefinedTerraformLocal.value`,
|
|
157
|
+
type: "dynamic",
|
|
158
|
+
targetType: "bool",
|
|
159
|
+
expectedCode: `aUserDefinedTerraformLocal.booleanValue`,
|
|
160
|
+
},
|
|
161
|
+
])("should use TerraformLocal accessors %p", ({ code, type, targetType, expectedCode }) => {
|
|
162
|
+
expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(expectedCode);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlVHlwZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9jb2VyY2VUeXBlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDhDQUEyQztBQUMzQywrREFBdUM7QUFDdkMsaUVBQXdDO0FBRXhDLFNBQVMsYUFBYSxDQUFDLElBQVk7SUFDakMsT0FBUSxrQkFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQVMsQ0FBQyxVQUFVLENBQUM7QUFDaEQsQ0FBQztBQUNELFNBQVMsWUFBWSxDQUFDLEdBQVE7SUFDNUIsT0FBTyxJQUFBLG1CQUFRLEVBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLEtBQUssR0FBUTtJQUNqQixXQUFXLEVBQUUsRUFBRTtJQUNmLFNBQVMsRUFBRTtRQUNULHVCQUF1QixFQUFFO1lBQ3ZCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLHNCQUFzQjtTQUNyQztRQUNELG9CQUFvQixFQUFFO1lBQ3BCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLDRCQUE0QjtTQUMzQztLQUNGO0NBQ0YsQ0FBQztBQUVGLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO1FBQ2hFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7S0FDaEUsQ0FBQyxDQUFDLCtCQUErQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7UUFDakUsTUFBTSxDQUNKLFlBQVksQ0FDVixJQUFBLHVC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SSxFQUFFLGtDQUFrQztZQUN4QyxJQUFJLEVBQUUsU0FBUztZQUNmLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFlBQVksRUFBRSx5Q0FBeUM7U0FDeEQ7S0FDRixDQUFDLENBQ0Esd0NBQXdDLEVBQ3hDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1FBQzNDLE1BQU0sQ0FDSixZQUFZLENBQ1YsSUFBQSx1QkFBVSxFQUNSLEtBQUssRUFDTCxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQ25CLElBQVcsRUFDWCxVQUFpQixDQUNsQixDQUNGLENBQ0YsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBjb2VyY2VUeXBlIH0gZnJvbSBcIi4uL2NvZXJjZVR5cGVcIjtcbmltcG9ydCB0ZW1wbGF0ZSBmcm9tIFwiQGJhYmVsL3RlbXBsYXRlXCI7XG5pbXBvcnQgZ2VuZXJhdGUgZnJvbSBcIkBiYWJlbC9nZW5lcmF0b3JcIjtcblxuZnVuY3Rpb24gZXhwcmVzc2lvbmlmeShjb2RlOiBzdHJpbmcpIHtcbiAgcmV0dXJuICh0ZW1wbGF0ZS5hc3QoY29kZSkgYXMgYW55KS5leHByZXNzaW9uO1xufVxuZnVuY3Rpb24gZ2VuZXJhdGVDb2RlKGFzdDogYW55KSB7XG4gIHJldHVybiBnZW5lcmF0ZShhc3QpLmNvZGU7XG59XG5cbmNvbnN0IHNjb3BlOiBhbnkgPSB7XG4gIGltcG9ydGFibGVzOiBbXSxcbiAgdmFyaWFibGVzOiB7XG4gICAgYV91c2VyX2RlZmluZWRfdmFyaWFibGU6IHtcbiAgICAgIHJlc291cmNlOiBcInZhclwiLFxuICAgICAgdmFyaWFibGVOYW1lOiBcImFVc2VyRGVmaW5lZFZhcmlhYmxlXCIsXG4gICAgfSxcbiAgICBhX3VzZXJfZGVmaW5lZF9sb2NhbDoge1xuICAgICAgcmVzb3VyY2U6IFwidmFyXCIsXG4gICAgICB2YXJpYWJsZU5hbWU6IFwiYVVzZXJEZWZpbmVkVGVycmFmb3JtTG9jYWxcIixcbiAgICB9LFxuICB9LFxufTtcblxuZGVzY3JpYmUoXCJjb2VyY2VUeXBlXCIsICgpID0+IHtcbiAgaXQuZWFjaChbXG4gICAgeyBjb2RlOiBgXCJoZWxsby13b3JsZFwiYCwgdHlwZTogXCJzdHJpbmdcIiwgdGFyZ2V0VHlwZTogdW5kZWZpbmVkIH0sXG4gICAgeyBjb2RlOiBgXCJoZWxsby13b3JsZFwiYCwgdHlwZTogXCJzdHJpbmdcIiwgdGFyZ2V0VHlwZTogXCJzdHJpbmdcIiB9LFxuICBdKShcInNob3VsZCBjaGFuZ2Ugbm90aGluZyBmb3IgJXAgXCIsICh7IGNvZGUsIHR5cGUsIHRhcmdldFR5cGUgfSkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGdlbmVyYXRlQ29kZShcbiAgICAgICAgY29lcmNlVHlwZShzY29wZSwgZXhwcmVzc2lvbmlmeShjb2RlKSwgdHlwZSBhcyBhbnksIHRhcmdldFR5cGUgYXMgYW55KSxcbiAgICAgICksXG4gICAgKS50b0VxdWFsKGNvZGUpO1xuICB9KTtcblxuICBpdC5lYWNoKFtcbiAgICB7XG4gICAgICBjb2RlOiBgXCIzMDBcImAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgdGFyZ2V0VHlwZTogXCJudW1iZXJcIixcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzTnVtYmVyKFwiMzAwXCIpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGAzMDBgLFxuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIHRhcmdldFR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc1N0cmluZygzMDApYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBcIlsnZm9vJywgJ2JhciddXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc0xpc3QoXCJbJ2ZvbycsICdiYXInXVwiKWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgXCJbMSwyLDNdXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcImxpc3RcIiwgXCJudW1iZXJcIl0sXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc051bWJlckxpc3QoXCJbMSwyLDNdXCIpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBcIlsnZm9vJywgJ2JhciddXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcInNldFwiLCBcInN0cmluZ1wiXSxcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzTGlzdChcIlsnZm9vJywgJ2JhciddXCIpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBcIlsxLDIsM11cImAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgdGFyZ2V0VHlwZTogW1wic2V0XCIsIFwibnVtYmVyXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNOdW1iZXJMaXN0KFwiWzEsMiwzXVwiKWAsXG4gICAgfSxcbiAgICAvLyBXZSBkb24ndCBoYXZlIGEgdG9rZW4gZnVuY3Rpb24gZm9yIGJvb2xlYW4gbGlzdHMsIHNvIHdlIG5lZWQgdG8gdGFrZSBhbiBhc0FueVxuICAgIHtcbiAgICAgIGNvZGU6IGBcIlt0cnVlLGZhbHNlLHRydWVdXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcImxpc3RcIiwgXCJib29sXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNBbnkoXCJbdHJ1ZSxmYWxzZSx0cnVlXVwiKWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgXCJ7IGZvbzogJ2JhcicgfVwiYCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJtYXBcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc1N0cmluZ01hcChcInsgZm9vOiAnYmFyJyB9XCIpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBcInsgZm9vOiAxIH1cImAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgdGFyZ2V0VHlwZTogW1wibWFwXCIsIFwibnVtYmVyXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNOdW1iZXJNYXAoXCJ7IGZvbzogMSB9XCIpYCxcbiAgICB9LFxuXG4gICAge1xuICAgICAgY29kZTogYFwieyBmb286IHRydWUgfVwiYCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJtYXBcIiwgXCJib29sXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNCb29sZWFuTWFwKFwieyBmb286IHRydWUgfVwiKWAsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNvZGU6IGBcInsgZm9vOiB7YmFyOiB0cnVlfSB9XCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcIm1hcFwiLCBbXCJtYXBcIiwgXCJib29sZWFuXCJdXSxcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzQW55TWFwKFwieyBmb286IHtiYXI6IHRydWV9IH1cIilgLFxuICAgIH0sXG4gIF0pKFxuICAgIFwic2hvdWxkIHVzZSBUb2tlbiBmdW5jdGlvbnMgJXBcIixcbiAgICAoeyBjb2RlLCB0eXBlLCB0YXJnZXRUeXBlLCBleHBlY3RlZENvZGUgfSkgPT4ge1xuICAgICAgZXhwZWN0KFxuICAgICAgICBnZW5lcmF0ZUNvZGUoXG4gICAgICAgICAgY29lcmNlVHlwZShcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgZXhwcmVzc2lvbmlmeShjb2RlKSxcbiAgICAgICAgICAgIHR5cGUgYXMgYW55LFxuICAgICAgICAgICAgdGFyZ2V0VHlwZSBhcyBhbnksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICkudG9FcXVhbChleHBlY3RlZENvZGUpO1xuICAgIH0sXG4gICk7XG5cbiAgaXQuZWFjaChbXG4gICAge1xuICAgICAgY29kZTogYGFVc2VyRGVmaW5lZFZhcmlhYmxlLnZhbHVlYCxcbiAgICAgIHR5cGU6IFwiZHluYW1pY1wiLFxuICAgICAgdGFyZ2V0VHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGV4cGVjdGVkQ29kZTogYGFVc2VyRGVmaW5lZFZhcmlhYmxlLnN0cmluZ1ZhbHVlYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBhVXNlckRlZmluZWRWYXJpYWJsZS52YWx1ZWAsXG4gICAgICB0eXBlOiBcImR5bmFtaWNcIixcbiAgICAgIHRhcmdldFR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBleHBlY3RlZENvZGU6IGBhVXNlckRlZmluZWRWYXJpYWJsZS5udW1iZXJWYWx1ZWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgYVVzZXJEZWZpbmVkVmFyaWFibGUudmFsdWVgLFxuICAgICAgdHlwZTogXCJkeW5hbWljXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgYVVzZXJEZWZpbmVkVmFyaWFibGUubGlzdFZhbHVlYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBhVXNlckRlZmluZWRWYXJpYWJsZS52YWx1ZWAsXG4gICAgICB0eXBlOiBcImR5bmFtaWNcIixcbiAgICAgIHRhcmdldFR5cGU6IFwiYm9vbFwiLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgYVVzZXJEZWZpbmVkVmFyaWFibGUuYm9vbGVhblZhbHVlYCxcbiAgICB9LFxuICBdKShcbiAgICBcInNob3VsZCB1c2UgVGVycmFmb3JtVmFyaWFibGVzIGFjY2Vzc29ycyAlcFwiLFxuICAgICh7IGNvZGUsIHR5cGUsIHRhcmdldFR5cGUsIGV4cGVjdGVkQ29kZSB9KSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGdlbmVyYXRlQ29kZShcbiAgICAgICAgICBjb2VyY2VUeXBlKFxuICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICBleHByZXNzaW9uaWZ5KGNvZGUpLFxuICAgICAgICAgICAgdHlwZSBhcyBhbnksXG4gICAgICAgICAgICB0YXJnZXRUeXBlIGFzIGFueSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKS50b0VxdWFsKGV4cGVjdGVkQ29kZSk7XG4gICAgfSxcbiAgKTtcblxuICBpdC5lYWNoKFtcbiAgICB7XG4gICAgICBjb2RlOiBgYVVzZXJEZWZpbmVkVGVycmFmb3JtTG9jYWwudmFsdWVgLFxuICAgICAgdHlwZTogXCJkeW5hbWljXCIsXG4gICAgICB0YXJnZXRUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgYVVzZXJEZWZpbmVkVGVycmFmb3JtTG9jYWwuc3RyaW5nVmFsdWVgLFxuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogYGFVc2VyRGVmaW5lZFRlcnJhZm9ybUxvY2FsLnZhbHVlYCxcbiAgICAgIHR5cGU6IFwiZHluYW1pY1wiLFxuICAgICAgdGFyZ2V0VHlwZTogXCJudW1iZXJcIixcbiAgICAgIGV4cGVjdGVkQ29kZTogYGFVc2VyRGVmaW5lZFRlcnJhZm9ybUxvY2FsLm51bWJlclZhbHVlYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBhVXNlckRlZmluZWRUZXJyYWZvcm1Mb2NhbC52YWx1ZWAsXG4gICAgICB0eXBlOiBcImR5bmFtaWNcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBleHBlY3RlZENvZGU6IGBhVXNlckRlZmluZWRUZXJyYWZvcm1Mb2NhbC5saXN0VmFsdWVgLFxuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogYGFVc2VyRGVmaW5lZFRlcnJhZm9ybUxvY2FsLnZhbHVlYCxcbiAgICAgIHR5cGU6IFwiZHluYW1pY1wiLFxuICAgICAgdGFyZ2V0VHlwZTogXCJib29sXCIsXG4gICAgICBleHBlY3RlZENvZGU6IGBhVXNlckRlZmluZWRUZXJyYWZvcm1Mb2NhbC5ib29sZWFuVmFsdWVgLFxuICAgIH0sXG4gIF0pKFxuICAgIFwic2hvdWxkIHVzZSBUZXJyYWZvcm1Mb2NhbCBhY2Nlc3NvcnMgJXBcIixcbiAgICAoeyBjb2RlLCB0eXBlLCB0YXJnZXRUeXBlLCBleHBlY3RlZENvZGUgfSkgPT4ge1xuICAgICAgZXhwZWN0KFxuICAgICAgICBnZW5lcmF0ZUNvZGUoXG4gICAgICAgICAgY29lcmNlVHlwZShcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgZXhwcmVzc2lvbmlmeShjb2RlKSxcbiAgICAgICAgICAgIHR5cGUgYXMgYW55LFxuICAgICAgICAgICAgdGFyZ2V0VHlwZSBhcyBhbnksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICkudG9FcXVhbChleHBlY3RlZENvZGUpO1xuICAgIH0sXG4gICk7XG59KTtcbiJdfQ==
|