@workflow/cli 5.0.0-beta.47 → 5.0.0-beta.48

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 (49) hide show
  1. package/dist/commands/cancel.d.ts +10 -1
  2. package/dist/commands/cancel.d.ts.map +1 -1
  3. package/dist/commands/cancel.js +20 -7
  4. package/dist/commands/inspect-flag-forwarding.test.d.ts +2 -0
  5. package/dist/commands/inspect-flag-forwarding.test.d.ts.map +1 -0
  6. package/dist/commands/inspect-flag-forwarding.test.js +121 -0
  7. package/dist/commands/inspect-flag-scope.test.d.ts +2 -0
  8. package/dist/commands/inspect-flag-scope.test.d.ts.map +1 -0
  9. package/dist/commands/inspect-flag-scope.test.js +161 -0
  10. package/dist/commands/inspect.d.ts +13 -1
  11. package/dist/commands/inspect.d.ts.map +1 -1
  12. package/dist/commands/inspect.js +70 -10
  13. package/dist/commands/start.d.ts +1 -1
  14. package/dist/commands/web.d.ts +1 -1
  15. package/dist/lib/bulk-cancel.d.ts +15 -2
  16. package/dist/lib/bulk-cancel.d.ts.map +1 -1
  17. package/dist/lib/bulk-cancel.js +49 -18
  18. package/dist/lib/bulk-cancel.test.js +80 -8
  19. package/dist/lib/config/types.d.ts +6 -1
  20. package/dist/lib/config/types.d.ts.map +1 -1
  21. package/dist/lib/config/types.js +1 -1
  22. package/dist/lib/inspect/attribute-filter.d.ts +15 -0
  23. package/dist/lib/inspect/attribute-filter.d.ts.map +1 -0
  24. package/dist/lib/inspect/attribute-filter.js +51 -0
  25. package/dist/lib/inspect/attribute-filter.test.d.ts +2 -0
  26. package/dist/lib/inspect/attribute-filter.test.d.ts.map +1 -0
  27. package/dist/lib/inspect/attribute-filter.test.js +65 -0
  28. package/dist/lib/inspect/errors.d.ts +28 -0
  29. package/dist/lib/inspect/errors.d.ts.map +1 -1
  30. package/dist/lib/inspect/errors.js +59 -1
  31. package/dist/lib/inspect/errors.test.d.ts +2 -0
  32. package/dist/lib/inspect/errors.test.d.ts.map +1 -0
  33. package/dist/lib/inspect/errors.test.js +48 -0
  34. package/dist/lib/inspect/flag-bounds.d.ts +57 -0
  35. package/dist/lib/inspect/flag-bounds.d.ts.map +1 -0
  36. package/dist/lib/inspect/flag-bounds.js +112 -0
  37. package/dist/lib/inspect/flag-bounds.test.d.ts +2 -0
  38. package/dist/lib/inspect/flag-bounds.test.d.ts.map +1 -0
  39. package/dist/lib/inspect/flag-bounds.test.js +126 -0
  40. package/dist/lib/inspect/flags.d.ts +1 -1
  41. package/dist/lib/inspect/flags.d.ts.map +1 -1
  42. package/dist/lib/inspect/flags.js +5 -2
  43. package/dist/lib/inspect/hydration.d.ts.map +1 -1
  44. package/dist/lib/inspect/hydration.js +2 -1
  45. package/dist/lib/inspect/output.d.ts +10 -0
  46. package/dist/lib/inspect/output.d.ts.map +1 -1
  47. package/dist/lib/inspect/output.js +138 -24
  48. package/dist/lib/inspect/output.test.js +223 -2
  49. package/package.json +13 -13
@@ -1,6 +1,7 @@
1
1
  import { afterEach, describe, expect, it, vi } from 'vitest';
2
+ import { logger } from '../config/log.js';
2
3
  import { getObservabilityUpgradeRequiredMessage, isObservabilityUpgradeRequiredError, } from './errors.js';
3
- import { formatTableValue, hasExpiredData, listEvents, listRuns, listSleeps, listSteps, } from './output.js';
4
+ import { formatTableValue, hasExpiredData, listAttributes, listEvents, listRuns, listSleeps, listSteps, } from './output.js';
4
5
  const makeRun = (overrides = {}) => ({
5
6
  runId: 'run-1',
6
7
  status: 'running',
@@ -709,4 +710,224 @@ describe('listSleeps', () => {
709
710
  expect(log.mock.calls.flat().join('\n')).toContain('Upgrade Observability Plus');
710
711
  });
711
712
  });
712
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3Qvb3V0cHV0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0QsT0FBTyxFQUNMLHNDQUFzQyxFQUN0QyxtQ0FBbUMsR0FDcEMsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsVUFBVSxFQUNWLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxHQUNWLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sT0FBTyxHQUFHLENBQUMsWUFBa0MsRUFBRSxFQUFlLEVBQUUsQ0FDcEUsQ0FBQztJQUNDLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLFNBQVM7SUFDakIsWUFBWSxFQUFFLE9BQU87SUFDckIsWUFBWSxFQUFFLDRDQUE0QztJQUMxRCxLQUFLLEVBQUUsU0FBUztJQUNoQixNQUFNLEVBQUUsU0FBUztJQUNqQixLQUFLLEVBQUUsU0FBUztJQUNoQixTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ2pDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDakMsV0FBVyxFQUFFLFNBQVM7SUFDdEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsV0FBVyxFQUFFLENBQUM7SUFDZCxnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLEdBQUcsU0FBUztDQUNiLENBQTJCLENBQUM7QUFFL0IsU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUNiLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7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QUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV6RSxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUU1QyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNoRCw0QkFBNEIsQ0FDN0IsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEFuYWx5dGljc0V2ZW50LFxuICBBbmFseXRpY3NSdW4sXG4gIEFuYWx5dGljc1N0ZXAsXG4gIEFuYWx5dGljc1dhaXQsXG4gIEV2ZW50LFxuICBTdGVwLFxuICBXb3JrZmxvd1J1bixcbiAgV29ybGQsXG59IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBhZnRlckVhY2gsIGRlc2NyaWJlLCBleHBlY3QsIGl0LCB2aSB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQge1xuICBnZXRPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkTWVzc2FnZSxcbiAgaXNPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkRXJyb3IsXG59IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB7XG4gIGZvcm1hdFRhYmxlVmFsdWUsXG4gIGhhc0V4cGlyZWREYXRhLFxuICBsaXN0RXZlbnRzLFxuICBsaXN0UnVucyxcbiAgbGlzdFNsZWVwcyxcbiAgbGlzdFN0ZXBzLFxufSBmcm9tICcuL291dHB1dC5qcyc7XG5cbmNvbnN0IG1ha2VSdW4gPSAob3ZlcnJpZGVzOiBQYXJ0aWFsPFdvcmtmbG93UnVuPiA9IHt9KTogV29ya2Zsb3dSdW4gPT5cbiAgKHtcbiAgICBydW5JZDogJ3J1bi0xJyxcbiAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgd29ya2Zsb3dOYW1lOiAnd29ya2Zsb3cvLy4vc3JjL3dvcmtmbG93cy90ZXN0Ly9teVdvcmtmbG93JyxcbiAgICBpbnB1dDogdW5kZWZpbmVkLFxuICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgIGVycm9yOiB1bmRlZmluZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNS0wMS0wMScpLFxuICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoJzIwMjUtMDEtMDEnKSxcbiAgICBjb21wbGV0ZWRBdDogdW5kZWZpbmVkLFxuICAgIHN0YXJ0ZWRBdDogdW5kZWZpbmVkLFxuICAgIGV4cGlyZWRBdDogdW5kZWZpbmVkLFxuICAgIHNwZWNWZXJzaW9uOiAyLFxuICAgIGV4ZWN1dGlvbkNvbnRleHQ6IHt9LFxuICAgIC4uLm92ZXJyaWRlcyxcbiAgfSkgYXMgdW5rbm93biBhcyBXb3JrZmxvd1J1bjtcblxuYWZ0ZXJFYWNoKCgpID0+IHtcbiAgdmkucmVzdG9yZUFsbE1vY2tzKCk7XG59KTtcblxuZGVzY3JpYmUoJ2hhc0V4cGlyZWREYXRhJywgKCkgPT4ge1xuICBpdCgncmV0dXJucyBmYWxzZSB3aGVuIGV4cGlyZWRBdCBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGhhc0V4cGlyZWREYXRhKG1ha2VSdW4oeyBleHBpcmVkQXQ6IHVuZGVmaW5lZCB9KSkpLnRvQmUoZmFsc2UpO1xuICB9KTtcblxuICBpdCgncmV0dXJucyBmYWxzZSB3aGVuIGV4cGlyZWRBdCBpcyBpbiB0aGUgZnV0dXJlJywgKCkgPT4ge1xuICAgIGNvbnN0IGZ1dHVyZSA9IG5ldyBEYXRlKERhdGUubm93KCkgKyAyNCAqIDYwICogNjAgKiAxMDAwKTtcbiAgICBleHBlY3QoaGFzRXhwaXJlZERhdGEobWFrZVJ1bih7IGV4cGlyZWRBdDogZnV0dXJlIH0pKSkudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIHRydWUgd2hlbiBleHBpcmVkQXQgaXMgaW4gdGhlIHBhc3QnLCAoKSA9PiB7XG4gICAgY29uc3QgcGFzdCA9IG5ldyBEYXRlKERhdGUubm93KCkgLSAyNCAqIDYwICogNjAgKiAxMDAwKTtcbiAgICBleHBlY3QoaGFzRXhwaXJlZERhdGEobWFrZVJ1bih7IGV4cGlyZWRBdDogcGFzdCB9KSkpLnRvQmUodHJ1ZSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdmb3JtYXRUYWJsZVZhbHVlIGV4cGlyZWQgZGF0YSBoYW5kbGluZycsICgpID0+IHtcbiAgaXQoJ3JldHVybnMgaW5wdXQgdmFsdWUgd2hlbiBleHBpcmVkQXQgaXMgaW4gdGhlIGZ1dHVyZScsICgpID0+IHtcbiAgICBjb25zdCBmdXR1cmUgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gICAgY29uc3QgaXRlbSA9IHsgZXhwaXJlZEF0OiBmdXR1cmUudG9JU09TdHJpbmcoKSwgaW5wdXQ6ICdoZWxsbycgfTtcbiAgICBjb25zdCByZXN1bHQgPSBmb3JtYXRUYWJsZVZhbHVlKCdpbnB1dCcsICdoZWxsbycsIHt9LCB1bmRlZmluZWQsIGl0ZW0pO1xuICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0NvbnRhaW4oJ2V4cGlyZWQnKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZXhwaXJlZCBtZXNzYWdlIHdoZW4gZXhwaXJlZEF0IGlzIGluIHRoZSBwYXN0JywgKCkgPT4ge1xuICAgIGNvbnN0IHBhc3QgPSBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gICAgY29uc3QgaXRlbSA9IHsgZXhwaXJlZEF0OiBwYXN0LnRvSVNPU3RyaW5nKCksIG91dHB1dDogJ2hlbGxvJyB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFRhYmxlVmFsdWUoJ291dHB1dCcsICdoZWxsbycsIHt9LCB1bmRlZmluZWQsIGl0ZW0pO1xuICAgIGV4cGVjdChTdHJpbmcocmVzdWx0KSkudG9Db250YWluKCdkYXRhIGV4cGlyZWQnKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgaW5wdXQgdmFsdWUgd2hlbiBleHBpcmVkQXQgaXMgbm90IHByZXNlbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgaXRlbSA9IHsgaW5wdXQ6ICdoZWxsbycgfTtcbiAgICBjb25zdCByZXN1bHQgPSBmb3JtYXRUYWJsZVZhbHVlKCdpbnB1dCcsICdoZWxsbycsIHt9LCB1bmRlZmluZWQsIGl0ZW0pO1xuICAgIGV4cGVjdChTdHJpbmcocmVzdWx0KSkubm90LnRvQ29udGFpbignZXhwaXJlZCcpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnaXNPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkRXJyb3InLCAoKSA9PiB7XG4gIGl0KCdkZXRlY3RzIHdvcmtmbG93IGFuYWx5dGljcyA0MDIgZXJyb3JzIGJ5IHRvcC1sZXZlbCBjb2RlJywgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGlzT2JzZXJ2YWJpbGl0eVVwZ3JhZGVSZXF1aXJlZEVycm9yKHtcbiAgICAgICAgc3RhdHVzOiA0MDIsXG4gICAgICAgIGNvZGU6ICdvYnNlcnZhYmlsaXR5LXVwZ3JhZGUtcmVxdWlyZWQnLFxuICAgICAgfSlcbiAgICApLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdkZXRlY3RzIHdvcmtmbG93IGFuYWx5dGljcyA0MDIgZXJyb3JzIGJ5IHJlc3BvbnNlIGJvZHkgZXJyb3InLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgaXNPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkRXJyb3Ioe1xuICAgICAgICBzdGF0dXM6IDQwMixcbiAgICAgICAgYm9keTogeyBlcnJvcjogJ29ic2VydmFiaWxpdHktdXBncmFkZS1yZXF1aXJlZCcgfSxcbiAgICAgIH0pXG4gICAgKS50b0JlKHRydWUpO1xuICB9KTtcblxuICBpdCgnZG9lcyBub3QgdHJlYXQgNDA0cyBhcyB1cGdyYWRlIHByb21wdHMnLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgaXNPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkRXJyb3Ioe1xuICAgICAgICBzdGF0dXM6IDQwNCxcbiAgICAgICAgY29kZTogJ29ic2VydmFiaWxpdHktdXBncmFkZS1yZXF1aXJlZCcsXG4gICAgICB9KVxuICAgICkudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCd1c2VzIGFuIHVwZ3JhZGUgcHJvbXB0IG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGdldE9ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRNZXNzYWdlKCkpLnRvQ29udGFpbihcbiAgICAgICdVcGdyYWRlIE9ic2VydmFiaWxpdHkgUGx1cydcbiAgICApO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnbGlzdFJ1bnMnLCAoKSA9PiB7XG4gIGl0KCdwcmVzZXJ2ZXMgYW5hbHl0aWNzIHBhZ2UgbWV0YWRhdGEgaW4gSlNPTiBvdXRwdXQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcnVuID0ge1xuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgIGRlcGxveW1lbnRJZDogJ2RlcC0xJyxcbiAgICAgIHdvcmtmbG93TmFtZTogJ3dvcmtmbG93Ly8uL3NyYy93b3JrZmxvd3MvdGVzdC8vbXlXb3JrZmxvdycsXG4gICAgICBzcGVjVmVyc2lvbjogMixcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHN0YXJ0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDEuMDAwWicpLFxuICAgICAgY29tcGxldGVkQXQ6IG51bGwsXG4gICAgICBlcnJvckNvZGU6IG51bGwsXG4gICAgICB3b3JrZmxvd0NvcmVWZXJzaW9uOiBudWxsLFxuICAgICAgd29ya2Zsb3dFbmNyeXB0aW9uRW5hYmxlZDogZmFsc2UsXG4gICAgfSBzYXRpc2ZpZXMgQW5hbHl0aWNzUnVuO1xuICAgIGNvbnN0IHBhZ2VJbmZvID0ge1xuICAgICAgY3VycmVudExvb2tiYWNrRGF5czogMixcbiAgICAgIG1heExvb2tiYWNrRGF5czogMzAsXG4gICAgICBjdXJyZW50V2luZG93U3RhcnQ6IG5ldyBEYXRlKCcyMDI2LTA2LTI4VDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIG1heFdpbmRvd1N0YXJ0OiBuZXcgRGF0ZSgnMjAyNi0wNi0wMVQwMDowMDowMC4wMDBaJyksXG4gICAgICB1cGdyYWRlQXZhaWxhYmxlOiB0cnVlLFxuICAgIH07XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgcnVuczoge1xuICAgICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgICAgZGF0YTogW3J1bl0sXG4gICAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgICAgIHBhZ2VJbmZvLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIGF3YWl0IGxpc3RSdW5zKHdvcmxkLCB7IGpzb246IHRydWUgfSk7XG5cbiAgICBleHBlY3Qod29ybGQuYW5hbHl0aWNzPy5ydW5zLmxpc3QpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgIHdvcmtmbG93TmFtZTogdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzOiB1bmRlZmluZWQsXG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIHNvcnRPcmRlcjogJ2Rlc2MnLFxuICAgICAgICBjdXJzb3I6IHVuZGVmaW5lZCxcbiAgICAgICAgbGltaXQ6IDIwLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBleHBlY3Qod3JpdGUpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICBleHBlY3QoSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpKS50b0VxdWFsKHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAge1xuICAgICAgICAgIC4uLnJ1bixcbiAgICAgICAgICBjcmVhdGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonLFxuICAgICAgICAgIHVwZGF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicsXG4gICAgICAgICAgc3RhcnRlZEF0OiAnMjAyNi0wNi0zMFQwMDowMDowMS4wMDBaJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjdXJzb3I6IG51bGwsXG4gICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgIHBhZ2VJbmZvOiB7XG4gICAgICAgIGN1cnJlbnRMb29rYmFja0RheXM6IDIsXG4gICAgICAgIG1heExvb2tiYWNrRGF5czogMzAsXG4gICAgICAgIGN1cnJlbnRXaW5kb3dTdGFydDogJzIwMjYtMDYtMjhUMDA6MDA6MDAuMDAwWicsXG4gICAgICAgIG1heFdpbmRvd1N0YXJ0OiAnMjAyNi0wNi0wMVQwMDowMDowMC4wMDBaJyxcbiAgICAgICAgdXBncmFkZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdpbmNsdWRlcyB3b3JsZC1zcGVjaWZpYyBmaWVsZHMgd2hlbiB0aGUgd29ybGQgZGVmaW5lcyBkZXNjcmliZVJ1bicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBydW4gPSB7XG4gICAgICBydW5JZDogJ3dydW5fNDFLWDIwNkJUSzEwTTBDMzFDTU4yQVMxSlMnLFxuICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgICB3b3JrZmxvd05hbWU6ICd3b3JrZmxvdy8vLi9zcmMvd29ya2Zsb3dzL3Rlc3QvL215V29ya2Zsb3cnLFxuICAgICAgc3BlY1ZlcnNpb246IDIsXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBudWxsLFxuICAgICAgZXJyb3JDb2RlOiBudWxsLFxuICAgICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIH0gc2F0aXNmaWVzIEFuYWx5dGljc1J1bjtcbiAgICBjb25zdCBkZXNjcmliZVJ1biA9IHZpLmZuKCkubW9ja1JldHVyblZhbHVlKHsgcmVnaW9uOiAnc2ZvMScsIHNoYXJkOiAnYScgfSk7XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBkZXNjcmliZVJ1bixcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICBydW5zOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbcnVuXSxcbiAgICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIGF3YWl0IGxpc3RSdW5zKHdvcmxkLCB7IGpzb246IHRydWUgfSk7XG5cbiAgICBleHBlY3QoZGVzY3JpYmVSdW4pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoeyBydW5JZDogcnVuLnJ1bklkIH0pXG4gICAgKTtcbiAgICBjb25zdCBvdXRwdXQgPSBKU09OLnBhcnNlKFN0cmluZyh3cml0ZS5tb2NrLmNhbGxzWzBdWzBdKSk7XG4gICAgZXhwZWN0KG91dHB1dC5kYXRhWzBdLnJlZ2lvbikudG9CZSgnc2ZvMScpO1xuICAgIGV4cGVjdChvdXRwdXQuZGF0YVswXS5zaGFyZCkudG9CZSgnYScpO1xuICB9KTtcblxuICBpdCgncHJlc2VydmVzIG51bGwgZmllbGQgdmFsdWVzIGZyb20gZGVzY3JpYmVSdW4gaW4gSlNPTiBvdXRwdXQnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gbnVsbCBtZWFucyBcImFwcGxpY2FibGUgYnV0IHVuZGV0ZXJtaW5hYmxlXCIg4oCUIGRpc3Rpbmd1aXNoYWJsZSBmcm9tXG4gICAgLy8gdGhlIGhvb2sgYmVpbmcgYWJzZW50IChrZXkgbWlzc2luZyBlbnRpcmVseSkuXG4gICAgY29uc3QgcnVuID0ge1xuICAgICAgcnVuSWQ6ICd3cnVuX21hbGZvcm1lZCcsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgIGRlcGxveW1lbnRJZDogJ2RlcC0xJyxcbiAgICAgIHdvcmtmbG93TmFtZTogJ3dvcmtmbG93Ly8uL3NyYy93b3JrZmxvd3MvdGVzdC8vbXlXb3JrZmxvdycsXG4gICAgICBzcGVjVmVyc2lvbjogMixcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHN0YXJ0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDEuMDAwWicpLFxuICAgICAgY29tcGxldGVkQXQ6IG51bGwsXG4gICAgICBlcnJvckNvZGU6IG51bGwsXG4gICAgICB3b3JrZmxvd0NvcmVWZXJzaW9uOiBudWxsLFxuICAgICAgd29ya2Zsb3dFbmNyeXB0aW9uRW5hYmxlZDogZmFsc2UsXG4gICAgfSBzYXRpc2ZpZXMgQW5hbHl0aWNzUnVuO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgZGVzY3JpYmVSdW46IHZpLmZuKCkubW9ja1JldHVyblZhbHVlKHsgcmVnaW9uOiBudWxsIH0pLFxuICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgIHJ1bnM6IHtcbiAgICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICAgIGRhdGE6IFtydW5dLFxuICAgICAgICAgICAgY3Vyc29yOiBudWxsLFxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBXb3JsZDtcbiAgICBjb25zdCB3cml0ZSA9IHZpXG4gICAgICAuc3B5T24ocHJvY2Vzcy5zdGRvdXQsICd3cml0ZScpXG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHRydWUpO1xuXG4gICAgYXdhaXQgbGlzdFJ1bnMod29ybGQsIHsganNvbjogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IG91dHB1dCA9IEpTT04ucGFyc2UoU3RyaW5nKHdyaXRlLm1vY2suY2FsbHNbMF1bMF0pKTtcbiAgICBleHBlY3QoJ3JlZ2lvbicgaW4gb3V0cHV0LmRhdGFbMF0pLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KG91dHB1dC5kYXRhWzBdLnJlZ2lvbikudG9CZU51bGwoKTtcbiAgfSk7XG5cbiAgaXQoJ25ldmVyIGxldHMgZGVzY3JpYmVSdW4gb3ZlcndyaXRlIGNhbm9uaWNhbCBydW4gZmllbGRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJ1biA9IHtcbiAgICAgIHJ1bklkOiAnd3J1bl80MUtYMjA2QlRLMTBNMEMzMUNNTjJBUzFKUycsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgIGRlcGxveW1lbnRJZDogJ2RlcC0xJyxcbiAgICAgIHdvcmtmbG93TmFtZTogJ3dvcmtmbG93Ly8uL3NyYy93b3JrZmxvd3MvdGVzdC8vbXlXb3JrZmxvdycsXG4gICAgICBzcGVjVmVyc2lvbjogMixcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHN0YXJ0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDEuMDAwWicpLFxuICAgICAgY29tcGxldGVkQXQ6IG51bGwsXG4gICAgICBlcnJvckNvZGU6IG51bGwsXG4gICAgICB3b3JrZmxvd0NvcmVWZXJzaW9uOiBudWxsLFxuICAgICAgd29ya2Zsb3dFbmNyeXB0aW9uRW5hYmxlZDogZmFsc2UsXG4gICAgfSBzYXRpc2ZpZXMgQW5hbHl0aWNzUnVuO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgLy8gSG9zdGlsZS9idWdneSB3b3JsZDogdHJpZXMgdG8gY2xvYmJlciBjYW5vbmljYWwgZmllbGRzLlxuICAgICAgZGVzY3JpYmVSdW46IHZpXG4gICAgICAgIC5mbigpXG4gICAgICAgIC5tb2NrUmV0dXJuVmFsdWUoeyBzdGF0dXM6ICdoYWNrZWQnLCBydW5JZDogJ25vcGUnLCByZWdpb246ICdzZm8xJyB9KSxcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICBydW5zOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbcnVuXSxcbiAgICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIGF3YWl0IGxpc3RSdW5zKHdvcmxkLCB7IGpzb246IHRydWUgfSk7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBKU09OLnBhcnNlKFN0cmluZyh3cml0ZS5tb2NrLmNhbGxzWzBdWzBdKSk7XG4gICAgZXhwZWN0KG91dHB1dC5kYXRhWzBdLnN0YXR1cykudG9CZSgncnVubmluZycpO1xuICAgIGV4cGVjdChvdXRwdXQuZGF0YVswXS5ydW5JZCkudG9CZShydW4ucnVuSWQpO1xuICAgIGV4cGVjdChvdXRwdXQuZGF0YVswXS5yZWdpb24pLnRvQmUoJ3NmbzEnKTtcbiAgfSk7XG5cbiAgaXQoJ3RyZWF0cyBhIHRocm93aW5nIGRlc2NyaWJlUnVuIGFzIGNvbnRyaWJ1dGluZyBubyBmaWVsZHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcnVuID0ge1xuICAgICAgcnVuSWQ6ICd3cnVuXzQxS1gyMDZCVEsxME0wQzMxQ01OMkFTMUpTJyxcbiAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgZGVwbG95bWVudElkOiAnZGVwLTEnLFxuICAgICAgd29ya2Zsb3dOYW1lOiAnd29ya2Zsb3cvLy4vc3JjL3dvcmtmbG93cy90ZXN0Ly9teVdvcmtmbG93JyxcbiAgICAgIHNwZWNWZXJzaW9uOiAyLFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgc3RhcnRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMS4wMDBaJyksXG4gICAgICBjb21wbGV0ZWRBdDogbnVsbCxcbiAgICAgIGVycm9yQ29kZTogbnVsbCxcbiAgICAgIHdvcmtmbG93Q29yZVZlcnNpb246IG51bGwsXG4gICAgICB3b3JrZmxvd0VuY3J5cHRpb25FbmFibGVkOiBmYWxzZSxcbiAgICB9IHNhdGlzZmllcyBBbmFseXRpY3NSdW47XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBkZXNjcmliZVJ1bjogdmkuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2J1Z2d5IHdvcmxkJyk7XG4gICAgICB9KSxcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICBydW5zOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbcnVuXSxcbiAgICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIC8vIE11c3Qgbm90IHRocm93IGRlc3BpdGUgdGhlIHdvcmxkIHZpb2xhdGluZyB0aGUgbm8tdGhyb3cgY29udHJhY3QuXG4gICAgYXdhaXQgbGlzdFJ1bnMod29ybGQsIHsganNvbjogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IG91dHB1dCA9IEpTT04ucGFyc2UoU3RyaW5nKHdyaXRlLm1vY2suY2FsbHNbMF1bMF0pKTtcbiAgICBleHBlY3Qob3V0cHV0LmRhdGFbMF0uc3RhdHVzKS50b0JlKCdydW5uaW5nJyk7XG4gICAgZXhwZWN0KCdyZWdpb24nIGluIG91dHB1dC5kYXRhWzBdKS50b0JlKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3N1cHBvcnRzIGFzeW5jIGRlc2NyaWJlUnVuIGltcGxlbWVudGF0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBydW4gPSB7XG4gICAgICBydW5JZDogJ3dydW5fNDFLWDIwNkJUSzEwTTBDMzFDTU4yQVMxSlMnLFxuICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgICB3b3JrZmxvd05hbWU6ICd3b3JrZmxvdy8vLi9zcmMvd29ya2Zsb3dzL3Rlc3QvL215V29ya2Zsb3cnLFxuICAgICAgc3BlY1ZlcnNpb246IDIsXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBudWxsLFxuICAgICAgZXJyb3JDb2RlOiBudWxsLFxuICAgICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIH0gc2F0aXNmaWVzIEFuYWx5dGljc1J1bjtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGRlc2NyaWJlUnVuOiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHsgcmVnaW9uOiAnc2ZvMScgfSksXG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgcnVuczoge1xuICAgICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgICAgZGF0YTogW3J1bl0sXG4gICAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0UnVucyh3b3JsZCwgeyBqc29uOiB0cnVlIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpO1xuICAgIGV4cGVjdChvdXRwdXQuZGF0YVswXS5yZWdpb24pLnRvQmUoJ3NmbzEnKTtcbiAgfSk7XG5cbiAgaXQoJ3RyZWF0cyBhIHJlamVjdGluZyBhc3luYyBkZXNjcmliZVJ1biBhcyBjb250cmlidXRpbmcgbm8gZmllbGRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJ1biA9IHtcbiAgICAgIHJ1bklkOiAnd3J1bl80MUtYMjA2QlRLMTBNMEMzMUNNTjJBUzFKUycsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgIGRlcGxveW1lbnRJZDogJ2RlcC0xJyxcbiAgICAgIHdvcmtmbG93TmFtZTogJ3dvcmtmbG93Ly8uL3NyYy93b3JrZmxvd3MvdGVzdC8vbXlXb3JrZmxvdycsXG4gICAgICBzcGVjVmVyc2lvbjogMixcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHN0YXJ0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDEuMDAwWicpLFxuICAgICAgY29tcGxldGVkQXQ6IG51bGwsXG4gICAgICBlcnJvckNvZGU6IG51bGwsXG4gICAgICB3b3JrZmxvd0NvcmVWZXJzaW9uOiBudWxsLFxuICAgICAgd29ya2Zsb3dFbmNyeXB0aW9uRW5hYmxlZDogZmFsc2UsXG4gICAgfSBzYXRpc2ZpZXMgQW5hbHl0aWNzUnVuO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgZGVzY3JpYmVSdW46IHZpLmZuKCkubW9ja1JlamVjdGVkVmFsdWUobmV3IEVycm9yKCdhc3luYyBidWdneSB3b3JsZCcpKSxcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICBydW5zOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbcnVuXSxcbiAgICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIGF3YWl0IGxpc3RSdW5zKHdvcmxkLCB7IGpzb246IHRydWUgfSk7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBKU09OLnBhcnNlKFN0cmluZyh3cml0ZS5tb2NrLmNhbGxzWzBdWzBdKSk7XG4gICAgZXhwZWN0KG91dHB1dC5kYXRhWzBdLnN0YXR1cykudG9CZSgncnVubmluZycpO1xuICAgIGV4cGVjdCgncmVnaW9uJyBpbiBvdXRwdXQuZGF0YVswXSkudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdhZGRzIG5vIHdvcmxkIGZpZWxkcyB3aGVuIHRoZSB3b3JsZCBsYWNrcyBkZXNjcmliZVJ1bicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBydW4gPSB7XG4gICAgICBydW5JZDogJ3dydW5fMDFLWDJNNU4zUkJOQzEyUllXWVlINFdXUUonLFxuICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgICB3b3JrZmxvd05hbWU6ICd3b3JrZmxvdy8vLi9zcmMvd29ya2Zsb3dzL3Rlc3QvL215V29ya2Zsb3cnLFxuICAgICAgc3BlY1ZlcnNpb246IDIsXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBudWxsLFxuICAgICAgZXJyb3JDb2RlOiBudWxsLFxuICAgICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIH0gc2F0aXNmaWVzIEFuYWx5dGljc1J1bjtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICBydW5zOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbcnVuXSxcbiAgICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIGF3YWl0IGxpc3RSdW5zKHdvcmxkLCB7IGpzb246IHRydWUgfSk7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBKU09OLnBhcnNlKFN0cmluZyh3cml0ZS5tb2NrLmNhbGxzWzBdWzBdKSk7XG4gICAgZXhwZWN0KCdyZWdpb24nIGluIG91dHB1dC5kYXRhWzBdKS50b0JlKGZhbHNlKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xpc3RTdGVwcycsICgpID0+IHtcbiAgaXQoJ3Bhc3NlcyBjdXJzb3JzIGFuZCBwcmVzZXJ2ZXMgdGhlIEpTT04gYXJyYXkgb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHN0ZXAgPSB7XG4gICAgICBydW5JZDogJ3J1bi0xJyxcbiAgICAgIHN0ZXBJZDogJ3N0ZXAtMScsXG4gICAgICBzdGVwTmFtZTogJ2RvV29yaycsXG4gICAgICBzdGF0dXM6ICdjb21wbGV0ZWQnLFxuICAgICAgYXR0ZW1wdDogMSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMi4wMDBaJyksXG4gICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMi4wMDBaJyksXG4gICAgICByZXRyeUFmdGVyOiBudWxsLFxuICAgICAgZXJyb3JDb2RlOiBudWxsLFxuICAgICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIH0gc2F0aXNmaWVzIEFuYWx5dGljc1N0ZXA7XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgc3RlcHM6IHtcbiAgICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICAgIGRhdGE6IFtzdGVwXSxcbiAgICAgICAgICAgIGN1cnNvcjogJ25leHQtc3RlcC1jdXJzb3InLFxuICAgICAgICAgICAgaGFzTW9yZTogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0U3RlcHMod29ybGQsIHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBydW5JZDogJ3J1bi0xJyxcbiAgICAgIGN1cnNvcjogJ3N0ZXAtY3Vyc29yJyxcbiAgICAgIGxpbWl0OiAxLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHdvcmxkLmFuYWx5dGljcz8uc3RlcHMubGlzdCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIHNvcnRPcmRlcjogJ2Rlc2MnLFxuICAgICAgICBjdXJzb3I6ICdzdGVwLWN1cnNvcicsXG4gICAgICAgIGxpbWl0OiAxLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBleHBlY3QoSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpKS50b0VxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgLi4uc3RlcCxcbiAgICAgICAgY3JlYXRlZEF0OiAnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyxcbiAgICAgICAgdXBkYXRlZEF0OiAnMjAyNi0wNi0zMFQwMDowMDowMi4wMDBaJyxcbiAgICAgICAgc3RhcnRlZEF0OiAnMjAyNi0wNi0zMFQwMDowMDowMS4wMDBaJyxcbiAgICAgICAgY29tcGxldGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAyLjAwMFonLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG5cbiAgaXQoJ2ZhbGxzIGJhY2sgdG8gc3RvcmFnZSB3aGVuIHRoZSBmaXJzdCBhbmFseXRpY3MgcGFnZSBpcyBlbXB0eScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzdGVwID0ge1xuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBzdGVwSWQ6ICdzdGVwLTEnLFxuICAgICAgc3RlcE5hbWU6ICdzdGVwLy8uL3NyYy93b3JrZmxvd3MvdGVzdC8vZG9Xb3JrJyxcbiAgICAgIHN0YXR1czogJ2NvbXBsZXRlZCcsXG4gICAgICBhdHRlbXB0OiAxLFxuICAgICAgaW5wdXQ6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAyLjAwMFonKSxcbiAgICAgIHN0YXJ0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDEuMDAwWicpLFxuICAgICAgY29tcGxldGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAyLjAwMFonKSxcbiAgICB9IHNhdGlzZmllcyBTdGVwO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgIHN0ZXBzOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiB7XG4gICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgIGRhdGE6IFtzdGVwXSxcbiAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIGF3YWl0IGxpc3RTdGVwcyh3b3JsZCwgeyBqc29uOiB0cnVlLCBydW5JZDogJ3J1bi0xJyB9KTtcblxuICAgIGV4cGVjdCh3b3JsZC5hbmFseXRpY3M/LnN0ZXBzLmxpc3QpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBleHBlY3Qod29ybGQuc3RlcHMubGlzdCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIHNvcnRPcmRlcjogJ2Rlc2MnLFxuICAgICAgICBjdXJzb3I6IHVuZGVmaW5lZCxcbiAgICAgICAgbGltaXQ6IDIwLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmVEYXRhOiAnbm9uZScsXG4gICAgfSk7XG4gICAgZXhwZWN0KEpTT04ucGFyc2UoU3RyaW5nKHdyaXRlLm1vY2suY2FsbHNbMF1bMF0pKSkudG9FcXVhbChbXG4gICAgICB7XG4gICAgICAgIC4uLnN0ZXAsXG4gICAgICAgIGNyZWF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicsXG4gICAgICAgIHVwZGF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDIuMDAwWicsXG4gICAgICAgIHN0YXJ0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDEuMDAwWicsXG4gICAgICAgIGNvbXBsZXRlZEF0OiAnMjAyNi0wNi0zMFQwMDowMDowMi4wMDBaJyxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdsaXN0RXZlbnRzJywgKCkgPT4ge1xuICBpdCgncGFzc2VzIGN1cnNvcnMgYW5kIHByZXNlcnZlcyB0aGUgSlNPTiBhcnJheSBvdXRwdXQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBydW5JZDogJ3J1bi0xJyxcbiAgICAgIGV2ZW50SWQ6ICdldmVudC0xJyxcbiAgICAgIGV2ZW50VHlwZTogJ3N0ZXBfY29tcGxldGVkJyxcbiAgICAgIGNvcnJlbGF0aW9uSWQ6ICdzdGVwLTEnLFxuICAgICAgZW50aXR5SWQ6ICdzdGVwLTEnLFxuICAgICAgc3RlcE5hbWU6ICdkb1dvcmsnLFxuICAgICAgd29ya2Zsb3dOYW1lOiAnd29ya2Zsb3cvLy4vc3JjL3dvcmtmbG93cy90ZXN0Ly9teVdvcmtmbG93JyxcbiAgICAgIGRlcGxveW1lbnRJZDogJ2RlcC0xJyxcbiAgICAgIHNwZWNWZXJzaW9uOiAyLFxuICAgICAgcnVuQ3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAyLjAwMFonKSxcbiAgICAgIHJlZ2lvbjogbnVsbCxcbiAgICAgIHZlcmNlbElkOiBudWxsLFxuICAgICAgcmVxdWVzdElkOiBudWxsLFxuICAgICAgcmVzdW1lQXQ6IG51bGwsXG4gICAgICByZXRyeUFmdGVyOiBudWxsLFxuICAgICAgZXJyb3JDb2RlOiBudWxsLFxuICAgICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICAgIGlzV2ViaG9vazogZmFsc2UsXG4gICAgICBpc1N5c3RlbTogZmFsc2UsXG4gICAgICB3b3JrZmxvd0VuY3J5cHRpb25FbmFibGVkOiBmYWxzZSxcbiAgICB9IHNhdGlzZmllcyBBbmFseXRpY3NFdmVudDtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICAgIGRhdGE6IFtldmVudF0sXG4gICAgICAgICAgICBjdXJzb3I6ICduZXh0LWV2ZW50LWN1cnNvcicsXG4gICAgICAgICAgICBoYXNNb3JlOiB0cnVlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIGF3YWl0IGxpc3RFdmVudHMod29ybGQsIHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBydW5JZDogJ3J1bi0xJyxcbiAgICAgIGN1cnNvcjogJ2V2ZW50LWN1cnNvcicsXG4gICAgICBsaW1pdDogMSxcbiAgICB9KTtcblxuICAgIGV4cGVjdCh3b3JsZC5hbmFseXRpY3M/LmV2ZW50cy5saXN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICBydW5JZDogJ3J1bi0xJyxcbiAgICAgIGNvcnJlbGF0aW9uSWQ6IHVuZGVmaW5lZCxcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgc29ydE9yZGVyOiAnZGVzYycsXG4gICAgICAgIGN1cnNvcjogJ2V2ZW50LWN1cnNvcicsXG4gICAgICAgIGxpbWl0OiAxLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBleHBlY3QoSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpKS50b0VxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgIHJ1bkNyZWF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicsXG4gICAgICAgIGNyZWF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDIuMDAwWicsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcblxuICBpdCgnZmFsbHMgYmFjayB0byBzdG9yYWdlIHdoZW4gdGhlIGZpcnN0IGFuYWx5dGljcyBwYWdlIGlzIGVtcHR5JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBldmVudElkOiAnZXZlbnQtMScsXG4gICAgICBldmVudFR5cGU6ICdzdGVwX2NvbXBsZXRlZCcsXG4gICAgICBjb3JyZWxhdGlvbklkOiAnc3RlcC0xJyxcbiAgICAgIGV2ZW50RGF0YToge1xuICAgICAgICBzdGVwTmFtZTogJ2RvV29yaycsXG4gICAgICAgIHJlc3VsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDIuMDAwWicpLFxuICAgIH0gYXMgdW5rbm93biBhcyBFdmVudDtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICAgIGRhdGE6IFtdLFxuICAgICAgICAgICAgY3Vyc29yOiBudWxsLFxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgIGRhdGE6IFtldmVudF0sXG4gICAgICAgICAgY3Vyc29yOiBudWxsLFxuICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0RXZlbnRzKHdvcmxkLCB7IGpzb246IHRydWUsIHJ1bklkOiAncnVuLTEnIH0pO1xuXG4gICAgZXhwZWN0KHdvcmxkLmFuYWx5dGljcz8uZXZlbnRzLmxpc3QpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBleHBlY3Qod29ybGQuZXZlbnRzLmxpc3QpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgIHJ1bklkOiAncnVuLTEnLFxuICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICBzb3J0T3JkZXI6ICdkZXNjJyxcbiAgICAgICAgY3Vyc29yOiB1bmRlZmluZWQsXG4gICAgICAgIGxpbWl0OiAyMCxcbiAgICAgIH0sXG4gICAgICByZXNvbHZlRGF0YTogJ25vbmUnLFxuICAgIH0pO1xuICAgIGV4cGVjdChKU09OLnBhcnNlKFN0cmluZyh3cml0ZS5tb2NrLmNhbGxzWzBdWzBdKSkpLnRvRXF1YWwoW1xuICAgICAge1xuICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgY3JlYXRlZEF0OiAnMjAyNi0wNi0zMFQwMDowMDowMi4wMDBaJyxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdsaXN0U2xlZXBzJywgKCkgPT4ge1xuICBjb25zdCB3YWl0ID0ge1xuICAgIHJ1bklkOiAncnVuLTEnLFxuICAgIHdhaXRJZDogJ3dhaXQtMScsXG4gICAgc3RhdHVzOiAnd2FpdGluZycsXG4gICAgcmVzdW1lQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAxOjAwLjAwMFonKSxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICBjb21wbGV0ZWRBdDogbnVsbCxcbiAgICB3b3JrZmxvd0NvcmVWZXJzaW9uOiBudWxsLFxuICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICB9IHNhdGlzZmllcyBBbmFseXRpY3NXYWl0O1xuICBjb25zdCBwYWdlSW5mbyA9IHtcbiAgICBjdXJyZW50TG9va2JhY2tEYXlzOiAyLFxuICAgIG1heExvb2tiYWNrRGF5czogMzAsXG4gICAgY3VycmVudFdpbmRvd1N0YXJ0OiBuZXcgRGF0ZSgnMjAyNi0wNi0yOFQwMDowMDowMC4wMDBaJyksXG4gICAgbWF4V2luZG93U3RhcnQ6IG5ldyBEYXRlKCcyMDI2LTA2LTAxVDAwOjAwOjAwLjAwMFonKSxcbiAgICB1cGdyYWRlQXZhaWxhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGl0KCdwYXNzZXMgY3Vyc29ycyBhbmQgcHJlc2VydmVzIHRoZSBKU09OIGFycmF5IG91dHB1dCB0aHJvdWdoIGFuYWx5dGljcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICB3YWl0czoge1xuICAgICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgICAgZGF0YTogW3dhaXRdLFxuICAgICAgICAgICAgY3Vyc29yOiAnbmV4dC13YWl0LWN1cnNvcicsXG4gICAgICAgICAgICBoYXNNb3JlOiB0cnVlLFxuICAgICAgICAgICAgcGFnZUluZm8sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBXb3JsZDtcbiAgICBjb25zdCB3cml0ZSA9IHZpXG4gICAgICAuc3B5T24ocHJvY2Vzcy5zdGRvdXQsICd3cml0ZScpXG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHRydWUpO1xuXG4gICAgYXdhaXQgbGlzdFNsZWVwcyh3b3JsZCwge1xuICAgICAganNvbjogdHJ1ZSxcbiAgICAgIHJ1bklkOiAncnVuLTEnLFxuICAgICAgY3Vyc29yOiAnd2FpdC1jdXJzb3InLFxuICAgICAgbGltaXQ6IDEsXG4gICAgfSk7XG5cbiAgICBleHBlY3Qod29ybGQuYW5hbHl0aWNzPy53YWl0cy5saXN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICBydW5JZDogJ3J1bi0xJyxcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgc29ydE9yZGVyOiAnZGVzYycsXG4gICAgICAgIGN1cnNvcjogJ3dhaXQtY3Vyc29yJyxcbiAgICAgICAgbGltaXQ6IDEsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGV4cGVjdChKU09OLnBhcnNlKFN0cmluZyh3cml0ZS5tb2NrLmNhbGxzWzBdWzBdKSkpLnRvRXF1YWwoW1xuICAgICAge1xuICAgICAgICAuLi53YWl0LFxuICAgICAgICByZXN1bWVBdDogJzIwMjYtMDYtMzBUMDA6MDE6MDAuMDAwWicsXG4gICAgICAgIGNyZWF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicsXG4gICAgICAgIHVwZGF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcblxuICBpdCgnc3VyZmFjZXMgdGhlIG9ic2VydmFiaWxpdHkgdXBncmFkZSBoaW50IGluIHRhYmxlIG1vZGUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgd2FpdHM6IHtcbiAgICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICAgIGRhdGE6IFt3YWl0XSxcbiAgICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICAgICAgcGFnZUluZm8sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBXb3JsZDtcbiAgICBjb25zdCBsb2cgPSB2aS5zcHlPbihjb25zb2xlLCAnbG9nJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHVuZGVmaW5lZCk7XG5cbiAgICBhd2FpdCBsaXN0U2xlZXBzKHdvcmxkLCB7IHJ1bklkOiAncnVuLTEnIH0pO1xuXG4gICAgZXhwZWN0KGxvZy5tb2NrLmNhbGxzLmZsYXQoKS5qb2luKCdcXG4nKSkudG9Db250YWluKFxuICAgICAgJ1VwZ3JhZGUgT2JzZXJ2YWJpbGl0eSBQbHVzJ1xuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=
713
+ describe('listSleeps analytics degradation', () => {
714
+ const eventBase = {
715
+ runId: 'run-1',
716
+ workflowName: 'wf',
717
+ deploymentId: 'dpl_1',
718
+ };
719
+ // The other three list paths fall back to storage; this one used to end the
720
+ // command, leaving its storage branch unreachable wherever analytics exists.
721
+ it('falls back to the event log when the analytics read fails', async () => {
722
+ const world = {
723
+ analytics: {
724
+ waits: {
725
+ list: vi
726
+ .fn()
727
+ .mockRejectedValue(Object.assign(new Error('upstream unavailable'), { status: 503 })),
728
+ },
729
+ },
730
+ events: {
731
+ list: vi.fn().mockResolvedValue({
732
+ data: [
733
+ {
734
+ ...eventBase,
735
+ eventId: 'evnt-1',
736
+ eventType: 'wait_created',
737
+ correlationId: 'wait-1',
738
+ createdAt: new Date('2026-06-30T00:00:00.000Z'),
739
+ eventData: { resumeAt: new Date('2026-06-30T00:01:00.000Z') },
740
+ },
741
+ ],
742
+ cursor: null,
743
+ hasMore: false,
744
+ }),
745
+ },
746
+ };
747
+ const write = vi
748
+ .spyOn(process.stdout, 'write')
749
+ .mockImplementation(() => true);
750
+ await listSleeps(world, { json: true, runId: 'run-1' });
751
+ expect(world.analytics?.waits.list).toHaveBeenCalled();
752
+ expect(world.events.list).toHaveBeenCalled();
753
+ expect(write.mock.calls.join('')).toContain('wait-1');
754
+ write.mockRestore();
755
+ });
756
+ // Retrying an argument the World already rejected would only replace a
757
+ // precise message with a slower failure.
758
+ it('does not fall back when the argument was rejected', async () => {
759
+ const world = {
760
+ analytics: {
761
+ waits: {
762
+ list: vi
763
+ .fn()
764
+ .mockRejectedValue(Object.assign(new Error('analytics.waits.list: runId must be a workflow run id'), { code: 'INVALID_ARGUMENT', field: 'runId' })),
765
+ },
766
+ },
767
+ events: { list: vi.fn() },
768
+ };
769
+ await listSleeps(world, { runId: 'nope' });
770
+ expect(world.analytics?.waits.list).toHaveBeenCalled();
771
+ expect(world.events.list).not.toHaveBeenCalled();
772
+ expect(process.exitCode).toBe(1);
773
+ process.exitCode = 0;
774
+ });
775
+ });
776
+ describe('listAttributes', () => {
777
+ const key = {
778
+ key: 'application',
779
+ runCount: 12,
780
+ firstSeenAt: new Date('2026-08-26T09:14:02.000Z'),
781
+ lastSeenAt: new Date('2026-09-02T21:40:11.000Z'),
782
+ };
783
+ const worldWith = (list) => ({ analytics: { attributes: { list } } });
784
+ it('passes the window, name filter and cursor, and preserves JSON output', async () => {
785
+ const list = vi.fn().mockResolvedValue({
786
+ data: [key],
787
+ cursor: 'next',
788
+ hasMore: true,
789
+ });
790
+ const write = vi
791
+ .spyOn(process.stdout, 'write')
792
+ .mockImplementation(() => true);
793
+ await listAttributes(worldWith(list), {
794
+ json: true,
795
+ workflowName: 'orderWorkflow',
796
+ since: '7d',
797
+ cursor: 'first',
798
+ limit: 25,
799
+ });
800
+ const params = list.mock.calls[0][0];
801
+ expect(params.workflowName).toBe('orderWorkflow');
802
+ expect(params.startTime).toBeDefined();
803
+ expect(params.endTime).toBeDefined();
804
+ expect(params.pagination).toMatchObject({ cursor: 'first', limit: 25 });
805
+ expect(write.mock.calls.join('')).toContain('application');
806
+ write.mockRestore();
807
+ });
808
+ // The backend orders keys alphabetically; forwarding a defaulted `desc`
809
+ // would override that, so the flag is only sent when it was passed.
810
+ it('omits sortOrder unless --sort was given', async () => {
811
+ const list = vi
812
+ .fn()
813
+ .mockResolvedValue({ data: [], cursor: null, hasMore: false });
814
+ await listAttributes(worldWith(list), { json: true });
815
+ expect(list.mock.calls[0][0].pagination.sortOrder).toBeUndefined();
816
+ await listAttributes(worldWith(list), { json: true, sort: 'asc' });
817
+ expect(list.mock.calls[1][0].pagination.sortOrder).toBe('asc');
818
+ });
819
+ // Analytics-only: there is no cross-run attribute index in storage.
820
+ it('reports that the backend cannot list attributes', async () => {
821
+ const world = { analytics: undefined };
822
+ await listAttributes(world, { json: true });
823
+ expect(process.exitCode).toBe(1);
824
+ process.exitCode = 0;
825
+ });
826
+ // Every one of these parsed, was dropped, and left the full key table
827
+ // looking like a filtered answer. The sibling listings warn on the
828
+ // selectors they cannot apply; this one warned on nothing.
829
+ describe.each([
830
+ ['status', { status: 'failed' }, 'Filtering by status'],
831
+ ['runId', { runId: 'wrun_x' }, 'Filtering by run-id'],
832
+ ['stepId', { stepId: 'step_x' }, 'Filtering by step-id'],
833
+ ['hookId', { hookId: 'hook_x' }, 'Filtering by hook-id'],
834
+ ['withData', { withData: true }, '`withData` flag is ignored'],
835
+ ])('with --%s', (_flag, opts, expected) => {
836
+ it('warns that the filter does not apply', async () => {
837
+ const warn = vi.spyOn(logger, 'warn').mockImplementation(() => undefined);
838
+ const list = vi
839
+ .fn()
840
+ .mockResolvedValue({ data: [key], cursor: null, hasMore: false });
841
+ await listAttributes(worldWith(list), { json: true, ...opts });
842
+ expect(warn.mock.calls.flat().join(' ')).toContain(expected);
843
+ warn.mockRestore();
844
+ });
845
+ // The listing takes a workflow name and a window; nothing here reaches
846
+ // the backend, so warning is the only signal the caller gets.
847
+ it('forwards none of it to the backend', async () => {
848
+ vi.spyOn(logger, 'warn').mockImplementation(() => undefined);
849
+ const list = vi
850
+ .fn()
851
+ .mockResolvedValue({ data: [key], cursor: null, hasMore: false });
852
+ await listAttributes(worldWith(list), { json: true, ...opts });
853
+ const params = list.mock.calls[0][0];
854
+ expect(params.status).toBeUndefined();
855
+ expect(params.runId).toBeUndefined();
856
+ expect(params.stepId).toBeUndefined();
857
+ expect(params.hookId).toBeUndefined();
858
+ vi.restoreAllMocks();
859
+ });
860
+ });
861
+ });
862
+ describe('listRuns attribute filtering', () => {
863
+ const run = {
864
+ runId: 'run-1',
865
+ status: 'completed',
866
+ deploymentId: 'dep-1',
867
+ workflowName: 'workflow//./src/workflows/test//myWorkflow',
868
+ attributes: { tenant: 'acme' },
869
+ createdAt: new Date('2026-06-30T00:00:00.000Z'),
870
+ updatedAt: new Date('2026-06-30T00:00:01.000Z'),
871
+ startedAt: null,
872
+ completedAt: null,
873
+ errorCode: null,
874
+ workflowCoreVersion: null,
875
+ workflowEncryptionEnabled: false,
876
+ };
877
+ it('forwards the filter to the analytics listing', async () => {
878
+ const list = vi
879
+ .fn()
880
+ .mockResolvedValue({ data: [run], cursor: null, hasMore: false });
881
+ const world = {
882
+ analytics: { runs: { list } },
883
+ };
884
+ await listRuns(world, { json: true, attributes: { tenant: 'acme' } });
885
+ expect(list.mock.calls[0][0].attributes).toEqual({ tenant: 'acme' });
886
+ });
887
+ it('omits the key entirely when no filter was given', async () => {
888
+ const list = vi
889
+ .fn()
890
+ .mockResolvedValue({ data: [run], cursor: null, hasMore: false });
891
+ const world = {
892
+ analytics: { runs: { list } },
893
+ };
894
+ await listRuns(world, { json: true });
895
+ expect('attributes' in list.mock.calls[0][0]).toBe(false);
896
+ });
897
+ // The warning names whichever condition applies. `--withData` is now
898
+ // rejected upstream by validateAttributeScope, so the reachable case here
899
+ // is a backend with no analytics namespace.
900
+ it('says the backend has no analytics read path', async () => {
901
+ const warn = vi.spyOn(logger, 'warn').mockImplementation(() => undefined);
902
+ const world = {
903
+ analytics: undefined,
904
+ runs: {
905
+ list: vi
906
+ .fn()
907
+ .mockResolvedValue({ data: [], cursor: null, hasMore: false }),
908
+ },
909
+ };
910
+ await listRuns(world, { json: true, attributes: { tenant: 'acme' } });
911
+ expect(warn.mock.calls.flat().join(' ')).toContain('--attribute is ignored by this backend, which has no analytics read path');
912
+ warn.mockRestore();
913
+ });
914
+ it('blames --withData when that is what moved the read off analytics', async () => {
915
+ const warn = vi.spyOn(logger, 'warn').mockImplementation(() => undefined);
916
+ const world = {
917
+ analytics: { runs: { list: vi.fn() } },
918
+ runs: {
919
+ list: vi
920
+ .fn()
921
+ .mockResolvedValue({ data: [], cursor: null, hasMore: false }),
922
+ },
923
+ };
924
+ await listRuns(world, {
925
+ json: true,
926
+ withData: true,
927
+ attributes: { tenant: 'acme' },
928
+ });
929
+ expect(warn.mock.calls.flat().join(' ')).toContain('--attribute is ignored with --withData');
930
+ warn.mockRestore();
931
+ });
932
+ });
933
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3Qvb3V0cHV0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFDTCxzQ0FBc0MsRUFDdEMsbUNBQW1DLEdBQ3BDLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGNBQWMsRUFDZCxVQUFVLEVBQ1YsUUFBUSxFQUNSLFVBQVUsRUFDVixTQUFTLEdBQ1YsTUFBTSxhQUFhLENBQUM7QUFFckIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxZQUFrQyxFQUFFLEVBQWUsRUFBRSxDQUNwRSxDQUFDO0lBQ0MsS0FBSyxFQUFFLE9BQU87SUFDZCxNQUFNLEVBQUUsU0FBUztJQUNqQixZQUFZLEVBQUUsT0FBTztJQUNyQixZQUFZLEVBQUUsNENBQTRDO0lBQzFELEtBQUssRUFBRSxTQUFTO0lBQ2hCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDakMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNqQyxXQUFXLEVBQUUsU0FBUztJQUN0QixTQUFTLEVBQUUsU0FBUztJQUNwQixTQUFTLEVBQUUsU0FBUztJQUNwQixXQUFXLEVBQUUsQ0FBQztJQUNkLGdCQUFnQixFQUFFLEVBQUU7SUFDcEIsR0FBRyxTQUFTO0NBQ2IsQ0FBMkIsQ0FBQztBQUUvQixTQUFTLENBQUMsR0FBRyxFQUFFO0lBQ2IsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3ZC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QUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDaEQsd0NBQXdDLENBQ3pDLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQW5hbHl0aWNzQXR0cmlidXRlS2V5LFxuICBBbmFseXRpY3NFdmVudCxcbiAgQW5hbHl0aWNzUnVuLFxuICBBbmFseXRpY3NTdGVwLFxuICBBbmFseXRpY3NXYWl0LFxuICBFdmVudCxcbiAgU3RlcCxcbiAgV29ya2Zsb3dSdW4sXG4gIFdvcmxkLFxufSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgYWZ0ZXJFYWNoLCBkZXNjcmliZSwgZXhwZWN0LCBpdCwgdmkgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vY29uZmlnL2xvZy5qcyc7XG5pbXBvcnQge1xuICBnZXRPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkTWVzc2FnZSxcbiAgaXNPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkRXJyb3IsXG59IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB7XG4gIGZvcm1hdFRhYmxlVmFsdWUsXG4gIGhhc0V4cGlyZWREYXRhLFxuICBsaXN0QXR0cmlidXRlcyxcbiAgbGlzdEV2ZW50cyxcbiAgbGlzdFJ1bnMsXG4gIGxpc3RTbGVlcHMsXG4gIGxpc3RTdGVwcyxcbn0gZnJvbSAnLi9vdXRwdXQuanMnO1xuXG5jb25zdCBtYWtlUnVuID0gKG92ZXJyaWRlczogUGFydGlhbDxXb3JrZmxvd1J1bj4gPSB7fSk6IFdvcmtmbG93UnVuID0+XG4gICh7XG4gICAgcnVuSWQ6ICdydW4tMScsXG4gICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgZGVwbG95bWVudElkOiAnZGVwLTEnLFxuICAgIHdvcmtmbG93TmFtZTogJ3dvcmtmbG93Ly8uL3NyYy93b3JrZmxvd3MvdGVzdC8vbXlXb3JrZmxvdycsXG4gICAgaW5wdXQ6IHVuZGVmaW5lZCxcbiAgICBvdXRwdXQ6IHVuZGVmaW5lZCxcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjUtMDEtMDEnKSxcbiAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCcyMDI1LTAxLTAxJyksXG4gICAgY29tcGxldGVkQXQ6IHVuZGVmaW5lZCxcbiAgICBzdGFydGVkQXQ6IHVuZGVmaW5lZCxcbiAgICBleHBpcmVkQXQ6IHVuZGVmaW5lZCxcbiAgICBzcGVjVmVyc2lvbjogMixcbiAgICBleGVjdXRpb25Db250ZXh0OiB7fSxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH0pIGFzIHVua25vd24gYXMgV29ya2Zsb3dSdW47XG5cbmFmdGVyRWFjaCgoKSA9PiB7XG4gIHZpLnJlc3RvcmVBbGxNb2NrcygpO1xufSk7XG5cbmRlc2NyaWJlKCdoYXNFeHBpcmVkRGF0YScsICgpID0+IHtcbiAgaXQoJ3JldHVybnMgZmFsc2Ugd2hlbiBleHBpcmVkQXQgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgIGV4cGVjdChoYXNFeHBpcmVkRGF0YShtYWtlUnVuKHsgZXhwaXJlZEF0OiB1bmRlZmluZWQgfSkpKS50b0JlKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZmFsc2Ugd2hlbiBleHBpcmVkQXQgaXMgaW4gdGhlIGZ1dHVyZScsICgpID0+IHtcbiAgICBjb25zdCBmdXR1cmUgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gICAgZXhwZWN0KGhhc0V4cGlyZWREYXRhKG1ha2VSdW4oeyBleHBpcmVkQXQ6IGZ1dHVyZSB9KSkpLnRvQmUoZmFsc2UpO1xuICB9KTtcblxuICBpdCgncmV0dXJucyB0cnVlIHdoZW4gZXhwaXJlZEF0IGlzIGluIHRoZSBwYXN0JywgKCkgPT4ge1xuICAgIGNvbnN0IHBhc3QgPSBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gICAgZXhwZWN0KGhhc0V4cGlyZWREYXRhKG1ha2VSdW4oeyBleHBpcmVkQXQ6IHBhc3QgfSkpKS50b0JlKHRydWUpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZm9ybWF0VGFibGVWYWx1ZSBleHBpcmVkIGRhdGEgaGFuZGxpbmcnLCAoKSA9PiB7XG4gIGl0KCdyZXR1cm5zIGlucHV0IHZhbHVlIHdoZW4gZXhwaXJlZEF0IGlzIGluIHRoZSBmdXR1cmUnLCAoKSA9PiB7XG4gICAgY29uc3QgZnV0dXJlID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgIGNvbnN0IGl0ZW0gPSB7IGV4cGlyZWRBdDogZnV0dXJlLnRvSVNPU3RyaW5nKCksIGlucHV0OiAnaGVsbG8nIH07XG4gICAgY29uc3QgcmVzdWx0ID0gZm9ybWF0VGFibGVWYWx1ZSgnaW5wdXQnLCAnaGVsbG8nLCB7fSwgdW5kZWZpbmVkLCBpdGVtKTtcbiAgICBleHBlY3QocmVzdWx0KS5ub3QudG9Db250YWluKCdleHBpcmVkJyk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIGV4cGlyZWQgbWVzc2FnZSB3aGVuIGV4cGlyZWRBdCBpcyBpbiB0aGUgcGFzdCcsICgpID0+IHtcbiAgICBjb25zdCBwYXN0ID0gbmV3IERhdGUoRGF0ZS5ub3coKSAtIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgIGNvbnN0IGl0ZW0gPSB7IGV4cGlyZWRBdDogcGFzdC50b0lTT1N0cmluZygpLCBvdXRwdXQ6ICdoZWxsbycgfTtcbiAgICBjb25zdCByZXN1bHQgPSBmb3JtYXRUYWJsZVZhbHVlKCdvdXRwdXQnLCAnaGVsbG8nLCB7fSwgdW5kZWZpbmVkLCBpdGVtKTtcbiAgICBleHBlY3QoU3RyaW5nKHJlc3VsdCkpLnRvQ29udGFpbignZGF0YSBleHBpcmVkJyk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIGlucHV0IHZhbHVlIHdoZW4gZXhwaXJlZEF0IGlzIG5vdCBwcmVzZW50JywgKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSB7IGlucHV0OiAnaGVsbG8nIH07XG4gICAgY29uc3QgcmVzdWx0ID0gZm9ybWF0VGFibGVWYWx1ZSgnaW5wdXQnLCAnaGVsbG8nLCB7fSwgdW5kZWZpbmVkLCBpdGVtKTtcbiAgICBleHBlY3QoU3RyaW5nKHJlc3VsdCkpLm5vdC50b0NvbnRhaW4oJ2V4cGlyZWQnKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2lzT2JzZXJ2YWJpbGl0eVVwZ3JhZGVSZXF1aXJlZEVycm9yJywgKCkgPT4ge1xuICBpdCgnZGV0ZWN0cyB3b3JrZmxvdyBhbmFseXRpY3MgNDAyIGVycm9ycyBieSB0b3AtbGV2ZWwgY29kZScsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBpc09ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRFcnJvcih7XG4gICAgICAgIHN0YXR1czogNDAyLFxuICAgICAgICBjb2RlOiAnb2JzZXJ2YWJpbGl0eS11cGdyYWRlLXJlcXVpcmVkJyxcbiAgICAgIH0pXG4gICAgKS50b0JlKHRydWUpO1xuICB9KTtcblxuICBpdCgnZGV0ZWN0cyB3b3JrZmxvdyBhbmFseXRpY3MgNDAyIGVycm9ycyBieSByZXNwb25zZSBib2R5IGVycm9yJywgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGlzT2JzZXJ2YWJpbGl0eVVwZ3JhZGVSZXF1aXJlZEVycm9yKHtcbiAgICAgICAgc3RhdHVzOiA0MDIsXG4gICAgICAgIGJvZHk6IHsgZXJyb3I6ICdvYnNlcnZhYmlsaXR5LXVwZ3JhZGUtcmVxdWlyZWQnIH0sXG4gICAgICB9KVxuICAgICkudG9CZSh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IHRyZWF0IDQwNHMgYXMgdXBncmFkZSBwcm9tcHRzJywgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGlzT2JzZXJ2YWJpbGl0eVVwZ3JhZGVSZXF1aXJlZEVycm9yKHtcbiAgICAgICAgc3RhdHVzOiA0MDQsXG4gICAgICAgIGNvZGU6ICdvYnNlcnZhYmlsaXR5LXVwZ3JhZGUtcmVxdWlyZWQnLFxuICAgICAgfSlcbiAgICApLnRvQmUoZmFsc2UpO1xuICB9KTtcblxuICBpdCgndXNlcyBhbiB1cGdyYWRlIHByb21wdCBtZXNzYWdlJywgKCkgPT4ge1xuICAgIGV4cGVjdChnZXRPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkTWVzc2FnZSgpKS50b0NvbnRhaW4oXG4gICAgICAnVXBncmFkZSBPYnNlcnZhYmlsaXR5IFBsdXMnXG4gICAgKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xpc3RSdW5zJywgKCkgPT4ge1xuICBpdCgncHJlc2VydmVzIGFuYWx5dGljcyBwYWdlIG1ldGFkYXRhIGluIEpTT04gb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJ1biA9IHtcbiAgICAgIHJ1bklkOiAncnVuLTEnLFxuICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgICB3b3JrZmxvd05hbWU6ICd3b3JrZmxvdy8vLi9zcmMvd29ya2Zsb3dzL3Rlc3QvL215V29ya2Zsb3cnLFxuICAgICAgc3BlY1ZlcnNpb246IDIsXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBudWxsLFxuICAgICAgZXJyb3JDb2RlOiBudWxsLFxuICAgICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIH0gc2F0aXNmaWVzIEFuYWx5dGljc1J1bjtcbiAgICBjb25zdCBwYWdlSW5mbyA9IHtcbiAgICAgIGN1cnJlbnRMb29rYmFja0RheXM6IDIsXG4gICAgICBtYXhMb29rYmFja0RheXM6IDMwLFxuICAgICAgY3VycmVudFdpbmRvd1N0YXJ0OiBuZXcgRGF0ZSgnMjAyNi0wNi0yOFQwMDowMDowMC4wMDBaJyksXG4gICAgICBtYXhXaW5kb3dTdGFydDogbmV3IERhdGUoJzIwMjYtMDYtMDFUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBncmFkZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgIHJ1bnM6IHtcbiAgICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICAgIGRhdGE6IFtydW5dLFxuICAgICAgICAgICAgY3Vyc29yOiBudWxsLFxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgICAgICAgICBwYWdlSW5mbyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0UnVucyh3b3JsZCwgeyBqc29uOiB0cnVlIH0pO1xuXG4gICAgZXhwZWN0KHdvcmxkLmFuYWx5dGljcz8ucnVucy5saXN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICB3b3JrZmxvd05hbWU6IHVuZGVmaW5lZCxcbiAgICAgIHN0YXR1czogdW5kZWZpbmVkLFxuICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICBzb3J0T3JkZXI6ICdkZXNjJyxcbiAgICAgICAgY3Vyc29yOiB1bmRlZmluZWQsXG4gICAgICAgIGxpbWl0OiAyMCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZXhwZWN0KHdyaXRlKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgZXhwZWN0KEpTT04ucGFyc2UoU3RyaW5nKHdyaXRlLm1vY2suY2FsbHNbMF1bMF0pKSkudG9FcXVhbCh7XG4gICAgICBkYXRhOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5ydW4sXG4gICAgICAgICAgY3JlYXRlZEF0OiAnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyxcbiAgICAgICAgICB1cGRhdGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonLFxuICAgICAgICAgIHN0YXJ0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDEuMDAwWicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY3Vyc29yOiBudWxsLFxuICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgICBwYWdlSW5mbzoge1xuICAgICAgICBjdXJyZW50TG9va2JhY2tEYXlzOiAyLFxuICAgICAgICBtYXhMb29rYmFja0RheXM6IDMwLFxuICAgICAgICBjdXJyZW50V2luZG93U3RhcnQ6ICcyMDI2LTA2LTI4VDAwOjAwOjAwLjAwMFonLFxuICAgICAgICBtYXhXaW5kb3dTdGFydDogJzIwMjYtMDYtMDFUMDA6MDA6MDAuMDAwWicsXG4gICAgICAgIHVwZ3JhZGVBdmFpbGFibGU6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnaW5jbHVkZXMgd29ybGQtc3BlY2lmaWMgZmllbGRzIHdoZW4gdGhlIHdvcmxkIGRlZmluZXMgZGVzY3JpYmVSdW4nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcnVuID0ge1xuICAgICAgcnVuSWQ6ICd3cnVuXzQxS1gyMDZCVEsxME0wQzMxQ01OMkFTMUpTJyxcbiAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgZGVwbG95bWVudElkOiAnZGVwLTEnLFxuICAgICAgd29ya2Zsb3dOYW1lOiAnd29ya2Zsb3cvLy4vc3JjL3dvcmtmbG93cy90ZXN0Ly9teVdvcmtmbG93JyxcbiAgICAgIHNwZWNWZXJzaW9uOiAyLFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgc3RhcnRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMS4wMDBaJyksXG4gICAgICBjb21wbGV0ZWRBdDogbnVsbCxcbiAgICAgIGVycm9yQ29kZTogbnVsbCxcbiAgICAgIHdvcmtmbG93Q29yZVZlcnNpb246IG51bGwsXG4gICAgICB3b3JrZmxvd0VuY3J5cHRpb25FbmFibGVkOiBmYWxzZSxcbiAgICB9IHNhdGlzZmllcyBBbmFseXRpY3NSdW47XG4gICAgY29uc3QgZGVzY3JpYmVSdW4gPSB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7IHJlZ2lvbjogJ3NmbzEnLCBzaGFyZDogJ2EnIH0pO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgZGVzY3JpYmVSdW4sXG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgcnVuczoge1xuICAgICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgICAgZGF0YTogW3J1bl0sXG4gICAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0UnVucyh3b3JsZCwgeyBqc29uOiB0cnVlIH0pO1xuXG4gICAgZXhwZWN0KGRlc2NyaWJlUnVuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHsgcnVuSWQ6IHJ1bi5ydW5JZCB9KVxuICAgICk7XG4gICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpO1xuICAgIGV4cGVjdChvdXRwdXQuZGF0YVswXS5yZWdpb24pLnRvQmUoJ3NmbzEnKTtcbiAgICBleHBlY3Qob3V0cHV0LmRhdGFbMF0uc2hhcmQpLnRvQmUoJ2EnKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZXNlcnZlcyBudWxsIGZpZWxkIHZhbHVlcyBmcm9tIGRlc2NyaWJlUnVuIGluIEpTT04gb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIG51bGwgbWVhbnMgXCJhcHBsaWNhYmxlIGJ1dCB1bmRldGVybWluYWJsZVwiIOKAlCBkaXN0aW5ndWlzaGFibGUgZnJvbVxuICAgIC8vIHRoZSBob29rIGJlaW5nIGFic2VudCAoa2V5IG1pc3NpbmcgZW50aXJlbHkpLlxuICAgIGNvbnN0IHJ1biA9IHtcbiAgICAgIHJ1bklkOiAnd3J1bl9tYWxmb3JtZWQnLFxuICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgICB3b3JrZmxvd05hbWU6ICd3b3JrZmxvdy8vLi9zcmMvd29ya2Zsb3dzL3Rlc3QvL215V29ya2Zsb3cnLFxuICAgICAgc3BlY1ZlcnNpb246IDIsXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBudWxsLFxuICAgICAgZXJyb3JDb2RlOiBudWxsLFxuICAgICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIH0gc2F0aXNmaWVzIEFuYWx5dGljc1J1bjtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGRlc2NyaWJlUnVuOiB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7IHJlZ2lvbjogbnVsbCB9KSxcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICBydW5zOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbcnVuXSxcbiAgICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIGF3YWl0IGxpc3RSdW5zKHdvcmxkLCB7IGpzb246IHRydWUgfSk7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBKU09OLnBhcnNlKFN0cmluZyh3cml0ZS5tb2NrLmNhbGxzWzBdWzBdKSk7XG4gICAgZXhwZWN0KCdyZWdpb24nIGluIG91dHB1dC5kYXRhWzBdKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChvdXRwdXQuZGF0YVswXS5yZWdpb24pLnRvQmVOdWxsKCk7XG4gIH0pO1xuXG4gIGl0KCduZXZlciBsZXRzIGRlc2NyaWJlUnVuIG92ZXJ3cml0ZSBjYW5vbmljYWwgcnVuIGZpZWxkcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBydW4gPSB7XG4gICAgICBydW5JZDogJ3dydW5fNDFLWDIwNkJUSzEwTTBDMzFDTU4yQVMxSlMnLFxuICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgICB3b3JrZmxvd05hbWU6ICd3b3JrZmxvdy8vLi9zcmMvd29ya2Zsb3dzL3Rlc3QvL215V29ya2Zsb3cnLFxuICAgICAgc3BlY1ZlcnNpb246IDIsXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBudWxsLFxuICAgICAgZXJyb3JDb2RlOiBudWxsLFxuICAgICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIH0gc2F0aXNmaWVzIEFuYWx5dGljc1J1bjtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIC8vIEhvc3RpbGUvYnVnZ3kgd29ybGQ6IHRyaWVzIHRvIGNsb2JiZXIgY2Fub25pY2FsIGZpZWxkcy5cbiAgICAgIGRlc2NyaWJlUnVuOiB2aVxuICAgICAgICAuZm4oKVxuICAgICAgICAubW9ja1JldHVyblZhbHVlKHsgc3RhdHVzOiAnaGFja2VkJywgcnVuSWQ6ICdub3BlJywgcmVnaW9uOiAnc2ZvMScgfSksXG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgcnVuczoge1xuICAgICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgICAgZGF0YTogW3J1bl0sXG4gICAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0UnVucyh3b3JsZCwgeyBqc29uOiB0cnVlIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpO1xuICAgIGV4cGVjdChvdXRwdXQuZGF0YVswXS5zdGF0dXMpLnRvQmUoJ3J1bm5pbmcnKTtcbiAgICBleHBlY3Qob3V0cHV0LmRhdGFbMF0ucnVuSWQpLnRvQmUocnVuLnJ1bklkKTtcbiAgICBleHBlY3Qob3V0cHV0LmRhdGFbMF0ucmVnaW9uKS50b0JlKCdzZm8xJyk7XG4gIH0pO1xuXG4gIGl0KCd0cmVhdHMgYSB0aHJvd2luZyBkZXNjcmliZVJ1biBhcyBjb250cmlidXRpbmcgbm8gZmllbGRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJ1biA9IHtcbiAgICAgIHJ1bklkOiAnd3J1bl80MUtYMjA2QlRLMTBNMEMzMUNNTjJBUzFKUycsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgIGRlcGxveW1lbnRJZDogJ2RlcC0xJyxcbiAgICAgIHdvcmtmbG93TmFtZTogJ3dvcmtmbG93Ly8uL3NyYy93b3JrZmxvd3MvdGVzdC8vbXlXb3JrZmxvdycsXG4gICAgICBzcGVjVmVyc2lvbjogMixcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHN0YXJ0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDEuMDAwWicpLFxuICAgICAgY29tcGxldGVkQXQ6IG51bGwsXG4gICAgICBlcnJvckNvZGU6IG51bGwsXG4gICAgICB3b3JrZmxvd0NvcmVWZXJzaW9uOiBudWxsLFxuICAgICAgd29ya2Zsb3dFbmNyeXB0aW9uRW5hYmxlZDogZmFsc2UsXG4gICAgfSBzYXRpc2ZpZXMgQW5hbHl0aWNzUnVuO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgZGVzY3JpYmVSdW46IHZpLmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdidWdneSB3b3JsZCcpO1xuICAgICAgfSksXG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgcnVuczoge1xuICAgICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgICAgZGF0YTogW3J1bl0sXG4gICAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICAvLyBNdXN0IG5vdCB0aHJvdyBkZXNwaXRlIHRoZSB3b3JsZCB2aW9sYXRpbmcgdGhlIG5vLXRocm93IGNvbnRyYWN0LlxuICAgIGF3YWl0IGxpc3RSdW5zKHdvcmxkLCB7IGpzb246IHRydWUgfSk7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBKU09OLnBhcnNlKFN0cmluZyh3cml0ZS5tb2NrLmNhbGxzWzBdWzBdKSk7XG4gICAgZXhwZWN0KG91dHB1dC5kYXRhWzBdLnN0YXR1cykudG9CZSgncnVubmluZycpO1xuICAgIGV4cGVjdCgncmVnaW9uJyBpbiBvdXRwdXQuZGF0YVswXSkudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzdXBwb3J0cyBhc3luYyBkZXNjcmliZVJ1biBpbXBsZW1lbnRhdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcnVuID0ge1xuICAgICAgcnVuSWQ6ICd3cnVuXzQxS1gyMDZCVEsxME0wQzMxQ01OMkFTMUpTJyxcbiAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgZGVwbG95bWVudElkOiAnZGVwLTEnLFxuICAgICAgd29ya2Zsb3dOYW1lOiAnd29ya2Zsb3cvLy4vc3JjL3dvcmtmbG93cy90ZXN0Ly9teVdvcmtmbG93JyxcbiAgICAgIHNwZWNWZXJzaW9uOiAyLFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgc3RhcnRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMS4wMDBaJyksXG4gICAgICBjb21wbGV0ZWRBdDogbnVsbCxcbiAgICAgIGVycm9yQ29kZTogbnVsbCxcbiAgICAgIHdvcmtmbG93Q29yZVZlcnNpb246IG51bGwsXG4gICAgICB3b3JrZmxvd0VuY3J5cHRpb25FbmFibGVkOiBmYWxzZSxcbiAgICB9IHNhdGlzZmllcyBBbmFseXRpY3NSdW47XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBkZXNjcmliZVJ1bjogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7IHJlZ2lvbjogJ3NmbzEnIH0pLFxuICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgIHJ1bnM6IHtcbiAgICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICAgIGRhdGE6IFtydW5dLFxuICAgICAgICAgICAgY3Vyc29yOiBudWxsLFxuICAgICAgICAgICAgaGFzTW9yZTogZmFsc2UsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBXb3JsZDtcbiAgICBjb25zdCB3cml0ZSA9IHZpXG4gICAgICAuc3B5T24ocHJvY2Vzcy5zdGRvdXQsICd3cml0ZScpXG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHRydWUpO1xuXG4gICAgYXdhaXQgbGlzdFJ1bnMod29ybGQsIHsganNvbjogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IG91dHB1dCA9IEpTT04ucGFyc2UoU3RyaW5nKHdyaXRlLm1vY2suY2FsbHNbMF1bMF0pKTtcbiAgICBleHBlY3Qob3V0cHV0LmRhdGFbMF0ucmVnaW9uKS50b0JlKCdzZm8xJyk7XG4gIH0pO1xuXG4gIGl0KCd0cmVhdHMgYSByZWplY3RpbmcgYXN5bmMgZGVzY3JpYmVSdW4gYXMgY29udHJpYnV0aW5nIG5vIGZpZWxkcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBydW4gPSB7XG4gICAgICBydW5JZDogJ3dydW5fNDFLWDIwNkJUSzEwTTBDMzFDTU4yQVMxSlMnLFxuICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgICB3b3JrZmxvd05hbWU6ICd3b3JrZmxvdy8vLi9zcmMvd29ya2Zsb3dzL3Rlc3QvL215V29ya2Zsb3cnLFxuICAgICAgc3BlY1ZlcnNpb246IDIsXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBudWxsLFxuICAgICAgZXJyb3JDb2RlOiBudWxsLFxuICAgICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIH0gc2F0aXNmaWVzIEFuYWx5dGljc1J1bjtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGRlc2NyaWJlUnVuOiB2aS5mbigpLm1vY2tSZWplY3RlZFZhbHVlKG5ldyBFcnJvcignYXN5bmMgYnVnZ3kgd29ybGQnKSksXG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgcnVuczoge1xuICAgICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgICAgZGF0YTogW3J1bl0sXG4gICAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0UnVucyh3b3JsZCwgeyBqc29uOiB0cnVlIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpO1xuICAgIGV4cGVjdChvdXRwdXQuZGF0YVswXS5zdGF0dXMpLnRvQmUoJ3J1bm5pbmcnKTtcbiAgICBleHBlY3QoJ3JlZ2lvbicgaW4gb3V0cHV0LmRhdGFbMF0pLnRvQmUoZmFsc2UpO1xuICB9KTtcblxuICBpdCgnYWRkcyBubyB3b3JsZCBmaWVsZHMgd2hlbiB0aGUgd29ybGQgbGFja3MgZGVzY3JpYmVSdW4nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcnVuID0ge1xuICAgICAgcnVuSWQ6ICd3cnVuXzAxS1gyTTVOM1JCTkMxMlJZV1lZSDRXV1FKJyxcbiAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgZGVwbG95bWVudElkOiAnZGVwLTEnLFxuICAgICAgd29ya2Zsb3dOYW1lOiAnd29ya2Zsb3cvLy4vc3JjL3dvcmtmbG93cy90ZXN0Ly9teVdvcmtmbG93JyxcbiAgICAgIHNwZWNWZXJzaW9uOiAyLFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgc3RhcnRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMS4wMDBaJyksXG4gICAgICBjb21wbGV0ZWRBdDogbnVsbCxcbiAgICAgIGVycm9yQ29kZTogbnVsbCxcbiAgICAgIHdvcmtmbG93Q29yZVZlcnNpb246IG51bGwsXG4gICAgICB3b3JrZmxvd0VuY3J5cHRpb25FbmFibGVkOiBmYWxzZSxcbiAgICB9IHNhdGlzZmllcyBBbmFseXRpY3NSdW47XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgcnVuczoge1xuICAgICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgICAgZGF0YTogW3J1bl0sXG4gICAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0UnVucyh3b3JsZCwgeyBqc29uOiB0cnVlIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpO1xuICAgIGV4cGVjdCgncmVnaW9uJyBpbiBvdXRwdXQuZGF0YVswXSkudG9CZShmYWxzZSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdsaXN0U3RlcHMnLCAoKSA9PiB7XG4gIGl0KCdwYXNzZXMgY3Vyc29ycyBhbmQgcHJlc2VydmVzIHRoZSBKU09OIGFycmF5IG91dHB1dCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzdGVwID0ge1xuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBzdGVwSWQ6ICdzdGVwLTEnLFxuICAgICAgc3RlcE5hbWU6ICdkb1dvcmsnLFxuICAgICAgc3RhdHVzOiAnY29tcGxldGVkJyxcbiAgICAgIGF0dGVtcHQ6IDEsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDIuMDAwWicpLFxuICAgICAgc3RhcnRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMS4wMDBaJyksXG4gICAgICBjb21wbGV0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDIuMDAwWicpLFxuICAgICAgcmV0cnlBZnRlcjogbnVsbCxcbiAgICAgIGVycm9yQ29kZTogbnVsbCxcbiAgICAgIHdvcmtmbG93Q29yZVZlcnNpb246IG51bGwsXG4gICAgICB3b3JrZmxvd0VuY3J5cHRpb25FbmFibGVkOiBmYWxzZSxcbiAgICB9IHNhdGlzZmllcyBBbmFseXRpY3NTdGVwO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgIHN0ZXBzOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbc3RlcF0sXG4gICAgICAgICAgICBjdXJzb3I6ICduZXh0LXN0ZXAtY3Vyc29yJyxcbiAgICAgICAgICAgIGhhc01vcmU6IHRydWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBXb3JsZDtcbiAgICBjb25zdCB3cml0ZSA9IHZpXG4gICAgICAuc3B5T24ocHJvY2Vzcy5zdGRvdXQsICd3cml0ZScpXG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHRydWUpO1xuXG4gICAgYXdhaXQgbGlzdFN0ZXBzKHdvcmxkLCB7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBjdXJzb3I6ICdzdGVwLWN1cnNvcicsXG4gICAgICBsaW1pdDogMSxcbiAgICB9KTtcblxuICAgIGV4cGVjdCh3b3JsZC5hbmFseXRpY3M/LnN0ZXBzLmxpc3QpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgIHJ1bklkOiAncnVuLTEnLFxuICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICBzb3J0T3JkZXI6ICdkZXNjJyxcbiAgICAgICAgY3Vyc29yOiAnc3RlcC1jdXJzb3InLFxuICAgICAgICBsaW1pdDogMSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZXhwZWN0KEpTT04ucGFyc2UoU3RyaW5nKHdyaXRlLm1vY2suY2FsbHNbMF1bMF0pKSkudG9FcXVhbChbXG4gICAgICB7XG4gICAgICAgIC4uLnN0ZXAsXG4gICAgICAgIGNyZWF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicsXG4gICAgICAgIHVwZGF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDIuMDAwWicsXG4gICAgICAgIHN0YXJ0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDEuMDAwWicsXG4gICAgICAgIGNvbXBsZXRlZEF0OiAnMjAyNi0wNi0zMFQwMDowMDowMi4wMDBaJyxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xuXG4gIGl0KCdmYWxscyBiYWNrIHRvIHN0b3JhZ2Ugd2hlbiB0aGUgZmlyc3QgYW5hbHl0aWNzIHBhZ2UgaXMgZW1wdHknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3RlcCA9IHtcbiAgICAgIHJ1bklkOiAncnVuLTEnLFxuICAgICAgc3RlcElkOiAnc3RlcC0xJyxcbiAgICAgIHN0ZXBOYW1lOiAnc3RlcC8vLi9zcmMvd29ya2Zsb3dzL3Rlc3QvL2RvV29yaycsXG4gICAgICBzdGF0dXM6ICdjb21wbGV0ZWQnLFxuICAgICAgYXR0ZW1wdDogMSxcbiAgICAgIGlucHV0OiB1bmRlZmluZWQsXG4gICAgICBvdXRwdXQ6IHVuZGVmaW5lZCxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMi4wMDBaJyksXG4gICAgICBzdGFydGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonKSxcbiAgICAgIGNvbXBsZXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMi4wMDBaJyksXG4gICAgfSBzYXRpc2ZpZXMgU3RlcDtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICBzdGVwczoge1xuICAgICAgICAgIGxpc3Q6IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICAgICAgZGF0YTogW10sXG4gICAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczoge1xuICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICBkYXRhOiBbc3RlcF0sXG4gICAgICAgICAgY3Vyc29yOiBudWxsLFxuICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0U3RlcHMod29ybGQsIHsganNvbjogdHJ1ZSwgcnVuSWQ6ICdydW4tMScgfSk7XG5cbiAgICBleHBlY3Qod29ybGQuYW5hbHl0aWNzPy5zdGVwcy5saXN0KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgZXhwZWN0KHdvcmxkLnN0ZXBzLmxpc3QpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgIHJ1bklkOiAncnVuLTEnLFxuICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICBzb3J0T3JkZXI6ICdkZXNjJyxcbiAgICAgICAgY3Vyc29yOiB1bmRlZmluZWQsXG4gICAgICAgIGxpbWl0OiAyMCxcbiAgICAgIH0sXG4gICAgICByZXNvbHZlRGF0YTogJ25vbmUnLFxuICAgIH0pO1xuICAgIGV4cGVjdChKU09OLnBhcnNlKFN0cmluZyh3cml0ZS5tb2NrLmNhbGxzWzBdWzBdKSkpLnRvRXF1YWwoW1xuICAgICAge1xuICAgICAgICAuLi5zdGVwLFxuICAgICAgICBjcmVhdGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonLFxuICAgICAgICB1cGRhdGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAyLjAwMFonLFxuICAgICAgICBzdGFydGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAxLjAwMFonLFxuICAgICAgICBjb21wbGV0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDIuMDAwWicsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnbGlzdEV2ZW50cycsICgpID0+IHtcbiAgaXQoJ3Bhc3NlcyBjdXJzb3JzIGFuZCBwcmVzZXJ2ZXMgdGhlIEpTT04gYXJyYXkgb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBldmVudElkOiAnZXZlbnQtMScsXG4gICAgICBldmVudFR5cGU6ICdzdGVwX2NvbXBsZXRlZCcsXG4gICAgICBjb3JyZWxhdGlvbklkOiAnc3RlcC0xJyxcbiAgICAgIGVudGl0eUlkOiAnc3RlcC0xJyxcbiAgICAgIHN0ZXBOYW1lOiAnZG9Xb3JrJyxcbiAgICAgIHdvcmtmbG93TmFtZTogJ3dvcmtmbG93Ly8uL3NyYy93b3JrZmxvd3MvdGVzdC8vbXlXb3JrZmxvdycsXG4gICAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgICBzcGVjVmVyc2lvbjogMixcbiAgICAgIHJ1bkNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDA6MDAuMDAwWicpLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMi4wMDBaJyksXG4gICAgICByZWdpb246IG51bGwsXG4gICAgICB2ZXJjZWxJZDogbnVsbCxcbiAgICAgIHJlcXVlc3RJZDogbnVsbCxcbiAgICAgIHJlc3VtZUF0OiBudWxsLFxuICAgICAgcmV0cnlBZnRlcjogbnVsbCxcbiAgICAgIGVycm9yQ29kZTogbnVsbCxcbiAgICAgIHdvcmtmbG93Q29yZVZlcnNpb246IG51bGwsXG4gICAgICBpc1dlYmhvb2s6IGZhbHNlLFxuICAgICAgaXNTeXN0ZW06IGZhbHNlLFxuICAgICAgd29ya2Zsb3dFbmNyeXB0aW9uRW5hYmxlZDogZmFsc2UsXG4gICAgfSBzYXRpc2ZpZXMgQW5hbHl0aWNzRXZlbnQ7XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbZXZlbnRdLFxuICAgICAgICAgICAgY3Vyc29yOiAnbmV4dC1ldmVudC1jdXJzb3InLFxuICAgICAgICAgICAgaGFzTW9yZTogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0RXZlbnRzKHdvcmxkLCB7XG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBjdXJzb3I6ICdldmVudC1jdXJzb3InLFxuICAgICAgbGltaXQ6IDEsXG4gICAgfSk7XG5cbiAgICBleHBlY3Qod29ybGQuYW5hbHl0aWNzPy5ldmVudHMubGlzdCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBjb3JyZWxhdGlvbklkOiB1bmRlZmluZWQsXG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIHNvcnRPcmRlcjogJ2Rlc2MnLFxuICAgICAgICBjdXJzb3I6ICdldmVudC1jdXJzb3InLFxuICAgICAgICBsaW1pdDogMSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZXhwZWN0KEpTT04ucGFyc2UoU3RyaW5nKHdyaXRlLm1vY2suY2FsbHNbMF1bMF0pKSkudG9FcXVhbChbXG4gICAgICB7XG4gICAgICAgIC4uLmV2ZW50LFxuICAgICAgICBydW5DcmVhdGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonLFxuICAgICAgICBjcmVhdGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAyLjAwMFonLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG5cbiAgaXQoJ2ZhbGxzIGJhY2sgdG8gc3RvcmFnZSB3aGVuIHRoZSBmaXJzdCBhbmFseXRpY3MgcGFnZSBpcyBlbXB0eScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIHJ1bklkOiAncnVuLTEnLFxuICAgICAgZXZlbnRJZDogJ2V2ZW50LTEnLFxuICAgICAgZXZlbnRUeXBlOiAnc3RlcF9jb21wbGV0ZWQnLFxuICAgICAgY29ycmVsYXRpb25JZDogJ3N0ZXAtMScsXG4gICAgICBldmVudERhdGE6IHtcbiAgICAgICAgc3RlcE5hbWU6ICdkb1dvcmsnLFxuICAgICAgICByZXN1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCcyMDI2LTA2LTMwVDAwOjAwOjAyLjAwMFonKSxcbiAgICB9IGFzIHVua25vd24gYXMgRXZlbnQ7XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGV2ZW50czoge1xuICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICBkYXRhOiBbZXZlbnRdLFxuICAgICAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBXb3JsZDtcbiAgICBjb25zdCB3cml0ZSA9IHZpXG4gICAgICAuc3B5T24ocHJvY2Vzcy5zdGRvdXQsICd3cml0ZScpXG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHRydWUpO1xuXG4gICAgYXdhaXQgbGlzdEV2ZW50cyh3b3JsZCwgeyBqc29uOiB0cnVlLCBydW5JZDogJ3J1bi0xJyB9KTtcblxuICAgIGV4cGVjdCh3b3JsZC5hbmFseXRpY3M/LmV2ZW50cy5saXN0KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgZXhwZWN0KHdvcmxkLmV2ZW50cy5saXN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICBydW5JZDogJ3J1bi0xJyxcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgc29ydE9yZGVyOiAnZGVzYycsXG4gICAgICAgIGN1cnNvcjogdW5kZWZpbmVkLFxuICAgICAgICBsaW1pdDogMjAsXG4gICAgICB9LFxuICAgICAgcmVzb2x2ZURhdGE6ICdub25lJyxcbiAgICB9KTtcbiAgICBleHBlY3QoSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpKS50b0VxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgIGNyZWF0ZWRBdDogJzIwMjYtMDYtMzBUMDA6MDA6MDIuMDAwWicsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnbGlzdFNsZWVwcycsICgpID0+IHtcbiAgY29uc3Qgd2FpdCA9IHtcbiAgICBydW5JZDogJ3J1bi0xJyxcbiAgICB3YWl0SWQ6ICd3YWl0LTEnLFxuICAgIHN0YXR1czogJ3dhaXRpbmcnLFxuICAgIHJlc3VtZUF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMTowMC4wMDBaJyksXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgY29tcGxldGVkQXQ6IG51bGwsXG4gICAgd29ya2Zsb3dDb3JlVmVyc2lvbjogbnVsbCxcbiAgICB3b3JrZmxvd0VuY3J5cHRpb25FbmFibGVkOiBmYWxzZSxcbiAgfSBzYXRpc2ZpZXMgQW5hbHl0aWNzV2FpdDtcbiAgY29uc3QgcGFnZUluZm8gPSB7XG4gICAgY3VycmVudExvb2tiYWNrRGF5czogMixcbiAgICBtYXhMb29rYmFja0RheXM6IDMwLFxuICAgIGN1cnJlbnRXaW5kb3dTdGFydDogbmV3IERhdGUoJzIwMjYtMDYtMjhUMDA6MDA6MDAuMDAwWicpLFxuICAgIG1heFdpbmRvd1N0YXJ0OiBuZXcgRGF0ZSgnMjAyNi0wNi0wMVQwMDowMDowMC4wMDBaJyksXG4gICAgdXBncmFkZUF2YWlsYWJsZTogdHJ1ZSxcbiAgfTtcblxuICBpdCgncGFzc2VzIGN1cnNvcnMgYW5kIHByZXNlcnZlcyB0aGUgSlNPTiBhcnJheSBvdXRwdXQgdGhyb3VnaCBhbmFseXRpY3MnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgd29ybGQgPSB7XG4gICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgd2FpdHM6IHtcbiAgICAgICAgICBsaXN0OiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICAgIGRhdGE6IFt3YWl0XSxcbiAgICAgICAgICAgIGN1cnNvcjogJ25leHQtd2FpdC1jdXJzb3InLFxuICAgICAgICAgICAgaGFzTW9yZTogdHJ1ZSxcbiAgICAgICAgICAgIHBhZ2VJbmZvLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3Qgd3JpdGUgPSB2aVxuICAgICAgLnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcblxuICAgIGF3YWl0IGxpc3RTbGVlcHMod29ybGQsIHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBydW5JZDogJ3J1bi0xJyxcbiAgICAgIGN1cnNvcjogJ3dhaXQtY3Vyc29yJyxcbiAgICAgIGxpbWl0OiAxLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHdvcmxkLmFuYWx5dGljcz8ud2FpdHMubGlzdCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgcnVuSWQ6ICdydW4tMScsXG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIHNvcnRPcmRlcjogJ2Rlc2MnLFxuICAgICAgICBjdXJzb3I6ICd3YWl0LWN1cnNvcicsXG4gICAgICAgIGxpbWl0OiAxLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBleHBlY3QoSlNPTi5wYXJzZShTdHJpbmcod3JpdGUubW9jay5jYWxsc1swXVswXSkpKS50b0VxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgLi4ud2FpdCxcbiAgICAgICAgcmVzdW1lQXQ6ICcyMDI2LTA2LTMwVDAwOjAxOjAwLjAwMFonLFxuICAgICAgICBjcmVhdGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonLFxuICAgICAgICB1cGRhdGVkQXQ6ICcyMDI2LTA2LTMwVDAwOjAwOjAwLjAwMFonLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG5cbiAgaXQoJ3N1cmZhY2VzIHRoZSBvYnNlcnZhYmlsaXR5IHVwZ3JhZGUgaGludCBpbiB0YWJsZSBtb2RlJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgIHdhaXRzOiB7XG4gICAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgICBkYXRhOiBbd2FpdF0sXG4gICAgICAgICAgICBjdXJzb3I6IG51bGwsXG4gICAgICAgICAgICBoYXNNb3JlOiBmYWxzZSxcbiAgICAgICAgICAgIHBhZ2VJbmZvLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgV29ybGQ7XG4gICAgY29uc3QgbG9nID0gdmkuc3B5T24oY29uc29sZSwgJ2xvZycpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB1bmRlZmluZWQpO1xuXG4gICAgYXdhaXQgbGlzdFNsZWVwcyh3b3JsZCwgeyBydW5JZDogJ3J1bi0xJyB9KTtcblxuICAgIGV4cGVjdChsb2cubW9jay5jYWxscy5mbGF0KCkuam9pbignXFxuJykpLnRvQ29udGFpbihcbiAgICAgICdVcGdyYWRlIE9ic2VydmFiaWxpdHkgUGx1cydcbiAgICApO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnbGlzdFNsZWVwcyBhbmFseXRpY3MgZGVncmFkYXRpb24nLCAoKSA9PiB7XG4gIGNvbnN0IGV2ZW50QmFzZSA9IHtcbiAgICBydW5JZDogJ3J1bi0xJyxcbiAgICB3b3JrZmxvd05hbWU6ICd3ZicsXG4gICAgZGVwbG95bWVudElkOiAnZHBsXzEnLFxuICB9O1xuXG4gIC8vIFRoZSBvdGhlciB0aHJlZSBsaXN0IHBhdGhzIGZhbGwgYmFjayB0byBzdG9yYWdlOyB0aGlzIG9uZSB1c2VkIHRvIGVuZCB0aGVcbiAgLy8gY29tbWFuZCwgbGVhdmluZyBpdHMgc3RvcmFnZSBicmFuY2ggdW5yZWFjaGFibGUgd2hlcmV2ZXIgYW5hbHl0aWNzIGV4aXN0cy5cbiAgaXQoJ2ZhbGxzIGJhY2sgdG8gdGhlIGV2ZW50IGxvZyB3aGVuIHRoZSBhbmFseXRpY3MgcmVhZCBmYWlscycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGFuYWx5dGljczoge1xuICAgICAgICB3YWl0czoge1xuICAgICAgICAgIGxpc3Q6IHZpXG4gICAgICAgICAgICAuZm4oKVxuICAgICAgICAgICAgLm1vY2tSZWplY3RlZFZhbHVlKFxuICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG5ldyBFcnJvcigndXBzdHJlYW0gdW5hdmFpbGFibGUnKSwgeyBzdGF0dXM6IDUwMyB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBldmVudHM6IHtcbiAgICAgICAgbGlzdDogdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi5ldmVudEJhc2UsXG4gICAgICAgICAgICAgIGV2ZW50SWQ6ICdldm50LTEnLFxuICAgICAgICAgICAgICBldmVudFR5cGU6ICd3YWl0X2NyZWF0ZWQnLFxuICAgICAgICAgICAgICBjb3JyZWxhdGlvbklkOiAnd2FpdC0xJyxcbiAgICAgICAgICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgICAgICAgICAgIGV2ZW50RGF0YTogeyByZXN1bWVBdDogbmV3IERhdGUoJzIwMjYtMDYtMzBUMDA6MDE6MDAuMDAwWicpIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgY3Vyc29yOiBudWxsLFxuICAgICAgICAgIGhhc01vcmU6IGZhbHNlLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0U2xlZXBzKHdvcmxkLCB7IGpzb246IHRydWUsIHJ1bklkOiAncnVuLTEnIH0pO1xuXG4gICAgZXhwZWN0KHdvcmxkLmFuYWx5dGljcz8ud2FpdHMubGlzdCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGV4cGVjdCh3b3JsZC5ldmVudHMubGlzdCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGV4cGVjdCh3cml0ZS5tb2NrLmNhbGxzLmpvaW4oJycpKS50b0NvbnRhaW4oJ3dhaXQtMScpO1xuICAgIHdyaXRlLm1vY2tSZXN0b3JlKCk7XG4gIH0pO1xuXG4gIC8vIFJldHJ5aW5nIGFuIGFyZ3VtZW50IHRoZSBXb3JsZCBhbHJlYWR5IHJlamVjdGVkIHdvdWxkIG9ubHkgcmVwbGFjZSBhXG4gIC8vIHByZWNpc2UgbWVzc2FnZSB3aXRoIGEgc2xvd2VyIGZhaWx1cmUuXG4gIGl0KCdkb2VzIG5vdCBmYWxsIGJhY2sgd2hlbiB0aGUgYXJndW1lbnQgd2FzIHJlamVjdGVkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgIHdhaXRzOiB7XG4gICAgICAgICAgbGlzdDogdmlcbiAgICAgICAgICAgIC5mbigpXG4gICAgICAgICAgICAubW9ja1JlamVjdGVkVmFsdWUoXG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgJ2FuYWx5dGljcy53YWl0cy5saXN0OiBydW5JZCBtdXN0IGJlIGEgd29ya2Zsb3cgcnVuIGlkJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgeyBjb2RlOiAnSU5WQUxJRF9BUkdVTUVOVCcsIGZpZWxkOiAncnVuSWQnIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBldmVudHM6IHsgbGlzdDogdmkuZm4oKSB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBXb3JsZDtcblxuICAgIGF3YWl0IGxpc3RTbGVlcHMod29ybGQsIHsgcnVuSWQ6ICdub3BlJyB9KTtcblxuICAgIGV4cGVjdCh3b3JsZC5hbmFseXRpY3M/LndhaXRzLmxpc3QpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBleHBlY3Qod29ybGQuZXZlbnRzLmxpc3QpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgZXhwZWN0KHByb2Nlc3MuZXhpdENvZGUpLnRvQmUoMSk7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDA7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdsaXN0QXR0cmlidXRlcycsICgpID0+IHtcbiAgY29uc3Qga2V5ID0ge1xuICAgIGtleTogJ2FwcGxpY2F0aW9uJyxcbiAgICBydW5Db3VudDogMTIsXG4gICAgZmlyc3RTZWVuQXQ6IG5ldyBEYXRlKCcyMDI2LTA4LTI2VDA5OjE0OjAyLjAwMFonKSxcbiAgICBsYXN0U2VlbkF0OiBuZXcgRGF0ZSgnMjAyNi0wOS0wMlQyMTo0MDoxMS4wMDBaJyksXG4gIH0gc2F0aXNmaWVzIEFuYWx5dGljc0F0dHJpYnV0ZUtleTtcblxuICBjb25zdCB3b3JsZFdpdGggPSAobGlzdDogUmV0dXJuVHlwZTx0eXBlb2YgdmkuZm4+KSA9PlxuICAgICh7IGFuYWx5dGljczogeyBhdHRyaWJ1dGVzOiB7IGxpc3QgfSB9IH0pIGFzIHVua25vd24gYXMgV29ybGQ7XG5cbiAgaXQoJ3Bhc3NlcyB0aGUgd2luZG93LCBuYW1lIGZpbHRlciBhbmQgY3Vyc29yLCBhbmQgcHJlc2VydmVzIEpTT04gb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGxpc3QgPSB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgIGRhdGE6IFtrZXldLFxuICAgICAgY3Vyc29yOiAnbmV4dCcsXG4gICAgICBoYXNNb3JlOiB0cnVlLFxuICAgIH0pO1xuICAgIGNvbnN0IHdyaXRlID0gdmlcbiAgICAgIC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJylcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG5cbiAgICBhd2FpdCBsaXN0QXR0cmlidXRlcyh3b3JsZFdpdGgobGlzdCksIHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICB3b3JrZmxvd05hbWU6ICdvcmRlcldvcmtmbG93JyxcbiAgICAgIHNpbmNlOiAnN2QnLFxuICAgICAgY3Vyc29yOiAnZmlyc3QnLFxuICAgICAgbGltaXQ6IDI1LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zID0gbGlzdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgIGV4cGVjdChwYXJhbXMud29ya2Zsb3dOYW1lKS50b0JlKCdvcmRlcldvcmtmbG93Jyk7XG4gICAgZXhwZWN0KHBhcmFtcy5zdGFydFRpbWUpLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KHBhcmFtcy5lbmRUaW1lKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChwYXJhbXMucGFnaW5hdGlvbikudG9NYXRjaE9iamVjdCh7IGN1cnNvcjogJ2ZpcnN0JywgbGltaXQ6IDI1IH0pO1xuICAgIGV4cGVjdCh3cml0ZS5tb2NrLmNhbGxzLmpvaW4oJycpKS50b0NvbnRhaW4oJ2FwcGxpY2F0aW9uJyk7XG4gICAgd3JpdGUubW9ja1Jlc3RvcmUoKTtcbiAgfSk7XG5cbiAgLy8gVGhlIGJhY2tlbmQgb3JkZXJzIGtleXMgYWxwaGFiZXRpY2FsbHk7IGZvcndhcmRpbmcgYSBkZWZhdWx0ZWQgYGRlc2NgXG4gIC8vIHdvdWxkIG92ZXJyaWRlIHRoYXQsIHNvIHRoZSBmbGFnIGlzIG9ubHkgc2VudCB3aGVuIGl0IHdhcyBwYXNzZWQuXG4gIGl0KCdvbWl0cyBzb3J0T3JkZXIgdW5sZXNzIC0tc29ydCB3YXMgZ2l2ZW4nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbGlzdCA9IHZpXG4gICAgICAuZm4oKVxuICAgICAgLm1vY2tSZXNvbHZlZFZhbHVlKHsgZGF0YTogW10sIGN1cnNvcjogbnVsbCwgaGFzTW9yZTogZmFsc2UgfSk7XG5cbiAgICBhd2FpdCBsaXN0QXR0cmlidXRlcyh3b3JsZFdpdGgobGlzdCksIHsganNvbjogdHJ1ZSB9KTtcbiAgICBleHBlY3QobGlzdC5tb2NrLmNhbGxzWzBdWzBdLnBhZ2luYXRpb24uc29ydE9yZGVyKS50b0JlVW5kZWZpbmVkKCk7XG5cbiAgICBhd2FpdCBsaXN0QXR0cmlidXRlcyh3b3JsZFdpdGgobGlzdCksIHsganNvbjogdHJ1ZSwgc29ydDogJ2FzYycgfSk7XG4gICAgZXhwZWN0KGxpc3QubW9jay5jYWxsc1sxXVswXS5wYWdpbmF0aW9uLnNvcnRPcmRlcikudG9CZSgnYXNjJyk7XG4gIH0pO1xuXG4gIC8vIEFuYWx5dGljcy1vbmx5OiB0aGVyZSBpcyBubyBjcm9zcy1ydW4gYXR0cmlidXRlIGluZGV4IGluIHN0b3JhZ2UuXG4gIGl0KCdyZXBvcnRzIHRoYXQgdGhlIGJhY2tlbmQgY2Fubm90IGxpc3QgYXR0cmlidXRlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB3b3JsZCA9IHsgYW5hbHl0aWNzOiB1bmRlZmluZWQgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuICAgIGF3YWl0IGxpc3RBdHRyaWJ1dGVzKHdvcmxkLCB7IGpzb246IHRydWUgfSk7XG4gICAgZXhwZWN0KHByb2Nlc3MuZXhpdENvZGUpLnRvQmUoMSk7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDA7XG4gIH0pO1xuXG4gIC8vIEV2ZXJ5IG9uZSBvZiB0aGVzZSBwYXJzZWQsIHdhcyBkcm9wcGVkLCBhbmQgbGVmdCB0aGUgZnVsbCBrZXkgdGFibGVcbiAgLy8gbG9va2luZyBsaWtlIGEgZmlsdGVyZWQgYW5zd2VyLiBUaGUgc2libGluZyBsaXN0aW5ncyB3YXJuIG9uIHRoZVxuICAvLyBzZWxlY3RvcnMgdGhleSBjYW5ub3QgYXBwbHk7IHRoaXMgb25lIHdhcm5lZCBvbiBub3RoaW5nLlxuICBkZXNjcmliZS5lYWNoKFtcbiAgICBbJ3N0YXR1cycsIHsgc3RhdHVzOiAnZmFpbGVkJyBhcyBjb25zdCB9LCAnRmlsdGVyaW5nIGJ5IHN0YXR1cyddLFxuICAgIFsncnVuSWQnLCB7IHJ1bklkOiAnd3J1bl94JyB9LCAnRmlsdGVyaW5nIGJ5IHJ1bi1pZCddLFxuICAgIFsnc3RlcElkJywgeyBzdGVwSWQ6ICdzdGVwX3gnIH0sICdGaWx0ZXJpbmcgYnkgc3RlcC1pZCddLFxuICAgIFsnaG9va0lkJywgeyBob29rSWQ6ICdob29rX3gnIH0sICdGaWx0ZXJpbmcgYnkgaG9vay1pZCddLFxuICAgIFsnd2l0aERhdGEnLCB7IHdpdGhEYXRhOiB0cnVlIH0sICdgd2l0aERhdGFgIGZsYWcgaXMgaWdub3JlZCddLFxuICBdKSgnd2l0aCAtLSVzJywgKF9mbGFnLCBvcHRzLCBleHBlY3RlZCkgPT4ge1xuICAgIGl0KCd3YXJucyB0aGF0IHRoZSBmaWx0ZXIgZG9lcyBub3QgYXBwbHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB3YXJuID0gdmkuc3B5T24obG9nZ2VyLCAnd2FybicpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgY29uc3QgbGlzdCA9IHZpXG4gICAgICAgIC5mbigpXG4gICAgICAgIC5tb2NrUmVzb2x2ZWRWYWx1ZSh7IGRhdGE6IFtrZXldLCBjdXJzb3I6IG51bGwsIGhhc01vcmU6IGZhbHNlIH0pO1xuXG4gICAgICBhd2FpdCBsaXN0QXR0cmlidXRlcyh3b3JsZFdpdGgobGlzdCksIHsganNvbjogdHJ1ZSwgLi4ub3B0cyB9KTtcblxuICAgICAgZXhwZWN0KHdhcm4ubW9jay5jYWxscy5mbGF0KCkuam9pbignICcpKS50b0NvbnRhaW4oZXhwZWN0ZWQpO1xuICAgICAgd2Fybi5tb2NrUmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIGxpc3RpbmcgdGFrZXMgYSB3b3JrZmxvdyBuYW1lIGFuZCBhIHdpbmRvdzsgbm90aGluZyBoZXJlIHJlYWNoZXNcbiAgICAvLyB0aGUgYmFja2VuZCwgc28gd2FybmluZyBpcyB0aGUgb25seSBzaWduYWwgdGhlIGNhbGxlciBnZXRzLlxuICAgIGl0KCdmb3J3YXJkcyBub25lIG9mIGl0IHRvIHRoZSBiYWNrZW5kJywgYXN5bmMgKCkgPT4ge1xuICAgICAgdmkuc3B5T24obG9nZ2VyLCAnd2FybicpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgY29uc3QgbGlzdCA9IHZpXG4gICAgICAgIC5mbigpXG4gICAgICAgIC5tb2NrUmVzb2x2ZWRWYWx1ZSh7IGRhdGE6IFtrZXldLCBjdXJzb3I6IG51bGwsIGhhc01vcmU6IGZhbHNlIH0pO1xuXG4gICAgICBhd2FpdCBsaXN0QXR0cmlidXRlcyh3b3JsZFdpdGgobGlzdCksIHsganNvbjogdHJ1ZSwgLi4ub3B0cyB9KTtcblxuICAgICAgY29uc3QgcGFyYW1zID0gbGlzdC5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KHBhcmFtcy5zdGF0dXMpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChwYXJhbXMucnVuSWQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChwYXJhbXMuc3RlcElkKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgICBleHBlY3QocGFyYW1zLmhvb2tJZCkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgdmkucmVzdG9yZUFsbE1vY2tzKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdsaXN0UnVucyBhdHRyaWJ1dGUgZmlsdGVyaW5nJywgKCkgPT4ge1xuICBjb25zdCBydW4gPSB7XG4gICAgcnVuSWQ6ICdydW4tMScsXG4gICAgc3RhdHVzOiAnY29tcGxldGVkJyxcbiAgICBkZXBsb3ltZW50SWQ6ICdkZXAtMScsXG4gICAgd29ya2Zsb3dOYW1lOiAnd29ya2Zsb3cvLy4vc3JjL3dvcmtmbG93cy90ZXN0Ly9teVdvcmtmbG93JyxcbiAgICBhdHRyaWJ1dGVzOiB7IHRlbmFudDogJ2FjbWUnIH0sXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMC4wMDBaJyksXG4gICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNi0zMFQwMDowMDowMS4wMDBaJyksXG4gICAgc3RhcnRlZEF0OiBudWxsLFxuICAgIGNvbXBsZXRlZEF0OiBudWxsLFxuICAgIGVycm9yQ29kZTogbnVsbCxcbiAgICB3b3JrZmxvd0NvcmVWZXJzaW9uOiBudWxsLFxuICAgIHdvcmtmbG93RW5jcnlwdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICB9IHNhdGlzZmllcyBBbmFseXRpY3NSdW47XG5cbiAgaXQoJ2ZvcndhcmRzIHRoZSBmaWx0ZXIgdG8gdGhlIGFuYWx5dGljcyBsaXN0aW5nJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGxpc3QgPSB2aVxuICAgICAgLmZuKClcbiAgICAgIC5tb2NrUmVzb2x2ZWRWYWx1ZSh7IGRhdGE6IFtydW5dLCBjdXJzb3I6IG51bGwsIGhhc01vcmU6IGZhbHNlIH0pO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgYW5hbHl0aWNzOiB7IHJ1bnM6IHsgbGlzdCB9IH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuXG4gICAgYXdhaXQgbGlzdFJ1bnMod29ybGQsIHsganNvbjogdHJ1ZSwgYXR0cmlidXRlczogeyB0ZW5hbnQ6ICdhY21lJyB9IH0pO1xuXG4gICAgZXhwZWN0KGxpc3QubW9jay5jYWxsc1swXVswXS5hdHRyaWJ1dGVzKS50b0VxdWFsKHsgdGVuYW50OiAnYWNtZScgfSk7XG4gIH0pO1xuXG4gIGl0KCdvbWl0cyB0aGUga2V5IGVudGlyZWx5IHdoZW4gbm8gZmlsdGVyIHdhcyBnaXZlbicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBsaXN0ID0gdmlcbiAgICAgIC5mbigpXG4gICAgICAubW9ja1Jlc29sdmVkVmFsdWUoeyBkYXRhOiBbcnVuXSwgY3Vyc29yOiBudWxsLCBoYXNNb3JlOiBmYWxzZSB9KTtcbiAgICBjb25zdCB3b3JsZCA9IHtcbiAgICAgIGFuYWx5dGljczogeyBydW5zOiB7IGxpc3QgfSB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBXb3JsZDtcblxuICAgIGF3YWl0IGxpc3RSdW5zKHdvcmxkLCB7IGpzb246IHRydWUgfSk7XG5cbiAgICBleHBlY3QoJ2F0dHJpYnV0ZXMnIGluIGxpc3QubW9jay5jYWxsc1swXVswXSkudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIC8vIFRoZSB3YXJuaW5nIG5hbWVzIHdoaWNoZXZlciBjb25kaXRpb24gYXBwbGllcy4gYC0td2l0aERhdGFgIGlzIG5vd1xuICAvLyByZWplY3RlZCB1cHN0cmVhbSBieSB2YWxpZGF0ZUF0dHJpYnV0ZVNjb3BlLCBzbyB0aGUgcmVhY2hhYmxlIGNhc2UgaGVyZVxuICAvLyBpcyBhIGJhY2tlbmQgd2l0aCBubyBhbmFseXRpY3MgbmFtZXNwYWNlLlxuICBpdCgnc2F5cyB0aGUgYmFja2VuZCBoYXMgbm8gYW5hbHl0aWNzIHJlYWQgcGF0aCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB3YXJuID0gdmkuc3B5T24obG9nZ2VyLCAnd2FybicpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgYW5hbHl0aWNzOiB1bmRlZmluZWQsXG4gICAgICBydW5zOiB7XG4gICAgICAgIGxpc3Q6IHZpXG4gICAgICAgICAgLmZuKClcbiAgICAgICAgICAubW9ja1Jlc29sdmVkVmFsdWUoeyBkYXRhOiBbXSwgY3Vyc29yOiBudWxsLCBoYXNNb3JlOiBmYWxzZSB9KSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuXG4gICAgYXdhaXQgbGlzdFJ1bnMod29ybGQsIHsganNvbjogdHJ1ZSwgYXR0cmlidXRlczogeyB0ZW5hbnQ6ICdhY21lJyB9IH0pO1xuXG4gICAgZXhwZWN0KHdhcm4ubW9jay5jYWxscy5mbGF0KCkuam9pbignICcpKS50b0NvbnRhaW4oXG4gICAgICAnLS1hdHRyaWJ1dGUgaXMgaWdub3JlZCBieSB0aGlzIGJhY2tlbmQsIHdoaWNoIGhhcyBubyBhbmFseXRpY3MgcmVhZCBwYXRoJ1xuICAgICk7XG4gICAgd2Fybi5tb2NrUmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnYmxhbWVzIC0td2l0aERhdGEgd2hlbiB0aGF0IGlzIHdoYXQgbW92ZWQgdGhlIHJlYWQgb2ZmIGFuYWx5dGljcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB3YXJuID0gdmkuc3B5T24obG9nZ2VyLCAnd2FybicpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IHdvcmxkID0ge1xuICAgICAgYW5hbHl0aWNzOiB7IHJ1bnM6IHsgbGlzdDogdmkuZm4oKSB9IH0sXG4gICAgICBydW5zOiB7XG4gICAgICAgIGxpc3Q6IHZpXG4gICAgICAgICAgLmZuKClcbiAgICAgICAgICAubW9ja1Jlc29sdmVkVmFsdWUoeyBkYXRhOiBbXSwgY3Vyc29yOiBudWxsLCBoYXNNb3JlOiBmYWxzZSB9KSxcbiAgICAgIH0sXG4gICAgfSBhcyB1bmtub3duIGFzIFdvcmxkO1xuXG4gICAgYXdhaXQgbGlzdFJ1bnMod29ybGQsIHtcbiAgICAgIGpzb246IHRydWUsXG4gICAgICB3aXRoRGF0YTogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZXM6IHsgdGVuYW50OiAnYWNtZScgfSxcbiAgICB9KTtcblxuICAgIGV4cGVjdCh3YXJuLm1vY2suY2FsbHMuZmxhdCgpLmpvaW4oJyAnKSkudG9Db250YWluKFxuICAgICAgJy0tYXR0cmlidXRlIGlzIGlnbm9yZWQgd2l0aCAtLXdpdGhEYXRhJ1xuICAgICk7XG4gICAgd2Fybi5tb2NrUmVzdG9yZSgpO1xuICB9KTtcbn0pO1xuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/cli",
3
- "version": "5.0.0-beta.47",
3
+ "version": "5.0.0-beta.48",
4
4
  "description": "Command-line interface for Workflow SDK",
5
5
  "type": "module",
6
6
  "bin": {
@@ -31,15 +31,24 @@
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "22.19.0",
34
+ "@workflow/tsconfig": "5.0.0-beta.0",
34
35
  "typescript": "^6.0.3",
35
- "vitest": "^4.1.10",
36
- "@workflow/tsconfig": "5.0.0-beta.0"
36
+ "vitest": "^4.1.10"
37
37
  },
38
38
  "dependencies": {
39
39
  "@oclif/core": "4.11.4",
40
40
  "@oclif/plugin-help": "6.2.37",
41
41
  "@swc/core": "1.15.3",
42
42
  "@vercel/cli-auth": "0.0.1",
43
+ "@workflow/builders": "5.0.0-beta.48",
44
+ "@workflow/core": "5.0.0-beta.48",
45
+ "@workflow/errors": "5.0.0-beta.20",
46
+ "@workflow/swc-plugin": "5.0.0-beta.5",
47
+ "@workflow/utils": "5.0.0-beta.10",
48
+ "@workflow/web": "5.0.0-beta.48",
49
+ "@workflow/world": "5.0.0-beta.33",
50
+ "@workflow/world-local": "5.0.0-beta.42",
51
+ "@workflow/world-vercel": "5.0.0-beta.44",
43
52
  "boxen": "8.0.1",
44
53
  "builtin-modules": "5.0.0",
45
54
  "chalk": "5.6.2",
@@ -56,16 +65,7 @@
56
65
  "terminal-link": "5.0.0",
57
66
  "tinyglobby": "0.2.17",
58
67
  "xdg-app-paths": "5.1.0",
59
- "zod": "~4.3.6",
60
- "@workflow/builders": "5.0.0-beta.47",
61
- "@workflow/core": "5.0.0-beta.47",
62
- "@workflow/errors": "5.0.0-beta.19",
63
- "@workflow/swc-plugin": "5.0.0-beta.5",
64
- "@workflow/utils": "5.0.0-beta.10",
65
- "@workflow/web": "5.0.0-beta.47",
66
- "@workflow/world": "5.0.0-beta.32",
67
- "@workflow/world-local": "5.0.0-beta.41",
68
- "@workflow/world-vercel": "5.0.0-beta.43"
68
+ "zod": "~4.3.6"
69
69
  },
70
70
  "scripts": {
71
71
  "build": "tsc && chmod +x bin/run.js",