@mecanizou/telemetry-hub 1.3.7 → 1.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [1.3.8](https://github.com/mecanizou-eco/telemetry-hub/compare/v1.3.7...v1.3.8) (2026-01-21)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * emmiter interface and rules and tests ([7cdbc97](https://github.com/mecanizou-eco/telemetry-hub/commit/7cdbc97028f5764430ea50d5ed7b41105a3d2bba))
7
+
1
8
  ## [1.3.7](https://github.com/mecanizou-eco/telemetry-hub/compare/v1.3.6...v1.3.7) (2026-01-21)
2
9
 
3
10
 
package/README.md CHANGED
@@ -195,7 +195,7 @@ Todos os logs exportam os seguintes atributos OpenTelemetry:
195
195
  "request.id": "req-abc",
196
196
  "aws.request.id": "aws-xyz",
197
197
  "function.name": "checkoutHandler",
198
- "function.invocation_id": "inv-123",
198
+ "function.invocation.id": "inv-123",
199
199
  "controller.name": "CheckoutController",
200
200
  "controller.method": "getCheckout",
201
201
  "origin": "mobile",
@@ -64,10 +64,10 @@ const vitest_1 = require("vitest");
64
64
  execution: {
65
65
  requestId: 'req-abc',
66
66
  awsRequestId: 'aws-xyz',
67
- functionName: 'testFunction',
68
- invocationId: 'inv-123',
69
- controller: 'TestController',
70
- controllerMethod: 'testMethod',
67
+ function: {
68
+ name: 'testFunction',
69
+ invocationId: 'inv-123',
70
+ },
71
71
  origin: 'mobile',
72
72
  },
73
73
  performance: {
@@ -122,7 +122,7 @@ const vitest_1 = require("vitest");
122
122
  (0, vitest_1.expect)((_b = partialUserLog.user) === null || _b === void 0 ? void 0 : _b.email).toBeUndefined();
123
123
  });
124
124
  (0, vitest_1.it)('deve aceitar campos de execução parciais', () => {
125
- var _a, _b, _c;
125
+ var _a, _b;
126
126
  const partialExecLog = {
127
127
  severity: 'DEBUG',
128
128
  message: 'Partial execution',
@@ -130,13 +130,11 @@ const vitest_1 = require("vitest");
130
130
  environment: 'test',
131
131
  execution: {
132
132
  requestId: 'req-123',
133
- controller: 'TestController',
134
133
  },
135
134
  timestamp: new Date().toISOString(),
136
135
  };
137
136
  (0, vitest_1.expect)((_a = partialExecLog.execution) === null || _a === void 0 ? void 0 : _a.requestId).toBe('req-123');
138
- (0, vitest_1.expect)((_b = partialExecLog.execution) === null || _b === void 0 ? void 0 : _b.controller).toBe('TestController');
139
- (0, vitest_1.expect)((_c = partialExecLog.execution) === null || _c === void 0 ? void 0 : _c.awsRequestId).toBeUndefined();
137
+ (0, vitest_1.expect)((_b = partialExecLog.execution) === null || _b === void 0 ? void 0 : _b.awsRequestId).toBeUndefined();
140
138
  });
141
139
  (0, vitest_1.it)('deve aceitar performance com apenas durationMs', () => {
142
140
  var _a, _b;
@@ -321,4 +319,4 @@ const vitest_1 = require("vitest");
321
319
  });
322
320
  });
323
321
  });
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLXR5cGVzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9fX3Rlc3RzX18vbG9nZ2VyLXR5cGVzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBOEM7QUFHOUMsSUFBQSxpQkFBUSxFQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxJQUFBLFdBQUUsRUFBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7UUFDeEMsTUFBTSxVQUFVLEdBQW9CO1lBQ2xDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFdBQVcsRUFBRSxjQUFjO1lBQzNCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtTQUNwQyxDQUFDO1FBRUYsSUFBQSxlQUFNLEVBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBQSxlQUFNLEVBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsV0FBRSxFQUFDLDBDQUEwQyxFQUFFLEdBQUcsRUFBRTtRQUNsRCxNQUFNLFVBQVUsR0FBa0M7WUFDaEQsT0FBTztZQUNQLE1BQU07WUFDTixNQUFNO1lBQ04sT0FBTztTQUNSLENBQUM7UUFFRixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxHQUFHLEdBQW9CO2dCQUMzQixRQUFRO2dCQUNSLE9BQU8sRUFBRSxNQUFNO2dCQUNmLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3BDLENBQUM7WUFDRixJQUFBLGVBQU0sRUFBQyxHQUFH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QUFDLE1BQUEsR0FBRyxDQUFDLFdBQVcsMENBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsaUJBQVEsRUFBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7UUFDbkMsSUFBQSxXQUFFLEVBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFOztnQkFDaEMsTUFBTSxHQUFHLEdBQW9CO29CQUMzQixRQUFRLEVBQUUsTUFBTTtvQkFDaEIsT0FBTyxFQUFFLE1BQU07b0JBQ2YsV0FBVyxFQUFFLE1BQU07b0JBQ25CLFdBQVcsRUFBRSxNQUFNO29CQUNuQixXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUU7b0JBQ3hCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtpQkFDcEMsQ0FBQztnQkFDRixJQUFBLGVBQU0sRUFBQyxNQUFBLEdBQUcsQ0FBQyxXQUFXLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBpdCwgZXhwZWN0IH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB0eXBlIHsgU3RhbmRhcmRMb2dEYXRhLCBJU3RhbmRhcmRMb2dnZXIgfSBmcm9tICcuLi9sb2dnZXItdHlwZXMnO1xuXG5kZXNjcmliZSgnVHlwZXMgLSBTdGFuZGFyZExvZ0RhdGEnLCAoKSA9PiB7XG4gIGl0KCdkZXZlIGFjZWl0YXIgbG9nIG3DrW5pbW8gdsOhbGlkbycsICgpID0+IHtcbiAgICBjb25zdCBtaW5pbWFsTG9nOiBTdGFuZGFyZExvZ0RhdGEgPSB7XG4gICAgICBzZXZlcml0eTogJ0lORk8nLFxuICAgICAgbWVzc2FnZTogJ1Rlc3QgbWVzc2FnZScsXG4gICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGV4cGVjdChtaW5pbWFsTG9nKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChtaW5pbWFsTG9nLnNldmVyaXR5KS50b0JlKCdJTkZPJyk7XG4gIH0pO1xuXG4gIGl0KCdkZXZlIGFjZWl0YXIgdG9kb3Mgb3MgbsOtdmVpcyBkZSBzZXZlcml0eScsICgpID0+IHtcbiAgICBjb25zdCBzZXZlcml0aWVzOiBTdGFuZGFyZExvZ0RhdGFbJ3NldmVyaXR5J11bXSA9IFtcbiAgICAgICdFUlJPUicsXG4gICAgICAnV0FSTicsXG4gICAgICAnSU5GTycsXG4gICAgICAnREVCVUcnLFxuICAgIF07XG5cbiAgICBzZXZlcml0aWVzLmZvckVhY2goKHNldmVyaXR5KSA9PiB7XG4gICAgICBjb25zdCBsb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgICAgc2V2ZXJpdHksXG4gICAgICAgIG1lc3NhZ2U6ICdUZXN0JyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0JyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgZXhwZWN0KGxvZy5zZXZlcml0eSkudG9CZShzZXZlcml0eSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdkZXZlIGFjZWl0YXIgbG9nIGNvbXBsZXRvIGNvbSB0b2RvcyBvcyBjYW1wb3Mgb3BjaW9uYWlzJywgKCkgPT4ge1xuICAgIGNvbnN0IGNvbXBsZXRlTG9nOiBTdGFuZGFyZExvZ0RhdGEgPSB7XG4gICAgICBzZXZlcml0eTogJ0VSUk9SJyxcbiAgICAgIG1lc3NhZ2U6ICdDb21wbGV0ZSBsb2cgbWVzc2FnZScsXG4gICAgICBlcnJvcjogbmV3IEVycm9yKCdUZXN0IGVycm9yJyksXG4gICAgICBzZXJ2aWNlTmFtZTogJ2NvbXBsZXRlLXNlcnZpY2UnLFxuICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgIGh0dHA6IHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIHVybDogJ2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tL3Rlc3QnLFxuICAgICAgICBlbmRwb2ludDogJy90ZXN0JyxcbiAgICAgICAgc3RhdHVzQ29kZTogNTAwLFxuICAgICAgICBoZWFkZXJzOiB7ICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgYm9keTogeyB0ZXN0OiAnZGF0YScgfSxcbiAgICAgICAgcGFyYW1zOiB7IGlkOiAnMTIzJyB9LFxuICAgICAgICBxdWVyeTogeyBmaWx0ZXI6ICdhY3RpdmUnIH0sXG4gICAgICB9LFxuICAgICAgdXNlcjoge1xuICAgICAgICB1aWQ6ICd1c2VyLTEyMycsXG4gICAgICAgIGVtYWlsOiAndXNlckBleGFtcGxlLmNvbScsXG4gICAgICB9LFxuICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgIHJlcXVlc3RJZDogJ3JlcS1hYmMnLFxuICAgICAgICBhd3NSZXF1ZXN0SWQ6ICdhd3MteHl6JyxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiAndGVzdEZ1bmN0aW9uJyxcbiAgICAgICAgaW52b2NhdGlvbklkOiAnaW52LTEyMycsXG4gICAgICAgIGNvbnRyb2xsZXI6ICdUZXN0Q29udHJvbGxlcicsXG4gICAgICAgIGNvbnRyb2xsZXJNZXRob2Q6ICd0ZXN0TWV0aG9kJyxcbiAgICAgICAgb3JpZ2luOiAnbW9iaWxlJyxcbiAgICAgIH0sXG4gICAgICBwZXJmb3JtYW5jZToge1xuICAgICAgICBkdXJhdGlvbk1zOiAxNTAwLFxuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGN1c3RvbUZpZWxkOiAnY3VzdG9tVmFsdWUnLFxuICAgICAgICBuZXN0ZWQ6IHtcbiAgICAgICAgICBkYXRhOiAxMjMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGV4cGVjdChjb21wbGV0ZUxvZykudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoY29tcGxldGVMb2cuaHR0cCkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoY29tcGxldGVMb2cudXNlcikudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoY29tcGxldGVMb2cuZXhlY3V0aW9uKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChjb21wbGV0ZUxvZy5wZXJmb3JtYW5jZSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoY29tcGxldGVMb2cuY29udGV4dCkudG9CZURlZmluZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RldmUgYWNlaXRhciBjYW1wb3MgSFRUUCBwYXJjaWFpcycsICgpID0+IHtcbiAgICBjb25zdCBwYXJ0aWFsSHR0cExvZzogU3RhbmRhcmRMb2dEYXRhID0ge1xuICAgICAgc2V2ZXJpdHk6ICdJTkZPJyxcbiAgICAgIG1lc3NhZ2U6ICdQYXJ0aWFsIEhUVFAnLFxuICAgICAgc2VydmljZU5hbWU6ICd0ZXN0JyxcbiAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICBodHRwOiB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGVuZHBvaW50OiAnL2FwaS91c2VycycsXG4gICAgICAgIC8vIG91dHJvcyBjYW1wb3Mgb3BjaW9uYWlzIG9taXRpZG9zXG4gICAgICB9LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGV4cGVjdChwYXJ0aWFsSHR0cExvZy5odHRwPy5tZXRob2QpLnRvQmUoJ0dFVCcpO1xuICAgIGV4cGVjdChwYXJ0aWFsSHR0cExvZy5odHRwPy5lbmRwb2ludCkudG9CZSgnL2FwaS91c2VycycpO1xuICAgIGV4cGVjdChwYXJ0aWFsSHR0cExvZy5odHRwPy51cmwpLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RldmUgYWNlaXRhciBjYW1wb3MgZGUgdXN1w6FyaW8gcGFyY2lhaXMnLCAoKSA9PiB7XG4gICAgY29uc3QgcGFydGlhbFVzZXJMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnSU5GTycsXG4gICAgICBtZXNzYWdlOiAnUGFydGlhbCB1c2VyJyxcbiAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgdXNlcjoge1xuICAgICAgICB1aWQ6ICd1c2VyLTEyMycsXG4gICAgICAgIC8vIG91dHJvcyBjYW1wb3Mgb3BjaW9uYWlzIG9taXRpZG9zXG4gICAgICB9LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGV4cGVjdChwYXJ0aWFsVXNlckxvZy51c2VyPy51aWQpLnRvQmUoJ3VzZXItMTIzJyk7XG4gICAgZXhwZWN0KHBhcnRpYWxVc2VyTG9nLnVzZXI/LmVtYWlsKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIGl0KCdkZXZlIGFjZWl0YXIgY2FtcG9zIGRlIGV4ZWN1w6fDo28gcGFyY2lhaXMnLCAoKSA9PiB7XG4gICAgY29uc3QgcGFydGlhbEV4ZWNMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnREVCVUcnLFxuICAgICAgbWVzc2FnZTogJ1BhcnRpYWwgZXhlY3V0aW9uJyxcbiAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgIHJlcXVlc3RJZDogJ3JlcS0xMjMnLFxuICAgICAgICBjb250cm9sbGVyOiAnVGVzdENvbnRyb2xsZXInLFxuICAgICAgICAvLyBvdXRyb3MgY2FtcG9zIG9wY2lvbmFpcyBvbWl0aWRvc1xuICAgICAgfSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG5cbiAgICBleHBlY3QocGFydGlhbEV4ZWNMb2cuZXhlY3V0aW9uPy5yZXF1ZXN0SWQpLnRvQmUoJ3JlcS0xMjMnKTtcbiAgICBleHBlY3QocGFydGlhbEV4ZWNMb2cuZXhlY3V0aW9uPy5jb250cm9sbGVyKS50b0JlKCdUZXN0Q29udHJvbGxlcicpO1xuICAgIGV4cGVjdChwYXJ0aWFsRXhlY0xvZy5leGVjdXRpb24/LmF3c1JlcXVlc3RJZCkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICBpdCgnZGV2ZSBhY2VpdGFyIHBlcmZvcm1hbmNlIGNvbSBhcGVuYXMgZHVyYXRpb25NcycsICgpID0+IHtcbiAgICBjb25zdCBkdXJhdGlvbk9ubHlMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnSU5GTycsXG4gICAgICBtZXNzYWdlOiAnRHVyYXRpb24gb25seScsXG4gICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgIGR1cmF0aW9uTXM6IDUwMCxcbiAgICAgIH0sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KGR1cmF0aW9uT25seUxvZy5wZXJmb3JtYW5jZT8uZHVyYXRpb25NcykudG9CZSg1MDApO1xuICAgIGV4cGVjdChkdXJhdGlvbk9ubHlMb2cucGVyZm9ybWFuY2U/LnN1Y2Nlc3MpLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RldmUgYWNlaXRhciBwZXJmb3JtYW5jZSBjb20gYXBlbmFzIHN1Y2Nlc3MnLCAoKSA9PiB7XG4gICAgY29uc3Qgc3VjY2Vzc09ubHlMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnSU5GTycsXG4gICAgICBtZXNzYWdlOiAnU3VjY2VzcyBvbmx5JyxcbiAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KHN1Y2Nlc3NPbmx5TG9nLnBlcmZvcm1hbmNlPy5zdWNjZXNzKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChzdWNjZXNzT25seUxvZy5wZXJmb3JtYW5jZT8uZHVyYXRpb25NcykudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICBpdCgnZGV2ZSBhY2VpdGFyIGNvbnRleHRvIGNvbSBlc3RydXR1cmFzIGFuaW5oYWRhcyBjb21wbGV4YXMnLCAoKSA9PiB7XG4gICAgY29uc3QgY29tcGxleENvbnRleHRMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnRVJST1InLFxuICAgICAgbWVzc2FnZTogJ0NvbXBsZXggY29udGV4dCcsXG4gICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgbGV2ZWwxOiB7XG4gICAgICAgICAgbGV2ZWwyOiB7XG4gICAgICAgICAgICBsZXZlbDM6IHtcbiAgICAgICAgICAgICAgdmFsdWU6ICdkZWVwJyxcbiAgICAgICAgICAgICAgYXJyYXk6IFsxLCAyLCAzXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2ltcGxlVmFsdWU6ICd0ZXN0JyxcbiAgICAgICAgbnVtZXJpY1ZhbHVlOiAxMjMsXG4gICAgICAgIGJvb2xlYW5WYWx1ZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KGNvbXBsZXhDb250ZXh0TG9nLmNvbnRleHQ/LmxldmVsMSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoY29tcGxleENvbnRleHRMb2cuY29udGV4dD8uc2ltcGxlVmFsdWUpLnRvQmUoJ3Rlc3QnKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ1R5cGVzIC0gSVN0YW5kYXJkTG9nZ2VyJywgKCkgPT4ge1xuICBpdCgnZGV2ZSBkZWZpbmlyIGludGVyZmFjZSBjb20gb3MgNCBtw6l0b2RvcyBkZSBsb2cnLCAoKSA9PiB7XG4gICAgLy8gRXN0ZSDDqSB1bSB0ZXN0ZSBkZSB0aXBvLCBzw7MgcGFyYSBnYXJhbnRpciBxdWUgYSBpbnRlcmZhY2UgZXN0w6EgY29ycmV0YVxuICAgIGNvbnN0IG1vY2tMb2dnZXI6IElTdGFuZGFyZExvZ2dlciA9IHtcbiAgICAgIGxvZ0Vycm9yOiBhc3luYyAoKSA9PiB7fSxcbiAgICAgIGxvZ0luZm86IGFzeW5jICgpID0+IHt9LFxuICAgICAgbG9nV2FybjogYXN5bmMgKCkgPT4ge30sXG4gICAgICBsb2dEZWJ1ZzogYXN5bmMgKCkgPT4ge30sXG4gICAgfTtcblxuICAgIGV4cGVjdChtb2NrTG9nZ2VyLmxvZ0Vycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChtb2NrTG9nZ2VyLmxvZ0luZm8pLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KG1vY2tMb2dnZXIubG9nV2FybikudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QobW9ja0xvZ2dlci5sb2dEZWJ1ZykudG9CZURlZmluZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RldmUgYWNlaXRhciBkYWRvcyBzZW0gc2V2ZXJpdHkgZSB0aW1lc3RhbXAgbm9zIG3DqXRvZG9zJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vY2tMb2dnZXI6IElTdGFuZGFyZExvZ2dlciA9IHtcbiAgICAgIGxvZ0Vycm9yOiBhc3luYyAoZGF0YSkgPT4ge1xuICAgICAgICBleHBlY3QoZGF0YS5tZXNzYWdlKS50b0JlKCdFcnJvciBtZXNzYWdlJyk7XG4gICAgICAgIGV4cGVjdChkYXRhLnNlcnZpY2VOYW1lKS50b0JlKCd0ZXN0Jyk7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBzZXZlcml0eSBuw6NvIGRldmUgZXhpc3RpclxuICAgICAgICBleHBlY3QoZGF0YS5zZXZlcml0eSkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gdGltZXN0YW1wIG7Do28gZGV2ZSBleGlzdGlyXG4gICAgICAgIGV4cGVjdChkYXRhLnRpbWVzdGFtcCkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgfSxcbiAgICAgIGxvZ0luZm86IGFzeW5jICgpID0+IHt9LFxuICAgICAgbG9nV2FybjogYXN5bmMgKCkgPT4ge30sXG4gICAgICBsb2dEZWJ1ZzogYXN5bmMgKCkgPT4ge30sXG4gICAgfTtcblxuICAgIGF3YWl0IG1vY2tMb2dnZXIubG9nRXJyb3Ioe1xuICAgICAgbWVzc2FnZTogJ0Vycm9yIG1lc3NhZ2UnLFxuICAgICAgc2VydmljZU5hbWU6ICd0ZXN0JyxcbiAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdUeXBlcyAtIFZhbGlkYcOnw6NvIGRlIGNhbXBvcycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3NldmVyaXR5JywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgYXBlbmFzIHZhbG9yZXMgdsOhbGlkb3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZFNldmVyaXRpZXMgPSBbJ0VSUk9SJywgJ1dBUk4nLCAnSU5GTycsICdERUJVRyddIGFzIGNvbnN0O1xuXG4gICAgICB2YWxpZFNldmVyaXRpZXMuZm9yRWFjaCgoc2V2ZXJpdHkpID0+IHtcbiAgICAgICAgY29uc3QgbG9nOiBTdGFuZGFyZExvZ0RhdGEgPSB7XG4gICAgICAgICAgc2V2ZXJpdHksXG4gICAgICAgICAgbWVzc2FnZTogJ3Rlc3QnLFxuICAgICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgZXhwZWN0KGxvZy5zZXZlcml0eSkudG9CZShzZXZlcml0eSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Vudmlyb25tZW50JywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgYW1iaWVudGVzIGNvbXVucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGVudmlyb25tZW50cyA9IFsnZGV2ZWxvcG1lbnQnLCAnc3RhZ2luZycsICdwcm9kdWN0aW9uJywgJ3Rlc3QnXTtcblxuICAgICAgZW52aXJvbm1lbnRzLmZvckVhY2goKGVudikgPT4ge1xuICAgICAgICBjb25zdCBsb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgICAgICBzZXZlcml0eTogJ0lORk8nLFxuICAgICAgICAgIG1lc3NhZ2U6ICd0ZXN0JyxcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgICAgIGVudmlyb25tZW50OiBlbnYsXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICAgIGV4cGVjdChsb2cuZW52aXJvbm1lbnQpLnRvQmUoZW52KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndGltZXN0YW1wJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgZm9ybWF0byBJU08gODYwMScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlzb1RpbWVzdGFtcCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIGNvbnN0IGxvZzogU3RhbmRhcmRMb2dEYXRhID0ge1xuICAgICAgICBzZXZlcml0eTogJ0lORk8nLFxuICAgICAgICBtZXNzYWdlOiAndGVzdCcsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICAgIHRpbWVzdGFtcDogaXNvVGltZXN0YW1wLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KGxvZy50aW1lc3RhbXApLnRvTWF0Y2goXG4gICAgICAgIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn1cXC5cXGR7M31aJC9cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdodHRwLnN0YXR1c0NvZGUnLCAoKSA9PiB7XG4gICAgaXQoJ2RldmUgYWNlaXRhciBjw7NkaWdvcyBIVFRQIHbDoWxpZG9zJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzQ29kZXMgPSBbMjAwLCAyMDEsIDQwMCwgNDAxLCA0MDQsIDUwMCwgNTAyLCA1MDNdO1xuXG4gICAgICBzdGF0dXNDb2Rlcy5mb3JFYWNoKChzdGF0dXNDb2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvZzogU3RhbmRhcmRMb2dEYXRhID0ge1xuICAgICAgICAgIHNldmVyaXR5OiAnSU5GTycsXG4gICAgICAgICAgbWVzc2FnZTogJ3Rlc3QnLFxuICAgICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgICAgICBodHRwOiB7IHN0YXR1c0NvZGUgfSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgZXhwZWN0KGxvZy5odHRwPy5zdGF0dXNDb2RlKS50b0JlKHN0YXR1c0NvZGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwZXJmb3JtYW5jZS5kdXJhdGlvbk1zJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgdmFsb3JlcyBudW3DqXJpY29zIHBvc2l0aXZvcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGR1cmF0aW9ucyA9IFswLCAxMDAsIDUwMCwgMTAwMCwgNTAwMCwgMTAwMDBdO1xuXG4gICAgICBkdXJhdGlvbnMuZm9yRWFjaCgoZHVyYXRpb25NcykgPT4ge1xuICAgICAgICBjb25zdCBsb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgICAgICBzZXZlcml0eTogJ0lORk8nLFxuICAgICAgICAgIG1lc3NhZ2U6ICd0ZXN0JyxcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICAgICAgcGVyZm9ybWFuY2U6IHsgZHVyYXRpb25NcyB9LFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgICBleHBlY3QobG9nLnBlcmZvcm1hbmNlPy5kdXJhdGlvbk1zKS50b0JlKGR1cmF0aW9uTXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwZXJmb3JtYW5jZS5zdWNjZXNzJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgdmFsb3JlcyBib29sZWFub3MnLCAoKSA9PiB7XG4gICAgICBbdHJ1ZSwgZmFsc2VdLmZvckVhY2goKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgY29uc3QgbG9nOiBTdGFuZGFyZExvZ0RhdGEgPSB7XG4gICAgICAgICAgc2V2ZXJpdHk6ICdJTkZPJyxcbiAgICAgICAgICBtZXNzYWdlOiAndGVzdCcsXG4gICAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0JyxcbiAgICAgICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgICAgIHBlcmZvcm1hbmNlOiB7IHN1Y2Nlc3MgfSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgZXhwZWN0KGxvZy5wZXJmb3JtYW5jZT8uc3VjY2VzcykudG9CZShzdWNjZXNzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLXR5cGVzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9fX3Rlc3RzX18vbG9nZ2VyLXR5cGVzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBOEM7QUFHOUMsSUFBQSxpQkFBUSxFQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxJQUFBLFdBQUUsRUFBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7UUFDeEMsTUFBTSxVQUFVLEdBQW9CO1lBQ2xDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFdBQVcsRUFBRSxjQUFjO1lBQzNCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtTQUNwQyxDQUFDO1FBRUYsSUFBQSxlQUFNLEVBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBQSxlQUFNLEVBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsV0FBRSxFQUFDLDBDQUEwQyxFQUFFLEdBQUcsRUFBRTtRQUNsRCxNQUFNLFVBQVUsR0FBa0M7WUFDaEQsT0FBTztZQUNQLE1BQU07WUFDTixNQUFNO1lBQ04sT0FBTztTQUNSLENBQUM7UUFFRixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxHQUFHLEdBQW9CO2dCQUMzQixRQUFRO2dCQUNSLE9BQU8sRUFBRSxNQUFNO2dCQUNmLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3BDLENBQUM7WUFDRixJQUFBLGVBQU0sRUFBQyxHQUFH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QSxpQkFBUSxFQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxJQUFBLFdBQUUsRUFBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7WUFDeEMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7O2dCQUNoQyxNQUFNLEdBQUcsR0FBb0I7b0JBQzNCLFFBQVEsRUFBRSxNQUFNO29CQUNoQixPQUFPLEVBQUUsTUFBTTtvQkFDZixXQUFXLEVBQUUsTUFBTTtvQkFDbkIsV0FBVyxFQUFFLE1BQU07b0JBQ25CLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRTtvQkFDeEIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2lCQUNwQyxDQUFDO2dCQUNGLElBQUEsZUFBTSxFQUFDLE1BQUEsR0FBRyxDQUFDLFdBQVcsMENBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGl0LCBleHBlY3QgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHR5cGUgeyBTdGFuZGFyZExvZ0RhdGEsIElTdGFuZGFyZExvZ2dlciB9IGZyb20gJy4uL2xvZ2dlci10eXBlcyc7XG5cbmRlc2NyaWJlKCdUeXBlcyAtIFN0YW5kYXJkTG9nRGF0YScsICgpID0+IHtcbiAgaXQoJ2RldmUgYWNlaXRhciBsb2cgbcOtbmltbyB2w6FsaWRvJywgKCkgPT4ge1xuICAgIGNvbnN0IG1pbmltYWxMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnSU5GTycsXG4gICAgICBtZXNzYWdlOiAnVGVzdCBtZXNzYWdlJyxcbiAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KG1pbmltYWxMb2cpLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KG1pbmltYWxMb2cuc2V2ZXJpdHkpLnRvQmUoJ0lORk8nKTtcbiAgfSk7XG5cbiAgaXQoJ2RldmUgYWNlaXRhciB0b2RvcyBvcyBuw612ZWlzIGRlIHNldmVyaXR5JywgKCkgPT4ge1xuICAgIGNvbnN0IHNldmVyaXRpZXM6IFN0YW5kYXJkTG9nRGF0YVsnc2V2ZXJpdHknXVtdID0gW1xuICAgICAgJ0VSUk9SJyxcbiAgICAgICdXQVJOJyxcbiAgICAgICdJTkZPJyxcbiAgICAgICdERUJVRycsXG4gICAgXTtcblxuICAgIHNldmVyaXRpZXMuZm9yRWFjaCgoc2V2ZXJpdHkpID0+IHtcbiAgICAgIGNvbnN0IGxvZzogU3RhbmRhcmRMb2dEYXRhID0ge1xuICAgICAgICBzZXZlcml0eSxcbiAgICAgICAgbWVzc2FnZTogJ1Rlc3QnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgICBleHBlY3QobG9nLnNldmVyaXR5KS50b0JlKHNldmVyaXR5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ2RldmUgYWNlaXRhciBsb2cgY29tcGxldG8gY29tIHRvZG9zIG9zIGNhbXBvcyBvcGNpb25haXMnLCAoKSA9PiB7XG4gICAgY29uc3QgY29tcGxldGVMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnRVJST1InLFxuICAgICAgbWVzc2FnZTogJ0NvbXBsZXRlIGxvZyBtZXNzYWdlJyxcbiAgICAgIGVycm9yOiBuZXcgRXJyb3IoJ1Rlc3QgZXJyb3InKSxcbiAgICAgIHNlcnZpY2VOYW1lOiAnY29tcGxldGUtc2VydmljZScsXG4gICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgaHR0cDoge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdGVzdCcsXG4gICAgICAgIGVuZHBvaW50OiAnL3Rlc3QnLFxuICAgICAgICBzdGF0dXNDb2RlOiA1MDAsXG4gICAgICAgIGhlYWRlcnM6IHsgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgICBib2R5OiB7IHRlc3Q6ICdkYXRhJyB9LFxuICAgICAgICBwYXJhbXM6IHsgaWQ6ICcxMjMnIH0sXG4gICAgICAgIHF1ZXJ5OiB7IGZpbHRlcjogJ2FjdGl2ZScgfSxcbiAgICAgIH0sXG4gICAgICB1c2VyOiB7XG4gICAgICAgIHVpZDogJ3VzZXItMTIzJyxcbiAgICAgICAgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyxcbiAgICAgIH0sXG4gICAgICBleGVjdXRpb246IHtcbiAgICAgICAgcmVxdWVzdElkOiAncmVxLWFiYycsXG4gICAgICAgIGF3c1JlcXVlc3RJZDogJ2F3cy14eXonLFxuICAgICAgICBmdW5jdGlvbjoge1xuICAgICAgICAgIG5hbWU6ICd0ZXN0RnVuY3Rpb24nLFxuICAgICAgICAgIGludm9jYXRpb25JZDogJ2ludi0xMjMnLFxuICAgICAgICB9LFxuICAgICAgICBvcmlnaW46ICdtb2JpbGUnLFxuICAgICAgfSxcbiAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgIGR1cmF0aW9uTXM6IDE1MDAsXG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgY3VzdG9tRmllbGQ6ICdjdXN0b21WYWx1ZScsXG4gICAgICAgIG5lc3RlZDoge1xuICAgICAgICAgIGRhdGE6IDEyMyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KGNvbXBsZXRlTG9nKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChjb21wbGV0ZUxvZy5odHRwKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChjb21wbGV0ZUxvZy51c2VyKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChjb21wbGV0ZUxvZy5leGVjdXRpb24pLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KGNvbXBsZXRlTG9nLnBlcmZvcm1hbmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChjb21wbGV0ZUxvZy5jb250ZXh0KS50b0JlRGVmaW5lZCgpO1xuICB9KTtcblxuICBpdCgnZGV2ZSBhY2VpdGFyIGNhbXBvcyBIVFRQIHBhcmNpYWlzJywgKCkgPT4ge1xuICAgIGNvbnN0IHBhcnRpYWxIdHRwTG9nOiBTdGFuZGFyZExvZ0RhdGEgPSB7XG4gICAgICBzZXZlcml0eTogJ0lORk8nLFxuICAgICAgbWVzc2FnZTogJ1BhcnRpYWwgSFRUUCcsXG4gICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgIGh0dHA6IHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgZW5kcG9pbnQ6ICcvYXBpL3VzZXJzJyxcbiAgICAgICAgLy8gb3V0cm9zIGNhbXBvcyBvcGNpb25haXMgb21pdGlkb3NcbiAgICAgIH0sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KHBhcnRpYWxIdHRwTG9nLmh0dHA/Lm1ldGhvZCkudG9CZSgnR0VUJyk7XG4gICAgZXhwZWN0KHBhcnRpYWxIdHRwTG9nLmh0dHA/LmVuZHBvaW50KS50b0JlKCcvYXBpL3VzZXJzJyk7XG4gICAgZXhwZWN0KHBhcnRpYWxIdHRwTG9nLmh0dHA/LnVybCkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICBpdCgnZGV2ZSBhY2VpdGFyIGNhbXBvcyBkZSB1c3XDoXJpbyBwYXJjaWFpcycsICgpID0+IHtcbiAgICBjb25zdCBwYXJ0aWFsVXNlckxvZzogU3RhbmRhcmRMb2dEYXRhID0ge1xuICAgICAgc2V2ZXJpdHk6ICdJTkZPJyxcbiAgICAgIG1lc3NhZ2U6ICdQYXJ0aWFsIHVzZXInLFxuICAgICAgc2VydmljZU5hbWU6ICd0ZXN0JyxcbiAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICB1c2VyOiB7XG4gICAgICAgIHVpZDogJ3VzZXItMTIzJyxcbiAgICAgICAgLy8gb3V0cm9zIGNhbXBvcyBvcGNpb25haXMgb21pdGlkb3NcbiAgICAgIH0sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KHBhcnRpYWxVc2VyTG9nLnVzZXI/LnVpZCkudG9CZSgndXNlci0xMjMnKTtcbiAgICBleHBlY3QocGFydGlhbFVzZXJMb2cudXNlcj8uZW1haWwpLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RldmUgYWNlaXRhciBjYW1wb3MgZGUgZXhlY3XDp8OjbyBwYXJjaWFpcycsICgpID0+IHtcbiAgICBjb25zdCBwYXJ0aWFsRXhlY0xvZzogU3RhbmRhcmRMb2dEYXRhID0ge1xuICAgICAgc2V2ZXJpdHk6ICdERUJVRycsXG4gICAgICBtZXNzYWdlOiAnUGFydGlhbCBleGVjdXRpb24nLFxuICAgICAgc2VydmljZU5hbWU6ICd0ZXN0JyxcbiAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICBleGVjdXRpb246IHtcbiAgICAgICAgcmVxdWVzdElkOiAncmVxLTEyMycsXG4gICAgICAgIC8vIG91dHJvcyBjYW1wb3Mgb3BjaW9uYWlzIG9taXRpZG9zXG4gICAgICB9LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGV4cGVjdChwYXJ0aWFsRXhlY0xvZy5leGVjdXRpb24/LnJlcXVlc3RJZCkudG9CZSgncmVxLTEyMycpO1xuICAgIGV4cGVjdChwYXJ0aWFsRXhlY0xvZy5leGVjdXRpb24/LmF3c1JlcXVlc3RJZCkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICBpdCgnZGV2ZSBhY2VpdGFyIHBlcmZvcm1hbmNlIGNvbSBhcGVuYXMgZHVyYXRpb25NcycsICgpID0+IHtcbiAgICBjb25zdCBkdXJhdGlvbk9ubHlMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnSU5GTycsXG4gICAgICBtZXNzYWdlOiAnRHVyYXRpb24gb25seScsXG4gICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgIGR1cmF0aW9uTXM6IDUwMCxcbiAgICAgIH0sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KGR1cmF0aW9uT25seUxvZy5wZXJmb3JtYW5jZT8uZHVyYXRpb25NcykudG9CZSg1MDApO1xuICAgIGV4cGVjdChkdXJhdGlvbk9ubHlMb2cucGVyZm9ybWFuY2U/LnN1Y2Nlc3MpLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RldmUgYWNlaXRhciBwZXJmb3JtYW5jZSBjb20gYXBlbmFzIHN1Y2Nlc3MnLCAoKSA9PiB7XG4gICAgY29uc3Qgc3VjY2Vzc09ubHlMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnSU5GTycsXG4gICAgICBtZXNzYWdlOiAnU3VjY2VzcyBvbmx5JyxcbiAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KHN1Y2Nlc3NPbmx5TG9nLnBlcmZvcm1hbmNlPy5zdWNjZXNzKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChzdWNjZXNzT25seUxvZy5wZXJmb3JtYW5jZT8uZHVyYXRpb25NcykudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICBpdCgnZGV2ZSBhY2VpdGFyIGNvbnRleHRvIGNvbSBlc3RydXR1cmFzIGFuaW5oYWRhcyBjb21wbGV4YXMnLCAoKSA9PiB7XG4gICAgY29uc3QgY29tcGxleENvbnRleHRMb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgIHNldmVyaXR5OiAnRVJST1InLFxuICAgICAgbWVzc2FnZTogJ0NvbXBsZXggY29udGV4dCcsXG4gICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgbGV2ZWwxOiB7XG4gICAgICAgICAgbGV2ZWwyOiB7XG4gICAgICAgICAgICBsZXZlbDM6IHtcbiAgICAgICAgICAgICAgdmFsdWU6ICdkZWVwJyxcbiAgICAgICAgICAgICAgYXJyYXk6IFsxLCAyLCAzXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2ltcGxlVmFsdWU6ICd0ZXN0JyxcbiAgICAgICAgbnVtZXJpY1ZhbHVlOiAxMjMsXG4gICAgICAgIGJvb2xlYW5WYWx1ZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgZXhwZWN0KGNvbXBsZXhDb250ZXh0TG9nLmNvbnRleHQ/LmxldmVsMSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoY29tcGxleENvbnRleHRMb2cuY29udGV4dD8uc2ltcGxlVmFsdWUpLnRvQmUoJ3Rlc3QnKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ1R5cGVzIC0gSVN0YW5kYXJkTG9nZ2VyJywgKCkgPT4ge1xuICBpdCgnZGV2ZSBkZWZpbmlyIGludGVyZmFjZSBjb20gb3MgNCBtw6l0b2RvcyBkZSBsb2cnLCAoKSA9PiB7XG4gICAgLy8gRXN0ZSDDqSB1bSB0ZXN0ZSBkZSB0aXBvLCBzw7MgcGFyYSBnYXJhbnRpciBxdWUgYSBpbnRlcmZhY2UgZXN0w6EgY29ycmV0YVxuICAgIGNvbnN0IG1vY2tMb2dnZXI6IElTdGFuZGFyZExvZ2dlciA9IHtcbiAgICAgIGxvZ0Vycm9yOiBhc3luYyAoKSA9PiB7fSxcbiAgICAgIGxvZ0luZm86IGFzeW5jICgpID0+IHt9LFxuICAgICAgbG9nV2FybjogYXN5bmMgKCkgPT4ge30sXG4gICAgICBsb2dEZWJ1ZzogYXN5bmMgKCkgPT4ge30sXG4gICAgfTtcblxuICAgIGV4cGVjdChtb2NrTG9nZ2VyLmxvZ0Vycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChtb2NrTG9nZ2VyLmxvZ0luZm8pLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KG1vY2tMb2dnZXIubG9nV2FybikudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QobW9ja0xvZ2dlci5sb2dEZWJ1ZykudG9CZURlZmluZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RldmUgYWNlaXRhciBkYWRvcyBzZW0gc2V2ZXJpdHkgZSB0aW1lc3RhbXAgbm9zIG3DqXRvZG9zJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vY2tMb2dnZXI6IElTdGFuZGFyZExvZ2dlciA9IHtcbiAgICAgIGxvZ0Vycm9yOiBhc3luYyAoZGF0YSkgPT4ge1xuICAgICAgICBleHBlY3QoZGF0YS5tZXNzYWdlKS50b0JlKCdFcnJvciBtZXNzYWdlJyk7XG4gICAgICAgIGV4cGVjdChkYXRhLnNlcnZpY2VOYW1lKS50b0JlKCd0ZXN0Jyk7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBzZXZlcml0eSBuw6NvIGRldmUgZXhpc3RpclxuICAgICAgICBleHBlY3QoZGF0YS5zZXZlcml0eSkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gdGltZXN0YW1wIG7Do28gZGV2ZSBleGlzdGlyXG4gICAgICAgIGV4cGVjdChkYXRhLnRpbWVzdGFtcCkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgfSxcbiAgICAgIGxvZ0luZm86IGFzeW5jICgpID0+IHt9LFxuICAgICAgbG9nV2FybjogYXN5bmMgKCkgPT4ge30sXG4gICAgICBsb2dEZWJ1ZzogYXN5bmMgKCkgPT4ge30sXG4gICAgfTtcblxuICAgIGF3YWl0IG1vY2tMb2dnZXIubG9nRXJyb3Ioe1xuICAgICAgbWVzc2FnZTogJ0Vycm9yIG1lc3NhZ2UnLFxuICAgICAgc2VydmljZU5hbWU6ICd0ZXN0JyxcbiAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdUeXBlcyAtIFZhbGlkYcOnw6NvIGRlIGNhbXBvcycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3NldmVyaXR5JywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgYXBlbmFzIHZhbG9yZXMgdsOhbGlkb3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZFNldmVyaXRpZXMgPSBbJ0VSUk9SJywgJ1dBUk4nLCAnSU5GTycsICdERUJVRyddIGFzIGNvbnN0O1xuXG4gICAgICB2YWxpZFNldmVyaXRpZXMuZm9yRWFjaCgoc2V2ZXJpdHkpID0+IHtcbiAgICAgICAgY29uc3QgbG9nOiBTdGFuZGFyZExvZ0RhdGEgPSB7XG4gICAgICAgICAgc2V2ZXJpdHksXG4gICAgICAgICAgbWVzc2FnZTogJ3Rlc3QnLFxuICAgICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgZXhwZWN0KGxvZy5zZXZlcml0eSkudG9CZShzZXZlcml0eSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Vudmlyb25tZW50JywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgYW1iaWVudGVzIGNvbXVucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGVudmlyb25tZW50cyA9IFsnZGV2ZWxvcG1lbnQnLCAnc3RhZ2luZycsICdwcm9kdWN0aW9uJywgJ3Rlc3QnXTtcblxuICAgICAgZW52aXJvbm1lbnRzLmZvckVhY2goKGVudikgPT4ge1xuICAgICAgICBjb25zdCBsb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgICAgICBzZXZlcml0eTogJ0lORk8nLFxuICAgICAgICAgIG1lc3NhZ2U6ICd0ZXN0JyxcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgICAgIGVudmlyb25tZW50OiBlbnYsXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICAgIGV4cGVjdChsb2cuZW52aXJvbm1lbnQpLnRvQmUoZW52KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndGltZXN0YW1wJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgZm9ybWF0byBJU08gODYwMScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlzb1RpbWVzdGFtcCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIGNvbnN0IGxvZzogU3RhbmRhcmRMb2dEYXRhID0ge1xuICAgICAgICBzZXZlcml0eTogJ0lORk8nLFxuICAgICAgICBtZXNzYWdlOiAndGVzdCcsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICAgIHRpbWVzdGFtcDogaXNvVGltZXN0YW1wLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KGxvZy50aW1lc3RhbXApLnRvTWF0Y2goXG4gICAgICAgIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn1cXC5cXGR7M31aJC9cbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdodHRwLnN0YXR1c0NvZGUnLCAoKSA9PiB7XG4gICAgaXQoJ2RldmUgYWNlaXRhciBjw7NkaWdvcyBIVFRQIHbDoWxpZG9zJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzQ29kZXMgPSBbMjAwLCAyMDEsIDQwMCwgNDAxLCA0MDQsIDUwMCwgNTAyLCA1MDNdO1xuXG4gICAgICBzdGF0dXNDb2Rlcy5mb3JFYWNoKChzdGF0dXNDb2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvZzogU3RhbmRhcmRMb2dEYXRhID0ge1xuICAgICAgICAgIHNldmVyaXR5OiAnSU5GTycsXG4gICAgICAgICAgbWVzc2FnZTogJ3Rlc3QnLFxuICAgICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdCcsXG4gICAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgICAgICBodHRwOiB7IHN0YXR1c0NvZGUgfSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgZXhwZWN0KGxvZy5odHRwPy5zdGF0dXNDb2RlKS50b0JlKHN0YXR1c0NvZGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwZXJmb3JtYW5jZS5kdXJhdGlvbk1zJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgdmFsb3JlcyBudW3DqXJpY29zIHBvc2l0aXZvcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGR1cmF0aW9ucyA9IFswLCAxMDAsIDUwMCwgMTAwMCwgNTAwMCwgMTAwMDBdO1xuXG4gICAgICBkdXJhdGlvbnMuZm9yRWFjaCgoZHVyYXRpb25NcykgPT4ge1xuICAgICAgICBjb25zdCBsb2c6IFN0YW5kYXJkTG9nRGF0YSA9IHtcbiAgICAgICAgICBzZXZlcml0eTogJ0lORk8nLFxuICAgICAgICAgIG1lc3NhZ2U6ICd0ZXN0JyxcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3QnLFxuICAgICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICAgICAgcGVyZm9ybWFuY2U6IHsgZHVyYXRpb25NcyB9LFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgICBleHBlY3QobG9nLnBlcmZvcm1hbmNlPy5kdXJhdGlvbk1zKS50b0JlKGR1cmF0aW9uTXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwZXJmb3JtYW5jZS5zdWNjZXNzJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgdmFsb3JlcyBib29sZWFub3MnLCAoKSA9PiB7XG4gICAgICBbdHJ1ZSwgZmFsc2VdLmZvckVhY2goKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgY29uc3QgbG9nOiBTdGFuZGFyZExvZ0RhdGEgPSB7XG4gICAgICAgICAgc2V2ZXJpdHk6ICdJTkZPJyxcbiAgICAgICAgICBtZXNzYWdlOiAndGVzdCcsXG4gICAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0JyxcbiAgICAgICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgICAgIHBlcmZvcm1hbmNlOiB7IHN1Y2Nlc3MgfSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgZXhwZWN0KGxvZy5wZXJmb3JtYW5jZT8uc3VjY2VzcykudG9CZShzdWNjZXNzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -57,9 +57,9 @@ const api_logs_1 = require("@opentelemetry/api-logs");
57
57
  };
58
58
  yield standardLogger.logError(errorData);
59
59
  const emittedLog = mockLogger.emit.mock.calls[0][0];
60
- (0, vitest_1.expect)(emittedLog.attributes['error.type']).toBe('Error');
61
- (0, vitest_1.expect)(emittedLog.attributes['error.message']).toBe('Custom error');
62
- (0, vitest_1.expect)(emittedLog.attributes['error.stack']).toBeDefined();
60
+ (0, vitest_1.expect)(emittedLog.attributes['error']['type']).toBe('Error');
61
+ (0, vitest_1.expect)(emittedLog.attributes['error']['message']).toBe('Custom error');
62
+ (0, vitest_1.expect)(emittedLog.attributes['error']['stack']).toBeDefined();
63
63
  }));
64
64
  (0, vitest_1.it)('deve incluir contexto HTTP quando fornecido', () => __awaiter(void 0, void 0, void 0, function* () {
65
65
  const errorData = {
@@ -79,12 +79,14 @@ const api_logs_1 = require("@opentelemetry/api-logs");
79
79
  };
80
80
  yield standardLogger.logError(errorData);
81
81
  const emittedLog = mockLogger.emit.mock.calls[0][0];
82
- (0, vitest_1.expect)(emittedLog.attributes['http.method']).toBe('POST');
83
- (0, vitest_1.expect)(emittedLog.attributes['http.url']).toBe('/api/test');
84
- (0, vitest_1.expect)(emittedLog.attributes['http.endpoint']).toBe('/api/test');
85
- (0, vitest_1.expect)(emittedLog.attributes['http.status_code']).toBe(500);
86
- (0, vitest_1.expect)(emittedLog.attributes['http.headers']).toBe(JSON.stringify({ 'content-type': 'application/json' }));
87
- (0, vitest_1.expect)(emittedLog.attributes['http.body']).toBe(JSON.stringify({ test: 'data' }));
82
+ (0, vitest_1.expect)(emittedLog.attributes['http']['method']).toBe('POST');
83
+ (0, vitest_1.expect)(emittedLog.attributes['http']['url']).toBe('/api/test');
84
+ (0, vitest_1.expect)(emittedLog.attributes['http']['endpoint']).toBe('/api/test');
85
+ (0, vitest_1.expect)(emittedLog.attributes['http']['statusCode']).toBe(500);
86
+ (0, vitest_1.expect)(emittedLog.attributes['http']['headers']).toEqual({
87
+ 'content-type': 'application/json',
88
+ });
89
+ (0, vitest_1.expect)(emittedLog.attributes['http']['body']).toEqual({ test: 'data' });
88
90
  }));
89
91
  (0, vitest_1.it)('deve incluir informações de usuário quando fornecido', () => __awaiter(void 0, void 0, void 0, function* () {
90
92
  const errorData = {
@@ -98,8 +100,8 @@ const api_logs_1 = require("@opentelemetry/api-logs");
98
100
  };
99
101
  yield standardLogger.logError(errorData);
100
102
  const emittedLog = mockLogger.emit.mock.calls[0][0];
101
- (0, vitest_1.expect)(emittedLog.attributes['user.uid']).toBe('user-123');
102
- (0, vitest_1.expect)(emittedLog.attributes['user.email']).toBe('user@example.com');
103
+ (0, vitest_1.expect)(emittedLog.attributes['user']['uid']).toBe('user-123');
104
+ (0, vitest_1.expect)(emittedLog.attributes['user']['email']).toBe('user@example.com');
103
105
  }));
104
106
  (0, vitest_1.it)('deve incluir informações de execução quando fornecido', () => __awaiter(void 0, void 0, void 0, function* () {
105
107
  const errorData = {
@@ -118,13 +120,13 @@ const api_logs_1 = require("@opentelemetry/api-logs");
118
120
  };
119
121
  yield standardLogger.logError(errorData);
120
122
  const emittedLog = mockLogger.emit.mock.calls[0][0];
121
- (0, vitest_1.expect)(emittedLog.attributes['request.id']).toBe('req-123');
122
- (0, vitest_1.expect)(emittedLog.attributes['aws.request.id']).toBe('aws-456');
123
- (0, vitest_1.expect)(emittedLog.attributes['function.name']).toBe('testFunction');
124
- (0, vitest_1.expect)(emittedLog.attributes['function.invocation_id']).toBe('inv-789');
125
- (0, vitest_1.expect)(emittedLog.attributes['controller.name']).toBe('TestController');
126
- (0, vitest_1.expect)(emittedLog.attributes['controller.method']).toBe('testMethod');
127
- (0, vitest_1.expect)(emittedLog.attributes['origin']).toBe('mobile');
123
+ (0, vitest_1.expect)(emittedLog.attributes['execution']['requestId']).toBe('req-123');
124
+ (0, vitest_1.expect)(emittedLog.attributes['execution']['awsRequestId']).toBe('aws-456');
125
+ (0, vitest_1.expect)(emittedLog.attributes['execution']['functionName']).toBe('testFunction');
126
+ (0, vitest_1.expect)(emittedLog.attributes['execution']['invocationId']).toBe('inv-789');
127
+ (0, vitest_1.expect)(emittedLog.attributes['execution']['controller']).toBe('TestController');
128
+ (0, vitest_1.expect)(emittedLog.attributes['execution']['controllerMethod']).toBe('testMethod');
129
+ (0, vitest_1.expect)(emittedLog.attributes['execution']['origin']).toBe('mobile');
128
130
  }));
129
131
  (0, vitest_1.it)('deve incluir métricas de performance quando fornecido', () => __awaiter(void 0, void 0, void 0, function* () {
130
132
  const errorData = {
@@ -138,8 +140,8 @@ const api_logs_1 = require("@opentelemetry/api-logs");
138
140
  };
139
141
  yield standardLogger.logError(errorData);
140
142
  const emittedLog = mockLogger.emit.mock.calls[0][0];
141
- (0, vitest_1.expect)(emittedLog.attributes['duration.ms']).toBe(1500);
142
- (0, vitest_1.expect)(emittedLog.attributes['execution.success']).toBe(false);
143
+ (0, vitest_1.expect)(emittedLog.attributes['duration']['ms']).toBe(1500);
144
+ (0, vitest_1.expect)(emittedLog.attributes['execution']['success']).toBe(false);
143
145
  }));
144
146
  (0, vitest_1.it)('deve incluir contexto adicional quando fornecido', () => __awaiter(void 0, void 0, void 0, function* () {
145
147
  const errorData = {
@@ -163,7 +165,7 @@ const api_logs_1 = require("@opentelemetry/api-logs");
163
165
  };
164
166
  yield standardLogger.logError(errorData);
165
167
  const emittedLog = mockLogger.emit.mock.calls[0][0];
166
- (0, vitest_1.expect)(emittedLog.attributes['service.name']).toBe('test-service');
168
+ (0, vitest_1.expect)(emittedLog.attributes['service']['name']).toBe('test-service');
167
169
  }));
168
170
  (0, vitest_1.it)('deve adicionar timestamp automaticamente', () => __awaiter(void 0, void 0, void 0, function* () {
169
171
  const errorData = {
@@ -188,8 +190,8 @@ const api_logs_1 = require("@opentelemetry/api-logs");
188
190
  };
189
191
  yield standardLogger.logError(errorData);
190
192
  const emittedLog = mockLogger.emit.mock.calls[0][0];
191
- (0, vitest_1.expect)(emittedLog.attributes['user.uid']).toBe('user-123');
192
- (0, vitest_1.expect)(emittedLog.attributes['user.email']).toBeUndefined();
193
+ (0, vitest_1.expect)(emittedLog.attributes['user']['uid']).toBe('user-123');
194
+ (0, vitest_1.expect)(emittedLog.attributes['user']['email']).toBeUndefined();
193
195
  }));
194
196
  });
195
197
  (0, vitest_1.describe)('logInfo', () => {
@@ -218,8 +220,8 @@ const api_logs_1 = require("@opentelemetry/api-logs");
218
220
  };
219
221
  yield standardLogger.logInfo(infoData);
220
222
  const emittedLog = mockLogger.emit.mock.calls[0][0];
221
- (0, vitest_1.expect)(emittedLog.attributes['duration.ms']).toBe(250);
222
- (0, vitest_1.expect)(emittedLog.attributes['execution.success']).toBe(true);
223
+ (0, vitest_1.expect)(emittedLog.attributes['duration']['ms']).toBe(250);
224
+ (0, vitest_1.expect)(emittedLog.attributes['execution']['success']).toBe(true);
223
225
  }));
224
226
  });
225
227
  (0, vitest_1.describe)('logWarn', () => {
@@ -289,13 +291,12 @@ const api_logs_1 = require("@opentelemetry/api-logs");
289
291
  yield standardLogger.logInfo(fullData);
290
292
  const emittedLog = mockLogger.emit.mock.calls[0][0];
291
293
  const attrs = emittedLog.attributes;
292
- (0, vitest_1.expect)(attrs['service.name']).toBe(fullData.serviceName);
293
- (0, vitest_1.expect)(attrs['deployment.environment.name']).toBe('production');
294
- (0, vitest_1.expect)(attrs['error.type']).toBe('Error');
295
- (0, vitest_1.expect)(attrs['http.method']).toBe('GET');
296
- (0, vitest_1.expect)(attrs['user.uid']).toBe('user-abc');
297
- (0, vitest_1.expect)(attrs['request.id']).toBe('req-001');
298
- (0, vitest_1.expect)(attrs['duration.ms']).toBe(300);
294
+ (0, vitest_1.expect)(attrs['service']['name']).toBe(fullData.serviceName);
295
+ (0, vitest_1.expect)(attrs['error']['type']).toBe('Error');
296
+ (0, vitest_1.expect)(attrs['http']['method']).toBe('GET');
297
+ (0, vitest_1.expect)(attrs['user']['uid']).toBe('user-abc');
298
+ (0, vitest_1.expect)(attrs['execution']['requestId']).toBe('req-001');
299
+ (0, vitest_1.expect)(attrs['duration']['ms']).toBe(300);
299
300
  (0, vitest_1.expect)(attrs['context']).toBe(JSON.stringify({ custom: 'data' }));
300
301
  }));
301
302
  (0, vitest_1.it)('deve lidar com campos HTTP parciais', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -310,10 +311,10 @@ const api_logs_1 = require("@opentelemetry/api-logs");
310
311
  };
311
312
  yield standardLogger.logInfo(partialHttpData);
312
313
  const emittedLog = mockLogger.emit.mock.calls[0][0];
313
- (0, vitest_1.expect)(emittedLog.attributes['http.method']).toBe('POST');
314
- (0, vitest_1.expect)(emittedLog.attributes['http.endpoint']).toBe('/api/test');
315
- (0, vitest_1.expect)(emittedLog.attributes['http.url']).toBeUndefined();
316
- (0, vitest_1.expect)(emittedLog.attributes['http.status_code']).toBeUndefined();
314
+ (0, vitest_1.expect)(emittedLog.attributes['http']['method']).toBe('POST');
315
+ (0, vitest_1.expect)(emittedLog.attributes['http']['endpoint']).toBe('/api/test');
316
+ (0, vitest_1.expect)(emittedLog.attributes['http']['url']).toBeUndefined();
317
+ (0, vitest_1.expect)(emittedLog.attributes['http']['status_code']).toBeUndefined();
317
318
  }));
318
319
  });
319
320
  (0, vitest_1.describe)('construtor', () => {
@@ -326,7 +327,7 @@ const api_logs_1 = require("@opentelemetry/api-logs");
326
327
  };
327
328
  customLogger.logInfo(logData);
328
329
  const emittedLog = mockLogger.emit.mock.calls[0][0];
329
- (0, vitest_1.expect)(emittedLog.attributes['service.name']).toBe('test-service');
330
+ (0, vitest_1.expect)(emittedLog.attributes['service']['name']).toBe('test-service');
330
331
  });
331
332
  (0, vitest_1.it)('deve usar "unknown-service" como padrão quando não especificado', () => {
332
333
  process.env.SERVICE_NAME = '';
@@ -338,8 +339,8 @@ const api_logs_1 = require("@opentelemetry/api-logs");
338
339
  };
339
340
  defaultLogger.logInfo(logData);
340
341
  const emittedLog = mockLogger.emit.mock.calls[0][0];
341
- (0, vitest_1.expect)(emittedLog.attributes['service.name']).toBe('unknown-service');
342
+ (0, vitest_1.expect)(emittedLog.attributes['service']['name']).toBe('unknown-service');
342
343
  });
343
344
  });
344
345
  });
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9fX3Rlc3RzX18vbG9nZ2VyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBOEQ7QUFDOUQsc0NBQTJDO0FBQzNDLHNEQUF5RDtBQUV6RCxJQUFBLGlCQUFRLEVBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLElBQUksVUFBZSxDQUFDO0lBQ3BCLElBQUksVUFBZSxDQUFDO0lBQ3BCLElBQUksY0FBOEIsQ0FBQztJQUVuQyxJQUFBLG1CQUFVLEVBQUMsR0FBRyxFQUFFO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDO1FBQzFDLFVBQVUsR0FBRztZQUNYLElBQUksRUFBRSxXQUFFLENBQUMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztRQUNGLFVBQVUsR0FBRztZQUNYLFNBQVMsRUFBRSxXQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUNqQyxTQUFTLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDakMsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ2xCLE9BQU8sRUFBRSxlQUFlO3dCQUN4QixNQUFNLEVBQUUsY0FBYztxQkFDdkIsQ0FBQztpQkFDSCxDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUM7UUFDRixjQUFjLEdBQUcsSUFBSSx1QkFBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsaUJBQVEsRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1FBQ3hCLElBQUEsV0FBRSxFQUFDLG9DQUFvQyxFQUFFLEdBQVMsRUFBRTtZQUNsRCxNQUFNLFNBQVMsR0FBRztnQkFDaEIsT0FBTyxFQUFFLG9CQUFvQjtnQkFDN0IsV0FBVyxFQUFFLGNBQWM7Z0JB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O1FBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxXQUFFLEVBQUMsaUVBQWlFLEVBQUUsR0FBRyxFQUFFO1lBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUM5QixNQUFNLGFBQWEsR0FBRyxJQUFJLHVCQUFjLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sT0FBTyxHQUFHO2dCQUNkLE9BQU8sRUFBRSxNQUFNO2dCQUNmLFdBQVcsRUFBRSxFQUFFO2dCQUNmLFdBQVcsRUFBRSxNQUFNO2FBQ3BCLENBQUM7WUFFRixhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRS9CLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxJQUFBLGVBQU0sRUFBQyxVQUFVLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGl0LCBleHBlY3QsIHZpLCBiZWZvcmVFYWNoIH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IFN0YW5kYXJkTG9nZ2VyIH0gZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IFNldmVyaXR5TnVtYmVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpLWxvZ3MnO1xuXG5kZXNjcmliZSgnU3RhbmRhcmRMb2dnZXInLCAoKSA9PiB7XG4gIGxldCBtb2NrTG9nZ2VyOiBhbnk7XG4gIGxldCBtb2NrVHJhY2VyOiBhbnk7XG4gIGxldCBzdGFuZGFyZExvZ2dlcjogU3RhbmRhcmRMb2dnZXI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FID0gJ3Rlc3Qtc2VydmljZSc7XG4gICAgbW9ja0xvZ2dlciA9IHtcbiAgICAgIGVtaXQ6IHZpLmZuKCksXG4gICAgfTtcbiAgICBtb2NrVHJhY2VyID0ge1xuICAgICAgZ2V0VHJhY2VyOiB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgIHN0YXJ0U3BhbjogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgICAgIHNwYW5Db250ZXh0OiAoKSA9PiAoe1xuICAgICAgICAgICAgdHJhY2VJZDogJ3Rlc3QtdHJhY2UtaWQnLFxuICAgICAgICAgICAgc3BhbklkOiAndGVzdC1zcGFuLWlkJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICB9O1xuICAgIHN0YW5kYXJkTG9nZ2VyID0gbmV3IFN0YW5kYXJkTG9nZ2VyKG1vY2tMb2dnZXIsIG1vY2tUcmFjZXIpO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9nRXJyb3InLCAoKSA9PiB7XG4gICAgaXQoJ2RldmUgZW1pdGlyIGxvZyBjb20gc2V2ZXJpdHkgRVJST1InLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvckRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdUZXN0IGVycm9yIG1lc3NhZ2UnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBleHBlY3QobW9ja0xvZ2dlci5lbWl0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5zZXZlcml0eU51bWJlcikudG9CZShTZXZlcml0eU51bWJlci5FUlJPUik7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5zZXZlcml0eVRleHQpLnRvQmUoJ0VSUk9SJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5ib2R5KS50b0JlKCdUZXN0IGVycm9yIG1lc3NhZ2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgaW5mb3JtYcOnw7VlcyBkbyBlcnJvIHF1YW5kbyBmb3JuZWNpZG8nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignQ3VzdG9tIGVycm9yJyk7XG4gICAgICBjb25zdCBlcnJvckRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdFcnJvciBvY2N1cnJlZCcsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydlcnJvci50eXBlJ10pLnRvQmUoJ0Vycm9yJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydlcnJvci5tZXNzYWdlJ10pLnRvQmUoJ0N1c3RvbSBlcnJvcicpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snZXJyb3Iuc3RhY2snXSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgY29udGV4dG8gSFRUUCBxdWFuZG8gZm9ybmVjaWRvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXJyb3JEYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiAnSFRUUCBlcnJvcicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgaHR0cDoge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIHVybDogJy9hcGkvdGVzdCcsXG4gICAgICAgICAgZW5kcG9pbnQ6ICcvYXBpL3Rlc3QnLFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDUwMCxcbiAgICAgICAgICBoZWFkZXJzOiB7ICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgICBib2R5OiB7IHRlc3Q6ICdkYXRhJyB9LFxuICAgICAgICAgIHBhcmFtczogeyBpZDogJzEyMycgfSxcbiAgICAgICAgICBxdWVyeTogeyBmaWx0ZXI6ICdhY3RpdmUnIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwLm1ldGhvZCddKS50b0JlKCdQT1NUJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwLnVybCddKS50b0JlKCcvYXBpL3Rlc3QnKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2h0dHAuZW5kcG9pbnQnXSkudG9CZSgnL2FwaS90ZXN0Jyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwLnN0YXR1c19jb2RlJ10pLnRvQmUoNTAwKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2h0dHAuaGVhZGVycyddKS50b0JlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7ICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSlcbiAgICAgICk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwLmJvZHknXSkudG9CZShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyB0ZXN0OiAnZGF0YScgfSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGV2ZSBpbmNsdWlyIGluZm9ybWHDp8O1ZXMgZGUgdXN1w6FyaW8gcXVhbmRvIGZvcm5lY2lkbycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ1VzZXIgZXJyb3InLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIHVzZXI6IHtcbiAgICAgICAgICB1aWQ6ICd1c2VyLTEyMycsXG4gICAgICAgICAgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0Vycm9yKGVycm9yRGF0YSk7XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ3VzZXIudWlkJ10pLnRvQmUoJ3VzZXItMTIzJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWyd1c2VyLmVtYWlsJ10pLnRvQmUoJ3VzZXJAZXhhbXBsZS5jb20nKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgaW5mb3JtYcOnw7VlcyBkZSBleGVjdcOnw6NvIHF1YW5kbyBmb3JuZWNpZG8nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvckRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdFeGVjdXRpb24gZXJyb3InLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgIHJlcXVlc3RJZDogJ3JlcS0xMjMnLFxuICAgICAgICAgIGF3c1JlcXVlc3RJZDogJ2F3cy00NTYnLFxuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogJ3Rlc3RGdW5jdGlvbicsXG4gICAgICAgICAgaW52b2NhdGlvbklkOiAnaW52LTc4OScsXG4gICAgICAgICAgY29udHJvbGxlcjogJ1Rlc3RDb250cm9sbGVyJyxcbiAgICAgICAgICBjb250cm9sbGVyTWV0aG9kOiAndGVzdE1ldGhvZCcsXG4gICAgICAgICAgb3JpZ2luOiAnbW9iaWxlJyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0Vycm9yKGVycm9yRGF0YSk7XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ3JlcXVlc3QuaWQnXSkudG9CZSgncmVxLTEyMycpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snYXdzLnJlcXVlc3QuaWQnXSkudG9CZSgnYXdzLTQ1NicpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snZnVuY3Rpb24ubmFtZSddKS50b0JlKCd0ZXN0RnVuY3Rpb24nKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2Z1bmN0aW9uLmludm9jYXRpb25faWQnXSkudG9CZSgnaW52LTc4OScpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snY29udHJvbGxlci5uYW1lJ10pLnRvQmUoJ1Rlc3RDb250cm9sbGVyJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydjb250cm9sbGVyLm1ldGhvZCddKS50b0JlKCd0ZXN0TWV0aG9kJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydvcmlnaW4nXSkudG9CZSgnbW9iaWxlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGV2ZSBpbmNsdWlyIG3DqXRyaWNhcyBkZSBwZXJmb3JtYW5jZSBxdWFuZG8gZm9ybmVjaWRvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXJyb3JEYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiAnUGVyZm9ybWFuY2UgZXJyb3InLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgICAgZHVyYXRpb25NczogMTUwMCxcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0Vycm9yKGVycm9yRGF0YSk7XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2R1cmF0aW9uLm1zJ10pLnRvQmUoMTUwMCk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydleGVjdXRpb24uc3VjY2VzcyddKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgY29udGV4dG8gYWRpY2lvbmFsIHF1YW5kbyBmb3JuZWNpZG8nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvckRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdDb250ZXh0IGVycm9yJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgYWRkaXRpb25hbEluZm86ICdzb21lIGRhdGEnLFxuICAgICAgICAgIG5lc3RlZDogeyB2YWx1ZTogMTIzIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydjb250ZXh0J10pLnRvQmUoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHsgYWRkaXRpb25hbEluZm86ICdzb21lIGRhdGEnLCBuZXN0ZWQ6IHsgdmFsdWU6IDEyMyB9IH0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgdXNhciBzZXJ2aWNlTmFtZSBwYWRyw6NvIHF1YW5kbyBuw6NvIGZvcm5lY2lkbycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ0RlZmF1bHQgc2VydmljZSBlcnJvcicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAnJywgLy8gRW1wdHkgc3RyaW5nIHBhcmEgdGVzdGFyIGZhbGxiYWNrXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydzZXJ2aWNlLm5hbWUnXSkudG9CZSgndGVzdC1zZXJ2aWNlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGV2ZSBhZGljaW9uYXIgdGltZXN0YW1wIGF1dG9tYXRpY2FtZW50ZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ1RpbWVzdGFtcCB0ZXN0JyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nRXJyb3IoZXJyb3JEYXRhKTtcblxuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1sndGltZXN0YW1wJ10pLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWyd0aW1lc3RhbXAnXSkudG9NYXRjaChcbiAgICAgICAgL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfVxcLlxcZHszfVokL1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGZpbHRyYXIgdmFsb3JlcyB1bmRlZmluZWQgZSBudWxsIGRvcyBhdHJpYnV0b3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvckRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdGaWx0ZXIgdGVzdCcsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgdXNlcjoge1xuICAgICAgICAgIHVpZDogJ3VzZXItMTIzJyxcbiAgICAgICAgICBlbWFpbDogdW5kZWZpbmVkIGFzIGFueSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0Vycm9yKGVycm9yRGF0YSk7XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ3VzZXIudWlkJ10pLnRvQmUoJ3VzZXItMTIzJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWyd1c2VyLmVtYWlsJ10pLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ0luZm8nLCAoKSA9PiB7XG4gICAgaXQoJ2RldmUgZW1pdGlyIGxvZyBjb20gc2V2ZXJpdHkgSU5GTycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGluZm9EYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiAnSW5mbyBtZXNzYWdlJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nSW5mbyhpbmZvRGF0YSk7XG5cbiAgICAgIGV4cGVjdChtb2NrTG9nZ2VyLmVtaXQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLnNldmVyaXR5TnVtYmVyKS50b0JlKFNldmVyaXR5TnVtYmVyLklORk8pO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuc2V2ZXJpdHlUZXh0KS50b0JlKCdJTkZPJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5ib2R5KS50b0JlKCdJbmZvIG1lc3NhZ2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgZGFkb3MgZGUgcGVyZm9ybWFuY2UgZW0gbG9nIGRlIHN1Y2Vzc28nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBpbmZvRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ1JlcXVlc3QgY29tcGxldGVkJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBwZXJmb3JtYW5jZToge1xuICAgICAgICAgIGR1cmF0aW9uTXM6IDI1MCxcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nSW5mbyhpbmZvRGF0YSk7XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2R1cmF0aW9uLm1zJ10pLnRvQmUoMjUwKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2V4ZWN1dGlvbi5zdWNjZXNzJ10pLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dXYXJuJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGVtaXRpciBsb2cgY29tIHNldmVyaXR5IFdBUk4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB3YXJuRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ1dhcm5pbmcgbWVzc2FnZScsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ1dhcm4od2FybkRhdGEpO1xuXG4gICAgICBleHBlY3QobW9ja0xvZ2dlci5lbWl0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5zZXZlcml0eU51bWJlcikudG9CZShTZXZlcml0eU51bWJlci5XQVJOKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLnNldmVyaXR5VGV4dCkudG9CZSgnV0FSTicpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYm9keSkudG9CZSgnV2FybmluZyBtZXNzYWdlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dEZWJ1ZycsICgpID0+IHtcbiAgICBpdCgnZGV2ZSBlbWl0aXIgbG9nIGNvbSBzZXZlcml0eSBERUJVRycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRlYnVnRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ0RlYnVnIG1lc3NhZ2UnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAnZGV2ZWxvcG1lbnQnLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nRGVidWcoZGVidWdEYXRhKTtcblxuICAgICAgZXhwZWN0KG1vY2tMb2dnZXIuZW1pdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuc2V2ZXJpdHlOdW1iZXIpLnRvQmUoU2V2ZXJpdHlOdW1iZXIuREVCVUcpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuc2V2ZXJpdHlUZXh0KS50b0JlKCdERUJVRycpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYm9keSkudG9CZSgnRGVidWcgbWVzc2FnZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGRBdHRyaWJ1dGVzJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGNvbnN0cnVpciBhdHJpYnV0b3MgY29tcGxldG9zIGNvbSB0b2RvcyBvcyBjYW1wb3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ0NvbXBsZXRlIGxvZycsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAnY29tcGxldGUtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGVycm9yOiBuZXcgRXJyb3IoJ1Rlc3QgZXJyb3InKSxcbiAgICAgICAgaHR0cDoge1xuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgdXJsOiAnL2FwaS91c2VycycsXG4gICAgICAgICAgZW5kcG9pbnQ6ICcvYXBpL3VzZXJzJyxcbiAgICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXI6IHtcbiAgICAgICAgICB1aWQ6ICd1c2VyLWFiYycsXG4gICAgICAgICAgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgICAgcmVxdWVzdElkOiAncmVxLTAwMScsXG4gICAgICAgICAgYXdzUmVxdWVzdElkOiAnYXdzLTAwMicsXG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiAnZ2V0VXNlcnMnLFxuICAgICAgICAgIGludm9jYXRpb25JZDogJ2ludi0wMDMnLFxuICAgICAgICAgIGNvbnRyb2xsZXI6ICdVc2VyQ29udHJvbGxlcicsXG4gICAgICAgICAgY29udHJvbGxlck1ldGhvZDogJ2dldEFsbCcsXG4gICAgICAgICAgb3JpZ2luOiAnd2ViJyxcbiAgICAgICAgfSxcbiAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICBkdXJhdGlvbk1zOiAzMDAsXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIGN1c3RvbTogJ2RhdGEnLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nSW5mbyhmdWxsRGF0YSk7XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGNvbnN0IGF0dHJzID0gZW1pdHRlZExvZy5hdHRyaWJ1dGVzO1xuXG4gICAgICAvLyBWZXJpZmljYXIgdG9kb3Mgb3MgY2FtcG9zXG4gICAgICBleHBlY3QoYXR0cnNbJ3NlcnZpY2UubmFtZSddKS50b0JlKGZ1bGxEYXRhLnNlcnZpY2VOYW1lKTtcbiAgICAgIGV4cGVjdChhdHRyc1snZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJ10pLnRvQmUoJ3Byb2R1Y3Rpb24nKTtcbiAgICAgIGV4cGVjdChhdHRyc1snZXJyb3IudHlwZSddKS50b0JlKCdFcnJvcicpO1xuICAgICAgZXhwZWN0KGF0dHJzWydodHRwLm1ldGhvZCddKS50b0JlKCdHRVQnKTtcbiAgICAgIGV4cGVjdChhdHRyc1sndXNlci51aWQnXSkudG9CZSgndXNlci1hYmMnKTtcbiAgICAgIGV4cGVjdChhdHRyc1sncmVxdWVzdC5pZCddKS50b0JlKCdyZXEtMDAxJyk7XG4gICAgICBleHBlY3QoYXR0cnNbJ2R1cmF0aW9uLm1zJ10pLnRvQmUoMzAwKTtcbiAgICAgIGV4cGVjdChhdHRyc1snY29udGV4dCddKS50b0JlKEpTT04uc3RyaW5naWZ5KHsgY3VzdG9tOiAnZGF0YScgfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgbGlkYXIgY29tIGNhbXBvcyBIVFRQIHBhcmNpYWlzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcGFydGlhbEh0dHBEYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiAnUGFydGlhbCBIVFRQJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBodHRwOiB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgZW5kcG9pbnQ6ICcvYXBpL3Rlc3QnLFxuICAgICAgICAgIC8vIHVybCwgc3RhdHVzQ29kZSwgaGVhZGVycywgZXRjIG7Do28gZm9ybmVjaWRvc1xuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nSW5mbyhwYXJ0aWFsSHR0cERhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwLm1ldGhvZCddKS50b0JlKCdQT1NUJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwLmVuZHBvaW50J10pLnRvQmUoJy9hcGkvdGVzdCcpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snaHR0cC51cmwnXSkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snaHR0cC5zdGF0dXNfY29kZSddKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb25zdHJ1dG9yJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGFjZWl0YXIgc2VydmljZU5hbWUgcGFkcsOjbyBwZXJzb25hbGl6YWRvJywgKCkgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tTG9nZ2VyID0gbmV3IFN0YW5kYXJkTG9nZ2VyKG1vY2tMb2dnZXIsIG1vY2tUcmFjZXIpO1xuICAgICAgY29uc3QgbG9nRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ1Rlc3QnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJycsXG4gICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICB9O1xuXG4gICAgICBjdXN0b21Mb2dnZXIubG9nSW5mbyhsb2dEYXRhKTtcblxuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snc2VydmljZS5uYW1lJ10pLnRvQmUoJ3Rlc3Qtc2VydmljZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgdXNhciBcInVua25vd24tc2VydmljZVwiIGNvbW8gcGFkcsOjbyBxdWFuZG8gbsOjbyBlc3BlY2lmaWNhZG8nLCAoKSA9PiB7XG4gICAgICBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgPSAnJztcbiAgICAgIGNvbnN0IGRlZmF1bHRMb2dnZXIgPSBuZXcgU3RhbmRhcmRMb2dnZXIobW9ja0xvZ2dlciwgbW9ja1RyYWNlcik7XG4gICAgICBjb25zdCBsb2dEYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiAnVGVzdCcsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgIH07XG5cbiAgICAgIGRlZmF1bHRMb2dnZXIubG9nSW5mbyhsb2dEYXRhKTtcblxuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snc2VydmljZS5uYW1lJ10pLnRvQmUoJ3Vua25vd24tc2VydmljZScpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9fX3Rlc3RzX18vbG9nZ2VyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBOEQ7QUFDOUQsc0NBQTJDO0FBQzNDLHNEQUF5RDtBQUV6RCxJQUFBLGlCQUFRLEVBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLElBQUksVUFBZSxDQUFDO0lBQ3BCLElBQUksVUFBZSxDQUFDO0lBQ3BCLElBQUksY0FBOEIsQ0FBQztJQUVuQyxJQUFBLG1CQUFVLEVBQUMsR0FBRyxFQUFFO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDO1FBQzFDLFVBQVUsR0FBRztZQUNYLElBQUksRUFBRSxXQUFFLENBQUMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztRQUNGLFVBQVUsR0FBRztZQUNYLFNBQVMsRUFBRSxXQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUNqQyxTQUFTLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDakMsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ2xCLE9BQU8sRUFBRSxlQUFlO3dCQUN4QixNQUFNLEVBQUUsY0FBYztxQkFDdkIsQ0FBQztpQkFDSCxDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUM7UUFDRixjQUFjLEdBQUcsSUFBSSx1QkFBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsaUJBQVEsRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1FBQ3hCLElBQUEsV0FBRSxFQUFDLG9DQUFvQyxFQUFFLEdBQVMsRUFBRTtZQUNsRCxNQUFNLFNBQVMsR0FBRztnQkFDaEIsT0FBTyxFQUFFLG9CQUFvQjtnQkFDN0IsV0FBVyxFQUFFLGNBQWM7Z0JB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UUFDM0UsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGl0LCBleHBlY3QsIHZpLCBiZWZvcmVFYWNoIH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IFN0YW5kYXJkTG9nZ2VyIH0gZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IFNldmVyaXR5TnVtYmVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpLWxvZ3MnO1xuXG5kZXNjcmliZSgnU3RhbmRhcmRMb2dnZXInLCAoKSA9PiB7XG4gIGxldCBtb2NrTG9nZ2VyOiBhbnk7XG4gIGxldCBtb2NrVHJhY2VyOiBhbnk7XG4gIGxldCBzdGFuZGFyZExvZ2dlcjogU3RhbmRhcmRMb2dnZXI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FID0gJ3Rlc3Qtc2VydmljZSc7XG4gICAgbW9ja0xvZ2dlciA9IHtcbiAgICAgIGVtaXQ6IHZpLmZuKCksXG4gICAgfTtcbiAgICBtb2NrVHJhY2VyID0ge1xuICAgICAgZ2V0VHJhY2VyOiB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgIHN0YXJ0U3BhbjogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgICAgIHNwYW5Db250ZXh0OiAoKSA9PiAoe1xuICAgICAgICAgICAgdHJhY2VJZDogJ3Rlc3QtdHJhY2UtaWQnLFxuICAgICAgICAgICAgc3BhbklkOiAndGVzdC1zcGFuLWlkJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICB9O1xuICAgIHN0YW5kYXJkTG9nZ2VyID0gbmV3IFN0YW5kYXJkTG9nZ2VyKG1vY2tMb2dnZXIsIG1vY2tUcmFjZXIpO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9nRXJyb3InLCAoKSA9PiB7XG4gICAgaXQoJ2RldmUgZW1pdGlyIGxvZyBjb20gc2V2ZXJpdHkgRVJST1InLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvckRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdUZXN0IGVycm9yIG1lc3NhZ2UnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBleHBlY3QobW9ja0xvZ2dlci5lbWl0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5zZXZlcml0eU51bWJlcikudG9CZShTZXZlcml0eU51bWJlci5FUlJPUik7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5zZXZlcml0eVRleHQpLnRvQmUoJ0VSUk9SJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5ib2R5KS50b0JlKCdUZXN0IGVycm9yIG1lc3NhZ2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgaW5mb3JtYcOnw7VlcyBkbyBlcnJvIHF1YW5kbyBmb3JuZWNpZG8nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignQ3VzdG9tIGVycm9yJyk7XG4gICAgICBjb25zdCBlcnJvckRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdFcnJvciBvY2N1cnJlZCcsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydlcnJvciddWyd0eXBlJ10pLnRvQmUoJ0Vycm9yJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydlcnJvciddWydtZXNzYWdlJ10pLnRvQmUoJ0N1c3RvbSBlcnJvcicpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snZXJyb3InXVsnc3RhY2snXSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgY29udGV4dG8gSFRUUCBxdWFuZG8gZm9ybmVjaWRvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXJyb3JEYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiAnSFRUUCBlcnJvcicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgaHR0cDoge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIHVybDogJy9hcGkvdGVzdCcsXG4gICAgICAgICAgZW5kcG9pbnQ6ICcvYXBpL3Rlc3QnLFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDUwMCxcbiAgICAgICAgICBoZWFkZXJzOiB7ICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgICBib2R5OiB7IHRlc3Q6ICdkYXRhJyB9LFxuICAgICAgICAgIHBhcmFtczogeyBpZDogJzEyMycgfSxcbiAgICAgICAgICBxdWVyeTogeyBmaWx0ZXI6ICdhY3RpdmUnIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwJ11bJ21ldGhvZCddKS50b0JlKCdQT1NUJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwJ11bJ3VybCddKS50b0JlKCcvYXBpL3Rlc3QnKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2h0dHAnXVsnZW5kcG9pbnQnXSkudG9CZSgnL2FwaS90ZXN0Jyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwJ11bJ3N0YXR1c0NvZGUnXSkudG9CZSg1MDApO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snaHR0cCddWydoZWFkZXJzJ10pLnRvRXF1YWwoe1xuICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydodHRwJ11bJ2JvZHknXSkudG9FcXVhbCh7IHRlc3Q6ICdkYXRhJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgaW5mb3JtYcOnw7VlcyBkZSB1c3XDoXJpbyBxdWFuZG8gZm9ybmVjaWRvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXJyb3JEYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiAnVXNlciBlcnJvcicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgdXNlcjoge1xuICAgICAgICAgIHVpZDogJ3VzZXItMTIzJyxcbiAgICAgICAgICBlbWFpbDogJ3VzZXJAZXhhbXBsZS5jb20nLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nRXJyb3IoZXJyb3JEYXRhKTtcblxuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1sndXNlciddWyd1aWQnXSkudG9CZSgndXNlci0xMjMnKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ3VzZXInXVsnZW1haWwnXSkudG9CZSgndXNlckBleGFtcGxlLmNvbScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgaW5jbHVpciBpbmZvcm1hw6fDtWVzIGRlIGV4ZWN1w6fDo28gcXVhbmRvIGZvcm5lY2lkbycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ0V4ZWN1dGlvbiBlcnJvcicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgICAgcmVxdWVzdElkOiAncmVxLTEyMycsXG4gICAgICAgICAgYXdzUmVxdWVzdElkOiAnYXdzLTQ1NicsXG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiAndGVzdEZ1bmN0aW9uJyxcbiAgICAgICAgICBpbnZvY2F0aW9uSWQ6ICdpbnYtNzg5JyxcbiAgICAgICAgICBjb250cm9sbGVyOiAnVGVzdENvbnRyb2xsZXInLFxuICAgICAgICAgIGNvbnRyb2xsZXJNZXRob2Q6ICd0ZXN0TWV0aG9kJyxcbiAgICAgICAgICBvcmlnaW46ICdtb2JpbGUnLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nRXJyb3IoZXJyb3JEYXRhKTtcblxuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snZXhlY3V0aW9uJ11bJ3JlcXVlc3RJZCddKS50b0JlKCdyZXEtMTIzJyk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydleGVjdXRpb24nXVsnYXdzUmVxdWVzdElkJ10pLnRvQmUoXG4gICAgICAgICdhd3MtNDU2J1xuICAgICAgKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2V4ZWN1dGlvbiddWydmdW5jdGlvbk5hbWUnXSkudG9CZShcbiAgICAgICAgJ3Rlc3RGdW5jdGlvbidcbiAgICAgICk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydleGVjdXRpb24nXVsnaW52b2NhdGlvbklkJ10pLnRvQmUoXG4gICAgICAgICdpbnYtNzg5J1xuICAgICAgKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2V4ZWN1dGlvbiddWydjb250cm9sbGVyJ10pLnRvQmUoXG4gICAgICAgICdUZXN0Q29udHJvbGxlcidcbiAgICAgICk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydleGVjdXRpb24nXVsnY29udHJvbGxlck1ldGhvZCddKS50b0JlKFxuICAgICAgICAndGVzdE1ldGhvZCdcbiAgICAgICk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydleGVjdXRpb24nXVsnb3JpZ2luJ10pLnRvQmUoJ21vYmlsZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgaW5jbHVpciBtw6l0cmljYXMgZGUgcGVyZm9ybWFuY2UgcXVhbmRvIGZvcm5lY2lkbycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ1BlcmZvcm1hbmNlIGVycm9yJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBwZXJmb3JtYW5jZToge1xuICAgICAgICAgIGR1cmF0aW9uTXM6IDE1MDAsXG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydkdXJhdGlvbiddWydtcyddKS50b0JlKDE1MDApO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snZXhlY3V0aW9uJ11bJ3N1Y2Nlc3MnXSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGV2ZSBpbmNsdWlyIGNvbnRleHRvIGFkaWNpb25hbCBxdWFuZG8gZm9ybmVjaWRvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXJyb3JEYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiAnQ29udGV4dCBlcnJvcicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIGFkZGl0aW9uYWxJbmZvOiAnc29tZSBkYXRhJyxcbiAgICAgICAgICBuZXN0ZWQ6IHsgdmFsdWU6IDEyMyB9LFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nRXJyb3IoZXJyb3JEYXRhKTtcblxuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snY29udGV4dCddKS50b0JlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7IGFkZGl0aW9uYWxJbmZvOiAnc29tZSBkYXRhJywgbmVzdGVkOiB7IHZhbHVlOiAxMjMgfSB9KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIHVzYXIgc2VydmljZU5hbWUgcGFkcsOjbyBxdWFuZG8gbsOjbyBmb3JuZWNpZG8nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvckRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdEZWZhdWx0IHNlcnZpY2UgZXJyb3InLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJycsIC8vIEVtcHR5IHN0cmluZyBwYXJhIHRlc3RhciBmYWxsYmFja1xuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nRXJyb3IoZXJyb3JEYXRhKTtcblxuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snc2VydmljZSddWyduYW1lJ10pLnRvQmUoJ3Rlc3Qtc2VydmljZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgYWRpY2lvbmFyIHRpbWVzdGFtcCBhdXRvbWF0aWNhbWVudGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvckRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdUaW1lc3RhbXAgdGVzdCcsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0Vycm9yKGVycm9yRGF0YSk7XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ3RpbWVzdGFtcCddKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1sndGltZXN0YW1wJ10pLnRvTWF0Y2goXG4gICAgICAgIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn1cXC5cXGR7M31aJC9cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGV2ZSBmaWx0cmFyIHZhbG9yZXMgdW5kZWZpbmVkIGUgbnVsbCBkb3MgYXRyaWJ1dG9zJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXJyb3JEYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiAnRmlsdGVyIHRlc3QnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIHVzZXI6IHtcbiAgICAgICAgICB1aWQ6ICd1c2VyLTEyMycsXG4gICAgICAgICAgZW1haWw6IHVuZGVmaW5lZCBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcihlcnJvckRhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWyd1c2VyJ11bJ3VpZCddKS50b0JlKCd1c2VyLTEyMycpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1sndXNlciddWydlbWFpbCddKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dJbmZvJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGVtaXRpciBsb2cgY29tIHNldmVyaXR5IElORk8nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBpbmZvRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ0luZm8gbWVzc2FnZScsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0luZm8oaW5mb0RhdGEpO1xuXG4gICAgICBleHBlY3QobW9ja0xvZ2dlci5lbWl0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5zZXZlcml0eU51bWJlcikudG9CZShTZXZlcml0eU51bWJlci5JTkZPKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLnNldmVyaXR5VGV4dCkudG9CZSgnSU5GTycpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYm9keSkudG9CZSgnSW5mbyBtZXNzYWdlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGV2ZSBpbmNsdWlyIGRhZG9zIGRlIHBlcmZvcm1hbmNlIGVtIGxvZyBkZSBzdWNlc3NvJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaW5mb0RhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdSZXF1ZXN0IGNvbXBsZXRlZCcsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICBkdXJhdGlvbk1zOiAyNTAsXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0luZm8oaW5mb0RhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydkdXJhdGlvbiddWydtcyddKS50b0JlKDI1MCk7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5hdHRyaWJ1dGVzWydleGVjdXRpb24nXVsnc3VjY2VzcyddKS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9nV2FybicsICgpID0+IHtcbiAgICBpdCgnZGV2ZSBlbWl0aXIgbG9nIGNvbSBzZXZlcml0eSBXQVJOJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgd2FybkRhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdXYXJuaW5nIG1lc3NhZ2UnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3Rlc3Qtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dXYXJuKHdhcm5EYXRhKTtcblxuICAgICAgZXhwZWN0KG1vY2tMb2dnZXIuZW1pdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuc2V2ZXJpdHlOdW1iZXIpLnRvQmUoU2V2ZXJpdHlOdW1iZXIuV0FSTik7XG4gICAgICBleHBlY3QoZW1pdHRlZExvZy5zZXZlcml0eVRleHQpLnRvQmUoJ1dBUk4nKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmJvZHkpLnRvQmUoJ1dhcm5pbmcgbWVzc2FnZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9nRGVidWcnLCAoKSA9PiB7XG4gICAgaXQoJ2RldmUgZW1pdGlyIGxvZyBjb20gc2V2ZXJpdHkgREVCVUcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBkZWJ1Z0RhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdEZWJ1ZyBtZXNzYWdlJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd0ZXN0LXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ2RldmVsb3BtZW50JyxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0RlYnVnKGRlYnVnRGF0YSk7XG5cbiAgICAgIGV4cGVjdChtb2NrTG9nZ2VyLmVtaXQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLnNldmVyaXR5TnVtYmVyKS50b0JlKFNldmVyaXR5TnVtYmVyLkRFQlVHKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLnNldmVyaXR5VGV4dCkudG9CZSgnREVCVUcnKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmJvZHkpLnRvQmUoJ0RlYnVnIG1lc3NhZ2UnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkQXR0cmlidXRlcycsICgpID0+IHtcbiAgICBpdCgnZGV2ZSBjb25zdHJ1aXIgYXRyaWJ1dG9zIGNvbXBsZXRvcyBjb20gdG9kb3Mgb3MgY2FtcG9zJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZnVsbERhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdDb21wbGV0ZSBsb2cnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ2NvbXBsZXRlLXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBlcnJvcjogbmV3IEVycm9yKCdUZXN0IGVycm9yJyksXG4gICAgICAgIGh0dHA6IHtcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgIHVybDogJy9hcGkvdXNlcnMnLFxuICAgICAgICAgIGVuZHBvaW50OiAnL2FwaS91c2VycycsXG4gICAgICAgICAgc3RhdHVzQ29kZTogMjAwLFxuICAgICAgICB9LFxuICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgdWlkOiAndXNlci1hYmMnLFxuICAgICAgICAgIGVtYWlsOiAndXNlckBleGFtcGxlLmNvbScsXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgIHJlcXVlc3RJZDogJ3JlcS0wMDEnLFxuICAgICAgICAgIGF3c1JlcXVlc3RJZDogJ2F3cy0wMDInLFxuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogJ2dldFVzZXJzJyxcbiAgICAgICAgICBpbnZvY2F0aW9uSWQ6ICdpbnYtMDAzJyxcbiAgICAgICAgICBjb250cm9sbGVyOiAnVXNlckNvbnRyb2xsZXInLFxuICAgICAgICAgIGNvbnRyb2xsZXJNZXRob2Q6ICdnZXRBbGwnLFxuICAgICAgICAgIG9yaWdpbjogJ3dlYicsXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgICAgZHVyYXRpb25NczogMzAwLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICBjdXN0b206ICdkYXRhJyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0luZm8oZnVsbERhdGEpO1xuXG4gICAgICBjb25zdCBlbWl0dGVkTG9nID0gbW9ja0xvZ2dlci5lbWl0Lm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBjb25zdCBhdHRycyA9IGVtaXR0ZWRMb2cuYXR0cmlidXRlcztcblxuICAgICAgLy8gVmVyaWZpY2FyIHRvZG9zIG9zIGNhbXBvc1xuICAgICAgZXhwZWN0KGF0dHJzWydzZXJ2aWNlJ11bJ25hbWUnXSkudG9CZShmdWxsRGF0YS5zZXJ2aWNlTmFtZSk7XG4gICAgICBleHBlY3QoYXR0cnNbJ2Vycm9yJ11bJ3R5cGUnXSkudG9CZSgnRXJyb3InKTtcbiAgICAgIGV4cGVjdChhdHRyc1snaHR0cCddWydtZXRob2QnXSkudG9CZSgnR0VUJyk7XG4gICAgICBleHBlY3QoYXR0cnNbJ3VzZXInXVsndWlkJ10pLnRvQmUoJ3VzZXItYWJjJyk7XG4gICAgICBleHBlY3QoYXR0cnNbJ2V4ZWN1dGlvbiddWydyZXF1ZXN0SWQnXSkudG9CZSgncmVxLTAwMScpO1xuICAgICAgZXhwZWN0KGF0dHJzWydkdXJhdGlvbiddWydtcyddKS50b0JlKDMwMCk7XG4gICAgICBleHBlY3QoYXR0cnNbJ2NvbnRleHQnXSkudG9CZShKU09OLnN0cmluZ2lmeSh7IGN1c3RvbTogJ2RhdGEnIH0pKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGxpZGFyIGNvbSBjYW1wb3MgSFRUUCBwYXJjaWFpcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcnRpYWxIdHRwRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ1BhcnRpYWwgSFRUUCcsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgaHR0cDoge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGVuZHBvaW50OiAnL2FwaS90ZXN0JyxcbiAgICAgICAgICAvLyB1cmwsIHN0YXR1c0NvZGUsIGhlYWRlcnMsIGV0YyBuw6NvIGZvcm5lY2lkb3NcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHN0YW5kYXJkTG9nZ2VyLmxvZ0luZm8ocGFydGlhbEh0dHBEYXRhKTtcblxuICAgICAgY29uc3QgZW1pdHRlZExvZyA9IG1vY2tMb2dnZXIuZW1pdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snaHR0cCddWydtZXRob2QnXSkudG9CZSgnUE9TVCcpO1xuICAgICAgZXhwZWN0KGVtaXR0ZWRMb2cuYXR0cmlidXRlc1snaHR0cCddWydlbmRwb2ludCddKS50b0JlKCcvYXBpL3Rlc3QnKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2h0dHAnXVsndXJsJ10pLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ2h0dHAnXVsnc3RhdHVzX2NvZGUnXSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29uc3RydXRvcicsICgpID0+IHtcbiAgICBpdCgnZGV2ZSBhY2VpdGFyIHNlcnZpY2VOYW1lIHBhZHLDo28gcGVyc29uYWxpemFkbycsICgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUxvZ2dlciA9IG5ldyBTdGFuZGFyZExvZ2dlcihtb2NrTG9nZ2VyLCBtb2NrVHJhY2VyKTtcbiAgICAgIGNvbnN0IGxvZ0RhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6ICdUZXN0JyxcbiAgICAgICAgc2VydmljZU5hbWU6ICcnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgfTtcblxuICAgICAgY3VzdG9tTG9nZ2VyLmxvZ0luZm8obG9nRGF0YSk7XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ3NlcnZpY2UnXVsnbmFtZSddKS50b0JlKCd0ZXN0LXNlcnZpY2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIHVzYXIgXCJ1bmtub3duLXNlcnZpY2VcIiBjb21vIHBhZHLDo28gcXVhbmRvIG7Do28gZXNwZWNpZmljYWRvJywgKCkgPT4ge1xuICAgICAgcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FID0gJyc7XG4gICAgICBjb25zdCBkZWZhdWx0TG9nZ2VyID0gbmV3IFN0YW5kYXJkTG9nZ2VyKG1vY2tMb2dnZXIsIG1vY2tUcmFjZXIpO1xuICAgICAgY29uc3QgbG9nRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogJ1Rlc3QnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJycsXG4gICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICB9O1xuXG4gICAgICBkZWZhdWx0TG9nZ2VyLmxvZ0luZm8obG9nRGF0YSk7XG5cbiAgICAgIGNvbnN0IGVtaXR0ZWRMb2cgPSBtb2NrTG9nZ2VyLmVtaXQubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChlbWl0dGVkTG9nLmF0dHJpYnV0ZXNbJ3NlcnZpY2UnXVsnbmFtZSddKS50b0JlKCd1bmtub3duLXNlcnZpY2UnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==