@workflow/core 5.0.0-beta.40 → 5.0.0-beta.41

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 (70) hide show
  1. package/dist/events-consumer.d.ts +127 -6
  2. package/dist/events-consumer.d.ts.map +1 -1
  3. package/dist/events-consumer.js +364 -50
  4. package/dist/private.d.ts +87 -18
  5. package/dist/private.d.ts.map +1 -1
  6. package/dist/private.js +116 -44
  7. package/dist/runtime/constants.d.ts +15 -1
  8. package/dist/runtime/constants.d.ts.map +1 -1
  9. package/dist/runtime/constants.js +22 -3
  10. package/dist/runtime/helpers.d.ts +116 -8
  11. package/dist/runtime/helpers.d.ts.map +1 -1
  12. package/dist/runtime/helpers.js +174 -2
  13. package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -1
  14. package/dist/runtime/quickjs-assets.generated.js +2 -2
  15. package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -1
  16. package/dist/runtime/quickjs-entrypoint.js +13 -5
  17. package/dist/runtime/quickjs-runtime.d.ts +36 -1
  18. package/dist/runtime/quickjs-runtime.d.ts.map +1 -1
  19. package/dist/runtime/quickjs-runtime.js +613 -185
  20. package/dist/runtime/quickjs-serde.d.ts +107 -0
  21. package/dist/runtime/quickjs-serde.d.ts.map +1 -0
  22. package/dist/runtime/quickjs-serde.js +2098 -0
  23. package/dist/runtime/replay-budget.d.ts +5 -14
  24. package/dist/runtime/replay-budget.d.ts.map +1 -1
  25. package/dist/runtime/replay-budget.js +19 -72
  26. package/dist/runtime/resume-hook.d.ts.map +1 -1
  27. package/dist/runtime/resume-hook.js +5 -1
  28. package/dist/runtime/runs.d.ts.map +1 -1
  29. package/dist/runtime/runs.js +3 -4
  30. package/dist/runtime/start.js +2 -7
  31. package/dist/runtime/step-executor.d.ts.map +1 -1
  32. package/dist/runtime/step-executor.js +1 -4
  33. package/dist/runtime/suspension-handler.d.ts +7 -0
  34. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  35. package/dist/runtime/suspension-handler.js +58 -11
  36. package/dist/runtime/world-compatibility.d.ts +15 -0
  37. package/dist/runtime/world-compatibility.d.ts.map +1 -1
  38. package/dist/runtime/world-compatibility.js +25 -5
  39. package/dist/runtime.d.ts.map +1 -1
  40. package/dist/runtime.js +474 -418
  41. package/dist/serialization/codec-devalue-vm.d.ts +7 -0
  42. package/dist/serialization/codec-devalue-vm.d.ts.map +1 -1
  43. package/dist/serialization/codec-devalue-vm.js +12 -1
  44. package/dist/serialization/workflow-vm.d.ts +8 -3
  45. package/dist/serialization/workflow-vm.d.ts.map +1 -1
  46. package/dist/serialization/workflow-vm.js +9 -4
  47. package/dist/step.js +2 -2
  48. package/dist/telemetry/semantic-conventions.d.ts +23 -0
  49. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  50. package/dist/telemetry/semantic-conventions.js +18 -1
  51. package/dist/version.d.ts +1 -1
  52. package/dist/version.js +2 -2
  53. package/dist/vm/index.d.ts.map +1 -1
  54. package/dist/vm/index.js +9 -6
  55. package/dist/workflow/abort-controller.d.ts.map +1 -1
  56. package/dist/workflow/abort-controller.js +4 -6
  57. package/dist/workflow/attribute-dispatcher.js +2 -2
  58. package/dist/workflow/hook.js +2 -2
  59. package/dist/workflow/sleep.js +2 -2
  60. package/dist/workflow.d.ts +10 -0
  61. package/dist/workflow.d.ts.map +1 -1
  62. package/dist/workflow.js +60 -19
  63. package/docs/how-it-works/event-sourcing.mdx +11 -3
  64. package/package.json +6 -6
  65. package/dist/correlation-id.d.ts +0 -109
  66. package/dist/correlation-id.d.ts.map +0 -1
  67. package/dist/correlation-id.js +0 -139
  68. package/dist/serialization/vm-bundle-entry.d.ts +0 -12
  69. package/dist/serialization/vm-bundle-entry.d.ts.map +0 -1
  70. package/dist/serialization/vm-bundle-entry.js +0 -58
@@ -5,5 +5,12 @@
5
5
  * (no Node.js Buffer, no node:util). Safe to bundle into the QuickJS VM.
6
6
  */
7
7
  import type { Codec } from './codec.js';
8
+ /**
9
+ * The workflow-mode reducer/reviver key sets — exported for the QuickJS
10
+ * host serde's exhaustiveness test (quickjs-serde.test.ts), which pins
11
+ * that the handle-space codec implements exactly these.
12
+ */
13
+ export declare function getWorkflowModeReducerKeys(): string[];
14
+ export declare function getWorkflowModeReviverKeys(): string[];
8
15
  export declare const devalueVmCodec: Codec;
9
16
  //# sourceMappingURL=codec-devalue-vm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec-devalue-vm.d.ts","sourceRoot":"","sources":["../../src/serialization/codec-devalue-vm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAqB,MAAM,YAAY,CAAC;AAyI3D,eAAO,MAAM,cAAc,EAAE,KAyB5B,CAAC"}
1
+ {"version":3,"file":"codec-devalue-vm.d.ts","sourceRoot":"","sources":["../../src/serialization/codec-devalue-vm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAqB,MAAM,YAAY,CAAC;AAyI3D;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AACD,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AAED,eAAO,MAAM,cAAc,EAAE,KAyB5B,CAAC"}
@@ -117,6 +117,17 @@ function getReviversForMode(mode) {
117
117
  };
118
118
  }
119
119
  }
120
+ /**
121
+ * The workflow-mode reducer/reviver key sets — exported for the QuickJS
122
+ * host serde's exhaustiveness test (quickjs-serde.test.ts), which pins
123
+ * that the handle-space codec implements exactly these.
124
+ */
125
+ export function getWorkflowModeReducerKeys() {
126
+ return Object.keys(getReducersForMode('workflow'));
127
+ }
128
+ export function getWorkflowModeReviverKeys() {
129
+ return Object.keys(getReviversForMode('workflow'));
130
+ }
120
131
  export const devalueVmCodec = {
121
132
  formatPrefix: SerializationFormat.DEVALUE_V1,
122
133
  serialize(value, mode) {
@@ -134,4 +145,4 @@ export const devalueVmCodec = {
134
145
  return unflatten(data, revivers);
135
146
  },
136
147
  };
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMtZGV2YWx1ZS12bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL2NvZGVjLWRldmFsdWUtdm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0UsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsR0FDdkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQWdDLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRS9FLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUVsQyxnRUFBZ0U7QUFDaEUsMkVBQTJFO0FBQzNFLHlFQUF5RTtBQUN6RSx5RUFBeUU7QUFDekUsd0VBQXdFO0FBQ3hFLG9DQUFvQztBQUNwQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUNuRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQVNqRSxTQUFTLG1CQUFtQixDQUMxQixNQUE4QyxFQUM5QyxNQUFXO0lBRVgsTUFBTSxVQUFVLEdBQ2QsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEUsTUFBTSxTQUFTLEdBQ2IsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksTUFBTSxDQUFDLE1B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QUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBK0MsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFhLEVBQUUsSUFBdUI7UUFDdEQsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsT0FBTyxTQUFTLENBQ2QsSUFBYSxFQUNiLFFBQStDLENBQ2hELENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVk0tY29tcGF0aWJsZSBkZXZhbHVlIGNvZGVjLlxuICpcbiAqIFNhbWUgYXMgY29kZWMtZGV2YWx1ZS50cyBidXQgdXNlcyBWTS1jb21wYXRpYmxlIHJlZHVjZXJzL3Jldml2ZXJzXG4gKiAobm8gTm9kZS5qcyBCdWZmZXIsIG5vIG5vZGU6dXRpbCkuIFNhZmUgdG8gYnVuZGxlIGludG8gdGhlIFF1aWNrSlMgVk0uXG4gKi9cblxuaW1wb3J0IHsgcGFyc2UsIHN0cmluZ2lmeSwgdW5mbGF0dGVuIH0gZnJvbSAnZGV2YWx1ZSc7XG5pbXBvcnQgdHlwZSB7IENvZGVjLCBTZXJpYWxpemF0aW9uTW9kZSB9IGZyb20gJy4vY29kZWMuanMnO1xuaW1wb3J0IHsgZ2V0Q2xhc3NSZWR1Y2VycywgZ2V0Q2xhc3NSZXZpdmVycyB9IGZyb20gJy4vcmVkdWNlcnMvY2xhc3Mtdm0uanMnO1xuaW1wb3J0IHsgZ2V0Q29tbW9uUmVkdWNlcnMsIGdldENvbW1vblJldml2ZXJzIH0gZnJvbSAnLi9yZWR1Y2Vycy9jb21tb24tdm0uanMnO1xuaW1wb3J0IHtcbiAgZ2V0U3RlcEZ1bmN0aW9uUmVkdWNlcixcbiAgZ2V0U3RlcEZ1bmN0aW9uUmV2aXZlcixcbn0gZnJvbSAnLi9yZWR1Y2Vycy9zdGVwLWZ1bmN0aW9uLXZtLmpzJztcbmltcG9ydCB7IHR5cGUgUmVkdWNlcnMsIHR5cGUgUmV2aXZlcnMsIFNlcmlhbGl6YXRpb25Gb3JtYXQgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuXG4vLyAtLS0tIEFib3J0Q29udHJvbGxlciAvIEFib3J0U2lnbmFsICh3b3JrZmxvdyBWTSBjb250ZXh0KSAtLS0tXG4vLyBNaXJyb3JzIHRoZSBub2RlOnZtIGVuZ2luZSdzIHdvcmtmbG93LWNvbnRleHQgYWJvcnQgcmVkdWNlcnMvcmV2aXZlcnMgaW5cbi8vIHNlcmlhbGl6YXRpb24udHM6IHJlZHVjZSBieSByZWFkaW5nIHRoZSBzdHJlYW0vaG9vayBzeW1ib2xzIHN0YW1wZWQgYXRcbi8vIGNvbnRyb2xsZXIgY29uc3RydWN0aW9uOyByZXZpdmUgdG8gdGhlIGJvb3RzdHJhcCdzIFdvcmtmbG93QWJvcnRTaWduYWxcbi8vIGNsYXNzIChsb29rZWQgdXAgbGF6aWx5IG9uIGdsb2JhbFRoaXMg4oCUIHRoZSBzZXJkZSBidW5kbGUgaXMgZXZhbHVhdGVkXG4vLyBiZWZvcmUgdGhlIGJvb3RzdHJhcCBkZWZpbmVzIGl0KS5cbmNvbnN0IEFCT1JUX1NUUkVBTV9OQU1FID0gU3ltYm9sLmZvcignV09SS0ZMT1dfQUJPUlRfU1RSRUFNX05BTUUnKTtcbmNvbnN0IEFCT1JUX0hPT0tfVE9LRU4gPSBTeW1ib2wuZm9yKCdXT1JLRkxPV19BQk9SVF9IT09LX1RPS0VOJyk7XG5cbnR5cGUgQWJvcnRTZXJpYWxpemVkID0ge1xuICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gIGhvb2tUb2tlbjogc3RyaW5nO1xuICBhYm9ydGVkOiBib29sZWFuO1xuICByZWFzb24/OiB1bmtub3duO1xufTtcblxuZnVuY3Rpb24gcmVkdWNlQWJvcnRCeVN5bWJvbChcbiAgc2lnbmFsOiB7IGFib3J0ZWQ6IGJvb2xlYW47IHJlYXNvbj86IHVua25vd24gfSxcbiAgaG9sZGVyOiBhbnlcbik6IEFib3J0U2VyaWFsaXplZCB7XG4gIGNvbnN0IHN0cmVhbU5hbWUgPVxuICAgIGhvbGRlcltBQk9SVF9TVFJFQU1fTkFNRV0gPz8gaG9sZGVyLnNpZ25hbD8uW0FCT1JUX1NUUkVBTV9OQU1FXTtcbiAgY29uc3QgaG9va1Rva2VuID1cbiAgICBob2xkZXJbQUJPUlRfSE9PS19UT0tFTl0gPz8gaG9sZGVyLnNpZ25hbD8uW0FCT1JUX0hPT0tfVE9LRU5dO1xuICBpZiAoIXN0cmVhbU5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0Q29udHJvbGxlci9BYm9ydFNpZ25hbCBzdHJlYW0gbmFtZSBpcyBub3Qgc2V0Jyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdHJlYW1OYW1lLFxuICAgIGhvb2tUb2tlbixcbiAgICBhYm9ydGVkOiBzaWduYWwuYWJvcnRlZCxcbiAgICByZWFzb246IHNpZ25hbC5hYm9ydGVkID8gc2lnbmFsLnJlYXNvbiA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmV2aXZlQWJvcnRTaWduYWxWTSh2YWx1ZTogQWJvcnRTZXJpYWxpemVkKSB7XG4gIGNvbnN0IENscyA9IChnbG9iYWxUaGlzIGFzIGFueSkuX19Xb3JrZmxvd0Fib3J0U2lnbmFsO1xuICBpZiAodHlwZW9mIENscyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdXb3JrZmxvd0Fib3J0U2lnbmFsIGlzIG5vdCByZWdpc3RlcmVkIGluIHRoZSBWTSAoYm9vdHN0cmFwIG5vdCBldmFsdWF0ZWQpJ1xuICAgICk7XG4gIH1cbiAgY29uc3Qgc2lnbmFsID0gbmV3IENscyh2YWx1ZS5zdHJlYW1OYW1lLCB2YWx1ZS5ob29rVG9rZW4pO1xuICBpZiAodmFsdWUuYWJvcnRlZCkgc2lnbmFsLl9zZXRBYm9ydGVkKHZhbHVlLnJlYXNvbik7XG4gIHJldHVybiBzaWduYWw7XG59XG5cbmZ1bmN0aW9uIGdldEFib3J0UmVkdWNlcnNWTSgpOiBQYXJ0aWFsPFJlZHVjZXJzPiB7XG4gIHJldHVybiB7XG4gICAgQWJvcnRDb250cm9sbGVyOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCAhdmFsdWUuc2lnbmFsKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBoYXNBYm9ydFN5bWJvbCA9XG4gICAgICAgIHZhbHVlW0FCT1JUX1NUUkVBTV9OQU1FXSA/PyB2YWx1ZS5zaWduYWw/LltBQk9SVF9TVFJFQU1fTkFNRV07XG4gICAgICBpZiAoaGFzQWJvcnRTeW1ib2wgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHJlZHVjZUFib3J0QnlTeW1ib2wodmFsdWUuc2lnbmFsLCB2YWx1ZSk7XG4gICAgfSxcbiAgICBBYm9ydFNpZ25hbDogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICgodmFsdWUgYXMgYW55KVtBQk9SVF9TVFJFQU1fTkFNRV0gPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHJlZHVjZUFib3J0QnlTeW1ib2wodmFsdWUgYXMgYW55LCB2YWx1ZSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0QWJvcnRSZXZpdmVyc1ZNKCk6IFBhcnRpYWw8UmV2aXZlcnM+IHtcbiAgcmV0dXJuIHtcbiAgICBBYm9ydENvbnRyb2xsZXI6ICh2YWx1ZTogQWJvcnRTZXJpYWxpemVkKSA9PiAoe1xuICAgICAgW0FCT1JUX1NUUkVBTV9OQU1FXTogdmFsdWUuc3RyZWFtTmFtZSxcbiAgICAgIFtBQk9SVF9IT09LX1RPS0VOXTogdmFsdWUuaG9va1Rva2VuLFxuICAgICAgc2lnbmFsOiByZXZpdmVBYm9ydFNpZ25hbFZNKHZhbHVlKSxcbiAgICAgIGFib3J0OiAoKSA9PiB7fSxcbiAgICB9KSxcbiAgICBBYm9ydFNpZ25hbDogKHZhbHVlOiBBYm9ydFNlcmlhbGl6ZWQpID0+IHJldml2ZUFib3J0U2lnbmFsVk0odmFsdWUpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWR1Y2Vyc0Zvck1vZGUobW9kZTogU2VyaWFsaXphdGlvbk1vZGUpOiBQYXJ0aWFsPFJlZHVjZXJzPiB7XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ3dvcmtmbG93JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdldEFib3J0UmVkdWNlcnNWTSgpLFxuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldFN0ZXBGdW5jdGlvblJlZHVjZXIoKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmVkdWNlcnMoKSxcbiAgICAgIH07XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKCksXG4gICAgICB9O1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKCksXG4gICAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJldml2ZXJzRm9yTW9kZShtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSk6IFBhcnRpYWw8UmV2aXZlcnM+IHtcbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSAnd29ya2Zsb3cnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ2V0QWJvcnRSZXZpdmVyc1ZNKCksXG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoKSxcbiAgICAgICAgLi4uZ2V0U3RlcEZ1bmN0aW9uUmV2aXZlcigpLFxuICAgICAgICAuLi5nZXRDb21tb25SZXZpdmVycygpLFxuICAgICAgfTtcbiAgICBjYXNlICdzdGVwJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmV2aXZlcnMoKSxcbiAgICAgIH07XG4gICAgY2FzZSAnY2xpZW50JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmV2aXZlcnMoKSxcbiAgICAgICAgU3RlcEZ1bmN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1N0ZXAgZnVuY3Rpb25zIGNhbm5vdCBiZSBkZXNlcmlhbGl6ZWQgaW4gY2xpZW50IGNvbnRleHQuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBkZXZhbHVlVm1Db2RlYzogQ29kZWMgPSB7XG4gIGZvcm1hdFByZWZpeDogU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuXG4gIHNlcmlhbGl6ZSh2YWx1ZTogdW5rbm93biwgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCByZWR1Y2VycyA9IGdldFJlZHVjZXJzRm9yTW9kZShtb2RlKTtcbiAgICBjb25zdCBzdHIgPSBzdHJpbmdpZnkoXG4gICAgICB2YWx1ZSxcbiAgICAgIHJlZHVjZXJzIGFzIFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+XG4gICAgKTtcbiAgICByZXR1cm4gZW5jb2Rlci5lbmNvZGUoc3RyKTtcbiAgfSxcblxuICBkZXNlcmlhbGl6ZShkYXRhOiBVaW50OEFycmF5LCBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSk6IHVua25vd24ge1xuICAgIGNvbnN0IHJldml2ZXJzID0gZ2V0UmV2aXZlcnNGb3JNb2RlKG1vZGUpO1xuICAgIGNvbnN0IHN0ciA9IGRlY29kZXIuZGVjb2RlKGRhdGEpO1xuICAgIHJldHVybiBwYXJzZShzdHIsIHJldml2ZXJzIGFzIFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+KTtcbiAgfSxcblxuICBkZXNlcmlhbGl6ZUxlZ2FjeShkYXRhOiB1bmtub3duLCBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSk6IHVua25vd24ge1xuICAgIGNvbnN0IHJldml2ZXJzID0gZ2V0UmV2aXZlcnNGb3JNb2RlKG1vZGUpO1xuICAgIHJldHVybiB1bmZsYXR0ZW4oXG4gICAgICBkYXRhIGFzIGFueVtdLFxuICAgICAgcmV2aXZlcnMgYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT5cbiAgICApO1xuICB9LFxufTtcbiJdfQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMtZGV2YWx1ZS12bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL2NvZGVjLWRldmFsdWUtdm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0UsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsR0FDdkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQWdDLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRS9FLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUVsQyxnRUFBZ0U7QUFDaEUsMkVBQTJFO0FBQzNFLHlFQUF5RTtBQUN6RSx5RUFBeUU7QUFDekUsd0VBQXdFO0FBQ3hFLG9DQUFvQztBQUNwQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUNuRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQVNqRSxTQUFTLG1CQUFtQixDQUMxQixNQUE4QyxFQUM5QyxNQUFXO0lBRVgsTUFBTSxVQUFVLEdBQ2QsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEUsTUFBTSxTQUFTLEdBQ2IsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksTUFBTSxDQUFDLE1B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QU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FDbkIsS0FBSyxFQUNMLFFBQStDLENBQ2hELENBQUM7UUFDRixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFnQixFQUFFLElBQXVCO1FBQ25ELE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQStDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBYSxFQUFFLElBQXVCO1FBQ3RELE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sU0FBUyxDQUNkLElBQWEsRUFDYixRQUErQyxDQUNoRCxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZNLWNvbXBhdGlibGUgZGV2YWx1ZSBjb2RlYy5cbiAqXG4gKiBTYW1lIGFzIGNvZGVjLWRldmFsdWUudHMgYnV0IHVzZXMgVk0tY29tcGF0aWJsZSByZWR1Y2Vycy9yZXZpdmVyc1xuICogKG5vIE5vZGUuanMgQnVmZmVyLCBubyBub2RlOnV0aWwpLiBTYWZlIHRvIGJ1bmRsZSBpbnRvIHRoZSBRdWlja0pTIFZNLlxuICovXG5cbmltcG9ydCB7IHBhcnNlLCBzdHJpbmdpZnksIHVuZmxhdHRlbiB9IGZyb20gJ2RldmFsdWUnO1xuaW1wb3J0IHR5cGUgeyBDb2RlYywgU2VyaWFsaXphdGlvbk1vZGUgfSBmcm9tICcuL2NvZGVjLmpzJztcbmltcG9ydCB7IGdldENsYXNzUmVkdWNlcnMsIGdldENsYXNzUmV2aXZlcnMgfSBmcm9tICcuL3JlZHVjZXJzL2NsYXNzLXZtLmpzJztcbmltcG9ydCB7IGdldENvbW1vblJlZHVjZXJzLCBnZXRDb21tb25SZXZpdmVycyB9IGZyb20gJy4vcmVkdWNlcnMvY29tbW9uLXZtLmpzJztcbmltcG9ydCB7XG4gIGdldFN0ZXBGdW5jdGlvblJlZHVjZXIsXG4gIGdldFN0ZXBGdW5jdGlvblJldml2ZXIsXG59IGZyb20gJy4vcmVkdWNlcnMvc3RlcC1mdW5jdGlvbi12bS5qcyc7XG5pbXBvcnQgeyB0eXBlIFJlZHVjZXJzLCB0eXBlIFJldml2ZXJzLCBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbmNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcblxuLy8gLS0tLSBBYm9ydENvbnRyb2xsZXIgLyBBYm9ydFNpZ25hbCAod29ya2Zsb3cgVk0gY29udGV4dCkgLS0tLVxuLy8gTWlycm9ycyB0aGUgbm9kZTp2bSBlbmdpbmUncyB3b3JrZmxvdy1jb250ZXh0IGFib3J0IHJlZHVjZXJzL3Jldml2ZXJzIGluXG4vLyBzZXJpYWxpemF0aW9uLnRzOiByZWR1Y2UgYnkgcmVhZGluZyB0aGUgc3RyZWFtL2hvb2sgc3ltYm9scyBzdGFtcGVkIGF0XG4vLyBjb250cm9sbGVyIGNvbnN0cnVjdGlvbjsgcmV2aXZlIHRvIHRoZSBib290c3RyYXAncyBXb3JrZmxvd0Fib3J0U2lnbmFsXG4vLyBjbGFzcyAobG9va2VkIHVwIGxhemlseSBvbiBnbG9iYWxUaGlzIOKAlCB0aGUgc2VyZGUgYnVuZGxlIGlzIGV2YWx1YXRlZFxuLy8gYmVmb3JlIHRoZSBib290c3RyYXAgZGVmaW5lcyBpdCkuXG5jb25zdCBBQk9SVF9TVFJFQU1fTkFNRSA9IFN5bWJvbC5mb3IoJ1dPUktGTE9XX0FCT1JUX1NUUkVBTV9OQU1FJyk7XG5jb25zdCBBQk9SVF9IT09LX1RPS0VOID0gU3ltYm9sLmZvcignV09SS0ZMT1dfQUJPUlRfSE9PS19UT0tFTicpO1xuXG50eXBlIEFib3J0U2VyaWFsaXplZCA9IHtcbiAgc3RyZWFtTmFtZTogc3RyaW5nO1xuICBob29rVG9rZW46IHN0cmluZztcbiAgYWJvcnRlZDogYm9vbGVhbjtcbiAgcmVhc29uPzogdW5rbm93bjtcbn07XG5cbmZ1bmN0aW9uIHJlZHVjZUFib3J0QnlTeW1ib2woXG4gIHNpZ25hbDogeyBhYm9ydGVkOiBib29sZWFuOyByZWFzb24/OiB1bmtub3duIH0sXG4gIGhvbGRlcjogYW55XG4pOiBBYm9ydFNlcmlhbGl6ZWQge1xuICBjb25zdCBzdHJlYW1OYW1lID1cbiAgICBob2xkZXJbQUJPUlRfU1RSRUFNX05BTUVdID8/IGhvbGRlci5zaWduYWw/LltBQk9SVF9TVFJFQU1fTkFNRV07XG4gIGNvbnN0IGhvb2tUb2tlbiA9XG4gICAgaG9sZGVyW0FCT1JUX0hPT0tfVE9LRU5dID8/IGhvbGRlci5zaWduYWw/LltBQk9SVF9IT09LX1RPS0VOXTtcbiAgaWYgKCFzdHJlYW1OYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBYm9ydENvbnRyb2xsZXIvQWJvcnRTaWduYWwgc3RyZWFtIG5hbWUgaXMgbm90IHNldCcpO1xuICB9XG4gIHJldHVybiB7XG4gICAgc3RyZWFtTmFtZSxcbiAgICBob29rVG9rZW4sXG4gICAgYWJvcnRlZDogc2lnbmFsLmFib3J0ZWQsXG4gICAgcmVhc29uOiBzaWduYWwuYWJvcnRlZCA/IHNpZ25hbC5yZWFzb24gOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJldml2ZUFib3J0U2lnbmFsVk0odmFsdWU6IEFib3J0U2VyaWFsaXplZCkge1xuICBjb25zdCBDbHMgPSAoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fV29ya2Zsb3dBYm9ydFNpZ25hbDtcbiAgaWYgKHR5cGVvZiBDbHMgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnV29ya2Zsb3dBYm9ydFNpZ25hbCBpcyBub3QgcmVnaXN0ZXJlZCBpbiB0aGUgVk0gKGJvb3RzdHJhcCBub3QgZXZhbHVhdGVkKSdcbiAgICApO1xuICB9XG4gIGNvbnN0IHNpZ25hbCA9IG5ldyBDbHModmFsdWUuc3RyZWFtTmFtZSwgdmFsdWUuaG9va1Rva2VuKTtcbiAgaWYgKHZhbHVlLmFib3J0ZWQpIHNpZ25hbC5fc2V0QWJvcnRlZCh2YWx1ZS5yZWFzb24pO1xuICByZXR1cm4gc2lnbmFsO1xufVxuXG5mdW5jdGlvbiBnZXRBYm9ydFJlZHVjZXJzVk0oKTogUGFydGlhbDxSZWR1Y2Vycz4ge1xuICByZXR1cm4ge1xuICAgIEFib3J0Q29udHJvbGxlcjogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgIXZhbHVlLnNpZ25hbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgaGFzQWJvcnRTeW1ib2wgPVxuICAgICAgICB2YWx1ZVtBQk9SVF9TVFJFQU1fTkFNRV0gPz8gdmFsdWUuc2lnbmFsPy5bQUJPUlRfU1RSRUFNX05BTUVdO1xuICAgICAgaWYgKGhhc0Fib3J0U3ltYm9sID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiByZWR1Y2VBYm9ydEJ5U3ltYm9sKHZhbHVlLnNpZ25hbCwgdmFsdWUpO1xuICAgIH0sXG4gICAgQWJvcnRTaWduYWw6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoKHZhbHVlIGFzIGFueSlbQUJPUlRfU1RSRUFNX05BTUVdID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiByZWR1Y2VBYm9ydEJ5U3ltYm9sKHZhbHVlIGFzIGFueSwgdmFsdWUpO1xuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEFib3J0UmV2aXZlcnNWTSgpOiBQYXJ0aWFsPFJldml2ZXJzPiB7XG4gIHJldHVybiB7XG4gICAgQWJvcnRDb250cm9sbGVyOiAodmFsdWU6IEFib3J0U2VyaWFsaXplZCkgPT4gKHtcbiAgICAgIFtBQk9SVF9TVFJFQU1fTkFNRV06IHZhbHVlLnN0cmVhbU5hbWUsXG4gICAgICBbQUJPUlRfSE9PS19UT0tFTl06IHZhbHVlLmhvb2tUb2tlbixcbiAgICAgIHNpZ25hbDogcmV2aXZlQWJvcnRTaWduYWxWTSh2YWx1ZSksXG4gICAgICBhYm9ydDogKCkgPT4ge30sXG4gICAgfSksXG4gICAgQWJvcnRTaWduYWw6ICh2YWx1ZTogQWJvcnRTZXJpYWxpemVkKSA9PiByZXZpdmVBYm9ydFNpZ25hbFZNKHZhbHVlKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVkdWNlcnNGb3JNb2RlKG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlKTogUGFydGlhbDxSZWR1Y2Vycz4ge1xuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlICd3b3JrZmxvdyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRBYm9ydFJlZHVjZXJzVk0oKSxcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZWR1Y2VycygpLFxuICAgICAgICAuLi5nZXRTdGVwRnVuY3Rpb25SZWR1Y2VyKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKCksXG4gICAgICB9O1xuICAgIGNhc2UgJ3N0ZXAnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZWR1Y2VycygpLFxuICAgICAgICAuLi5nZXRDb21tb25SZWR1Y2VycygpLFxuICAgICAgfTtcbiAgICBjYXNlICdjbGllbnQnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZWR1Y2VycygpLFxuICAgICAgICAuLi5nZXRDb21tb25SZWR1Y2VycygpLFxuICAgICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRSZXZpdmVyc0Zvck1vZGUobW9kZTogU2VyaWFsaXphdGlvbk1vZGUpOiBQYXJ0aWFsPFJldml2ZXJzPiB7XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ3dvcmtmbG93JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdldEFib3J0UmV2aXZlcnNWTSgpLFxuICAgICAgICAuLi5nZXRDbGFzc1Jldml2ZXJzKCksXG4gICAgICAgIC4uLmdldFN0ZXBGdW5jdGlvblJldml2ZXIoKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmV2aXZlcnMoKSxcbiAgICAgIH07XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRDbGFzc1Jldml2ZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJldml2ZXJzKCksXG4gICAgICB9O1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRDbGFzc1Jldml2ZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJldml2ZXJzKCksXG4gICAgICAgIFN0ZXBGdW5jdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdTdGVwIGZ1bmN0aW9ucyBjYW5ub3QgYmUgZGVzZXJpYWxpemVkIGluIGNsaWVudCBjb250ZXh0LidcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSB3b3JrZmxvdy1tb2RlIHJlZHVjZXIvcmV2aXZlciBrZXkgc2V0cyDigJQgZXhwb3J0ZWQgZm9yIHRoZSBRdWlja0pTXG4gKiBob3N0IHNlcmRlJ3MgZXhoYXVzdGl2ZW5lc3MgdGVzdCAocXVpY2tqcy1zZXJkZS50ZXN0LnRzKSwgd2hpY2ggcGluc1xuICogdGhhdCB0aGUgaGFuZGxlLXNwYWNlIGNvZGVjIGltcGxlbWVudHMgZXhhY3RseSB0aGVzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtmbG93TW9kZVJlZHVjZXJLZXlzKCk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGdldFJlZHVjZXJzRm9yTW9kZSgnd29ya2Zsb3cnKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya2Zsb3dNb2RlUmV2aXZlcktleXMoKTogc3RyaW5nW10ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZ2V0UmV2aXZlcnNGb3JNb2RlKCd3b3JrZmxvdycpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGRldmFsdWVWbUNvZGVjOiBDb2RlYyA9IHtcbiAgZm9ybWF0UHJlZml4OiBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEsXG5cbiAgc2VyaWFsaXplKHZhbHVlOiB1bmtub3duLCBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHJlZHVjZXJzID0gZ2V0UmVkdWNlcnNGb3JNb2RlKG1vZGUpO1xuICAgIGNvbnN0IHN0ciA9IHN0cmluZ2lmeShcbiAgICAgIHZhbHVlLFxuICAgICAgcmVkdWNlcnMgYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT5cbiAgICApO1xuICAgIHJldHVybiBlbmNvZGVyLmVuY29kZShzdHIpO1xuICB9LFxuXG4gIGRlc2VyaWFsaXplKGRhdGE6IFVpbnQ4QXJyYXksIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlKTogdW5rbm93biB7XG4gICAgY29uc3QgcmV2aXZlcnMgPSBnZXRSZXZpdmVyc0Zvck1vZGUobW9kZSk7XG4gICAgY29uc3Qgc3RyID0gZGVjb2Rlci5kZWNvZGUoZGF0YSk7XG4gICAgcmV0dXJuIHBhcnNlKHN0ciwgcmV2aXZlcnMgYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT4pO1xuICB9LFxuXG4gIGRlc2VyaWFsaXplTGVnYWN5KGRhdGE6IHVua25vd24sIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlKTogdW5rbm93biB7XG4gICAgY29uc3QgcmV2aXZlcnMgPSBnZXRSZXZpdmVyc0Zvck1vZGUobW9kZSk7XG4gICAgcmV0dXJuIHVuZmxhdHRlbihcbiAgICAgIGRhdGEgYXMgYW55W10sXG4gICAgICByZXZpdmVycyBhcyBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PlxuICAgICk7XG4gIH0sXG59O1xuIl19
@@ -1,8 +1,13 @@
1
1
  /**
2
- * VM-compatible workflow mode serialization.
2
+ * Host-side reference implementation of the QuickJS engine's workflow-mode
3
+ * wire codec.
3
4
  *
4
- * This module is designed to be bundled into the QuickJS WASM VM.
5
- * It has NO Node.js dependencies (no Buffer, no node:util).
5
+ * The QuickJS engine serializes through handles on the host
6
+ * (runtime/quickjs-serde.ts); this module is the value-space equivalent of
7
+ * that codec and is used by tests to build wire fixtures and assert
8
+ * byte-level parity. It has NO Node.js dependencies (no Buffer, no
9
+ * node:util), which is also what made it bundleable into the VM before the
10
+ * serde moved host-side.
6
11
  *
7
12
  * Produces and consumes the same wire format as the Node.js workflow.ts —
8
13
  * format-prefixed devalue data ("devl" + devalue.stringify output).
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-vm.d.ts","sourceRoot":"","sources":["../../src/serialization/workflow-vm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAOpD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CA0B/D"}
1
+ {"version":3,"file":"workflow-vm.d.ts","sourceRoot":"","sources":["../../src/serialization/workflow-vm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAiBH;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAOpD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CA0B/D"}
@@ -1,8 +1,13 @@
1
1
  /**
2
- * VM-compatible workflow mode serialization.
2
+ * Host-side reference implementation of the QuickJS engine's workflow-mode
3
+ * wire codec.
3
4
  *
4
- * This module is designed to be bundled into the QuickJS WASM VM.
5
- * It has NO Node.js dependencies (no Buffer, no node:util).
5
+ * The QuickJS engine serializes through handles on the host
6
+ * (runtime/quickjs-serde.ts); this module is the value-space equivalent of
7
+ * that codec and is used by tests to build wire fixtures and assert
8
+ * byte-level parity. It has NO Node.js dependencies (no Buffer, no
9
+ * node:util), which is also what made it bundleable into the VM before the
10
+ * serde moved host-side.
6
11
  *
7
12
  * Produces and consumes the same wire format as the Node.js workflow.ts —
8
13
  * format-prefixed devalue data ("devl" + devalue.stringify output).
@@ -63,4 +68,4 @@ export function deserialize(data) {
63
68
  }
64
69
  throw new Error(`Unsupported serialization format: ${prefixStr}`);
65
70
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctdm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi93b3JrZmxvdy12bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpFLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLElBQUksUUFBMkMsQ0FBQztBQUNoRCxJQUFJLFFBQTJDLENBQUM7QUFDaEQsU0FBUyxVQUFVO0lBQ2pCLElBQUksQ0FBQyxRQUFRO1FBQUUsUUFBUSxHQUFHLElBQUssVUFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRSxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBQ0QsU0FBUyxVQUFVO0lBQ2pCLElBQUksQ0FBQyxRQUFRO1FBQUUsUUFBUSxHQUFHLElBQUssVUFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRSxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWM7SUFDdEMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDNUQsTUFBTSxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQTBCO0lBQ3BELDBCQUEwQjtJQUMxQixJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxJQUFJLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDOUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksU0FBUyxLQUFLLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNwRCxPQUFPLGNBQWMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZNLWNvbXBhdGlibGUgd29ya2Zsb3cgbW9kZSBzZXJpYWxpemF0aW9uLlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIGRlc2lnbmVkIHRvIGJlIGJ1bmRsZWQgaW50byB0aGUgUXVpY2tKUyBXQVNNIFZNLlxuICogSXQgaGFzIE5PIE5vZGUuanMgZGVwZW5kZW5jaWVzIChubyBCdWZmZXIsIG5vIG5vZGU6dXRpbCkuXG4gKlxuICogUHJvZHVjZXMgYW5kIGNvbnN1bWVzIHRoZSBzYW1lIHdpcmUgZm9ybWF0IGFzIHRoZSBOb2RlLmpzIHdvcmtmbG93LnRzIOKAlFxuICogZm9ybWF0LXByZWZpeGVkIGRldmFsdWUgZGF0YSAoXCJkZXZsXCIgKyBkZXZhbHVlLnN0cmluZ2lmeSBvdXRwdXQpLlxuICovXG5cbmltcG9ydCB7IGRldmFsdWVWbUNvZGVjIH0gZnJvbSAnLi9jb2RlYy1kZXZhbHVlLXZtLmpzJztcbmltcG9ydCB7IGlzRm9ybWF0UHJlZml4LCBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmNvbnN0IEZPUk1BVF9QUkVGSVhfTEVOR1RIID0gNDtcbmxldCBfZW5jb2RlcjogeyBlbmNvZGUoczogc3RyaW5nKTogVWludDhBcnJheSB9O1xubGV0IF9kZWNvZGVyOiB7IGRlY29kZShkOiBVaW50OEFycmF5KTogc3RyaW5nIH07XG5mdW5jdGlvbiBnZXRFbmNvZGVyKCkge1xuICBpZiAoIV9lbmNvZGVyKSBfZW5jb2RlciA9IG5ldyAoZ2xvYmFsVGhpcyBhcyBhbnkpLlRleHRFbmNvZGVyKCk7XG4gIHJldHVybiBfZW5jb2Rlcjtcbn1cbmZ1bmN0aW9uIGdldERlY29kZXIoKSB7XG4gIGlmICghX2RlY29kZXIpIF9kZWNvZGVyID0gbmV3IChnbG9iYWxUaGlzIGFzIGFueSkuVGV4dERlY29kZXIoKTtcbiAgcmV0dXJuIF9kZWNvZGVyO1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZSBhIHZhbHVlIHRvIGZvcm1hdC1wcmVmaXhlZCBieXRlcy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2VyaWFsaXplXG4gKiBAcmV0dXJucyBVaW50OEFycmF5IHdpdGggXCJkZXZsXCIgcHJlZml4ICsgZGV2YWx1ZSBwYXlsb2FkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUodmFsdWU6IHVua25vd24pOiBVaW50OEFycmF5IHtcbiAgY29uc3QgcGF5bG9hZCA9IGRldmFsdWVWbUNvZGVjLnNlcmlhbGl6ZSh2YWx1ZSwgJ3dvcmtmbG93Jyk7XG4gIGNvbnN0IHByZWZpeCA9IGdldEVuY29kZXIoKS5lbmNvZGUoU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxKTtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkocHJlZml4Lmxlbmd0aCArIHBheWxvYWQubGVuZ3RoKTtcbiAgcmVzdWx0LnNldChwcmVmaXgsIDApO1xuICByZXN1bHQuc2V0KHBheWxvYWQsIHByZWZpeC5sZW5ndGgpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIGZvcm1hdC1wcmVmaXhlZCBieXRlcyBiYWNrIHRvIGEgdmFsdWUuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBVaW50OEFycmF5IHdpdGggZm9ybWF0IHByZWZpeCwgb3IgbGVnYWN5IG5vbi1iaW5hcnkgZGF0YVxuICogQHJldHVybnMgVGhlIGRlc2VyaWFsaXplZCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUoZGF0YTogVWludDhBcnJheSB8IHVua25vd24pOiB1bmtub3duIHtcbiAgLy8gTGVnYWN5OiBub24tYmluYXJ5IGRhdGFcbiAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgaWYgKGRldmFsdWVWbUNvZGVjLmRlc2VyaWFsaXplTGVnYWN5KSB7XG4gICAgICByZXR1cm4gZGV2YWx1ZVZtQ29kZWMuZGVzZXJpYWxpemVMZWdhY3koZGF0YSwgJ3dvcmtmbG93Jyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgZGVzZXJpYWxpemUgbm9uLWJpbmFyeSBkYXRhIHdpdGhvdXQgbGVnYWN5IHN1cHBvcnQnXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkYXRhLmxlbmd0aCA8IEZPUk1BVF9QUkVGSVhfTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhIHRvbyBzaG9ydCB0byBjb250YWluIGZvcm1hdCBwcmVmaXgnKTtcbiAgfVxuXG4gIGNvbnN0IHByZWZpeFN0ciA9IGdldERlY29kZXIoKS5kZWNvZGUoZGF0YS5zdWJhcnJheSgwLCBGT1JNQVRfUFJFRklYX0xFTkdUSCkpO1xuICBpZiAoIWlzRm9ybWF0UHJlZml4KHByZWZpeFN0cikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9ybWF0IHByZWZpeDogXCIke3ByZWZpeFN0cn1cImApO1xuICB9XG5cbiAgaWYgKHByZWZpeFN0ciA9PT0gU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxKSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRhdGEuc3ViYXJyYXkoRk9STUFUX1BSRUZJWF9MRU5HVEgpO1xuICAgIHJldHVybiBkZXZhbHVlVm1Db2RlYy5kZXNlcmlhbGl6ZShwYXlsb2FkLCAnd29ya2Zsb3cnKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2VyaWFsaXphdGlvbiBmb3JtYXQ6ICR7cHJlZml4U3RyfWApO1xufVxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctdm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi93b3JrZmxvdy12bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakUsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDL0IsSUFBSSxRQUEyQyxDQUFDO0FBQ2hELElBQUksUUFBMkMsQ0FBQztBQUNoRCxTQUFTLFVBQVU7SUFDakIsSUFBSSxDQUFDLFFBQVE7UUFBRSxRQUFRLEdBQUcsSUFBSyxVQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFDRCxTQUFTLFVBQVU7SUFDakIsSUFBSSxDQUFDLFFBQVE7UUFBRSxRQUFRLEdBQUcsSUFBSyxVQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYztJQUN0QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM1RCxNQUFNLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBMEI7SUFDcEQsMEJBQTBCO0lBQzFCLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2xDLElBQUksY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDckMsT0FBTyxjQUFjLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBSSxTQUFTLEtBQUssbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sY0FBYyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSG9zdC1zaWRlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUXVpY2tKUyBlbmdpbmUncyB3b3JrZmxvdy1tb2RlXG4gKiB3aXJlIGNvZGVjLlxuICpcbiAqIFRoZSBRdWlja0pTIGVuZ2luZSBzZXJpYWxpemVzIHRocm91Z2ggaGFuZGxlcyBvbiB0aGUgaG9zdFxuICogKHJ1bnRpbWUvcXVpY2tqcy1zZXJkZS50cyk7IHRoaXMgbW9kdWxlIGlzIHRoZSB2YWx1ZS1zcGFjZSBlcXVpdmFsZW50IG9mXG4gKiB0aGF0IGNvZGVjIGFuZCBpcyB1c2VkIGJ5IHRlc3RzIHRvIGJ1aWxkIHdpcmUgZml4dHVyZXMgYW5kIGFzc2VydFxuICogYnl0ZS1sZXZlbCBwYXJpdHkuIEl0IGhhcyBOTyBOb2RlLmpzIGRlcGVuZGVuY2llcyAobm8gQnVmZmVyLCBub1xuICogbm9kZTp1dGlsKSwgd2hpY2ggaXMgYWxzbyB3aGF0IG1hZGUgaXQgYnVuZGxlYWJsZSBpbnRvIHRoZSBWTSBiZWZvcmUgdGhlXG4gKiBzZXJkZSBtb3ZlZCBob3N0LXNpZGUuXG4gKlxuICogUHJvZHVjZXMgYW5kIGNvbnN1bWVzIHRoZSBzYW1lIHdpcmUgZm9ybWF0IGFzIHRoZSBOb2RlLmpzIHdvcmtmbG93LnRzIOKAlFxuICogZm9ybWF0LXByZWZpeGVkIGRldmFsdWUgZGF0YSAoXCJkZXZsXCIgKyBkZXZhbHVlLnN0cmluZ2lmeSBvdXRwdXQpLlxuICovXG5cbmltcG9ydCB7IGRldmFsdWVWbUNvZGVjIH0gZnJvbSAnLi9jb2RlYy1kZXZhbHVlLXZtLmpzJztcbmltcG9ydCB7IGlzRm9ybWF0UHJlZml4LCBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmNvbnN0IEZPUk1BVF9QUkVGSVhfTEVOR1RIID0gNDtcbmxldCBfZW5jb2RlcjogeyBlbmNvZGUoczogc3RyaW5nKTogVWludDhBcnJheSB9O1xubGV0IF9kZWNvZGVyOiB7IGRlY29kZShkOiBVaW50OEFycmF5KTogc3RyaW5nIH07XG5mdW5jdGlvbiBnZXRFbmNvZGVyKCkge1xuICBpZiAoIV9lbmNvZGVyKSBfZW5jb2RlciA9IG5ldyAoZ2xvYmFsVGhpcyBhcyBhbnkpLlRleHRFbmNvZGVyKCk7XG4gIHJldHVybiBfZW5jb2Rlcjtcbn1cbmZ1bmN0aW9uIGdldERlY29kZXIoKSB7XG4gIGlmICghX2RlY29kZXIpIF9kZWNvZGVyID0gbmV3IChnbG9iYWxUaGlzIGFzIGFueSkuVGV4dERlY29kZXIoKTtcbiAgcmV0dXJuIF9kZWNvZGVyO1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZSBhIHZhbHVlIHRvIGZvcm1hdC1wcmVmaXhlZCBieXRlcy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2VyaWFsaXplXG4gKiBAcmV0dXJucyBVaW50OEFycmF5IHdpdGggXCJkZXZsXCIgcHJlZml4ICsgZGV2YWx1ZSBwYXlsb2FkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUodmFsdWU6IHVua25vd24pOiBVaW50OEFycmF5IHtcbiAgY29uc3QgcGF5bG9hZCA9IGRldmFsdWVWbUNvZGVjLnNlcmlhbGl6ZSh2YWx1ZSwgJ3dvcmtmbG93Jyk7XG4gIGNvbnN0IHByZWZpeCA9IGdldEVuY29kZXIoKS5lbmNvZGUoU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxKTtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkocHJlZml4Lmxlbmd0aCArIHBheWxvYWQubGVuZ3RoKTtcbiAgcmVzdWx0LnNldChwcmVmaXgsIDApO1xuICByZXN1bHQuc2V0KHBheWxvYWQsIHByZWZpeC5sZW5ndGgpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIGZvcm1hdC1wcmVmaXhlZCBieXRlcyBiYWNrIHRvIGEgdmFsdWUuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBVaW50OEFycmF5IHdpdGggZm9ybWF0IHByZWZpeCwgb3IgbGVnYWN5IG5vbi1iaW5hcnkgZGF0YVxuICogQHJldHVybnMgVGhlIGRlc2VyaWFsaXplZCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUoZGF0YTogVWludDhBcnJheSB8IHVua25vd24pOiB1bmtub3duIHtcbiAgLy8gTGVnYWN5OiBub24tYmluYXJ5IGRhdGFcbiAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgaWYgKGRldmFsdWVWbUNvZGVjLmRlc2VyaWFsaXplTGVnYWN5KSB7XG4gICAgICByZXR1cm4gZGV2YWx1ZVZtQ29kZWMuZGVzZXJpYWxpemVMZWdhY3koZGF0YSwgJ3dvcmtmbG93Jyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgZGVzZXJpYWxpemUgbm9uLWJpbmFyeSBkYXRhIHdpdGhvdXQgbGVnYWN5IHN1cHBvcnQnXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkYXRhLmxlbmd0aCA8IEZPUk1BVF9QUkVGSVhfTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhIHRvbyBzaG9ydCB0byBjb250YWluIGZvcm1hdCBwcmVmaXgnKTtcbiAgfVxuXG4gIGNvbnN0IHByZWZpeFN0ciA9IGdldERlY29kZXIoKS5kZWNvZGUoZGF0YS5zdWJhcnJheSgwLCBGT1JNQVRfUFJFRklYX0xFTkdUSCkpO1xuICBpZiAoIWlzRm9ybWF0UHJlZml4KHByZWZpeFN0cikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9ybWF0IHByZWZpeDogXCIke3ByZWZpeFN0cn1cImApO1xuICB9XG5cbiAgaWYgKHByZWZpeFN0ciA9PT0gU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxKSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRhdGEuc3ViYXJyYXkoRk9STUFUX1BSRUZJWF9MRU5HVEgpO1xuICAgIHJldHVybiBkZXZhbHVlVm1Db2RlYy5kZXNlcmlhbGl6ZShwYXlsb2FkLCAnd29ya2Zsb3cnKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2VyaWFsaXphdGlvbiBmb3JtYXQ6ICR7cHJlZml4U3RyfWApO1xufVxuIl19
package/dist/step.js CHANGED
@@ -11,7 +11,7 @@ export function createUseStep(ctx) {
11
11
  // Use a regular function (not arrow) so we can capture `this` when invoked as a method
12
12
  const stepFunction = function (...args) {
13
13
  const { promise, resolve, reject } = withResolvers();
14
- const correlationId = `step_${ctx.generateCorrelationId('step')}`;
14
+ const correlationId = `step_${ctx.generateUlid()}`;
15
15
  const queueItem = {
16
16
  type: 'step',
17
17
  correlationId,
@@ -359,4 +359,4 @@ export function createUseStep(ctx) {
359
359
  return stepFunction;
360
360
  };
361
361
  }
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFnQyxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixHQUVqQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQWdDO0lBQzVELE9BQU8sU0FBUyxPQUFPLENBQ3JCLFFBQWdCLEVBQ2hCLGFBQWtEO1FBRWxELHVGQUF1RjtRQUN2RixNQUFNLFlBQVksR0FBRyxVQUVuQixHQUFHLElBQVU7WUFFYixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxhQUFhLEVBQVUsQ0FBQztZQUU3RCxNQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBRWxFLE1BQU0sU0FBUyxHQUE0QjtnQkFDekMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osYUFBYTtnQkFDYixRQUFRO2dCQUNSLElBQUk7YUFDTCxDQUFDO1lBRUYsdUVBQXVFO1lBQ3ZFLDhEQUE4RDtZQUM5RCxJQUFJLElBQUksS0FBSyxTQUFTLElBQUks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QkFDM0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO3dCQUMxQyxLQUFLLEVBQUUsV0FBVzt3QkFDbEIsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLFlBQVksRUFBRSxLQUFLO3FCQUNwQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYXRhbEVycm9yLCBSZXBsYXlEaXZlcmdlbmNlRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB7IHdpdGhSZXNvbHZlcnMgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHsgRXZlbnRDb25zdW1lclJlc3VsdCB9IGZyb20gJy4vZXZlbnRzLWNvbnN1bWVyLmpzJztcbmltcG9ydCB7IHR5cGUgU3RlcEludm9jYXRpb25RdWV1ZUl0ZW0sIFdvcmtmbG93U3VzcGVuc2lvbiB9IGZyb20gJy4vZ2xvYmFsLmpzJztcbmltcG9ydCB7IHN0ZXBMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQge1xuICBhd2FpdEVhcmxpZXJEZWxpdmVyaWVzLFxuICByZWdpc3RlckRlbGl2ZXJ5QmFycmllcixcbiAgc2NoZWR1bGVXaGVuSWRsZSxcbiAgdHlwZSBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQsXG59IGZyb20gJy4vcHJpdmF0ZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlcmlhbGl6YWJsZSB9IGZyb20gJy4vc2NoZW1hcy5qcyc7XG5pbXBvcnQgeyBtYXJrVXNlU3RlcENsb3N1cmVGbiB9IGZyb20gJy4vc2VyaWFsaXphdGlvbi9oYXJkZW5lZC5qcyc7XG5pbXBvcnQgeyBoeWRyYXRlU3RlcEVycm9yLCBoeWRyYXRlU3RlcFJldHVyblZhbHVlIH0gZnJvbSAnLi9zZXJpYWxpemF0aW9uLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVzZVN0ZXAoY3R4OiBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVzZVN0ZXA8QXJncyBleHRlbmRzIFNlcmlhbGl6YWJsZVtdLCBSZXN1bHQ+KFxuICAgIHN0ZXBOYW1lOiBzdHJpbmcsXG4gICAgY2xvc3VyZVZhcnNGbj86ICgpID0+IFJlY29yZDxzdHJpbmcsIFNlcmlhbGl6YWJsZT5cbiAgKSB7XG4gICAgLy8gVXNlIGEgcmVndWxhciBmdW5jdGlvbiAobm90IGFycm93KSBzbyB3ZSBjYW4gY2FwdHVyZSBgdGhpc2Agd2hlbiBpbnZva2VkIGFzIGEgbWV0aG9kXG4gICAgY29uc3Qgc3RlcEZ1bmN0aW9uID0gZnVuY3Rpb24gKFxuICAgICAgdGhpczogdW5rbm93bixcbiAgICAgIC4uLmFyZ3M6IEFyZ3NcbiAgICApOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgICAgY29uc3QgeyBwcm9taXNlLCByZXNvbHZlLCByZWplY3QgfSA9IHdpdGhSZXNvbHZlcnM8UmVzdWx0PigpO1xuXG4gICAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gYHN0ZXBfJHtjdHguZ2VuZXJhdGVDb3JyZWxhdGlvbklkKCdzdGVwJyl9YDtcblxuICAgICAgY29uc3QgcXVldWVJdGVtOiBTdGVwSW52b2NhdGlvblF1ZXVlSXRlbSA9IHtcbiAgICAgICAgdHlwZTogJ3N0ZXAnLFxuICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICBzdGVwTmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgIH07XG5cbiAgICAgIC8vIENhcHR1cmUgYHRoaXNgIHZhbHVlIGZvciBtZXRob2QgaW52b2NhdGlvbnMgKGUuZy4sIE15Q2xhc3MubWV0aG9kKCkpXG4gICAgICAvLyBPbmx5IGluY2x1ZGUgaWYgYHRoaXNgIGlzIGRlZmluZWQgYW5kIG5vdCB0aGUgZ2xvYmFsIG9iamVjdFxuICAgICAgaWYgKHRoaXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzICE9PSBudWxsICYmIHRoaXMgIT09IGdsb2JhbFRoaXMpIHtcbiAgICAgICAgcXVldWVJdGVtLnRoaXNWYWwgPSB0aGlzIGFzIFNlcmlhbGl6YWJsZTtcbiAgICAgIH1cblxuICAgICAgLy8gSW52b2tlIHRoZSBjbG9zdXJlIHZhcmlhYmxlcyBmdW5jdGlvbiB0byBnZXQgdGhlIGNsb3N1cmUgc2NvcGVcbiAgICAgIGNvbnN0IGNsb3N1cmVWYXJzID0gY2xvc3VyZVZhcnNGbj8uKCk7XG4gICAgICBpZiAoY2xvc3VyZVZhcnMpIHtcbiAgICAgICAgcXVldWVJdGVtLmNsb3N1cmVWYXJzID0gY2xvc3VyZVZhcnM7XG4gICAgICB9XG5cbiAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLnNldChjb3JyZWxhdGlvbklkLCBxdWV1ZUl0ZW0pO1xuXG4gICAgICBzdGVwTG9nZ2VyLmRlYnVnKCdTdGVwIGNvbnN1bWVyIHNldHVwJywge1xuICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICBzdGVwTmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgIH0pO1xuICAgICAgY3R4LmV2ZW50c0NvbnN1bWVyLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZXZlbnRzLCBzbyB0aGlzIHN0ZXAgaGFzIGVpdGhlciBub3QgYmVlbiBydW4gb3IgaXMgY3VycmVudGx5IHJ1bm5pbmcuXG4gICAgICAgICAgLy8gQ3J1Y2lhbGx5LCBpZiB3ZSBnb3QgaGVyZSwgdGhlbiB0aGlzIHN0ZXAgUHJvbWlzZSBkb2VzXG4gICAgICAgICAgLy8gbm90IHJlc29sdmUgc28gdGhhdCB0aGUgdXNlciB3b3JrZmxvdyBjb2RlIGRvZXMgbm90IHByb2NlZWQgYW55IGZ1cnRoZXIuXG4gICAgICAgICAgLy8gTm90aWZ5IHRoZSB3b3JrZmxvdyBoYW5kbGVyIHRoYXQgdGhpcyBzdGVwIGhhcyBub3QgYmVlbiBydW4gLyBoYXMgbm90IGNvbXBsZXRlZCB5ZXQuXG4gICAgICAgICAgY29uc3QgZ2VuZXJhdGlvbiA9IGN0eC5zdXNwZW5zaW9uR2VuZXJhdGlvbjtcbiAgICAgICAgICBzY2hlZHVsZVdoZW5JZGxlKGN0eCwgKCkgPT4ge1xuICAgICAgICAgICAgLy8gQSByZXRhaW5lZCBzZXNzaW9uIG1heSBoYXZlIHJlc3VtZWQgcGFzdCB0aGlzIGJvdW5kYXJ5IHdoaWxlXG4gICAgICAgICAgICAvLyB0aGUgdGltZXIgd2FzIHF1ZXVlZDsgYSBzdGFsZSBzaWduYWwgbXVzdCBub3QgZmlyZS5cbiAgICAgICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSBjdHguc3VzcGVuc2lvbkdlbmVyYXRpb24pIHJldHVybjtcbiAgICAgICAgICAgIGN0eC5vbldvcmtmbG93RXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBXb3JrZmxvd1N1c3BlbnNpb24oY3R4Lmludm9jYXRpb25zUXVldWUsIGN0eC5nbG9iYWxUaGlzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0ZXBMb2dnZXIuZGVidWcoJ1N0ZXAgY29uc3VtZXIgZXZlbnQgcHJvY2Vzc2luZycsIHtcbiAgICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICAgIHN0ZXBOYW1lLFxuICAgICAgICAgIGFyZ3M6IGFyZ3Muam9pbignLCAnKSxcbiAgICAgICAgICBpbmNvbWluZ0NvcnJlbGF0aW9uSWQ6IGV2ZW50LmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgaXNNYXRjaDogY29ycmVsYXRpb25JZCA9PT0gZXZlbnQuY29ycmVsYXRpb25JZCxcbiAgICAgICAgICBldmVudFR5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGV2ZW50LmNvcnJlbGF0aW9uSWQgIT09IGNvcnJlbGF0aW9uSWQpIHtcbiAgICAgICAgICAvLyBXZSdyZSBub3QgaW50ZXJlc3RlZCBpbiB0aGlzIGV2ZW50IC0gdGhlIGNvcnJlbGF0aW9uSWQgYmVsb25ncyB0byBhIGRpZmZlcmVudCBlbnRpdHlcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50U3RlcE5hbWUgPVxuICAgICAgICAgICdldmVudERhdGEnIGluIGV2ZW50ICYmXG4gICAgICAgICAgZXZlbnQuZXZlbnREYXRhICYmXG4gICAgICAgICAgJ3N0ZXBOYW1lJyBpbiBldmVudC5ldmVudERhdGFcbiAgICAgICAgICAgID8gZXZlbnQuZXZlbnREYXRhLnN0ZXBOYW1lXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50U3RlcE5hbWUgPT09ICdzdHJpbmcnICYmIGV2ZW50U3RlcE5hbWUgIT09IHN0ZXBOYW1lKSB7XG4gICAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjdHgub25Xb3JrZmxvd0Vycm9yKFxuICAgICAgICAgICAgICBuZXcgUmVwbGF5RGl2ZXJnZW5jZUVycm9yKFxuICAgICAgICAgICAgICAgIGBSZXBsYXkgZGl2ZXJnZW5jZTogc3RlcCBldmVudCAke2V2ZW50LmV2ZW50VHlwZX0gZm9yICR7Y29ycmVsYXRpb25JZH0gYmVsb25ncyB0byBcIiR7ZXZlbnRTdGVwTmFtZX1cIiwgYnV0IHRoZSBjdXJyZW50IHN0ZXAgY29uc3VtZXIgaXMgXCIke3N0ZXBOYW1lfVwiYCxcbiAgICAgICAgICAgICAgICB7IGV2ZW50SWQ6IGV2ZW50LmV2ZW50SWQgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY3JlYXRlZCcpIHtcbiAgICAgICAgICAvLyBTdGVwIGhhcyBiZWVuIGNyZWF0ZWQgKHJlZ2lzdGVyZWQgZm9yIGV4ZWN1dGlvbikgLSBtYXJrIGFzIGhhdmluZyBldmVudFxuICAgICAgICAgIC8vIGJ1dCBrZWVwIGluIHF1ZXVlIHNvIHN1c3BlbnNpb24gaGFuZGxlciBrbm93cyB0byBxdWV1ZSBleGVjdXRpb24gd2l0aG91dFxuICAgICAgICAgIC8vIGNyZWF0aW5nIGEgZHVwbGljYXRlIHN0ZXBfY3JlYXRlZCBldmVudFxuICAgICAgICAgIGNvbnN0IHF1ZXVlSXRlbSA9IGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmdldChjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgICBpZiAoIXF1ZXVlSXRlbSB8fCBxdWV1ZUl0ZW0udHlwZSAhPT0gJ3N0ZXAnKSB7XG4gICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyBldmVudCBsb2cgY29ycnVwdGlvbiAtIHN0ZXBfY3JlYXRlZCByZWNlaXZlZFxuICAgICAgICAgICAgLy8gYnV0IHRoZSBzdGVwIHdhcyBuZXZlciBpbnZva2VkIGluIHRoZSB3b3JrZmxvdyBkdXJpbmcgcmVwbGF5LlxuICAgICAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICBuZXcgUmVwbGF5RGl2ZXJnZW5jZUVycm9yKFxuICAgICAgICAgICAgICAgICAgYFJlcGxheSBkaXZlcmdlbmNlOiBzdGVwICR7Y29ycmVsYXRpb25JZH0gKCR7c3RlcE5hbWV9KSBjcmVhdGVkIGJ1dCBub3QgZm91bmQgaW4gaW52b2NhdGlvbiBxdWV1ZWAsXG4gICAgICAgICAgICAgICAgICB7IGV2ZW50SWQ6IGV2ZW50LmV2ZW50SWQgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHF1ZXVlSXRlbS5oYXNDcmVhdGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgIC8vIENvbnRpbnVlIHdhaXRpbmcgZm9yIHN0ZXBfc3RhcnRlZC9zdGVwX2NvbXBsZXRlZC9zdGVwX2ZhaWxlZCBldmVudHNcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX3N0YXJ0ZWQnKSB7XG4gICAgICAgICAgLy8gU3RlcCB3YXMgc3RhcnRlZCBidXQgaXMgbm90IHRlcm1pbmFsIOKAlCBpdCBzdGF5cyBpbiB0aGVcbiAgICAgICAgICAvLyBpbnZvY2F0aW9uUXVldWUgc28gdGhlIHN1c3BlbnNpb24gaGFuZGxlciBjYW4gZGVjaWRlIGhvdyB0b1xuICAgICAgICAgIC8vIGRpc3BhdGNoIGl0LiBSZWNvcmQgdGhlIGlubGluZS1vd25lcnNoaXAgc3RhdGUgZnJvbSB0aGUgZXZlbnQ6XG4gICAgICAgICAgLy8gdGhlIExBVEVTVCBzdGFydCB3aW5zLCBzbyBhIHN0YW1wZWQgc3RhcnQgKGlubGluZSBleGVjdXRpb24gb3JcbiAgICAgICAgICAvLyBvd25lciByZWNvdmVyeSkgc2V0cyB0aGUgb3duZXIgYW5kIGFuIHVuc3RhbXBlZCBvbmUgKGEgcmV0cnlcbiAgICAgICAgICAvLyBhdHRlbXB0IGRyaXZlbiBieSBhIHF1ZXVlZCBzdGVwIG1lc3NhZ2UsIG9yIGFuIG9sZGVyIHJ1bnRpbWUpXG4gICAgICAgICAgLy8gY2xlYXJzIGl0LiBUaGUgZGlzcGF0Y2ggbG9vcCB1c2VzIHRoaXMgdG8gc3VwcHJlc3MgdGhlIGltbWVkaWF0ZVxuICAgICAgICAgIC8vIHJlcXVldWUgb2YgYSBzdGVwIHdob3NlIG93bmluZyBpbnZvY2F0aW9uIG1heSBzdGlsbCBiZSBydW5uaW5nXG4gICAgICAgICAgLy8gaXRzIGJvZHkgKHZlcmNlbC93b3JrZmxvdyMyNzgwKS5cbiAgICAgICAgICBjb25zdCBxdWV1ZUl0ZW0gPSBjdHguaW52b2NhdGlvbnNRdWV1ZS5nZXQoY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgaWYgKHF1ZXVlSXRlbSAmJiBxdWV1ZUl0ZW0udHlwZSA9PT0gJ3N0ZXAnKSB7XG4gICAgICAgICAgICBjb25zdCBvd25lck1lc3NhZ2VJZCA9XG4gICAgICAgICAgICAgICdldmVudERhdGEnIGluIGV2ZW50ICYmXG4gICAgICAgICAgICAgIGV2ZW50LmV2ZW50RGF0YSAmJlxuICAgICAgICAgICAgICAnb3duZXJNZXNzYWdlSWQnIGluIGV2ZW50LmV2ZW50RGF0YSAmJlxuICAgICAgICAgICAgICB0eXBlb2YgZXZlbnQuZXZlbnREYXRhLm93bmVyTWVzc2FnZUlkID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gZXZlbnQuZXZlbnREYXRhLm93bmVyTWVzc2FnZUlkXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBxdWV1ZUl0ZW0ub3duZXJNZXNzYWdlSWQgPSBvd25lck1lc3NhZ2VJZDtcbiAgICAgICAgICAgIHF1ZXVlSXRlbS5sYXN0U3RhcnRlZEF0ID0gK2V2ZW50LmNyZWF0ZWRBdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuQ29uc3VtZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnc3RlcF9yZXRyeWluZycpIHtcbiAgICAgICAgICAvLyBTdGVwIGlzIGJlaW5nIHJldHJpZWQg4oCUIGNvbnN1bWUgdGhlIGV2ZW50IGFuZCB3YWl0IGZvciB0aGUgbmV4dFxuICAgICAgICAgIC8vIHN0ZXBfc3RhcnRlZC4gRnJvbSBoZXJlIG9uIHRoZSBzdGVwIGlzIHF1ZXVlLW93bmVkICh0aGUgZGVsYXllZFxuICAgICAgICAgIC8vIHJldHJ5IGhhbmRvZmYgbWVzc2FnZSwgb3IgdGhlIHJlcGxheSByZXF1ZXVlKSwgc28gaW5saW5lXG4gICAgICAgICAgLy8gb3duZXJzaGlwIGlzIHBlcm1hbmVudGx5IGxhcHNlZCBmb3IgdGhpcyBjb3JyZWxhdGlvbiBJRC5cbiAgICAgICAgICBjb25zdCBxdWV1ZUl0ZW0gPSBjdHguaW52b2NhdGlvbnNRdWV1ZS5nZXQoY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgaWYgKHF1ZXVlSXRlbSAmJiBxdWV1ZUl0ZW0udHlwZSA9PT0gJ3N0ZXAnKSB7XG4gICAgICAgICAgICBxdWV1ZUl0ZW0uc2F3UmV0cnlpbmcgPSB0cnVlO1xuICAgICAgICAgICAgcXVldWVJdGVtLm93bmVyTWVzc2FnZUlkID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2ZhaWxlZCcpIHtcbiAgICAgICAgICAvLyBUZXJtaW5hbCBzdGF0ZSAtIHdlIGNhbiByZW1vdmUgdGhlIGludm9jYXRpb25RdWV1ZSBpdGVtXG4gICAgICAgICAgY3R4Lmludm9jYXRpb25zUXVldWUuZGVsZXRlKGV2ZW50LmNvcnJlbGF0aW9uSWQpO1xuICAgICAgICAgIC8vIFN0ZXAgZmFpbGVkIC0gY2hhaW4gdGhyb3VnaCBwcm9taXNlUXVldWUgdG8gZW5zdXJlXG4gICAgICAgICAgLy8gZGV0ZXJtaW5pc3RpYyBvcmRlcmluZyBvZiBhbGwgcHJvbWlzZSByZXNvbHV0aW9ucy9yZWplY3Rpb25zLlxuICAgICAgICAgIC8vIEh5ZHJhdGUgdGhlIHNlcmlhbGl6ZWQgdGhyb3duIHZhbHVlIGZyb20gdGhlIGV2ZW50IGxvZyBzbyB0aGVcbiAgICAgICAgICAvLyBvcmlnaW5hbCB0eXBlIGlkZW50aXR5IGFuZCBjdXN0b20gcHJvcGVydGllcyBhcmUgcHJlc2VydmVkLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gVGhlIHJlamVjdGlvbiBpcyBhcyBicmFuY2gtZGVjaWRpbmcgYXMgYSBzdWNjZXNzOiBpdCBkZWNpZGVzXG4gICAgICAgICAgLy8gd2hldGhlciBhIGB0cnlgL2BjYXRjaGAgY29udGludWF0aW9uIHJ1bnMsIGFuZCB0aGVyZWZvcmUgd2hpY2hcbiAgICAgICAgICAvLyBVTElEcyB0aGUgZm9sbG93LXVwIGB1c2VTdGVwYCBjYWxscyBkcmF3LiBTbyBpdCBpcyBvcmRlcmVkIGJ5XG4gICAgICAgICAgLy8gZXZlbnQtbG9nIHBvc2l0aW9uIGV4YWN0bHkgbGlrZSBgc3RlcF9jb21wbGV0ZWRgIGJlbG93IOKAlCBzZWUgdGhlcmVcbiAgICAgICAgICAvLyBmb3Igd2h5IHRoZSBkZWZlcnJhbCBpcyBjYXB0dXJlZCBoZXJlLCBhdCBldmVudC1jb25zdW1wdGlvbiB0aW1lLFxuICAgICAgICAgIC8vIGFuZCBhd2FpdGVkIG9mZiB0aGUgc2VyaWFsIHF1ZXVlLlxuICAgICAgICAgIGNvbnN0IGV2ZW50SW5kZXggPSBjdHguZXZlbnRzQ29uc3VtZXIuZXZlbnRJbmRleDtcbiAgICAgICAgICBjb25zdCBiYXJyaWVyID0gcmVnaXN0ZXJEZWxpdmVyeUJhcnJpZXIoY3R4LCBldmVudEluZGV4LCAnc3RlcCcpO1xuICAgICAgICAgIGxldCByZWplY3Rpb246IHVua25vd247XG4gICAgICAgICAgY29uc3QgZWFybGllckRlbGl2ZXJlZCA9IGF3YWl0RWFybGllckRlbGl2ZXJpZXMoXG4gICAgICAgICAgICBjdHgsXG4gICAgICAgICAgICBldmVudEluZGV4LFxuICAgICAgICAgICAgJ3N0ZXAnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMrKztcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXBhcmVkID0gYXdhaXQgY3R4LnJlcGxheVBheWxvYWRDYWNoZS5wcmVwYXJlRXZlbnRQYXlsb2FkKFxuICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50SWQsXG4gICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBldmVudC5ldmVudERhdGEuZXJyb3JcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmVqZWN0aW9uID0gYXdhaXQgaHlkcmF0ZVN0ZXBFcnJvcihcbiAgICAgICAgICAgICAgICBldmVudC5ldmVudERhdGEuZXJyb3IsXG4gICAgICAgICAgICAgICAgY3R4LnJ1bklkLFxuICAgICAgICAgICAgICAgIGN0eC5lbmNyeXB0aW9uS2V5LFxuICAgICAgICAgICAgICAgIGN0eC5nbG9iYWxUaGlzLFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIHByZXBhcmVkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGNhdGNoIChoeWRyYXRlRXJyKSB7XG4gICAgICAgICAgICAgIC8vIElmIGh5ZHJhdGlvbiBmYWlscyBmb3IgYW55IHJlYXNvbiwgZmFsbCBiYWNrIHRvIGEgZ2VuZXJpY1xuICAgICAgICAgICAgICAvLyBGYXRhbEVycm9yIHNvIHRoZSB3b3JrZmxvdyBkb2Vzbid0IGhhbmcuIFRoaXMgc2hvdWxkIGJlXG4gICAgICAgICAgICAgIC8vIGV4dHJlbWVseSByYXJlIGluIHByYWN0aWNlIChjb3JydXB0ZWQgZXZlbnQgZGF0YSkuXG4gICAgICAgICAgICAgIHN0ZXBMb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBoeWRyYXRlIHN0ZXBfZmFpbGVkIGVycm9yJywge1xuICAgICAgICAgICAgICAgIGNvcnJlbGF0aW9uSWQ6IGV2ZW50LmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgICAgICAgZXJyb3I6XG4gICAgICAgICAgICAgICAgICBoeWRyYXRlRXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgPyBoeWRyYXRlRXJyLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmcoaHlkcmF0ZUVyciksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZWplY3Rpb24gPSBuZXcgRmF0YWxFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIGh5ZHJhdGUgc3RlcCBlcnJvcjogJHtcbiAgICAgICAgICAgICAgICAgIGh5ZHJhdGVFcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgICAgICAgICA/IGh5ZHJhdGVFcnIubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICA6IFN0cmluZyhoeWRyYXRlRXJyKVxuICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZvaWQgZWFybGllckRlbGl2ZXJlZC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgYmFycmllci5tYXJrRGVsaXZlcmVkKCk7XG4gICAgICAgICAgICAgIHJlamVjdChyZWplY3Rpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnc3RlcF9jb21wbGV0ZWQnKSB7XG4gICAgICAgICAgLy8gVGVybWluYWwgc3RhdGUgLSB3ZSBjYW4gcmVtb3ZlIHRoZSBpbnZvY2F0aW9uUXVldWUgaXRlbVxuICAgICAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmRlbGV0ZShldmVudC5jb3JyZWxhdGlvbklkKTtcblxuICAgICAgICAgIC8vIFN0ZXAgaGFzIGNvbXBsZXRlZCwgc28gcmVzb2x2ZSB0aGUgUHJvbWlzZSB3aXRoIHRoZSBjYWNoZWQgcmVzdWx0LlxuICAgICAgICAgIC8vIFRoZSBoeWRyYXRpb24gaXMgYXN5bmMgKGUuZy4sIGRlY3J5cHRpb24pLCBzbyB3ZSBjaGFpbiBpdCB0aHJvdWdoXG4gICAgICAgICAgLy8gY3R4LnByb21pc2VRdWV1ZSB0byBlbnN1cmUgdGhhdCBldmVuIGlmIGRlc2VyaWFsaXphdGlvblxuICAgICAgICAgIC8vIHRha2VzIHZhcmlhYmxlIHRpbWUsIHByb21pc2VzIHJlc29sdmUgaW4gZXZlbnQgbG9nIG9yZGVyLlxuICAgICAgICAgIC8vIEVhY2ggc3RlcCdzIGh5ZHJhdGlvbiArIHJlc29sdmUgd2FpdHMgZm9yIGFsbCBwcmlvciBoeWRyYXRpb25zXG4gICAgICAgICAgLy8gdG8gY29tcGxldGUgYmVmb3JlIGV4ZWN1dGluZywgcHJlc2VydmluZyBkZXRlcm1pbmlzdGljIG9yZGVyaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gUHJlcGFyZWQgc2VyaWFsaXplZCBieXRlcyBhcmUgc2hhcmVkIGFjcm9zcyByZXBsYXkgVk1zLCBidXQgZmluYWxcbiAgICAgICAgICAvLyBvYmplY3RzIGFyZSBhbHdheXMgcmV2aXZlZCBoZXJlIGluc2lkZSB0aGlzIG9yZGVyZWQgcXVldWUgc2xvdC5cbiAgICAgICAgICAvLyBPbmx5IGltbXV0YWJsZSBwcmltaXRpdmUgZmluYWwgdmFsdWVzIGJ5cGFzcyByZXZpdmFsIGVudGlyZWx5LlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSHlkcmF0aW9uIGNvc3QgaXMgd2hhdCBtYWtlcyB0aGlzIGRlbGl2ZXJ5J3MgdGltaW5nIHVuc3RhYmxlXG4gICAgICAgICAgLy8gYWNyb3NzIHJlcGxheXMgb2Ygb25lIGludm9jYXRpb246IHRoZSBmaXJzdCByZXBsYXkgcGF5cyB0aGUgZnVsbFxuICAgICAgICAgIC8vIGRlY3J5cHQvZGVjb21wcmVzcy9yZXZpdmUsIGxhdGVyIHJlcGxheXMgbWVtby1oaXQgYSBwcmltaXRpdmVcbiAgICAgICAgICAvLyByZXN1bHQgaW4gYFJlcGxheVBheWxvYWRDYWNoZWAgYW5kIGZpbmlzaCBpbiBhIGhvcCBvciB0d28uIEFcbiAgICAgICAgICAvLyB3b3JrZmxvdyBhd2FpdGluZyB0aGlzIHJlc3VsdCBvbiBvbmUgYnJhbmNoIGFuZCBhIGBzbGVlcCgpYCBvclxuICAgICAgICAgIC8vIGhvb2sgcGF5bG9hZCBvbiBhbm90aGVyIHdvdWxkIHRoZXJlZm9yZSBhbGxvY2F0ZSBpdHMgZm9sbG93LXVwXG4gICAgICAgICAgLy8gc3RlcCBVTElEcyBpbiBhIGRpZmZlcmVudCBvcmRlciBvbiBhIHdhcm0gcmVwbGF5IHRoYW4gdGhlXG4gICAgICAgICAgLy8gaW52b2NhdGlvbiB0aGF0IFdST1RFIHRob3NlIGBzdGVwX2NyZWF0ZWRgIGV2ZW50cyBkaWQg4oCUIGFcbiAgICAgICAgICAvLyBwZXJtYW5lbnQgYFJlcGxheURpdmVyZ2VuY2VFcnJvcmAuIFNvIHRoZSByZXN1bHQgaXMgb3JkZXJlZCBieVxuICAgICAgICAgIC8vIGV2ZW50LWxvZyBwb3NpdGlvbiB0aHJvdWdoIHRoZSBkZWxpdmVyeS1iYXJyaWVyIHJlZ2lzdHJ5IChzZWVcbiAgICAgICAgICAvLyBgY3R4LnBlbmRpbmdEZWxpdmVyeUJhcnJpZXJzYCk6XG4gICAgICAgICAgLy8gIC0gUmVnaXN0ZXIgYSAnc3RlcCcgYmFycmllciBhdCB0aGlzIGV2ZW50J3MgaW5kZXggc28gYVxuICAgICAgICAgIC8vICAgIExBVEVSLWluLWxvZyB3YWl0L2hvb2sgZGVsaXZlcnkgaXMgaGFuZGVkIG92ZXIgb25seSBhZnRlciBpdC5cbiAgICAgICAgICAvLyAgLSBIeWRyYXRlIGluc2lkZSB0aGlzIHNlcmlhbCBxdWV1ZSBzbG90IChrZWVwaW5nIGFzeW5jXG4gICAgICAgICAgLy8gICAgZGVzZXJpYWxpemF0aW9uIGluIGV2ZW50LWxvZyBvcmRlcikgYnV0IG9ubHkgQ0FQVFVSRSB0aGVcbiAgICAgICAgICAvLyAgICBvdXRjb21lOyB0aGVuIGRlZmVyIGJlaGluZCBldmVyeSBFQVJMSUVSLWluLWxvZyB3YWl0IGFuZCBob29rXG4gICAgICAgICAgLy8gICAgZGVsaXZlcnkgYmVmb3JlIHJlc29sdmluZywgYW5kIG1hcmsgdGhpcyBzdGVwIGRlbGl2ZXJlZC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFRoZSBkZWZlcnJhbCBpcyBjYXB0dXJlZCBIRVJFLCB3aGlsZSBjb25zdW1pbmcgdGhlIGV2ZW50LCBhbmQgbm90XG4gICAgICAgICAgLy8gaW5zaWRlIHRoZSBxdWV1ZSBzbG90LiBUd28gcmVhc29ucywgYm90aCBsb2FkLWJlYXJpbmc6XG4gICAgICAgICAgLy8gIC0gRGV0ZXJtaW5pc206IHRoZSBzZXQgb2YgZWFybGllciBkZWxpdmVyaWVzIGlzIHRoZW4gYSBmdW5jdGlvbiBvZlxuICAgICAgICAgIC8vICAgIGxvZyBwb3NpdGlvbiBhbG9uZS4gQ2FwdHVyZWQgbGF0ZXIgaXQgd291bGQgZGVwZW5kIG9uIGhvdyBtdWNoXG4gICAgICAgICAgLy8gICAgaHlkcmF0aW9uIHRoZSBlYXJsaWVyIGRlbGl2ZXJpZXMgaGFkIGFscmVhZHkgZmluaXNoZWQg4oCUIHRoZSB2ZXJ5XG4gICAgICAgICAgLy8gICAgY291cGxpbmcgdGhpcyBiYXJyaWVyIGV4aXN0cyB0byByZW1vdmUuXG4gICAgICAgICAgLy8gIC0gQ292ZXJhZ2U6IGFuIGVhcmxpZXIgZGVsaXZlcnkgd2hvc2Ugb3duIGh5ZHJhdGlvbiBzbG90IHJ1bnNcbiAgICAgICAgICAvLyAgICBmaXJzdCBvbiB0aGlzIHNlcmlhbCBxdWV1ZSBoYXMgdXN1YWxseSBhbHJlYWR5IHJlc29sdmVkIChhbmQgc29cbiAgICAgICAgICAvLyAgICBkZXJlZ2lzdGVyZWQgaXRzIGJhcnJpZXIpIGJ5IHRoZSB0aW1lIGEgbGF0ZXIgc2xvdCBzdGFydHMuIFJlYWRcbiAgICAgICAgICAvLyAgICBhdCBzbG90IHN0YXJ0LCBpdHMgYmFycmllciB3b3VsZCBiZSBpbnZpc2libGUgYW5kIHRoaXMgc3RlcFxuICAgICAgICAgIC8vICAgIHdvdWxkIG5vdCBkZWZlciBhdCBhbGwuIEV2ZXJ5IGV2ZW50IGluIG9uZSBkcmFpbiB3aW5kb3cgaXNcbiAgICAgICAgICAvLyAgICBjb25zdW1lZCBiZWZvcmUgYW55IHNsb3QgcnVucywgc28gY2FwdHVyaW5nIGF0IGNvbnN1bXB0aW9uIHRpbWVcbiAgICAgICAgICAvLyAgICBzZWVzIGFsbCBvZiB0aGVtLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gVGhlIGRlZmVycmFsIHJ1bnMgT0ZGIHRoZSBzZXJpYWwgcXVldWU6IGl0IG1heSB3YWl0IG9uIGFuIGVhcmxpZXJcbiAgICAgICAgICAvLyB3YWl0L2hvb2sgZGVsaXZlcnkgd2hvc2Ugb3duIHJlc29sdXRpb24gaXMgZHJpdmVuIGJ5IHRoaXMgcXVldWUsXG4gICAgICAgICAgLy8gYW5kIGJsb2NraW5nIGEgcXVldWUgc2xvdCBvbiB0aGF0IHdvdWxkIGRlYWRsb2NrIHRoZSBxdWV1ZSAodGhlXG4gICAgICAgICAgLy8gc2FtZSBjb25zdHJhaW50IHNsZWVwLnRzIGFuZCBob29rLnRzIGRvY3VtZW50KS4gYHBlbmRpbmdEZWxpdmVyaWVzYFxuICAgICAgICAgIC8vIGlzIGxpa2V3aXNlIHJlbGVhc2VkIGluc2lkZSB0aGUgc2xvdCwgYmVmb3JlIHRoZSBkZXRhY2hlZCBkZWZlciwgc29cbiAgICAgICAgICAvLyBgc2NoZWR1bGVXaGVuSWRsZWAgY2FuIHN0aWxsIHJlYWNoIGlkbGUgYW5kIHJldGlyZSB0aGUgYmFycmllcnNcbiAgICAgICAgICAvLyB0aGlzIGRlZmVycmFsIG1heSBiZSB3YWl0aW5nIG9uLlxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEV2ZW50SWQgPSBldmVudC5ldmVudElkO1xuICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRSZXN1bHQgPSBldmVudC5ldmVudERhdGEucmVzdWx0O1xuICAgICAgICAgIGNvbnN0IGV2ZW50SW5kZXggPSBjdHguZXZlbnRzQ29uc3VtZXIuZXZlbnRJbmRleDtcbiAgICAgICAgICBjb25zdCBiYXJyaWVyID0gcmVnaXN0ZXJEZWxpdmVyeUJhcnJpZXIoY3R4LCBldmVudEluZGV4LCAnc3RlcCcpO1xuICAgICAgICAgIGxldCBvdXRjb21lOlxuICAgICAgICAgICAgfCB7IG9rOiB0cnVlOyB2YWx1ZTogUmVzdWx0IH1cbiAgICAgICAgICAgIHwgeyBvazogZmFsc2U7IGVycm9yOiB1bmtub3duIH07XG4gICAgICAgICAgY29uc3QgZWFybGllckRlbGl2ZXJlZCA9IGF3YWl0RWFybGllckRlbGl2ZXJpZXMoXG4gICAgICAgICAgICBjdHgsXG4gICAgICAgICAgICBldmVudEluZGV4LFxuICAgICAgICAgICAgJ3N0ZXAnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMrKztcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVkUmVzdWx0ID0gYXdhaXQgY3R4LnJlcGxheVBheWxvYWRDYWNoZS5nZXRTdGVwUmVzdWx0KFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlZEV2ZW50SWQsXG4gICAgICAgICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcHJlcGFyZWQgPVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjdHgucmVwbGF5UGF5bG9hZENhY2hlLnByZXBhcmVFdmVudFBheWxvYWQoXG4gICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkRXZlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAncmVzdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgY3R4LnJ1bklkLFxuICAgICAgICAgICAgICAgICAgICBjdHguZW5jcnlwdGlvbktleSxcbiAgICAgICAgICAgICAgICAgICAgY3R4Lmdsb2JhbFRoaXMsXG4gICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICBwcmVwYXJlZFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIG91dGNvbWUgPSB7IG9rOiB0cnVlLCB2YWx1ZTogaHlkcmF0ZWRSZXN1bHQgYXMgUmVzdWx0IH07XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBvdXRjb21lID0geyBvazogZmFsc2UsIGVycm9yIH07XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZvaWQgZWFybGllckRlbGl2ZXJlZC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgYmFycmllci5tYXJrRGVsaXZlcmVkKCk7XG4gICAgICAgICAgICAgIGlmIChvdXRjb21lLm9rKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvdXRjb21lLnZhbHVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWplY3Qob3V0Y29tZS5lcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyByZXBsYXkgaW5zdGFsbGVkIGEgZGlmZmVyZW50IGNvbnN1bWVyIHRoYW4gdGhlIHN0b3JlZCBldmVudCBuZWVkcy5cbiAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgIG5ldyBSZXBsYXlEaXZlcmdlbmNlRXJyb3IoXG4gICAgICAgICAgICAgIGBSZXBsYXkgZGl2ZXJnZW5jZTogVW5leHBlY3RlZCBldmVudCB0eXBlIGZvciBzdGVwICR7Y29ycmVsYXRpb25JZH0gKG5hbWU6ICR7c3RlcE5hbWV9KSBcIiR7ZXZlbnQuZXZlbnRUeXBlfVwiYCxcbiAgICAgICAgICAgICAgeyBldmVudElkOiBldmVudC5ldmVudElkIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfTtcblxuICAgIC8vIEVuc3VyZSB0aGUgXCJuYW1lXCIgcHJvcGVydHkgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgc3RlcCBmdW5jdGlvbiBuYW1lXG4gICAgLy8gRXh0cmFjdCBmdW5jdGlvbiBuYW1lIGZyb20gc3RlcE5hbWUgKGZvcm1hdDogXCJzdGVwLy9maWxlcGF0aC8vZnVuY3Rpb25OYW1lXCIpXG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gc3RlcE5hbWUuc3BsaXQoJy8vJykucG9wKCk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0ZXBGdW5jdGlvbiwgJ25hbWUnLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb25OYW1lLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIHRoZSBzdGVwIGZ1bmN0aW9uIGlkZW50aWZpZXIgdG8gdGhlIHN0ZXAgZnVuY3Rpb24gZm9yIHNlcmlhbGl6YXRpb25cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RlcEZ1bmN0aW9uLCAnc3RlcElkJywge1xuICAgICAgdmFsdWU6IHN0ZXBOYW1lLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gU3RvcmUgdGhlIGNsb3N1cmUgdmFyaWFibGVzIGZ1bmN0aW9uIGZvciBzZXJpYWxpemF0aW9uLiBNYXJrIGl0IHNvIHRoZVxuICAgIC8vIHN0ZXAtZnVuY3Rpb24gcmVkdWNlciBjYW4gdGVsbCBhIGZ1bmN0aW9uIHRoYXQgY2FtZSB0aHJvdWdoIGB1c2VTdGVwYFxuICAgIC8vIGFwYXJ0IGZyb20gb25lIHdvcmtmbG93IGNvZGUgYXNzaWduZWQgb3ZlciB0aGUgcHJvcGVydHkgYWZ0ZXJ3YXJkcyDigJRcbiAgICAvLyB0aGUgcmVkdWNlciBoYXMgdG8gaW52b2tlIHdoYXRldmVyIGlzIHRoZXJlLCBhbmQgb25seSB0aGUgbGF0dGVyIGlzXG4gICAgLy8gd29ydGggcmVwb3J0aW5nLiBTZWUgYG1hcmtVc2VTdGVwQ2xvc3VyZUZuYCBmb3IgdGhlIGxpbWl0cyBvZiB3aGF0XG4gICAgLy8gdGhpcyBwcm92ZXMuXG4gICAgaWYgKGNsb3N1cmVWYXJzRm4pIHtcbiAgICAgIG1hcmtVc2VTdGVwQ2xvc3VyZUZuKGNsb3N1cmVWYXJzRm4pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0ZXBGdW5jdGlvbiwgJ19fY2xvc3VyZVZhcnNGbicsIHtcbiAgICAgICAgdmFsdWU6IGNsb3N1cmVWYXJzRm4sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZSBgLmJpbmRgIHNvIHRoZSBib3VuZCBmdW5jdGlvbiBwcmVzZXJ2ZXMgdGhlIHN0ZXAgcHJveHlcbiAgICAvLyBtZXRhZGF0YSB0aGF0IGBnZXRTdGVwRnVuY3Rpb25SZWR1Y2VyYCByZWxpZXMgb24gZm9yIHNlcmlhbGl6YXRpb24uXG4gICAgLy8gV2l0aG91dCB0aGlzIG92ZXJyaWRlLCBgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRgIHdvdWxkIHJldHVybiBhIG5ld1xuICAgIC8vIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCBpbmhlcml0IGBzdGVwSWRgLCBgX19jbG9zdXJlVmFyc0ZuYCwgb3IgYW55XG4gICAgLy8gb3RoZXIgb3duIHByb3BlcnRpZXMgb2YgdGhlIG9yaWdpbmFsIHByb3h5IOKAlCBzbyB0aGUgU3RlcEZ1bmN0aW9uXG4gICAgLy8gcmVkdWNlciB3b3VsZCByZWZ1c2UgdG8gc2VyaWFsaXplIGl0IChpdCdkIGxvb2sgbGlrZSBhIHBsYWluXG4gICAgLy8gZnVuY3Rpb24pLCBhbmQgYSBgdXNlU3RlcCguLi4pLmJpbmQodGhpcylgIHByb3h5IHRoYXQgZmxvd2VkXG4gICAgLy8gdGhyb3VnaCB3b3JrZmxvdyBzZXJpYWxpemF0aW9uIHdvdWxkIHNpbGVudGx5IGJyZWFrLlxuICAgIC8vXG4gICAgLy8gVGhlIG92ZXJyaWRlIHN0YXNoZXMgdGhyZWUgcGllY2VzIG9mIHN0YXRlIG9uIHRoZSBib3VuZCBmdW5jdGlvbiBzb1xuICAgIC8vIHRoZSByb3VuZCB0cmlwIGlzIGZhaXRoZnVsOlxuICAgIC8vICAgLSBgc3RlcElkYCAgICAgICAgICAgICDigJQgYWxyZWFkeSBzZXQgb24gdGhlIG9yaWdpbmFsIHByb3h5LlxuICAgIC8vICAgLSBgX19jbG9zdXJlVmFyc0ZuYCAgICDigJQgb25seSB3aGVuIHRoZSBvcmlnaW5hbCBwcm94eSBoYWQgb25lLlxuICAgIC8vICAgLSBgX19ib3VuZFRoaXNgICAgICAgICDigJQgdGhlIHJlY2VpdmVyIHBhc3NlZCB0byBgLmJpbmQodGhpc0FyZywg4oCmKWAuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzIHNldCAoZXZlbiB3aGVuIGB0aGlzQXJnYCBpc1xuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBudWxsYC9gdW5kZWZpbmVkYCkgc28gdGhlIHJlZHVjZXIgY2FuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluZ3Vpc2ggXCJ3YXMgYm91bmRcIiBmcm9tIFwid2Fzbid0XCIuXG4gICAgLy8gICAtIGBfX2JvdW5kQXJnc2AgICAgICAgIOKAlCBvbmx5IHdoZW4gdGhlIHVzZXIgc3VwcGxpZWQgcHJlZmlsbGVkXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIChgLmJpbmQodGhpc0FyZywgeCwgeSlgKS4gVGhlXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1dDIHBsdWdpbiBvbmx5IGV2ZXIgZW1pdHMgYC5iaW5kKHRoaXMpYFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LCBzbyB0aGlzIGlzIHJhcmUgaW4gcHJhY3RpY2U7IHdlXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGwgY2FwdHVyZSBpdCBzbyB0aGUgcGFydGlhbCBhcmdzXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vydml2ZSBzZXJpYWxpemF0aW9uIHJhdGhlciB0aGFuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsZW50bHkgZGlzYXBwZWFyaW5nIG9uIHRoZSBzdGVwIHNpZGUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0ZXBGdW5jdGlvbiwgJ2JpbmQnLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gKFxuICAgICAgICB0aGlzOiB0eXBlb2Ygc3RlcEZ1bmN0aW9uLFxuICAgICAgICB0aGlzQXJnOiB1bmtub3duLFxuICAgICAgICAuLi5wYXJ0aWFsQXJnczogdW5rbm93bltdXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgYm91bmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgdGhpc0FyZyxcbiAgICAgICAgICAuLi5wYXJ0aWFsQXJnc1xuICAgICAgICApO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsICdzdGVwSWQnLCB7XG4gICAgICAgICAgdmFsdWU6IHN0ZXBOYW1lLFxuICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNsb3N1cmVWYXJzRm4pIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsICdfX2Nsb3N1cmVWYXJzRm4nLCB7XG4gICAgICAgICAgICB2YWx1ZTogY2xvc3VyZVZhcnNGbixcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsICdfX2JvdW5kVGhpcycsIHtcbiAgICAgICAgICB2YWx1ZTogdGhpc0FyZyxcbiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwYXJ0aWFsQXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdW5kLCAnX19ib3VuZEFyZ3MnLCB7XG4gICAgICAgICAgICB2YWx1ZTogcGFydGlhbEFyZ3MsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJvdW5kO1xuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdGVwRnVuY3Rpb247XG4gIH07XG59XG4iXX0=
362
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFnQyxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixHQUVqQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQWdDO0lBQzVELE9BQU8sU0FBUyxPQUFPLENBQ3JCLFFBQWdCLEVBQ2hCLGFBQWtEO1FBRWxELHVGQUF1RjtRQUN2RixNQUFNLFlBQVksR0FBRyxVQUVuQixHQUFHLElBQVU7WUFFYixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxhQUFhLEVBQVUsQ0FBQztZQUU3RCxNQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBRW5ELE1BQU0sU0FBUyxHQUE0QjtnQkFDekMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osYUFBYTtnQkFDYixRQUFRO2dCQUNSLElBQUk7YUFDTCxDQUFDO1lBRUYsdUVBQXVFO1lBQ3ZFLDhEQUE4RDtZQUM5RCxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElB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QUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO3dCQUMxQyxLQUFLLEVBQUUsV0FBVzt3QkFDbEIsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLFlBQVksRUFBRSxLQUFLO3FCQUNwQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYXRhbEVycm9yLCBSZXBsYXlEaXZlcmdlbmNlRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB7IHdpdGhSZXNvbHZlcnMgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHsgRXZlbnRDb25zdW1lclJlc3VsdCB9IGZyb20gJy4vZXZlbnRzLWNvbnN1bWVyLmpzJztcbmltcG9ydCB7IHR5cGUgU3RlcEludm9jYXRpb25RdWV1ZUl0ZW0sIFdvcmtmbG93U3VzcGVuc2lvbiB9IGZyb20gJy4vZ2xvYmFsLmpzJztcbmltcG9ydCB7IHN0ZXBMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQge1xuICBhd2FpdEVhcmxpZXJEZWxpdmVyaWVzLFxuICByZWdpc3RlckRlbGl2ZXJ5QmFycmllcixcbiAgc2NoZWR1bGVXaGVuSWRsZSxcbiAgdHlwZSBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQsXG59IGZyb20gJy4vcHJpdmF0ZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlcmlhbGl6YWJsZSB9IGZyb20gJy4vc2NoZW1hcy5qcyc7XG5pbXBvcnQgeyBtYXJrVXNlU3RlcENsb3N1cmVGbiB9IGZyb20gJy4vc2VyaWFsaXphdGlvbi9oYXJkZW5lZC5qcyc7XG5pbXBvcnQgeyBoeWRyYXRlU3RlcEVycm9yLCBoeWRyYXRlU3RlcFJldHVyblZhbHVlIH0gZnJvbSAnLi9zZXJpYWxpemF0aW9uLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVzZVN0ZXAoY3R4OiBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVzZVN0ZXA8QXJncyBleHRlbmRzIFNlcmlhbGl6YWJsZVtdLCBSZXN1bHQ+KFxuICAgIHN0ZXBOYW1lOiBzdHJpbmcsXG4gICAgY2xvc3VyZVZhcnNGbj86ICgpID0+IFJlY29yZDxzdHJpbmcsIFNlcmlhbGl6YWJsZT5cbiAgKSB7XG4gICAgLy8gVXNlIGEgcmVndWxhciBmdW5jdGlvbiAobm90IGFycm93KSBzbyB3ZSBjYW4gY2FwdHVyZSBgdGhpc2Agd2hlbiBpbnZva2VkIGFzIGEgbWV0aG9kXG4gICAgY29uc3Qgc3RlcEZ1bmN0aW9uID0gZnVuY3Rpb24gKFxuICAgICAgdGhpczogdW5rbm93bixcbiAgICAgIC4uLmFyZ3M6IEFyZ3NcbiAgICApOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgICAgY29uc3QgeyBwcm9taXNlLCByZXNvbHZlLCByZWplY3QgfSA9IHdpdGhSZXNvbHZlcnM8UmVzdWx0PigpO1xuXG4gICAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gYHN0ZXBfJHtjdHguZ2VuZXJhdGVVbGlkKCl9YDtcblxuICAgICAgY29uc3QgcXVldWVJdGVtOiBTdGVwSW52b2NhdGlvblF1ZXVlSXRlbSA9IHtcbiAgICAgICAgdHlwZTogJ3N0ZXAnLFxuICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICBzdGVwTmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgIH07XG5cbiAgICAgIC8vIENhcHR1cmUgYHRoaXNgIHZhbHVlIGZvciBtZXRob2QgaW52b2NhdGlvbnMgKGUuZy4sIE15Q2xhc3MubWV0aG9kKCkpXG4gICAgICAvLyBPbmx5IGluY2x1ZGUgaWYgYHRoaXNgIGlzIGRlZmluZWQgYW5kIG5vdCB0aGUgZ2xvYmFsIG9iamVjdFxuICAgICAgaWYgKHRoaXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzICE9PSBudWxsICYmIHRoaXMgIT09IGdsb2JhbFRoaXMpIHtcbiAgICAgICAgcXVldWVJdGVtLnRoaXNWYWwgPSB0aGlzIGFzIFNlcmlhbGl6YWJsZTtcbiAgICAgIH1cblxuICAgICAgLy8gSW52b2tlIHRoZSBjbG9zdXJlIHZhcmlhYmxlcyBmdW5jdGlvbiB0byBnZXQgdGhlIGNsb3N1cmUgc2NvcGVcbiAgICAgIGNvbnN0IGNsb3N1cmVWYXJzID0gY2xvc3VyZVZhcnNGbj8uKCk7XG4gICAgICBpZiAoY2xvc3VyZVZhcnMpIHtcbiAgICAgICAgcXVldWVJdGVtLmNsb3N1cmVWYXJzID0gY2xvc3VyZVZhcnM7XG4gICAgICB9XG5cbiAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLnNldChjb3JyZWxhdGlvbklkLCBxdWV1ZUl0ZW0pO1xuXG4gICAgICBzdGVwTG9nZ2VyLmRlYnVnKCdTdGVwIGNvbnN1bWVyIHNldHVwJywge1xuICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICBzdGVwTmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgIH0pO1xuICAgICAgY3R4LmV2ZW50c0NvbnN1bWVyLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZXZlbnRzLCBzbyB0aGlzIHN0ZXAgaGFzIGVpdGhlciBub3QgYmVlbiBydW4gb3IgaXMgY3VycmVudGx5IHJ1bm5pbmcuXG4gICAgICAgICAgLy8gQ3J1Y2lhbGx5LCBpZiB3ZSBnb3QgaGVyZSwgdGhlbiB0aGlzIHN0ZXAgUHJvbWlzZSBkb2VzXG4gICAgICAgICAgLy8gbm90IHJlc29sdmUgc28gdGhhdCB0aGUgdXNlciB3b3JrZmxvdyBjb2RlIGRvZXMgbm90IHByb2NlZWQgYW55IGZ1cnRoZXIuXG4gICAgICAgICAgLy8gTm90aWZ5IHRoZSB3b3JrZmxvdyBoYW5kbGVyIHRoYXQgdGhpcyBzdGVwIGhhcyBub3QgYmVlbiBydW4gLyBoYXMgbm90IGNvbXBsZXRlZCB5ZXQuXG4gICAgICAgICAgY29uc3QgZ2VuZXJhdGlvbiA9IGN0eC5zdXNwZW5zaW9uR2VuZXJhdGlvbjtcbiAgICAgICAgICBzY2hlZHVsZVdoZW5JZGxlKGN0eCwgKCkgPT4ge1xuICAgICAgICAgICAgLy8gQSByZXRhaW5lZCBzZXNzaW9uIG1heSBoYXZlIHJlc3VtZWQgcGFzdCB0aGlzIGJvdW5kYXJ5IHdoaWxlXG4gICAgICAgICAgICAvLyB0aGUgdGltZXIgd2FzIHF1ZXVlZDsgYSBzdGFsZSBzaWduYWwgbXVzdCBub3QgZmlyZS5cbiAgICAgICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSBjdHguc3VzcGVuc2lvbkdlbmVyYXRpb24pIHJldHVybjtcbiAgICAgICAgICAgIGN0eC5vbldvcmtmbG93RXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBXb3JrZmxvd1N1c3BlbnNpb24oY3R4Lmludm9jYXRpb25zUXVldWUsIGN0eC5nbG9iYWxUaGlzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0ZXBMb2dnZXIuZGVidWcoJ1N0ZXAgY29uc3VtZXIgZXZlbnQgcHJvY2Vzc2luZycsIHtcbiAgICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICAgIHN0ZXBOYW1lLFxuICAgICAgICAgIGFyZ3M6IGFyZ3Muam9pbignLCAnKSxcbiAgICAgICAgICBpbmNvbWluZ0NvcnJlbGF0aW9uSWQ6IGV2ZW50LmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgaXNNYXRjaDogY29ycmVsYXRpb25JZCA9PT0gZXZlbnQuY29ycmVsYXRpb25JZCxcbiAgICAgICAgICBldmVudFR5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGV2ZW50LmNvcnJlbGF0aW9uSWQgIT09IGNvcnJlbGF0aW9uSWQpIHtcbiAgICAgICAgICAvLyBXZSdyZSBub3QgaW50ZXJlc3RlZCBpbiB0aGlzIGV2ZW50IC0gdGhlIGNvcnJlbGF0aW9uSWQgYmVsb25ncyB0byBhIGRpZmZlcmVudCBlbnRpdHlcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50U3RlcE5hbWUgPVxuICAgICAgICAgICdldmVudERhdGEnIGluIGV2ZW50ICYmXG4gICAgICAgICAgZXZlbnQuZXZlbnREYXRhICYmXG4gICAgICAgICAgJ3N0ZXBOYW1lJyBpbiBldmVudC5ldmVudERhdGFcbiAgICAgICAgICAgID8gZXZlbnQuZXZlbnREYXRhLnN0ZXBOYW1lXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50U3RlcE5hbWUgPT09ICdzdHJpbmcnICYmIGV2ZW50U3RlcE5hbWUgIT09IHN0ZXBOYW1lKSB7XG4gICAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjdHgub25Xb3JrZmxvd0Vycm9yKFxuICAgICAgICAgICAgICBuZXcgUmVwbGF5RGl2ZXJnZW5jZUVycm9yKFxuICAgICAgICAgICAgICAgIGBSZXBsYXkgZGl2ZXJnZW5jZTogc3RlcCBldmVudCAke2V2ZW50LmV2ZW50VHlwZX0gZm9yICR7Y29ycmVsYXRpb25JZH0gYmVsb25ncyB0byBcIiR7ZXZlbnRTdGVwTmFtZX1cIiwgYnV0IHRoZSBjdXJyZW50IHN0ZXAgY29uc3VtZXIgaXMgXCIke3N0ZXBOYW1lfVwiYCxcbiAgICAgICAgICAgICAgICB7IGV2ZW50SWQ6IGV2ZW50LmV2ZW50SWQgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY3JlYXRlZCcpIHtcbiAgICAgICAgICAvLyBTdGVwIGhhcyBiZWVuIGNyZWF0ZWQgKHJlZ2lzdGVyZWQgZm9yIGV4ZWN1dGlvbikgLSBtYXJrIGFzIGhhdmluZyBldmVudFxuICAgICAgICAgIC8vIGJ1dCBrZWVwIGluIHF1ZXVlIHNvIHN1c3BlbnNpb24gaGFuZGxlciBrbm93cyB0byBxdWV1ZSBleGVjdXRpb24gd2l0aG91dFxuICAgICAgICAgIC8vIGNyZWF0aW5nIGEgZHVwbGljYXRlIHN0ZXBfY3JlYXRlZCBldmVudFxuICAgICAgICAgIGNvbnN0IHF1ZXVlSXRlbSA9IGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmdldChjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgICBpZiAoIXF1ZXVlSXRlbSB8fCBxdWV1ZUl0ZW0udHlwZSAhPT0gJ3N0ZXAnKSB7XG4gICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyBldmVudCBsb2cgY29ycnVwdGlvbiAtIHN0ZXBfY3JlYXRlZCByZWNlaXZlZFxuICAgICAgICAgICAgLy8gYnV0IHRoZSBzdGVwIHdhcyBuZXZlciBpbnZva2VkIGluIHRoZSB3b3JrZmxvdyBkdXJpbmcgcmVwbGF5LlxuICAgICAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICBuZXcgUmVwbGF5RGl2ZXJnZW5jZUVycm9yKFxuICAgICAgICAgICAgICAgICAgYFJlcGxheSBkaXZlcmdlbmNlOiBzdGVwICR7Y29ycmVsYXRpb25JZH0gKCR7c3RlcE5hbWV9KSBjcmVhdGVkIGJ1dCBub3QgZm91bmQgaW4gaW52b2NhdGlvbiBxdWV1ZWAsXG4gICAgICAgICAgICAgICAgICB7IGV2ZW50SWQ6IGV2ZW50LmV2ZW50SWQgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHF1ZXVlSXRlbS5oYXNDcmVhdGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgIC8vIENvbnRpbnVlIHdhaXRpbmcgZm9yIHN0ZXBfc3RhcnRlZC9zdGVwX2NvbXBsZXRlZC9zdGVwX2ZhaWxlZCBldmVudHNcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX3N0YXJ0ZWQnKSB7XG4gICAgICAgICAgLy8gU3RlcCB3YXMgc3RhcnRlZCBidXQgaXMgbm90IHRlcm1pbmFsIOKAlCBpdCBzdGF5cyBpbiB0aGVcbiAgICAgICAgICAvLyBpbnZvY2F0aW9uUXVldWUgc28gdGhlIHN1c3BlbnNpb24gaGFuZGxlciBjYW4gZGVjaWRlIGhvdyB0b1xuICAgICAgICAgIC8vIGRpc3BhdGNoIGl0LiBSZWNvcmQgdGhlIGlubGluZS1vd25lcnNoaXAgc3RhdGUgZnJvbSB0aGUgZXZlbnQ6XG4gICAgICAgICAgLy8gdGhlIExBVEVTVCBzdGFydCB3aW5zLCBzbyBhIHN0YW1wZWQgc3RhcnQgKGlubGluZSBleGVjdXRpb24gb3JcbiAgICAgICAgICAvLyBvd25lciByZWNvdmVyeSkgc2V0cyB0aGUgb3duZXIgYW5kIGFuIHVuc3RhbXBlZCBvbmUgKGEgcmV0cnlcbiAgICAgICAgICAvLyBhdHRlbXB0IGRyaXZlbiBieSBhIHF1ZXVlZCBzdGVwIG1lc3NhZ2UsIG9yIGFuIG9sZGVyIHJ1bnRpbWUpXG4gICAgICAgICAgLy8gY2xlYXJzIGl0LiBUaGUgZGlzcGF0Y2ggbG9vcCB1c2VzIHRoaXMgdG8gc3VwcHJlc3MgdGhlIGltbWVkaWF0ZVxuICAgICAgICAgIC8vIHJlcXVldWUgb2YgYSBzdGVwIHdob3NlIG93bmluZyBpbnZvY2F0aW9uIG1heSBzdGlsbCBiZSBydW5uaW5nXG4gICAgICAgICAgLy8gaXRzIGJvZHkgKHZlcmNlbC93b3JrZmxvdyMyNzgwKS5cbiAgICAgICAgICBjb25zdCBxdWV1ZUl0ZW0gPSBjdHguaW52b2NhdGlvbnNRdWV1ZS5nZXQoY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgaWYgKHF1ZXVlSXRlbSAmJiBxdWV1ZUl0ZW0udHlwZSA9PT0gJ3N0ZXAnKSB7XG4gICAgICAgICAgICBjb25zdCBvd25lck1lc3NhZ2VJZCA9XG4gICAgICAgICAgICAgICdldmVudERhdGEnIGluIGV2ZW50ICYmXG4gICAgICAgICAgICAgIGV2ZW50LmV2ZW50RGF0YSAmJlxuICAgICAgICAgICAgICAnb3duZXJNZXNzYWdlSWQnIGluIGV2ZW50LmV2ZW50RGF0YSAmJlxuICAgICAgICAgICAgICB0eXBlb2YgZXZlbnQuZXZlbnREYXRhLm93bmVyTWVzc2FnZUlkID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gZXZlbnQuZXZlbnREYXRhLm93bmVyTWVzc2FnZUlkXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBxdWV1ZUl0ZW0ub3duZXJNZXNzYWdlSWQgPSBvd25lck1lc3NhZ2VJZDtcbiAgICAgICAgICAgIHF1ZXVlSXRlbS5sYXN0U3RhcnRlZEF0ID0gK2V2ZW50LmNyZWF0ZWRBdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuQ29uc3VtZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnc3RlcF9yZXRyeWluZycpIHtcbiAgICAgICAgICAvLyBTdGVwIGlzIGJlaW5nIHJldHJpZWQg4oCUIGNvbnN1bWUgdGhlIGV2ZW50IGFuZCB3YWl0IGZvciB0aGUgbmV4dFxuICAgICAgICAgIC8vIHN0ZXBfc3RhcnRlZC4gRnJvbSBoZXJlIG9uIHRoZSBzdGVwIGlzIHF1ZXVlLW93bmVkICh0aGUgZGVsYXllZFxuICAgICAgICAgIC8vIHJldHJ5IGhhbmRvZmYgbWVzc2FnZSwgb3IgdGhlIHJlcGxheSByZXF1ZXVlKSwgc28gaW5saW5lXG4gICAgICAgICAgLy8gb3duZXJzaGlwIGlzIHBlcm1hbmVudGx5IGxhcHNlZCBmb3IgdGhpcyBjb3JyZWxhdGlvbiBJRC5cbiAgICAgICAgICBjb25zdCBxdWV1ZUl0ZW0gPSBjdHguaW52b2NhdGlvbnNRdWV1ZS5nZXQoY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgaWYgKHF1ZXVlSXRlbSAmJiBxdWV1ZUl0ZW0udHlwZSA9PT0gJ3N0ZXAnKSB7XG4gICAgICAgICAgICBxdWV1ZUl0ZW0uc2F3UmV0cnlpbmcgPSB0cnVlO1xuICAgICAgICAgICAgcXVldWVJdGVtLm93bmVyTWVzc2FnZUlkID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2ZhaWxlZCcpIHtcbiAgICAgICAgICAvLyBUZXJtaW5hbCBzdGF0ZSAtIHdlIGNhbiByZW1vdmUgdGhlIGludm9jYXRpb25RdWV1ZSBpdGVtXG4gICAgICAgICAgY3R4Lmludm9jYXRpb25zUXVldWUuZGVsZXRlKGV2ZW50LmNvcnJlbGF0aW9uSWQpO1xuICAgICAgICAgIC8vIFN0ZXAgZmFpbGVkIC0gY2hhaW4gdGhyb3VnaCBwcm9taXNlUXVldWUgdG8gZW5zdXJlXG4gICAgICAgICAgLy8gZGV0ZXJtaW5pc3RpYyBvcmRlcmluZyBvZiBhbGwgcHJvbWlzZSByZXNvbHV0aW9ucy9yZWplY3Rpb25zLlxuICAgICAgICAgIC8vIEh5ZHJhdGUgdGhlIHNlcmlhbGl6ZWQgdGhyb3duIHZhbHVlIGZyb20gdGhlIGV2ZW50IGxvZyBzbyB0aGVcbiAgICAgICAgICAvLyBvcmlnaW5hbCB0eXBlIGlkZW50aXR5IGFuZCBjdXN0b20gcHJvcGVydGllcyBhcmUgcHJlc2VydmVkLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gVGhlIHJlamVjdGlvbiBpcyBhcyBicmFuY2gtZGVjaWRpbmcgYXMgYSBzdWNjZXNzOiBpdCBkZWNpZGVzXG4gICAgICAgICAgLy8gd2hldGhlciBhIGB0cnlgL2BjYXRjaGAgY29udGludWF0aW9uIHJ1bnMsIGFuZCB0aGVyZWZvcmUgd2hpY2hcbiAgICAgICAgICAvLyBVTElEcyB0aGUgZm9sbG93LXVwIGB1c2VTdGVwYCBjYWxscyBkcmF3LiBTbyBpdCBpcyBvcmRlcmVkIGJ5XG4gICAgICAgICAgLy8gZXZlbnQtbG9nIHBvc2l0aW9uIGV4YWN0bHkgbGlrZSBgc3RlcF9jb21wbGV0ZWRgIGJlbG93IOKAlCBzZWUgdGhlcmVcbiAgICAgICAgICAvLyBmb3Igd2h5IHRoZSBkZWZlcnJhbCBpcyBjYXB0dXJlZCBoZXJlLCBhdCBldmVudC1jb25zdW1wdGlvbiB0aW1lLFxuICAgICAgICAgIC8vIGFuZCBhd2FpdGVkIG9mZiB0aGUgc2VyaWFsIHF1ZXVlLlxuICAgICAgICAgIGNvbnN0IGV2ZW50SW5kZXggPSBjdHguZXZlbnRzQ29uc3VtZXIuZXZlbnRJbmRleDtcbiAgICAgICAgICBjb25zdCBiYXJyaWVyID0gcmVnaXN0ZXJEZWxpdmVyeUJhcnJpZXIoY3R4LCBldmVudEluZGV4LCAnc3RlcCcpO1xuICAgICAgICAgIGxldCByZWplY3Rpb246IHVua25vd247XG4gICAgICAgICAgY29uc3QgZWFybGllckRlbGl2ZXJlZCA9IGF3YWl0RWFybGllckRlbGl2ZXJpZXMoXG4gICAgICAgICAgICBjdHgsXG4gICAgICAgICAgICBldmVudEluZGV4LFxuICAgICAgICAgICAgJ3N0ZXAnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMrKztcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXBhcmVkID0gYXdhaXQgY3R4LnJlcGxheVBheWxvYWRDYWNoZS5wcmVwYXJlRXZlbnRQYXlsb2FkKFxuICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50SWQsXG4gICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBldmVudC5ldmVudERhdGEuZXJyb3JcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmVqZWN0aW9uID0gYXdhaXQgaHlkcmF0ZVN0ZXBFcnJvcihcbiAgICAgICAgICAgICAgICBldmVudC5ldmVudERhdGEuZXJyb3IsXG4gICAgICAgICAgICAgICAgY3R4LnJ1bklkLFxuICAgICAgICAgICAgICAgIGN0eC5lbmNyeXB0aW9uS2V5LFxuICAgICAgICAgICAgICAgIGN0eC5nbG9iYWxUaGlzLFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIHByZXBhcmVkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGNhdGNoIChoeWRyYXRlRXJyKSB7XG4gICAgICAgICAgICAgIC8vIElmIGh5ZHJhdGlvbiBmYWlscyBmb3IgYW55IHJlYXNvbiwgZmFsbCBiYWNrIHRvIGEgZ2VuZXJpY1xuICAgICAgICAgICAgICAvLyBGYXRhbEVycm9yIHNvIHRoZSB3b3JrZmxvdyBkb2Vzbid0IGhhbmcuIFRoaXMgc2hvdWxkIGJlXG4gICAgICAgICAgICAgIC8vIGV4dHJlbWVseSByYXJlIGluIHByYWN0aWNlIChjb3JydXB0ZWQgZXZlbnQgZGF0YSkuXG4gICAgICAgICAgICAgIHN0ZXBMb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBoeWRyYXRlIHN0ZXBfZmFpbGVkIGVycm9yJywge1xuICAgICAgICAgICAgICAgIGNvcnJlbGF0aW9uSWQ6IGV2ZW50LmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgICAgICAgZXJyb3I6XG4gICAgICAgICAgICAgICAgICBoeWRyYXRlRXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgPyBoeWRyYXRlRXJyLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmcoaHlkcmF0ZUVyciksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZWplY3Rpb24gPSBuZXcgRmF0YWxFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIGh5ZHJhdGUgc3RlcCBlcnJvcjogJHtcbiAgICAgICAgICAgICAgICAgIGh5ZHJhdGVFcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgICAgICAgICA/IGh5ZHJhdGVFcnIubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICA6IFN0cmluZyhoeWRyYXRlRXJyKVxuICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZvaWQgZWFybGllckRlbGl2ZXJlZC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgYmFycmllci5tYXJrRGVsaXZlcmVkKCk7XG4gICAgICAgICAgICAgIHJlamVjdChyZWplY3Rpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnc3RlcF9jb21wbGV0ZWQnKSB7XG4gICAgICAgICAgLy8gVGVybWluYWwgc3RhdGUgLSB3ZSBjYW4gcmVtb3ZlIHRoZSBpbnZvY2F0aW9uUXVldWUgaXRlbVxuICAgICAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmRlbGV0ZShldmVudC5jb3JyZWxhdGlvbklkKTtcblxuICAgICAgICAgIC8vIFN0ZXAgaGFzIGNvbXBsZXRlZCwgc28gcmVzb2x2ZSB0aGUgUHJvbWlzZSB3aXRoIHRoZSBjYWNoZWQgcmVzdWx0LlxuICAgICAgICAgIC8vIFRoZSBoeWRyYXRpb24gaXMgYXN5bmMgKGUuZy4sIGRlY3J5cHRpb24pLCBzbyB3ZSBjaGFpbiBpdCB0aHJvdWdoXG4gICAgICAgICAgLy8gY3R4LnByb21pc2VRdWV1ZSB0byBlbnN1cmUgdGhhdCBldmVuIGlmIGRlc2VyaWFsaXphdGlvblxuICAgICAgICAgIC8vIHRha2VzIHZhcmlhYmxlIHRpbWUsIHByb21pc2VzIHJlc29sdmUgaW4gZXZlbnQgbG9nIG9yZGVyLlxuICAgICAgICAgIC8vIEVhY2ggc3RlcCdzIGh5ZHJhdGlvbiArIHJlc29sdmUgd2FpdHMgZm9yIGFsbCBwcmlvciBoeWRyYXRpb25zXG4gICAgICAgICAgLy8gdG8gY29tcGxldGUgYmVmb3JlIGV4ZWN1dGluZywgcHJlc2VydmluZyBkZXRlcm1pbmlzdGljIG9yZGVyaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gUHJlcGFyZWQgc2VyaWFsaXplZCBieXRlcyBhcmUgc2hhcmVkIGFjcm9zcyByZXBsYXkgVk1zLCBidXQgZmluYWxcbiAgICAgICAgICAvLyBvYmplY3RzIGFyZSBhbHdheXMgcmV2aXZlZCBoZXJlIGluc2lkZSB0aGlzIG9yZGVyZWQgcXVldWUgc2xvdC5cbiAgICAgICAgICAvLyBPbmx5IGltbXV0YWJsZSBwcmltaXRpdmUgZmluYWwgdmFsdWVzIGJ5cGFzcyByZXZpdmFsIGVudGlyZWx5LlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSHlkcmF0aW9uIGNvc3QgaXMgd2hhdCBtYWtlcyB0aGlzIGRlbGl2ZXJ5J3MgdGltaW5nIHVuc3RhYmxlXG4gICAgICAgICAgLy8gYWNyb3NzIHJlcGxheXMgb2Ygb25lIGludm9jYXRpb246IHRoZSBmaXJzdCByZXBsYXkgcGF5cyB0aGUgZnVsbFxuICAgICAgICAgIC8vIGRlY3J5cHQvZGVjb21wcmVzcy9yZXZpdmUsIGxhdGVyIHJlcGxheXMgbWVtby1oaXQgYSBwcmltaXRpdmVcbiAgICAgICAgICAvLyByZXN1bHQgaW4gYFJlcGxheVBheWxvYWRDYWNoZWAgYW5kIGZpbmlzaCBpbiBhIGhvcCBvciB0d28uIEFcbiAgICAgICAgICAvLyB3b3JrZmxvdyBhd2FpdGluZyB0aGlzIHJlc3VsdCBvbiBvbmUgYnJhbmNoIGFuZCBhIGBzbGVlcCgpYCBvclxuICAgICAgICAgIC8vIGhvb2sgcGF5bG9hZCBvbiBhbm90aGVyIHdvdWxkIHRoZXJlZm9yZSBhbGxvY2F0ZSBpdHMgZm9sbG93LXVwXG4gICAgICAgICAgLy8gc3RlcCBVTElEcyBpbiBhIGRpZmZlcmVudCBvcmRlciBvbiBhIHdhcm0gcmVwbGF5IHRoYW4gdGhlXG4gICAgICAgICAgLy8gaW52b2NhdGlvbiB0aGF0IFdST1RFIHRob3NlIGBzdGVwX2NyZWF0ZWRgIGV2ZW50cyBkaWQg4oCUIGFcbiAgICAgICAgICAvLyBwZXJtYW5lbnQgYFJlcGxheURpdmVyZ2VuY2VFcnJvcmAuIFNvIHRoZSByZXN1bHQgaXMgb3JkZXJlZCBieVxuICAgICAgICAgIC8vIGV2ZW50LWxvZyBwb3NpdGlvbiB0aHJvdWdoIHRoZSBkZWxpdmVyeS1iYXJyaWVyIHJlZ2lzdHJ5IChzZWVcbiAgICAgICAgICAvLyBgY3R4LnBlbmRpbmdEZWxpdmVyeUJhcnJpZXJzYCk6XG4gICAgICAgICAgLy8gIC0gUmVnaXN0ZXIgYSAnc3RlcCcgYmFycmllciBhdCB0aGlzIGV2ZW50J3MgaW5kZXggc28gYVxuICAgICAgICAgIC8vICAgIExBVEVSLWluLWxvZyB3YWl0L2hvb2sgZGVsaXZlcnkgaXMgaGFuZGVkIG92ZXIgb25seSBhZnRlciBpdC5cbiAgICAgICAgICAvLyAgLSBIeWRyYXRlIGluc2lkZSB0aGlzIHNlcmlhbCBxdWV1ZSBzbG90IChrZWVwaW5nIGFzeW5jXG4gICAgICAgICAgLy8gICAgZGVzZXJpYWxpemF0aW9uIGluIGV2ZW50LWxvZyBvcmRlcikgYnV0IG9ubHkgQ0FQVFVSRSB0aGVcbiAgICAgICAgICAvLyAgICBvdXRjb21lOyB0aGVuIGRlZmVyIGJlaGluZCBldmVyeSBFQVJMSUVSLWluLWxvZyB3YWl0IGFuZCBob29rXG4gICAgICAgICAgLy8gICAgZGVsaXZlcnkgYmVmb3JlIHJlc29sdmluZywgYW5kIG1hcmsgdGhpcyBzdGVwIGRlbGl2ZXJlZC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFRoZSBkZWZlcnJhbCBpcyBjYXB0dXJlZCBIRVJFLCB3aGlsZSBjb25zdW1pbmcgdGhlIGV2ZW50LCBhbmQgbm90XG4gICAgICAgICAgLy8gaW5zaWRlIHRoZSBxdWV1ZSBzbG90LiBUd28gcmVhc29ucywgYm90aCBsb2FkLWJlYXJpbmc6XG4gICAgICAgICAgLy8gIC0gRGV0ZXJtaW5pc206IHRoZSBzZXQgb2YgZWFybGllciBkZWxpdmVyaWVzIGlzIHRoZW4gYSBmdW5jdGlvbiBvZlxuICAgICAgICAgIC8vICAgIGxvZyBwb3NpdGlvbiBhbG9uZS4gQ2FwdHVyZWQgbGF0ZXIgaXQgd291bGQgZGVwZW5kIG9uIGhvdyBtdWNoXG4gICAgICAgICAgLy8gICAgaHlkcmF0aW9uIHRoZSBlYXJsaWVyIGRlbGl2ZXJpZXMgaGFkIGFscmVhZHkgZmluaXNoZWQg4oCUIHRoZSB2ZXJ5XG4gICAgICAgICAgLy8gICAgY291cGxpbmcgdGhpcyBiYXJyaWVyIGV4aXN0cyB0byByZW1vdmUuXG4gICAgICAgICAgLy8gIC0gQ292ZXJhZ2U6IGFuIGVhcmxpZXIgZGVsaXZlcnkgd2hvc2Ugb3duIGh5ZHJhdGlvbiBzbG90IHJ1bnNcbiAgICAgICAgICAvLyAgICBmaXJzdCBvbiB0aGlzIHNlcmlhbCBxdWV1ZSBoYXMgdXN1YWxseSBhbHJlYWR5IHJlc29sdmVkIChhbmQgc29cbiAgICAgICAgICAvLyAgICBkZXJlZ2lzdGVyZWQgaXRzIGJhcnJpZXIpIGJ5IHRoZSB0aW1lIGEgbGF0ZXIgc2xvdCBzdGFydHMuIFJlYWRcbiAgICAgICAgICAvLyAgICBhdCBzbG90IHN0YXJ0LCBpdHMgYmFycmllciB3b3VsZCBiZSBpbnZpc2libGUgYW5kIHRoaXMgc3RlcFxuICAgICAgICAgIC8vICAgIHdvdWxkIG5vdCBkZWZlciBhdCBhbGwuIEV2ZXJ5IGV2ZW50IGluIG9uZSBkcmFpbiB3aW5kb3cgaXNcbiAgICAgICAgICAvLyAgICBjb25zdW1lZCBiZWZvcmUgYW55IHNsb3QgcnVucywgc28gY2FwdHVyaW5nIGF0IGNvbnN1bXB0aW9uIHRpbWVcbiAgICAgICAgICAvLyAgICBzZWVzIGFsbCBvZiB0aGVtLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gVGhlIGRlZmVycmFsIHJ1bnMgT0ZGIHRoZSBzZXJpYWwgcXVldWU6IGl0IG1heSB3YWl0IG9uIGFuIGVhcmxpZXJcbiAgICAgICAgICAvLyB3YWl0L2hvb2sgZGVsaXZlcnkgd2hvc2Ugb3duIHJlc29sdXRpb24gaXMgZHJpdmVuIGJ5IHRoaXMgcXVldWUsXG4gICAgICAgICAgLy8gYW5kIGJsb2NraW5nIGEgcXVldWUgc2xvdCBvbiB0aGF0IHdvdWxkIGRlYWRsb2NrIHRoZSBxdWV1ZSAodGhlXG4gICAgICAgICAgLy8gc2FtZSBjb25zdHJhaW50IHNsZWVwLnRzIGFuZCBob29rLnRzIGRvY3VtZW50KS4gYHBlbmRpbmdEZWxpdmVyaWVzYFxuICAgICAgICAgIC8vIGlzIGxpa2V3aXNlIHJlbGVhc2VkIGluc2lkZSB0aGUgc2xvdCwgYmVmb3JlIHRoZSBkZXRhY2hlZCBkZWZlciwgc29cbiAgICAgICAgICAvLyBgc2NoZWR1bGVXaGVuSWRsZWAgY2FuIHN0aWxsIHJlYWNoIGlkbGUgYW5kIHJldGlyZSB0aGUgYmFycmllcnNcbiAgICAgICAgICAvLyB0aGlzIGRlZmVycmFsIG1heSBiZSB3YWl0aW5nIG9uLlxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEV2ZW50SWQgPSBldmVudC5ldmVudElkO1xuICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRSZXN1bHQgPSBldmVudC5ldmVudERhdGEucmVzdWx0O1xuICAgICAgICAgIGNvbnN0IGV2ZW50SW5kZXggPSBjdHguZXZlbnRzQ29uc3VtZXIuZXZlbnRJbmRleDtcbiAgICAgICAgICBjb25zdCBiYXJyaWVyID0gcmVnaXN0ZXJEZWxpdmVyeUJhcnJpZXIoY3R4LCBldmVudEluZGV4LCAnc3RlcCcpO1xuICAgICAgICAgIGxldCBvdXRjb21lOlxuICAgICAgICAgICAgfCB7IG9rOiB0cnVlOyB2YWx1ZTogUmVzdWx0IH1cbiAgICAgICAgICAgIHwgeyBvazogZmFsc2U7IGVycm9yOiB1bmtub3duIH07XG4gICAgICAgICAgY29uc3QgZWFybGllckRlbGl2ZXJlZCA9IGF3YWl0RWFybGllckRlbGl2ZXJpZXMoXG4gICAgICAgICAgICBjdHgsXG4gICAgICAgICAgICBldmVudEluZGV4LFxuICAgICAgICAgICAgJ3N0ZXAnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMrKztcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVkUmVzdWx0ID0gYXdhaXQgY3R4LnJlcGxheVBheWxvYWRDYWNoZS5nZXRTdGVwUmVzdWx0KFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlZEV2ZW50SWQsXG4gICAgICAgICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcHJlcGFyZWQgPVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjdHgucmVwbGF5UGF5bG9hZENhY2hlLnByZXBhcmVFdmVudFBheWxvYWQoXG4gICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkRXZlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAncmVzdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgY3R4LnJ1bklkLFxuICAgICAgICAgICAgICAgICAgICBjdHguZW5jcnlwdGlvbktleSxcbiAgICAgICAgICAgICAgICAgICAgY3R4Lmdsb2JhbFRoaXMsXG4gICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICBwcmVwYXJlZFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIG91dGNvbWUgPSB7IG9rOiB0cnVlLCB2YWx1ZTogaHlkcmF0ZWRSZXN1bHQgYXMgUmVzdWx0IH07XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBvdXRjb21lID0geyBvazogZmFsc2UsIGVycm9yIH07XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZvaWQgZWFybGllckRlbGl2ZXJlZC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgYmFycmllci5tYXJrRGVsaXZlcmVkKCk7XG4gICAgICAgICAgICAgIGlmIChvdXRjb21lLm9rKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvdXRjb21lLnZhbHVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWplY3Qob3V0Y29tZS5lcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyByZXBsYXkgaW5zdGFsbGVkIGEgZGlmZmVyZW50IGNvbnN1bWVyIHRoYW4gdGhlIHN0b3JlZCBldmVudCBuZWVkcy5cbiAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgIG5ldyBSZXBsYXlEaXZlcmdlbmNlRXJyb3IoXG4gICAgICAgICAgICAgIGBSZXBsYXkgZGl2ZXJnZW5jZTogVW5leHBlY3RlZCBldmVudCB0eXBlIGZvciBzdGVwICR7Y29ycmVsYXRpb25JZH0gKG5hbWU6ICR7c3RlcE5hbWV9KSBcIiR7ZXZlbnQuZXZlbnRUeXBlfVwiYCxcbiAgICAgICAgICAgICAgeyBldmVudElkOiBldmVudC5ldmVudElkIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfTtcblxuICAgIC8vIEVuc3VyZSB0aGUgXCJuYW1lXCIgcHJvcGVydHkgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgc3RlcCBmdW5jdGlvbiBuYW1lXG4gICAgLy8gRXh0cmFjdCBmdW5jdGlvbiBuYW1lIGZyb20gc3RlcE5hbWUgKGZvcm1hdDogXCJzdGVwLy9maWxlcGF0aC8vZnVuY3Rpb25OYW1lXCIpXG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gc3RlcE5hbWUuc3BsaXQoJy8vJykucG9wKCk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0ZXBGdW5jdGlvbiwgJ25hbWUnLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb25OYW1lLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIHRoZSBzdGVwIGZ1bmN0aW9uIGlkZW50aWZpZXIgdG8gdGhlIHN0ZXAgZnVuY3Rpb24gZm9yIHNlcmlhbGl6YXRpb25cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RlcEZ1bmN0aW9uLCAnc3RlcElkJywge1xuICAgICAgdmFsdWU6IHN0ZXBOYW1lLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gU3RvcmUgdGhlIGNsb3N1cmUgdmFyaWFibGVzIGZ1bmN0aW9uIGZvciBzZXJpYWxpemF0aW9uLiBNYXJrIGl0IHNvIHRoZVxuICAgIC8vIHN0ZXAtZnVuY3Rpb24gcmVkdWNlciBjYW4gdGVsbCBhIGZ1bmN0aW9uIHRoYXQgY2FtZSB0aHJvdWdoIGB1c2VTdGVwYFxuICAgIC8vIGFwYXJ0IGZyb20gb25lIHdvcmtmbG93IGNvZGUgYXNzaWduZWQgb3ZlciB0aGUgcHJvcGVydHkgYWZ0ZXJ3YXJkcyDigJRcbiAgICAvLyB0aGUgcmVkdWNlciBoYXMgdG8gaW52b2tlIHdoYXRldmVyIGlzIHRoZXJlLCBhbmQgb25seSB0aGUgbGF0dGVyIGlzXG4gICAgLy8gd29ydGggcmVwb3J0aW5nLiBTZWUgYG1hcmtVc2VTdGVwQ2xvc3VyZUZuYCBmb3IgdGhlIGxpbWl0cyBvZiB3aGF0XG4gICAgLy8gdGhpcyBwcm92ZXMuXG4gICAgaWYgKGNsb3N1cmVWYXJzRm4pIHtcbiAgICAgIG1hcmtVc2VTdGVwQ2xvc3VyZUZuKGNsb3N1cmVWYXJzRm4pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0ZXBGdW5jdGlvbiwgJ19fY2xvc3VyZVZhcnNGbicsIHtcbiAgICAgICAgdmFsdWU6IGNsb3N1cmVWYXJzRm4sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZSBgLmJpbmRgIHNvIHRoZSBib3VuZCBmdW5jdGlvbiBwcmVzZXJ2ZXMgdGhlIHN0ZXAgcHJveHlcbiAgICAvLyBtZXRhZGF0YSB0aGF0IGBnZXRTdGVwRnVuY3Rpb25SZWR1Y2VyYCByZWxpZXMgb24gZm9yIHNlcmlhbGl6YXRpb24uXG4gICAgLy8gV2l0aG91dCB0aGlzIG92ZXJyaWRlLCBgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRgIHdvdWxkIHJldHVybiBhIG5ld1xuICAgIC8vIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCBpbmhlcml0IGBzdGVwSWRgLCBgX19jbG9zdXJlVmFyc0ZuYCwgb3IgYW55XG4gICAgLy8gb3RoZXIgb3duIHByb3BlcnRpZXMgb2YgdGhlIG9yaWdpbmFsIHByb3h5IOKAlCBzbyB0aGUgU3RlcEZ1bmN0aW9uXG4gICAgLy8gcmVkdWNlciB3b3VsZCByZWZ1c2UgdG8gc2VyaWFsaXplIGl0IChpdCdkIGxvb2sgbGlrZSBhIHBsYWluXG4gICAgLy8gZnVuY3Rpb24pLCBhbmQgYSBgdXNlU3RlcCguLi4pLmJpbmQodGhpcylgIHByb3h5IHRoYXQgZmxvd2VkXG4gICAgLy8gdGhyb3VnaCB3b3JrZmxvdyBzZXJpYWxpemF0aW9uIHdvdWxkIHNpbGVudGx5IGJyZWFrLlxuICAgIC8vXG4gICAgLy8gVGhlIG92ZXJyaWRlIHN0YXNoZXMgdGhyZWUgcGllY2VzIG9mIHN0YXRlIG9uIHRoZSBib3VuZCBmdW5jdGlvbiBzb1xuICAgIC8vIHRoZSByb3VuZCB0cmlwIGlzIGZhaXRoZnVsOlxuICAgIC8vICAgLSBgc3RlcElkYCAgICAgICAgICAgICDigJQgYWxyZWFkeSBzZXQgb24gdGhlIG9yaWdpbmFsIHByb3h5LlxuICAgIC8vICAgLSBgX19jbG9zdXJlVmFyc0ZuYCAgICDigJQgb25seSB3aGVuIHRoZSBvcmlnaW5hbCBwcm94eSBoYWQgb25lLlxuICAgIC8vICAgLSBgX19ib3VuZFRoaXNgICAgICAgICDigJQgdGhlIHJlY2VpdmVyIHBhc3NlZCB0byBgLmJpbmQodGhpc0FyZywg4oCmKWAuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzIHNldCAoZXZlbiB3aGVuIGB0aGlzQXJnYCBpc1xuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBudWxsYC9gdW5kZWZpbmVkYCkgc28gdGhlIHJlZHVjZXIgY2FuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluZ3Vpc2ggXCJ3YXMgYm91bmRcIiBmcm9tIFwid2Fzbid0XCIuXG4gICAgLy8gICAtIGBfX2JvdW5kQXJnc2AgICAgICAgIOKAlCBvbmx5IHdoZW4gdGhlIHVzZXIgc3VwcGxpZWQgcHJlZmlsbGVkXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIChgLmJpbmQodGhpc0FyZywgeCwgeSlgKS4gVGhlXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1dDIHBsdWdpbiBvbmx5IGV2ZXIgZW1pdHMgYC5iaW5kKHRoaXMpYFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LCBzbyB0aGlzIGlzIHJhcmUgaW4gcHJhY3RpY2U7IHdlXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGwgY2FwdHVyZSBpdCBzbyB0aGUgcGFydGlhbCBhcmdzXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vydml2ZSBzZXJpYWxpemF0aW9uIHJhdGhlciB0aGFuXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsZW50bHkgZGlzYXBwZWFyaW5nIG9uIHRoZSBzdGVwIHNpZGUuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0ZXBGdW5jdGlvbiwgJ2JpbmQnLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gKFxuICAgICAgICB0aGlzOiB0eXBlb2Ygc3RlcEZ1bmN0aW9uLFxuICAgICAgICB0aGlzQXJnOiB1bmtub3duLFxuICAgICAgICAuLi5wYXJ0aWFsQXJnczogdW5rbm93bltdXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgYm91bmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgdGhpc0FyZyxcbiAgICAgICAgICAuLi5wYXJ0aWFsQXJnc1xuICAgICAgICApO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsICdzdGVwSWQnLCB7XG4gICAgICAgICAgdmFsdWU6IHN0ZXBOYW1lLFxuICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNsb3N1cmVWYXJzRm4pIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsICdfX2Nsb3N1cmVWYXJzRm4nLCB7XG4gICAgICAgICAgICB2YWx1ZTogY2xvc3VyZVZhcnNGbixcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsICdfX2JvdW5kVGhpcycsIHtcbiAgICAgICAgICB2YWx1ZTogdGhpc0FyZyxcbiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwYXJ0aWFsQXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdW5kLCAnX19ib3VuZEFyZ3MnLCB7XG4gICAgICAgICAgICB2YWx1ZTogcGFydGlhbEFyZ3MsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJvdW5kO1xuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdGVwRnVuY3Rpb247XG4gIH07XG59XG4iXX0=
@@ -64,6 +64,29 @@ export declare const WorkflowEventsCount: (value: number) => {
64
64
  export declare const WorkflowExecutionMode: (value: "replay" | "retained") => {
65
65
  [k: string]: "replay" | "retained";
66
66
  };
67
+ /**
68
+ * Events the replay walked past that no consumer claimed, still held when the
69
+ * replay stopped.
70
+ *
71
+ * A non-zero count on a suspension is ordinary: an out-of-band delivery that
72
+ * landed ahead of the code that reads it waits for the replay that gets there.
73
+ * From inside one replay that is indistinguishable from an event no replay will
74
+ * ever claim, because the two differ only in what the next replay does. So the
75
+ * count goes on the span instead of failing the run, and the case worth acting
76
+ * on is a query across a run's spans: the same
77
+ * {@link WorkflowParkedEventId} held on suspension after suspension.
78
+ */
79
+ export declare const WorkflowParkedEventsCount: (value: number) => {
80
+ [k: string]: number;
81
+ };
82
+ /** Oldest event still held unclaimed when the replay stopped. */
83
+ export declare const WorkflowParkedEventId: (value: string) => {
84
+ [k: string]: string;
85
+ };
86
+ /** Type of the oldest event still held unclaimed when the replay stopped. */
87
+ export declare const WorkflowParkedEventType: (value: string) => {
88
+ [k: string]: string;
89
+ };
67
90
  /** Number of arguments passed to the workflow */
68
91
  export declare const WorkflowArgumentsCount: (value: number) => {
69
92
  [k: string]: number;
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-conventions.d.ts","sourceRoot":"","sources":["../../src/telemetry/semantic-conventions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantic-conventions.d.ts","sourceRoot":"","sources":["../../src/telemetry/semantic-conventions.ts"],"names":[],"mappings":"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"}