@aws-cdk/toolkit-lib 1.29.1 → 1.30.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.
Files changed (38) hide show
  1. package/build-info.json +2 -2
  2. package/lib/actions/diagnose/index.d.ts +28 -0
  3. package/lib/actions/diagnose/index.js +1 -1
  4. package/lib/actions/validate/index.d.ts +2 -0
  5. package/lib/actions/validate/index.js +1 -1
  6. package/lib/api/aws-auth/sdk.d.ts +5 -1
  7. package/lib/api/aws-auth/sdk.js +5 -1
  8. package/lib/api/cloud-assembly/environment.js +4 -1
  9. package/lib/api/cloud-assembly/stack-collection.d.ts +2 -0
  10. package/lib/api/cloud-assembly/stack-collection.js +3 -1
  11. package/lib/api/deployments/deploy-stack.js +4 -2
  12. package/lib/api/deployments/deployments.js +3 -1
  13. package/lib/api/diagnosing/diagnosis-formatting.js +54 -13
  14. package/lib/api/diagnosing/format-utils.d.ts +3 -0
  15. package/lib/api/diagnosing/format-utils.js +36 -0
  16. package/lib/api/diagnosing/resource-investigation.d.ts +41 -0
  17. package/lib/api/diagnosing/resource-investigation.js +302 -0
  18. package/lib/api/diagnosing/stack-diagnoser.d.ts +39 -3
  19. package/lib/api/diagnosing/stack-diagnoser.js +71 -30
  20. package/lib/api/io/private/messages.js +2 -2
  21. package/lib/api/validate/validate-formatting.d.ts +9 -2
  22. package/lib/api/validate/validate-formatting.js +117 -69
  23. package/lib/private/tools.js +26 -24
  24. package/lib/toolkit/private/collect-annotation-report.d.ts +12 -0
  25. package/lib/toolkit/private/collect-annotation-report.js +85 -0
  26. package/lib/toolkit/private/validation-report.d.ts +32 -0
  27. package/lib/toolkit/private/validation-report.js +119 -0
  28. package/lib/toolkit/toolkit.d.ts +4 -7
  29. package/lib/toolkit/toolkit.js +24 -67
  30. package/lib/toolkit/types.d.ts +1 -0
  31. package/lib/toolkit/types.js +1 -1
  32. package/lib/util/glob-matcher.d.ts +19 -7
  33. package/lib/util/glob-matcher.js +63 -14
  34. package/package.json +5 -5
  35. package/lib/api/diagnosing/tree-builder.d.ts +0 -13
  36. package/lib/api/diagnosing/tree-builder.js +0 -86
  37. package/lib/api/diagnosing/tree.d.ts +0 -19
  38. package/lib/api/diagnosing/tree.js +0 -72
@@ -4,25 +4,15 @@ exports.CloudFormationStackDiagnoser = void 0;
4
4
  exports.changeSetHasNoChanges = changeSetHasNoChanges;
5
5
  const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
6
6
  const changeset_error_fetcher_1 = require("./changeset-error-fetcher");
7
+ const resource_investigation_1 = require("./resource-investigation");
7
8
  const stack_events_1 = require("../stack-events");
8
9
  const stack_status_1 = require("../stack-events/stack-status");
9
- /**
10
- * Diagnose a stack's failed state
11
- *
12
- * - First, determine the stack's state.
13
- * - If it is in a failed state, we started a deployment that failed. Describe the stack
14
- * events, and try to determine the root cause from that.
15
- * - If it is in a normal state, see if there are any failed change sets. Either
16
- * get the failure message from the change set, or get the failure events from
17
- * the change set (early validation).
18
- *
19
- * This class works at the CloudFormation level, and does not deal with tracing
20
- * CloudFormation errors to construct code sources yet.
21
- */
22
10
  class CloudFormationStackDiagnoser {
23
11
  props;
24
12
  cfn;
25
13
  parentStackLogicalIds;
14
+ _additionalExplorationSdkPromise;
15
+ rollbackEnabled = true;
26
16
  constructor(props) {
27
17
  this.props = props;
28
18
  this.cfn = this.props.sdk.cloudFormation();
@@ -48,7 +38,7 @@ class CloudFormationStackDiagnoser {
48
38
  message: `Stack with name ${stackName} is currently being updated (${status.name}). Try again when it's finished.`,
49
39
  };
50
40
  }
51
- if (status.isFailure) {
41
+ if (status.isFailure || status.isRollbackSuccess) {
52
42
  return await this._diagnoseViaStackEvents(stack);
53
43
  }
54
44
  return await this._diagnoseChangeSetFailureFromStackName(stack);
@@ -71,8 +61,19 @@ class CloudFormationStackDiagnoser {
71
61
  /**
72
62
  * Diagnose potential problems with the change set
73
63
  */
74
- async diagnoseFromErrorCollection(errors, stack) {
64
+ async diagnoseFromErrorCollection(errors, stack, allowFallback = true, options = {}) {
65
+ this.rollbackEnabled = options.rollbackEnabled ?? true;
75
66
  if (errors.isEmpty()) {
67
+ if (allowFallback) {
68
+ // The monitor may not have seen failure events yet (race condition).
69
+ // Fall back to polling stack events directly.
70
+ try {
71
+ return await this._diagnoseViaStackEvents(stack);
72
+ }
73
+ catch (e) {
74
+ await this.props.ioHelper.defaults.debug(`Fallback diagnosis failed: ${e.message}`);
75
+ }
76
+ }
76
77
  return { type: 'no-problem' };
77
78
  }
78
79
  return {
@@ -82,7 +83,7 @@ class CloudFormationStackDiagnoser {
82
83
  stackStatus: stack.StackStatus ?? '',
83
84
  statusReason: stack.StackStatusReason ?? '',
84
85
  },
85
- problems: await this.addErrorTraces(errors.all),
86
+ problems: await this.enhanceErrors(errors.all),
86
87
  };
87
88
  }
88
89
  /**
@@ -98,7 +99,7 @@ class CloudFormationStackDiagnoser {
98
99
  // We don't need the resulting events of polling. Polling will automatically update the error collection,
99
100
  // which is the thing we care about.
100
101
  await poller.poll();
101
- return this.diagnoseFromErrorCollection(poller.errors, stack);
102
+ return this.diagnoseFromErrorCollection(poller.errors, stack, false, { rollbackEnabled: this.rollbackEnabled });
102
103
  }
103
104
  async _diagnoseChangeSetFailureFromStackName(stack) {
104
105
  const cs = (await this.cfn.listChangeSets({
@@ -158,7 +159,7 @@ class CloudFormationStackDiagnoser {
158
159
  changeSetName: changeSet.ChangeSetName ?? '',
159
160
  statusReason: changeSet.StatusReason ?? '',
160
161
  },
161
- problems: await this.addErrorTraces(failedAutoErrors),
162
+ problems: await this.enhanceErrors(failedAutoErrors),
162
163
  };
163
164
  }
164
165
  // Otherwise, a generic change set creation error where `DescribeEvents`
@@ -184,7 +185,7 @@ class CloudFormationStackDiagnoser {
184
185
  return {
185
186
  type: 'problem',
186
187
  detectedBy,
187
- problems: await this.addErrorTraces(ev.errors.map((e) => resourceErrorFromEarlyValidationError(changeSet.StackId ?? '', this.parentStackLogicalIds, e))),
188
+ problems: await this.enhanceErrors(ev.errors.map((e) => resourceErrorFromEarlyValidationError(changeSet.StackId ?? '', this.parentStackLogicalIds, e))),
188
189
  };
189
190
  }
190
191
  // Otherwise, we will return a generic changeset error message. If there was a problem
@@ -194,19 +195,42 @@ class CloudFormationStackDiagnoser {
194
195
  }
195
196
  return this._nonSpecificChangeSetError(changeSet, detectedBy);
196
197
  }
197
- async addErrorTraces(errs) {
198
+ async enhanceErrors(errs) {
199
+ // We're not actually limiting this here. But we are making the assumption that the amount of resources
200
+ // that will have errors are always pretty low in number.
201
+ // eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
202
+ return Promise.all(errs.map((e) => this.enhanceError(e)));
203
+ }
204
+ async enhanceError(err) {
205
+ const sourceTracePromise = err.logicalId
206
+ ? this.props.sourceTracer.traceResource(err.stackArn, err.parentStackLogicalIds, err.logicalId)
207
+ : this.props.sourceTracer.traceStack(err.stackArn, err.parentStackLogicalIds);
198
208
  // eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
199
- return Promise.all(errs.map((e) => this.addErrorTrace(e)));
209
+ const [sourceTrace, additionalContext] = await Promise.all([
210
+ sourceTracePromise,
211
+ this.investigateResourceBestEffort(err),
212
+ ]);
213
+ return {
214
+ ...err,
215
+ sourceTrace,
216
+ topLevelStackHierarchicalId: this.props.topLevelStackHierarchicalId,
217
+ ...(additionalContext.length > 0 ? { additionalContext } : {}),
218
+ };
200
219
  }
201
- async addErrorTrace(err) {
202
- let sourceTrace;
203
- if (err.logicalId) {
204
- sourceTrace = await this.props.sourceTracer.traceResource(err.stackArn, err.parentStackLogicalIds, err.logicalId);
220
+ async investigateResourceBestEffort(err) {
221
+ const sdk = await this.additionalExplorationSdk();
222
+ if (!sdk) {
223
+ return [];
205
224
  }
206
- else {
207
- sourceTrace = await this.props.sourceTracer.traceStack(err.stackArn, err.parentStackLogicalIds);
225
+ try {
226
+ return await (0, resource_investigation_1.investigateResource)(err, sdk, (msg) => this.props.ioHelper.defaults.debug(msg), {
227
+ rollbackEnabled: this.rollbackEnabled,
228
+ });
229
+ }
230
+ catch (e) {
231
+ await this.props.ioHelper.defaults.debug(`Resource investigation failed: ${e.message}`);
232
+ return [];
208
233
  }
209
- return { ...err, sourceTrace, topLevelStackHierarchicalId: this.props.topLevelStackHierarchicalId };
210
234
  }
211
235
  /**
212
236
  * Build a generic stack error from the given change set information
@@ -218,7 +242,7 @@ class CloudFormationStackDiagnoser {
218
242
  type: 'problem',
219
243
  detectedBy,
220
244
  problems: [
221
- await this.addErrorTrace({
245
+ await this.enhanceError({
222
246
  // It's about a stack
223
247
  logicalId: undefined,
224
248
  message: changeSet.StatusReason ?? '',
@@ -322,6 +346,23 @@ class CloudFormationStackDiagnoser {
322
346
  }
323
347
  return ret;
324
348
  }
349
+ /**
350
+ * Return the additional exploration SDK, if available.
351
+ */
352
+ additionalExplorationSdk() {
353
+ if (!this._additionalExplorationSdkPromise) {
354
+ this._additionalExplorationSdkPromise = (async () => {
355
+ try {
356
+ return await this.props.additionalExplorationSdkProvider?.();
357
+ }
358
+ catch (e) {
359
+ await this.props.ioHelper.defaults.debug(`Additional exploration SDK provider failed: ${e.message}`);
360
+ return undefined;
361
+ }
362
+ })();
363
+ }
364
+ return this._additionalExplorationSdkPromise;
365
+ }
325
366
  }
326
367
  exports.CloudFormationStackDiagnoser = CloudFormationStackDiagnoser;
327
368
  /**
@@ -351,4 +392,4 @@ function resourceErrorFromEarlyValidationError(stackId, parentStackLogicalIds, e
351
392
  stackArn: stackId,
352
393
  };
353
394
  }
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stZGlhZ25vc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhY2stZGlhZ25vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWtZQSxzREFXQztBQTVZRCwwRUFBNkU7QUFFN0UsdUVBQTBFO0FBTTFFLGtEQUE4RDtBQUU5RCwrREFBMkQ7QUFVM0Q7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSw0QkFBNEI7SUFJVjtJQUhaLEdBQUcsQ0FBd0I7SUFDcEMscUJBQXFCLENBQVc7SUFFeEMsWUFBNkIsS0FBd0M7UUFBeEMsVUFBSyxHQUFMLEtBQUssQ0FBbUM7UUFDbkUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFpQjtRQUM5QyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDekUsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxPQUFPO29CQUNMLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsU0FBUyxZQUFZO2lCQUNsRCxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLDBCQUFXLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU87b0JBQ0wsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsT0FBTyxFQUFFLG1CQUFtQixTQUFTLGdDQUFnQyxNQUFNLENBQUMsSUFBSSxrQ0FBa0M7aUJBQ25ILENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsQ0FBQztZQUVELE9BQU8sTUFBTSxJQUFJLENBQUMsc0NBQXNDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBMkI7UUFDeEQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxNQUFzQixFQUFFLEtBQVk7UUFDM0UsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFNBQVM7WUFDZixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUU7Z0JBQ3BDLFlBQVksRUFBRSxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRTthQUM1QztZQUNELFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUNoRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBWTtRQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLCtCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDNUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFRO1lBQ3hCLGdCQUFnQixFQUFFLHdCQUFTLENBQUMsbUJBQW1CLEVBQUU7U0FDbEQsQ0FBQyxDQUFDO1FBRUgseUdBQXlHO1FBQ3pHLG9DQUFvQztRQUNwQyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVwQixPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxLQUFLLENBQUMsc0NBQXNDLENBQUMsS0FBWTtRQUMvRCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7WUFDeEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFRO1NBQzFCLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFFcEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssdUNBQWUsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLHVDQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0gsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsT0FBTyxFQUFFLG1CQUFtQixLQUFLLENBQUMsU0FBUyw2Q0FBNkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsa0NBQWtDO2FBQ25KLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssdUNBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxLQUFLLENBQUMseUJBQXlCLENBQUMsU0FBMkI7UUFDakUsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLHVDQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3JDLGdGQUFnRjtZQUNoRixPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxzRkFBc0Y7UUFDdEYsMEJBQTBCO1FBQzFCLE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4RixJQUFJLHNCQUFzQixFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsaUNBQWlDLENBQUMsU0FBUyxFQUFFO2dCQUN2RCxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWEsSUFBSSxFQUFFO2FBQzdDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCx3REFBd0Q7UUFDeEQsSUFBSSxTQUFTLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUMsK0JBQStCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELGlHQUFpRztRQUNqRyw2REFBNkQ7UUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxZQUFZO29CQUNsQixlQUFlLEVBQUUsU0FBUyxDQUFDLE1BQU0sSUFBSSxFQUFFO29CQUN2QyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWEsSUFBSSxFQUFFO29CQUM1QyxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVksSUFBSSxFQUFFO2lCQUMzQztnQkFDRCxRQUFRLEVBQUUsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDO2FBQ3RELENBQUM7UUFDSixDQUFDO1FBRUQsd0VBQXdFO1FBQ3hFLGtEQUFrRDtRQUNsRCxPQUFPLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxTQUFTLEVBQUU7WUFDdkQsSUFBSSxFQUFFLFlBQVk7WUFDbEIsZUFBZSxFQUFFLFNBQVMsQ0FBQyxNQUFNLElBQUksRUFBRTtZQUN2QyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQzVDLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWSxJQUFJLEVBQUU7U0FDM0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssS0FBSyxDQUFDLGlDQUFpQyxDQUFDLFNBQTJCLEVBQUUsVUFBOEI7UUFDekcsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLHVEQUE2QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO2FBQ3hGLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxhQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVUsQ0FBQyxDQUFDO1FBRTFFLDJDQUEyQztRQUMzQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssaUJBQWlCLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTztnQkFDTCxJQUFJLEVBQUUsU0FBUztnQkFDZixVQUFVO2dCQUNWLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pKLENBQUM7UUFDSixDQUFDO1FBRUQsc0ZBQXNGO1FBQ3RGLHFFQUFxRTtRQUNyRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBOEI7UUFDekQsd0VBQXdFO1FBQ3hFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFrQjtRQUM1QyxJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQixXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BILENBQUM7YUFBTSxDQUFDO1lBQ04sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbEcsQ0FBQztRQUVELE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQ3RHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssS0FBSyxDQUFDLDBCQUEwQixDQUFDLFNBQTJCLEVBQUUsVUFBOEI7UUFDbEcsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTO1lBQ2YsVUFBVTtZQUNWLFFBQVEsRUFBRTtnQkFDUixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQ3ZCLHFCQUFxQjtvQkFDckIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLE9BQU8sRUFBRSxTQUFTLENBQUMsWUFBWSxJQUFJLEVBQUU7b0JBQ3JDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxxQkFBcUI7b0JBQ2pELFFBQVEsRUFBRSxTQUFTLENBQUMsT0FBTyxJQUFJLEVBQUU7b0JBQ2pDLFVBQVUsRUFBRSxTQUFTLENBQUMsT0FBTztvQkFDN0IsWUFBWSxFQUFFLDRCQUE0QjtpQkFDM0MsQ0FBQzthQUNIO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxTQUEyQjtRQUN2RSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixvRkFBb0Y7WUFDcEYsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxFQUFFO2dCQUNoRCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhLElBQUksRUFBRTtnQkFDNUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxNQUFNLElBQUksRUFBRTtnQkFDdkMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLElBQUksRUFBRTthQUMzQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO1lBQ2hELGFBQWEsRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNsQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVE7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsVUFBVSxDQUFDLHFCQUFxQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sVUFBVSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBMkI7UUFLOUQsNkdBQTZHO1FBQzdHLDhHQUE4RztRQUM5RywrRkFBK0Y7UUFDL0YsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzFCLEdBQUcsQ0FBQztZQUNGLDhDQUE4QztZQUM5QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7Z0JBQzVDLFNBQVMsRUFBRSxTQUFTLENBQUMsT0FBTztnQkFDNUIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxXQUFXO2dCQUNwQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDN0MsQ0FBQyxDQUFDO1lBRUgsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0NBQVUsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxZQUFZLEtBQUssNEJBQTRCLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxXQUFXLElBQUksU0FBUyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUM5TixPQUFPO3dCQUNMLFlBQVksRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVc7d0JBQy9DLFFBQVEsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLGtCQUFrQixJQUFJLEVBQUU7d0JBQ3hELFNBQVMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLGlCQUFpQixJQUFJLEVBQUU7cUJBQ3pELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7WUFFRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM3QixDQUFDLFFBQVEsU0FBUyxFQUFFO1FBRXBCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNLLDBCQUEwQixDQUFDLFNBQTJCO1FBQzVELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDdkMseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLGtHQUFrRyxDQUFDLEVBQUUsQ0FBQztZQUMzSCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsNkJBQTZCLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBb0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxPQUFPLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsTUFBTSxZQUFZLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM1RSxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXJELHdEQUF3RDtZQUN4RCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sU0FBUyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUV2RixHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNQLE9BQU8sRUFBRSx5Q0FBeUMsWUFBWSx1UEFBdVA7Z0JBQ3JULHFCQUFxQixFQUFFLElBQUksQ0FBQyxxQkFBcUI7Z0JBQ2pELFFBQVEsRUFBRSxTQUFTLENBQUMsT0FBTyxJQUFJLEVBQUU7Z0JBQ2pDLFNBQVMsRUFBRSw0QkFBNEI7Z0JBQ3ZDLFNBQVM7YUFDVixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0Y7QUF2VkQsb0VBdVZDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsV0FBNkI7SUFDakUsTUFBTSxxQkFBcUIsR0FBRztRQUM1Qix1Q0FBdUM7UUFDdkMsbURBQW1EO1FBQ25ELDBEQUEwRDtRQUMxRCxpQ0FBaUM7S0FDbEMsQ0FBQztJQUVGLE9BQU8sQ0FDTCxXQUFXLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDckgsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHFDQUFxQyxDQUFDLE9BQWUsRUFBRSxxQkFBK0IsRUFBRSxFQUEwQjtJQUN6SCxPQUFPO1FBQ0wsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTO1FBQ3ZCLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVTtRQUN6QixZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVk7UUFDN0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sUUFBUSxFQUFFLENBQUMsWUFBWSxHQUFHO1FBQ2hELFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtRQUNqRCxxQkFBcUI7UUFDckIsUUFBUSxFQUFFLE9BQU87S0FDbEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENoYW5nZVNldFN1bW1hcnksIFN0YWNrIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IENoYW5nZVNldFN0YXR1cywgQ2hhbmdlVHlwZSB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7IENoYW5nZVNldFJlc291cmNlRXJyb3IgfSBmcm9tICcuL2NoYW5nZXNldC1lcnJvci1mZXRjaGVyJztcbmltcG9ydCB7IENoYW5nZVNldFJlc291cmNlRXJyb3JGZXRjaGVyIH0gZnJvbSAnLi9jaGFuZ2VzZXQtZXJyb3ItZmV0Y2hlcic7XG5pbXBvcnQgdHlwZSB7IFN0YWNrRGlhZ25vc2lzLCBTdGFja1Byb2JsZW1Tb3VyY2UsIFRyYWNlZFJlc291cmNlRXJyb3IgfSBmcm9tICcuLi8uLi9hY3Rpb25zL2RpYWdub3NlJztcbmltcG9ydCB0eXBlIHsgSUNsb3VkRm9ybWF0aW9uQ2xpZW50LCBTREsgfSBmcm9tICcuLi9hd3MtYXV0aC9zZGsnO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudFJlc291cmNlcyB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlL2lvLWhlbHBlcic7XG5pbXBvcnQgdHlwZSB7IElTb3VyY2VUcmFjZXIgfSBmcm9tICcuLi9zb3VyY2UtdHJhY2luZy9wcml2YXRlL3NvdXJjZS10cmFjaW5nJztcbmltcG9ydCB7IFBvbGxSYW5nZSwgU3RhY2tFdmVudFBvbGxlciB9IGZyb20gJy4uL3N0YWNrLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlRXJyb3IsIFJlc291cmNlRXJyb3JzIH0gZnJvbSAnLi4vc3RhY2stZXZlbnRzL3Jlc291cmNlLWVycm9ycyc7XG5pbXBvcnQgeyBTdGFja1N0YXR1cyB9IGZyb20gJy4uL3N0YWNrLWV2ZW50cy9zdGFjay1zdGF0dXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRm9ybWF0aW9uU3RhY2tEaWFnbm9zZXJQcm9wcyB7XG4gIHJlYWRvbmx5IHNkazogU0RLO1xuICByZWFkb25seSBlbnZSZXNvdXJjZXM/OiBFbnZpcm9ubWVudFJlc291cmNlcztcbiAgcmVhZG9ubHkgc291cmNlVHJhY2VyOiBJU291cmNlVHJhY2VyO1xuICByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHJlYWRvbmx5IHRvcExldmVsU3RhY2tIaWVyYXJjaGljYWxJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERpYWdub3NlIGEgc3RhY2sncyBmYWlsZWQgc3RhdGVcbiAqXG4gKiAtIEZpcnN0LCBkZXRlcm1pbmUgdGhlIHN0YWNrJ3Mgc3RhdGUuXG4gKiAtIElmIGl0IGlzIGluIGEgZmFpbGVkIHN0YXRlLCB3ZSBzdGFydGVkIGEgZGVwbG95bWVudCB0aGF0IGZhaWxlZC4gRGVzY3JpYmUgdGhlIHN0YWNrXG4gKiAgIGV2ZW50cywgYW5kIHRyeSB0byBkZXRlcm1pbmUgdGhlIHJvb3QgY2F1c2UgZnJvbSB0aGF0LlxuICogLSBJZiBpdCBpcyBpbiBhIG5vcm1hbCBzdGF0ZSwgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZmFpbGVkIGNoYW5nZSBzZXRzLiBFaXRoZXJcbiAqICAgZ2V0IHRoZSBmYWlsdXJlIG1lc3NhZ2UgZnJvbSB0aGUgY2hhbmdlIHNldCwgb3IgZ2V0IHRoZSBmYWlsdXJlIGV2ZW50cyBmcm9tXG4gKiAgIHRoZSBjaGFuZ2Ugc2V0IChlYXJseSB2YWxpZGF0aW9uKS5cbiAqXG4gKiBUaGlzIGNsYXNzIHdvcmtzIGF0IHRoZSBDbG91ZEZvcm1hdGlvbiBsZXZlbCwgYW5kIGRvZXMgbm90IGRlYWwgd2l0aCB0cmFjaW5nXG4gKiBDbG91ZEZvcm1hdGlvbiBlcnJvcnMgdG8gY29uc3RydWN0IGNvZGUgc291cmNlcyB5ZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEZvcm1hdGlvblN0YWNrRGlhZ25vc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudDtcbiAgcHJpdmF0ZSBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IENsb3VkRm9ybWF0aW9uU3RhY2tEaWFnbm9zZXJQcm9wcykge1xuICAgIHRoaXMuY2ZuID0gdGhpcy5wcm9wcy5zZGsuY2xvdWRGb3JtYXRpb24oKTtcbiAgICB0aGlzLnBhcmVudFN0YWNrTG9naWNhbElkcyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIERpYWdub3NlIGEgc3RhY2sncyByb290IGNhdXNlIGdpdmVuIG5vIHByZS1leGlzdGluZyBzdGF0ZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpYWdub3NlRnJvbUZyZXNoKHN0YWNrTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2ZuLmRlc2NyaWJlU3RhY2tzKHsgU3RhY2tOYW1lOiBzdGFja05hbWUgfSk7XG4gICAgICBjb25zdCBzdGFjayA9IHJlc3BvbnNlLlN0YWNrcz8uWzBdO1xuICAgICAgaWYgKCFzdGFjaykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICdlcnJvci1kaWFnbm9zaW5nJyxcbiAgICAgICAgICBtZXNzYWdlOiBgU3RhY2sgd2l0aCBuYW1lICR7c3RhY2tOYW1lfSBub3QgZm91bmRgLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGF0dXMgPSBTdGFja1N0YXR1cy5mcm9tU3RhY2tEZXNjcmlwdGlvbihzdGFjayk7XG4gICAgICBpZiAoc3RhdHVzLmlzSW5Qcm9ncmVzcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICdlcnJvci1kaWFnbm9zaW5nJyxcbiAgICAgICAgICBtZXNzYWdlOiBgU3RhY2sgd2l0aCBuYW1lICR7c3RhY2tOYW1lfSBpcyBjdXJyZW50bHkgYmVpbmcgdXBkYXRlZCAoJHtzdGF0dXMubmFtZX0pLiBUcnkgYWdhaW4gd2hlbiBpdCdzIGZpbmlzaGVkLmAsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0dXMuaXNGYWlsdXJlKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9kaWFnbm9zZVZpYVN0YWNrRXZlbnRzKHN0YWNrKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2RpYWdub3NlQ2hhbmdlU2V0RmFpbHVyZUZyb21TdGFja05hbWUoc3RhY2spO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ2Vycm9yLWRpYWdub3NpbmcnLCBtZXNzYWdlOiBlLm1lc3NhZ2UgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGlhZ25vc2UgcG90ZW50aWFsIHByb2JsZW1zIHdpdGggdGhlIGNoYW5nZSBzZXRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaWFnbm9zZUNoYW5nZVNldChjaGFuZ2VTZXQ6IENoYW5nZVNldFN1bW1hcnkpOiBQcm9taXNlPFN0YWNrRGlhZ25vc2lzPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9kaWFnbm9zZUNoYW5nZVNldEZhaWx1cmUoY2hhbmdlU2V0KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdlcnJvci1kaWFnbm9zaW5nJywgbWVzc2FnZTogZS5tZXNzYWdlIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERpYWdub3NlIHBvdGVudGlhbCBwcm9ibGVtcyB3aXRoIHRoZSBjaGFuZ2Ugc2V0XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlhZ25vc2VGcm9tRXJyb3JDb2xsZWN0aW9uKGVycm9yczogUmVzb3VyY2VFcnJvcnMsIHN0YWNrOiBTdGFjayk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICBpZiAoZXJyb3JzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vLXByb2JsZW0nIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICAgIGRldGVjdGVkQnk6IHtcbiAgICAgICAgdHlwZTogJ2RlcGxveW1lbnQnLFxuICAgICAgICBzdGFja1N0YXR1czogc3RhY2suU3RhY2tTdGF0dXMgPz8gJycsXG4gICAgICAgIHN0YXR1c1JlYXNvbjogc3RhY2suU3RhY2tTdGF0dXNSZWFzb24gPz8gJycsXG4gICAgICB9LFxuICAgICAgcHJvYmxlbXM6IGF3YWl0IHRoaXMuYWRkRXJyb3JUcmFjZXMoZXJyb3JzLmFsbCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaWFnbm9zZSBhIGRlcGxveW1lbnQgZmFpbHVyZSB2aWEgc3RhY2sgZXZlbnRzXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIHNhbWUgbG9naWMgdGhhdCB0aGUgZGVwbG95bWVudCBtb25pdG9yIHVzZXMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9kaWFnbm9zZVZpYVN0YWNrRXZlbnRzKHN0YWNrOiBTdGFjayk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICBjb25zdCBwb2xsZXIgPSBuZXcgU3RhY2tFdmVudFBvbGxlcih0aGlzLmNmbiwge1xuICAgICAgc3RhY2tBcm46IHN0YWNrLlN0YWNrSWQhLFxuICAgICAgaW5pdGlhbFBvbGxSYW5nZTogUG9sbFJhbmdlLm1vc3RSZWNlbnRPcGVyYXRpb24oKSxcbiAgICB9KTtcblxuICAgIC8vIFdlIGRvbid0IG5lZWQgdGhlIHJlc3VsdGluZyBldmVudHMgb2YgcG9sbGluZy4gUG9sbGluZyB3aWxsIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBlcnJvciBjb2xsZWN0aW9uLFxuICAgIC8vIHdoaWNoIGlzIHRoZSB0aGluZyB3ZSBjYXJlIGFib3V0LlxuICAgIGF3YWl0IHBvbGxlci5wb2xsKCk7XG5cbiAgICByZXR1cm4gdGhpcy5kaWFnbm9zZUZyb21FcnJvckNvbGxlY3Rpb24ocG9sbGVyLmVycm9ycywgc3RhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZGlhZ25vc2VDaGFuZ2VTZXRGYWlsdXJlRnJvbVN0YWNrTmFtZShzdGFjazogU3RhY2spOiBQcm9taXNlPFN0YWNrRGlhZ25vc2lzPiB7XG4gICAgY29uc3QgY3MgPSAoYXdhaXQgdGhpcy5jZm4ubGlzdENoYW5nZVNldHMoe1xuICAgICAgU3RhY2tOYW1lOiBzdGFjay5TdGFja0lkISxcbiAgICB9KSkuU3VtbWFyaWVzID8/IFtdO1xuXG4gICAgY29uc3QgcGVuZGluZyA9IGNzLmZpbHRlcih4ID0+IHguU3RhdHVzID09PSBDaGFuZ2VTZXRTdGF0dXMuQ1JFQVRFX0lOX1BST0dSRVNTIHx8IHguU3RhdHVzID09PSBDaGFuZ2VTZXRTdGF0dXMuQ1JFQVRFX1BFTkRJTkcpO1xuICAgIGlmIChwZW5kaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdlcnJvci1kaWFnbm9zaW5nJyxcbiAgICAgICAgbWVzc2FnZTogYFN0YWNrIHdpdGggbmFtZSAke3N0YWNrLlN0YWNrTmFtZX0gaGFzIGNoYW5nZSBzZXRzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkICgke3BlbmRpbmdbMF0uQ2hhbmdlU2V0TmFtZX0pLiBUcnkgYWdhaW4gd2hlbiBpdCdzIGZpbmlzaGVkLmAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGZhaWxlZCA9IGNzLmZpbHRlcih4ID0+IHguU3RhdHVzID09PSBDaGFuZ2VTZXRTdGF0dXMuRkFJTEVEKTtcbiAgICBpZiAoZmFpbGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vLXByb2JsZW0nIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2RpYWdub3NlQ2hhbmdlU2V0RmFpbHVyZShmYWlsZWRbMF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBkaWFnbm9zZSB0aGUgcmVhc29uIHRoYXQgY2F1c2VkIGEgY2hhbmdlc2V0IHRvIGZhaWwgdG8gY3JlYXRlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBkaWZmZXJlbnQgcmVhc29ucyB0aGlzIGNhbiBoYXBwZW4sIGFuZCB3ZSBnbyB0aHJvdWdoIGVhY2ggb2YgdGhlbSBpbiBvcmRlci5cbiAgICpcbiAgICogVXN1YWxseSB0aGlzIHN0YXJ0cyBmcm9tIHRyeWluZyB0byBkZXRlY3QgYW4gZXJyb3IgbWVzc2FnZSBwYXR0ZXJuIGluIHRoZSBjaGFuZ2Ugc2V0IHN0YXR1cyByZWFzb24sXG4gICAqIGFuZCB0aGVuIHBvdGVudGlhbGx5IGdvaW5nIHRvIGZldGNoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdXNpbmcgYWRkaXRpb25hbCBBUEkgY2FsbHMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9kaWFnbm9zZUNoYW5nZVNldEZhaWx1cmUoY2hhbmdlU2V0OiBDaGFuZ2VTZXRTdW1tYXJ5KTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIGlmIChjaGFuZ2VTZXQuU3RhdHVzICE9PSBDaGFuZ2VTZXRTdGF0dXMuRkFJTEVEKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnbm8tcHJvYmxlbScgfTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlU2V0SGFzTm9DaGFuZ2VzKGNoYW5nZVNldCkpIHtcbiAgICAgIC8vIFRoaXMgd2lsbCBsZWFkIHRvIGEgY2hhbmdlIHNldCB0aGF0IGlzIEZBSUxFRCBidXQgaXQncyBub3QgYWN0dWFsbHkgYSBwcm9ibGVtXG4gICAgICByZXR1cm4geyB0eXBlOiAnbm8tcHJvYmxlbScgfTtcbiAgICB9XG5cbiAgICAvLyBXZSByZXBvcnQgZWFybHkgdmFsaWRhdGlvbiBlcnJvcnMgZGlmZmVyZW50bHkgdGhhbiBnZW5lcmljIGNoYW5nZXNldCBlcnJvcnMuIE1vc3RseVxuICAgIC8vIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuXG4gICAgY29uc3QgaXNFYXJseVZhbGlkYXRpb25FcnJvciA9IGNoYW5nZVNldC5TdGF0dXNSZWFzb24/LmluY2x1ZGVzKCdBV1M6OkVhcmx5VmFsaWRhdGlvbicpO1xuICAgIGlmIChpc0Vhcmx5VmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVwb3J0Q2hhbmdlU2V0RmFpbHVyZUZyb21FdmVudHMoY2hhbmdlU2V0LCB7XG4gICAgICAgIHR5cGU6ICdlYXJseS12YWxpZGF0aW9uJyxcbiAgICAgICAgY2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0LkNoYW5nZVNldE5hbWUgPz8gJycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBXZSB3aWxsIHJlY3Vyc2UgaW50byBuZXN0ZWQgY2hhbmdlIHNldHMgaWYgbmVjZXNzYXJ5LlxuICAgIGlmIChjaGFuZ2VTZXQuU3RhdHVzUmVhc29uPy5pbmNsdWRlcygnTmVzdGVkIGNoYW5nZSBzZXQnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RpYWdub3NlTmVzdGVkQ2hhbmdlU2V0RmFpbHVyZShjaGFuZ2VTZXQpO1xuICAgIH1cblxuICAgIC8vIFdlIHNwZWNpYWwtY2FzZSBmYWlsZWQgYXV0b21hdGljIGltcG9ydHMuIFdlIGtub3cgYWxsIHRoZSBtZWF0IG9mIHRoZSBlcnJvciBkZXRhaWxzIGFyZSBpbiB0aGVcbiAgICAvLyBzdGF0dXMgcmVhc29uLCBhbmQgbm93aGVyZSBlbHNlLiBXZSBwYXJzZSBpdCBzcGVjaWZpY2FsbHkuXG4gICAgY29uc3QgZmFpbGVkQXV0b0Vycm9ycyA9IHRoaXMuX3RyeURldGVjdEZhaWxlZEF1dG9JbXBvcnQoY2hhbmdlU2V0KTtcbiAgICBpZiAoZmFpbGVkQXV0b0Vycm9ycykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgICAgICBkZXRlY3RlZEJ5OiB7XG4gICAgICAgICAgdHlwZTogJ2NoYW5nZS1zZXQnLFxuICAgICAgICAgIGNoYW5nZVNldFN0YXR1czogY2hhbmdlU2V0LlN0YXR1cyA/PyAnJyxcbiAgICAgICAgICBjaGFuZ2VTZXROYW1lOiBjaGFuZ2VTZXQuQ2hhbmdlU2V0TmFtZSA/PyAnJyxcbiAgICAgICAgICBzdGF0dXNSZWFzb246IGNoYW5nZVNldC5TdGF0dXNSZWFzb24gPz8gJycsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2JsZW1zOiBhd2FpdCB0aGlzLmFkZEVycm9yVHJhY2VzKGZhaWxlZEF1dG9FcnJvcnMpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGEgZ2VuZXJpYyBjaGFuZ2Ugc2V0IGNyZWF0aW9uIGVycm9yIHdoZXJlIGBEZXNjcmliZUV2ZW50c2BcbiAgICAvLyBtaWdodCBvciBtaWdodCBub3QgZ2l2ZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICAgIHJldHVybiB0aGlzLl9yZXBvcnRDaGFuZ2VTZXRGYWlsdXJlRnJvbUV2ZW50cyhjaGFuZ2VTZXQsIHtcbiAgICAgIHR5cGU6ICdjaGFuZ2Utc2V0JyxcbiAgICAgIGNoYW5nZVNldFN0YXR1czogY2hhbmdlU2V0LlN0YXR1cyA/PyAnJyxcbiAgICAgIGNoYW5nZVNldE5hbWU6IGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lID8/ICcnLFxuICAgICAgc3RhdHVzUmVhc29uOiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uID8/ICcnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byByZWFkIHRoZSByZXNvdXJjZS1zcGVjaWZpYyByZWFzb25zIGZvciBhIGNoYW5nZXNldCBmYWlsdXJlIGZyb20gYERlc2NyaWJlRXZlbnRzYC5cbiAgICpcbiAgICogSWYgd2UgY291bGRuJ3QgcmVhZCB0aGUgZXZlbnRzIG9yIHRoZXJlIGFyZSAwIGVycm9ycyByZXR1cm5lZCBieSB0aGF0IEFQSSwgcmV0dXJuIGEgZ2VuZXJpY1xuICAgKiBlcnJvci5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX3JlcG9ydENoYW5nZVNldEZhaWx1cmVGcm9tRXZlbnRzKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSwgZGV0ZWN0ZWRCeTogU3RhY2tQcm9ibGVtU291cmNlKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIGNvbnN0IGV2ID0gYXdhaXQgbmV3IENoYW5nZVNldFJlc291cmNlRXJyb3JGZXRjaGVyKHRoaXMucHJvcHMuc2RrLCB0aGlzLnByb3BzLmVudlJlc291cmNlcylcbiAgICAgIC5mZXRjaERldGFpbHNTdHJ1Y3R1cmVkKGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lISwgY2hhbmdlU2V0LlN0YWNrTmFtZSEpO1xuXG4gICAgLy8gSWYgd2UgaGF2ZSBlcnJvcnMgdG8gcmV0dXJuLCByZXR1cm4gdGhlbVxuICAgIGlmIChldi50eXBlID09PSAncmVzb3VyY2UtZXJyb3JzJyAmJiBldi5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgICAgICBkZXRlY3RlZEJ5LFxuICAgICAgICBwcm9ibGVtczogYXdhaXQgdGhpcy5hZGRFcnJvclRyYWNlcyhldi5lcnJvcnMubWFwKChlKSA9PiByZXNvdXJjZUVycm9yRnJvbUVhcmx5VmFsaWRhdGlvbkVycm9yKGNoYW5nZVNldC5TdGFja0lkID8/ICcnLCB0aGlzLnBhcmVudFN0YWNrTG9naWNhbElkcywgZSkpKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCB3ZSB3aWxsIHJldHVybiBhIGdlbmVyaWMgY2hhbmdlc2V0IGVycm9yIG1lc3NhZ2UuIElmIHRoZXJlIHdhcyBhIHByb2JsZW1cbiAgICAvLyBjaGVja2luZywgd2UgbG9nIHRoYXQgZm9yIGdvb2QgbWVhc3VyZSBidXQgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZS5cbiAgICBpZiAoZXYudHlwZSA9PT0gJ2NvdWxkLW5vdC1jaGVjaycpIHtcbiAgICAgIGF3YWl0IHRoaXMucHJvcHMuaW9IZWxwZXIuZGVmYXVsdHMud2Fybihldi5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbm9uU3BlY2lmaWNDaGFuZ2VTZXRFcnJvcihjaGFuZ2VTZXQsIGRldGVjdGVkQnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRFcnJvclRyYWNlcyhlcnJzOiByZWFkb25seSBSZXNvdXJjZUVycm9yW10pOiBQcm9taXNlPFRyYWNlZFJlc291cmNlRXJyb3JbXT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICAgIHJldHVybiBQcm9taXNlLmFsbChlcnJzLm1hcCgoZSkgPT4gdGhpcy5hZGRFcnJvclRyYWNlKGUpKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZEVycm9yVHJhY2UoZXJyOiBSZXNvdXJjZUVycm9yKTogUHJvbWlzZTxUcmFjZWRSZXNvdXJjZUVycm9yPiB7XG4gICAgbGV0IHNvdXJjZVRyYWNlO1xuICAgIGlmIChlcnIubG9naWNhbElkKSB7XG4gICAgICBzb3VyY2VUcmFjZSA9IGF3YWl0IHRoaXMucHJvcHMuc291cmNlVHJhY2VyLnRyYWNlUmVzb3VyY2UoZXJyLnN0YWNrQXJuLCBlcnIucGFyZW50U3RhY2tMb2dpY2FsSWRzLCBlcnIubG9naWNhbElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlVHJhY2UgPSBhd2FpdCB0aGlzLnByb3BzLnNvdXJjZVRyYWNlci50cmFjZVN0YWNrKGVyci5zdGFja0FybiwgZXJyLnBhcmVudFN0YWNrTG9naWNhbElkcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgLi4uZXJyLCBzb3VyY2VUcmFjZSwgdG9wTGV2ZWxTdGFja0hpZXJhcmNoaWNhbElkOiB0aGlzLnByb3BzLnRvcExldmVsU3RhY2tIaWVyYXJjaGljYWxJZCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgZ2VuZXJpYyBzdGFjayBlcnJvciBmcm9tIHRoZSBnaXZlbiBjaGFuZ2Ugc2V0IGluZm9ybWF0aW9uXG4gICAqXG4gICAqIFdlIGNhbid0IHBvaW50IHRvIGEgc3BlY2lmaWMgcmVzb3VyY2UuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9ub25TcGVjaWZpY0NoYW5nZVNldEVycm9yKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSwgZGV0ZWN0ZWRCeTogU3RhY2tQcm9ibGVtU291cmNlKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAncHJvYmxlbScsXG4gICAgICBkZXRlY3RlZEJ5LFxuICAgICAgcHJvYmxlbXM6IFtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGRFcnJvclRyYWNlKHtcbiAgICAgICAgICAvLyBJdCdzIGFib3V0IGEgc3RhY2tcbiAgICAgICAgICBsb2dpY2FsSWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBtZXNzYWdlOiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uID8/ICcnLFxuICAgICAgICAgIHBhcmVudFN0YWNrTG9naWNhbElkczogdGhpcy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMsXG4gICAgICAgICAgc3RhY2tBcm46IGNoYW5nZVNldC5TdGFja0lkID8/ICcnLFxuICAgICAgICAgIHBoeXNpY2FsSWQ6IGNoYW5nZVNldC5TdGFja0lkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTG9vayBmb3IgbmVzdGVkIGNoYW5nZSBzZXRzIHRoYXQgaGF2ZSBmYWlsZWQsIGFuZCBkaWFnbm9zZSB0aG9zZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX2RpYWdub3NlTmVzdGVkQ2hhbmdlU2V0RmFpbHVyZShjaGFuZ2VTZXQ6IENoYW5nZVNldFN1bW1hcnkpOiBQcm9taXNlPFN0YWNrRGlhZ25vc2lzPiB7XG4gICAgY29uc3QgbmVzdGVkID0gYXdhaXQgdGhpcy5fZmluZEZhaWxlZE5lc3RlZFN0YWNrKGNoYW5nZVNldCk7XG4gICAgaWYgKCFuZXN0ZWQpIHtcbiAgICAgIC8vIFRoYXQncyB3ZWlyZC4gTGV0J3MgcmV0dXJuIHRoZSBjaGFuZ2Ugc2V0J3Mgc3RhdHVzIHJlYXNvbiBhcyBhIG5vbi1zcGVjaWZpYyBlcnJvclxuICAgICAgcmV0dXJuIHRoaXMuX25vblNwZWNpZmljQ2hhbmdlU2V0RXJyb3IoY2hhbmdlU2V0LCB7XG4gICAgICAgIHR5cGU6ICdjaGFuZ2Utc2V0JyxcbiAgICAgICAgY2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0LkNoYW5nZVNldE5hbWUgPz8gJycsXG4gICAgICAgIGNoYW5nZVNldFN0YXR1czogY2hhbmdlU2V0LlN0YXR1cyA/PyAnJyxcbiAgICAgICAgc3RhdHVzUmVhc29uOiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uID8/ICcnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmVzdGVkQ3MgPSBhd2FpdCB0aGlzLmNmbi5kZXNjcmliZUNoYW5nZVNldCh7XG4gICAgICBDaGFuZ2VTZXROYW1lOiBuZXN0ZWQuY2hhbmdlU2V0QXJuLFxuICAgICAgU3RhY2tOYW1lOiBuZXN0ZWQuc3RhY2tBcm4sXG4gICAgfSk7XG5cbiAgICBjb25zdCBuZXN0ZWREaWFnID0gbmV3IENsb3VkRm9ybWF0aW9uU3RhY2tEaWFnbm9zZXIodGhpcy5wcm9wcyk7XG4gICAgbmVzdGVkRGlhZy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMgPSBbLi4udGhpcy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMsIG5lc3RlZC5sb2dpY2FsSWRdO1xuICAgIHJldHVybiBuZXN0ZWREaWFnLl9kaWFnbm9zZUNoYW5nZVNldEZhaWx1cmUobmVzdGVkQ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZmluZEZhaWxlZE5lc3RlZFN0YWNrKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFByb21pc2U8e1xuICAgIHN0YWNrQXJuOiBzdHJpbmc7XG4gICAgY2hhbmdlU2V0QXJuOiBzdHJpbmc7XG4gICAgbG9naWNhbElkOiBzdHJpbmc7XG4gIH0gfCB1bmRlZmluZWQ+IHtcbiAgICAvLyBUaGUgc3RhdHVzIHJlYXNvbiBvbmx5IGluY2x1ZGVzIHRoZSBjaGFuZ2Ugc2V0IElELCBidXQgd2UgYWxzbyBuZWVkIHRoZSBzdGFjayBuYW1lLiBUaGUgd2F5IHRvIGdldCB0aGlzIGlzXG4gICAgLy8gZGVzY3JpYmUgdGhlIGN1cnJlbnQgY2hhbmdlIHNldCwgdGhlbiBmcm9tIHRoZSBDaGFuZ2VzIGZpbmQgdGhlIHN0YWNrIHdob3NlIENoYW5nZVNldElkIGlzIG1lbnRpb25lZCBpbiB0aGVcbiAgICAvLyBzdGF0dXMgcmVhc29uLCB0aGVuIGxvb2sgdXAgdGhhdCBjaGFuZ2Ugc2V0IGFuZCByZWN1cnNlIGludG8gYSByZWd1bGFyIGNoYW5nZSBzZXQgZGlhZ25vc2lzLlxuICAgIGxldCBuZXh0VG9rZW4gPSB1bmRlZmluZWQ7XG4gICAgZG8ge1xuICAgICAgLy8gQ2hhbmdlcyBpbiB0aGlzIHJlc3BvbnNlIG1pZ2h0IGJlIHBhZ2luYXRlZFxuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuY2ZuLmRlc2NyaWJlQ2hhbmdlU2V0KHtcbiAgICAgICAgU3RhY2tOYW1lOiBjaGFuZ2VTZXQuU3RhY2tJZCxcbiAgICAgICAgQ2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0LkNoYW5nZVNldElkLFxuICAgICAgICAuLi5uZXh0VG9rZW4gPyB7IE5leHRUb2tlbjogbmV4dFRva2VuIH0gOiB7fSxcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiByZXNwLkNoYW5nZXMgPz8gW10pIHtcbiAgICAgICAgaWYgKGNoYW5nZS5UeXBlID09PSBDaGFuZ2VUeXBlLlJlc291cmNlICYmIGNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uUmVzb3VyY2VUeXBlID09PSAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snICYmIGNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uQ2hhbmdlU2V0SWQgJiYgY2hhbmdlU2V0LlN0YXR1c1JlYXNvbj8uaW5jbHVkZXMoY2hhbmdlLlJlc291cmNlQ2hhbmdlPy5DaGFuZ2VTZXRJZCkpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hhbmdlU2V0QXJuOiBjaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuQ2hhbmdlU2V0SWQsXG4gICAgICAgICAgICBzdGFja0FybjogY2hhbmdlLlJlc291cmNlQ2hhbmdlLlBoeXNpY2FsUmVzb3VyY2VJZCA/PyAnJyxcbiAgICAgICAgICAgIGxvZ2ljYWxJZDogY2hhbmdlLlJlc291cmNlQ2hhbmdlLkxvZ2ljYWxSZXNvdXJjZUlkID8/ICcnLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV4dFRva2VuID0gcmVzcC5OZXh0VG9rZW47XG4gICAgfSB3aGlsZSAobmV4dFRva2VuKTtcblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIHBhcnNlIGZhaWxlZCBhdXRvLWltcG9ydHMgb3V0IGZyb20gYSBjaGFuZ2Ugc2V0IHN0YXR1c1xuICAgKlxuICAgKiBUaGUgcGF0dGVybiBsb29rcyBsaWtlIHRoaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiBDbG91ZEZvcm1hdGlvbiBpcyBhdHRlbXB0aW5nIHRvIGltcG9ydCBzb21lIHJlc291cmNlcyBiZWNhdXNlIHRoZXkgYWxyZWFkeSBleGlzdCBpbiB5b3VyIGFjY291bnQuIFRoZSByZXNvdXJjZXMgbXVzdCBoYXZlIHRoZSBEZWxldGlvblBvbGljeSBhdHRyaWJ1dGUgc2V0IHRvICdSZXRhaW4nIG9yICdSZXRhaW5FeGNlcHRPbkNyZWF0ZScgaW4gdGhlIHRlbXBsYXRlIGZvciBzdWNjZXNzZnVsIGltcG9ydC4gVGhlIGFmZmVjdGVkIHJlc291cmNlcyBhcmUgU29tZUJ1Y2tldEQ1QjcwNzA0ICh7QnVja2V0TmFtZT16b21hYXJlZW5idWNrZXR9KVxuICAgKiBgYGBcbiAgICpcbiAgICogRm9sbG93ZWQgYnlcbiAgICpcbiAgICogYGBgXG4gICAqIExvZ2ljYWxJRCAoe1Byb3A9VmFsdWUsUHJvcD1WYWx1ZX0pLCBMb2dpY2FsSUQgKHtQcm9wPVZhbHVlfSksIC4uLlxuICAgKiBgYGBcbiAgICovXG4gIHByaXZhdGUgX3RyeURldGVjdEZhaWxlZEF1dG9JbXBvcnQoY2hhbmdlU2V0OiBDaGFuZ2VTZXRTdW1tYXJ5KTogUmVzb3VyY2VFcnJvcltdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtZXNzYWdlID0gY2hhbmdlU2V0LlN0YXR1c1JlYXNvbjtcbiAgICAvLyBPbmx5IGVuaGFuY2UgdGhlIHNwZWNpZmljIENGTiBlcnJvciBhYm91dCBpbXBvcnRpbmcgZXhpc3RpbmcgcmVzb3VyY2VzXG4gICAgaWYgKCFtZXNzYWdlPy5pbmNsdWRlcygnQ2xvdWRGb3JtYXRpb24gaXMgYXR0ZW1wdGluZyB0byBpbXBvcnQgc29tZSByZXNvdXJjZXMgYmVjYXVzZSB0aGV5IGFscmVhZHkgZXhpc3QgaW4geW91ciBhY2NvdW50JykpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgbWFya2VyID0gJ1RoZSBhZmZlY3RlZCByZXNvdXJjZXMgYXJlICc7XG4gICAgY29uc3QgbWFya2VySW5kZXggPSBtZXNzYWdlLmluZGV4T2YobWFya2VyKTtcbiAgICBpZiAobWFya2VySW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHJldDogUmVzb3VyY2VFcnJvcltdID0gW107XG4gICAgbGV0IHJlbWFpbmluZyA9IG1lc3NhZ2Uuc2xpY2UobWFya2VySW5kZXggKyBtYXJrZXIubGVuZ3RoKTtcbiAgICB3aGlsZSAocmVtYWluaW5nKSB7XG4gICAgICBjb25zdCBlbmRJeCA9IHJlbWFpbmluZy5pbmRleE9mKCcpLCAnKTtcbiAgICAgIGNvbnN0IHRoaXNSZXNvdXJjZSA9IGVuZEl4ID4gLTEgPyByZW1haW5pbmcuc2xpY2UoMCwgZW5kSXggKyAxKSA6IHJlbWFpbmluZztcbiAgICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zbGljZSh0aGlzUmVzb3VyY2UubGVuZ3RoICsgMik7XG5cbiAgICAgIC8vIHRoaXNSZXNvdXJjZSA9IFwiTG9naWNhbElkICh7UHJvcD1WYWx1ZSwgUHJvcD1WYWx1ZX0pXCJcbiAgICAgIGNvbnN0IG9wZW5QYXJlbiA9IHRoaXNSZXNvdXJjZS5pbmRleE9mKCcoJyk7XG4gICAgICBjb25zdCBsb2dpY2FsSWQgPSBvcGVuUGFyZW4gPiAtMSA/IHRoaXNSZXNvdXJjZS5zbGljZSgwLCBvcGVuUGFyZW4pLnRyaW0oKSA6IHVuZGVmaW5lZDtcblxuICAgICAgcmV0LnB1c2goe1xuICAgICAgICBtZXNzYWdlOiBgQXV0b21hdGljIGltcG9ydCBvZiBleGlzdGluZyByZXNvdXJjZSAke3RoaXNSZXNvdXJjZX0gbmVlZHMgYSBEZWxldGlvblBvbGljeSBvZiBcXCdSZXRhaW5cXCcgb3IgXFwnUmV0YWluRXhjZXB0T25DcmVhdGVcXCcuIFNldCB0aGUgcmVtb3ZhbCBwb2xpY3kgdG8gXFwnUmVtb3ZhbFBvbGljeS5SRVRBSU5cXCcgb3IgXFwnUmVtb3ZhbFBvbGljeS5SRVRBSU5fT05fVVBEQVRFX09SX0RFTEVURVxcJyAoU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvdjIvZ3VpZGUvcmVzb3VyY2VzLmh0bWwjcmVzb3VyY2VzLXJlbW92YWwpYCxcbiAgICAgICAgcGFyZW50U3RhY2tMb2dpY2FsSWRzOiB0aGlzLnBhcmVudFN0YWNrTG9naWNhbElkcyxcbiAgICAgICAgc3RhY2tBcm46IGNoYW5nZVNldC5TdGFja0lkID8/ICcnLFxuICAgICAgICBlcnJvckNvZGU6ICdBdXRvbWF0aWNJbXBvcnROZWVkc1JldGFpbicsXG4gICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGNoYW5nZSBzZXQgaGFzIG5vIGNoYW5nZXNcbiAqXG4gKiBUaGlzIG11c3QgYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBzdGF0dXMsIG5vdCB0aGUgJ0NoYW5nZXMnIGFycmF5IG9uIHRoZVxuICogb2JqZWN0OyB0aGUgbGF0dGVyIGNhbiBiZSBlbXB0eSBiZWNhdXNlIG5vIHJlc291cmNlcyB3ZXJlIGNoYW5nZWQsIGJ1dCBpZlxuICogdGhlcmUgYXJlIGNoYW5nZXMgdG8gT3V0cHV0cywgdGhlIGNoYW5nZSBzZXQgY2FuIHN0aWxsIGJlIGV4ZWN1dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlU2V0SGFzTm9DaGFuZ2VzKGRlc2NyaXB0aW9uOiBDaGFuZ2VTZXRTdW1tYXJ5KSB7XG4gIGNvbnN0IG5vQ2hhbmdlRXJyb3JQcmVmaXhlcyA9IFtcbiAgICAvLyBFcnJvciBtZXNzYWdlIGZvciBhIHJlZ3VsYXIgdGVtcGxhdGVcbiAgICBcIlRoZSBzdWJtaXR0ZWQgaW5mb3JtYXRpb24gZGlkbid0IGNvbnRhaW4gY2hhbmdlcy5cIixcbiAgICAvLyBFcnJvciBtZXNzYWdlIHdoZW4gYSBUcmFuc2Zvcm0gaXMgaW52b2x2ZWQgKHNlZSAjMTA2NTApXG4gICAgJ05vIHVwZGF0ZXMgYXJlIHRvIGJlIHBlcmZvcm1lZC4nLFxuICBdO1xuXG4gIHJldHVybiAoXG4gICAgZGVzY3JpcHRpb24uU3RhdHVzID09PSAnRkFJTEVEJyAmJiBub0NoYW5nZUVycm9yUHJlZml4ZXMuc29tZSgocCkgPT4gKGRlc2NyaXB0aW9uLlN0YXR1c1JlYXNvbiA/PyAnJykuc3RhcnRzV2l0aChwKSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVzb3VyY2VFcnJvckZyb21FYXJseVZhbGlkYXRpb25FcnJvcihzdGFja0lkOiBzdHJpbmcsIHBhcmVudFN0YWNrTG9naWNhbElkczogc3RyaW5nW10sIGV2OiBDaGFuZ2VTZXRSZXNvdXJjZUVycm9yKTogUmVzb3VyY2VFcnJvciB7XG4gIHJldHVybiB7XG4gICAgbG9naWNhbElkOiBldi5sb2dpY2FsSWQsXG4gICAgcGh5c2ljYWxJZDogZXYucGh5c2ljYWxJZCxcbiAgICByZXNvdXJjZVR5cGU6IGV2LnJlc291cmNlVHlwZSxcbiAgICBtZXNzYWdlOiBgJHtldi5tZXNzYWdlfSAoYXQgJHtldi5kb2N1bWVudFBhdGh9KWAsXG4gICAgZXJyb3JDb2RlOiBgJHtldi52YWxpZGF0aW9uTmFtZX1fJHtldi5ldmVudFR5cGV9YCxcbiAgICBwYXJlbnRTdGFja0xvZ2ljYWxJZHMsXG4gICAgc3RhY2tBcm46IHN0YWNrSWQsXG4gIH07XG59XG4iXX0=
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stZGlhZ25vc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhY2stZGlhZ25vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThkQSxzREFXQztBQXhlRCwwRUFBNkU7QUFFN0UsdUVBQTBFO0FBQzFFLHFFQUErRDtBQU0vRCxrREFBOEQ7QUFFOUQsK0RBQTJEO0FBdUQzRCxNQUFhLDRCQUE0QjtJQU1WO0lBTFosR0FBRyxDQUF3QjtJQUNwQyxxQkFBcUIsQ0FBVztJQUNoQyxnQ0FBZ0MsQ0FBNEI7SUFDNUQsZUFBZSxHQUFHLElBQUksQ0FBQztJQUUvQixZQUE2QixLQUF3QztRQUF4QyxVQUFLLEdBQUwsS0FBSyxDQUFtQztRQUNuRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQixDQUFDLFNBQWlCO1FBQzlDLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN6RSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE9BQU87b0JBQ0wsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsT0FBTyxFQUFFLG1CQUFtQixTQUFTLFlBQVk7aUJBQ2xELENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsMEJBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztv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QUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3JILENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxxQ0FBcUMsQ0FBQyxPQUFlLEVBQUUscUJBQStCLEVBQUUsRUFBMEI7SUFDekgsT0FBTztRQUNMLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUztRQUN2QixVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVU7UUFDekIsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZO1FBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLFFBQVEsRUFBRSxDQUFDLFlBQVksR0FBRztRQUNoRCxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUU7UUFDakQscUJBQXFCO1FBQ3JCLFFBQVEsRUFBRSxPQUFPO0tBQ2xCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDaGFuZ2VTZXRTdW1tYXJ5LCBTdGFjayB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBDaGFuZ2VTZXRTdGF0dXMsIENoYW5nZVR5cGUgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBDaGFuZ2VTZXRSZXNvdXJjZUVycm9yIH0gZnJvbSAnLi9jaGFuZ2VzZXQtZXJyb3ItZmV0Y2hlcic7XG5pbXBvcnQgeyBDaGFuZ2VTZXRSZXNvdXJjZUVycm9yRmV0Y2hlciB9IGZyb20gJy4vY2hhbmdlc2V0LWVycm9yLWZldGNoZXInO1xuaW1wb3J0IHsgaW52ZXN0aWdhdGVSZXNvdXJjZSB9IGZyb20gJy4vcmVzb3VyY2UtaW52ZXN0aWdhdGlvbic7XG5pbXBvcnQgdHlwZSB7IFN0YWNrRGlhZ25vc2lzLCBTdGFja1Byb2JsZW1Tb3VyY2UsIFRyYWNlZFJlc291cmNlRXJyb3IgfSBmcm9tICcuLi8uLi9hY3Rpb25zL2RpYWdub3NlJztcbmltcG9ydCB0eXBlIHsgSUNsb3VkRm9ybWF0aW9uQ2xpZW50LCBTREsgfSBmcm9tICcuLi9hd3MtYXV0aC9zZGsnO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudFJlc291cmNlcyB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlL2lvLWhlbHBlcic7XG5pbXBvcnQgdHlwZSB7IElTb3VyY2VUcmFjZXIgfSBmcm9tICcuLi9zb3VyY2UtdHJhY2luZy9wcml2YXRlL3NvdXJjZS10cmFjaW5nJztcbmltcG9ydCB7IFBvbGxSYW5nZSwgU3RhY2tFdmVudFBvbGxlciB9IGZyb20gJy4uL3N0YWNrLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlRXJyb3IsIFJlc291cmNlRXJyb3JzIH0gZnJvbSAnLi4vc3RhY2stZXZlbnRzL3Jlc291cmNlLWVycm9ycyc7XG5pbXBvcnQgeyBTdGFja1N0YXR1cyB9IGZyb20gJy4uL3N0YWNrLWV2ZW50cy9zdGFjay1zdGF0dXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRm9ybWF0aW9uU3RhY2tEaWFnbm9zZXJQcm9wcyB7XG4gIHJlYWRvbmx5IHNkazogU0RLO1xuICByZWFkb25seSBlbnZSZXNvdXJjZXM/OiBFbnZpcm9ubWVudFJlc291cmNlcztcbiAgcmVhZG9ubHkgc291cmNlVHJhY2VyOiBJU291cmNlVHJhY2VyO1xuICByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHJlYWRvbmx5IHRvcExldmVsU3RhY2tIaWVyYXJjaGljYWxJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5OiBhIGZ1bmN0aW9uIHRvIHJldHVybiBhbiBTREsgdGhhdCBjYW4gYmUgdXNlZCBmb3IgYWRkaXRpb25hbFxuICAgKiAocmVhZG9ubHkpIGV4cGxvcmF0b3J5IGNhbGxzLlxuICAgKlxuICAgKiBUeXBpY2FsbHksIHRoaXMgc2hvdWxkIGJlIGFuIFNESyB0aGF0IGlzIHByaW1lZCB3aXRoIHRoZSBcImxvb2t1cFwiIHJvbGUsIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIFwiZGVwbG95XCIgcm9sZSB3aWxsIG5vdCB0eXBpY2FsbHkgaGF2ZSBwZXJtaXNzaW9ucyB0b1xuICAgKiBkbyB2ZXJ5IG11Y2guXG4gICAqXG4gICAqIFJlZ2FyZGxlc3MsIGlmIGxvb2t1cHMgb2YgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmYWlsLCB0aGV5IGFyZSBlbWl0dGVkIGF0IGRlYnVnXG4gICAqIGxldmVsIGFuZCB0aGVpciBpbmZvcm1hdGlvbiBpcyBzaW1wbHkgbm90IGFkZGVkIHRvIHRoZSBvdXRwdXQuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsRXhwbG9yYXRpb25TZGtQcm92aWRlcj86IFNka1Byb3ZpZGVyO1xufVxuXG5leHBvcnQgdHlwZSBTZGtQcm92aWRlciA9ICgpID0+IFByb21pc2U8U0RLPjtcblxuLyoqXG4gKiBEaWFnbm9zZSBhIHN0YWNrJ3MgZmFpbGVkIHN0YXRlXG4gKlxuICogLSBGaXJzdCwgZGV0ZXJtaW5lIHRoZSBzdGFjaydzIHN0YXRlLlxuICogLSBJZiBpdCBpcyBpbiBhIGZhaWxlZCBzdGF0ZSwgd2Ugc3RhcnRlZCBhIGRlcGxveW1lbnQgdGhhdCBmYWlsZWQuIERlc2NyaWJlIHRoZSBzdGFja1xuICogICBldmVudHMsIGFuZCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSByb290IGNhdXNlIGZyb20gdGhhdC5cbiAqIC0gSWYgaXQgaXMgaW4gYSBub3JtYWwgc3RhdGUsIHNlZSBpZiB0aGVyZSBhcmUgYW55IGZhaWxlZCBjaGFuZ2Ugc2V0cy4gRWl0aGVyXG4gKiAgIGdldCB0aGUgZmFpbHVyZSBtZXNzYWdlIGZyb20gdGhlIGNoYW5nZSBzZXQsIG9yIGdldCB0aGUgZmFpbHVyZSBldmVudHMgZnJvbVxuICogICB0aGUgY2hhbmdlIHNldCAoZWFybHkgdmFsaWRhdGlvbikuXG4gKlxuICogVGhpcyBjbGFzcyB3b3JrcyBhdCB0aGUgQ2xvdWRGb3JtYXRpb24gbGV2ZWwsIGFuZCBkb2VzIG5vdCBkZWFsIHdpdGggdHJhY2luZ1xuICogQ2xvdWRGb3JtYXRpb24gZXJyb3JzIHRvIGNvbnN0cnVjdCBjb2RlIHNvdXJjZXMgeWV0LlxuICovXG4vKipcbiAqIE9wdGlvbnMgdGhhdCBhZmZlY3QgaG93IGEgZGlhZ25vc2lzIGlzIHBlcmZvcm1lZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaWFnbm9zZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciBDbG91ZEZvcm1hdGlvbiByb2xsYmFjayBpcyBlbmFibGVkIGZvciB0aGlzIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIFdoZW4gcm9sbGJhY2sgaXMgZW5hYmxlZCwgZmFpbGVkIHJlc291cmNlcyBhcmUgdG9ybiBkb3duIGJlZm9yZSB3ZSBjYW5cbiAgICogaW5zcGVjdCB0aGVpciBydW50aW1lIHN0YXRlIChlLmcuIEVDUyB0YXNrcyksIHNvIHRoZSBpbnZlc3RpZ2F0aW9uIGRlZ3JhZGVzXG4gICAqIHRvIGR1cmFibGUgc291cmNlcyBhbmQgbWF5IHN1Z2dlc3QgcmUtcnVubmluZyB3aXRoIGAtLW5vLXJvbGxiYWNrYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sbGJhY2tFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIENsb3VkRm9ybWF0aW9uU3RhY2tEaWFnbm9zZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGNmbjogSUNsb3VkRm9ybWF0aW9uQ2xpZW50O1xuICBwcml2YXRlIHBhcmVudFN0YWNrTG9naWNhbElkczogc3RyaW5nW107XG4gIHByaXZhdGUgX2FkZGl0aW9uYWxFeHBsb3JhdGlvblNka1Byb21pc2U/OiBQcm9taXNlPFNESyB8IHVuZGVmaW5lZD47XG4gIHByaXZhdGUgcm9sbGJhY2tFbmFibGVkID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDbG91ZEZvcm1hdGlvblN0YWNrRGlhZ25vc2VyUHJvcHMpIHtcbiAgICB0aGlzLmNmbiA9IHRoaXMucHJvcHMuc2RrLmNsb3VkRm9ybWF0aW9uKCk7XG4gICAgdGhpcy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaWFnbm9zZSBhIHN0YWNrJ3Mgcm9vdCBjYXVzZSBnaXZlbiBubyBwcmUtZXhpc3Rpbmcgc3RhdGVcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaWFnbm9zZUZyb21GcmVzaChzdGFja05hbWU6IHN0cmluZyk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNmbi5kZXNjcmliZVN0YWNrcyh7IFN0YWNrTmFtZTogc3RhY2tOYW1lIH0pO1xuICAgICAgY29uc3Qgc3RhY2sgPSByZXNwb25zZS5TdGFja3M/LlswXTtcbiAgICAgIGlmICghc3RhY2spIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAnZXJyb3ItZGlhZ25vc2luZycsXG4gICAgICAgICAgbWVzc2FnZTogYFN0YWNrIHdpdGggbmFtZSAke3N0YWNrTmFtZX0gbm90IGZvdW5kYCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhdHVzID0gU3RhY2tTdGF0dXMuZnJvbVN0YWNrRGVzY3JpcHRpb24oc3RhY2spO1xuICAgICAgaWYgKHN0YXR1cy5pc0luUHJvZ3Jlc3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAnZXJyb3ItZGlhZ25vc2luZycsXG4gICAgICAgICAgbWVzc2FnZTogYFN0YWNrIHdpdGggbmFtZSAke3N0YWNrTmFtZX0gaXMgY3VycmVudGx5IGJlaW5nIHVwZGF0ZWQgKCR7c3RhdHVzLm5hbWV9KS4gVHJ5IGFnYWluIHdoZW4gaXQncyBmaW5pc2hlZC5gLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdHVzLmlzRmFpbHVyZSB8fCBzdGF0dXMuaXNSb2xsYmFja1N1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2RpYWdub3NlVmlhU3RhY2tFdmVudHMoc3RhY2spO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fZGlhZ25vc2VDaGFuZ2VTZXRGYWlsdXJlRnJvbVN0YWNrTmFtZShzdGFjayk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnZXJyb3ItZGlhZ25vc2luZycsIG1lc3NhZ2U6IGUubWVzc2FnZSB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEaWFnbm9zZSBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCB0aGUgY2hhbmdlIHNldFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpYWdub3NlQ2hhbmdlU2V0KGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2RpYWdub3NlQ2hhbmdlU2V0RmFpbHVyZShjaGFuZ2VTZXQpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ2Vycm9yLWRpYWdub3NpbmcnLCBtZXNzYWdlOiBlLm1lc3NhZ2UgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGlhZ25vc2UgcG90ZW50aWFsIHByb2JsZW1zIHdpdGggdGhlIGNoYW5nZSBzZXRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaWFnbm9zZUZyb21FcnJvckNvbGxlY3Rpb24oXG4gICAgZXJyb3JzOiBSZXNvdXJjZUVycm9ycyxcbiAgICBzdGFjazogU3RhY2ssXG4gICAgYWxsb3dGYWxsYmFjayA9IHRydWUsXG4gICAgb3B0aW9uczogRGlhZ25vc2VPcHRpb25zID0ge30sXG4gICk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICB0aGlzLnJvbGxiYWNrRW5hYmxlZCA9IG9wdGlvbnMucm9sbGJhY2tFbmFibGVkID8/IHRydWU7XG4gICAgaWYgKGVycm9ycy5pc0VtcHR5KCkpIHtcbiAgICAgIGlmIChhbGxvd0ZhbGxiYWNrKSB7XG4gICAgICAgIC8vIFRoZSBtb25pdG9yIG1heSBub3QgaGF2ZSBzZWVuIGZhaWx1cmUgZXZlbnRzIHlldCAocmFjZSBjb25kaXRpb24pLlxuICAgICAgICAvLyBGYWxsIGJhY2sgdG8gcG9sbGluZyBzdGFjayBldmVudHMgZGlyZWN0bHkuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2RpYWdub3NlVmlhU3RhY2tFdmVudHMoc3RhY2spO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3BzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBGYWxsYmFjayBkaWFnbm9zaXMgZmFpbGVkOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vLXByb2JsZW0nIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICAgIGRldGVjdGVkQnk6IHtcbiAgICAgICAgdHlwZTogJ2RlcGxveW1lbnQnLFxuICAgICAgICBzdGFja1N0YXR1czogc3RhY2suU3RhY2tTdGF0dXMgPz8gJycsXG4gICAgICAgIHN0YXR1c1JlYXNvbjogc3RhY2suU3RhY2tTdGF0dXNSZWFzb24gPz8gJycsXG4gICAgICB9LFxuICAgICAgcHJvYmxlbXM6IGF3YWl0IHRoaXMuZW5oYW5jZUVycm9ycyhlcnJvcnMuYWxsKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpYWdub3NlIGEgZGVwbG95bWVudCBmYWlsdXJlIHZpYSBzdGFjayBldmVudHNcbiAgICpcbiAgICogVGhpcyBpcyB0aGUgc2FtZSBsb2dpYyB0aGF0IHRoZSBkZXBsb3ltZW50IG1vbml0b3IgdXNlcy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX2RpYWdub3NlVmlhU3RhY2tFdmVudHMoc3RhY2s6IFN0YWNrKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIGNvbnN0IHBvbGxlciA9IG5ldyBTdGFja0V2ZW50UG9sbGVyKHRoaXMuY2ZuLCB7XG4gICAgICBzdGFja0Fybjogc3RhY2suU3RhY2tJZCEsXG4gICAgICBpbml0aWFsUG9sbFJhbmdlOiBQb2xsUmFuZ2UubW9zdFJlY2VudE9wZXJhdGlvbigpLFxuICAgIH0pO1xuXG4gICAgLy8gV2UgZG9uJ3QgbmVlZCB0aGUgcmVzdWx0aW5nIGV2ZW50cyBvZiBwb2xsaW5nLiBQb2xsaW5nIHdpbGwgYXV0b21hdGljYWxseSB1cGRhdGUgdGhlIGVycm9yIGNvbGxlY3Rpb24sXG4gICAgLy8gd2hpY2ggaXMgdGhlIHRoaW5nIHdlIGNhcmUgYWJvdXQuXG4gICAgYXdhaXQgcG9sbGVyLnBvbGwoKTtcblxuICAgIHJldHVybiB0aGlzLmRpYWdub3NlRnJvbUVycm9yQ29sbGVjdGlvbihwb2xsZXIuZXJyb3JzLCBzdGFjaywgZmFsc2UsIHsgcm9sbGJhY2tFbmFibGVkOiB0aGlzLnJvbGxiYWNrRW5hYmxlZCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2RpYWdub3NlQ2hhbmdlU2V0RmFpbHVyZUZyb21TdGFja05hbWUoc3RhY2s6IFN0YWNrKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIGNvbnN0IGNzID0gKGF3YWl0IHRoaXMuY2ZuLmxpc3RDaGFuZ2VTZXRzKHtcbiAgICAgIFN0YWNrTmFtZTogc3RhY2suU3RhY2tJZCEsXG4gICAgfSkpLlN1bW1hcmllcyA/PyBbXTtcblxuICAgIGNvbnN0IHBlbmRpbmcgPSBjcy5maWx0ZXIoeCA9PiB4LlN0YXR1cyA9PT0gQ2hhbmdlU2V0U3RhdHVzLkNSRUFURV9JTl9QUk9HUkVTUyB8fCB4LlN0YXR1cyA9PT0gQ2hhbmdlU2V0U3RhdHVzLkNSRUFURV9QRU5ESU5HKTtcbiAgICBpZiAocGVuZGluZy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnZXJyb3ItZGlhZ25vc2luZycsXG4gICAgICAgIG1lc3NhZ2U6IGBTdGFjayB3aXRoIG5hbWUgJHtzdGFjay5TdGFja05hbWV9IGhhcyBjaGFuZ2Ugc2V0cyBjdXJyZW50bHkgYmVpbmcgY3JlYXRlZCAoJHtwZW5kaW5nWzBdLkNoYW5nZVNldE5hbWV9KS4gVHJ5IGFnYWluIHdoZW4gaXQncyBmaW5pc2hlZC5gLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWlsZWQgPSBjcy5maWx0ZXIoeCA9PiB4LlN0YXR1cyA9PT0gQ2hhbmdlU2V0U3RhdHVzLkZBSUxFRCk7XG4gICAgaWYgKGZhaWxlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICduby1wcm9ibGVtJyB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9kaWFnbm9zZUNoYW5nZVNldEZhaWx1cmUoZmFpbGVkWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gZGlhZ25vc2UgdGhlIHJlYXNvbiB0aGF0IGNhdXNlZCBhIGNoYW5nZXNldCB0byBmYWlsIHRvIGNyZWF0ZVxuICAgKlxuICAgKiBUaGVyZSBhcmUgYSBjb3VwbGUgb2YgZGlmZmVyZW50IHJlYXNvbnMgdGhpcyBjYW4gaGFwcGVuLCBhbmQgd2UgZ28gdGhyb3VnaCBlYWNoIG9mIHRoZW0gaW4gb3JkZXIuXG4gICAqXG4gICAqIFVzdWFsbHkgdGhpcyBzdGFydHMgZnJvbSB0cnlpbmcgdG8gZGV0ZWN0IGFuIGVycm9yIG1lc3NhZ2UgcGF0dGVybiBpbiB0aGUgY2hhbmdlIHNldCBzdGF0dXMgcmVhc29uLFxuICAgKiBhbmQgdGhlbiBwb3RlbnRpYWxseSBnb2luZyB0byBmZXRjaCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHVzaW5nIGFkZGl0aW9uYWwgQVBJIGNhbGxzLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBfZGlhZ25vc2VDaGFuZ2VTZXRGYWlsdXJlKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICBpZiAoY2hhbmdlU2V0LlN0YXR1cyAhPT0gQ2hhbmdlU2V0U3RhdHVzLkZBSUxFRCkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vLXByb2JsZW0nIH07XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZVNldEhhc05vQ2hhbmdlcyhjaGFuZ2VTZXQpKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgbGVhZCB0byBhIGNoYW5nZSBzZXQgdGhhdCBpcyBGQUlMRUQgYnV0IGl0J3Mgbm90IGFjdHVhbGx5IGEgcHJvYmxlbVxuICAgICAgcmV0dXJuIHsgdHlwZTogJ25vLXByb2JsZW0nIH07XG4gICAgfVxuXG4gICAgLy8gV2UgcmVwb3J0IGVhcmx5IHZhbGlkYXRpb24gZXJyb3JzIGRpZmZlcmVudGx5IHRoYW4gZ2VuZXJpYyBjaGFuZ2VzZXQgZXJyb3JzLiBNb3N0bHlcbiAgICAvLyBmb3IgaGlzdG9yaWNhbCByZWFzb25zLlxuICAgIGNvbnN0IGlzRWFybHlWYWxpZGF0aW9uRXJyb3IgPSBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uPy5pbmNsdWRlcygnQVdTOjpFYXJseVZhbGlkYXRpb24nKTtcbiAgICBpZiAoaXNFYXJseVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlcG9ydENoYW5nZVNldEZhaWx1cmVGcm9tRXZlbnRzKGNoYW5nZVNldCwge1xuICAgICAgICB0eXBlOiAnZWFybHktdmFsaWRhdGlvbicsXG4gICAgICAgIGNoYW5nZVNldE5hbWU6IGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lID8/ICcnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gV2Ugd2lsbCByZWN1cnNlIGludG8gbmVzdGVkIGNoYW5nZSBzZXRzIGlmIG5lY2Vzc2FyeS5cbiAgICBpZiAoY2hhbmdlU2V0LlN0YXR1c1JlYXNvbj8uaW5jbHVkZXMoJ05lc3RlZCBjaGFuZ2Ugc2V0JykpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kaWFnbm9zZU5lc3RlZENoYW5nZVNldEZhaWx1cmUoY2hhbmdlU2V0KTtcbiAgICB9XG5cbiAgICAvLyBXZSBzcGVjaWFsLWNhc2UgZmFpbGVkIGF1dG9tYXRpYyBpbXBvcnRzLiBXZSBrbm93IGFsbCB0aGUgbWVhdCBvZiB0aGUgZXJyb3IgZGV0YWlscyBhcmUgaW4gdGhlXG4gICAgLy8gc3RhdHVzIHJlYXNvbiwgYW5kIG5vd2hlcmUgZWxzZS4gV2UgcGFyc2UgaXQgc3BlY2lmaWNhbGx5LlxuICAgIGNvbnN0IGZhaWxlZEF1dG9FcnJvcnMgPSB0aGlzLl90cnlEZXRlY3RGYWlsZWRBdXRvSW1wb3J0KGNoYW5nZVNldCk7XG4gICAgaWYgKGZhaWxlZEF1dG9FcnJvcnMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICAgICAgZGV0ZWN0ZWRCeToge1xuICAgICAgICAgIHR5cGU6ICdjaGFuZ2Utc2V0JyxcbiAgICAgICAgICBjaGFuZ2VTZXRTdGF0dXM6IGNoYW5nZVNldC5TdGF0dXMgPz8gJycsXG4gICAgICAgICAgY2hhbmdlU2V0TmFtZTogY2hhbmdlU2V0LkNoYW5nZVNldE5hbWUgPz8gJycsXG4gICAgICAgICAgc3RhdHVzUmVhc29uOiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uID8/ICcnLFxuICAgICAgICB9LFxuICAgICAgICBwcm9ibGVtczogYXdhaXQgdGhpcy5lbmhhbmNlRXJyb3JzKGZhaWxlZEF1dG9FcnJvcnMpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGEgZ2VuZXJpYyBjaGFuZ2Ugc2V0IGNyZWF0aW9uIGVycm9yIHdoZXJlIGBEZXNjcmliZUV2ZW50c2BcbiAgICAvLyBtaWdodCBvciBtaWdodCBub3QgZ2l2ZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICAgIHJldHVybiB0aGlzLl9yZXBvcnRDaGFuZ2VTZXRGYWlsdXJlRnJvbUV2ZW50cyhjaGFuZ2VTZXQsIHtcbiAgICAgIHR5cGU6ICdjaGFuZ2Utc2V0JyxcbiAgICAgIGNoYW5nZVNldFN0YXR1czogY2hhbmdlU2V0LlN0YXR1cyA/PyAnJyxcbiAgICAgIGNoYW5nZVNldE5hbWU6IGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lID8/ICcnLFxuICAgICAgc3RhdHVzUmVhc29uOiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uID8/ICcnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byByZWFkIHRoZSByZXNvdXJjZS1zcGVjaWZpYyByZWFzb25zIGZvciBhIGNoYW5nZXNldCBmYWlsdXJlIGZyb20gYERlc2NyaWJlRXZlbnRzYC5cbiAgICpcbiAgICogSWYgd2UgY291bGRuJ3QgcmVhZCB0aGUgZXZlbnRzIG9yIHRoZXJlIGFyZSAwIGVycm9ycyByZXR1cm5lZCBieSB0aGF0IEFQSSwgcmV0dXJuIGEgZ2VuZXJpY1xuICAgKiBlcnJvci5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX3JlcG9ydENoYW5nZVNldEZhaWx1cmVGcm9tRXZlbnRzKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSwgZGV0ZWN0ZWRCeTogU3RhY2tQcm9ibGVtU291cmNlKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIGNvbnN0IGV2ID0gYXdhaXQgbmV3IENoYW5nZVNldFJlc291cmNlRXJyb3JGZXRjaGVyKHRoaXMucHJvcHMuc2RrLCB0aGlzLnByb3BzLmVudlJlc291cmNlcylcbiAgICAgIC5mZXRjaERldGFpbHNTdHJ1Y3R1cmVkKGNoYW5nZVNldC5DaGFuZ2VTZXROYW1lISwgY2hhbmdlU2V0LlN0YWNrTmFtZSEpO1xuXG4gICAgLy8gSWYgd2UgaGF2ZSBlcnJvcnMgdG8gcmV0dXJuLCByZXR1cm4gdGhlbVxuICAgIGlmIChldi50eXBlID09PSAncmVzb3VyY2UtZXJyb3JzJyAmJiBldi5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgICAgICBkZXRlY3RlZEJ5LFxuICAgICAgICBwcm9ibGVtczogYXdhaXQgdGhpcy5lbmhhbmNlRXJyb3JzKGV2LmVycm9ycy5tYXAoKGUpID0+IHJlc291cmNlRXJyb3JGcm9tRWFybHlWYWxpZGF0aW9uRXJyb3IoY2hhbmdlU2V0LlN0YWNrSWQgPz8gJycsIHRoaXMucGFyZW50U3RhY2tMb2dpY2FsSWRzLCBlKSkpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHdlIHdpbGwgcmV0dXJuIGEgZ2VuZXJpYyBjaGFuZ2VzZXQgZXJyb3IgbWVzc2FnZS4gSWYgdGhlcmUgd2FzIGEgcHJvYmxlbVxuICAgIC8vIGNoZWNraW5nLCB3ZSBsb2cgdGhhdCBmb3IgZ29vZCBtZWFzdXJlIGJ1dCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lLlxuICAgIGlmIChldi50eXBlID09PSAnY291bGQtbm90LWNoZWNrJykge1xuICAgICAgYXdhaXQgdGhpcy5wcm9wcy5pb0hlbHBlci5kZWZhdWx0cy53YXJuKGV2Lm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9ub25TcGVjaWZpY0NoYW5nZVNldEVycm9yKGNoYW5nZVNldCwgZGV0ZWN0ZWRCeSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuaGFuY2VFcnJvcnMoZXJyczogcmVhZG9ubHkgUmVzb3VyY2VFcnJvcltdKTogUHJvbWlzZTxUcmFjZWRSZXNvdXJjZUVycm9yW10+IHtcbiAgICAvLyBXZSdyZSBub3QgYWN0dWFsbHkgbGltaXRpbmcgdGhpcyBoZXJlLiBCdXQgd2UgYXJlIG1ha2luZyB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBhbW91bnQgb2YgcmVzb3VyY2VzXG4gICAgLy8gdGhhdCB3aWxsIGhhdmUgZXJyb3JzIGFyZSBhbHdheXMgcHJldHR5IGxvdyBpbiBudW1iZXIuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBjZGtsYWJzL3Byb21pc2VhbGwtbm8tdW5ib3VuZGVkLXBhcmFsbGVsaXNtXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGVycnMubWFwKChlKSA9PiB0aGlzLmVuaGFuY2VFcnJvcihlKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmhhbmNlRXJyb3IoZXJyOiBSZXNvdXJjZUVycm9yKTogUHJvbWlzZTxUcmFjZWRSZXNvdXJjZUVycm9yPiB7XG4gICAgY29uc3Qgc291cmNlVHJhY2VQcm9taXNlID0gZXJyLmxvZ2ljYWxJZFxuICAgICAgPyB0aGlzLnByb3BzLnNvdXJjZVRyYWNlci50cmFjZVJlc291cmNlKGVyci5zdGFja0FybiwgZXJyLnBhcmVudFN0YWNrTG9naWNhbElkcywgZXJyLmxvZ2ljYWxJZClcbiAgICAgIDogdGhpcy5wcm9wcy5zb3VyY2VUcmFjZXIudHJhY2VTdGFjayhlcnIuc3RhY2tBcm4sIGVyci5wYXJlbnRTdGFja0xvZ2ljYWxJZHMpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBjZGtsYWJzL3Byb21pc2VhbGwtbm8tdW5ib3VuZGVkLXBhcmFsbGVsaXNtXG4gICAgY29uc3QgW3NvdXJjZVRyYWNlLCBhZGRpdGlvbmFsQ29udGV4dF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBzb3VyY2VUcmFjZVByb21pc2UsXG4gICAgICB0aGlzLmludmVzdGlnYXRlUmVzb3VyY2VCZXN0RWZmb3J0KGVyciksXG4gICAgXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXJyLFxuICAgICAgc291cmNlVHJhY2UsXG4gICAgICB0b3BMZXZlbFN0YWNrSGllcmFyY2hpY2FsSWQ6IHRoaXMucHJvcHMudG9wTGV2ZWxTdGFja0hpZXJhcmNoaWNhbElkLFxuICAgICAgLi4uKGFkZGl0aW9uYWxDb250ZXh0Lmxlbmd0aCA+IDAgPyB7IGFkZGl0aW9uYWxDb250ZXh0IH0gOiB7fSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW52ZXN0aWdhdGVSZXNvdXJjZUJlc3RFZmZvcnQoZXJyOiBSZXNvdXJjZUVycm9yKSB7XG4gICAgY29uc3Qgc2RrID0gYXdhaXQgdGhpcy5hZGRpdGlvbmFsRXhwbG9yYXRpb25TZGsoKTtcbiAgICBpZiAoIXNkaykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGludmVzdGlnYXRlUmVzb3VyY2UoZXJyLCBzZGssIChtc2cpID0+IHRoaXMucHJvcHMuaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcobXNnKSwge1xuICAgICAgICByb2xsYmFja0VuYWJsZWQ6IHRoaXMucm9sbGJhY2tFbmFibGVkLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBhd2FpdCB0aGlzLnByb3BzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBSZXNvdXJjZSBpbnZlc3RpZ2F0aW9uIGZhaWxlZDogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgZ2VuZXJpYyBzdGFjayBlcnJvciBmcm9tIHRoZSBnaXZlbiBjaGFuZ2Ugc2V0IGluZm9ybWF0aW9uXG4gICAqXG4gICAqIFdlIGNhbid0IHBvaW50IHRvIGEgc3BlY2lmaWMgcmVzb3VyY2UuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9ub25TcGVjaWZpY0NoYW5nZVNldEVycm9yKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSwgZGV0ZWN0ZWRCeTogU3RhY2tQcm9ibGVtU291cmNlKTogUHJvbWlzZTxTdGFja0RpYWdub3Npcz4ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAncHJvYmxlbScsXG4gICAgICBkZXRlY3RlZEJ5LFxuICAgICAgcHJvYmxlbXM6IFtcbiAgICAgICAgYXdhaXQgdGhpcy5lbmhhbmNlRXJyb3Ioe1xuICAgICAgICAgIC8vIEl0J3MgYWJvdXQgYSBzdGFja1xuICAgICAgICAgIGxvZ2ljYWxJZDogdW5kZWZpbmVkLFxuICAgICAgICAgIG1lc3NhZ2U6IGNoYW5nZVNldC5TdGF0dXNSZWFzb24gPz8gJycsXG4gICAgICAgICAgcGFyZW50U3RhY2tMb2dpY2FsSWRzOiB0aGlzLnBhcmVudFN0YWNrTG9naWNhbElkcyxcbiAgICAgICAgICBzdGFja0FybjogY2hhbmdlU2V0LlN0YWNrSWQgPz8gJycsXG4gICAgICAgICAgcGh5c2ljYWxJZDogY2hhbmdlU2V0LlN0YWNrSWQsXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rIGZvciBuZXN0ZWQgY2hhbmdlIHNldHMgdGhhdCBoYXZlIGZhaWxlZCwgYW5kIGRpYWdub3NlIHRob3NlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBfZGlhZ25vc2VOZXN0ZWRDaGFuZ2VTZXRGYWlsdXJlKGNoYW5nZVNldDogQ2hhbmdlU2V0U3VtbWFyeSk6IFByb21pc2U8U3RhY2tEaWFnbm9zaXM+IHtcbiAgICBjb25zdCBuZXN0ZWQgPSBhd2FpdCB0aGlzLl9maW5kRmFpbGVkTmVzdGVkU3RhY2soY2hhbmdlU2V0KTtcbiAgICBpZiAoIW5lc3RlZCkge1xuICAgICAgLy8gVGhhdCdzIHdlaXJkLiBMZXQncyByZXR1cm4gdGhlIGNoYW5nZSBzZXQncyBzdGF0dXMgcmVhc29uIGFzIGEgbm9uLXNwZWNpZmljIGVycm9yXG4gICAgICByZXR1cm4gdGhpcy5fbm9uU3BlY2lmaWNDaGFuZ2VTZXRFcnJvcihjaGFuZ2VTZXQsIHtcbiAgICAgICAgdHlwZTogJ2NoYW5nZS1zZXQnLFxuICAgICAgICBjaGFuZ2VTZXROYW1lOiBjaGFuZ2VTZXQuQ2hhbmdlU2V0TmFtZSA/PyAnJyxcbiAgICAgICAgY2hhbmdlU2V0U3RhdHVzOiBjaGFuZ2VTZXQuU3RhdHVzID8/ICcnLFxuICAgICAgICBzdGF0dXNSZWFzb246IGNoYW5nZVNldC5TdGF0dXNSZWFzb24gPz8gJycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXN0ZWRDcyA9IGF3YWl0IHRoaXMuY2ZuLmRlc2NyaWJlQ2hhbmdlU2V0KHtcbiAgICAgIENoYW5nZVNldE5hbWU6IG5lc3RlZC5jaGFuZ2VTZXRBcm4sXG4gICAgICBTdGFja05hbWU6IG5lc3RlZC5zdGFja0FybixcbiAgICB9KTtcblxuICAgIGNvbnN0IG5lc3RlZERpYWcgPSBuZXcgQ2xvdWRGb3JtYXRpb25TdGFja0RpYWdub3Nlcih0aGlzLnByb3BzKTtcbiAgICBuZXN0ZWREaWFnLnBhcmVudFN0YWNrTG9naWNhbElkcyA9IFsuLi50aGlzLnBhcmVudFN0YWNrTG9naWNhbElkcywgbmVzdGVkLmxvZ2ljYWxJZF07XG4gICAgcmV0dXJuIG5lc3RlZERpYWcuX2RpYWdub3NlQ2hhbmdlU2V0RmFpbHVyZShuZXN0ZWRDcyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9maW5kRmFpbGVkTmVzdGVkU3RhY2soY2hhbmdlU2V0OiBDaGFuZ2VTZXRTdW1tYXJ5KTogUHJvbWlzZTx7XG4gICAgc3RhY2tBcm46IHN0cmluZztcbiAgICBjaGFuZ2VTZXRBcm46IHN0cmluZztcbiAgICBsb2dpY2FsSWQ6IHN0cmluZztcbiAgfSB8IHVuZGVmaW5lZD4ge1xuICAgIC8vIFRoZSBzdGF0dXMgcmVhc29uIG9ubHkgaW5jbHVkZXMgdGhlIGNoYW5nZSBzZXQgSUQsIGJ1dCB3ZSBhbHNvIG5lZWQgdGhlIHN0YWNrIG5hbWUuIFRoZSB3YXkgdG8gZ2V0IHRoaXMgaXNcbiAgICAvLyBkZXNjcmliZSB0aGUgY3VycmVudCBjaGFuZ2Ugc2V0LCB0aGVuIGZyb20gdGhlIENoYW5nZXMgZmluZCB0aGUgc3RhY2sgd2hvc2UgQ2hhbmdlU2V0SWQgaXMgbWVudGlvbmVkIGluIHRoZVxuICAgIC8vIHN0YXR1cyByZWFzb24sIHRoZW4gbG9vayB1cCB0aGF0IGNoYW5nZSBzZXQgYW5kIHJlY3Vyc2UgaW50byBhIHJlZ3VsYXIgY2hhbmdlIHNldCBkaWFnbm9zaXMuXG4gICAgbGV0IG5leHRUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICBkbyB7XG4gICAgICAvLyBDaGFuZ2VzIGluIHRoaXMgcmVzcG9uc2UgbWlnaHQgYmUgcGFnaW5hdGVkXG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5jZm4uZGVzY3JpYmVDaGFuZ2VTZXQoe1xuICAgICAgICBTdGFja05hbWU6IGNoYW5nZVNldC5TdGFja0lkLFxuICAgICAgICBDaGFuZ2VTZXROYW1lOiBjaGFuZ2VTZXQuQ2hhbmdlU2V0SWQsXG4gICAgICAgIC4uLm5leHRUb2tlbiA/IHsgTmV4dFRva2VuOiBuZXh0VG9rZW4gfSA6IHt9LFxuICAgICAgfSk7XG5cbiAgICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIHJlc3AuQ2hhbmdlcyA/PyBbXSkge1xuICAgICAgICBpZiAoY2hhbmdlLlR5cGUgPT09IENoYW5nZVR5cGUuUmVzb3VyY2UgJiYgY2hhbmdlLlJlc291cmNlQ2hhbmdlPy5SZXNvdXJjZVR5cGUgPT09ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycgJiYgY2hhbmdlLlJlc291cmNlQ2hhbmdlPy5DaGFuZ2VTZXRJZCAmJiBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uPy5pbmNsdWRlcyhjaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LkNoYW5nZVNldElkKSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGFuZ2VTZXRBcm46IGNoYW5nZS5SZXNvdXJjZUNoYW5nZS5DaGFuZ2VTZXRJZCxcbiAgICAgICAgICAgIHN0YWNrQXJuOiBjaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuUGh5c2ljYWxSZXNvdXJjZUlkID8/ICcnLFxuICAgICAgICAgICAgbG9naWNhbElkOiBjaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuTG9naWNhbFJlc291cmNlSWQgPz8gJycsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXh0VG9rZW4gPSByZXNwLk5leHRUb2tlbjtcbiAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gcGFyc2UgZmFpbGVkIGF1dG8taW1wb3J0cyBvdXQgZnJvbSBhIGNoYW5nZSBzZXQgc3RhdHVzXG4gICAqXG4gICAqIFRoZSBwYXR0ZXJuIGxvb2tzIGxpa2UgdGhpczpcbiAgICpcbiAgICogYGBgXG4gICAqIENsb3VkRm9ybWF0aW9uIGlzIGF0dGVtcHRpbmcgdG8gaW1wb3J0IHNvbWUgcmVzb3VyY2VzIGJlY2F1c2UgdGhleSBhbHJlYWR5IGV4aXN0IGluIHlvdXIgYWNjb3VudC4gVGhlIHJlc291cmNlcyBtdXN0IGhhdmUgdGhlIERlbGV0aW9uUG9saWN5IGF0dHJpYnV0ZSBzZXQgdG8gJ1JldGFpbicgb3IgJ1JldGFpbkV4Y2VwdE9uQ3JlYXRlJyBpbiB0aGUgdGVtcGxhdGUgZm9yIHN1Y2Nlc3NmdWwgaW1wb3J0LiBUaGUgYWZmZWN0ZWQgcmVzb3VyY2VzIGFyZSBTb21lQnVja2V0RDVCNzA3MDQgKHtCdWNrZXROYW1lPXpvbWFhcmVlbmJ1Y2tldH0pXG4gICAqIGBgYFxuICAgKlxuICAgKiBGb2xsb3dlZCBieVxuICAgKlxuICAgKiBgYGBcbiAgICogTG9naWNhbElEICh7UHJvcD1WYWx1ZSxQcm9wPVZhbHVlfSksIExvZ2ljYWxJRCAoe1Byb3A9VmFsdWV9KSwgLi4uXG4gICAqIGBgYFxuICAgKi9cbiAgcHJpdmF0ZSBfdHJ5RGV0ZWN0RmFpbGVkQXV0b0ltcG9ydChjaGFuZ2VTZXQ6IENoYW5nZVNldFN1bW1hcnkpOiBSZXNvdXJjZUVycm9yW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjaGFuZ2VTZXQuU3RhdHVzUmVhc29uO1xuICAgIC8vIE9ubHkgZW5oYW5jZSB0aGUgc3BlY2lmaWMgQ0ZOIGVycm9yIGFib3V0IGltcG9ydGluZyBleGlzdGluZyByZXNvdXJjZXNcbiAgICBpZiAoIW1lc3NhZ2U/LmluY2x1ZGVzKCdDbG91ZEZvcm1hdGlvbiBpcyBhdHRlbXB0aW5nIHRvIGltcG9ydCBzb21lIHJlc291cmNlcyBiZWNhdXNlIHRoZXkgYWxyZWFkeSBleGlzdCBpbiB5b3VyIGFjY291bnQnKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBtYXJrZXIgPSAnVGhlIGFmZmVjdGVkIHJlc291cmNlcyBhcmUgJztcbiAgICBjb25zdCBtYXJrZXJJbmRleCA9IG1lc3NhZ2UuaW5kZXhPZihtYXJrZXIpO1xuICAgIGlmIChtYXJrZXJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmV0OiBSZXNvdXJjZUVycm9yW10gPSBbXTtcbiAgICBsZXQgcmVtYWluaW5nID0gbWVzc2FnZS5zbGljZShtYXJrZXJJbmRleCArIG1hcmtlci5sZW5ndGgpO1xuICAgIHdoaWxlIChyZW1haW5pbmcpIHtcbiAgICAgIGNvbnN0IGVuZEl4ID0gcmVtYWluaW5nLmluZGV4T2YoJyksICcpO1xuICAgICAgY29uc3QgdGhpc1Jlc291cmNlID0gZW5kSXggPiAtMSA/IHJlbWFpbmluZy5zbGljZSgwLCBlbmRJeCArIDEpIDogcmVtYWluaW5nO1xuICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nLnNsaWNlKHRoaXNSZXNvdXJjZS5sZW5ndGggKyAyKTtcblxuICAgICAgLy8gdGhpc1Jlc291cmNlID0gXCJMb2dpY2FsSWQgKHtQcm9wPVZhbHVlLCBQcm9wPVZhbHVlfSlcIlxuICAgICAgY29uc3Qgb3BlblBhcmVuID0gdGhpc1Jlc291cmNlLmluZGV4T2YoJygnKTtcbiAgICAgIGNvbnN0IGxvZ2ljYWxJZCA9IG9wZW5QYXJlbiA+IC0xID8gdGhpc1Jlc291cmNlLnNsaWNlKDAsIG9wZW5QYXJlbikudHJpbSgpIDogdW5kZWZpbmVkO1xuXG4gICAgICByZXQucHVzaCh7XG4gICAgICAgIG1lc3NhZ2U6IGBBdXRvbWF0aWMgaW1wb3J0IG9mIGV4aXN0aW5nIHJlc291cmNlICR7dGhpc1Jlc291cmNlfSBuZWVkcyBhIERlbGV0aW9uUG9saWN5IG9mIFxcJ1JldGFpblxcJyBvciBcXCdSZXRhaW5FeGNlcHRPbkNyZWF0ZVxcJy4gU2V0IHRoZSByZW1vdmFsIHBvbGljeSB0byBcXCdSZW1vdmFsUG9saWN5LlJFVEFJTlxcJyBvciBcXCdSZW1vdmFsUG9saWN5LlJFVEFJTl9PTl9VUERBVEVfT1JfREVMRVRFXFwnIChTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay92Mi9ndWlkZS9yZXNvdXJjZXMuaHRtbCNyZXNvdXJjZXMtcmVtb3ZhbClgLFxuICAgICAgICBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHRoaXMucGFyZW50U3RhY2tMb2dpY2FsSWRzLFxuICAgICAgICBzdGFja0FybjogY2hhbmdlU2V0LlN0YWNrSWQgPz8gJycsXG4gICAgICAgIGVycm9yQ29kZTogJ0F1dG9tYXRpY0ltcG9ydE5lZWRzUmV0YWluJyxcbiAgICAgICAgbG9naWNhbElkLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBhZGRpdGlvbmFsIGV4cGxvcmF0aW9uIFNESywgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRpdGlvbmFsRXhwbG9yYXRpb25TZGsoKTogUHJvbWlzZTxTREsgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuX2FkZGl0aW9uYWxFeHBsb3JhdGlvblNka1Byb21pc2UpIHtcbiAgICAgIHRoaXMuX2FkZGl0aW9uYWxFeHBsb3JhdGlvblNka1Byb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3BzLmFkZGl0aW9uYWxFeHBsb3JhdGlvblNka1Byb3ZpZGVyPy4oKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wcm9wcy5pb0hlbHBlci5kZWZhdWx0cy5kZWJ1ZyhgQWRkaXRpb25hbCBleHBsb3JhdGlvbiBTREsgcHJvdmlkZXIgZmFpbGVkOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYWRkaXRpb25hbEV4cGxvcmF0aW9uU2RrUHJvbWlzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBjaGFuZ2Ugc2V0IGhhcyBubyBjaGFuZ2VzXG4gKlxuICogVGhpcyBtdXN0IGJlIGRldGVybWluZWQgZnJvbSB0aGUgc3RhdHVzLCBub3QgdGhlICdDaGFuZ2VzJyBhcnJheSBvbiB0aGVcbiAqIG9iamVjdDsgdGhlIGxhdHRlciBjYW4gYmUgZW1wdHkgYmVjYXVzZSBubyByZXNvdXJjZXMgd2VyZSBjaGFuZ2VkLCBidXQgaWZcbiAqIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIE91dHB1dHMsIHRoZSBjaGFuZ2Ugc2V0IGNhbiBzdGlsbCBiZSBleGVjdXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZVNldEhhc05vQ2hhbmdlcyhkZXNjcmlwdGlvbjogQ2hhbmdlU2V0U3VtbWFyeSkge1xuICBjb25zdCBub0NoYW5nZUVycm9yUHJlZml4ZXMgPSBbXG4gICAgLy8gRXJyb3IgbWVzc2FnZSBmb3IgYSByZWd1bGFyIHRlbXBsYXRlXG4gICAgXCJUaGUgc3VibWl0dGVkIGluZm9ybWF0aW9uIGRpZG4ndCBjb250YWluIGNoYW5nZXMuXCIsXG4gICAgLy8gRXJyb3IgbWVzc2FnZSB3aGVuIGEgVHJhbnNmb3JtIGlzIGludm9sdmVkIChzZWUgIzEwNjUwKVxuICAgICdObyB1cGRhdGVzIGFyZSB0byBiZSBwZXJmb3JtZWQuJyxcbiAgXTtcblxuICByZXR1cm4gKFxuICAgIGRlc2NyaXB0aW9uLlN0YXR1cyA9PT0gJ0ZBSUxFRCcgJiYgbm9DaGFuZ2VFcnJvclByZWZpeGVzLnNvbWUoKHApID0+IChkZXNjcmlwdGlvbi5TdGF0dXNSZWFzb24gPz8gJycpLnN0YXJ0c1dpdGgocCkpXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlc291cmNlRXJyb3JGcm9tRWFybHlWYWxpZGF0aW9uRXJyb3Ioc3RhY2tJZDogc3RyaW5nLCBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHN0cmluZ1tdLCBldjogQ2hhbmdlU2V0UmVzb3VyY2VFcnJvcik6IFJlc291cmNlRXJyb3Ige1xuICByZXR1cm4ge1xuICAgIGxvZ2ljYWxJZDogZXYubG9naWNhbElkLFxuICAgIHBoeXNpY2FsSWQ6IGV2LnBoeXNpY2FsSWQsXG4gICAgcmVzb3VyY2VUeXBlOiBldi5yZXNvdXJjZVR5cGUsXG4gICAgbWVzc2FnZTogYCR7ZXYubWVzc2FnZX0gKGF0ICR7ZXYuZG9jdW1lbnRQYXRofSlgLFxuICAgIGVycm9yQ29kZTogYCR7ZXYudmFsaWRhdGlvbk5hbWV9XyR7ZXYuZXZlbnRUeXBlfWAsXG4gICAgcGFyZW50U3RhY2tMb2dpY2FsSWRzLFxuICAgIHN0YWNrQXJuOiBzdGFja0lkLFxuICB9O1xufVxuIl19
@@ -445,7 +445,7 @@ exports.IO = {
445
445
  // validate (96xx)
446
446
  CDK_TOOLKIT_I9600: make.info({
447
447
  code: 'CDK_TOOLKIT_I9600',
448
- description: 'Policy validation passed',
448
+ description: 'Validation did not find any problems',
449
449
  interface: 'ValidateResult',
450
450
  }),
451
451
  CDK_TOOLKIT_E9600: make.error({
@@ -626,4 +626,4 @@ exports.SPAN = {
626
626
  end: exports.IO.CDK_TOOLKIT_I5410,
627
627
  },
628
628
  };
629
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3Q0FBd0M7QUFrQ3hDOzs7OztHQUtHO0FBQ1UsUUFBQSxFQUFFLEdBQUc7SUFDaEIsb0JBQW9CO0lBQ3BCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsNEJBQTRCO0tBQzFDLENBQUM7SUFFRixrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBWTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsU0FBUyxFQUFFLFdBQVc7S0FDdkIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQXdCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUF1QjtRQUNuRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBZTtRQUMzQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFzQjtRQUNsRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxnRUFBZ0U7UUFDN0UsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQyxDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFFLElB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QWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxVQUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLGFBQWE7UUFDbkIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7SUFDRCxhQUFhLEVBQUU7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7Q0FDaUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpJztcbmltcG9ydCAqIGFzIG1ha2UgZnJvbSAnLi9tZXNzYWdlLW1ha2VyJztcbmltcG9ydCB0eXBlIHsgU3BhbkRlZmluaXRpb24gfSBmcm9tICcuL3NwYW4nO1xuaW1wb3J0IHR5cGUgeyBEaWFnbm9zZWRTdGFjayB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvZGlhZ25vc2UnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0ZVJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvdmFsaWRhdGUnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0RpZmYsIERpZmZSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcyc7XG5pbXBvcnQgdHlwZSB7IEJvb3RzdHJhcEVudmlyb25tZW50UHJvZ3Jlc3MgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9ib290c3RyYXAtZW52aXJvbm1lbnQtcHJvZ3Jlc3MnO1xuaW1wb3J0IHR5cGUgeyBNaXNzaW5nQ29udGV4dCwgVXBkYXRlZENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgQnVpbGRBc3NldCwgRGVwbG95Q29uZmlybWF0aW9uUmVxdWVzdCwgUHVibGlzaEFzc2V0LCBQdWJsaXNoQXNzZXRFdmVudCwgU3RhY2tEZXBsb3lQcm9ncmVzcywgU3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZGVwbG95JztcbmltcG9ydCB0eXBlIHsgU3RhY2tEZXN0cm95LCBTdGFja0Rlc3Ryb3lQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2Rlc3Ryb3knO1xuaW1wb3J0IHR5cGUgeyBEcmlmdFJlc3VsdFBheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9kcmlmdCc7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnQ2hhbmdlUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2ZsYWdzJztcbmltcG9ydCB0eXBlIHsgQXNzZXRCYXRjaERlbGV0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2djJztcbmltcG9ydCB0eXBlIHsgSG90c3dhcERlcGxveW1lbnREZXRhaWxzLCBIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQsIEhvdHN3YXBwYWJsZUNoYW5nZSwgSG90c3dhcFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2hvdHN3YXAnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUlkZW50aWZpY2F0aW9uUmVxdWVzdCwgUmVzb3VyY2VJbXBvcnRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvaW1wb3J0JztcbmltcG9ydCB0eXBlIHsgU3RhY2tEZXRhaWxzUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2xpc3QnO1xuaW1wb3J0IHR5cGUgeyBDbG91ZFdhdGNoTG9nRXZlbnQsIENsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvbG9ncy1tb25pdG9yJztcbmltcG9ydCB0eXBlIHsgQXNzZXRzUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3B1Ymxpc2gtYXNzZXRzJztcbmltcG9ydCB0eXBlIHsgUmVmYWN0b3JSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9yZWZhY3Rvcic7XG5pbXBvcnQgdHlwZSB7IFN0YWNrUm9sbGJhY2tQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3JvbGxiYWNrJztcbmltcG9ydCB0eXBlIHsgTWZhVG9rZW5SZXF1ZXN0LCBTZGtUcmFjZSB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3Nkayc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrQWN0aXZpdHksIFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3N0YWNrLWFjdGl2aXR5JztcbmltcG9ydCB0eXBlIHsgU3RhY2tTZWxlY3Rpb25EZXRhaWxzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvc3ludGgnO1xuaW1wb3J0IHR5cGUge1xuICBBc3NlbWJseURhdGEsXG4gIENvbmZpcm1hdGlvblJlcXVlc3QsXG4gIENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2UsXG4gIER1cmF0aW9uLFxuICBFcnJvclBheWxvYWQsXG4gIE9wZXJhdGlvbixcbiAgU2luZ2xlU3RhY2ssXG4gIFN0YWNrQW5kQXNzZW1ibHlEYXRhLFxufSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVXYXRjaEV2ZW50LCBXYXRjaFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvd2F0Y2gnO1xuXG4vKipcbiAqIFdlIGhhdmUgYSByb3VnaCBzeXN0ZW0gYnkgd2hpY2ggd2UgYXNzaWduIG1lc3NhZ2UgY29kZXM6XG4gKiAtIEZpcnN0IGRpZ2l0IGdyb3VwcyBtZXNzYWdlcyBieSBhY3Rpb24sIGUuZy4gc3ludGggb3IgZGVwbG95XG4gKiAtIFgwMDAtWDAwOSBhcmUgcmVzZXJ2ZWQgZm9yIHRpbWluZ3NcbiAqIC0gWDkwMC1YOTk5IGFyZSByZXNlcnZlZCBmb3IgcmVzdWx0c1xuICovXG5leHBvcnQgY29uc3QgSU8gPSB7XG4gIC8vIHdhcm5pbmdzICYgZXJyb3JzXG4gIENES19UT09MS0lUX1cwMTAwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XMDEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDcmVkZW50aWFsIHBsdWdpbiB3YXJuaW5ncycsXG4gIH0pLFxuXG4gIC8vIDE6IFN5bnRoICgxeHh4KVxuICBDREtfVE9PTEtJVF9JMTAwMDogbWFrZS5pbmZvPE9wZXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBzeW50aGVzaXMgdGltZXMuJyxcbiAgICBpbnRlcmZhY2U6ICdPcGVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTEwMDE6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Nsb3VkIEFzc2VtYmx5IHN5bnRoZXNpcyBpcyBzdGFydGluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tTZWxlY3Rpb25EZXRhaWxzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0kxOTAxOiBtYWtlLnJlc3VsdDxTdGFja0FuZEFzc2VtYmx5RGF0YT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTkwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBzdGFjayBkYXRhJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0FuZEFzc2VtYmx5RGF0YScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMTkwMjogbWFrZS5yZXN1bHQ8QXNzZW1ibHlEYXRhPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxOTAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N1Y2Nlc3NmdWxseSBkZXBsb3llZCBzdGFja3MnLFxuICAgIGludGVyZmFjZTogJ0Fzc2VtYmx5RGF0YScsXG4gIH0pLFxuXG4gIC8vIDI6IExpc3QgKDJ4eHgpXG4gIENES19UT09MS0lUX0kyOTAxOiBtYWtlLnJlc3VsdDxTdGFja0RldGFpbHNQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kyOTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIGRldGFpbHMgb24gdGhlIHNlbGVjdGVkIHN0YWNrcyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0RldGFpbHNQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gMzogSW1wb3J0ICYgTWlncmF0ZVxuICBDREtfVE9PTEtJVF9JMzEwMDogbWFrZS5jb25maXJtPFJlc291cmNlSW1wb3J0UmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMzEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHRoZSBpbXBvcnQgb2YgYSBzcGVjaWZpYyByZXNvdXJjZScsXG4gICAgaW50ZXJmYWNlOiAnUmVzb3VyY2VJbXBvcnRSZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0kzMTEwOiBtYWtlLnF1ZXN0aW9uPFJlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kzMTEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXMgbmVlZGVkIHRvIGlkZW50aWZ5IGEgcmVzb3VyY2UnLFxuICAgIGludGVyZmFjZTogJ1Jlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0UzOTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FMzkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdSZXNvdXJjZSBpbXBvcnQgZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA0OiBEaWZmICg0MHh4IC0gNDR4eClcbiAgQ0RLX1RPT0xLSVRfSTQwMDA6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0MDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RpZmYgc3RhY2tzIGlzIHN0YXJ0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja1NlbGVjdGlvbkRldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQwMDE6IG1ha2UucmVzdWx0PERpZmZSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnT3V0cHV0IG9mIHRoZSBkaWZmIGNvbW1hbmQnLFxuICAgIGludGVyZmFjZTogJ0RpZmZSZXN1bHQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQwMDI6IG1ha2UucmVzdWx0PFN0YWNrRGlmZj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDAwMicsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgZGlmZiBmb3IgYSBzaW5nbGUgc3RhY2snLFxuICAgIGludGVyZmFjZTogJ1N0YWNrRGlmZicsXG4gIH0pLFxuXG4gIC8vIDQ6IERyaWZ0ICg0NXh4IC0gNDl4eClcbiAgQ0RLX1RPT0xLSVRfSTQ1MDA6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0NTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RyaWZ0IGRldGVjdGlvbiBpcyBzdGFydGluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tTZWxlY3Rpb25EZXRhaWxzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k0NTA5OiBtYWtlLnJlc3VsdDxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDU5MicsXG4gICAgZGVzY3JpcHRpb246ICdSZXN1bHRzIG9mIHRoZSBkcmlmdCcsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQ1OTA6IG1ha2UucmVzdWx0PERyaWZ0UmVzdWx0UGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDU5MCcsXG4gICAgZGVzY3JpcHRpb246ICdSZXN1bHRzIG9mIGEgc3RhY2sgZHJpZnQnLFxuICAgIGludGVyZmFjZTogJ0RyaWZ0UmVzdWx0UGF5bG9hZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9XNDU5MTogbWFrZS53YXJuPFNpbmdsZVN0YWNrPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c0NTkxJyxcbiAgICBkZXNjcmlwdGlvbjogJ01pc3NpbmcgZHJpZnQgcmVzdWx0IGZvcnQgYSBzdGFjay4nLFxuICAgIGludGVyZmFjZTogJ1NpbmdsZVN0YWNrJyxcbiAgfSksXG5cbiAgLy8gNTogRGVwbG95ICYgV2F0Y2ggKDV4eHgpXG4gIENES19UT09MS0lUX0k1MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGVwbG95bWVudCB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMDE6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyB0b3RhbCB0aW1lIGluIGRlcGxveSBhY3Rpb24sIGluY2x1ZGluZyBzeW50aCBhbmQgcm9sbGJhY2snLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDAyOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMDInLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgdGltZSBmb3IgcmVzb3VyY2UgbWlncmF0aW9uJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9XNTAyMTogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzUwMjEnLFxuICAgIGRlc2NyaXB0aW9uOiAnRW1wdHkgbm9uLWV4aXN0ZW50IHN0YWNrLCBkZXBsb3ltZW50IGlzIHNraXBwZWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfVzUwMjI6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c1MDIyJyxcbiAgICBkZXNjcmlwdGlvbjogJ0VtcHR5IGV4aXN0aW5nIHN0YWNrLCBzdGFjayB3aWxsIGJlIGRlc3Ryb3llZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMzEnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5mb3JtcyBhYm91dCBhbnkgbG9nIGdyb3VwcyB0aGF0IGFyZSB0cmFjZWQgYXMgcGFydCBvZiB0aGUgZGVwbG95bWVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzMjogbWFrZS5kZWJ1ZzxDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAzMicsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydCBtb25pdG9yaW5nIGxvZyBncm91cHMnLFxuICAgIGludGVyZmFjZTogJ0Nsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDMzOiBtYWtlLmluZm88Q2xvdWRXYXRjaExvZ0V2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDMzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgbG9nIGV2ZW50IHJlY2VpdmVkIGZyb20gQ2xvdWQgV2F0Y2gnLFxuICAgIGludGVyZmFjZTogJ0Nsb3VkV2F0Y2hMb2dFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzNDogbWFrZS5kZWJ1ZzxDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAzNCcsXG4gICAgZGVzY3JpcHRpb246ICdTdG9wIG1vbml0b3JpbmcgbG9nIGdyb3VwcycsXG4gICAgaW50ZXJmYWNlOiAnQ2xvdWRXYXRjaExvZ01vbml0b3JDb250cm9sRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTUwMzU6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U1MDM1JyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgbG9nIG1vbml0b3JpbmcgZXJyb3InLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTA1MDogbWFrZS5jb25maXJtPENvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwNTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSByb2xsYmFjayBkdXJpbmcgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTA2MDogbWFrZS5jb25maXJtPERlcGxveUNvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwNjAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSBkZXBsb3kgc2VjdXJpdHkgc2Vuc2l0aXZlIGNoYW5nZXMnLFxuICAgIGludGVyZmFjZTogJ0RlcGxveUNvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUxMDA6IG1ha2UuaW5mbzxTdGFja0RlcGxveVByb2dyZXNzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRlcGxveSBwcm9ncmVzcycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEZXBsb3lQcm9ncmVzcycsXG4gIH0pLFxuXG4gIC8vIEFzc2V0cyAoNTJ4eClcbiAgQ0RLX1RPT0xLSVRfSTUyMTA6IG1ha2UudHJhY2U8QnVpbGRBc3NldD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTIxMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydGVkIGJ1aWxkaW5nIGEgc3BlY2lmaWMgYXNzZXQnLFxuICAgIGludGVyZmFjZTogJ0J1aWxkQXNzZXQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUyMTE6IG1ha2UudHJhY2U8RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUyMTEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQnVpbGRpbmcgdGhlIGFzc2V0IGhhcyBjb21wbGV0ZWQnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MjIwOiBtYWtlLnRyYWNlPFB1Ymxpc2hBc3NldD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTIyMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydGVkIHB1Ymxpc2hpbmcgYSBzcGVjaWZpYyBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MjIxOiBtYWtlLnRyYWNlPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MjIxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hpbmcgdGhlIGFzc2V0IGhhcyBjb21wbGV0ZWQnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG5cbiAgQ0RLX0FTU0VUU19JNTI3MDogbWFrZS5pbmZvPFB1Ymxpc2hBc3NldEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19BU1NFVFNfSTUyNzAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyB0aGUgYXNzZXQgaGFzIHN0YXJ0ZWQnLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG4gIENES19BU1NFVFNfSTUyNzE6IG1ha2UuZGVidWc8UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19JNTI3MScsXG4gICAgZGVzY3JpcHRpb246ICdEZWJ1ZyBtZXNzYWdlZCBlbWl0dGVkIGR1cmluZyBwdWJsaXNoaW5nIG9mIHRoZSBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0RXZlbnQnLFxuICB9KSxcbiAgQ0RLX0FTU0VUU19JNTI3NTogbWFrZS5pbmZvPFB1Ymxpc2hBc3NldEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19BU1NFVFNfSTUyNzUnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyB0aGUgYXNzZXQgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG4gIENES19BU1NFVFNfRTUyNzk6IG1ha2UuZXJyb3I8UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19FNTI3OScsXG4gICAgZGVzY3JpcHRpb246ICdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcHVibGlzaGluZyB0aGUgYXNzZXQnLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG5cbiAgLy8gV2F0Y2ggKDUzeHgpXG4gIENES19UT09MS0lUX0k1MzEwOiBtYWtlLmRlYnVnPFdhdGNoU2V0dGluZ3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIGNvbXB1dGVkIHNldHRpbmdzIHVzZWQgZm9yIGZpbGUgd2F0Y2hpbmcnLFxuICAgIGludGVyZmFjZTogJ1dhdGNoU2V0dGluZ3MnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTE6IG1ha2UuaW5mbzxGaWxlV2F0Y2hFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMScsXG4gICAgZGVzY3JpcHRpb246ICdGaWxlIHdhdGNoaW5nIHN0YXJ0ZWQnLFxuICAgIGludGVyZmFjZTogJ0ZpbGVXYXRjaEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MzEyOiBtYWtlLmluZm88RmlsZVdhdGNoRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTInLFxuICAgIGRlc2NyaXB0aW9uOiAnRmlsZSBldmVudCBkZXRlY3RlZCwgc3RhcnRpbmcgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnRmlsZVdhdGNoRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTM6IG1ha2UuaW5mbzxGaWxlV2F0Y2hFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMycsXG4gICAgZGVzY3JpcHRpb246ICdGaWxlIGV2ZW50IGRldGVjdGVkIGR1cmluZyBhY3RpdmUgZGVwbG95bWVudCwgY2hhbmdlcyBhcmUgcXVldWVkJyxcbiAgICBpbnRlcmZhY2U6ICdGaWxlV2F0Y2hFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxNDogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTQnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5pdGlhbCB3YXRjaCBkZXBsb3ltZW50IHN0YXJ0ZWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTU6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzE1JyxcbiAgICBkZXNjcmlwdGlvbjogJ1F1ZXVlZCB3YXRjaCBkZXBsb3ltZW50IHN0YXJ0ZWQnLFxuICB9KSxcblxuICAvLyBIb3Rzd2FwICg1NHh4KVxuICBDREtfVE9PTEtJVF9JNTQwMDogbWFrZS50cmFjZTxIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQXR0ZW1wdGluZyBhIGhvdHN3YXAgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnSG90c3dhcERlcGxveW1lbnRBdHRlbXB0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1NDAxOiBtYWtlLnRyYWNlPEhvdHN3YXBEZXBsb3ltZW50RGV0YWlscz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQwMScsXG4gICAgZGVzY3JpcHRpb246ICdDb21wdXRlZCBkZXRhaWxzIGZvciB0aGUgaG90c3dhcCBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwRGVwbG95bWVudERldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MDI6IG1ha2UuaW5mbzxIb3Rzd2FwcGFibGVDaGFuZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBob3Rzd2FwcGFibGUgY2hhbmdlIGlzIHByb2Nlc3NlZCBhcyBwYXJ0IG9mIGEgaG90c3dhcCBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwcGFibGVDaGFuZ2UnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MDM6IG1ha2UuaW5mbzxIb3Rzd2FwcGFibGVDaGFuZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIGhvdHN3YXBwYWJsZSBjaGFuZ2UgaGFzIGNvbXBsZXRlZCBwcm9jZXNzaW5nJyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwcGFibGVDaGFuZ2UnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MTA6IG1ha2UuaW5mbzxIb3Rzd2FwUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0hvdHN3YXAgZGVwbG95bWVudCBoYXMgZW5kZWQsIGEgZnVsbCBkZXBsb3ltZW50IG1pZ2h0IHN0aWxsIGZvbGxvdyBpZiBuZWVkZWQnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBSZXN1bHQnLFxuICB9KSxcblxuICAvLyBTdGFjayBNb25pdG9yICg1NXh4KVxuICBDREtfVE9PTEtJVF9JNTUwMTogbWFrZS5pbmZvPFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTUwMScsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nOiBTdGFydCBtb25pdG9yaW5nIG9mIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja01vbml0b3JpbmdDb250cm9sRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU1MDI6IG1ha2UuaW5mbzxTdGFja0FjdGl2aXR5Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NTAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIE1vbml0b3Jpbmc6IEFjdGl2aXR5IGV2ZW50IGZvciBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tBY3Rpdml0eScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTUwMzogbWFrZS5pbmZvPFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTUwMycsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nOiBGaW5pc2hlZCBtb25pdG9yaW5nIG9mIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja01vbml0b3JpbmdDb250cm9sRXZlbnQnLFxuICB9KSxcblxuICAvLyBTdWNjZXNzICg1OXh4KVxuICBDREtfVE9PTEtJVF9JNTkwMDogbWFrZS5yZXN1bHQ8U3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RlcGxveW1lbnQgcmVzdWx0cyBvbiBzdWNjZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU5MDE6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1OTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dlbmVyaWMgZGVwbG95bWVudCBzdWNjZXNzIG1lc3NhZ2VzJyxcbiAgfSksXG4gIENES19UT09MS0lUX1c1NDAwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XNTQwMCcsXG4gICAgZGVzY3JpcHRpb246ICdIb3Rzd2FwIGRpc2Nsb3N1cmUgbWVzc2FnZScsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U1MDAxOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTUwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnTm8gc3RhY2tzIGZvdW5kJyxcbiAgfSksXG4gIENES19UT09MS0lUX0U1NTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNTUwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nIGVycm9yJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA2OiBSb2xsYmFjayAoNnh4eClcbiAgQ0RLX1RPT0xLSVRfSTYwMDA6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNjAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyByb2xsYmFjayB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTYxMDA6IG1ha2UuaW5mbzxTdGFja1JvbGxiYWNrUHJvZ3Jlc3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTYxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgcm9sbGJhY2sgcHJvZ3Jlc3MnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrUm9sbGJhY2tQcm9ncmVzcycsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U2MDAxOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTYwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnTm8gc3RhY2tzIGZvdW5kJyxcbiAgfSksXG4gIENES19UT09MS0lUX0U2OTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNjkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdSb2xsYmFjayBmYWlsZWQnLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDc6IERlc3Ryb3kgKDd4eHgpXG4gIENES19UT09MS0lUX0k3MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGVzdHJveSB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcwMDE6IG1ha2UudHJhY2U8RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGVzdHJveSB0aW1lIGZvciBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcwMTA6IG1ha2UuY29uZmlybTxDb25maXJtYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3MDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gZGVzdHJveSBzdGFja3MnLFxuICAgIGludGVyZmFjZTogJ0NvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcxMDA6IG1ha2UuaW5mbzxTdGFja0Rlc3Ryb3lQcm9ncmVzcz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkZXN0cm95IHByb2dyZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0Rlc3Ryb3lQcm9ncmVzcycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNzEwMTogbWFrZS50cmFjZTxTdGFja0Rlc3Ryb3k+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcxMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgc3RhY2sgZGVzdHJveWluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEZXN0cm95JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfSTc5MDA6IG1ha2UucmVzdWx0PGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkZWxldGlvbiBzdWNjZWVkZWQnLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U3MDEwOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTcwMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQWN0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byBuZWdhdGl2ZSBjb25maXJtYXRpb24gb2YgcmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FNzkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTc5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGVsZXRpb24gZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA4LiBSZWZhY3RvciAoOHh4eClcbiAgQ0RLX1RPT0xLSVRfRTg5MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U4OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIHJlZmFjdG9yIGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfSTg5MDA6IG1ha2UucmVzdWx0PFJlZmFjdG9yUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k4OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlZmFjdG9yIHJlc3VsdCcsXG4gICAgaW50ZXJmYWNlOiAnUmVmYWN0b3JSZXN1bHQnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JODkxMDogbWFrZS5jb25maXJtPENvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTg5MTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSByZWZhY3RvcicsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX1c4MDEwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XODAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdSZWZhY3RvciBleGVjdXRpb24gbm90IHlldCBzdXBwb3J0ZWQnLFxuICB9KSxcblxuICAvLyBPcnBoYW4gKDg4eHgpXG4gIENES19UT09MS0lUX0k4ODEwOiBtYWtlLmNvbmZpcm08Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JODgxMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIG9ycGhhbiByZXNvdXJjZXMnLFxuICAgIGludGVyZmFjZTogJ0NvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcblxuICAvLyA5OiBCb290c3RyYXAsIGdjLCBmbGFncyAmIHB1Ymxpc2ggKDl4eHgpXG4gIENES19UT09MS0lUX0k5MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgYm9vdHN0cmFwIHRpbWVzJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JOTEwMDogbWFrZS5pbmZvPEJvb3RzdHJhcEVudmlyb25tZW50UHJvZ3Jlc3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIHByb2dyZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdCb290c3RyYXBFbnZpcm9ubWVudFByb2dyZXNzJyxcbiAgfSksXG5cbiAgLy8gZ2MgKDkyeHgpXG4gIENES19UT09MS0lUX0k5MjEwOiBtYWtlLnF1ZXN0aW9uPEFzc2V0QmF0Y2hEZWxldGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkyMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSB0aGUgZGVsZXRpb24gb2YgYSBiYXRjaCBvZiBhc3NldHMnLFxuICAgIGludGVyZmFjZTogJ0Fzc2V0QmF0Y2hEZWxldGlvblJlcXVlc3QnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JOTkwMDogbWFrZS5yZXN1bHQ8eyBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQgfT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdCb290c3RyYXAgcmVzdWx0cyBvbiBzdWNjZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5FbnZpcm9ubWVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FOTkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTk5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gZmxhZ3MgKDkzeHgpXG4gIENES19UT09MS0lUX0k5MzAwOiBtYWtlLmluZm88RmVhdHVyZUZsYWdDaGFuZ2VSZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5MzAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gdGhlIGZlYXR1cmUgZmxhZyBjb25maWd1cmF0aW9uIGNoYW5nZXMnLFxuICAgIGludGVyZmFjZTogJ0ZlYXR1cmVGbGFnQ2hhbmdlUmVxdWVzdCcsXG4gIH0pLFxuXG4gIC8vIHB1Ymxpc2ggKDk0eHgpXG4gIENES19UT09MS0lUX0k5NDAwOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTQwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBbGwgYXNzZXRzIGFyZSBhbHJlYWR5IHB1Ymxpc2hlZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JOTQwMTogbWFrZS5pbmZvPEFzc2V0c1BheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk0MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyBhc3NldHMnLFxuICAgIGludGVyZmFjZTogJ0Fzc2V0c1BheWxvYWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTk0MDI6IG1ha2UucmVzdWx0PEFzc2V0c1BheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk0MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaCBhc3NldHMgcmVzdWx0cyBvbiBzdWNjZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdBc3NldHNQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gZGlhZ25vc2UgKDk1eHgpXG4gIENES19UT09MS0lUX0k5NTAwOiBtYWtlLmluZm88RGlhZ25vc2VkU3RhY2s+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk1MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGlhZ25vc2lzIChubyBwcm9ibGVtcyBmb3VuZCknLFxuICAgIGludGVyZmFjZTogJ0RpYWdub3NlZFN0YWNrJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTk1MDA6IG1ha2UuZXJyb3I8RGlhZ25vc2VkU3RhY2s+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTk1MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGlhZ25vc2lzIChwcm9ibGVtcyBmb3VuZCknLFxuICAgIGludGVyZmFjZTogJ0RpYWdub3NlZFN0YWNrJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfVzk1MDE6IG1ha2Uud2FybjxEaWFnbm9zZWRTdGFjaz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XOTUwMScsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkaWFnbm9zaXMgKGRpYWdub3NpcyBjb3VsZCBub3QgYmUgcGVyZm9ybWVkKScsXG4gICAgaW50ZXJmYWNlOiAnRGlhZ25vc2VkU3RhY2snLFxuICB9KSxcblxuICAvLyB2YWxpZGF0ZSAoOTZ4eClcbiAgQ0RLX1RPT0xLSVRfSTk2MDA6IG1ha2UuaW5mbzxWYWxpZGF0ZVJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTYwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQb2xpY3kgdmFsaWRhdGlvbiBwYXNzZWQnLFxuICAgIGludGVyZmFjZTogJ1ZhbGlkYXRlUmVzdWx0JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTk2MDA6IG1ha2UuZXJyb3I8VmFsaWRhdGVSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTk2MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUG9saWN5IHZhbGlkYXRpb24gZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdWYWxpZGF0ZVJlc3VsdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k5NjAxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTYwMScsXG4gICAgZGVzY3JpcHRpb246ICdObyBwb2xpY3kgdmFsaWRhdGlvbiByZXBvcnQgZm91bmQnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9XOTYwMjogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzk2MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnT25saW5lIHZhbGlkYXRpb24gY291bGQgbm90IGJlIGNvbXBsZXRlZCBmb3IgYSBzdGFjaycsXG4gIH0pLFxuXG4gIC8vIE5vdGljZXNcbiAgQ0RLX1RPT0xLSVRfSTAxMDA6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ05vdGljZXMgZGVjb3JhdGlvbiAodGhlIGhlYWRlciBvciBmb290ZXIgb2YgYSBsaXN0IG9mIG5vdGljZXMpJyxcbiAgfSksXG4gIENES19UT09MS0lUX1cwMTAxOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhIHdhcm5pbmcnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTAxMDE6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhbiBlcnJvcicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMDEwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTAxMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBub3RpY2UgdGhhdCBpcyBtYXJrZWQgYXMgaW5mb3JtYXRpb25hbCcsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IGNvZGVzXG4gIENES19BU1NFTUJMWV9JMDAxMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmljIGVudmlyb25tZW50IHByZXBhcmF0aW9uIGRlYnVnIG1lc3NhZ2VzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XMDAxMDogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1cwMDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0VtaXR0ZWQgaWYgdGhlIGZvdW5kIGZyYW1ld29yayB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgY29udGV4dCBvdmVyZmxvdycsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAwNDI6IG1ha2UuZGVidWc8VXBkYXRlZENvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMDQyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1dyaXRpbmcgY29udGV4dCB1cGRhdGVzJyxcbiAgICBpbnRlcmZhY2U6ICdVcGRhdGVkQ29udGV4dCcsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAyNDA6IG1ha2UuZGVidWc8TWlzc2luZ0NvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMjQwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbnRleHQgbG9va3VwIHdhcyBzdG9wcGVkIGFzIG5vIGZ1cnRoZXIgcHJvZ3Jlc3Mgd2FzIG1hZGUuICcsXG4gICAgaW50ZXJmYWNlOiAnTWlzc2luZ0NvbnRleHQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMjQxOiBtYWtlLmRlYnVnPE1pc3NpbmdDb250ZXh0Pih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDI0MScsXG4gICAgZGVzY3JpcHRpb246ICdGZXRjaGluZyBtaXNzaW5nIGNvbnRleHQuIFRoaXMgaXMgYW4gaXRlcmF0aXZlIG1lc3NhZ2UgdGhhdCBtYXkgYXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1pc3Npbmcga2V5cy4nLFxuICAgIGludGVyZmFjZTogJ01pc3NpbmdDb250ZXh0JyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDbG91ZCBhc3NlbWJseSBvdXRwdXQgc3RhcnRzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRvdXQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0UxMDAyOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRlcnInLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kxMDAzOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTEwMDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWQgYXNzZW1ibHkgb3V0cHV0IGZpbmlzaGVkJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FMTExMTogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMTExJyxcbiAgICBkZXNjcmlwdGlvbjogJ0luY29tcGF0aWJsZSBDREsgQ0xJIHZlcnNpb24uIFVwZ3JhZGUgbmVlZGVkLicsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgQ0RLX0FTU0VNQkxZX0kwMTUwOiBtYWtlLmRlYnVnPG5ldmVyPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDE1MCcsXG4gICAgZGVzY3JpcHRpb246ICdJbmRpY2F0ZXMgdGhlIHVzZSBvZiBhIHByZS1zeW50aGVzaXplZCBjbG91ZCBhc3NlbWJseSBkaXJlY3RvcnknLFxuICB9KSxcblxuICBDREtfQVNTRU1CTFlfSTAzMDA6IG1ha2UuaW5mbzxDb250ZXh0UHJvdmlkZXJNZXNzYWdlU291cmNlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDMwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBbiBpbmZvIG1lc3NhZ2UgZW1pdHRlZCBieSBhIENvbnRleHQgUHJvdmlkZXInLFxuICAgIGludGVyZmFjZTogJ0NvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2UnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMzAxOiBtYWtlLmRlYnVnPENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMzAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgZGVidWcgbWVzc2FnZSBlbWl0dGVkIGJ5IGEgQ29udGV4dCBQcm92aWRlcicsXG4gICAgaW50ZXJmYWNlOiAnQ29udGV4dFByb3ZpZGVyTWVzc2FnZVNvdXJjZScsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IEFubm90YXRpb25zXG4gIENES19BU1NFTUJMWV9JOTk5OTogbWFrZS5pbmZvPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0k5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Fubm90YXRpb25zIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XOTk5OTogbWFrZS53YXJuPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1c5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1dhcm5pbmdzIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FOTk5OTogbWFrZS5lcnJvcjxjeGFwaS5TeW50aGVzaXNNZXNzYWdlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9FOTk5OScsXG4gICAgZGVzY3JpcHRpb246ICdFcnJvcnMgZW1pdHRlZCBieSB0aGUgY2xvdWQgYXNzZW1ibHknLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLlN5bnRoZXNpc01lc3NhZ2UnLFxuICB9KSxcblxuICAvLyBTREsgY29kZXNcbiAgQ0RLX1NES19JMDEwMDogbWFrZS50cmFjZTxTZGtUcmFjZT4oe1xuICAgIGNvZGU6ICdDREtfU0RLX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FuIFNESyB0cmFjZS4gU0RLIHRyYWNlcyBhcmUgZW1pdHRlZCBhcyB0cmFjZXMgdG8gdGhlIElvSG9zdCwgYnV0IGNvbnRhaW4gdGhlIG9yaWdpbmFsIFNESyBsb2dnaW5nIGxldmVsLicsXG4gICAgaW50ZXJmYWNlOiAnU2RrVHJhY2UnLFxuICB9KSxcbiAgQ0RLX1NES19JMTEwMDogbWFrZS5xdWVzdGlvbjxNZmFUb2tlblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1NES19JMTEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYW4gTUZBIHRva2VuIGZvciBhbiBNRkEgZGV2aWNlLicsXG4gICAgaW50ZXJmYWNlOiAnTWZhVG9rZW5SZXF1ZXN0JyxcbiAgfSksXG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqXG4gKiBQYXlsb2FkIHR5cGUgb2YgdGhlIGVuZCBtZXNzYWdlIG11c3QgZXh0ZW5kIER1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBTUEFOID0ge1xuICBTWU5USF9BU1NFTUJMWToge1xuICAgIG5hbWU6ICdTeW50aGVzaXMnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JMTAwMSxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0kxMDAwLFxuICB9LFxuICBERVBMT1lfU1RBQ0s6IHtcbiAgICBuYW1lOiAnRGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1MTAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTUwMDEsXG4gIH0sXG4gIFJPTExCQUNLX1NUQUNLOiB7XG4gICAgbmFtZTogJ1JvbGxiYWNrJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTYxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNjAwMCxcbiAgfSxcbiAgRElGRl9TVEFDSzoge1xuICAgIG5hbWU6ICdEaWZmJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDAwMSxcbiAgfSxcbiAgRFJJRlRfQVBQOiB7XG4gICAgbmFtZTogJ0RyaWZ0JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDUwOSxcbiAgfSxcbiAgREVTVFJPWV9TVEFDSzoge1xuICAgIG5hbWU6ICdEZXN0cm95JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTcxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNzAwMSxcbiAgfSxcbiAgREVTVFJPWV9BQ1RJT046IHtcbiAgICBuYW1lOiAnRGVzdHJveScsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k3MTAxLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTcwMDAsXG4gIH0sXG4gIEJPT1RTVFJBUF9TSU5HTEU6IHtcbiAgICBuYW1lOiAnQm9vdHN0cmFwJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTkxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JOTAwMCxcbiAgfSxcbiAgQlVJTERfQVNTRVQ6IHtcbiAgICBuYW1lOiAnQnVpbGQgQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIxMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjExLFxuICB9LFxuICBQVUJMSVNIX0FTU0VUOiB7XG4gICAgbmFtZTogJ1B1Ymxpc2ggQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIyMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjIxLFxuICB9LFxuICBIT1RTV0FQOiB7XG4gICAgbmFtZTogJ2hvdHN3YXAtZGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1NDAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTU0MTAsXG4gIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBTcGFuRGVmaW5pdGlvbjxhbnksIGFueT4+O1xuIl19
629
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3Q0FBd0M7QUFrQ3hDOzs7OztHQUtHO0FBQ1UsUUFBQSxFQUFFLEdBQUc7SUFDaEIsb0JBQW9CO0lBQ3BCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsNEJBQTRCO0tBQzFDLENBQUM7SUFFRixrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBWTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsU0FBUyxFQUFFLFdBQVc7S0FDdkIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQXdCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUF1QjtRQUNuRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBZTtRQUMzQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFzQjtRQUNsRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxnRUFBZ0U7UUFDN0UsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQyxDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFFLElB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QWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxVQUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLGFBQWE7UUFDbkIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7SUFDRCxhQUFhLEVBQUU7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7Q0FDaUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpJztcbmltcG9ydCAqIGFzIG1ha2UgZnJvbSAnLi9tZXNzYWdlLW1ha2VyJztcbmltcG9ydCB0eXBlIHsgU3BhbkRlZmluaXRpb24gfSBmcm9tICcuL3NwYW4nO1xuaW1wb3J0IHR5cGUgeyBEaWFnbm9zZWRTdGFjayB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvZGlhZ25vc2UnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0ZVJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvdmFsaWRhdGUnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0RpZmYsIERpZmZSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcyc7XG5pbXBvcnQgdHlwZSB7IEJvb3RzdHJhcEVudmlyb25tZW50UHJvZ3Jlc3MgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9ib290c3RyYXAtZW52aXJvbm1lbnQtcHJvZ3Jlc3MnO1xuaW1wb3J0IHR5cGUgeyBNaXNzaW5nQ29udGV4dCwgVXBkYXRlZENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgQnVpbGRBc3NldCwgRGVwbG95Q29uZmlybWF0aW9uUmVxdWVzdCwgUHVibGlzaEFzc2V0LCBQdWJsaXNoQXNzZXRFdmVudCwgU3RhY2tEZXBsb3lQcm9ncmVzcywgU3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZGVwbG95JztcbmltcG9ydCB0eXBlIHsgU3RhY2tEZXN0cm95LCBTdGFja0Rlc3Ryb3lQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2Rlc3Ryb3knO1xuaW1wb3J0IHR5cGUgeyBEcmlmdFJlc3VsdFBheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9kcmlmdCc7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnQ2hhbmdlUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2ZsYWdzJztcbmltcG9ydCB0eXBlIHsgQXNzZXRCYXRjaERlbGV0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2djJztcbmltcG9ydCB0eXBlIHsgSG90c3dhcERlcGxveW1lbnREZXRhaWxzLCBIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQsIEhvdHN3YXBwYWJsZUNoYW5nZSwgSG90c3dhcFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2hvdHN3YXAnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUlkZW50aWZpY2F0aW9uUmVxdWVzdCwgUmVzb3VyY2VJbXBvcnRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvaW1wb3J0JztcbmltcG9ydCB0eXBlIHsgU3RhY2tEZXRhaWxzUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2xpc3QnO1xuaW1wb3J0IHR5cGUgeyBDbG91ZFdhdGNoTG9nRXZlbnQsIENsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvbG9ncy1tb25pdG9yJztcbmltcG9ydCB0eXBlIHsgQXNzZXRzUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3B1Ymxpc2gtYXNzZXRzJztcbmltcG9ydCB0eXBlIHsgUmVmYWN0b3JSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9yZWZhY3Rvcic7XG5pbXBvcnQgdHlwZSB7IFN0YWNrUm9sbGJhY2tQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3JvbGxiYWNrJztcbmltcG9ydCB0eXBlIHsgTWZhVG9rZW5SZXF1ZXN0LCBTZGtUcmFjZSB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3Nkayc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrQWN0aXZpdHksIFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3N0YWNrLWFjdGl2aXR5JztcbmltcG9ydCB0eXBlIHsgU3RhY2tTZWxlY3Rpb25EZXRhaWxzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvc3ludGgnO1xuaW1wb3J0IHR5cGUge1xuICBBc3NlbWJseURhdGEsXG4gIENvbmZpcm1hdGlvblJlcXVlc3QsXG4gIENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2UsXG4gIER1cmF0aW9uLFxuICBFcnJvclBheWxvYWQsXG4gIE9wZXJhdGlvbixcbiAgU2luZ2xlU3RhY2ssXG4gIFN0YWNrQW5kQXNzZW1ibHlEYXRhLFxufSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVXYXRjaEV2ZW50LCBXYXRjaFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvd2F0Y2gnO1xuXG4vKipcbiAqIFdlIGhhdmUgYSByb3VnaCBzeXN0ZW0gYnkgd2hpY2ggd2UgYXNzaWduIG1lc3NhZ2UgY29kZXM6XG4gKiAtIEZpcnN0IGRpZ2l0IGdyb3VwcyBtZXNzYWdlcyBieSBhY3Rpb24sIGUuZy4gc3ludGggb3IgZGVwbG95XG4gKiAtIFgwMDAtWDAwOSBhcmUgcmVzZXJ2ZWQgZm9yIHRpbWluZ3NcbiAqIC0gWDkwMC1YOTk5IGFyZSByZXNlcnZlZCBmb3IgcmVzdWx0c1xuICovXG5leHBvcnQgY29uc3QgSU8gPSB7XG4gIC8vIHdhcm5pbmdzICYgZXJyb3JzXG4gIENES19UT09MS0lUX1cwMTAwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XMDEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDcmVkZW50aWFsIHBsdWdpbiB3YXJuaW5ncycsXG4gIH0pLFxuXG4gIC8vIDE6IFN5bnRoICgxeHh4KVxuICBDREtfVE9PTEtJVF9JMTAwMDogbWFrZS5pbmZvPE9wZXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBzeW50aGVzaXMgdGltZXMuJyxcbiAgICBpbnRlcmZhY2U6ICdPcGVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTEwMDE6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Nsb3VkIEFzc2VtYmx5IHN5bnRoZXNpcyBpcyBzdGFydGluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tTZWxlY3Rpb25EZXRhaWxzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0kxOTAxOiBtYWtlLnJlc3VsdDxTdGFja0FuZEFzc2VtYmx5RGF0YT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTkwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBzdGFjayBkYXRhJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0FuZEFzc2VtYmx5RGF0YScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMTkwMjogbWFrZS5yZXN1bHQ8QXNzZW1ibHlEYXRhPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxOTAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N1Y2Nlc3NmdWxseSBkZXBsb3llZCBzdGFja3MnLFxuICAgIGludGVyZmFjZTogJ0Fzc2VtYmx5RGF0YScsXG4gIH0pLFxuXG4gIC8vIDI6IExpc3QgKDJ4eHgpXG4gIENES19UT09MS0lUX0kyOTAxOiBtYWtlLnJlc3VsdDxTdGFja0RldGFpbHNQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kyOTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIGRldGFpbHMgb24gdGhlIHNlbGVjdGVkIHN0YWNrcyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0RldGFpbHNQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gMzogSW1wb3J0ICYgTWlncmF0ZVxuICBDREtfVE9PTEtJVF9JMzEwMDogbWFrZS5jb25maXJtPFJlc291cmNlSW1wb3J0UmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMzEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHRoZSBpbXBvcnQgb2YgYSBzcGVjaWZpYyByZXNvdXJjZScsXG4gICAgaW50ZXJmYWNlOiAnUmVzb3VyY2VJbXBvcnRSZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0kzMTEwOiBtYWtlLnF1ZXN0aW9uPFJlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kzMTEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXMgbmVlZGVkIHRvIGlkZW50aWZ5IGEgcmVzb3VyY2UnLFxuICAgIGludGVyZmFjZTogJ1Jlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0UzOTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FMzkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdSZXNvdXJjZSBpbXBvcnQgZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA0OiBEaWZmICg0MHh4IC0gNDR4eClcbiAgQ0RLX1RPT0xLSVRfSTQwMDA6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0MDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RpZmYgc3RhY2tzIGlzIHN0YXJ0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja1NlbGVjdGlvbkRldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQwMDE6IG1ha2UucmVzdWx0PERpZmZSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnT3V0cHV0IG9mIHRoZSBkaWZmIGNvbW1hbmQnLFxuICAgIGludGVyZmFjZTogJ0RpZmZSZXN1bHQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQwMDI6IG1ha2UucmVzdWx0PFN0YWNrRGlmZj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDAwMicsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgZGlmZiBmb3IgYSBzaW5nbGUgc3RhY2snLFxuICAgIGludGVyZmFjZTogJ1N0YWNrRGlmZicsXG4gIH0pLFxuXG4gIC8vIDQ6IERyaWZ0ICg0NXh4IC0gNDl4eClcbiAgQ0RLX1RPT0xLSVRfSTQ1MDA6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0NTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RyaWZ0IGRldGVjdGlvbiBpcyBzdGFydGluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tTZWxlY3Rpb25EZXRhaWxzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k0NTA5OiBtYWtlLnJlc3VsdDxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDU5MicsXG4gICAgZGVzY3JpcHRpb246ICdSZXN1bHRzIG9mIHRoZSBkcmlmdCcsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQ1OTA6IG1ha2UucmVzdWx0PERyaWZ0UmVzdWx0UGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDU5MCcsXG4gICAgZGVzY3JpcHRpb246ICdSZXN1bHRzIG9mIGEgc3RhY2sgZHJpZnQnLFxuICAgIGludGVyZmFjZTogJ0RyaWZ0UmVzdWx0UGF5bG9hZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9XNDU5MTogbWFrZS53YXJuPFNpbmdsZVN0YWNrPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c0NTkxJyxcbiAgICBkZXNjcmlwdGlvbjogJ01pc3NpbmcgZHJpZnQgcmVzdWx0IGZvcnQgYSBzdGFjay4nLFxuICAgIGludGVyZmFjZTogJ1NpbmdsZVN0YWNrJyxcbiAgfSksXG5cbiAgLy8gNTogRGVwbG95ICYgV2F0Y2ggKDV4eHgpXG4gIENES19UT09MS0lUX0k1MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGVwbG95bWVudCB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMDE6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyB0b3RhbCB0aW1lIGluIGRlcGxveSBhY3Rpb24sIGluY2x1ZGluZyBzeW50aCBhbmQgcm9sbGJhY2snLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDAyOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMDInLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgdGltZSBmb3IgcmVzb3VyY2UgbWlncmF0aW9uJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9XNTAyMTogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzUwMjEnLFxuICAgIGRlc2NyaXB0aW9uOiAnRW1wdHkgbm9uLWV4aXN0ZW50IHN0YWNrLCBkZXBsb3ltZW50IGlzIHNraXBwZWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfVzUwMjI6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c1MDIyJyxcbiAgICBkZXNjcmlwdGlvbjogJ0VtcHR5IGV4aXN0aW5nIHN0YWNrLCBzdGFjayB3aWxsIGJlIGRlc3Ryb3llZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMzEnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5mb3JtcyBhYm91dCBhbnkgbG9nIGdyb3VwcyB0aGF0IGFyZSB0cmFjZWQgYXMgcGFydCBvZiB0aGUgZGVwbG95bWVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzMjogbWFrZS5kZWJ1ZzxDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAzMicsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydCBtb25pdG9yaW5nIGxvZyBncm91cHMnLFxuICAgIGludGVyZmFjZTogJ0Nsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDMzOiBtYWtlLmluZm88Q2xvdWRXYXRjaExvZ0V2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDMzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgbG9nIGV2ZW50IHJlY2VpdmVkIGZyb20gQ2xvdWQgV2F0Y2gnLFxuICAgIGludGVyZmFjZTogJ0Nsb3VkV2F0Y2hMb2dFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzNDogbWFrZS5kZWJ1ZzxDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAzNCcsXG4gICAgZGVzY3JpcHRpb246ICdTdG9wIG1vbml0b3JpbmcgbG9nIGdyb3VwcycsXG4gICAgaW50ZXJmYWNlOiAnQ2xvdWRXYXRjaExvZ01vbml0b3JDb250cm9sRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTUwMzU6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U1MDM1JyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgbG9nIG1vbml0b3JpbmcgZXJyb3InLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTA1MDogbWFrZS5jb25maXJtPENvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwNTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSByb2xsYmFjayBkdXJpbmcgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTA2MDogbWFrZS5jb25maXJtPERlcGxveUNvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwNjAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSBkZXBsb3kgc2VjdXJpdHkgc2Vuc2l0aXZlIGNoYW5nZXMnLFxuICAgIGludGVyZmFjZTogJ0RlcGxveUNvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUxMDA6IG1ha2UuaW5mbzxTdGFja0RlcGxveVByb2dyZXNzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRlcGxveSBwcm9ncmVzcycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEZXBsb3lQcm9ncmVzcycsXG4gIH0pLFxuXG4gIC8vIEFzc2V0cyAoNTJ4eClcbiAgQ0RLX1RPT0xLSVRfSTUyMTA6IG1ha2UudHJhY2U8QnVpbGRBc3NldD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTIxMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydGVkIGJ1aWxkaW5nIGEgc3BlY2lmaWMgYXNzZXQnLFxuICAgIGludGVyZmFjZTogJ0J1aWxkQXNzZXQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUyMTE6IG1ha2UudHJhY2U8RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUyMTEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQnVpbGRpbmcgdGhlIGFzc2V0IGhhcyBjb21wbGV0ZWQnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MjIwOiBtYWtlLnRyYWNlPFB1Ymxpc2hBc3NldD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTIyMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydGVkIHB1Ymxpc2hpbmcgYSBzcGVjaWZpYyBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MjIxOiBtYWtlLnRyYWNlPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MjIxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hpbmcgdGhlIGFzc2V0IGhhcyBjb21wbGV0ZWQnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG5cbiAgQ0RLX0FTU0VUU19JNTI3MDogbWFrZS5pbmZvPFB1Ymxpc2hBc3NldEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19BU1NFVFNfSTUyNzAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyB0aGUgYXNzZXQgaGFzIHN0YXJ0ZWQnLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG4gIENES19BU1NFVFNfSTUyNzE6IG1ha2UuZGVidWc8UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19JNTI3MScsXG4gICAgZGVzY3JpcHRpb246ICdEZWJ1ZyBtZXNzYWdlZCBlbWl0dGVkIGR1cmluZyBwdWJsaXNoaW5nIG9mIHRoZSBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0RXZlbnQnLFxuICB9KSxcbiAgQ0RLX0FTU0VUU19JNTI3NTogbWFrZS5pbmZvPFB1Ymxpc2hBc3NldEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19BU1NFVFNfSTUyNzUnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyB0aGUgYXNzZXQgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG4gIENES19BU1NFVFNfRTUyNzk6IG1ha2UuZXJyb3I8UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19FNTI3OScsXG4gICAgZGVzY3JpcHRpb246ICdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcHVibGlzaGluZyB0aGUgYXNzZXQnLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG5cbiAgLy8gV2F0Y2ggKDUzeHgpXG4gIENES19UT09MS0lUX0k1MzEwOiBtYWtlLmRlYnVnPFdhdGNoU2V0dGluZ3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIGNvbXB1dGVkIHNldHRpbmdzIHVzZWQgZm9yIGZpbGUgd2F0Y2hpbmcnLFxuICAgIGludGVyZmFjZTogJ1dhdGNoU2V0dGluZ3MnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTE6IG1ha2UuaW5mbzxGaWxlV2F0Y2hFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMScsXG4gICAgZGVzY3JpcHRpb246ICdGaWxlIHdhdGNoaW5nIHN0YXJ0ZWQnLFxuICAgIGludGVyZmFjZTogJ0ZpbGVXYXRjaEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MzEyOiBtYWtlLmluZm88RmlsZVdhdGNoRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTInLFxuICAgIGRlc2NyaXB0aW9uOiAnRmlsZSBldmVudCBkZXRlY3RlZCwgc3RhcnRpbmcgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnRmlsZVdhdGNoRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTM6IG1ha2UuaW5mbzxGaWxlV2F0Y2hFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMycsXG4gICAgZGVzY3JpcHRpb246ICdGaWxlIGV2ZW50IGRldGVjdGVkIGR1cmluZyBhY3RpdmUgZGVwbG95bWVudCwgY2hhbmdlcyBhcmUgcXVldWVkJyxcbiAgICBpbnRlcmZhY2U6ICdGaWxlV2F0Y2hFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxNDogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTQnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5pdGlhbCB3YXRjaCBkZXBsb3ltZW50IHN0YXJ0ZWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTU6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzE1JyxcbiAgICBkZXNjcmlwdGlvbjogJ1F1ZXVlZCB3YXRjaCBkZXBsb3ltZW50IHN0YXJ0ZWQnLFxuICB9KSxcblxuICAvLyBIb3Rzd2FwICg1NHh4KVxuICBDREtfVE9PTEtJVF9JNTQwMDogbWFrZS50cmFjZTxIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQXR0ZW1wdGluZyBhIGhvdHN3YXAgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnSG90c3dhcERlcGxveW1lbnRBdHRlbXB0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1NDAxOiBtYWtlLnRyYWNlPEhvdHN3YXBEZXBsb3ltZW50RGV0YWlscz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQwMScsXG4gICAgZGVzY3JpcHRpb246ICdDb21wdXRlZCBkZXRhaWxzIGZvciB0aGUgaG90c3dhcCBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwRGVwbG95bWVudERldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MDI6IG1ha2UuaW5mbzxIb3Rzd2FwcGFibGVDaGFuZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBob3Rzd2FwcGFibGUgY2hhbmdlIGlzIHByb2Nlc3NlZCBhcyBwYXJ0IG9mIGEgaG90c3dhcCBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwcGFibGVDaGFuZ2UnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MDM6IG1ha2UuaW5mbzxIb3Rzd2FwcGFibGVDaGFuZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIGhvdHN3YXBwYWJsZSBjaGFuZ2UgaGFzIGNvbXBsZXRlZCBwcm9jZXNzaW5nJyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwcGFibGVDaGFuZ2UnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MTA6IG1ha2UuaW5mbzxIb3Rzd2FwUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0hvdHN3YXAgZGVwbG95bWVudCBoYXMgZW5kZWQsIGEgZnVsbCBkZXBsb3ltZW50IG1pZ2h0IHN0aWxsIGZvbGxvdyBpZiBuZWVkZWQnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBSZXN1bHQnLFxuICB9KSxcblxuICAvLyBTdGFjayBNb25pdG9yICg1NXh4KVxuICBDREtfVE9PTEtJVF9JNTUwMTogbWFrZS5pbmZvPFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTUwMScsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nOiBTdGFydCBtb25pdG9yaW5nIG9mIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja01vbml0b3JpbmdDb250cm9sRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU1MDI6IG1ha2UuaW5mbzxTdGFja0FjdGl2aXR5Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NTAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIE1vbml0b3Jpbmc6IEFjdGl2aXR5IGV2ZW50IGZvciBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tBY3Rpdml0eScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTUwMzogbWFrZS5pbmZvPFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTUwMycsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nOiBGaW5pc2hlZCBtb25pdG9yaW5nIG9mIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja01vbml0b3JpbmdDb250cm9sRXZlbnQnLFxuICB9KSxcblxuICAvLyBTdWNjZXNzICg1OXh4KVxuICBDREtfVE9PTEtJVF9JNTkwMDogbWFrZS5yZXN1bHQ8U3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RlcGxveW1lbnQgcmVzdWx0cyBvbiBzdWNjZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU5MDE6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1OTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dlbmVyaWMgZGVwbG95bWVudCBzdWNjZXNzIG1lc3NhZ2VzJyxcbiAgfSksXG4gIENES19UT09MS0lUX1c1NDAwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XNTQwMCcsXG4gICAgZGVzY3JpcHRpb246ICdIb3Rzd2FwIGRpc2Nsb3N1cmUgbWVzc2FnZScsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U1MDAxOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTUwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnTm8gc3RhY2tzIGZvdW5kJyxcbiAgfSksXG4gIENES19UT09MS0lUX0U1NTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNTUwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nIGVycm9yJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA2OiBSb2xsYmFjayAoNnh4eClcbiAgQ0RLX1RPT0xLSVRfSTYwMDA6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNjAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyByb2xsYmFjayB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTYxMDA6IG1ha2UuaW5mbzxTdGFja1JvbGxiYWNrUHJvZ3Jlc3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTYxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgcm9sbGJhY2sgcHJvZ3Jlc3MnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrUm9sbGJhY2tQcm9ncmVzcycsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U2MDAxOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTYwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnTm8gc3RhY2tzIGZvdW5kJyxcbiAgfSksXG4gIENES19UT09MS0lUX0U2OTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNjkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdSb2xsYmFjayBmYWlsZWQnLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDc6IERlc3Ryb3kgKDd4eHgpXG4gIENES19UT09MS0lUX0k3MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGVzdHJveSB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcwMDE6IG1ha2UudHJhY2U8RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGVzdHJveSB0aW1lIGZvciBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcwMTA6IG1ha2UuY29uZmlybTxDb25maXJtYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3MDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gZGVzdHJveSBzdGFja3MnLFxuICAgIGludGVyZmFjZTogJ0NvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcxMDA6IG1ha2UuaW5mbzxTdGFja0Rlc3Ryb3lQcm9ncmVzcz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkZXN0cm95IHByb2dyZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0Rlc3Ryb3lQcm9ncmVzcycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNzEwMTogbWFrZS50cmFjZTxTdGFja0Rlc3Ryb3k+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcxMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgc3RhY2sgZGVzdHJveWluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEZXN0cm95JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfSTc5MDA6IG1ha2UucmVzdWx0PGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkZWxldGlvbiBzdWNjZWVkZWQnLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U3MDEwOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTcwMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQWN0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byBuZWdhdGl2ZSBjb25maXJtYXRpb24gb2YgcmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FNzkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTc5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGVsZXRpb24gZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA4LiBSZWZhY3RvciAoOHh4eClcbiAgQ0RLX1RPT0xLSVRfRTg5MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U4OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIHJlZmFjdG9yIGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfSTg5MDA6IG1ha2UucmVzdWx0PFJlZmFjdG9yUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k4OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlZmFjdG9yIHJlc3VsdCcsXG4gICAgaW50ZXJmYWNlOiAnUmVmYWN0b3JSZXN1bHQnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JODkxMDogbWFrZS5jb25maXJtPENvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTg5MTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSByZWZhY3RvcicsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX1c4MDEwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XODAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdSZWZhY3RvciBleGVjdXRpb24gbm90IHlldCBzdXBwb3J0ZWQnLFxuICB9KSxcblxuICAvLyBPcnBoYW4gKDg4eHgpXG4gIENES19UT09MS0lUX0k4ODEwOiBtYWtlLmNvbmZpcm08Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JODgxMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIG9ycGhhbiByZXNvdXJjZXMnLFxuICAgIGludGVyZmFjZTogJ0NvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcblxuICAvLyA5OiBCb290c3RyYXAsIGdjLCBmbGFncyAmIHB1Ymxpc2ggKDl4eHgpXG4gIENES19UT09MS0lUX0k5MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgYm9vdHN0cmFwIHRpbWVzJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JOTEwMDogbWFrZS5pbmZvPEJvb3RzdHJhcEVudmlyb25tZW50UHJvZ3Jlc3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIHByb2dyZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdCb290c3RyYXBFbnZpcm9ubWVudFByb2dyZXNzJyxcbiAgfSksXG5cbiAgLy8gZ2MgKDkyeHgpXG4gIENES19UT09MS0lUX0k5MjEwOiBtYWtlLnF1ZXN0aW9uPEFzc2V0QmF0Y2hEZWxldGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkyMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSB0aGUgZGVsZXRpb24gb2YgYSBiYXRjaCBvZiBhc3NldHMnLFxuICAgIGludGVyZmFjZTogJ0Fzc2V0QmF0Y2hEZWxldGlvblJlcXVlc3QnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JOTkwMDogbWFrZS5yZXN1bHQ8eyBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQgfT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdCb290c3RyYXAgcmVzdWx0cyBvbiBzdWNjZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5FbnZpcm9ubWVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FOTkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTk5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gZmxhZ3MgKDkzeHgpXG4gIENES19UT09MS0lUX0k5MzAwOiBtYWtlLmluZm88RmVhdHVyZUZsYWdDaGFuZ2VSZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5MzAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gdGhlIGZlYXR1cmUgZmxhZyBjb25maWd1cmF0aW9uIGNoYW5nZXMnLFxuICAgIGludGVyZmFjZTogJ0ZlYXR1cmVGbGFnQ2hhbmdlUmVxdWVzdCcsXG4gIH0pLFxuXG4gIC8vIHB1Ymxpc2ggKDk0eHgpXG4gIENES19UT09MS0lUX0k5NDAwOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTQwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBbGwgYXNzZXRzIGFyZSBhbHJlYWR5IHB1Ymxpc2hlZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JOTQwMTogbWFrZS5pbmZvPEFzc2V0c1BheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk0MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyBhc3NldHMnLFxuICAgIGludGVyZmFjZTogJ0Fzc2V0c1BheWxvYWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTk0MDI6IG1ha2UucmVzdWx0PEFzc2V0c1BheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk0MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaCBhc3NldHMgcmVzdWx0cyBvbiBzdWNjZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdBc3NldHNQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gZGlhZ25vc2UgKDk1eHgpXG4gIENES19UT09MS0lUX0k5NTAwOiBtYWtlLmluZm88RGlhZ25vc2VkU3RhY2s+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk1MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGlhZ25vc2lzIChubyBwcm9ibGVtcyBmb3VuZCknLFxuICAgIGludGVyZmFjZTogJ0RpYWdub3NlZFN0YWNrJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTk1MDA6IG1ha2UuZXJyb3I8RGlhZ25vc2VkU3RhY2s+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTk1MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGlhZ25vc2lzIChwcm9ibGVtcyBmb3VuZCknLFxuICAgIGludGVyZmFjZTogJ0RpYWdub3NlZFN0YWNrJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfVzk1MDE6IG1ha2Uud2FybjxEaWFnbm9zZWRTdGFjaz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XOTUwMScsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkaWFnbm9zaXMgKGRpYWdub3NpcyBjb3VsZCBub3QgYmUgcGVyZm9ybWVkKScsXG4gICAgaW50ZXJmYWNlOiAnRGlhZ25vc2VkU3RhY2snLFxuICB9KSxcblxuICAvLyB2YWxpZGF0ZSAoOTZ4eClcbiAgQ0RLX1RPT0xLSVRfSTk2MDA6IG1ha2UuaW5mbzxWYWxpZGF0ZVJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTYwMCcsXG4gICAgZGVzY3JpcHRpb246ICdWYWxpZGF0aW9uIGRpZCBub3QgZmluZCBhbnkgcHJvYmxlbXMnLFxuICAgIGludGVyZmFjZTogJ1ZhbGlkYXRlUmVzdWx0JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTk2MDA6IG1ha2UuZXJyb3I8VmFsaWRhdGVSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTk2MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUG9saWN5IHZhbGlkYXRpb24gZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdWYWxpZGF0ZVJlc3VsdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k5NjAxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTYwMScsXG4gICAgZGVzY3JpcHRpb246ICdObyBwb2xpY3kgdmFsaWRhdGlvbiByZXBvcnQgZm91bmQnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9XOTYwMjogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzk2MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnT25saW5lIHZhbGlkYXRpb24gY291bGQgbm90IGJlIGNvbXBsZXRlZCBmb3IgYSBzdGFjaycsXG4gIH0pLFxuXG4gIC8vIE5vdGljZXNcbiAgQ0RLX1RPT0xLSVRfSTAxMDA6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ05vdGljZXMgZGVjb3JhdGlvbiAodGhlIGhlYWRlciBvciBmb290ZXIgb2YgYSBsaXN0IG9mIG5vdGljZXMpJyxcbiAgfSksXG4gIENES19UT09MS0lUX1cwMTAxOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhIHdhcm5pbmcnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTAxMDE6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhbiBlcnJvcicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMDEwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTAxMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBub3RpY2UgdGhhdCBpcyBtYXJrZWQgYXMgaW5mb3JtYXRpb25hbCcsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IGNvZGVzXG4gIENES19BU1NFTUJMWV9JMDAxMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmljIGVudmlyb25tZW50IHByZXBhcmF0aW9uIGRlYnVnIG1lc3NhZ2VzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XMDAxMDogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1cwMDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0VtaXR0ZWQgaWYgdGhlIGZvdW5kIGZyYW1ld29yayB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgY29udGV4dCBvdmVyZmxvdycsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAwNDI6IG1ha2UuZGVidWc8VXBkYXRlZENvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMDQyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1dyaXRpbmcgY29udGV4dCB1cGRhdGVzJyxcbiAgICBpbnRlcmZhY2U6ICdVcGRhdGVkQ29udGV4dCcsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAyNDA6IG1ha2UuZGVidWc8TWlzc2luZ0NvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMjQwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbnRleHQgbG9va3VwIHdhcyBzdG9wcGVkIGFzIG5vIGZ1cnRoZXIgcHJvZ3Jlc3Mgd2FzIG1hZGUuICcsXG4gICAgaW50ZXJmYWNlOiAnTWlzc2luZ0NvbnRleHQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMjQxOiBtYWtlLmRlYnVnPE1pc3NpbmdDb250ZXh0Pih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDI0MScsXG4gICAgZGVzY3JpcHRpb246ICdGZXRjaGluZyBtaXNzaW5nIGNvbnRleHQuIFRoaXMgaXMgYW4gaXRlcmF0aXZlIG1lc3NhZ2UgdGhhdCBtYXkgYXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1pc3Npbmcga2V5cy4nLFxuICAgIGludGVyZmFjZTogJ01pc3NpbmdDb250ZXh0JyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDbG91ZCBhc3NlbWJseSBvdXRwdXQgc3RhcnRzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRvdXQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0UxMDAyOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRlcnInLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kxMDAzOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTEwMDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWQgYXNzZW1ibHkgb3V0cHV0IGZpbmlzaGVkJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FMTExMTogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMTExJyxcbiAgICBkZXNjcmlwdGlvbjogJ0luY29tcGF0aWJsZSBDREsgQ0xJIHZlcnNpb24uIFVwZ3JhZGUgbmVlZGVkLicsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgQ0RLX0FTU0VNQkxZX0kwMTUwOiBtYWtlLmRlYnVnPG5ldmVyPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDE1MCcsXG4gICAgZGVzY3JpcHRpb246ICdJbmRpY2F0ZXMgdGhlIHVzZSBvZiBhIHByZS1zeW50aGVzaXplZCBjbG91ZCBhc3NlbWJseSBkaXJlY3RvcnknLFxuICB9KSxcblxuICBDREtfQVNTRU1CTFlfSTAzMDA6IG1ha2UuaW5mbzxDb250ZXh0UHJvdmlkZXJNZXNzYWdlU291cmNlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDMwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBbiBpbmZvIG1lc3NhZ2UgZW1pdHRlZCBieSBhIENvbnRleHQgUHJvdmlkZXInLFxuICAgIGludGVyZmFjZTogJ0NvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2UnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMzAxOiBtYWtlLmRlYnVnPENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMzAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgZGVidWcgbWVzc2FnZSBlbWl0dGVkIGJ5IGEgQ29udGV4dCBQcm92aWRlcicsXG4gICAgaW50ZXJmYWNlOiAnQ29udGV4dFByb3ZpZGVyTWVzc2FnZVNvdXJjZScsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IEFubm90YXRpb25zXG4gIENES19BU1NFTUJMWV9JOTk5OTogbWFrZS5pbmZvPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0k5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Fubm90YXRpb25zIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XOTk5OTogbWFrZS53YXJuPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1c5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1dhcm5pbmdzIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FOTk5OTogbWFrZS5lcnJvcjxjeGFwaS5TeW50aGVzaXNNZXNzYWdlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9FOTk5OScsXG4gICAgZGVzY3JpcHRpb246ICdFcnJvcnMgZW1pdHRlZCBieSB0aGUgY2xvdWQgYXNzZW1ibHknLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLlN5bnRoZXNpc01lc3NhZ2UnLFxuICB9KSxcblxuICAvLyBTREsgY29kZXNcbiAgQ0RLX1NES19JMDEwMDogbWFrZS50cmFjZTxTZGtUcmFjZT4oe1xuICAgIGNvZGU6ICdDREtfU0RLX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FuIFNESyB0cmFjZS4gU0RLIHRyYWNlcyBhcmUgZW1pdHRlZCBhcyB0cmFjZXMgdG8gdGhlIElvSG9zdCwgYnV0IGNvbnRhaW4gdGhlIG9yaWdpbmFsIFNESyBsb2dnaW5nIGxldmVsLicsXG4gICAgaW50ZXJmYWNlOiAnU2RrVHJhY2UnLFxuICB9KSxcbiAgQ0RLX1NES19JMTEwMDogbWFrZS5xdWVzdGlvbjxNZmFUb2tlblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1NES19JMTEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYW4gTUZBIHRva2VuIGZvciBhbiBNRkEgZGV2aWNlLicsXG4gICAgaW50ZXJmYWNlOiAnTWZhVG9rZW5SZXF1ZXN0JyxcbiAgfSksXG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqXG4gKiBQYXlsb2FkIHR5cGUgb2YgdGhlIGVuZCBtZXNzYWdlIG11c3QgZXh0ZW5kIER1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBTUEFOID0ge1xuICBTWU5USF9BU1NFTUJMWToge1xuICAgIG5hbWU6ICdTeW50aGVzaXMnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JMTAwMSxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0kxMDAwLFxuICB9LFxuICBERVBMT1lfU1RBQ0s6IHtcbiAgICBuYW1lOiAnRGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1MTAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTUwMDEsXG4gIH0sXG4gIFJPTExCQUNLX1NUQUNLOiB7XG4gICAgbmFtZTogJ1JvbGxiYWNrJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTYxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNjAwMCxcbiAgfSxcbiAgRElGRl9TVEFDSzoge1xuICAgIG5hbWU6ICdEaWZmJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDAwMSxcbiAgfSxcbiAgRFJJRlRfQVBQOiB7XG4gICAgbmFtZTogJ0RyaWZ0JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDUwOSxcbiAgfSxcbiAgREVTVFJPWV9TVEFDSzoge1xuICAgIG5hbWU6ICdEZXN0cm95JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTcxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNzAwMSxcbiAgfSxcbiAgREVTVFJPWV9BQ1RJT046IHtcbiAgICBuYW1lOiAnRGVzdHJveScsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k3MTAxLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTcwMDAsXG4gIH0sXG4gIEJPT1RTVFJBUF9TSU5HTEU6IHtcbiAgICBuYW1lOiAnQm9vdHN0cmFwJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTkxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JOTAwMCxcbiAgfSxcbiAgQlVJTERfQVNTRVQ6IHtcbiAgICBuYW1lOiAnQnVpbGQgQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIxMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjExLFxuICB9LFxuICBQVUJMSVNIX0FTU0VUOiB7XG4gICAgbmFtZTogJ1B1Ymxpc2ggQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIyMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjIxLFxuICB9LFxuICBIT1RTV0FQOiB7XG4gICAgbmFtZTogJ2hvdHN3YXAtZGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1NDAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTU0MTAsXG4gIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBTcGFuRGVmaW5pdGlvbjxhbnksIGFueT4+O1xuIl19
@@ -1,5 +1,12 @@
1
+ import type { PluginReportJson, PolicyViolationJson, ViolatingConstructJson } from '@aws-cdk/cloud-assembly-schema';
1
2
  import type { ValidateResult } from '../../actions/validate';
2
3
  import type { ActionLessMessage } from '../io/private';
3
- export declare function hostMessageFromValidation(result: ValidateResult): ActionLessMessage<any>;
4
- export declare function formatValidateResult(result: ValidateResult): string;
4
+ export declare function hostMessageFromValidation(fileRoot: string, result: ValidateResult): ActionLessMessage<any>;
5
+ export declare function formatValidateResult(fileRoot: string, result: ValidateResult): string;
6
+ export declare function formatValidationReports(fileRoot: string, reports: PluginReportJson[]): string[];
7
+ export type FlattenedViolation = Pick<PluginReportJson, 'pluginName'> & Pick<PolicyViolationJson, 'description' | 'ruleName' | 'suggestedFix' | 'ruleMetadata'> & {
8
+ severity: string;
9
+ construct: ViolatingConstructJson;
10
+ };
11
+ export declare function humanFriendlyFilename(root: string, filename: string): string;
5
12
  //# sourceMappingURL=validate-formatting.d.ts.map