aws-cdk 2.1.0 → 2.5.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 (62) hide show
  1. package/LICENSE +1 -1
  2. package/NOTICE +1 -1
  3. package/README.md +5 -1
  4. package/build-info.json +2 -2
  5. package/lib/api/aws-auth/sdk-provider.js +11 -21
  6. package/lib/api/aws-auth/sdk.d.ts +2 -0
  7. package/lib/api/aws-auth/sdk.js +4 -1
  8. package/lib/api/bootstrap/bootstrap-template.yaml +3 -1
  9. package/lib/api/deploy-stack.js +7 -1
  10. package/lib/api/hotswap/code-build-projects.d.ts +3 -0
  11. package/lib/api/hotswap/code-build-projects.js +53 -0
  12. package/lib/api/hotswap/common.d.ts +17 -1
  13. package/lib/api/hotswap/common.js +30 -6
  14. package/lib/api/hotswap/ecs-services.js +4 -18
  15. package/lib/api/hotswap/evaluate-cloudformation-template.d.ts +1 -0
  16. package/lib/api/hotswap/evaluate-cloudformation-template.js +6 -1
  17. package/lib/api/hotswap/lambda-functions.d.ts +2 -2
  18. package/lib/api/hotswap/lambda-functions.js +171 -46
  19. package/lib/api/hotswap/s3-bucket-deployments.d.ts +8 -0
  20. package/lib/api/hotswap/s3-bucket-deployments.js +106 -0
  21. package/lib/api/hotswap/stepfunctions-state-machines.js +11 -7
  22. package/lib/api/hotswap-deployments.d.ts +0 -7
  23. package/lib/api/hotswap-deployments.js +86 -12
  24. package/lib/cdk-toolkit.js +50 -16
  25. package/lib/commands/docs.js +2 -2
  26. package/lib/context-providers/index.d.ts +10 -5
  27. package/lib/context-providers/index.js +32 -19
  28. package/lib/context-providers/provider.d.ts +1 -0
  29. package/lib/context-providers/provider.js +6 -1
  30. package/lib/init.js +2 -1
  31. package/lib/plugin.d.ts +20 -0
  32. package/lib/plugin.js +28 -1
  33. package/lib/util/asset-publishing.js +9 -2
  34. package/lib/util/npm.d.ts +1 -0
  35. package/lib/util/npm.js +21 -0
  36. package/lib/version.d.ts +1 -1
  37. package/lib/version.js +22 -19
  38. package/npm-shrinkwrap.json +176 -43
  39. package/package.json +16 -16
  40. package/test/api/cloud-executable.test.js +3 -3
  41. package/test/api/hotswap/{lambda-hotswap-deployments.test.d.ts → code-build-projects-hotswap-deployments.test.d.ts} +0 -0
  42. package/test/api/hotswap/code-build-projects-hotswap-deployments.test.js +576 -0
  43. package/test/api/hotswap/hotswap-deployments.test.js +4 -2
  44. package/test/api/hotswap/hotswap-test-setup.d.ts +4 -1
  45. package/test/api/hotswap/hotswap-test-setup.js +13 -4
  46. package/test/api/hotswap/lambda-functions-hotswap-deployments.test.d.ts +1 -0
  47. package/test/api/hotswap/lambda-functions-hotswap-deployments.test.js +502 -0
  48. package/test/api/hotswap/lambda-versions-aliases-hotswap-deployments.test.d.ts +1 -0
  49. package/test/api/hotswap/lambda-versions-aliases-hotswap-deployments.test.js +197 -0
  50. package/test/api/hotswap/s3-bucket-hotswap-deployments.test.d.ts +1 -0
  51. package/test/api/hotswap/s3-bucket-hotswap-deployments.test.js +678 -0
  52. package/test/api/hotswap/state-machine-hotswap-deployments.test.js +12 -11
  53. package/test/cdk-toolkit.test.js +11 -4
  54. package/test/context-providers/generic.test.js +40 -7
  55. package/test/init.test.js +5 -4
  56. package/test/integ/cli/app/app.js +17 -2
  57. package/test/integ/cli/cli.integtest.js +13 -1
  58. package/test/integ/helpers/cdk.js +2 -1
  59. package/test/util/mock-sdk.d.ts +2 -0
  60. package/test/util/mock-sdk.js +5 -1
  61. package/test/version.test.js +45 -3
  62. package/test/api/hotswap/lambda-hotswap-deployments.test.js +0 -418
@@ -10,7 +10,9 @@ beforeEach(() => {
10
10
  mockUpdateLambdaCode = jest.fn();
11
11
  mockUpdateMachineDefinition = jest.fn();
12
12
  mockGetEndpointSuffix = jest.fn(() => 'amazonaws.com');
13
- hotswapMockSdkProvider.setUpdateFunctionCodeMock(mockUpdateLambdaCode);
13
+ hotswapMockSdkProvider.stubLambda({
14
+ updateFunctionCode: mockUpdateLambdaCode,
15
+ });
14
16
  hotswapMockSdkProvider.setUpdateStateMachineMock(mockUpdateMachineDefinition);
15
17
  hotswapMockSdkProvider.stubGetEndpointSuffix(mockGetEndpointSuffix);
16
18
  });
@@ -293,4 +295,4 @@ test('can correctly reference AWS::URLSuffix in hotswappable changes', async ()
293
295
  expect(hotswapMockSdkProvider.mockSdkProvider.sdk.removeCustomUserAgent)
294
296
  .toHaveBeenCalledWith('cdk-hotswap/success-lambda-function');
295
297
  });
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC1kZXBsb3ltZW50cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaG90c3dhcC1kZXBsb3ltZW50cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsOENBQThDO0FBRTlDLElBQUksc0JBQW9ELENBQUM7QUFDekQsSUFBSSxvQkFBNEcsQ0FBQztBQUNqSCxJQUFJLDJCQUFrSSxDQUFDO0FBQ3ZJLElBQUkscUJBQW1DLENBQUM7QUFFeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUNkLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ25ELG9CQUFvQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNqQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDeEMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2RCxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZFLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUUsc0JBQXNCLENBQUMscUJBQXFCLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxxRkFBcUYsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyRyxPQUFPO0lBQ1AsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFFeEcsT0FBTztJQUNQLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QyxNQUFNLENBQUMsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxDQUFDLENBQUMsVUFB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LEVBQUUsU0FBUztLQUNqQixDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV2RCxrQ0FBa0M7SUFDbEMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUM7U0FDckUsb0JBQW9CLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUMvRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQztTQUNyRSxvQkFBb0IsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFtYmRhLCBTdGVwRnVuY3Rpb25zIH0gZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgKiBhcyBzZXR1cCBmcm9tICcuL2hvdHN3YXAtdGVzdC1zZXR1cCc7XG5cbmxldCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyOiBzZXR1cC5Ib3Rzd2FwTW9ja1Nka1Byb3ZpZGVyO1xubGV0IG1vY2tVcGRhdGVMYW1iZGFDb2RlOiAocGFyYW1zOiBMYW1iZGEuVHlwZXMuVXBkYXRlRnVuY3Rpb25Db2RlUmVxdWVzdCkgPT4gTGFtYmRhLlR5cGVzLkZ1bmN0aW9uQ29uZmlndXJhdGlvbjtcbmxldCBtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb246IChwYXJhbXM6IFN0ZXBGdW5jdGlvbnMuVHlwZXMuVXBkYXRlU3RhdGVNYWNoaW5lSW5wdXQpID0+IFN0ZXBGdW5jdGlvbnMuVHlwZXMuVXBkYXRlU3RhdGVNYWNoaW5lT3V0cHV0O1xubGV0IG1vY2tHZXRFbmRwb2ludFN1ZmZpeDogKCkgPT4gc3RyaW5nO1xuXG5iZWZvcmVFYWNoKCgpID0+IHtcbiAgaG90c3dhcE1vY2tTZGtQcm92aWRlciA9IHNldHVwLnNldHVwSG90c3dhcFRlc3RzKCk7XG4gIG1vY2tVcGRhdGVMYW1iZGFDb2RlID0gamVzdC5mbigpO1xuICBtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24gPSBqZXN0LmZuKCk7XG4gIG1vY2tHZXRFbmRwb2ludFN1ZmZpeCA9IGplc3QuZm4oKCkgPT4gJ2FtYXpvbmF3cy5jb20nKTtcbiAgaG90c3dhcE1vY2tTZGtQcm92aWRlci5zZXRVcGRhdGVGdW5jdGlvbkNvZGVNb2NrKG1vY2tVcGRhdGVMYW1iZGFDb2RlKTtcbiAgaG90c3dhcE1vY2tTZGtQcm92aWRlci5zZXRVcGRhdGVTdGF0ZU1hY2hpbmVNb2NrKG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbik7XG4gIGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIuc3R1YkdldEVuZHBvaW50U3VmZml4KG1vY2tHZXRFbmRwb2ludFN1ZmZpeCk7XG59KTtcblxudGVzdCgncmV0dXJucyBhIGRlcGxveVN0YWNrUmVzdWx0IHdpdGggbm9PcD10cnVlIHdoZW4gaXQgcmVjZWl2ZXMgYW4gZW1wdHkgc2V0IG9mIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95U3RhY2tSZXN1bHQgPSBhd2FpdCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZigpKTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkubm90LnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KGRlcGxveVN0YWNrUmVzdWx0Py5ub09wKS50b0JlVHJ1dGh5KCk7XG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdD8uc3RhY2tBcm4pLnRvRXF1YWwoc2V0dXAuU1RBQ0tfSUQpO1xufSk7XG5cbnRlc3QoJ0EgY2hhbmdlIHRvIG9ubHkgYSBub24taG90c3dhcHBhYmxlIHJlc291cmNlIHJlc3VsdHMgaW4gYSBmdWxsIGRlcGxveW1lbnQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIFNvbWV0aGluZ0Vsc2U6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlNvbWV0aGluZ0Vsc2UnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgUHJvcDogJ29sZC12YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIFNvbWV0aGluZ0Vsc2U6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U29tZXRoaW5nRWxzZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgUHJvcDogJ25ldy12YWx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVMYW1iZGFDb2RlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ0EgY2hhbmdlIHRvIGJvdGggYSBob3Rzd2FwcGFibGUgcmVzb3VyY2UgYW5kIGEgbm9uLWhvdHN3YXBwYWJsZSByZXNvdXJjZSByZXN1bHRzIGluIGEgZnVsbCBkZXBsb3ltZW50JywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBGdW5jOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgQ29kZToge1xuICAgICAgICAgICAgUzNCdWNrZXQ6ICdjdXJyZW50LWJ1Y2tldCcsXG4gICAgICAgICAgICBTM0tleTogJ2N1cnJlbnQta2V5JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEZ1bmN0aW9uTmFtZTogJ215LWZ1bmN0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb2xkLXBhdGgnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFNvbWV0aGluZ0Vsc2U6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlNvbWV0aGluZ0Vsc2UnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgUHJvcDogJ29sZC12YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIEZ1bmM6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBDb2RlOiB7XG4gICAgICAgICAgICAgIFMzQnVja2V0OiAnY3VycmVudC1idWNrZXQnLFxuICAgICAgICAgICAgICBTM0tleTogJ25ldy1rZXknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogJ215LWZ1bmN0aW9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnbmV3LXBhdGgnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFNvbWV0aGluZ0Vsc2U6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U29tZXRoaW5nRWxzZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgUHJvcDogJ25ldy12YWx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVMYW1iZGFDb2RlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ2NoYW5nZXMgb25seSB0byBDREs6Ok1ldGFkYXRhIHJlc3VsdCBpbiBhIG5vT3AnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE1ldGFEYXRhOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkNESzo6TWV0YURhdGEnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgUHJvcDogJ29sZC12YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE1ldGFEYXRhOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6Q0RLOjpNZXRhZGF0YScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgUHJvcDogJ25ldy12YWx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLm5vdC50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdD8ubm9PcCkudG9FcXVhbCh0cnVlKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVMYW1iZGFDb2RlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ3Jlc291cmNlIGRlbGV0aW9ucyByZXF1aXJlIGZ1bGwgZGVwbG95bWVudHMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2YoKTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkudG9CZVVuZGVmaW5lZCgpO1xuICBleHBlY3QobW9ja1VwZGF0ZUxhbWJkYUNvZGUpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnY2FuIGNvcnJlY3RseSByZWZlcmVuY2UgQVdTOjpQYXJ0aXRpb24gaW4gaG90c3dhcHBhYmxlIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIEZ1bmM6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBDb2RlOiB7XG4gICAgICAgICAgICBTM0J1Y2tldDogJ2N1cnJlbnQtYnVja2V0JyxcbiAgICAgICAgICAgIFMzS2V5OiAnY3VycmVudC1rZXknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgRnVuY3Rpb25OYW1lOiB7XG4gICAgICAgICAgICAnRm46OkpvaW4nOiBbXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgeyBSZWY6ICdBV1M6OlBhcnRpdGlvbicgfSxcbiAgICAgICAgICAgICAgICAnLScsXG4gICAgICAgICAgICAgICAgJ215LWZ1bmN0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnbmV3LXBhdGgnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBGdW5jOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgQ29kZToge1xuICAgICAgICAgICAgICBTM0J1Y2tldDogJ2N1cnJlbnQtYnVja2V0JyxcbiAgICAgICAgICAgICAgUzNLZXk6ICduZXcta2V5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGdW5jdGlvbk5hbWU6IHtcbiAgICAgICAgICAgICAgJ0ZuOjpKb2luJzogW1xuICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIHsgUmVmOiAnQVdTOjpQYXJ0aXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAnLScsXG4gICAgICAgICAgICAgICAgICAnbXktZnVuY3Rpb24nLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICduZXctcGF0aCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLm5vdC50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTGFtYmRhQ29kZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgIEZ1bmN0aW9uTmFtZTogJ2F3cy1teS1mdW5jdGlvbicsXG4gICAgUzNCdWNrZXQ6ICdjdXJyZW50LWJ1Y2tldCcsXG4gICAgUzNLZXk6ICduZXcta2V5JyxcbiAgfSk7XG59KTtcblxudGVzdCgnY2FuIGNvcnJlY3RseSByZWZlcmVuY2UgQVdTOjpVUkxTdWZmaXggaW4gaG90c3dhcHBhYmxlIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIEZ1bmM6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBDb2RlOiB7XG4gICAgICAgICAgICBTM0J1Y2tldDogJ2N1cnJlbnQtYnVja2V0JyxcbiAgICAgICAgICAgIFMzS2V5OiAnY3VycmVudC1rZXknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgRnVuY3Rpb25OYW1lOiB7XG4gICAgICAgICAgICAnRm46OkpvaW4nOiBbJycsIFtcbiAgICAgICAgICAgICAgJ215LWZ1bmN0aW9uLScsXG4gICAgICAgICAgICAgIHsgUmVmOiAnQVdTOjpVUkxTdWZmaXgnIH0sXG4gICAgICAgICAgICAgICctJyxcbiAgICAgICAgICAgICAgeyBSZWY6ICdBV1M6OlVSTFN1ZmZpeCcgfSxcbiAgICAgICAgICAgIF1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29sZC1wYXRoJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2Yoe1xuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgRnVuYzoge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIENvZGU6IHtcbiAgICAgICAgICAgICAgUzNCdWNrZXQ6ICdjdXJyZW50LWJ1Y2tldCcsXG4gICAgICAgICAgICAgIFMzS2V5OiAnbmV3LWtleScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRnVuY3Rpb25OYW1lOiB7XG4gICAgICAgICAgICAgICdGbjo6Sm9pbic6IFsnJywgW1xuICAgICAgICAgICAgICAgICdteS1mdW5jdGlvbi0nLFxuICAgICAgICAgICAgICAgIHsgUmVmOiAnQVdTOjpVUkxTdWZmaXgnIH0sXG4gICAgICAgICAgICAgICAgJy0nLFxuICAgICAgICAgICAgICAgIHsgUmVmOiAnQVdTOjpVUkxTdWZmaXgnIH0sXG4gICAgICAgICAgICAgIF1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnbmV3LXBhdGgnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95U3RhY2tSZXN1bHQgPSBhd2FpdCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KGNka1N0YWNrQXJ0aWZhY3QpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGRlcGxveVN0YWNrUmVzdWx0KS5ub3QudG9CZVVuZGVmaW5lZCgpO1xuICBleHBlY3QobW9ja1VwZGF0ZUxhbWJkYUNvZGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICBGdW5jdGlvbk5hbWU6ICdteS1mdW5jdGlvbi1hbWF6b25hd3MuY29tLWFtYXpvbmF3cy5jb20nLFxuICAgIFMzQnVja2V0OiAnY3VycmVudC1idWNrZXQnLFxuICAgIFMzS2V5OiAnbmV3LWtleScsXG4gIH0pO1xuICBleHBlY3QobW9ja0dldEVuZHBvaW50U3VmZml4KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG5cbiAgLy8gdGhlIFVzZXItQWdlbnQgaXMgc2V0IGNvcnJlY3RseVxuICBleHBlY3QoaG90c3dhcE1vY2tTZGtQcm92aWRlci5tb2NrU2RrUHJvdmlkZXIuc2RrLmFwcGVuZEN1c3RvbVVzZXJBZ2VudClcbiAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2Nkay1ob3Rzd2FwL3N1Y2Nlc3MtbGFtYmRhLWZ1bmN0aW9uJyk7XG4gIGV4cGVjdChob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLm1vY2tTZGtQcm92aWRlci5zZGsucmVtb3ZlQ3VzdG9tVXNlckFnZW50KVxuICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnY2RrLWhvdHN3YXAvc3VjY2Vzcy1sYW1iZGEtZnVuY3Rpb24nKTtcbn0pO1xuIl19
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC1kZXBsb3ltZW50cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaG90c3dhcC1kZXBsb3ltZW50cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsOENBQThDO0FBRTlDLElBQUksc0JBQW9ELENBQUM7QUFDekQsSUFBSSxvQkFBNEcsQ0FBQztBQUNqSCxJQUFJLDJCQUFrSSxDQUFDO0FBQ3ZJLElBQUkscUJBQW1DLENBQUM7QUFFeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUNkLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ25ELG9CQUFvQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNqQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDeEMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2RCxzQkFBc0IsQ0FBQyxVQUFVLENBQUM7UUFDaEMsa0JBQWtCLEVBQUUsb0JBQW9CO0tBQ3pDLENBQUMsQ0FBQztJQUNILHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUUsc0JBQXNCLENBQUMscUJBQXFCLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxxRkFBcUYsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyRyxPQUFPO0lBQ1AsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFFeEcsT0FBTztJQUNQLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QyxNQUFNLENBQUMsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDN0MsTUFBTSxDQUFDLGlCQUFpQixhQUFqQixpQkFBaUIsdUJBQWpCLGlCQUFpQixDQUFFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsMkVBQTJFLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDM0YsUUFBUTtJQUNSLEtBQUssQ0FBQywwQkFBMEIsQ0FBQztRQUMvQixTQUFTLEVBQUU7WUFDVCxhQUFhLEVBQUU7Z0JBQ2IsSUFBSSxFQUFFLG9DQUFvQztnQkFDMUMsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxXQUFXO2lCQUNsQjthQUNGO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFDSCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNoRCxRQUFRLEVBQUU7WUFDUixTQUFTLEVBQUU7Z0JBQ1QsYUFBYSxFQUFFO29CQUNiLElBQUksRUFBRSxvQ0FBb0M7b0JBQzFDLFVBQVUsRUFBRTt3QkFDVixJQUFJLEVBQUUsV0FBVztxQkFDbEI7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTztJQUNQLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTlGLE9BQU87SUFDUCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMzRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUN0RCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx1R0FBdUcsRUFBRSxLQUFLLElBQUksRUFBRTtJQUN2SCxRQUFRO0lBQ1IsS0FBSyxDQUFDLDBCQUEwQixDQUFDO1FBQy9CLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsdUJBQXVCO2dCQUM3QixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFO3dCQUNKLFFBQVEsRUFBRSxnQkFBZ0I7d0JBQzFCLEtBQUssRUFBRSxhQUFhO3FCQUNyQjtvQkFDRCxZQUFZLEVBQUUsYUFBYTtpQkFDNUI7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLGdCQUFnQixFQUFFLFVBQVU7aUJBQzdCO2FBQ0Y7WUFDRCxhQUFhLEVBQUU7Z0JBQ2IsSUFBSSxFQUFFLG9DQUFvQztnQkFDMUMsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxXQUFXO2lCQUNsQjthQUNGO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFDSCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNoRCxRQUFRLEVBQUU7WUFDUixTQUFTLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFO29CQUNKLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLFVBQVUsRUFBRTt3QkFDVixJQUFJLEVBQUU7NEJBQ0osUUFBUSxFQUFFLGdCQUFnQjs0QkFDMUIsS0FBSyxFQUFFLFNBQVM7eUJBQ2pCO3dCQUNELFlBQVksRUFBRSxhQUFhO3FCQUM1QjtvQkFDRCxRQUFRLEVBQUU7d0JBQ1IsZ0JBQWdCLEVBQUUsVUFBVTtxQkFDN0I7aUJBQ0Y7Z0JBQ0QsYUFBYSxFQUFFO29CQUNiLElBQUksRUFBRSxvQ0FBb0M7b0JBQzFDLFVBQVUsRUFBRTt3QkFDVixJQUFJLEVBQUUsV0FBVztxQkFDbEI7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTztJQUNQLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTlGLE9BQU87SUFDUCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMzRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUN0RCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxnREFBZ0QsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNoRSxRQUFRO0lBQ1IsS0FBSyxDQUFDLDBCQUEwQixDQUFDO1FBQy9CLFNBQVMsRUFBRTtZQUNULFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLFdBQVc7aUJBQ2xCO2FBQ0Y7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1FBQ2hELFFBQVEsRUFBRTtZQUNSLFNBQVMsRUFBRTtnQkFDVCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsVUFBVSxFQUFFO3dCQUNWLElBQUksRUFBRSxXQUFXO3FCQUNsQjtpQkFDRjthQUNGO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPO0lBQ1AsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFOUYsT0FBTztJQUNQLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QyxNQUFNLENBQUMsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzNELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDZDQUE2QyxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzdELFFBQVE7SUFDUixLQUFLLENBQUMsMEJBQTBCLENBQUM7UUFDL0IsU0FBUyxFQUFFO1lBQ1QsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxrQ0FBa0M7YUFDekM7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFFcEQsT0FBTztJQUNQLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTlGLE9BQU87SUFDUCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNwRCxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUM3RCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxnRUFBZ0UsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNoRixRQUFRO0lBQ1IsS0FBSyxDQUFDLDBCQUEwQixDQUFDO1FBQy9CLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsdUJBQXVCO2dCQUM3QixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFO3dCQUNKLFFBQVEsRUFBRSxnQkFBZ0I7d0JBQzFCLEtBQUssRUFBRSxhQUFhO3FCQUNyQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osVUFBVSxFQUFFOzRCQUNWLEVBQUU7NEJBQ0Y7Z0NBQ0UsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUU7Z0NBQ3pCLEdBQUc7Z0NBQ0gsYUFBYTs2QkFDZDt5QkFDRjtxQkFDRjtpQkFDRjtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsZ0JBQWdCLEVBQUUsVUFBVTtpQkFDN0I7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDaEQsUUFBUSxFQUFFO1lBQ1IsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUUsdUJBQXVCO29CQUM3QixVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFOzRCQUNKLFFBQVEsRUFBRSxnQkFBZ0I7NEJBQzFCLEtBQUssRUFBRSxTQUFTO3lCQUNqQjt3QkFDRCxZQUFZLEVBQUU7NEJBQ1osVUFBVSxFQUFFO2dDQUNWLEVBQUU7Z0NBQ0Y7b0NBQ0UsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUU7b0NBQ3pCLEdBQUc7b0NBQ0gsYUFBYTtpQ0FDZDs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7d0JBQ1IsZ0JBQWdCLEVBQUUsVUFBVTtxQkFDN0I7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTztJQUNQLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTlGLE9BQU87SUFDUCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsb0JBQW9CLENBQUM7UUFDaEQsWUFBWSxFQUFFLGlCQUFpQjtRQUMvQixRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLEtBQUssRUFBRSxTQUFTO0tBQ2pCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGdFQUFnRSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ2hGLFFBQVE7SUFDUixLQUFLLENBQUMsMEJBQTBCLENBQUM7UUFDL0IsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUU7d0JBQ0osUUFBUSxFQUFFLGdCQUFnQjt3QkFDMUIsS0FBSyxFQUFFLGFBQWE7cUJBQ3JCO29CQUNELFlBQVksRUFBRTt3QkFDWixVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0NBQ2YsY0FBYztnQ0FDZCxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRTtnQ0FDekIsR0FBRztnQ0FDSCxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRTs2QkFDMUIsQ0FBQztxQkFDSDtpQkFDRjtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsZ0JBQWdCLEVBQUUsVUFBVTtpQkFDN0I7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDaEQsUUFBUSxFQUFFO1lBQ1IsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUUsdUJBQXVCO29CQUM3QixVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFOzRCQUNKLFFBQVEsRUFBRSxnQkFBZ0I7NEJBQzFCLEtBQUssRUFBRSxTQUFTO3lCQUNqQjt3QkFDRCxZQUFZLEVBQUU7NEJBQ1osVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO29DQUNmLGNBQWM7b0NBQ2QsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUU7b0NBQ3pCLEdBQUc7b0NBQ0gsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUU7aUNBQzFCLENBQUM7eUJBQ0g7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLGdCQUFnQixFQUFFLFVBQVU7cUJBQzdCO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU5RixPQUFPO0lBQ1AsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1FBQ2hELFlBQVksRUFBRSx5Q0FBeUM7UUFDdkQsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV2RCxrQ0FBa0M7SUFDbEMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUM7U0FDckUsb0JBQW9CLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUMvRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQztTQUNyRSxvQkFBb0IsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFtYmRhLCBTdGVwRnVuY3Rpb25zIH0gZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgKiBhcyBzZXR1cCBmcm9tICcuL2hvdHN3YXAtdGVzdC1zZXR1cCc7XG5cbmxldCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyOiBzZXR1cC5Ib3Rzd2FwTW9ja1Nka1Byb3ZpZGVyO1xubGV0IG1vY2tVcGRhdGVMYW1iZGFDb2RlOiAocGFyYW1zOiBMYW1iZGEuVHlwZXMuVXBkYXRlRnVuY3Rpb25Db2RlUmVxdWVzdCkgPT4gTGFtYmRhLlR5cGVzLkZ1bmN0aW9uQ29uZmlndXJhdGlvbjtcbmxldCBtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb246IChwYXJhbXM6IFN0ZXBGdW5jdGlvbnMuVHlwZXMuVXBkYXRlU3RhdGVNYWNoaW5lSW5wdXQpID0+IFN0ZXBGdW5jdGlvbnMuVHlwZXMuVXBkYXRlU3RhdGVNYWNoaW5lT3V0cHV0O1xubGV0IG1vY2tHZXRFbmRwb2ludFN1ZmZpeDogKCkgPT4gc3RyaW5nO1xuXG5iZWZvcmVFYWNoKCgpID0+IHtcbiAgaG90c3dhcE1vY2tTZGtQcm92aWRlciA9IHNldHVwLnNldHVwSG90c3dhcFRlc3RzKCk7XG4gIG1vY2tVcGRhdGVMYW1iZGFDb2RlID0gamVzdC5mbigpO1xuICBtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24gPSBqZXN0LmZuKCk7XG4gIG1vY2tHZXRFbmRwb2ludFN1ZmZpeCA9IGplc3QuZm4oKCkgPT4gJ2FtYXpvbmF3cy5jb20nKTtcbiAgaG90c3dhcE1vY2tTZGtQcm92aWRlci5zdHViTGFtYmRhKHtcbiAgICB1cGRhdGVGdW5jdGlvbkNvZGU6IG1vY2tVcGRhdGVMYW1iZGFDb2RlLFxuICB9KTtcbiAgaG90c3dhcE1vY2tTZGtQcm92aWRlci5zZXRVcGRhdGVTdGF0ZU1hY2hpbmVNb2NrKG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbik7XG4gIGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIuc3R1YkdldEVuZHBvaW50U3VmZml4KG1vY2tHZXRFbmRwb2ludFN1ZmZpeCk7XG59KTtcblxudGVzdCgncmV0dXJucyBhIGRlcGxveVN0YWNrUmVzdWx0IHdpdGggbm9PcD10cnVlIHdoZW4gaXQgcmVjZWl2ZXMgYW4gZW1wdHkgc2V0IG9mIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95U3RhY2tSZXN1bHQgPSBhd2FpdCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZigpKTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkubm90LnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KGRlcGxveVN0YWNrUmVzdWx0Py5ub09wKS50b0JlVHJ1dGh5KCk7XG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdD8uc3RhY2tBcm4pLnRvRXF1YWwoc2V0dXAuU1RBQ0tfSUQpO1xufSk7XG5cbnRlc3QoJ0EgY2hhbmdlIHRvIG9ubHkgYSBub24taG90c3dhcHBhYmxlIHJlc291cmNlIHJlc3VsdHMgaW4gYSBmdWxsIGRlcGxveW1lbnQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIFNvbWV0aGluZ0Vsc2U6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlNvbWV0aGluZ0Vsc2UnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgUHJvcDogJ29sZC12YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIFNvbWV0aGluZ0Vsc2U6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U29tZXRoaW5nRWxzZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgUHJvcDogJ25ldy12YWx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVMYW1iZGFDb2RlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ0EgY2hhbmdlIHRvIGJvdGggYSBob3Rzd2FwcGFibGUgcmVzb3VyY2UgYW5kIGEgbm9uLWhvdHN3YXBwYWJsZSByZXNvdXJjZSByZXN1bHRzIGluIGEgZnVsbCBkZXBsb3ltZW50JywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBGdW5jOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgQ29kZToge1xuICAgICAgICAgICAgUzNCdWNrZXQ6ICdjdXJyZW50LWJ1Y2tldCcsXG4gICAgICAgICAgICBTM0tleTogJ2N1cnJlbnQta2V5JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEZ1bmN0aW9uTmFtZTogJ215LWZ1bmN0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb2xkLXBhdGgnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFNvbWV0aGluZ0Vsc2U6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlNvbWV0aGluZ0Vsc2UnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgUHJvcDogJ29sZC12YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIEZ1bmM6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBDb2RlOiB7XG4gICAgICAgICAgICAgIFMzQnVja2V0OiAnY3VycmVudC1idWNrZXQnLFxuICAgICAgICAgICAgICBTM0tleTogJ25ldy1rZXknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogJ215LWZ1bmN0aW9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnbmV3LXBhdGgnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFNvbWV0aGluZ0Vsc2U6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U29tZXRoaW5nRWxzZScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgUHJvcDogJ25ldy12YWx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVMYW1iZGFDb2RlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ2NoYW5nZXMgb25seSB0byBDREs6Ok1ldGFkYXRhIHJlc3VsdCBpbiBhIG5vT3AnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE1ldGFEYXRhOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkNESzo6TWV0YURhdGEnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgUHJvcDogJ29sZC12YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE1ldGFEYXRhOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6Q0RLOjpNZXRhZGF0YScsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgUHJvcDogJ25ldy12YWx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLm5vdC50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdD8ubm9PcCkudG9FcXVhbCh0cnVlKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVMYW1iZGFDb2RlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ3Jlc291cmNlIGRlbGV0aW9ucyByZXF1aXJlIGZ1bGwgZGVwbG95bWVudHMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE1hY2hpbmU6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2YoKTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkudG9CZVVuZGVmaW5lZCgpO1xuICBleHBlY3QobW9ja1VwZGF0ZUxhbWJkYUNvZGUpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnY2FuIGNvcnJlY3RseSByZWZlcmVuY2UgQVdTOjpQYXJ0aXRpb24gaW4gaG90c3dhcHBhYmxlIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIEZ1bmM6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBDb2RlOiB7XG4gICAgICAgICAgICBTM0J1Y2tldDogJ2N1cnJlbnQtYnVja2V0JyxcbiAgICAgICAgICAgIFMzS2V5OiAnY3VycmVudC1rZXknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgRnVuY3Rpb25OYW1lOiB7XG4gICAgICAgICAgICAnRm46OkpvaW4nOiBbXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgeyBSZWY6ICdBV1M6OlBhcnRpdGlvbicgfSxcbiAgICAgICAgICAgICAgICAnLScsXG4gICAgICAgICAgICAgICAgJ215LWZ1bmN0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnbmV3LXBhdGgnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY2RrU3RhY2tBcnRpZmFjdCA9IHNldHVwLmNka1N0YWNrQXJ0aWZhY3RPZih7XG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBGdW5jOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgQ29kZToge1xuICAgICAgICAgICAgICBTM0J1Y2tldDogJ2N1cnJlbnQtYnVja2V0JyxcbiAgICAgICAgICAgICAgUzNLZXk6ICduZXcta2V5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGdW5jdGlvbk5hbWU6IHtcbiAgICAgICAgICAgICAgJ0ZuOjpKb2luJzogW1xuICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIHsgUmVmOiAnQVdTOjpQYXJ0aXRpb24nIH0sXG4gICAgICAgICAgICAgICAgICAnLScsXG4gICAgICAgICAgICAgICAgICAnbXktZnVuY3Rpb24nLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICduZXctcGF0aCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLm5vdC50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChtb2NrVXBkYXRlTGFtYmRhQ29kZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgIEZ1bmN0aW9uTmFtZTogJ2F3cy1teS1mdW5jdGlvbicsXG4gICAgUzNCdWNrZXQ6ICdjdXJyZW50LWJ1Y2tldCcsXG4gICAgUzNLZXk6ICduZXcta2V5JyxcbiAgfSk7XG59KTtcblxudGVzdCgnY2FuIGNvcnJlY3RseSByZWZlcmVuY2UgQVdTOjpVUkxTdWZmaXggaW4gaG90c3dhcHBhYmxlIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIHNldHVwLnNldEN1cnJlbnRDZm5TdGFja1RlbXBsYXRlKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIEZ1bmM6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBDb2RlOiB7XG4gICAgICAgICAgICBTM0J1Y2tldDogJ2N1cnJlbnQtYnVja2V0JyxcbiAgICAgICAgICAgIFMzS2V5OiAnY3VycmVudC1rZXknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgRnVuY3Rpb25OYW1lOiB7XG4gICAgICAgICAgICAnRm46OkpvaW4nOiBbJycsIFtcbiAgICAgICAgICAgICAgJ215LWZ1bmN0aW9uLScsXG4gICAgICAgICAgICAgIHsgUmVmOiAnQVdTOjpVUkxTdWZmaXgnIH0sXG4gICAgICAgICAgICAgICctJyxcbiAgICAgICAgICAgICAgeyBSZWY6ICdBV1M6OlVSTFN1ZmZpeCcgfSxcbiAgICAgICAgICAgIF1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29sZC1wYXRoJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2Yoe1xuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgRnVuYzoge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIENvZGU6IHtcbiAgICAgICAgICAgICAgUzNCdWNrZXQ6ICdjdXJyZW50LWJ1Y2tldCcsXG4gICAgICAgICAgICAgIFMzS2V5OiAnbmV3LWtleScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRnVuY3Rpb25OYW1lOiB7XG4gICAgICAgICAgICAgICdGbjo6Sm9pbic6IFsnJywgW1xuICAgICAgICAgICAgICAgICdteS1mdW5jdGlvbi0nLFxuICAgICAgICAgICAgICAgIHsgUmVmOiAnQVdTOjpVUkxTdWZmaXgnIH0sXG4gICAgICAgICAgICAgICAgJy0nLFxuICAgICAgICAgICAgICAgIHsgUmVmOiAnQVdTOjpVUkxTdWZmaXgnIH0sXG4gICAgICAgICAgICAgIF1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnbmV3LXBhdGgnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95U3RhY2tSZXN1bHQgPSBhd2FpdCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnRyeUhvdHN3YXBEZXBsb3ltZW50KGNka1N0YWNrQXJ0aWZhY3QpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGRlcGxveVN0YWNrUmVzdWx0KS5ub3QudG9CZVVuZGVmaW5lZCgpO1xuICBleHBlY3QobW9ja1VwZGF0ZUxhbWJkYUNvZGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICBGdW5jdGlvbk5hbWU6ICdteS1mdW5jdGlvbi1hbWF6b25hd3MuY29tLWFtYXpvbmF3cy5jb20nLFxuICAgIFMzQnVja2V0OiAnY3VycmVudC1idWNrZXQnLFxuICAgIFMzS2V5OiAnbmV3LWtleScsXG4gIH0pO1xuICBleHBlY3QobW9ja0dldEVuZHBvaW50U3VmZml4KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG5cbiAgLy8gdGhlIFVzZXItQWdlbnQgaXMgc2V0IGNvcnJlY3RseVxuICBleHBlY3QoaG90c3dhcE1vY2tTZGtQcm92aWRlci5tb2NrU2RrUHJvdmlkZXIuc2RrLmFwcGVuZEN1c3RvbVVzZXJBZ2VudClcbiAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2Nkay1ob3Rzd2FwL3N1Y2Nlc3MtbGFtYmRhLWZ1bmN0aW9uJyk7XG4gIGV4cGVjdChob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLm1vY2tTZGtQcm92aWRlci5zZGsucmVtb3ZlQ3VzdG9tVXNlckFnZW50KVxuICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnY2RrLWhvdHN3YXAvc3VjY2Vzcy1sYW1iZGEtZnVuY3Rpb24nKTtcbn0pO1xuIl19
@@ -1,6 +1,7 @@
1
1
  import * as cxapi from '@aws-cdk/cx-api';
2
2
  import { CloudFormation } from 'aws-sdk';
3
3
  import * as AWS from 'aws-sdk';
4
+ import * as codebuild from 'aws-sdk/clients/codebuild';
4
5
  import * as lambda from 'aws-sdk/clients/lambda';
5
6
  import * as stepfunctions from 'aws-sdk/clients/stepfunctions';
6
7
  import { DeployStackResult } from '../../../lib/api';
@@ -17,7 +18,9 @@ export declare class HotswapMockSdkProvider {
17
18
  readonly mockSdkProvider: MockSdkProvider;
18
19
  constructor();
19
20
  setUpdateStateMachineMock(mockUpdateMachineDefinition: (input: stepfunctions.UpdateStateMachineInput) => stepfunctions.UpdateStateMachineOutput): void;
20
- setUpdateFunctionCodeMock(mockUpdateLambdaCode: (input: lambda.UpdateFunctionCodeRequest) => lambda.FunctionConfiguration): void;
21
+ stubLambda(stubs: SyncHandlerSubsetOf<AWS.Lambda>): void;
22
+ setUpdateProjectMock(mockUpdateProject: (input: codebuild.UpdateProjectInput) => codebuild.UpdateProjectOutput): void;
23
+ setInvokeLambdaMock(mockInvokeLambda: (input: lambda.InvocationRequest) => lambda.InvocationResponse): void;
21
24
  stubEcs(stubs: SyncHandlerSubsetOf<AWS.ECS>, additionalProperties?: {
22
25
  [key: string]: any;
23
26
  }): void;
@@ -34,7 +34,8 @@ function pushStackResourceSummaries(...items) {
34
34
  }
35
35
  exports.pushStackResourceSummaries = pushStackResourceSummaries;
36
36
  function setCurrentCfnStackTemplate(template) {
37
- currentCfnStack.setTemplate(template);
37
+ const templateDeepCopy = JSON.parse(JSON.stringify(template)); // deep copy the template, so our tests can mutate one template instead of creating two
38
+ currentCfnStack.setTemplate(templateDeepCopy);
38
39
  }
39
40
  exports.setCurrentCfnStackTemplate = setCurrentCfnStackTemplate;
40
41
  function stackSummaryOf(logicalId, resourceType, physicalResourceId) {
@@ -66,9 +67,17 @@ class HotswapMockSdkProvider {
66
67
  updateStateMachine: mockUpdateMachineDefinition,
67
68
  });
68
69
  }
69
- setUpdateFunctionCodeMock(mockUpdateLambdaCode) {
70
+ stubLambda(stubs) {
71
+ this.mockSdkProvider.stubLambda(stubs);
72
+ }
73
+ setUpdateProjectMock(mockUpdateProject) {
74
+ this.mockSdkProvider.stubCodeBuild({
75
+ updateProject: mockUpdateProject,
76
+ });
77
+ }
78
+ setInvokeLambdaMock(mockInvokeLambda) {
70
79
  this.mockSdkProvider.stubLambda({
71
- updateFunctionCode: mockUpdateLambdaCode,
80
+ invoke: mockInvokeLambda,
72
81
  });
73
82
  }
74
83
  stubEcs(stubs, additionalProperties = {}) {
@@ -82,4 +91,4 @@ class HotswapMockSdkProvider {
82
91
  }
83
92
  }
84
93
  exports.HotswapMockSdkProvider = HotswapMockSdkProvider;
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC10ZXN0LXNldHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaG90c3dhcC10ZXN0LXNldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLG9FQUFvRTtBQUVwRSxxQ0FBMEQ7QUFDMUQsa0RBQTJFO0FBQzNFLDRFQUF1RTtBQUV2RSxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUM7QUFDdEIsUUFBQSxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBRWxDLElBQUksc0JBQThDLENBQUM7QUFDbkQsSUFBSSxlQUF3QyxDQUFDO0FBQzdDLE1BQU0sd0JBQXdCLEdBQTBDLEVBQUUsQ0FBQztBQUUzRSxTQUFnQixpQkFBaUI7SUFDL0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JCLGtCQUFrQjtJQUNsQix3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsc0JBQXNCLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RELGVBQWUsR0FBRyxJQUFJLG1EQUF1QixDQUFDO1FBQzVDLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLE9BQU8sRUFBRSxnQkFBUTtLQUNsQixDQUFDLENBQUM7SUFFSCxPQUFPLHNCQUFzQixDQUFDO0FBQ2hDLENBQUM7QUFYRCw4Q0FXQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLG9CQUFnRCxFQUFFO0lBQ25GLE9BQU8sZ0JBQVMsQ0FBQztRQUNmLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLEdBQUcsaUJBQWlCO0tBQ3JCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFMRCxnREFLQztBQUVELFNBQWdCLDBCQUEwQixDQUFDLEdBQUcsS0FBNEM7SUFDeEYsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUZELGdFQUVDO0FBRUQsU0FBZ0IsMEJBQTBCLENBQUMsUUFBa0I7SUFDM0QsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsZ0VBRUM7QUFFRCxTQUFnQixjQUFjLENBQUMsU0FBaUIsRUFBRSxZQUFvQixFQUFFLGtCQUEwQjtJQUNoRyxPQUFPO1FBQ0wsaUJBQWlCLEVBQUUsU0FBUztRQUM1QixrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsWUFBWSxFQUFFLFlBQVk7UUFDMUIsY0FBYyxFQUFFLGlCQUFpQjtRQUNqQyxvQkFBb0IsRUFBRSxJQUFJLElBQUksRUFBRTtLQUNqQyxDQUFDO0FBQ0osQ0FBQztBQVJELHdDQVFDO0FBRUQsTUFBYSxzQkFBc0I7SUFHakM7UUFDRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksMEJBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUM7WUFDdEMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUU7b0JBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELFVBQVUsb0JBQW9CLFNBQVMsR0FBRyxDQUFDLENBQUM7aUJBQ3pIO2dCQUNELE9BQU87b0JBQ0wsc0JBQXNCLEVBQUUsd0JBQXdCO2lCQUNqRCxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSx5QkFBeUIsQ0FDOUIsMkJBQXFIO1FBRXJILElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUM7WUFDckMsa0JBQWtCLEVBQUUsMkJBQTJCO1NBQ2hELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxvQkFBK0Y7UUFDOUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7WUFDOUIsa0JBQWtCLEVBQUUsb0JBQW9CO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBbUMsRUFBRSx1QkFBK0MsRUFBRTtRQUNuRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0scUJBQXFCLENBQUMsSUFBa0I7UUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sb0JBQW9CLENBQ3pCLGFBQWdELEVBQ2hELGNBQXlDLEVBQUU7UUFFM0MsT0FBTyxXQUFXLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzdHLENBQUM7Q0FDRjtBQTlDRCx3REE4Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb24gfSBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvbGFtYmRhJztcbmltcG9ydCAqIGFzIHN0ZXBmdW5jdGlvbnMgZnJvbSAnYXdzLXNkay9jbGllbnRzL3N0ZXBmdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGVwbG95U3RhY2tSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9saWIvYXBpJztcbmltcG9ydCAqIGFzIGRlcGxveW1lbnRzIGZyb20gJy4uLy4uLy4uL2xpYi9hcGkvaG90c3dhcC1kZXBsb3ltZW50cyc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9hcGkvdXRpbC9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyB0ZXN0U3RhY2ssIFRlc3RTdGFja0FydGlmYWN0IH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBNb2NrU2RrUHJvdmlkZXIsIFN5bmNIYW5kbGVyU3Vic2V0T2YgfSBmcm9tICcuLi8uLi91dGlsL21vY2stc2RrJztcbmltcG9ydCB7IEZha2VDbG91ZGZvcm1hdGlvblN0YWNrIH0gZnJvbSAnLi4vZmFrZS1jbG91ZGZvcm1hdGlvbi1zdGFjayc7XG5cbmNvbnN0IFNUQUNLX05BTUUgPSAnd2l0aG91dGVycm9ycyc7XG5leHBvcnQgY29uc3QgU1RBQ0tfSUQgPSAnc3RhY2tJZCc7XG5cbmxldCBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyOiBIb3Rzd2FwTW9ja1Nka1Byb3ZpZGVyO1xubGV0IGN1cnJlbnRDZm5TdGFjazogRmFrZUNsb3VkZm9ybWF0aW9uU3RhY2s7XG5jb25zdCBjdXJyZW50Q2ZuU3RhY2tSZXNvdXJjZXM6IENsb3VkRm9ybWF0aW9uLlN0YWNrUmVzb3VyY2VTdW1tYXJ5W10gPSBbXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwSG90c3dhcFRlc3RzKCkge1xuICBqZXN0LnJlc2V0QWxsTW9ja3MoKTtcbiAgLy8gY2xlYXIgdGhlIGFycmF5XG4gIGN1cnJlbnRDZm5TdGFja1Jlc291cmNlcy5zcGxpY2UoMCk7XG4gIGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIgPSBuZXcgSG90c3dhcE1vY2tTZGtQcm92aWRlcigpO1xuICBjdXJyZW50Q2ZuU3RhY2sgPSBuZXcgRmFrZUNsb3VkZm9ybWF0aW9uU3RhY2soe1xuICAgIHN0YWNrTmFtZTogU1RBQ0tfTkFNRSxcbiAgICBzdGFja0lkOiBTVEFDS19JRCxcbiAgfSk7XG5cbiAgcmV0dXJuIGhvdHN3YXBNb2NrU2RrUHJvdmlkZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZGtTdGFja0FydGlmYWN0T2YodGVzdFN0YWNrQXJ0aWZhY3Q6IFBhcnRpYWw8VGVzdFN0YWNrQXJ0aWZhY3Q+ID0ge30pOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Qge1xuICByZXR1cm4gdGVzdFN0YWNrKHtcbiAgICBzdGFja05hbWU6IFNUQUNLX05BTUUsXG4gICAgLi4udGVzdFN0YWNrQXJ0aWZhY3QsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoLi4uaXRlbXM6IENsb3VkRm9ybWF0aW9uLlN0YWNrUmVzb3VyY2VTdW1tYXJ5W10pIHtcbiAgY3VycmVudENmblN0YWNrUmVzb3VyY2VzLnB1c2goLi4uaXRlbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q3VycmVudENmblN0YWNrVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlKSB7XG4gIGN1cnJlbnRDZm5TdGFjay5zZXRUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFja1N1bW1hcnlPZihsb2dpY2FsSWQ6IHN0cmluZywgcmVzb3VyY2VUeXBlOiBzdHJpbmcsIHBoeXNpY2FsUmVzb3VyY2VJZDogc3RyaW5nKTogQ2xvdWRGb3JtYXRpb24uU3RhY2tSZXNvdXJjZVN1bW1hcnkge1xuICByZXR1cm4ge1xuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBsb2dpY2FsSWQsXG4gICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBwaHlzaWNhbFJlc291cmNlSWQsXG4gICAgUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUsXG4gICAgUmVzb3VyY2VTdGF0dXM6ICdDUkVBVEVfQ09NUExFVEUnLFxuICAgIExhc3RVcGRhdGVkVGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgSG90c3dhcE1vY2tTZGtQcm92aWRlciB7XG4gIHB1YmxpYyByZWFkb25seSBtb2NrU2RrUHJvdmlkZXI6IE1vY2tTZGtQcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1vY2tTZGtQcm92aWRlciA9IG5ldyBNb2NrU2RrUHJvdmlkZXIoeyByZWFsU2RrOiBmYWxzZSB9KTtcblxuICAgIHRoaXMubW9ja1Nka1Byb3ZpZGVyLnN0dWJDbG91ZEZvcm1hdGlvbih7XG4gICAgICBsaXN0U3RhY2tSZXNvdXJjZXM6ICh7IFN0YWNrTmFtZTogc3RhY2tOYW1lIH0pID0+IHtcbiAgICAgICAgaWYgKHN0YWNrTmFtZSAhPT0gU1RBQ0tfTkFNRSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgU3RhY2sgbmFtZSBpbiBsaXN0U3RhY2tSZXNvdXJjZXMoKSBjYWxsIHRvIGJlOiAnJHtTVEFDS19OQU1FfScsIGJ1dCByZWNlaXZlZDogJHtzdGFja05hbWV9J2ApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgU3RhY2tSZXNvdXJjZVN1bW1hcmllczogY3VycmVudENmblN0YWNrUmVzb3VyY2VzLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVcGRhdGVTdGF0ZU1hY2hpbmVNb2NrKFxuICAgIG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbjogKGlucHV0OiBzdGVwZnVuY3Rpb25zLlVwZGF0ZVN0YXRlTWFjaGluZUlucHV0KSA9PiBzdGVwZnVuY3Rpb25zLlVwZGF0ZVN0YXRlTWFjaGluZU91dHB1dCxcbiAgKSB7XG4gICAgdGhpcy5tb2NrU2RrUHJvdmlkZXIuc3R1YlN0ZXBGdW5jdGlvbnMoe1xuICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lOiBtb2NrVXBkYXRlTWFjaGluZURlZmluaXRpb24sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0VXBkYXRlRnVuY3Rpb25Db2RlTW9jayhtb2NrVXBkYXRlTGFtYmRhQ29kZTogKGlucHV0OiBsYW1iZGEuVXBkYXRlRnVuY3Rpb25Db2RlUmVxdWVzdCkgPT4gbGFtYmRhLkZ1bmN0aW9uQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMubW9ja1Nka1Byb3ZpZGVyLnN0dWJMYW1iZGEoe1xuICAgICAgdXBkYXRlRnVuY3Rpb25Db2RlOiBtb2NrVXBkYXRlTGFtYmRhQ29kZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdHViRWNzKHN0dWJzOiBTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5FQ1M+LCBhZGRpdGlvbmFsUHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9KTogdm9pZCB7XG4gICAgdGhpcy5tb2NrU2RrUHJvdmlkZXIuc3R1YkVjcyhzdHVicywgYWRkaXRpb25hbFByb3BlcnRpZXMpO1xuICB9XG5cbiAgcHVibGljIHN0dWJHZXRFbmRwb2ludFN1ZmZpeChzdHViOiAoKSA9PiBzdHJpbmcpIHtcbiAgICB0aGlzLm1vY2tTZGtQcm92aWRlci5zdHViR2V0RW5kcG9pbnRTdWZmaXgoc3R1Yik7XG4gIH1cblxuICBwdWJsaWMgdHJ5SG90c3dhcERlcGxveW1lbnQoXG4gICAgc3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LFxuICAgIGFzc2V0UGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge30sXG4gICk6IFByb21pc2U8RGVwbG95U3RhY2tSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gZGVwbG95bWVudHMudHJ5SG90c3dhcERlcGxveW1lbnQodGhpcy5tb2NrU2RrUHJvdmlkZXIsIGFzc2V0UGFyYW1zLCBjdXJyZW50Q2ZuU3RhY2ssIHN0YWNrQXJ0aWZhY3QpO1xuICB9XG59XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC10ZXN0LXNldHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaG90c3dhcC10ZXN0LXNldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLG9FQUFvRTtBQUVwRSxxQ0FBMEQ7QUFDMUQsa0RBQTJFO0FBQzNFLDRFQUF1RTtBQUV2RSxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUM7QUFDdEIsUUFBQSxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBRWxDLElBQUksc0JBQThDLENBQUM7QUFDbkQsSUFBSSxlQUF3QyxDQUFDO0FBQzdDLE1BQU0sd0JBQXdCLEdBQTBDLEVBQUUsQ0FBQztBQUUzRSxTQUFnQixpQkFBaUI7SUFDL0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JCLGtCQUFrQjtJQUNsQix3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsc0JBQXNCLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RELGVBQWUsR0FBRyxJQUFJLG1EQUF1QixDQUFDO1FBQzVDLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLE9BQU8sRUFBRSxnQkFBUTtLQUNsQixDQUFDLENBQUM7SUFFSCxPQUFPLHNCQUFzQixDQUFDO0FBQ2hDLENBQUM7QUFYRCw4Q0FXQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLG9CQUFnRCxFQUFFO0lBQ25GLE9BQU8sZ0JBQVMsQ0FBQztRQUNmLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLEdBQUcsaUJBQWlCO0tBQ3JCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFMRCxnREFLQztBQUVELFNBQWdCLDBCQUEwQixDQUFDLEdBQUcsS0FBNEM7SUFDeEYsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUZELGdFQUVDO0FBRUQsU0FBZ0IsMEJBQTBCLENBQUMsUUFBa0I7SUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLHVGQUF1RjtJQUN0SixlQUFlLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUhELGdFQUdDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLFNBQWlCLEVBQUUsWUFBb0IsRUFBRSxrQkFBMEI7SUFDaEcsT0FBTztRQUNMLGlCQUFpQixFQUFFLFNBQVM7UUFDNUIsa0JBQWtCLEVBQUUsa0JBQWtCO1FBQ3RDLFlBQVksRUFBRSxZQUFZO1FBQzFCLGNBQWMsRUFBRSxpQkFBaUI7UUFDakMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLEVBQUU7S0FDakMsQ0FBQztBQUNKLENBQUM7QUFSRCx3Q0FRQztBQUVELE1BQWEsc0JBQXNCO0lBR2pDO1FBQ0UsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLDBCQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDO1lBQ3RDLGtCQUFrQixFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFO29CQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxVQUFVLG9CQUFvQixTQUFTLEdBQUcsQ0FBQyxDQUFDO2lCQUN6SDtnQkFDRCxPQUFPO29CQUNMLHNCQUFzQixFQUFFLHdCQUF3QjtpQkFDakQsQ0FBQztZQUNKLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0seUJBQXlCLENBQzlCLDJCQUFxSDtRQUVySCxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JDLGtCQUFrQixFQUFFLDJCQUEyQjtTQUNoRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQXNDO1FBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxpQkFBeUY7UUFDbkgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7WUFDakMsYUFBYSxFQUFFLGlCQUFpQjtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsZ0JBQWdGO1FBQ3pHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO1lBQzlCLE1BQU0sRUFBRSxnQkFBZ0I7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFtQyxFQUFFLHVCQUErQyxFQUFFO1FBQ25HLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxJQUFrQjtRQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxvQkFBb0IsQ0FDekIsYUFBZ0QsRUFDaEQsY0FBeUMsRUFBRTtRQUUzQyxPQUFPLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDN0csQ0FBQztDQUNGO0FBeERELHdEQXdEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbiB9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgY29kZWJ1aWxkIGZyb20gJ2F3cy1zZGsvY2xpZW50cy9jb2RlYnVpbGQnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1zZGsvY2xpZW50cy9sYW1iZGEnO1xuaW1wb3J0ICogYXMgc3RlcGZ1bmN0aW9ucyBmcm9tICdhd3Mtc2RrL2NsaWVudHMvc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBEZXBsb3lTdGFja1Jlc3VsdCB9IGZyb20gJy4uLy4uLy4uL2xpYi9hcGknO1xuaW1wb3J0ICogYXMgZGVwbG95bWVudHMgZnJvbSAnLi4vLi4vLi4vbGliL2FwaS9ob3Rzd2FwLWRlcGxveW1lbnRzJztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vLi4vbGliL2FwaS91dGlsL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IHRlc3RTdGFjaywgVGVzdFN0YWNrQXJ0aWZhY3QgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IE1vY2tTZGtQcm92aWRlciwgU3luY0hhbmRsZXJTdWJzZXRPZiB9IGZyb20gJy4uLy4uL3V0aWwvbW9jay1zZGsnO1xuaW1wb3J0IHsgRmFrZUNsb3VkZm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuLi9mYWtlLWNsb3VkZm9ybWF0aW9uLXN0YWNrJztcblxuY29uc3QgU1RBQ0tfTkFNRSA9ICd3aXRob3V0ZXJyb3JzJztcbmV4cG9ydCBjb25zdCBTVEFDS19JRCA9ICdzdGFja0lkJztcblxubGV0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXI6IEhvdHN3YXBNb2NrU2RrUHJvdmlkZXI7XG5sZXQgY3VycmVudENmblN0YWNrOiBGYWtlQ2xvdWRmb3JtYXRpb25TdGFjaztcbmNvbnN0IGN1cnJlbnRDZm5TdGFja1Jlc291cmNlczogQ2xvdWRGb3JtYXRpb24uU3RhY2tSZXNvdXJjZVN1bW1hcnlbXSA9IFtdO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBIb3Rzd2FwVGVzdHMoKSB7XG4gIGplc3QucmVzZXRBbGxNb2NrcygpO1xuICAvLyBjbGVhciB0aGUgYXJyYXlcbiAgY3VycmVudENmblN0YWNrUmVzb3VyY2VzLnNwbGljZSgwKTtcbiAgaG90c3dhcE1vY2tTZGtQcm92aWRlciA9IG5ldyBIb3Rzd2FwTW9ja1Nka1Byb3ZpZGVyKCk7XG4gIGN1cnJlbnRDZm5TdGFjayA9IG5ldyBGYWtlQ2xvdWRmb3JtYXRpb25TdGFjayh7XG4gICAgc3RhY2tOYW1lOiBTVEFDS19OQU1FLFxuICAgIHN0YWNrSWQ6IFNUQUNLX0lELFxuICB9KTtcblxuICByZXR1cm4gaG90c3dhcE1vY2tTZGtQcm92aWRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNka1N0YWNrQXJ0aWZhY3RPZih0ZXN0U3RhY2tBcnRpZmFjdDogUGFydGlhbDxUZXN0U3RhY2tBcnRpZmFjdD4gPSB7fSk6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCB7XG4gIHJldHVybiB0ZXN0U3RhY2soe1xuICAgIHN0YWNrTmFtZTogU1RBQ0tfTkFNRSxcbiAgICAuLi50ZXN0U3RhY2tBcnRpZmFjdCxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwdXNoU3RhY2tSZXNvdXJjZVN1bW1hcmllcyguLi5pdGVtczogQ2xvdWRGb3JtYXRpb24uU3RhY2tSZXNvdXJjZVN1bW1hcnlbXSkge1xuICBjdXJyZW50Q2ZuU3RhY2tSZXNvdXJjZXMucHVzaCguLi5pdGVtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGUpIHtcbiAgY29uc3QgdGVtcGxhdGVEZWVwQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGVtcGxhdGUpKTsgLy8gZGVlcCBjb3B5IHRoZSB0ZW1wbGF0ZSwgc28gb3VyIHRlc3RzIGNhbiBtdXRhdGUgb25lIHRlbXBsYXRlIGluc3RlYWQgb2YgY3JlYXRpbmcgdHdvXG4gIGN1cnJlbnRDZm5TdGFjay5zZXRUZW1wbGF0ZSh0ZW1wbGF0ZURlZXBDb3B5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YWNrU3VtbWFyeU9mKGxvZ2ljYWxJZDogc3RyaW5nLCByZXNvdXJjZVR5cGU6IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpOiBDbG91ZEZvcm1hdGlvbi5TdGFja1Jlc291cmNlU3VtbWFyeSB7XG4gIHJldHVybiB7XG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGxvZ2ljYWxJZCxcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBSZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSxcbiAgICBSZXNvdXJjZVN0YXR1czogJ0NSRUFURV9DT01QTEVURScsXG4gICAgTGFzdFVwZGF0ZWRUaW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBIb3Rzd2FwTW9ja1Nka1Byb3ZpZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IG1vY2tTZGtQcm92aWRlcjogTW9ja1Nka1Byb3ZpZGVyO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubW9ja1Nka1Byb3ZpZGVyID0gbmV3IE1vY2tTZGtQcm92aWRlcih7IHJlYWxTZGs6IGZhbHNlIH0pO1xuXG4gICAgdGhpcy5tb2NrU2RrUHJvdmlkZXIuc3R1YkNsb3VkRm9ybWF0aW9uKHtcbiAgICAgIGxpc3RTdGFja1Jlc291cmNlczogKHsgU3RhY2tOYW1lOiBzdGFja05hbWUgfSkgPT4ge1xuICAgICAgICBpZiAoc3RhY2tOYW1lICE9PSBTVEFDS19OQU1FKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBTdGFjayBuYW1lIGluIGxpc3RTdGFja1Jlc291cmNlcygpIGNhbGwgdG8gYmU6ICcke1NUQUNLX05BTUV9JywgYnV0IHJlY2VpdmVkOiAke3N0YWNrTmFtZX0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBTdGFja1Jlc291cmNlU3VtbWFyaWVzOiBjdXJyZW50Q2ZuU3RhY2tSZXNvdXJjZXMsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldFVwZGF0ZVN0YXRlTWFjaGluZU1vY2soXG4gICAgbW9ja1VwZGF0ZU1hY2hpbmVEZWZpbml0aW9uOiAoaW5wdXQ6IHN0ZXBmdW5jdGlvbnMuVXBkYXRlU3RhdGVNYWNoaW5lSW5wdXQpID0+IHN0ZXBmdW5jdGlvbnMuVXBkYXRlU3RhdGVNYWNoaW5lT3V0cHV0LFxuICApIHtcbiAgICB0aGlzLm1vY2tTZGtQcm92aWRlci5zdHViU3RlcEZ1bmN0aW9ucyh7XG4gICAgICB1cGRhdGVTdGF0ZU1hY2hpbmU6IG1vY2tVcGRhdGVNYWNoaW5lRGVmaW5pdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdHViTGFtYmRhKHN0dWJzOiBTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5MYW1iZGE+KSB7XG4gICAgdGhpcy5tb2NrU2RrUHJvdmlkZXIuc3R1YkxhbWJkYShzdHVicyk7XG4gIH1cblxuICBwdWJsaWMgc2V0VXBkYXRlUHJvamVjdE1vY2sobW9ja1VwZGF0ZVByb2plY3Q6IChpbnB1dDogY29kZWJ1aWxkLlVwZGF0ZVByb2plY3RJbnB1dCkgPT4gY29kZWJ1aWxkLlVwZGF0ZVByb2plY3RPdXRwdXQpIHtcbiAgICB0aGlzLm1vY2tTZGtQcm92aWRlci5zdHViQ29kZUJ1aWxkKHtcbiAgICAgIHVwZGF0ZVByb2plY3Q6IG1vY2tVcGRhdGVQcm9qZWN0LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldEludm9rZUxhbWJkYU1vY2sobW9ja0ludm9rZUxhbWJkYTogKGlucHV0OiBsYW1iZGEuSW52b2NhdGlvblJlcXVlc3QpID0+IGxhbWJkYS5JbnZvY2F0aW9uUmVzcG9uc2UpIHtcbiAgICB0aGlzLm1vY2tTZGtQcm92aWRlci5zdHViTGFtYmRhKHtcbiAgICAgIGludm9rZTogbW9ja0ludm9rZUxhbWJkYSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdHViRWNzKHN0dWJzOiBTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5FQ1M+LCBhZGRpdGlvbmFsUHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9KTogdm9pZCB7XG4gICAgdGhpcy5tb2NrU2RrUHJvdmlkZXIuc3R1YkVjcyhzdHVicywgYWRkaXRpb25hbFByb3BlcnRpZXMpO1xuICB9XG5cbiAgcHVibGljIHN0dWJHZXRFbmRwb2ludFN1ZmZpeChzdHViOiAoKSA9PiBzdHJpbmcpIHtcbiAgICB0aGlzLm1vY2tTZGtQcm92aWRlci5zdHViR2V0RW5kcG9pbnRTdWZmaXgoc3R1Yik7XG4gIH1cblxuICBwdWJsaWMgdHJ5SG90c3dhcERlcGxveW1lbnQoXG4gICAgc3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LFxuICAgIGFzc2V0UGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge30sXG4gICk6IFByb21pc2U8RGVwbG95U3RhY2tSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gZGVwbG95bWVudHMudHJ5SG90c3dhcERlcGxveW1lbnQodGhpcy5tb2NrU2RrUHJvdmlkZXIsIGFzc2V0UGFyYW1zLCBjdXJyZW50Q2ZuU3RhY2ssIHN0YWNrQXJ0aWZhY3QpO1xuICB9XG59XG4iXX0=