rds-database-auto-start-preventer 0.5.3 → 0.6.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/.jsii +64 -18
- package/API.md +84 -2
- package/README.md +40 -2
- package/assets/funcs/auto-start-prevent.lambda/index.js +3540 -939
- package/assets/funcs/auto-start-prevent.lambda/index.js.map +4 -4
- package/lib/funcs/auto-start-prevent.lambda.d.ts +1 -0
- package/lib/funcs/auto-start-prevent.lambda.js +132 -94
- package/lib/funcs/core/auto-start-prevent.predicates.d.ts +28 -9
- package/lib/funcs/core/auto-start-prevent.predicates.js +44 -17
- package/lib/rds-database-auto-start-prevent-stack.d.ts +1 -1
- package/lib/rds-database-auto-start-prevent-stack.js +4 -3
- package/lib/rds-database-auto-start-preventer.d.ts +19 -1
- package/lib/rds-database-auto-start-preventer.js +71 -80
- package/lib/settings/consts.d.ts +19 -0
- package/lib/settings/consts.js +23 -0
- package/package.json +8 -5
|
@@ -1,49 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.RDSDatabaseAutoStartPreventer = void 0;
|
|
37
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
38
5
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
const
|
|
6
|
+
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
7
|
+
const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
|
|
8
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
9
|
+
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
10
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
44
11
|
const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
|
|
45
12
|
const constructs_1 = require("constructs");
|
|
13
|
+
const lambda_failure_detector_1 = require("lambda-failure-detector");
|
|
46
14
|
const auto_start_prevent_function_1 = require("./funcs/auto-start-prevent-function");
|
|
15
|
+
const consts_1 = require("./settings/consts");
|
|
16
|
+
/** EventBridge retries when delivering an auto-start event to the Lambda alias. */
|
|
17
|
+
const EVENT_TARGET_RETRY_ATTEMPTS = 2;
|
|
18
|
+
/** Log-based failures watched when failure detection is enabled. */
|
|
19
|
+
const AUTO_START_PREVENT_LOG_FILTERS = [
|
|
20
|
+
{
|
|
21
|
+
id: 'AutoStartPreventFailed',
|
|
22
|
+
filterPattern: `"${consts_1.AUTO_START_PREVENT_FAILED_LOG_TERM}"`,
|
|
23
|
+
metricNamespace: 'RDSDatabaseAutoStartPreventer',
|
|
24
|
+
metricName: 'AutoStartPreventFailed',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
47
27
|
/**
|
|
48
28
|
* Returns true when a concrete string is empty or whitespace-only.
|
|
49
29
|
* Unresolved CDK tokens are treated as present because their value is unknown at synthesis.
|
|
@@ -83,11 +63,13 @@ const validateProps = (props) => {
|
|
|
83
63
|
* using `TagList` from `rds:DescribeDBInstances` / `rds:DescribeDBClusters`.
|
|
84
64
|
* IAM grants account/region-scoped describe on `db` / `cluster` ARNs, and stop only
|
|
85
65
|
* when `aws:ResourceTag` matches {@link TargetResource} (no Resource Groups Tagging API).
|
|
66
|
+
* CloudWatch failure alarms are created only when
|
|
67
|
+
* {@link RDSDatabaseAutoStartPreventerProps.failureDetection} is enabled.
|
|
86
68
|
*/
|
|
87
69
|
class RDSDatabaseAutoStartPreventer extends constructs_1.Construct {
|
|
88
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "rds-database-auto-start-preventer.RDSDatabaseAutoStartPreventer", version: "0.
|
|
70
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "rds-database-auto-start-preventer.RDSDatabaseAutoStartPreventer", version: "0.6.0" };
|
|
89
71
|
/**
|
|
90
|
-
* Creates the Durable Lambda, EventBridge rules, and
|
|
72
|
+
* Creates the Durable Lambda, EventBridge rules, IAM policies, and optional failure alarms.
|
|
91
73
|
*
|
|
92
74
|
* The Lambda receives `{ event, params }` where `params` carries `tagKey` and `tagValues`
|
|
93
75
|
* from {@link RDSDatabaseAutoStartPreventerProps.targetResource}. Tag filters are passed
|
|
@@ -105,12 +87,19 @@ class RDSDatabaseAutoStartPreventer extends constructs_1.Construct {
|
|
|
105
87
|
const slackSecret = slackSecretName === undefined
|
|
106
88
|
? undefined
|
|
107
89
|
: aws_secretsmanager_1.Secret.fromSecretNameV2(this, 'SlackSecret', slackSecretName);
|
|
108
|
-
|
|
90
|
+
const autoStartPreventFunctionLogGroup = new aws_logs_1.LogGroup(this, 'AutoStartPreventFunctionLogGroup', {
|
|
91
|
+
retention: aws_logs_1.RetentionDays.THREE_MONTHS,
|
|
92
|
+
// Delete on failed create/rollback; retain after successful create (stack delete/replace).
|
|
93
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE,
|
|
94
|
+
});
|
|
95
|
+
// Durable Lambda that waits for the auto-started resource to settle, stops it when tags match,
|
|
96
|
+
// and posts to Slack after the stop when a Slack secret is configured.
|
|
109
97
|
// Durable Execution requires Node.js 22+.
|
|
110
98
|
const autoStartPreventFunction = new auto_start_prevent_function_1.AutoStartPreventFunction(this, 'AutoStartPreventFunction', {
|
|
111
99
|
description: 'A function to prevent the RDS Database or Cluster from starting automatically.',
|
|
112
|
-
architecture:
|
|
113
|
-
|
|
100
|
+
architecture: aws_lambda_1.Architecture.ARM_64,
|
|
101
|
+
// Durable waits suspend the invocation, so this only covers the API calls between waits.
|
|
102
|
+
timeout: aws_cdk_lib_1.Duration.minutes(3),
|
|
114
103
|
memorySize: 512,
|
|
115
104
|
retryAttempts: 2,
|
|
116
105
|
durableConfig: {
|
|
@@ -125,26 +114,22 @@ class RDSDatabaseAutoStartPreventer extends constructs_1.Construct {
|
|
|
125
114
|
// Required by aws-lambda-secret-fetcher (^0.6+) when Slack is configured.
|
|
126
115
|
paramsAndSecrets: slackSecret === undefined
|
|
127
116
|
? undefined
|
|
128
|
-
:
|
|
117
|
+
: aws_lambda_1.ParamsAndSecretsLayerVersion.fromVersion(aws_lambda_1.ParamsAndSecretsVersions.V1_0_103, {
|
|
129
118
|
cacheSize: 500,
|
|
130
|
-
logLevel:
|
|
119
|
+
logLevel: aws_lambda_1.ParamsAndSecretsLogLevel.INFO,
|
|
131
120
|
}),
|
|
132
|
-
role: new
|
|
121
|
+
role: new aws_iam_1.Role(this, 'AutoStartPreventFunctionRole', {
|
|
133
122
|
description: 'A role to control the RDS Database or Cluster.',
|
|
134
|
-
assumedBy: new
|
|
123
|
+
assumedBy: new aws_iam_1.ServicePrincipal('lambda.amazonaws.com'),
|
|
135
124
|
managedPolicies: [
|
|
136
|
-
|
|
137
|
-
|
|
125
|
+
aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole'),
|
|
126
|
+
aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicDurableExecutionRolePolicy'),
|
|
138
127
|
],
|
|
139
128
|
}),
|
|
140
|
-
logGroup:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}),
|
|
145
|
-
loggingFormat: lambda.LoggingFormat.JSON,
|
|
146
|
-
systemLogLevelV2: lambda.SystemLogLevel.INFO,
|
|
147
|
-
applicationLogLevelV2: lambda.ApplicationLogLevel.INFO,
|
|
129
|
+
logGroup: autoStartPreventFunctionLogGroup,
|
|
130
|
+
loggingFormat: aws_lambda_1.LoggingFormat.JSON,
|
|
131
|
+
systemLogLevelV2: aws_lambda_1.SystemLogLevel.INFO,
|
|
132
|
+
applicationLogLevelV2: aws_lambda_1.ApplicationLogLevel.INFO,
|
|
148
133
|
});
|
|
149
134
|
const rdsDbAndClusterArns = [
|
|
150
135
|
aws_cdk_lib_1.Stack.of(this).formatArn({
|
|
@@ -161,9 +146,9 @@ class RDSDatabaseAutoStartPreventer extends constructs_1.Construct {
|
|
|
161
146
|
}),
|
|
162
147
|
];
|
|
163
148
|
// Describe stays without ResourceTag so TagList can be read for non-matching resources.
|
|
164
|
-
autoStartPreventFunction.addToRolePolicy(new
|
|
149
|
+
autoStartPreventFunction.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
165
150
|
sid: 'RdsDescribeForTagFilter',
|
|
166
|
-
effect:
|
|
151
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
167
152
|
actions: [
|
|
168
153
|
'rds:DescribeDBInstances',
|
|
169
154
|
'rds:DescribeDBClusters',
|
|
@@ -171,9 +156,9 @@ class RDSDatabaseAutoStartPreventer extends constructs_1.Construct {
|
|
|
171
156
|
resources: rdsDbAndClusterArns,
|
|
172
157
|
}));
|
|
173
158
|
// Stop is limited to db/cluster ARNs whose tag matches targetResource.
|
|
174
|
-
autoStartPreventFunction.addToRolePolicy(new
|
|
159
|
+
autoStartPreventFunction.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
175
160
|
sid: 'RdsStopTaggedTargets',
|
|
176
|
-
effect:
|
|
161
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
177
162
|
actions: [
|
|
178
163
|
'rds:StopDBInstance',
|
|
179
164
|
'rds:StopDBCluster',
|
|
@@ -188,49 +173,55 @@ class RDSDatabaseAutoStartPreventer extends constructs_1.Construct {
|
|
|
188
173
|
if (slackSecret !== undefined) {
|
|
189
174
|
slackSecret.grantRead(autoStartPreventFunction);
|
|
190
175
|
}
|
|
176
|
+
(0, lambda_failure_detector_1.createLambdaFailureDetector)(this, 'FailureDetection', {
|
|
177
|
+
failureDetection: props.failureDetection,
|
|
178
|
+
lambdaFunction: autoStartPreventFunction,
|
|
179
|
+
logGroup: autoStartPreventFunctionLogGroup,
|
|
180
|
+
logFilters: AUTO_START_PREVENT_LOG_FILTERS,
|
|
181
|
+
});
|
|
191
182
|
// See: https://docs.aws.amazon.com/lambda/latest/dg/durable-getting-started-iac.html
|
|
192
183
|
const autoStartPreventFunctionAlias = autoStartPreventFunction.addAlias('live');
|
|
193
184
|
const enableRule = props.enableRule !== false;
|
|
194
185
|
// Pass the EventBridge event and tag filter params to the Lambda target input.
|
|
195
|
-
const lambdaInput =
|
|
196
|
-
event:
|
|
186
|
+
const lambdaInput = aws_events_1.RuleTargetInput.fromObject({
|
|
187
|
+
event: aws_events_1.EventField.fromPath('$'),
|
|
197
188
|
params: {
|
|
198
189
|
tagKey: props.targetResource.tagKey,
|
|
199
190
|
tagValues: props.targetResource.tagValues,
|
|
200
191
|
},
|
|
201
192
|
});
|
|
202
|
-
//
|
|
203
|
-
new
|
|
204
|
-
description: '
|
|
193
|
+
// EventBridge rule for DB instance auto-start events (RDS-EVENT-0154).
|
|
194
|
+
new aws_events_1.Rule(this, 'DBInstanceEvent', {
|
|
195
|
+
description: 'Catches RDS DB instance auto-start events (RDS-EVENT-0154).',
|
|
205
196
|
enabled: enableRule,
|
|
206
197
|
eventPattern: {
|
|
207
|
-
source: [
|
|
208
|
-
detailType: [
|
|
198
|
+
source: [consts_1.RDS_EVENT_SOURCE],
|
|
199
|
+
detailType: [consts_1.DB_INSTANCE_AUTO_START_EVENT.detailType],
|
|
209
200
|
detail: {
|
|
210
|
-
EventID: [
|
|
201
|
+
EventID: [consts_1.DB_INSTANCE_AUTO_START_EVENT.eventId],
|
|
211
202
|
},
|
|
212
203
|
},
|
|
213
204
|
targets: [
|
|
214
|
-
new
|
|
215
|
-
retryAttempts:
|
|
205
|
+
new aws_events_targets_1.LambdaFunction(autoStartPreventFunctionAlias, {
|
|
206
|
+
retryAttempts: EVENT_TARGET_RETRY_ATTEMPTS,
|
|
216
207
|
event: lambdaInput,
|
|
217
208
|
}),
|
|
218
209
|
],
|
|
219
210
|
});
|
|
220
|
-
//
|
|
221
|
-
new
|
|
222
|
-
description: '
|
|
211
|
+
// EventBridge rule for DB cluster auto-start events (RDS-EVENT-0153).
|
|
212
|
+
new aws_events_1.Rule(this, 'DBClusterEvent', {
|
|
213
|
+
description: 'Catches RDS DB cluster auto-start events (RDS-EVENT-0153).',
|
|
223
214
|
enabled: enableRule,
|
|
224
215
|
eventPattern: {
|
|
225
|
-
source: [
|
|
226
|
-
detailType: [
|
|
216
|
+
source: [consts_1.RDS_EVENT_SOURCE],
|
|
217
|
+
detailType: [consts_1.DB_CLUSTER_AUTO_START_EVENT.detailType],
|
|
227
218
|
detail: {
|
|
228
|
-
EventID: [
|
|
219
|
+
EventID: [consts_1.DB_CLUSTER_AUTO_START_EVENT.eventId],
|
|
229
220
|
},
|
|
230
221
|
},
|
|
231
222
|
targets: [
|
|
232
|
-
new
|
|
233
|
-
retryAttempts:
|
|
223
|
+
new aws_events_targets_1.LambdaFunction(autoStartPreventFunctionAlias, {
|
|
224
|
+
retryAttempts: EVENT_TARGET_RETRY_ATTEMPTS,
|
|
234
225
|
event: lambdaInput,
|
|
235
226
|
}),
|
|
236
227
|
],
|
|
@@ -238,4 +229,4 @@ class RDSDatabaseAutoStartPreventer extends constructs_1.Construct {
|
|
|
238
229
|
}
|
|
239
230
|
}
|
|
240
231
|
exports.RDSDatabaseAutoStartPreventer = RDSDatabaseAutoStartPreventer;
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzLWRhdGFiYXNlLWF1dG8tc3RhcnQtcHJldmVudGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jkcy1kYXRhYmFzZS1hdXRvLXN0YXJ0LXByZXZlbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStFO0FBQy9FLCtEQUFpRDtBQUNqRCx3RUFBMEQ7QUFDMUQseURBQTJDO0FBQzNDLCtEQUFpRDtBQUNqRCwyREFBNkM7QUFDN0MsdUVBQXdEO0FBQ3hELDJDQUF1QztBQUN2QyxxRkFBK0U7QUFzQy9FOzs7Ozs7R0FNRztBQUNILE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUUsQ0FDN0MsQ0FBQyxtQkFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUUxRDs7Ozs7R0FLRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBeUMsRUFBUSxFQUFFO0lBQ3hFLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25ELElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1FBQzlFLENB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UUFDcEQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUN0QyxXQUFXLEVBQUUsd0NBQXdDO1lBQ3JELE9BQU8sRUFBRSxVQUFVO1lBQ25CLFlBQVksRUFBRTtnQkFDWixNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ25CLFVBQVUsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUNwQyxNQUFNLEVBQUU7b0JBQ04sT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzVCO2FBQ0Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLDZCQUE2QixFQUFFO29CQUN4RCxhQUFhLEVBQUUsQ0FBQztvQkFDaEIsS0FBSyxFQUFFLFdBQVc7aUJBQ25CLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBOUpILHNFQStKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFybkZvcm1hdCwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3ksIFN0YWNrLCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXV0b1N0YXJ0UHJldmVudEZ1bmN0aW9uIH0gZnJvbSAnLi9mdW5jcy9hdXRvLXN0YXJ0LXByZXZlbnQtZnVuY3Rpb24nO1xuXG4vKipcbiAqIFRhZy1iYXNlZCBjcml0ZXJpYSBldmFsdWF0ZWQgaW4gdGhlIExhbWJkYSBoYW5kbGVyIChub3Qgb24gdGhlIEV2ZW50QnJpZGdlIHJ1bGUpLlxuICogUmVzb3VyY2VzIHdob3NlIHRhZyB2YWx1ZSBmb3Ige0BsaW5rIFRhcmdldFJlc291cmNlLnRhZ0tleX0gaXMgbm90IGluXG4gKiB7QGxpbmsgVGFyZ2V0UmVzb3VyY2UudGFnVmFsdWVzfSBhcmUgc2tpcHBlZCB3aXRob3V0IGNhbGxpbmcgU3RvcERCKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRSZXNvdXJjZSB7XG4gIC8qKiBUYWcga2V5IHRvIG1hdGNoIChlLmcuIFwiRW52aXJvbm1lbnRcIiwgXCJBdXRvU3RhcnRQcmV2ZW50XCIpLiAqL1xuICByZWFkb25seSB0YWdLZXk6IHN0cmluZztcbiAgLyoqIFRhZyB2YWx1ZXMgdGhhdCBpbmRpY2F0ZSB0aGUgcmVzb3VyY2Ugc2hvdWxkIGJlIHByb3RlY3RlZCAoZS5nLiBbXCJwcm9kdWN0aW9uXCJdKS4gKi9cbiAgcmVhZG9ubHkgdGFnVmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBFeHRlcm5hbCBzZWNyZXRzIGZvciBub3RpZmljYXRpb25zIChlLmcuIFNsYWNrKS5cbiAqIE9taXQge0BsaW5rIFNlY3JldHMuc2xhY2tTZWNyZXROYW1lfSB0byBza2lwIFNsYWNrIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0cyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGNvbnRhaW5pbmcgU2xhY2sgdG9rZW4gYW5kIGNoYW5uZWwuXG4gICAqIFdoZW4gb21pdHRlZCwgdGhlIGhhbmRsZXIgc3RvcHMgbWF0Y2hpbmcgUkRTIHJlc291cmNlcyBhbmQgZG9lcyBub3QgcG9zdCB0byBTbGFjay5cbiAgICovXG4gIHJlYWRvbmx5IHNsYWNrU2VjcmV0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFJEUyBkYXRhYmFzZSBhdXRvLXN0YXJ0IHByZXZlbnRlciBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUkRTRGF0YWJhc2VBdXRvU3RhcnRQcmV2ZW50ZXJQcm9wcyB7XG4gIC8qKiBUYWctYmFzZWQgdGFyZ2V0IHJlc291cmNlIGNyaXRlcmlhIGZvciBSRFMgaW5zdGFuY2VzL2NsdXN0ZXJzIHRvIHByb3RlY3QuICovXG4gIHJlYWRvbmx5IHRhcmdldFJlc291cmNlOiBUYXJnZXRSZXNvdXJjZTtcbiAgLyoqIFdoZXRoZXIgdGhlIEV2ZW50QnJpZGdlIHJ1bGVzIGFyZSBlbmFibGVkLiBEZWZhdWx0cyB0byB0cnVlIGlmIG9taXR0ZWQuICovXG4gIHJlYWRvbmx5IGVuYWJsZVJ1bGU/OiBib29sZWFuO1xuICAvKiogU2VjcmV0cyB1c2VkIGZvciBub3RpZmljYXRpb25zIChlLmcuIFNsYWNrKS4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0czogU2VjcmV0cztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgd2hlbiBhIGNvbmNyZXRlIHN0cmluZyBpcyBlbXB0eSBvciB3aGl0ZXNwYWNlLW9ubHkuXG4gKiBVbnJlc29sdmVkIENESyB0b2tlbnMgYXJlIHRyZWF0ZWQgYXMgcHJlc2VudCBiZWNhdXNlIHRoZWlyIHZhbHVlIGlzIHVua25vd24gYXQgc3ludGhlc2lzLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFByb3Agc3RyaW5nIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYmxhbmsuXG4gKi9cbmNvbnN0IGlzQmxhbmtUZXh0ID0gKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+XG4gICFUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDA7XG5cbi8qKlxuICogUmVqZWN0cyBlbXB0eSB0YWcgZmlsdGVycyBhbmQgU2xhY2sgc2VjcmV0IG5hbWVzIGJlZm9yZSByZXNvdXJjZXMgYXJlIGNyZWF0ZWQuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gQ29uc3RydWN0IHByb3BzIHRvIHZhbGlkYXRlLlxuICogQHRocm93cyBXaGVuIHRhZ0tleSBvciBhIHRhZyB2YWx1ZSBpcyBibGFuaywgdGFnVmFsdWVzIGlzIGVtcHR5LCBvciBzbGFja1NlY3JldE5hbWUgaXMgcHJlc2VudCBidXQgYmxhbmsuXG4gKi9cbmNvbnN0IHZhbGlkYXRlUHJvcHMgPSAocHJvcHM6IFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudGVyUHJvcHMpOiB2b2lkID0+IHtcbiAgaWYgKGlzQmxhbmtUZXh0KHByb3BzLnRhcmdldFJlc291cmNlLnRhZ0tleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RhcmdldFJlc291cmNlLnRhZ0tleSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy4nKTtcbiAgfVxuICBpZiAocHJvcHMudGFyZ2V0UmVzb3VyY2UudGFnVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndGFyZ2V0UmVzb3VyY2UudGFnVmFsdWVzIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgdmFsdWUuJyk7XG4gIH1cbiAgZm9yIChjb25zdCB2YWx1ZSBvZiBwcm9wcy50YXJnZXRSZXNvdXJjZS50YWdWYWx1ZXMpIHtcbiAgICBpZiAoaXNCbGFua1RleHQodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RhcmdldFJlc291cmNlLnRhZ1ZhbHVlcyBtdXN0IG5vdCBjb250YWluIGVtcHR5IHN0cmluZ3MuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNsYWNrU2VjcmV0TmFtZSA9IHByb3BzLnNlY3JldHMuc2xhY2tTZWNyZXROYW1lO1xuICBpZiAoc2xhY2tTZWNyZXROYW1lICE9PSB1bmRlZmluZWQgJiYgaXNCbGFua1RleHQoc2xhY2tTZWNyZXROYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2VjcmV0cy5zbGFja1NlY3JldE5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuJyk7XG4gIH1cbn07XG5cbi8qKlxuICogRGVwbG95cyBFdmVudEJyaWRnZSBydWxlcyBhbmQgYSBEdXJhYmxlIExhbWJkYSB0byBzdG9wIG1hdGNoaW5nIFJEUyByZXNvdXJjZXNcbiAqIGFmdGVyIGF1dG8tc3RhcnQgZXZlbnRzIChSRFMtRVZFTlQtMDE1NCAvIFJEUy1FVkVOVC0wMTUzKS5cbiAqXG4gKiBFdmVudEJyaWRnZSBydWxlcyBtYXRjaCBhbGwgYXV0by1zdGFydCBldmVudHM7IHRhZyBmaWx0ZXJpbmcgcnVucyBpbiB0aGUgaGFuZGxlclxuICogdXNpbmcgYFRhZ0xpc3RgIGZyb20gYHJkczpEZXNjcmliZURCSW5zdGFuY2VzYCAvIGByZHM6RGVzY3JpYmVEQkNsdXN0ZXJzYC5cbiAqIElBTSBncmFudHMgYWNjb3VudC9yZWdpb24tc2NvcGVkIGRlc2NyaWJlIG9uIGBkYmAgLyBgY2x1c3RlcmAgQVJOcywgYW5kIHN0b3Agb25seVxuICogd2hlbiBgYXdzOlJlc291cmNlVGFnYCBtYXRjaGVzIHtAbGluayBUYXJnZXRSZXNvdXJjZX0gKG5vIFJlc291cmNlIEdyb3VwcyBUYWdnaW5nIEFQSSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBSRFNEYXRhYmFzZUF1dG9TdGFydFByZXZlbnRlciBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIER1cmFibGUgTGFtYmRhLCBFdmVudEJyaWRnZSBydWxlcywgYW5kIElBTSBwb2xpY2llcy5cbiAgICpcbiAgICogVGhlIExhbWJkYSByZWNlaXZlcyBgeyBldmVudCwgcGFyYW1zIH1gIHdoZXJlIGBwYXJhbXNgIGNhcnJpZXMgYHRhZ0tleWAgYW5kIGB0YWdWYWx1ZXNgXG4gICAqIGZyb20ge0BsaW5rIFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudGVyUHJvcHMudGFyZ2V0UmVzb3VyY2V9LiBUYWcgZmlsdGVycyBhcmUgcGFzc2VkXG4gICAqIG9ubHkgdmlhIHRoYXQgcGF5bG9hZCAobm90IHZpYSBgVEFHX0tFWWAgLyBgVEFHX1ZBTFVFU2AgZW52aXJvbm1lbnQgdmFyaWFibGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gUGFyZW50IGNvbnN0cnVjdC5cbiAgICogQHBhcmFtIGlkIC0gQ29uc3RydWN0IGlkLlxuICAgKiBAcGFyYW0gcHJvcHMgLSBUYXJnZXQgcmVzb3VyY2UgKHRhZyBrZXkvdmFsdWVzKSwgZW5hYmxlIHJ1bGUgZmxhZywgYW5kIHNlY3JldHMuXG4gICAqIEB0aHJvd3MgV2hlbiB0YWdLZXkgb3IgYSB0YWcgdmFsdWUgaXMgYmxhbmssIHRhZ1ZhbHVlcyBpcyBlbXB0eSwgb3Igc2xhY2tTZWNyZXROYW1lIGlzIHByZXNlbnQgYnV0IGJsYW5rLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHZhbGlkYXRlUHJvcHMocHJvcHMpO1xuXG4gICAgY29uc3Qgc2xhY2tTZWNyZXROYW1lID0gcHJvcHMuc2VjcmV0cy5zbGFja1NlY3JldE5hbWU7XG4gICAgY29uc3Qgc2xhY2tTZWNyZXQgPSBzbGFja1NlY3JldE5hbWUgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogU2VjcmV0LmZyb21TZWNyZXROYW1lVjIodGhpcywgJ1NsYWNrU2VjcmV0Jywgc2xhY2tTZWNyZXROYW1lKTtcblxuICAgIC8vIER1cmFibGUgRnVuY3Rpb25zLWJhc2VkIFJ1bm5pbmcgU2NoZWR1bGVyIChwcmV2aW91cyBTdGVwIEZ1bmN0aW9ucyBsb2dpYyBpbXBsZW1lbnRlZCBpbiBMYW1iZGEpLlxuICAgIC8vIER1cmFibGUgRXhlY3V0aW9uIHJlcXVpcmVzIE5vZGUuanMgMjIrLlxuICAgIGNvbnN0IGF1dG9TdGFydFByZXZlbnRGdW5jdGlvbiA9IG5ldyBBdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb24odGhpcywgJ0F1dG9TdGFydFByZXZlbnRGdW5jdGlvbicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBmdW5jdGlvbiB0byBwcmV2ZW50IHRoZSBSRFMgRGF0YWJhc2Ugb3IgQ2x1c3RlciBmcm9tIHN0YXJ0aW5nIGF1dG9tYXRpY2FsbHkuJyxcbiAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIHJldHJ5QXR0ZW1wdHM6IDIsXG4gICAgICBkdXJhYmxlQ29uZmlnOiB7XG4gICAgICAgIGV4ZWN1dGlvblRpbWVvdXQ6IER1cmF0aW9uLmhvdXJzKDIpLFxuICAgICAgICByZXRlbnRpb25QZXJpb2Q6IER1cmF0aW9uLmRheXMoMSksXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHNsYWNrU2VjcmV0ID09PSB1bmRlZmluZWRcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiB7XG4gICAgICAgICAgU0xBQ0tfU0VDUkVUX05BTUU6IHNsYWNrU2VjcmV0LnNlY3JldE5hbWUsXG4gICAgICAgIH0sXG4gICAgICAvLyBSZXF1aXJlZCBieSBhd3MtbGFtYmRhLXNlY3JldC1mZXRjaGVyICheMC42Kykgd2hlbiBTbGFjayBpcyBjb25maWd1cmVkLlxuICAgICAgcGFyYW1zQW5kU2VjcmV0czogc2xhY2tTZWNyZXQgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IGxhbWJkYS5QYXJhbXNBbmRTZWNyZXRzTGF5ZXJWZXJzaW9uLmZyb21WZXJzaW9uKGxhbWJkYS5QYXJhbXNBbmRTZWNyZXRzVmVyc2lvbnMuVjFfMF8xMDMsIHtcbiAgICAgICAgICBjYWNoZVNpemU6IDUwMCxcbiAgICAgICAgICBsb2dMZXZlbDogbGFtYmRhLlBhcmFtc0FuZFNlY3JldHNMb2dMZXZlbC5JTkZPLFxuICAgICAgICB9KSxcbiAgICAgIHJvbGU6IG5ldyBpYW0uUm9sZSh0aGlzLCAnQXV0b1N0YXJ0UHJldmVudEZ1bmN0aW9uUm9sZScsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdBIHJvbGUgdG8gY29udHJvbCB0aGUgUkRTIERhdGFiYXNlIG9yIENsdXN0ZXIuJyxcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZScpLFxuICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRHVyYWJsZUV4ZWN1dGlvblJvbGVQb2xpY3knKSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdBdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb25Mb2dHcm91cCcsIHtcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuVEhSRUVfTU9OVEhTLFxuICAgICAgICAvLyBEZWxldGUgb24gZmFpbGVkIGNyZWF0ZS9yb2xsYmFjazsgcmV0YWluIGFmdGVyIHN1Y2Nlc3NmdWwgY3JlYXRlIChzdGFjayBkZWxldGUvcmVwbGFjZSkuXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOX09OX1VQREFURV9PUl9ERUxFVEUsXG4gICAgICB9KSxcbiAgICAgIGxvZ2dpbmdGb3JtYXQ6IGxhbWJkYS5Mb2dnaW5nRm9ybWF0LkpTT04sXG4gICAgICBzeXN0ZW1Mb2dMZXZlbFYyOiBsYW1iZGEuU3lzdGVtTG9nTGV2ZWwuSU5GTyxcbiAgICAgIGFwcGxpY2F0aW9uTG9nTGV2ZWxWMjogbGFtYmRhLkFwcGxpY2F0aW9uTG9nTGV2ZWwuSU5GTyxcbiAgICB9KTtcbiAgICBjb25zdCByZHNEYkFuZENsdXN0ZXJBcm5zID0gW1xuICAgICAgU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ3JkcycsXG4gICAgICAgIHJlc291cmNlOiAnZGInLFxuICAgICAgICByZXNvdXJjZU5hbWU6ICcqJyxcbiAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAgIH0pLFxuICAgICAgU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ3JkcycsXG4gICAgICAgIHJlc291cmNlOiAnY2x1c3RlcicsXG4gICAgICAgIHJlc291cmNlTmFtZTogJyonLFxuICAgICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgICAgfSksXG4gICAgXTtcbiAgICAvLyBEZXNjcmliZSBzdGF5cyB3aXRob3V0IFJlc291cmNlVGFnIHNvIFRhZ0xpc3QgY2FuIGJlIHJlYWQgZm9yIG5vbi1tYXRjaGluZyByZXNvdXJjZXMuXG4gICAgYXV0b1N0YXJ0UHJldmVudEZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdSZHNEZXNjcmliZUZvclRhZ0ZpbHRlcicsXG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdyZHM6RGVzY3JpYmVEQkluc3RhbmNlcycsXG4gICAgICAgICdyZHM6RGVzY3JpYmVEQkNsdXN0ZXJzJyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IHJkc0RiQW5kQ2x1c3RlckFybnMsXG4gICAgfSkpO1xuICAgIC8vIFN0b3AgaXMgbGltaXRlZCB0byBkYi9jbHVzdGVyIEFSTnMgd2hvc2UgdGFnIG1hdGNoZXMgdGFyZ2V0UmVzb3VyY2UuXG4gICAgYXV0b1N0YXJ0UHJldmVudEZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdSZHNTdG9wVGFnZ2VkVGFyZ2V0cycsXG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdyZHM6U3RvcERCSW5zdGFuY2UnLFxuICAgICAgICAncmRzOlN0b3BEQkNsdXN0ZXInLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogcmRzRGJBbmRDbHVzdGVyQXJucyxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgW2Bhd3M6UmVzb3VyY2VUYWcvJHtwcm9wcy50YXJnZXRSZXNvdXJjZS50YWdLZXl9YF06IHByb3BzLnRhcmdldFJlc291cmNlLnRhZ1ZhbHVlcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICAgIGlmIChzbGFja1NlY3JldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzbGFja1NlY3JldC5ncmFudFJlYWQoYXV0b1N0YXJ0UHJldmVudEZ1bmN0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2R1cmFibGUtZ2V0dGluZy1zdGFydGVkLWlhYy5odG1sXG4gICAgY29uc3QgYXV0b1N0YXJ0UHJldmVudEZ1bmN0aW9uQWxpYXMgPSBhdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb24uYWRkQWxpYXMoJ2xpdmUnKTtcblxuICAgIGNvbnN0IGVuYWJsZVJ1bGUgPSBwcm9wcy5lbmFibGVSdWxlICE9PSBmYWxzZTtcblxuICAgIC8vIFBhc3MgdGhlIEV2ZW50QnJpZGdlIGV2ZW50IGFuZCB0YWcgZmlsdGVyIHBhcmFtcyB0byB0aGUgTGFtYmRhIHRhcmdldCBpbnB1dC5cbiAgICBjb25zdCBsYW1iZGFJbnB1dCA9IGV2ZW50cy5SdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICBldmVudDogZXZlbnRzLkV2ZW50RmllbGQuZnJvbVBhdGgoJyQnKSxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICB0YWdLZXk6IHByb3BzLnRhcmdldFJlc291cmNlLnRhZ0tleSxcbiAgICAgICAgdGFnVmFsdWVzOiBwcm9wcy50YXJnZXRSZXNvdXJjZS50YWdWYWx1ZXMsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8g8J+RhyBFdmVudEJyaWRnZSBieSBSRFMgREIgSW5zdGFuY2UgYXV0byBzdGFydCBldmVudFxuICAgIG5ldyBldmVudHMuUnVsZSh0aGlzLCAnREJJbnN0YW5jZUV2ZW50Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdyZHMgZGIgaW5zdGFuY2UgYXV0byBzdGFydCBldmVudCBjYXRjaCBydWxlLicsXG4gICAgICBlbmFibGVkOiBlbmFibGVSdWxlLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIHNvdXJjZTogWydhd3MucmRzJ10sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnUkRTIERCIEluc3RhbmNlIEV2ZW50J10sXG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIEV2ZW50SUQ6IFsnUkRTLUVWRU5ULTAxNTQnXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbXG4gICAgICAgIG5ldyB0YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKGF1dG9TdGFydFByZXZlbnRGdW5jdGlvbkFsaWFzLCB7XG4gICAgICAgICAgcmV0cnlBdHRlbXB0czogMixcbiAgICAgICAgICBldmVudDogbGFtYmRhSW5wdXQsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIPCfkYcgRXZlbnRCcmlkZ2UgYnkgUkRTIERCIENsdXN0ZXIgYXV0byBzdGFydCBldmVudFxuICAgIG5ldyBldmVudHMuUnVsZSh0aGlzLCAnREJDbHVzdGVyRXZlbnQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ2RiIGNsdXN0ZXIgYXV0byBzdGFydCBldmVudCBjYXRjaCBydWxlJyxcbiAgICAgIGVuYWJsZWQ6IGVuYWJsZVJ1bGUsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgc291cmNlOiBbJ2F3cy5yZHMnXSxcbiAgICAgICAgZGV0YWlsVHlwZTogWydSRFMgREIgQ2x1c3RlciBFdmVudCddLFxuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBFdmVudElEOiBbJ1JEUy1FVkVOVC0wMTUzJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGFyZ2V0czogW1xuICAgICAgICBuZXcgdGFyZ2V0cy5MYW1iZGFGdW5jdGlvbihhdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb25BbGlhcywge1xuICAgICAgICAgIHJldHJ5QXR0ZW1wdHM6IDIsXG4gICAgICAgICAgZXZlbnQ6IGxhbWJkYUlucHV0LFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzLWRhdGFiYXNlLWF1dG8tc3RhcnQtcHJldmVudGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jkcy1kYXRhYmFzZS1hdXRvLXN0YXJ0LXByZXZlbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkNBQStFO0FBQy9FLHVEQUEyRTtBQUMzRSx1RUFBZ0U7QUFDaEUsaURBQXFHO0FBQ3JHLHVEQVFnQztBQUNoQyxtREFBK0Q7QUFDL0QsdUVBQXdEO0FBQ3hELDJDQUF1QztBQUN2QyxxRUFBZ0g7QUFDaEgscUZBQStFO0FBQy9FLDhDQUsyQjtBQUUzQixtRkFBbUY7QUFDbkYsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLENBQUM7QUFFdEMsb0VBQW9FO0FBQ3BFLE1BQU0sOEJBQThCLEdBQXVCO0lBQ3pEO1FBQ0UsRUFBRSxFQUFFLHdCQUF3QjtRQUM1QixhQUFhLEVBQUUsSUFBSSwyQ0FBa0MsR0FBRztRQUN4RCxlQUFlLEVBQUUsK0JBQStCO1FBQ2hELFVBQVUsRUFBRSx3QkFBd0I7S0FDckM7Q0FDRixDQUFDO0FBcURGOzs7Ozs7R0FNRztBQUNILE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUUsQ0FDN0MsQ0FBQyxtQkFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUUxRDs7Ozs7R0FLRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBeUMsRUFBUSxFQUFFO0lBQ3hFLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25ELElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1FBQzlFLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7SUFDdEQsSUFBSSxlQUFlLEtBQUssU0FBUyxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztJQUN6RSxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEsNkJBQThCLFNBQVEsc0JBQVM7O0lBRTFEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QztRQUNqRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUN0RCxNQUFNLFdBQVcsR0FBRyxlQUFlLEtBQUssU0FBUztZQUMvQyxDQUFDLENBQUMsU0FBUztZQUNYLENBQUMsQ0FBQywyQkFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFbEUsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLGtDQUFrQyxFQUFFO1lBQzlGLFNBQVMsRUFBRSx3QkFBYSxDQUFDLFlBQVk7WUFDckMsMkZBQTJGO1lBQzNGLGFBQWEsRUFBRSwyQkFBYSxDQUFDLDBCQUEwQjtTQUN4RCxDQUFDLENBQUM7UUFFSCwrRkFBK0Y7UUFDL0YsdUVBQXVFO1FBQ3ZFLDBDQUEwQztRQUMxQyxNQUFNLHdCQUF3QixHQUFHLElBQUksc0RBQXdCLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO1lBQzlGLFdBQVcsRUFBRSxnRkFBZ0Y7WUFDN0YsWUFBWSxFQUFFLHlCQUFZLENBQUMsTUFBTTtZQUNqQyx5RkFBeUY7WUFDekYsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM1QixVQUFVLEVBQUUsR0FBRztZQUNmLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLGFBQWEsRUFBRTtnQkFDYixnQkFBZ0IsRUFBRSxzQkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLGVBQWUsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDbEM7WUFDRCxXQUFXLEVBQUUsV0FBVyxLQUFLLFNBQVM7Z0JBQ3BDLENBQUMsQ0FBQyxTQUFTO2dCQUNYLENBQUMsQ0FBQztvQkFDQSxpQkFBaUIsRUFBRSxXQUFXLENBQUMsVUFBVTtpQkFDMUM7WUFDSCwwRUFBMEU7WUFDMUUsZ0JBQWdCLEVBQUUsV0FBVyxLQUFLLFNBQVM7Z0JBQ3pDLENBQUMsQ0FBQyxTQUFTO2dCQUNYLENBQUMsQ0FBQyx5Q0FBNEIsQ0FBQyxXQUFXLENBQUMscUNBQXdCLENBQUMsUUFBUSxFQUFFO29CQUM1RSxTQUFTLEVBQUUsR0FBRztvQkFDZCxRQUFRLEVBQUUscUNBQXdCLENBQUMsSUFBSTtpQkFDeEMsQ0FBQztZQUNKLElBQUksRUFBRSxJQUFJLGNBQUksQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEVBQUU7Z0JBQ25ELFdBQVcsRUFBRSxnREFBZ0Q7Z0JBQzdELFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLHNCQUFzQixDQUFDO2dCQUN2RCxlQUFlLEVBQUU7b0JBQ2YsdUJBQWEsQ0FBQyx3QkFBd0IsQ0FBQywwQ0FBMEMsQ0FBQztvQkFDbEYsdUJBQWEsQ0FBQyx3QkFBd0IsQ0FBQyx1REFBdUQsQ0FBQztpQkFDaEc7YUFDRixDQUFDO1lBQ0YsUUFBUSxFQUFFLGdDQUFnQztZQUMxQyxhQUFhLEVBQUUsMEJBQWEsQ0FBQyxJQUFJO1lBQ2pDLGdCQUFnQixFQUFFLDJCQUFjLENBQUMsSUFBSTtZQUNyQyxxQkFBcUIsRUFBRSxnQ0FBbUIsQ0FBQyxJQUFJO1NBQ2hELENBQUMsQ0FBQztRQUNILE1BQU0sbUJBQW1CLEdBQUc7WUFDMUIsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsSUFBSTtnQkFDZCxZQUFZLEVBQUUsR0FBRztnQkFDakIsU0FBUyxFQUFFLHVCQUFTLENBQUMsbUJBQW1CO2FBQ3pDLENBQUM7WUFDRixtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixZQUFZLEVBQUUsR0FBRztnQkFDakIsU0FBUyxFQUFFLHVCQUFTLENBQUMsbUJBQW1CO2FBQ3pDLENBQUM7U0FDSCxDQUFDO1FBQ0Ysd0ZBQXdGO1FBQ3hGLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxJQUFJLHlCQUFlLENBQUM7WUFDM0QsR0FBRyxFQUFFLHlCQUF5QjtZQUM5QixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO1lBQ3BCLE9BQU8sRUFBRTtnQkFDUCx5QkFBeUI7Z0JBQ3pCLHdCQUF3QjthQUN6QjtZQUNELFNBQVMsRUFBRSxtQkFBbUI7U0FDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSix1RUFBdUU7UUFDdkUsd0JBQXdCLENBQUMsZUFBZSxDQUFDLElBQUkseUJBQWUsQ0FBQztZQUMzRCxHQUFHLEVBQUUsc0JBQXNCO1lBQzNCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFO2dCQUNQLG9CQUFvQjtnQkFDcEIsbUJBQW1CO2FBQ3BCO1lBQ0QsU0FBUyxFQUFFLG1CQUFtQjtZQUM5QixVQUFVLEVBQUU7Z0JBQ1YsWUFBWSxFQUFFO29CQUNaLENBQUMsbUJBQW1CLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVM7aUJBQ25GO2FBQ0Y7U0FDRixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsSUFBQSxxREFBMkIsRUFBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDcEQsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxjQUFjLEVBQUUsd0JBQXdCO1lBQ3hDLFFBQVEsRUFBRSxnQ0FBZ0M7WUFDMUMsVUFBVSxFQUFFLDhCQUE4QjtTQUMzQyxDQUFDLENBQUM7UUFFSCxxRkFBcUY7UUFDckYsTUFBTSw2QkFBNkIsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEYsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUM7UUFFOUMsK0VBQStFO1FBQy9FLE1BQU0sV0FBVyxHQUFHLDRCQUFlLENBQUMsVUFBVSxDQUFDO1lBQzdDLEtBQUssRUFBRSx1QkFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFDL0IsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU07Z0JBQ25DLFNBQVMsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVM7YUFDMUM7U0FDRixDQUFDLENBQUM7UUFFSCx1RUFBdUU7UUFDdkUsSUFBSSxpQkFBSSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUNoQyxXQUFXLEVBQUUsNkRBQTZEO1lBQzFFLE9BQU8sRUFBRSxVQUFVO1lBQ25CLFlBQVksRUFBRTtnQkFDWixNQUFNLEVBQUUsQ0FBQyx5QkFBZ0IsQ0FBQztnQkFDMUIsVUFBVSxFQUFFLENBQUMscUNBQTRCLENBQUMsVUFBVSxDQUFDO2dCQUNyRCxNQUFNLEVBQUU7b0JBQ04sT0FBTyxFQUFFLENBQUMscUNBQTRCLENBQUMsT0FBTyxDQUFDO2lCQUNoRDthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLElBQUksbUNBQWMsQ0FBQyw2QkFBNkIsRUFBRTtvQkFDaEQsYUFBYSxFQUFFLDJCQUEyQjtvQkFDMUMsS0FBSyxFQUFFLFdBQVc7aUJBQ25CLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILHNFQUFzRTtRQUN0RSxJQUFJLGlCQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQy9CLFdBQVcsRUFBRSw0REFBNEQ7WUFDekUsT0FBTyxFQUFFLFVBQVU7WUFDbkIsWUFBWSxFQUFFO2dCQUNaLE1BQU0sRUFBRSxDQUFDLHlCQUFnQixDQUFDO2dCQUMxQixVQUFVLEVBQUUsQ0FBQyxvQ0FBMkIsQ0FBQyxVQUFVLENBQUM7Z0JBQ3BELE1BQU0sRUFBRTtvQkFDTixPQUFPLEVBQUUsQ0FBQyxvQ0FBMkIsQ0FBQyxPQUFPLENBQUM7aUJBQy9DO2FBQ0Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxtQ0FBYyxDQUFDLDZCQUE2QixFQUFFO29CQUNoRCxhQUFhLEVBQUUsMkJBQTJCO29CQUMxQyxLQUFLLEVBQUUsV0FBVztpQkFDbkIsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF6S0gsc0VBMEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuRm9ybWF0LCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgU3RhY2ssIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgRXZlbnRGaWVsZCwgUnVsZSwgUnVsZVRhcmdldElucHV0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBFZmZlY3QsIE1hbmFnZWRQb2xpY3ksIFBvbGljeVN0YXRlbWVudCwgUm9sZSwgU2VydmljZVByaW5jaXBhbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Mb2dMZXZlbCxcbiAgQXJjaGl0ZWN0dXJlLFxuICBMb2dnaW5nRm9ybWF0LFxuICBQYXJhbXNBbmRTZWNyZXRzTGF5ZXJWZXJzaW9uLFxuICBQYXJhbXNBbmRTZWNyZXRzTG9nTGV2ZWwsXG4gIFBhcmFtc0FuZFNlY3JldHNWZXJzaW9ucyxcbiAgU3lzdGVtTG9nTGV2ZWwsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBjcmVhdGVMYW1iZGFGYWlsdXJlRGV0ZWN0b3IsIExhbWJkYUZhaWx1cmVEZXRlY3Rpb24sIExvZ0ZhaWx1cmVGaWx0ZXIgfSBmcm9tICdsYW1iZGEtZmFpbHVyZS1kZXRlY3Rvcic7XG5pbXBvcnQgeyBBdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb24gfSBmcm9tICcuL2Z1bmNzL2F1dG8tc3RhcnQtcHJldmVudC1mdW5jdGlvbic7XG5pbXBvcnQge1xuICBBVVRPX1NUQVJUX1BSRVZFTlRfRkFJTEVEX0xPR19URVJNLFxuICBEQl9DTFVTVEVSX0FVVE9fU1RBUlRfRVZFTlQsXG4gIERCX0lOU1RBTkNFX0FVVE9fU1RBUlRfRVZFTlQsXG4gIFJEU19FVkVOVF9TT1VSQ0UsXG59IGZyb20gJy4vc2V0dGluZ3MvY29uc3RzJztcblxuLyoqIEV2ZW50QnJpZGdlIHJldHJpZXMgd2hlbiBkZWxpdmVyaW5nIGFuIGF1dG8tc3RhcnQgZXZlbnQgdG8gdGhlIExhbWJkYSBhbGlhcy4gKi9cbmNvbnN0IEVWRU5UX1RBUkdFVF9SRVRSWV9BVFRFTVBUUyA9IDI7XG5cbi8qKiBMb2ctYmFzZWQgZmFpbHVyZXMgd2F0Y2hlZCB3aGVuIGZhaWx1cmUgZGV0ZWN0aW9uIGlzIGVuYWJsZWQuICovXG5jb25zdCBBVVRPX1NUQVJUX1BSRVZFTlRfTE9HX0ZJTFRFUlM6IExvZ0ZhaWx1cmVGaWx0ZXJbXSA9IFtcbiAge1xuICAgIGlkOiAnQXV0b1N0YXJ0UHJldmVudEZhaWxlZCcsXG4gICAgZmlsdGVyUGF0dGVybjogYFwiJHtBVVRPX1NUQVJUX1BSRVZFTlRfRkFJTEVEX0xPR19URVJNfVwiYCxcbiAgICBtZXRyaWNOYW1lc3BhY2U6ICdSRFNEYXRhYmFzZUF1dG9TdGFydFByZXZlbnRlcicsXG4gICAgbWV0cmljTmFtZTogJ0F1dG9TdGFydFByZXZlbnRGYWlsZWQnLFxuICB9LFxuXTtcblxuLyoqXG4gKiBUYWctYmFzZWQgY3JpdGVyaWEgZXZhbHVhdGVkIGluIHRoZSBMYW1iZGEgaGFuZGxlciAobm90IG9uIHRoZSBFdmVudEJyaWRnZSBydWxlKS5cbiAqIFJlc291cmNlcyB3aG9zZSB0YWcgdmFsdWUgZm9yIHtAbGluayBUYXJnZXRSZXNvdXJjZS50YWdLZXl9IGlzIG5vdCBpblxuICoge0BsaW5rIFRhcmdldFJlc291cmNlLnRhZ1ZhbHVlc30gYXJlIHNraXBwZWQgd2l0aG91dCBjYWxsaW5nIFN0b3BEQiouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0UmVzb3VyY2Uge1xuICAvKiogVGFnIGtleSB0byBtYXRjaCAoZS5nLiBcIkVudmlyb25tZW50XCIsIFwiQXV0b1N0YXJ0UHJldmVudFwiKS4gKi9cbiAgcmVhZG9ubHkgdGFnS2V5OiBzdHJpbmc7XG4gIC8qKiBUYWcgdmFsdWVzIHRoYXQgaW5kaWNhdGUgdGhlIHJlc291cmNlIHNob3VsZCBiZSBwcm90ZWN0ZWQgKGUuZy4gW1wicHJvZHVjdGlvblwiXSkuICovXG4gIHJlYWRvbmx5IHRhZ1ZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogRXh0ZXJuYWwgc2VjcmV0cyBmb3Igbm90aWZpY2F0aW9ucyAoZS5nLiBTbGFjaykuXG4gKiBPbWl0IHtAbGluayBTZWNyZXRzLnNsYWNrU2VjcmV0TmFtZX0gdG8gc2tpcCBTbGFjayBub3RpZmljYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBjb250YWluaW5nIFNsYWNrIHRva2VuIGFuZCBjaGFubmVsLlxuICAgKiBXaGVuIG9taXR0ZWQsIHRoZSBoYW5kbGVyIHN0b3BzIG1hdGNoaW5nIFJEUyByZXNvdXJjZXMgYW5kIGRvZXMgbm90IHBvc3QgdG8gU2xhY2suXG4gICAqL1xuICByZWFkb25seSBzbGFja1NlY3JldE5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0LWluIENsb3VkV2F0Y2ggZmFpbHVyZSBkZXRlY3Rpb24gZm9yIHRoZSBhdXRvLXN0YXJ0IHByZXZlbnQgTGFtYmRhLlxuICpcbiAqIFdoZW4gYGVuYWJsZWRgIGlzIHRydWUsIGNyZWF0ZXMgYWxhcm1zIG9uIHRoZSBMYW1iZGEgYEVycm9yc2AgYW5kIGBUaHJvdHRsZXNgIG1ldHJpY3MgYW5kIG9uXG4gKiBmYWlsZWQgZXhlY3V0aW9ucyBsb2dnZWQgYnkgdGhlIGhhbmRsZXIgKGN1c3RvbSBtZXRyaWMgYFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudGVyYCAvIGBBdXRvU3RhcnRQcmV2ZW50RmFpbGVkYCkuXG4gKiBObyBTTlMgdG9waWMgaXMgY3JlYXRlZDsgYWxhcm1zIG5vdGlmeSBgYWxhcm1Ub3BpY2Agb25seSB3aGVuIGl0IGlzIHNldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvU3RhcnRQcmV2ZW50RmFpbHVyZURldGVjdGlvblByb3BzIGV4dGVuZHMgTGFtYmRhRmFpbHVyZURldGVjdGlvbiB7fVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgUkRTIGRhdGFiYXNlIGF1dG8tc3RhcnQgcHJldmVudGVyIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSRFNEYXRhYmFzZUF1dG9TdGFydFByZXZlbnRlclByb3BzIHtcbiAgLyoqIFRhZy1iYXNlZCB0YXJnZXQgcmVzb3VyY2UgY3JpdGVyaWEgZm9yIFJEUyBpbnN0YW5jZXMvY2x1c3RlcnMgdG8gcHJvdGVjdC4gKi9cbiAgcmVhZG9ubHkgdGFyZ2V0UmVzb3VyY2U6IFRhcmdldFJlc291cmNlO1xuICAvKiogV2hldGhlciB0aGUgRXZlbnRCcmlkZ2UgcnVsZXMgYXJlIGVuYWJsZWQuIERlZmF1bHRzIHRvIHRydWUgaWYgb21pdHRlZC4gKi9cbiAgcmVhZG9ubHkgZW5hYmxlUnVsZT86IGJvb2xlYW47XG4gIC8qKiBTZWNyZXRzIHVzZWQgZm9yIG5vdGlmaWNhdGlvbnMgKGUuZy4gU2xhY2spLiAqL1xuICByZWFkb25seSBzZWNyZXRzOiBTZWNyZXRzO1xuICAvKipcbiAgICogQ2xvdWRXYXRjaCBmYWlsdXJlIGRldGVjdGlvbiBmb3IgdGhlIExhbWJkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBmYWlsdXJlRGV0ZWN0aW9uPzogQXV0b1N0YXJ0UHJldmVudEZhaWx1cmVEZXRlY3Rpb25Qcm9wcztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgd2hlbiBhIGNvbmNyZXRlIHN0cmluZyBpcyBlbXB0eSBvciB3aGl0ZXNwYWNlLW9ubHkuXG4gKiBVbnJlc29sdmVkIENESyB0b2tlbnMgYXJlIHRyZWF0ZWQgYXMgcHJlc2VudCBiZWNhdXNlIHRoZWlyIHZhbHVlIGlzIHVua25vd24gYXQgc3ludGhlc2lzLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFByb3Agc3RyaW5nIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYmxhbmsuXG4gKi9cbmNvbnN0IGlzQmxhbmtUZXh0ID0gKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+XG4gICFUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDA7XG5cbi8qKlxuICogUmVqZWN0cyBlbXB0eSB0YWcgZmlsdGVycyBhbmQgU2xhY2sgc2VjcmV0IG5hbWVzIGJlZm9yZSByZXNvdXJjZXMgYXJlIGNyZWF0ZWQuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gQ29uc3RydWN0IHByb3BzIHRvIHZhbGlkYXRlLlxuICogQHRocm93cyBXaGVuIHRhZ0tleSBvciBhIHRhZyB2YWx1ZSBpcyBibGFuaywgdGFnVmFsdWVzIGlzIGVtcHR5LCBvciBzbGFja1NlY3JldE5hbWUgaXMgcHJlc2VudCBidXQgYmxhbmsuXG4gKi9cbmNvbnN0IHZhbGlkYXRlUHJvcHMgPSAocHJvcHM6IFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudGVyUHJvcHMpOiB2b2lkID0+IHtcbiAgaWYgKGlzQmxhbmtUZXh0KHByb3BzLnRhcmdldFJlc291cmNlLnRhZ0tleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RhcmdldFJlc291cmNlLnRhZ0tleSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy4nKTtcbiAgfVxuICBpZiAocHJvcHMudGFyZ2V0UmVzb3VyY2UudGFnVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndGFyZ2V0UmVzb3VyY2UudGFnVmFsdWVzIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgdmFsdWUuJyk7XG4gIH1cbiAgZm9yIChjb25zdCB2YWx1ZSBvZiBwcm9wcy50YXJnZXRSZXNvdXJjZS50YWdWYWx1ZXMpIHtcbiAgICBpZiAoaXNCbGFua1RleHQodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RhcmdldFJlc291cmNlLnRhZ1ZhbHVlcyBtdXN0IG5vdCBjb250YWluIGVtcHR5IHN0cmluZ3MuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNsYWNrU2VjcmV0TmFtZSA9IHByb3BzLnNlY3JldHMuc2xhY2tTZWNyZXROYW1lO1xuICBpZiAoc2xhY2tTZWNyZXROYW1lICE9PSB1bmRlZmluZWQgJiYgaXNCbGFua1RleHQoc2xhY2tTZWNyZXROYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2VjcmV0cy5zbGFja1NlY3JldE5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuJyk7XG4gIH1cbn07XG5cbi8qKlxuICogRGVwbG95cyBFdmVudEJyaWRnZSBydWxlcyBhbmQgYSBEdXJhYmxlIExhbWJkYSB0byBzdG9wIG1hdGNoaW5nIFJEUyByZXNvdXJjZXNcbiAqIGFmdGVyIGF1dG8tc3RhcnQgZXZlbnRzIChSRFMtRVZFTlQtMDE1NCAvIFJEUy1FVkVOVC0wMTUzKS5cbiAqXG4gKiBFdmVudEJyaWRnZSBydWxlcyBtYXRjaCBhbGwgYXV0by1zdGFydCBldmVudHM7IHRhZyBmaWx0ZXJpbmcgcnVucyBpbiB0aGUgaGFuZGxlclxuICogdXNpbmcgYFRhZ0xpc3RgIGZyb20gYHJkczpEZXNjcmliZURCSW5zdGFuY2VzYCAvIGByZHM6RGVzY3JpYmVEQkNsdXN0ZXJzYC5cbiAqIElBTSBncmFudHMgYWNjb3VudC9yZWdpb24tc2NvcGVkIGRlc2NyaWJlIG9uIGBkYmAgLyBgY2x1c3RlcmAgQVJOcywgYW5kIHN0b3Agb25seVxuICogd2hlbiBgYXdzOlJlc291cmNlVGFnYCBtYXRjaGVzIHtAbGluayBUYXJnZXRSZXNvdXJjZX0gKG5vIFJlc291cmNlIEdyb3VwcyBUYWdnaW5nIEFQSSkuXG4gKiBDbG91ZFdhdGNoIGZhaWx1cmUgYWxhcm1zIGFyZSBjcmVhdGVkIG9ubHkgd2hlblxuICoge0BsaW5rIFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudGVyUHJvcHMuZmFpbHVyZURldGVjdGlvbn0gaXMgZW5hYmxlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgRHVyYWJsZSBMYW1iZGEsIEV2ZW50QnJpZGdlIHJ1bGVzLCBJQU0gcG9saWNpZXMsIGFuZCBvcHRpb25hbCBmYWlsdXJlIGFsYXJtcy5cbiAgICpcbiAgICogVGhlIExhbWJkYSByZWNlaXZlcyBgeyBldmVudCwgcGFyYW1zIH1gIHdoZXJlIGBwYXJhbXNgIGNhcnJpZXMgYHRhZ0tleWAgYW5kIGB0YWdWYWx1ZXNgXG4gICAqIGZyb20ge0BsaW5rIFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudGVyUHJvcHMudGFyZ2V0UmVzb3VyY2V9LiBUYWcgZmlsdGVycyBhcmUgcGFzc2VkXG4gICAqIG9ubHkgdmlhIHRoYXQgcGF5bG9hZCAobm90IHZpYSBgVEFHX0tFWWAgLyBgVEFHX1ZBTFVFU2AgZW52aXJvbm1lbnQgdmFyaWFibGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gUGFyZW50IGNvbnN0cnVjdC5cbiAgICogQHBhcmFtIGlkIC0gQ29uc3RydWN0IGlkLlxuICAgKiBAcGFyYW0gcHJvcHMgLSBUYXJnZXQgcmVzb3VyY2UgKHRhZyBrZXkvdmFsdWVzKSwgZW5hYmxlIHJ1bGUgZmxhZywgYW5kIHNlY3JldHMuXG4gICAqIEB0aHJvd3MgV2hlbiB0YWdLZXkgb3IgYSB0YWcgdmFsdWUgaXMgYmxhbmssIHRhZ1ZhbHVlcyBpcyBlbXB0eSwgb3Igc2xhY2tTZWNyZXROYW1lIGlzIHByZXNlbnQgYnV0IGJsYW5rLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHZhbGlkYXRlUHJvcHMocHJvcHMpO1xuXG4gICAgY29uc3Qgc2xhY2tTZWNyZXROYW1lID0gcHJvcHMuc2VjcmV0cy5zbGFja1NlY3JldE5hbWU7XG4gICAgY29uc3Qgc2xhY2tTZWNyZXQgPSBzbGFja1NlY3JldE5hbWUgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogU2VjcmV0LmZyb21TZWNyZXROYW1lVjIodGhpcywgJ1NsYWNrU2VjcmV0Jywgc2xhY2tTZWNyZXROYW1lKTtcblxuICAgIGNvbnN0IGF1dG9TdGFydFByZXZlbnRGdW5jdGlvbkxvZ0dyb3VwID0gbmV3IExvZ0dyb3VwKHRoaXMsICdBdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb25Mb2dHcm91cCcsIHtcbiAgICAgIHJldGVudGlvbjogUmV0ZW50aW9uRGF5cy5USFJFRV9NT05USFMsXG4gICAgICAvLyBEZWxldGUgb24gZmFpbGVkIGNyZWF0ZS9yb2xsYmFjazsgcmV0YWluIGFmdGVyIHN1Y2Nlc3NmdWwgY3JlYXRlIChzdGFjayBkZWxldGUvcmVwbGFjZSkuXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTl9PTl9VUERBVEVfT1JfREVMRVRFLFxuICAgIH0pO1xuXG4gICAgLy8gRHVyYWJsZSBMYW1iZGEgdGhhdCB3YWl0cyBmb3IgdGhlIGF1dG8tc3RhcnRlZCByZXNvdXJjZSB0byBzZXR0bGUsIHN0b3BzIGl0IHdoZW4gdGFncyBtYXRjaCxcbiAgICAvLyBhbmQgcG9zdHMgdG8gU2xhY2sgYWZ0ZXIgdGhlIHN0b3Agd2hlbiBhIFNsYWNrIHNlY3JldCBpcyBjb25maWd1cmVkLlxuICAgIC8vIER1cmFibGUgRXhlY3V0aW9uIHJlcXVpcmVzIE5vZGUuanMgMjIrLlxuICAgIGNvbnN0IGF1dG9TdGFydFByZXZlbnRGdW5jdGlvbiA9IG5ldyBBdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb24odGhpcywgJ0F1dG9TdGFydFByZXZlbnRGdW5jdGlvbicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBmdW5jdGlvbiB0byBwcmV2ZW50IHRoZSBSRFMgRGF0YWJhc2Ugb3IgQ2x1c3RlciBmcm9tIHN0YXJ0aW5nIGF1dG9tYXRpY2FsbHkuJyxcbiAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIC8vIER1cmFibGUgd2FpdHMgc3VzcGVuZCB0aGUgaW52b2NhdGlvbiwgc28gdGhpcyBvbmx5IGNvdmVycyB0aGUgQVBJIGNhbGxzIGJldHdlZW4gd2FpdHMuXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDMpLFxuICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgcmV0cnlBdHRlbXB0czogMixcbiAgICAgIGR1cmFibGVDb25maWc6IHtcbiAgICAgICAgZXhlY3V0aW9uVGltZW91dDogRHVyYXRpb24uaG91cnMoMiksXG4gICAgICAgIHJldGVudGlvblBlcmlvZDogRHVyYXRpb24uZGF5cygxKSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudDogc2xhY2tTZWNyZXQgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHtcbiAgICAgICAgICBTTEFDS19TRUNSRVRfTkFNRTogc2xhY2tTZWNyZXQuc2VjcmV0TmFtZSxcbiAgICAgICAgfSxcbiAgICAgIC8vIFJlcXVpcmVkIGJ5IGF3cy1sYW1iZGEtc2VjcmV0LWZldGNoZXIgKF4wLjYrKSB3aGVuIFNsYWNrIGlzIGNvbmZpZ3VyZWQuXG4gICAgICBwYXJhbXNBbmRTZWNyZXRzOiBzbGFja1NlY3JldCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogUGFyYW1zQW5kU2VjcmV0c0xheWVyVmVyc2lvbi5mcm9tVmVyc2lvbihQYXJhbXNBbmRTZWNyZXRzVmVyc2lvbnMuVjFfMF8xMDMsIHtcbiAgICAgICAgICBjYWNoZVNpemU6IDUwMCxcbiAgICAgICAgICBsb2dMZXZlbDogUGFyYW1zQW5kU2VjcmV0c0xvZ0xldmVsLklORk8sXG4gICAgICAgIH0pLFxuICAgICAgcm9sZTogbmV3IFJvbGUodGhpcywgJ0F1dG9TdGFydFByZXZlbnRGdW5jdGlvblJvbGUnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQSByb2xlIHRvIGNvbnRyb2wgdGhlIFJEUyBEYXRhYmFzZSBvciBDbHVzdGVyLicsXG4gICAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAgIE1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlJyksXG4gICAgICAgICAgTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0R1cmFibGVFeGVjdXRpb25Sb2xlUG9saWN5JyksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICAgIGxvZ0dyb3VwOiBhdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb25Mb2dHcm91cCxcbiAgICAgIGxvZ2dpbmdGb3JtYXQ6IExvZ2dpbmdGb3JtYXQuSlNPTixcbiAgICAgIHN5c3RlbUxvZ0xldmVsVjI6IFN5c3RlbUxvZ0xldmVsLklORk8sXG4gICAgICBhcHBsaWNhdGlvbkxvZ0xldmVsVjI6IEFwcGxpY2F0aW9uTG9nTGV2ZWwuSU5GTyxcbiAgICB9KTtcbiAgICBjb25zdCByZHNEYkFuZENsdXN0ZXJBcm5zID0gW1xuICAgICAgU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ3JkcycsXG4gICAgICAgIHJlc291cmNlOiAnZGInLFxuICAgICAgICByZXNvdXJjZU5hbWU6ICcqJyxcbiAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAgIH0pLFxuICAgICAgU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ3JkcycsXG4gICAgICAgIHJlc291cmNlOiAnY2x1c3RlcicsXG4gICAgICAgIHJlc291cmNlTmFtZTogJyonLFxuICAgICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgICAgfSksXG4gICAgXTtcbiAgICAvLyBEZXNjcmliZSBzdGF5cyB3aXRob3V0IFJlc291cmNlVGFnIHNvIFRhZ0xpc3QgY2FuIGJlIHJlYWQgZm9yIG5vbi1tYXRjaGluZyByZXNvdXJjZXMuXG4gICAgYXV0b1N0YXJ0UHJldmVudEZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHNpZDogJ1Jkc0Rlc2NyaWJlRm9yVGFnRmlsdGVyJyxcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICAncmRzOkRlc2NyaWJlREJJbnN0YW5jZXMnLFxuICAgICAgICAncmRzOkRlc2NyaWJlREJDbHVzdGVycycsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiByZHNEYkFuZENsdXN0ZXJBcm5zLFxuICAgIH0pKTtcbiAgICAvLyBTdG9wIGlzIGxpbWl0ZWQgdG8gZGIvY2x1c3RlciBBUk5zIHdob3NlIHRhZyBtYXRjaGVzIHRhcmdldFJlc291cmNlLlxuICAgIGF1dG9TdGFydFByZXZlbnRGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdSZHNTdG9wVGFnZ2VkVGFyZ2V0cycsXG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3JkczpTdG9wREJJbnN0YW5jZScsXG4gICAgICAgICdyZHM6U3RvcERCQ2x1c3RlcicsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiByZHNEYkFuZENsdXN0ZXJBcm5zLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICBbYGF3czpSZXNvdXJjZVRhZy8ke3Byb3BzLnRhcmdldFJlc291cmNlLnRhZ0tleX1gXTogcHJvcHMudGFyZ2V0UmVzb3VyY2UudGFnVmFsdWVzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG4gICAgaWYgKHNsYWNrU2VjcmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNsYWNrU2VjcmV0LmdyYW50UmVhZChhdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb24pO1xuICAgIH1cblxuICAgIGNyZWF0ZUxhbWJkYUZhaWx1cmVEZXRlY3Rvcih0aGlzLCAnRmFpbHVyZURldGVjdGlvbicsIHtcbiAgICAgIGZhaWx1cmVEZXRlY3Rpb246IHByb3BzLmZhaWx1cmVEZXRlY3Rpb24sXG4gICAgICBsYW1iZGFGdW5jdGlvbjogYXV0b1N0YXJ0UHJldmVudEZ1bmN0aW9uLFxuICAgICAgbG9nR3JvdXA6IGF1dG9TdGFydFByZXZlbnRGdW5jdGlvbkxvZ0dyb3VwLFxuICAgICAgbG9nRmlsdGVyczogQVVUT19TVEFSVF9QUkVWRU5UX0xPR19GSUxURVJTLFxuICAgIH0pO1xuXG4gICAgLy8gU2VlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy9kdXJhYmxlLWdldHRpbmctc3RhcnRlZC1pYWMuaHRtbFxuICAgIGNvbnN0IGF1dG9TdGFydFByZXZlbnRGdW5jdGlvbkFsaWFzID0gYXV0b1N0YXJ0UHJldmVudEZ1bmN0aW9uLmFkZEFsaWFzKCdsaXZlJyk7XG5cbiAgICBjb25zdCBlbmFibGVSdWxlID0gcHJvcHMuZW5hYmxlUnVsZSAhPT0gZmFsc2U7XG5cbiAgICAvLyBQYXNzIHRoZSBFdmVudEJyaWRnZSBldmVudCBhbmQgdGFnIGZpbHRlciBwYXJhbXMgdG8gdGhlIExhbWJkYSB0YXJnZXQgaW5wdXQuXG4gICAgY29uc3QgbGFtYmRhSW5wdXQgPSBSdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICBldmVudDogRXZlbnRGaWVsZC5mcm9tUGF0aCgnJCcpLFxuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIHRhZ0tleTogcHJvcHMudGFyZ2V0UmVzb3VyY2UudGFnS2V5LFxuICAgICAgICB0YWdWYWx1ZXM6IHByb3BzLnRhcmdldFJlc291cmNlLnRhZ1ZhbHVlcyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFdmVudEJyaWRnZSBydWxlIGZvciBEQiBpbnN0YW5jZSBhdXRvLXN0YXJ0IGV2ZW50cyAoUkRTLUVWRU5ULTAxNTQpLlxuICAgIG5ldyBSdWxlKHRoaXMsICdEQkluc3RhbmNlRXZlbnQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0NhdGNoZXMgUkRTIERCIGluc3RhbmNlIGF1dG8tc3RhcnQgZXZlbnRzIChSRFMtRVZFTlQtMDE1NCkuJyxcbiAgICAgIGVuYWJsZWQ6IGVuYWJsZVJ1bGUsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgc291cmNlOiBbUkRTX0VWRU5UX1NPVVJDRV0sXG4gICAgICAgIGRldGFpbFR5cGU6IFtEQl9JTlNUQU5DRV9BVVRPX1NUQVJUX0VWRU5ULmRldGFpbFR5cGVdLFxuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBFdmVudElEOiBbREJfSU5TVEFOQ0VfQVVUT19TVEFSVF9FVkVOVC5ldmVudElkXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbXG4gICAgICAgIG5ldyBMYW1iZGFGdW5jdGlvbihhdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb25BbGlhcywge1xuICAgICAgICAgIHJldHJ5QXR0ZW1wdHM6IEVWRU5UX1RBUkdFVF9SRVRSWV9BVFRFTVBUUyxcbiAgICAgICAgICBldmVudDogbGFtYmRhSW5wdXQsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIERCIGNsdXN0ZXIgYXV0by1zdGFydCBldmVudHMgKFJEUy1FVkVOVC0wMTUzKS5cbiAgICBuZXcgUnVsZSh0aGlzLCAnREJDbHVzdGVyRXZlbnQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0NhdGNoZXMgUkRTIERCIGNsdXN0ZXIgYXV0by1zdGFydCBldmVudHMgKFJEUy1FVkVOVC0wMTUzKS4nLFxuICAgICAgZW5hYmxlZDogZW5hYmxlUnVsZSxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBzb3VyY2U6IFtSRFNfRVZFTlRfU09VUkNFXSxcbiAgICAgICAgZGV0YWlsVHlwZTogW0RCX0NMVVNURVJfQVVUT19TVEFSVF9FVkVOVC5kZXRhaWxUeXBlXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgRXZlbnRJRDogW0RCX0NMVVNURVJfQVVUT19TVEFSVF9FVkVOVC5ldmVudElkXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbXG4gICAgICAgIG5ldyBMYW1iZGFGdW5jdGlvbihhdXRvU3RhcnRQcmV2ZW50RnVuY3Rpb25BbGlhcywge1xuICAgICAgICAgIHJldHJ5QXR0ZW1wdHM6IEVWRU5UX1RBUkdFVF9SRVRSWV9BVFRFTVBUUyxcbiAgICAgICAgICBldmVudDogbGFtYmRhSW5wdXQsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Values shared by the construct (EventBridge rules) and the Lambda handler (event checks).
|
|
3
|
+
*/
|
|
4
|
+
/** EventBridge source for RDS events. */
|
|
5
|
+
export declare const RDS_EVENT_SOURCE = "aws.rds";
|
|
6
|
+
/** RDS DB instance auto-start event (RDS-EVENT-0154). */
|
|
7
|
+
export declare const DB_INSTANCE_AUTO_START_EVENT: {
|
|
8
|
+
readonly detailType: "RDS DB Instance Event";
|
|
9
|
+
readonly eventId: "RDS-EVENT-0154";
|
|
10
|
+
readonly sourceType: "DB_INSTANCE";
|
|
11
|
+
};
|
|
12
|
+
/** RDS DB cluster auto-start event (RDS-EVENT-0153). */
|
|
13
|
+
export declare const DB_CLUSTER_AUTO_START_EVENT: {
|
|
14
|
+
readonly detailType: "RDS DB Cluster Event";
|
|
15
|
+
readonly eventId: "RDS-EVENT-0153";
|
|
16
|
+
readonly sourceType: "CLUSTER";
|
|
17
|
+
};
|
|
18
|
+
/** Term logged by the handler when an execution fails; matched by the failure detection metric filter. */
|
|
19
|
+
export declare const AUTO_START_PREVENT_FAILED_LOG_TERM = "AutoStartPreventFailed";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Values shared by the construct (EventBridge rules) and the Lambda handler (event checks).
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AUTO_START_PREVENT_FAILED_LOG_TERM = exports.DB_CLUSTER_AUTO_START_EVENT = exports.DB_INSTANCE_AUTO_START_EVENT = exports.RDS_EVENT_SOURCE = void 0;
|
|
7
|
+
/** EventBridge source for RDS events. */
|
|
8
|
+
exports.RDS_EVENT_SOURCE = 'aws.rds';
|
|
9
|
+
/** RDS DB instance auto-start event (RDS-EVENT-0154). */
|
|
10
|
+
exports.DB_INSTANCE_AUTO_START_EVENT = {
|
|
11
|
+
detailType: 'RDS DB Instance Event',
|
|
12
|
+
eventId: 'RDS-EVENT-0154',
|
|
13
|
+
sourceType: 'DB_INSTANCE',
|
|
14
|
+
};
|
|
15
|
+
/** RDS DB cluster auto-start event (RDS-EVENT-0153). */
|
|
16
|
+
exports.DB_CLUSTER_AUTO_START_EVENT = {
|
|
17
|
+
detailType: 'RDS DB Cluster Event',
|
|
18
|
+
eventId: 'RDS-EVENT-0153',
|
|
19
|
+
sourceType: 'CLUSTER',
|
|
20
|
+
};
|
|
21
|
+
/** Term logged by the handler when an execution fails; matched by the failure detection metric filter. */
|
|
22
|
+
exports.AUTO_START_PREVENT_FAILED_LOG_TERM = 'AutoStartPreventFailed';
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NldHRpbmdzL2NvbnN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILHlDQUF5QztBQUM1QixRQUFBLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUUxQyx5REFBeUQ7QUFDNUMsUUFBQSw0QkFBNEIsR0FBRztJQUMxQyxVQUFVLEVBQUUsdUJBQXVCO0lBQ25DLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsVUFBVSxFQUFFLGFBQWE7Q0FDakIsQ0FBQztBQUVYLHdEQUF3RDtBQUMzQyxRQUFBLDJCQUEyQixHQUFHO0lBQ3pDLFVBQVUsRUFBRSxzQkFBc0I7SUFDbEMsT0FBTyxFQUFFLGdCQUFnQjtJQUN6QixVQUFVLEVBQUUsU0FBUztDQUNiLENBQUM7QUFFWCwwR0FBMEc7QUFDN0YsUUFBQSxrQ0FBa0MsR0FBRyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmFsdWVzIHNoYXJlZCBieSB0aGUgY29uc3RydWN0IChFdmVudEJyaWRnZSBydWxlcykgYW5kIHRoZSBMYW1iZGEgaGFuZGxlciAoZXZlbnQgY2hlY2tzKS5cbiAqL1xuXG4vKiogRXZlbnRCcmlkZ2Ugc291cmNlIGZvciBSRFMgZXZlbnRzLiAqL1xuZXhwb3J0IGNvbnN0IFJEU19FVkVOVF9TT1VSQ0UgPSAnYXdzLnJkcyc7XG5cbi8qKiBSRFMgREIgaW5zdGFuY2UgYXV0by1zdGFydCBldmVudCAoUkRTLUVWRU5ULTAxNTQpLiAqL1xuZXhwb3J0IGNvbnN0IERCX0lOU1RBTkNFX0FVVE9fU1RBUlRfRVZFTlQgPSB7XG4gIGRldGFpbFR5cGU6ICdSRFMgREIgSW5zdGFuY2UgRXZlbnQnLFxuICBldmVudElkOiAnUkRTLUVWRU5ULTAxNTQnLFxuICBzb3VyY2VUeXBlOiAnREJfSU5TVEFOQ0UnLFxufSBhcyBjb25zdDtcblxuLyoqIFJEUyBEQiBjbHVzdGVyIGF1dG8tc3RhcnQgZXZlbnQgKFJEUy1FVkVOVC0wMTUzKS4gKi9cbmV4cG9ydCBjb25zdCBEQl9DTFVTVEVSX0FVVE9fU1RBUlRfRVZFTlQgPSB7XG4gIGRldGFpbFR5cGU6ICdSRFMgREIgQ2x1c3RlciBFdmVudCcsXG4gIGV2ZW50SWQ6ICdSRFMtRVZFTlQtMDE1MycsXG4gIHNvdXJjZVR5cGU6ICdDTFVTVEVSJyxcbn0gYXMgY29uc3Q7XG5cbi8qKiBUZXJtIGxvZ2dlZCBieSB0aGUgaGFuZGxlciB3aGVuIGFuIGV4ZWN1dGlvbiBmYWlsczsgbWF0Y2hlZCBieSB0aGUgZmFpbHVyZSBkZXRlY3Rpb24gbWV0cmljIGZpbHRlci4gKi9cbmV4cG9ydCBjb25zdCBBVVRPX1NUQVJUX1BSRVZFTlRfRkFJTEVEX0xPR19URVJNID0gJ0F1dG9TdGFydFByZXZlbnRGYWlsZWQnO1xuIl19
|
package/package.json
CHANGED
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@aws-sdk/client-rds": "^3.1063.0",
|
|
43
|
-
"@aws/durable-execution-sdk-js": "^
|
|
43
|
+
"@aws/durable-execution-sdk-js": "^3.0.0",
|
|
44
|
+
"@aws/durable-execution-sdk-js-testing": "^1.3.2",
|
|
44
45
|
"@gammarers/projen-projects": "^0.5.10",
|
|
45
46
|
"@slack/web-api": "^6.13.0",
|
|
46
47
|
"@stylistic/eslint-plugin": "^2",
|
|
@@ -50,7 +51,7 @@
|
|
|
50
51
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
51
52
|
"@typescript-eslint/parser": "^8",
|
|
52
53
|
"aws-cdk-lib": "2.232.0",
|
|
53
|
-
"aws-lambda-secret-fetcher": "^0.
|
|
54
|
+
"aws-lambda-secret-fetcher": "^0.10.0",
|
|
54
55
|
"aws-sdk-client-mock": "^4.1.0",
|
|
55
56
|
"aws-sdk-client-mock-jest": "^4.1.0",
|
|
56
57
|
"commit-and-tag-version": "^13",
|
|
@@ -66,15 +67,17 @@
|
|
|
66
67
|
"jsii-docgen": "^10.5.0",
|
|
67
68
|
"jsii-pacmak": "^1.142.0",
|
|
68
69
|
"jsii-rosetta": "6.0.x",
|
|
70
|
+
"lambda-failure-detector": "0.2.3",
|
|
69
71
|
"projen": "^0.104.27",
|
|
70
|
-
"strict-env-resolver": "^0.
|
|
72
|
+
"strict-env-resolver": "^0.9.0",
|
|
71
73
|
"ts-jest": "^29.4.15",
|
|
72
74
|
"ts-node": "^10.9.2",
|
|
73
75
|
"typescript": "6.0.x"
|
|
74
76
|
},
|
|
75
77
|
"peerDependencies": {
|
|
76
78
|
"aws-cdk-lib": "^2.232.0",
|
|
77
|
-
"constructs": "^10.5.1"
|
|
79
|
+
"constructs": "^10.5.1",
|
|
80
|
+
"lambda-failure-detector": "^0.2.3"
|
|
78
81
|
},
|
|
79
82
|
"keywords": [
|
|
80
83
|
"aws",
|
|
@@ -97,7 +100,7 @@
|
|
|
97
100
|
"publishConfig": {
|
|
98
101
|
"access": "public"
|
|
99
102
|
},
|
|
100
|
-
"version": "0.
|
|
103
|
+
"version": "0.6.0",
|
|
101
104
|
"jest": {
|
|
102
105
|
"coverageProvider": "v8",
|
|
103
106
|
"testMatch": [
|