@aws-cdk/aws-iot-alpha 2.218.0-alpha.0 → 2.220.0-alpha.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 +3 -3
- package/.jsii.tabl.json.gz +0 -0
- package/lib/audit-configuration.js +169 -126
- package/lib/iot-sql.js +4 -4
- package/lib/logging.js +127 -84
- package/lib/scheduled-audit.js +163 -115
- package/lib/topic-rule.js +147 -98
- package/package.json +10 -9
package/lib/logging.js
CHANGED
|
@@ -1,11 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
5
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
6
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
7
|
+
var _, done = false;
|
|
8
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
9
|
+
var context = {};
|
|
10
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
+
if (kind === "accessor") {
|
|
15
|
+
if (result === void 0) continue;
|
|
16
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
+
}
|
|
21
|
+
else if (_ = accept(result)) {
|
|
22
|
+
if (kind === "field") initializers.unshift(_);
|
|
23
|
+
else descriptor[key] = _;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
+
done = true;
|
|
28
|
+
};
|
|
29
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
+
var useValue = arguments.length > 2;
|
|
31
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
+
}
|
|
34
|
+
return useValue ? value : void 0;
|
|
7
35
|
};
|
|
8
|
-
var _a;
|
|
9
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
37
|
exports.Logging = exports.LogLevel = void 0;
|
|
11
38
|
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
@@ -52,86 +79,102 @@ var LogLevel;
|
|
|
52
79
|
/**
|
|
53
80
|
* Defines AWS IoT Logging
|
|
54
81
|
*/
|
|
55
|
-
let Logging =
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
82
|
+
let Logging = (() => {
|
|
83
|
+
let _classDecorators = [prop_injectable_1.propertyInjectable];
|
|
84
|
+
let _classDescriptor;
|
|
85
|
+
let _classExtraInitializers = [];
|
|
86
|
+
let _classThis;
|
|
87
|
+
let _classSuper = core_1.Resource;
|
|
88
|
+
var Logging = class extends _classSuper {
|
|
89
|
+
static { _classThis = this; }
|
|
90
|
+
static {
|
|
91
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
92
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
93
|
+
Logging = _classThis = _classDescriptor.value;
|
|
94
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
69
95
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
96
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-iot-alpha.Logging", version: "2.220.0-alpha.0" };
|
|
97
|
+
/** Uniquely identifies this class. */
|
|
98
|
+
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-iot-alpha.Logging';
|
|
99
|
+
/**
|
|
100
|
+
* Import an existing AWS IoT Logging
|
|
101
|
+
*
|
|
102
|
+
* @param scope The parent creating construct (usually `this`)
|
|
103
|
+
* @param id The construct's name
|
|
104
|
+
* @param logId AWS IoT Logging ID
|
|
105
|
+
*/
|
|
106
|
+
static fromLogId(scope, id, logId) {
|
|
107
|
+
class Import extends core_1.Resource {
|
|
108
|
+
logId = logId;
|
|
109
|
+
}
|
|
110
|
+
return new Import(scope, id);
|
|
76
111
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
112
|
+
/**
|
|
113
|
+
* The logging ID
|
|
114
|
+
* @attribute
|
|
115
|
+
*/
|
|
116
|
+
logId;
|
|
117
|
+
constructor(scope, id, props) {
|
|
118
|
+
super(scope, id);
|
|
119
|
+
try {
|
|
120
|
+
jsiiDeprecationWarnings._aws_cdk_aws_iot_alpha_LoggingProps(props);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
124
|
+
Error.captureStackTrace(error, Logging);
|
|
125
|
+
}
|
|
126
|
+
throw error;
|
|
80
127
|
}
|
|
81
|
-
|
|
128
|
+
// Enhanced CDK Analytics Telemetry
|
|
129
|
+
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
130
|
+
const accountId = core_1.Stack.of(this).account;
|
|
131
|
+
// Create a role for logging
|
|
132
|
+
// https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#configure-logging-role-and-policy
|
|
133
|
+
const role = new iam.Role(this, 'Role', {
|
|
134
|
+
assumedBy: new iam.ServicePrincipal('iot.amazonaws.com'),
|
|
135
|
+
inlinePolicies: {
|
|
136
|
+
LoggingPolicy: new iam.PolicyDocument({
|
|
137
|
+
statements: [
|
|
138
|
+
new iam.PolicyStatement({
|
|
139
|
+
actions: [
|
|
140
|
+
'logs:CreateLogGroup',
|
|
141
|
+
'logs:CreateLogStream',
|
|
142
|
+
'logs:PutLogEvents',
|
|
143
|
+
'logs:PutMetricFilter',
|
|
144
|
+
'logs:PutRetentionPolicy',
|
|
145
|
+
'iot:GetLoggingOptions',
|
|
146
|
+
'iot:SetLoggingOptions',
|
|
147
|
+
'iot:SetV2LoggingOptions',
|
|
148
|
+
'iot:GetV2LoggingOptions',
|
|
149
|
+
'iot:SetV2LoggingLevel',
|
|
150
|
+
'iot:ListV2LoggingLevels',
|
|
151
|
+
'iot:DeleteV2LoggingLevel',
|
|
152
|
+
],
|
|
153
|
+
resources: [
|
|
154
|
+
core_1.Stack.of(this).formatArn({
|
|
155
|
+
service: 'logs',
|
|
156
|
+
resource: 'log-group',
|
|
157
|
+
arnFormat: core_1.ArnFormat.COLON_RESOURCE_NAME,
|
|
158
|
+
resourceName: 'AWSIotLogsV2:*',
|
|
159
|
+
}),
|
|
160
|
+
],
|
|
161
|
+
}),
|
|
162
|
+
],
|
|
163
|
+
}),
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
const resource = new iot.CfnLogging(this, 'Resource', {
|
|
167
|
+
accountId,
|
|
168
|
+
defaultLogLevel: props?.logLevel ?? LogLevel.ERROR,
|
|
169
|
+
roleArn: role.roleArn,
|
|
170
|
+
});
|
|
171
|
+
this.logId = resource.ref;
|
|
82
172
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
assumedBy: new iam.ServicePrincipal('iot.amazonaws.com'),
|
|
90
|
-
inlinePolicies: {
|
|
91
|
-
LoggingPolicy: new iam.PolicyDocument({
|
|
92
|
-
statements: [
|
|
93
|
-
new iam.PolicyStatement({
|
|
94
|
-
actions: [
|
|
95
|
-
'logs:CreateLogGroup',
|
|
96
|
-
'logs:CreateLogStream',
|
|
97
|
-
'logs:PutLogEvents',
|
|
98
|
-
'logs:PutMetricFilter',
|
|
99
|
-
'logs:PutRetentionPolicy',
|
|
100
|
-
'iot:GetLoggingOptions',
|
|
101
|
-
'iot:SetLoggingOptions',
|
|
102
|
-
'iot:SetV2LoggingOptions',
|
|
103
|
-
'iot:GetV2LoggingOptions',
|
|
104
|
-
'iot:SetV2LoggingLevel',
|
|
105
|
-
'iot:ListV2LoggingLevels',
|
|
106
|
-
'iot:DeleteV2LoggingLevel',
|
|
107
|
-
],
|
|
108
|
-
resources: [
|
|
109
|
-
core_1.Stack.of(this).formatArn({
|
|
110
|
-
service: 'logs',
|
|
111
|
-
resource: 'log-group',
|
|
112
|
-
arnFormat: core_1.ArnFormat.COLON_RESOURCE_NAME,
|
|
113
|
-
resourceName: 'AWSIotLogsV2:*',
|
|
114
|
-
}),
|
|
115
|
-
],
|
|
116
|
-
}),
|
|
117
|
-
],
|
|
118
|
-
}),
|
|
119
|
-
},
|
|
120
|
-
});
|
|
121
|
-
const resource = new iot.CfnLogging(this, 'Resource', {
|
|
122
|
-
accountId,
|
|
123
|
-
defaultLogLevel: props?.logLevel ?? LogLevel.ERROR,
|
|
124
|
-
roleArn: role.roleArn,
|
|
125
|
-
});
|
|
126
|
-
this.logId = resource.ref;
|
|
127
|
-
}
|
|
128
|
-
};
|
|
173
|
+
static {
|
|
174
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
return Logging = _classThis;
|
|
178
|
+
})();
|
|
129
179
|
exports.Logging = Logging;
|
|
130
|
-
|
|
131
|
-
Logging[_a] = { fqn: "@aws-cdk/aws-iot-alpha.Logging", version: "2.218.0-alpha.0" };
|
|
132
|
-
/** Uniquely identifies this class. */
|
|
133
|
-
Logging.PROPERTY_INJECTION_ID = '@aws-cdk.aws-iot-alpha.Logging';
|
|
134
|
-
exports.Logging = Logging = __decorate([
|
|
135
|
-
prop_injectable_1.propertyInjectable
|
|
136
|
-
], Logging);
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlFO0FBRXpFLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsOEVBQThFO0FBQzlFLDBFQUEwRTtBQWExRTs7R0FFRztBQUNILElBQVksUUFpQ1g7QUFqQ0QsV0FBWSxRQUFRO0lBQ2xCOzs7O09BSUc7SUFDSCwyQkFBZSxDQUFBO0lBRWY7Ozs7T0FJRztJQUNILHlCQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gseUJBQWEsQ0FBQTtJQUViOzs7O09BSUc7SUFDSCwyQkFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxpQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBakNXLFFBQVEsd0JBQVIsUUFBUSxRQWlDbkI7QUFjRDs7R0FFRztBQUVJLElBQU0sT0FBTyxHQUFiLE1BQU0sT0FBUSxTQUFRLGVBQVE7SUFJbkM7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFhO1FBQ2pFLE1BQU0sTUFBTyxTQUFRLGVBQVE7WUFBN0I7O2dCQUNrQixVQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLENBQUM7U0FBQTtRQUNELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzlCO0lBUUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7K0NBekJSLE9BQU87Ozs7UUEwQmhCLG1DQUFtQztRQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVsQyxNQUFNLFNBQVMsR0FBRyxZQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUV6Qyw0QkFBNEI7UUFDNUIsaUhBQWlIO1FBQ2pILE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3RDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQztZQUN4RCxjQUFjLEVBQUU7Z0JBQ2QsYUFBYSxFQUFFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQztvQkFDcEMsVUFBVSxFQUFFO3dCQUNWLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzs0QkFDdEIsT0FBTyxFQUFFO2dDQUNQLHFCQUFxQjtnQ0FDckIsc0JBQXNCO2dDQUN0QixtQkFBbUI7Z0NBQ25CLHNCQUFzQjtnQ0FDdEIseUJBQXlCO2dDQUN6Qix1QkFBdUI7Z0NBQ3ZCLHVCQUF1QjtnQ0FDdkIseUJBQXlCO2dDQUN6Qix5QkFBeUI7Z0NBQ3pCLHVCQUF1QjtnQ0FDdkIseUJBQXlCO2dDQUN6QiwwQkFBMEI7NkJBQzNCOzRCQUNELFNBQVMsRUFBRTtnQ0FDVCxZQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQ0FDdkIsT0FBTyxFQUFFLE1BQU07b0NBQ2YsUUFBUSxFQUFFLFdBQVc7b0NBQ3JCLFNBQVMsRUFBRSxnQkFBUyxDQUFDLG1CQUFtQjtvQ0FDeEMsWUFBWSxFQUFFLGdCQUFnQjtpQ0FDL0IsQ0FBQzs2QkFDSDt5QkFDRixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3BELFNBQVM7WUFDVCxlQUFlLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsS0FBSztZQUNsRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0tBQzNCOztBQTFFVSwwQkFBTzs7O0FBQ2xCLHNDQUFzQztBQUNmLDZCQUFxQixHQUFXLGdDQUFnQyxBQUEzQyxDQUE0QztrQkFGN0UsT0FBTztJQURuQixvQ0FBa0I7R0FDTixPQUFPLENBMkVuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlLCBTdGFjaywgSVJlc291cmNlLCBBcm5Gb3JtYXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgaW90IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pb3QnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgQVdTIElvVCBMb2dnaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ2dpbmcgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIGxvZyBJRFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBsb2dJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBsb2cgbGV2ZWwgZm9yIHRoZSBBV1MgSW9UIExvZ2dpbmdcbiAqL1xuZXhwb3J0IGVudW0gTG9nTGV2ZWwge1xuICAvKipcbiAgICogQW55IGVycm9yIHRoYXQgY2F1c2VzIGFuIG9wZXJhdGlvbiB0byBmYWlsXG4gICAqXG4gICAqIExvZ3MgaW5jbHVkZSBFUlJPUiBpbmZvcm1hdGlvbiBvbmx5XG4gICAqL1xuICBFUlJPUiA9ICdFUlJPUicsXG5cbiAgLyoqXG4gICAqIEFueXRoaW5nIHRoYXQgY2FuIHBvdGVudGlhbGx5IGNhdXNlIGluY29uc2lzdGVuY2llcyBpbiB0aGUgc3lzdGVtLCBidXQgbWlnaHQgbm90IGNhdXNlIHRoZSBvcGVyYXRpb24gdG8gZmFpbFxuICAgKlxuICAgKiBMb2dzIGluY2x1ZGUgRVJST1IgYW5kIFdBUk4gaW5mb3JtYXRpb25cbiAgICovXG4gIFdBUk4gPSAnV0FSTicsXG5cbiAgLyoqXG4gICAqIEhpZ2gtbGV2ZWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZsb3cgb2YgdGhpbmdzXG4gICAqXG4gICAqIExvZ3MgaW5jbHVkZSBJTkZPLCBFUlJPUiwgYW5kIFdBUk4gaW5mb3JtYXRpb25cbiAgICovXG4gIElORk8gPSAnSU5GTycsXG5cbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIHRoYXQgbWlnaHQgYmUgaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyBhIHByb2JsZW1cbiAgICpcbiAgICogTG9ncyBpbmNsdWRlIERFQlVHLCBJTkZPLCBFUlJPUiwgYW5kIFdBUk4gaW5mb3JtYXRpb25cbiAgICovXG4gIERFQlVHID0gJ0RFQlVHJyxcblxuICAvKipcbiAgICogQWxsIGxvZ2dpbmcgaXMgZGlzYWJsZWRcbiAgICovXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBBV1MgSW9UIExvZ2dpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dnaW5nUHJvcHMge1xuICAvKipcbiAgICogVGhlIGxvZyBsZXZlbCBmb3IgdGhlIEFXUyBJb1QgTG9nZ2luZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBMb2dMZXZlbC5FUlJPUlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nTGV2ZWw/OiBMb2dMZXZlbDtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIEFXUyBJb1QgTG9nZ2luZ1xuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgTG9nZ2luZyBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSUxvZ2dpbmcge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pb3QtYWxwaGEuTG9nZ2luZyc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBBV1MgSW9UIExvZ2dpbmdcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSBsb2dJZCBBV1MgSW9UIExvZ2dpbmcgSURcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUxvZ0lkKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGxvZ0lkOiBzdHJpbmcpOiBJTG9nZ2luZyB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJTG9nZ2luZyB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbG9nSWQgPSBsb2dJZDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbG9nZ2luZyBJRFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IExvZ2dpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBjb25zdCBhY2NvdW50SWQgPSBTdGFjay5vZih0aGlzKS5hY2NvdW50O1xuXG4gICAgLy8gQ3JlYXRlIGEgcm9sZSBmb3IgbG9nZ2luZ1xuICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pb3QvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2NvbmZpZ3VyZS1sb2dnaW5nLmh0bWwjY29uZmlndXJlLWxvZ2dpbmctcm9sZS1hbmQtcG9saWN5XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdpb3QuYW1hem9uYXdzLmNvbScpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgTG9nZ2luZ1BvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLFxuICAgICAgICAgICAgICAgICdsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsXG4gICAgICAgICAgICAgICAgJ2xvZ3M6UHV0TG9nRXZlbnRzJyxcbiAgICAgICAgICAgICAgICAnbG9nczpQdXRNZXRyaWNGaWx0ZXInLFxuICAgICAgICAgICAgICAgICdsb2dzOlB1dFJldGVudGlvblBvbGljeScsXG4gICAgICAgICAgICAgICAgJ2lvdDpHZXRMb2dnaW5nT3B0aW9ucycsXG4gICAgICAgICAgICAgICAgJ2lvdDpTZXRMb2dnaW5nT3B0aW9ucycsXG4gICAgICAgICAgICAgICAgJ2lvdDpTZXRWMkxvZ2dpbmdPcHRpb25zJyxcbiAgICAgICAgICAgICAgICAnaW90OkdldFYyTG9nZ2luZ09wdGlvbnMnLFxuICAgICAgICAgICAgICAgICdpb3Q6U2V0VjJMb2dnaW5nTGV2ZWwnLFxuICAgICAgICAgICAgICAgICdpb3Q6TGlzdFYyTG9nZ2luZ0xldmVscycsXG4gICAgICAgICAgICAgICAgJ2lvdDpEZWxldGVWMkxvZ2dpbmdMZXZlbCcsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIFN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICAgICAgICAgICAgICBzZXJ2aWNlOiAnbG9ncycsXG4gICAgICAgICAgICAgICAgICByZXNvdXJjZTogJ2xvZy1ncm91cCcsXG4gICAgICAgICAgICAgICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAnQVdTSW90TG9nc1YyOionLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgaW90LkNmbkxvZ2dpbmcodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgYWNjb3VudElkLFxuICAgICAgZGVmYXVsdExvZ0xldmVsOiBwcm9wcz8ubG9nTGV2ZWwgPz8gTG9nTGV2ZWwuRVJST1IsXG4gICAgICByb2xlQXJuOiByb2xlLnJvbGVBcm4sXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvZ0lkID0gcmVzb3VyY2UucmVmO1xuICB9XG59XG4iXX0=
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlFO0FBRXpFLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsOEVBQThFO0FBQzlFLDBFQUEwRTtBQWExRTs7R0FFRztBQUNILElBQVksUUFpQ1g7QUFqQ0QsV0FBWSxRQUFRO0lBQ2xCOzs7O09BSUc7SUFDSCwyQkFBZSxDQUFBO0lBRWY7Ozs7T0FJRztJQUNILHlCQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gseUJBQWEsQ0FBQTtJQUViOzs7O09BSUc7SUFDSCwyQkFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxpQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBakNXLFFBQVEsd0JBQVIsUUFBUSxRQWlDbkI7QUFjRDs7R0FFRztJQUVVLE9BQU87NEJBRG5CLG9DQUFrQjs7OztzQkFDVSxlQUFRO3VCQUFoQixTQUFRLFdBQVE7Ozs7WUFBckMsNktBMkVDOzs7OztRQTFFQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLGdDQUFnQyxDQUFDO1FBRXhGOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBYTtZQUNqRSxNQUFNLE1BQU8sU0FBUSxlQUFRO2dCQUNYLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDL0I7WUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM5QjtRQUVEOzs7V0FHRztRQUNhLEtBQUssQ0FBUztRQUU5QixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1lBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzttREF6QlIsT0FBTzs7OztZQTBCaEIsbUNBQW1DO1lBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWxDLE1BQU0sU0FBUyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1lBRXpDLDRCQUE0QjtZQUM1QixpSEFBaUg7WUFDakgsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3RDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDeEQsY0FBYyxFQUFFO29CQUNkLGFBQWEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7d0JBQ3BDLFVBQVUsRUFBRTs0QkFDVixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0NBQ3RCLE9BQU8sRUFBRTtvQ0FDUCxxQkFBcUI7b0NBQ3JCLHNCQUFzQjtvQ0FDdEIsbUJBQW1CO29DQUNuQixzQkFBc0I7b0NBQ3RCLHlCQUF5QjtvQ0FDekIsdUJBQXVCO29DQUN2Qix1QkFBdUI7b0NBQ3ZCLHlCQUF5QjtvQ0FDekIseUJBQXlCO29DQUN6Qix1QkFBdUI7b0NBQ3ZCLHlCQUF5QjtvQ0FDekIsMEJBQTBCO2lDQUMzQjtnQ0FDRCxTQUFTLEVBQUU7b0NBQ1QsWUFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7d0NBQ3ZCLE9BQU8sRUFBRSxNQUFNO3dDQUNmLFFBQVEsRUFBRSxXQUFXO3dDQUNyQixTQUFTLEVBQUUsZ0JBQVMsQ0FBQyxtQkFBbUI7d0NBQ3hDLFlBQVksRUFBRSxnQkFBZ0I7cUNBQy9CLENBQUM7aUNBQ0g7NkJBQ0YsQ0FBQzt5QkFDSDtxQkFDRixDQUFDO2lCQUNIO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3BELFNBQVM7Z0JBQ1QsZUFBZSxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUs7Z0JBQ2xELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7U0FDM0I7O1lBMUVVLHVEQUFPOzs7OztBQUFQLDBCQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2UsIFN0YWNrLCBJUmVzb3VyY2UsIEFybkZvcm1hdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBpb3QgZnJvbSAnYXdzLWNkay1saWIvYXdzLWlvdCc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBBV1MgSW9UIExvZ2dpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2luZyBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgbG9nIElEXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0lkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGxvZyBsZXZlbCBmb3IgdGhlIEFXUyBJb1QgTG9nZ2luZ1xuICovXG5leHBvcnQgZW51bSBMb2dMZXZlbCB7XG4gIC8qKlxuICAgKiBBbnkgZXJyb3IgdGhhdCBjYXVzZXMgYW4gb3BlcmF0aW9uIHRvIGZhaWxcbiAgICpcbiAgICogTG9ncyBpbmNsdWRlIEVSUk9SIGluZm9ybWF0aW9uIG9ubHlcbiAgICovXG4gIEVSUk9SID0gJ0VSUk9SJyxcblxuICAvKipcbiAgICogQW55dGhpbmcgdGhhdCBjYW4gcG90ZW50aWFsbHkgY2F1c2UgaW5jb25zaXN0ZW5jaWVzIGluIHRoZSBzeXN0ZW0sIGJ1dCBtaWdodCBub3QgY2F1c2UgdGhlIG9wZXJhdGlvbiB0byBmYWlsXG4gICAqXG4gICAqIExvZ3MgaW5jbHVkZSBFUlJPUiBhbmQgV0FSTiBpbmZvcm1hdGlvblxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogSGlnaC1sZXZlbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxvdyBvZiB0aGluZ3NcbiAgICpcbiAgICogTG9ncyBpbmNsdWRlIElORk8sIEVSUk9SLCBhbmQgV0FSTiBpbmZvcm1hdGlvblxuICAgKi9cbiAgSU5GTyA9ICdJTkZPJyxcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gdGhhdCBtaWdodCBiZSBoZWxwZnVsIHdoZW4gZGVidWdnaW5nIGEgcHJvYmxlbVxuICAgKlxuICAgKiBMb2dzIGluY2x1ZGUgREVCVUcsIElORk8sIEVSUk9SLCBhbmQgV0FSTiBpbmZvcm1hdGlvblxuICAgKi9cbiAgREVCVUcgPSAnREVCVUcnLFxuXG4gIC8qKlxuICAgKiBBbGwgbG9nZ2luZyBpcyBkaXNhYmxlZFxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIEFXUyBJb1QgTG9nZ2luZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbG9nIGxldmVsIGZvciB0aGUgQVdTIElvVCBMb2dnaW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IExvZ0xldmVsLkVSUk9SXG4gICAqL1xuICByZWFkb25seSBsb2dMZXZlbD86IExvZ0xldmVsO1xufVxuXG4vKipcbiAqIERlZmluZXMgQVdTIElvVCBMb2dnaW5nXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBMb2dnaW5nIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJTG9nZ2luZyB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWlvdC1hbHBoYS5Mb2dnaW5nJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEFXUyBJb1QgTG9nZ2luZ1xuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIGxvZ0lkIEFXUyBJb1QgTG9nZ2luZyBJRFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTG9nSWQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgbG9nSWQ6IHN0cmluZyk6IElMb2dnaW5nIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElMb2dnaW5nIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBsb2dJZCA9IGxvZ0lkO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsb2dnaW5nIElEXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsb2dJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogTG9nZ2luZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIGNvbnN0IGFjY291bnRJZCA9IFN0YWNrLm9mKHRoaXMpLmFjY291bnQ7XG5cbiAgICAvLyBDcmVhdGUgYSByb2xlIGZvciBsb2dnaW5nXG4gICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvY29uZmlndXJlLWxvZ2dpbmcuaHRtbCNjb25maWd1cmUtbG9nZ2luZy1yb2xlLWFuZC1wb2xpY3lcbiAgICBjb25zdCByb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2lvdC5hbWF6b25hd3MuY29tJyksXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBMb2dnaW5nUG9saWN5OiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnbG9nczpDcmVhdGVMb2dHcm91cCcsXG4gICAgICAgICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJyxcbiAgICAgICAgICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgICAgICAgICAgICdsb2dzOlB1dE1ldHJpY0ZpbHRlcicsXG4gICAgICAgICAgICAgICAgJ2xvZ3M6UHV0UmV0ZW50aW9uUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnaW90OkdldExvZ2dpbmdPcHRpb25zJyxcbiAgICAgICAgICAgICAgICAnaW90OlNldExvZ2dpbmdPcHRpb25zJyxcbiAgICAgICAgICAgICAgICAnaW90OlNldFYyTG9nZ2luZ09wdGlvbnMnLFxuICAgICAgICAgICAgICAgICdpb3Q6R2V0VjJMb2dnaW5nT3B0aW9ucycsXG4gICAgICAgICAgICAgICAgJ2lvdDpTZXRWMkxvZ2dpbmdMZXZlbCcsXG4gICAgICAgICAgICAgICAgJ2lvdDpMaXN0VjJMb2dnaW5nTGV2ZWxzJyxcbiAgICAgICAgICAgICAgICAnaW90OkRlbGV0ZVYyTG9nZ2luZ0xldmVsJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgICAgICAgICAgIHNlcnZpY2U6ICdsb2dzJyxcbiAgICAgICAgICAgICAgICAgIHJlc291cmNlOiAnbG9nLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUsXG4gICAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICdBV1NJb3RMb2dzVjI6KicsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBpb3QuQ2ZuTG9nZ2luZyh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBhY2NvdW50SWQsXG4gICAgICBkZWZhdWx0TG9nTGV2ZWw6IHByb3BzPy5sb2dMZXZlbCA/PyBMb2dMZXZlbC5FUlJPUixcbiAgICAgIHJvbGVBcm46IHJvbGUucm9sZUFybixcbiAgICB9KTtcblxuICAgIHRoaXMubG9nSWQgPSByZXNvdXJjZS5yZWY7XG4gIH1cbn1cbiJdfQ==
|