@workflow/web-shared 5.0.0-beta.29 → 5.0.0-beta.30

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 (50) hide show
  1. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +2 -2
  2. package/dist/components/new-trace-viewer/trace-viewer.js +2 -2
  3. package/dist/components/sidebar/attributes-block.js +2 -2
  4. package/dist/components/sidebar/entity-detail-panel.d.ts +2 -2
  5. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  6. package/dist/components/sidebar/entity-detail-panel.js +4 -5
  7. package/dist/components/sidebar/events-list.d.ts +2 -2
  8. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  9. package/dist/components/sidebar/events-list.js +15 -36
  10. package/dist/components/sidebar/sidebar-data-context.d.ts +1 -1
  11. package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -1
  12. package/dist/components/sidebar/sidebar-data-context.js +1 -1
  13. package/dist/components/workflow-trace-view.d.ts +1 -1
  14. package/dist/components/workflow-trace-view.d.ts.map +1 -1
  15. package/dist/components/workflow-trace-view.js +1 -1
  16. package/dist/components/workflow-traces/event-colors.d.ts +1 -1
  17. package/dist/components/workflow-traces/event-colors.d.ts.map +1 -1
  18. package/dist/components/workflow-traces/event-colors.js +4 -7
  19. package/dist/components/workflow-traces/trace-colors.d.ts.map +1 -1
  20. package/dist/components/workflow-traces/trace-colors.js +3 -4
  21. package/dist/components/workflow-traces/trace-span-construction.d.ts +1 -1
  22. package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
  23. package/dist/components/workflow-traces/trace-span-construction.js +3 -3
  24. package/dist/lib/event-analysis.d.ts +1 -1
  25. package/dist/lib/event-analysis.d.ts.map +1 -1
  26. package/dist/lib/event-analysis.js +3 -2
  27. package/dist/lib/event-materialization.d.ts +1 -1
  28. package/dist/lib/event-materialization.d.ts.map +1 -1
  29. package/dist/lib/event-materialization.js +8 -7
  30. package/dist/lib/hydration.d.ts +0 -1
  31. package/dist/lib/hydration.d.ts.map +1 -1
  32. package/dist/lib/hydration.js +2 -14
  33. package/dist/lib/trace-builder.d.ts +1 -4
  34. package/dist/lib/trace-builder.d.ts.map +1 -1
  35. package/dist/lib/trace-builder.js +8 -15
  36. package/package.json +3 -3
  37. package/src/components/new-trace-viewer/components/trace-shortcut-helper.tsx +1 -1
  38. package/src/components/new-trace-viewer/trace-viewer.tsx +5 -6
  39. package/src/components/sidebar/attributes-block.tsx +1 -1
  40. package/src/components/sidebar/entity-detail-panel.tsx +9 -9
  41. package/src/components/sidebar/events-list.tsx +17 -50
  42. package/src/components/sidebar/sidebar-data-context.tsx +1 -4
  43. package/src/components/workflow-trace-view.tsx +1 -4
  44. package/src/components/workflow-traces/event-colors.ts +3 -11
  45. package/src/components/workflow-traces/trace-colors.ts +6 -6
  46. package/src/components/workflow-traces/trace-span-construction.ts +6 -6
  47. package/src/lib/event-analysis.ts +6 -4
  48. package/src/lib/event-materialization.ts +13 -7
  49. package/src/lib/hydration.ts +1 -15
  50. package/src/lib/trace-builder.ts +13 -21
@@ -2,6 +2,7 @@
2
2
  * Functions for constructing OpenTelemetry spans from workflow entities
3
3
  */
4
4
  import { parseStepName, parseWorkflowName } from '@workflow/utils/parse-name';
5
+ import { isTerminalStepEventType, } from '@workflow/world';
5
6
  import { shouldShowVerticalLine } from './event-colors';
6
7
  import { calculateDuration, dateToOtelTime } from './trace-time-utils';
7
8
  export const WORKFLOW_LIBRARY = {
@@ -203,8 +204,7 @@ export function stepToSpan(stepEvents, maxEndTime) {
203
204
  const completedEvent = stepEvents
204
205
  .slice()
205
206
  .reverse()
206
- .find((event) => event.eventType === 'step_completed' ||
207
- event.eventType === 'step_failed');
207
+ .find((event) => isTerminalStepEventType(event.eventType));
208
208
  endTime = getEventTimestamp(completedEvent) ?? new Date(step.completedAt);
209
209
  }
210
210
  return {
@@ -332,4 +332,4 @@ export function runToSpan(run, runEvents, nowTime) {
332
332
  : undefined,
333
333
  };
334
334
  }
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2Utc3Bhbi1jb25zdHJ1Y3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy93b3JrZmxvdy10cmFjZXMvdHJhY2Utc3Bhbi1jb25zdHJ1Y3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSwwQkFBMEI7SUFDaEMsT0FBTyxFQUFFLE9BQU87Q0FDakIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBNEIsSUFBSSxHQUFHLENBQUM7SUFDMUQsY0FBYztJQUNkLGVBQWU7SUFDZixlQUFlO0lBQ2YsY0FBYztJQUNkLGVBQWU7SUFDZixhQUFhO0lBQ2IsWUFBWTtJQUNaLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsVUFBVTtDQUNYLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLEtBQXdCLEVBQ04sRUFBRTtJQUNwQixNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsVUFBVSxJQUFJLEtBQUssRUFBRSxTQUFTLENBQUM7SUFDcEQsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUU3QixNQUFNLElBQUksR0FBRyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENB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QUN6RCxnQkFBZ0IsRUFBRSxJQUFJO0tBQ3ZCLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsU0FBUyxJQUFJLEdBQUcsQ0FBQztRQUNuRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQjtRQUM5QixRQUFRLEVBQUUsS0FBSztRQUNmLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUNuQixVQUFVLEVBQUUsQ0FBQztRQUNiLFVBQVU7UUFDVixLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU07UUFDTixTQUFTLEVBQUUsY0FBYyxDQUFDLGFBQWEsQ0FBQztRQUN4QyxPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUNuRCwwRkFBMEY7UUFDMUYsZUFBZSxFQUNiLGVBQWUsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRTtZQUNwRSxDQUFDLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztZQUNqQyxDQUFDLENBQUMsU0FBUztLQUNoQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRnVuY3Rpb25zIGZvciBjb25zdHJ1Y3RpbmcgT3BlblRlbGVtZXRyeSBzcGFucyBmcm9tIHdvcmtmbG93IGVudGl0aWVzXG4gKi9cblxuaW1wb3J0IHsgcGFyc2VTdGVwTmFtZSwgcGFyc2VXb3JrZmxvd05hbWUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMvcGFyc2UtbmFtZSc7XG5pbXBvcnQgdHlwZSB7IEV2ZW50LCBXb3JrZmxvd1J1biB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgdHlwZSB7IFNwYW4sIFNwYW5FdmVudCB9IGZyb20gJy4uL3RyYWNlLXZpZXdlci90eXBlcyc7XG5pbXBvcnQgeyBzaG91bGRTaG93VmVydGljYWxMaW5lIH0gZnJvbSAnLi9ldmVudC1jb2xvcnMnO1xuaW1wb3J0IHsgY2FsY3VsYXRlRHVyYXRpb24sIGRhdGVUb090ZWxUaW1lIH0gZnJvbSAnLi90cmFjZS10aW1lLXV0aWxzJztcblxuZXhwb3J0IGNvbnN0IFdPUktGTE9XX0xJQlJBUlkgPSB7XG4gIG5hbWU6ICd3b3JrZmxvdy1kZXZlbG9wbWVudC1raXQnLFxuICB2ZXJzaW9uOiAnNC4wLjAnLFxufTtcblxuLyoqXG4gKiBFdmVudCB0eXBlcyB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgdmlzdWFsIG1hcmtlcnMgaW4gdGhlIHRyYWNlIHZpZXdlclxuICovXG5jb25zdCBNQVJLRVJfRVZFTlRfVFlQRVM6IFNldDxFdmVudFsnZXZlbnRUeXBlJ10+ID0gbmV3IFNldChbXG4gICdob29rX2NyZWF0ZWQnLFxuICAnaG9va19yZWNlaXZlZCcsXG4gICdob29rX2Rpc3Bvc2VkJyxcbiAgJ3N0ZXBfc3RhcnRlZCcsXG4gICdzdGVwX3JldHJ5aW5nJyxcbiAgJ3N0ZXBfZmFpbGVkJyxcbiAgJ3J1bl9mYWlsZWQnLFxuICAnd2FpdF9jcmVhdGVkJyxcbiAgJ3dhaXRfY29tcGxldGVkJyxcbiAgJ2F0dHJfc2V0Jyxcbl0pO1xuXG5leHBvcnQgY29uc3QgZ2V0RXZlbnRUaW1lc3RhbXAgPSAoXG4gIGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZFxuKTogRGF0ZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHZhbHVlID0gZXZlbnQ/Lm9jY3VycmVkQXQgPz8gZXZlbnQ/LmNyZWF0ZWRBdDtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBkYXRlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIHJldHVybiBOdW1iZXIuaXNOYU4oZGF0ZS5nZXRUaW1lKCkpID8gdW5kZWZpbmVkIDogZGF0ZTtcbn07XG5cbi8qKlxuICogQ29udmVydCB3b3JrZmxvdyBldmVudHMgdG8gc3BhbiBldmVudHNcbiAqIE9ubHkgaW5jbHVkZXMgZXZlbnRzIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZCBhcyBtYXJrZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RXZlbnRzVG9TcGFuRXZlbnRzKFxuICBldmVudHM6IEV2ZW50W10sXG4gIGZpbHRlclR5cGVzID0gdHJ1ZSxcbiAgb3B0aW9uczogeyBwcmVmZXJPY2N1cnJlZEF0PzogYm9vbGVhbiB9ID0ge31cbik6IFNwYW5FdmVudFtdIHtcbiAgcmV0dXJuIGV2ZW50c1xuICAgIC5maWx0ZXIoKGV2ZW50KSA9PlxuICAgICAgZmlsdGVyVHlwZXMgPyBNQVJLRVJfRVZFTlRfVFlQRVMuaGFzKGV2ZW50LmV2ZW50VHlwZSkgOiB0cnVlXG4gICAgKVxuICAgIC5tYXAoKGV2ZW50KSA9PiAoe1xuICAgICAgbmFtZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgdGltZXN0YW1wOiBkYXRlVG9PdGVsVGltZShcbiAgICAgICAgb3B0aW9ucy5wcmVmZXJPY2N1cnJlZEF0XG4gICAgICAgICAgPyAoZ2V0RXZlbnRUaW1lc3RhbXAoZXZlbnQpID8/IGV2ZW50LmNyZWF0ZWRBdClcbiAgICAgICAgICA6IGV2ZW50LmNyZWF0ZWRBdFxuICAgICAgKSxcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgZXZlbnRJZDogZXZlbnQuZXZlbnRJZCxcbiAgICAgICAgY29ycmVsYXRpb25JZDogZXZlbnQuY29ycmVsYXRpb25JZCxcbiAgICAgICAgZXZlbnREYXRhOiAnZXZlbnREYXRhJyBpbiBldmVudCA/IGV2ZW50LmV2ZW50RGF0YSA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICAvLyBDb250cm9sIHdoZXRoZXIgdG8gc2hvdyB2ZXJ0aWNhbCBsaW5lIGluIHRpbWVsaW5lXG4gICAgICBzaG93VmVydGljYWxMaW5lOiBzaG91bGRTaG93VmVydGljYWxMaW5lKGV2ZW50LmV2ZW50VHlwZSksXG4gICAgfSkpO1xufVxuXG5leHBvcnQgY29uc3Qgd2FpdEV2ZW50c1RvV2FpdEVudGl0eSA9IChcbiAgZXZlbnRzOiBFdmVudFtdXG4pOiB7XG4gIHdhaXRJZDogc3RyaW5nO1xuICBydW5JZDogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IERhdGU7XG4gIHJlc3VtZUF0PzogRGF0ZTtcbiAgY29tcGxldGVkQXQ/OiBEYXRlO1xufSB8IG51bGwgPT4ge1xuICBjb25zdCBzdGFydEV2ZW50ID0gZXZlbnRzLmZpbmQoKGV2ZW50KSA9PiBldmVudC5ldmVudFR5cGUgPT09ICd3YWl0X2NyZWF0ZWQnKTtcbiAgaWYgKCFzdGFydEV2ZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgY29tcGxldGVkRXZlbnQgPSBldmVudHMuZmluZChcbiAgICAoZXZlbnQpID0+IGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3dhaXRfY29tcGxldGVkJ1xuICApO1xuICByZXR1cm4ge1xuICAgIHdhaXRJZDogc3RhcnRFdmVudC5jb3JyZWxhdGlvbklkLFxuICAgIHJ1bklkOiBzdGFydEV2ZW50LnJ1bklkLFxuICAgIGNyZWF0ZWRBdDogZ2V0RXZlbnRUaW1lc3RhbXAoc3RhcnRFdmVudCkgPz8gc3RhcnRFdmVudC5jcmVhdGVkQXQsXG4gICAgcmVzdW1lQXQ6IHN0YXJ0RXZlbnQuZXZlbnREYXRhPy5yZXN1bWVBdFxuICAgICAgPyBuZXcgRGF0ZShzdGFydEV2ZW50LmV2ZW50RGF0YS5yZXN1bWVBdClcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGNvbXBsZXRlZEF0OiBnZXRFdmVudFRpbWVzdGFtcChjb21wbGV0ZWRFdmVudCksXG4gIH07XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgd29ya2Zsb3cgV2FpdCB0byBhbiBPcGVuVGVsZW1ldHJ5IFNwYW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhaXRUb1NwYW4oXG4gIGV2ZW50czogRXZlbnRbXSxcbiAgbWF4RW5kVGltZTogRGF0ZSxcbiAgZmFsbGJhY2tFbmRUaW1lID0gbWF4RW5kVGltZVxuKTogU3BhbiB8IG51bGwge1xuICBjb25zdCB3YWl0ID0gd2FpdEV2ZW50c1RvV2FpdEVudGl0eShldmVudHMpO1xuICBpZiAoIXdhaXQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBzdGFydFRpbWUgPSB3YWl0LmNyZWF0ZWRBdDtcbiAgY29uc3Qgc3RhcnRNcyA9IHN0YXJ0VGltZS5nZXRUaW1lKCk7XG4gIGxldCBlbmRUaW1lID0gd2FpdC5jb21wbGV0ZWRBdDtcbiAgaWYgKCFlbmRUaW1lKSB7XG4gICAgY29uc3QgZmFsbGJhY2tDYXAgPVxuICAgICAgd2FpdC5yZXN1bWVBdCAmJiB3YWl0LnJlc3VtZUF0LmdldFRpbWUoKSA8IGZhbGxiYWNrRW5kVGltZS5nZXRUaW1lKClcbiAgICAgICAgPyB3YWl0LnJlc3VtZUF0XG4gICAgICAgIDogZmFsbGJhY2tFbmRUaW1lO1xuICAgIGVuZFRpbWUgPVxuICAgICAgbWF4RW5kVGltZS5nZXRUaW1lKCkgPiBzdGFydE1zICYmXG4gICAgICBtYXhFbmRUaW1lLmdldFRpbWUoKSA8IGZhbGxiYWNrQ2FwLmdldFRpbWUoKVxuICAgICAgICA/IG1heEVuZFRpbWVcbiAgICAgICAgOiBmYWxsYmFja0NhcDtcbiAgfVxuICBjb25zdCBzdGFydCA9IGRhdGVUb090ZWxUaW1lKHN0YXJ0VGltZSk7XG4gIGNvbnN0IGVuZCA9IGRhdGVUb090ZWxUaW1lKGVuZFRpbWUpO1xuICBjb25zdCBkdXJhdGlvbiA9IGNhbGN1bGF0ZUR1cmF0aW9uKHN0YXJ0VGltZSwgZW5kVGltZSk7XG4gIGNvbnN0IHNwYW5FdmVudHMgPSBjb252ZXJ0RXZlbnRzVG9TcGFuRXZlbnRzKGV2ZW50cywgZmFsc2UpO1xuICByZXR1cm4ge1xuICAgIHNwYW5JZDogd2FpdC53YWl0SWQsXG4gICAgbmFtZTogJ3NsZWVwJyxcbiAgICBraW5kOiAxLCAvLyBJTlRFUk5BTCBzcGFuIGtpbmRcbiAgICByZXNvdXJjZTogJ3NsZWVwJyxcbiAgICBsaWJyYXJ5OiBXT1JLRkxPV19MSUJSQVJZLFxuICAgIHN0YXR1czogeyBjb2RlOiAwIH0sXG4gICAgdHJhY2VGbGFnczogMSxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICByZXNvdXJjZTogJ3NsZWVwJyBhcyBjb25zdCxcbiAgICAgIGRhdGE6IHdhaXQsIC8vIHdhaXQgaXMgYSBwbGFpbiBvYmplY3QgYnVpbHQgZnJvbSBldmVudHMsIG5vIG5vbi1jbG9uZWFibGUgdHlwZXNcbiAgICB9LFxuICAgIGxpbmtzOiBbXSxcbiAgICBldmVudHM6IHNwYW5FdmVudHMsXG4gICAgZHVyYXRpb24sXG4gICAgc3RhcnRUaW1lOiBzdGFydCxcbiAgICBlbmRUaW1lOiBlbmQsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzdGVwRXZlbnRzVG9TdGVwRW50aXR5ID0gKFxuICBldmVudHM6IEV2ZW50W11cbik6IHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHN0ZXBOYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogJ3BlbmRpbmcnIHwgJ3J1bm5pbmcnIHwgJ2NvbXBsZXRlZCcgfCAnZmFpbGVkJyB8ICdjYW5jZWxsZWQnO1xuICBhdHRlbXB0OiBudW1iZXI7XG4gIGNyZWF0ZWRBdDogRGF0ZTtcbiAgdXBkYXRlZEF0OiBEYXRlO1xuICBzdGFydGVkQXQ/OiBEYXRlO1xuICBjb21wbGV0ZWRBdD86IERhdGU7XG4gIHNwZWNWZXJzaW9uPzogbnVtYmVyO1xufSB8IG51bGwgPT4ge1xuICBjb25zdCBjcmVhdGVkRXZlbnQgPSBldmVudHMuZmluZChcbiAgICAoZXZlbnQpID0+IGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY3JlYXRlZCdcbiAgKTtcblxuICAvLyBWMSBydW5zIGRvbid0IGVtaXQgc3RlcF9jcmVhdGVkIGV2ZW50cy4gRmFsbCBiYWNrIHRvIHRoZSBlYXJsaWVzdCBldmVudFxuICAvLyBpbiB0aGUgZ3JvdXAgc28gd2UgY2FuIHN0aWxsIGJ1aWxkIGEgc3RlcCBzcGFuLlxuICBjb25zdCBhbmNob3JFdmVudCA9IGNyZWF0ZWRFdmVudCA/PyBldmVudHNbMF07XG4gIGlmICghYW5jaG9yRXZlbnQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFdhbGsgZXZlbnRzIGluIG9yZGVyIHRvIGRlcml2ZSBzdGF0dXMsIGF0dGVtcHQgY291bnQsIGFuZCB0aW1lc3RhbXBzLlxuICAvLyBIYW5kbGVzIGJvdGggc3RlcF9yZXRyeWluZyBhbmQgY29uc2VjdXRpdmUgc3RlcF9zdGFydGVkIGFzIHJldHJ5IHNpZ25hbHMuXG4gIGxldCBzdGF0dXM6ICdwZW5kaW5nJyB8ICdydW5uaW5nJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCcgfCAnY2FuY2VsbGVkJyA9XG4gICAgJ3BlbmRpbmcnO1xuICBsZXQgYXR0ZW1wdCA9IDA7XG4gIGxldCBzdGFydGVkQXQ6IERhdGUgfCB1bmRlZmluZWQ7XG4gIGxldCBjb21wbGV0ZWRBdDogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IGUgb2YgZXZlbnRzKSB7XG4gICAgc3dpdGNoIChlLmV2ZW50VHlwZSkge1xuICAgICAgY2FzZSAnc3RlcF9zdGFydGVkJzpcbiAgICAgICAgc3RhdHVzID0gJ3J1bm5pbmcnO1xuICAgICAgICBhdHRlbXB0ICs9IDE7XG4gICAgICAgIGlmICghc3RhcnRlZEF0KSBzdGFydGVkQXQgPSBnZXRFdmVudFRpbWVzdGFtcChlKSA/PyBlLmNyZWF0ZWRBdDtcbiAgICAgICAgY29tcGxldGVkQXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RlcF9jb21wbGV0ZWQnOlxuICAgICAgICBzdGF0dXMgPSAnY29tcGxldGVkJztcbiAgICAgICAgY29tcGxldGVkQXQgPSBnZXRFdmVudFRpbWVzdGFtcChlKSA/PyBlLmNyZWF0ZWRBdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdGVwX2ZhaWxlZCc6XG4gICAgICAgIHN0YXR1cyA9ICdmYWlsZWQnO1xuICAgICAgICBjb21wbGV0ZWRBdCA9IGdldEV2ZW50VGltZXN0YW1wKGUpID8/IGUuY3JlYXRlZEF0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N0ZXBfcmV0cnlpbmcnOlxuICAgICAgICBzdGF0dXMgPSAncGVuZGluZyc7XG4gICAgICAgIGNvbXBsZXRlZEF0ID0gdW5kZWZpbmVkO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBFbnN1cmUgYXQgbGVhc3QgYXR0ZW1wdCAxIGlmIHdlIG5ldmVyIHNhdyBzdGVwX3N0YXJ0ZWRcbiAgaWYgKGF0dGVtcHQgPT09IDApIGF0dGVtcHQgPSAxO1xuXG4gIGNvbnN0IGxhc3RFdmVudCA9IGV2ZW50c1tldmVudHMubGVuZ3RoIC0gMV07XG5cbiAgcmV0dXJuIHtcbiAgICBzdGVwSWQ6IGFuY2hvckV2ZW50LmNvcnJlbGF0aW9uSWQgPz8gJycsXG4gICAgcnVuSWQ6IGFuY2hvckV2ZW50LnJ1bklkLFxuICAgIHN0ZXBOYW1lOiBjcmVhdGVkRXZlbnQ/LmV2ZW50RGF0YT8uc3RlcE5hbWUgPz8gJycsXG4gICAgc3RhdHVzLFxuICAgIGF0dGVtcHQsXG4gICAgY3JlYXRlZEF0OiBnZXRFdmVudFRpbWVzdGFtcChhbmNob3JFdmVudCkgPz8gYW5jaG9yRXZlbnQuY3JlYXRlZEF0LFxuICAgIHVwZGF0ZWRBdDpcbiAgICAgIGdldEV2ZW50VGltZXN0YW1wKGxhc3RFdmVudCkgPz9cbiAgICAgIGxhc3RFdmVudD8uY3JlYXRlZEF0ID8/XG4gICAgICBhbmNob3JFdmVudC5jcmVhdGVkQXQsXG4gICAgc3RhcnRlZEF0LFxuICAgIGNvbXBsZXRlZEF0LFxuICAgIHNwZWNWZXJzaW9uOiBhbmNob3JFdmVudC5zcGVjVmVyc2lvbixcbiAgfTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgc3RlcCBldmVudHMgdG8gYW4gT3BlblRlbGVtZXRyeSBTcGFuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGVwVG9TcGFuKHN0ZXBFdmVudHM6IEV2ZW50W10sIG1heEVuZFRpbWU6IERhdGUpOiBTcGFuIHwgbnVsbCB7XG4gIGNvbnN0IHN0ZXAgPSBzdGVwRXZlbnRzVG9TdGVwRW50aXR5KHN0ZXBFdmVudHMpO1xuICBpZiAoIXN0ZXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBwYXJzZWROYW1lID0gcGFyc2VTdGVwTmFtZShTdHJpbmcoc3RlcC5zdGVwTmFtZSkpO1xuXG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSB7XG4gICAgcmVzb3VyY2U6ICdzdGVwJyBhcyBjb25zdCxcbiAgICBkYXRhOiBzdGVwLFxuICB9O1xuXG4gIGNvbnN0IHJlc291cmNlID0gJ3N0ZXAnO1xuXG4gIC8vIEluY2x1ZGUgQUxMIGNvcnJlbGF0ZWQgZXZlbnRzIG9uIHRoZSBzcGFuIHNvIHRoZSBzaWRlYmFyIGRldGFpbCB2aWV3XG4gIC8vIGNhbiBkaXNwbGF5IHRoZW0uIFRoZSB0aW1lbGluZSB1c2VzIHRoZSBgc2hvd1ZlcnRpY2FsTGluZWAgZmxhZyB0b1xuICAvLyBkZXRlcm1pbmUgd2hpY2ggZXZlbnRzIGFwcGVhciBhcyBtYXJrZXJzLlxuICBjb25zdCBldmVudHMgPSBjb252ZXJ0RXZlbnRzVG9TcGFuRXZlbnRzKHN0ZXBFdmVudHMsIGZhbHNlLCB7XG4gICAgcHJlZmVyT2NjdXJyZWRBdDogdHJ1ZSxcbiAgfSk7XG5cbiAgLy8gVXNlIHRoZSBldmVudCBvY2N1cnJlbmNlIHRpbWVzdGFtcCBmb3Igc3RlcCBzcGFucyB3aGVuIGl0IGlzIGF2YWlsYWJsZSxcbiAgLy8gZmFsbGluZyBiYWNrIHRvIHRoZSBpbmdlc3QgdGltZXN0YW1wIHVzZWQgYnkgb2xkZXIgZXZlbnQgc3RyZWFtcy5cbiAgY29uc3Qgc3BhblN0YXJ0RXZlbnQgPVxuICAgIHN0ZXBFdmVudHMuZmluZCgoZXZlbnQpID0+IGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY3JlYXRlZCcpID8/XG4gICAgc3RlcEV2ZW50c1swXTtcbiAgY29uc3Qgc3BhblN0YXJ0VGltZSA9XG4gICAgZ2V0RXZlbnRUaW1lc3RhbXAoc3BhblN0YXJ0RXZlbnQpID8/IG5ldyBEYXRlKHN0ZXAuY3JlYXRlZEF0KTtcbiAgbGV0IGFjdGl2ZVN0YXJ0VGltZSA9IHN0ZXAuc3RhcnRlZEF0ID8gbmV3IERhdGUoc3RlcC5zdGFydGVkQXQpIDogdW5kZWZpbmVkO1xuICBjb25zdCBmaXJzdFN0YXJ0RXZlbnQgPSBzdGVwRXZlbnRzLmZpbmQoXG4gICAgKGV2ZW50KSA9PiBldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX3N0YXJ0ZWQnXG4gICk7XG4gIGlmIChmaXJzdFN0YXJ0RXZlbnQpIHtcbiAgICBhY3RpdmVTdGFydFRpbWUgPVxuICAgICAgZ2V0RXZlbnRUaW1lc3RhbXAoZmlyc3RTdGFydEV2ZW50KSA/PyBuZXcgRGF0ZShmaXJzdFN0YXJ0RXZlbnQuY3JlYXRlZEF0KTtcbiAgfVxuXG4gIGxldCBlbmRUaW1lID0gbmV3IERhdGUobWF4RW5kVGltZSk7XG4gIGlmIChzdGVwLmNvbXBsZXRlZEF0KSB7XG4gICAgY29uc3QgY29tcGxldGVkRXZlbnQgPSBzdGVwRXZlbnRzXG4gICAgICAuc2xpY2UoKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoXG4gICAgICAgIChldmVudCkgPT5cbiAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2NvbXBsZXRlZCcgfHxcbiAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2ZhaWxlZCdcbiAgICAgICk7XG4gICAgZW5kVGltZSA9IGdldEV2ZW50VGltZXN0YW1wKGNvbXBsZXRlZEV2ZW50KSA/PyBuZXcgRGF0ZShzdGVwLmNvbXBsZXRlZEF0KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3BhbklkOiBTdHJpbmcoc3RlcC5zdGVwSWQpLFxuICAgIG5hbWU6IHBhcnNlZE5hbWU/LnNob3J0TmFtZSA/PyBTdHJpbmcoc3RlcC5zdGVwTmFtZSksXG4gICAga2luZDogMSwgLy8gSU5URVJOQUwgc3BhbiBraW5kXG4gICAgcmVzb3VyY2UsXG4gICAgbGlicmFyeTogV09SS0ZMT1dfTElCUkFSWSxcbiAgICBzdGF0dXM6IHsgY29kZTogMCB9LFxuICAgIHRyYWNlRmxhZ3M6IDEsXG4gICAgYXR0cmlidXRlcyxcbiAgICBsaW5rczogW10sXG4gICAgZXZlbnRzLFxuICAgIHN0YXJ0VGltZTogZGF0ZVRvT3RlbFRpbWUoc3BhblN0YXJ0VGltZSksXG4gICAgZW5kVGltZTogZGF0ZVRvT3RlbFRpbWUoZW5kVGltZSksXG4gICAgZHVyYXRpb246IGNhbGN1bGF0ZUR1cmF0aW9uKHNwYW5TdGFydFRpbWUsIGVuZFRpbWUpLFxuICAgIC8vIE9ubHkgc2V0IGFjdGl2ZVN0YXJ0VGltZSBpZiBpdCBkaWZmZXJzIGZyb20gc3RhcnRUaW1lIChpLmUuLCB0aGVyZSB3YXMgYSBxdWV1ZWQgcGVyaW9kKVxuICAgIGFjdGl2ZVN0YXJ0VGltZTpcbiAgICAgIGFjdGl2ZVN0YXJ0VGltZSAmJiBhY3RpdmVTdGFydFRpbWUuZ2V0VGltZSgpID4gc3BhblN0YXJ0VGltZS5nZXRUaW1lKClcbiAgICAgICAgPyBkYXRlVG9PdGVsVGltZShhY3RpdmVTdGFydFRpbWUpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgaG9va0V2ZW50c1RvSG9va0VudGl0eSA9IChcbiAgZXZlbnRzOiBFdmVudFtdXG4pOiB7XG4gIGhvb2tJZDogc3RyaW5nO1xuICBydW5JZDogc3RyaW5nO1xuICB0b2tlbj86IHN0cmluZztcbiAgY3JlYXRlZEF0OiBEYXRlO1xuICByZWNlaXZlZENvdW50OiBudW1iZXI7XG4gIGxhc3RSZWNlaXZlZEF0PzogRGF0ZTtcbiAgZGlzcG9zZWRBdD86IERhdGU7XG59IHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNyZWF0ZWRFdmVudCA9IGV2ZW50cy5maW5kKFxuICAgIChldmVudCkgPT4gZXZlbnQuZXZlbnRUeXBlID09PSAnaG9va19jcmVhdGVkJ1xuICApO1xuICBpZiAoIWNyZWF0ZWRFdmVudCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHJlY2VpdmVkRXZlbnRzID0gZXZlbnRzLmZpbHRlcihcbiAgICAoZXZlbnQpID0+IGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfcmVjZWl2ZWQnXG4gICk7XG4gIGNvbnN0IGRpc3Bvc2VkRXZlbnRzID0gZXZlbnRzLmZpbHRlcihcbiAgICAoZXZlbnQpID0+IGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfZGlzcG9zZWQnXG4gICk7XG4gIGNvbnN0IGxhc3RSZWNlaXZlZEV2ZW50ID0gcmVjZWl2ZWRFdmVudHMuYXQoLTEpO1xuICByZXR1cm4ge1xuICAgIGhvb2tJZDogY3JlYXRlZEV2ZW50LmNvcnJlbGF0aW9uSWQsXG4gICAgcnVuSWQ6IGNyZWF0ZWRFdmVudC5ydW5JZCxcbiAgICB0b2tlbjogY3JlYXRlZEV2ZW50LmV2ZW50RGF0YT8udG9rZW4sXG4gICAgY3JlYXRlZEF0OiBnZXRFdmVudFRpbWVzdGFtcChjcmVhdGVkRXZlbnQpID8/IGNyZWF0ZWRFdmVudC5jcmVhdGVkQXQsXG4gICAgcmVjZWl2ZWRDb3VudDogcmVjZWl2ZWRFdmVudHMubGVuZ3RoLFxuICAgIGxhc3RSZWNlaXZlZEF0OiBnZXRFdmVudFRpbWVzdGFtcChsYXN0UmVjZWl2ZWRFdmVudCksXG4gICAgZGlzcG9zZWRBdDogZ2V0RXZlbnRUaW1lc3RhbXAoZGlzcG9zZWRFdmVudHMuYXQoLTEpKSxcbiAgfTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSB3b3JrZmxvdyBIb29rIHRvIGFuIE9wZW5UZWxlbWV0cnkgU3BhblxuICovXG5leHBvcnQgZnVuY3Rpb24gaG9va1RvU3Bhbihob29rRXZlbnRzOiBFdmVudFtdLCBtYXhFbmRUaW1lOiBEYXRlKTogU3BhbiB8IG51bGwge1xuICBjb25zdCBob29rID0gaG9va0V2ZW50c1RvSG9va0VudGl0eShob29rRXZlbnRzKTtcbiAgaWYgKCFob29rKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBDb252ZXJ0IGhvb2stcmVsYXRlZCBldmVudHMgdG8gc3BhbiBldmVudHNcbiAgY29uc3QgZXZlbnRzID0gY29udmVydEV2ZW50c1RvU3BhbkV2ZW50cyhob29rRXZlbnRzLCBmYWxzZSk7XG5cbiAgY29uc3QgZW5kVGltZSA9IGhvb2suZGlzcG9zZWRBdCB8fCBtYXhFbmRUaW1lO1xuXG4gIHJldHVybiB7XG4gICAgc3BhbklkOiBTdHJpbmcoaG9vay5ob29rSWQpLFxuICAgIG5hbWU6IGhvb2sudG9rZW4gPz8gU3RyaW5nKGhvb2suaG9va0lkKSxcbiAgICBraW5kOiAxLCAvLyBJTlRFUk5BTCBzcGFuIGtpbmRcbiAgICByZXNvdXJjZTogJ2hvb2snLFxuICAgIGxpYnJhcnk6IFdPUktGTE9XX0xJQlJBUlksXG4gICAgc3RhdHVzOiB7IGNvZGU6IDEgfSxcbiAgICB0cmFjZUZsYWdzOiAxLFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgIHJlc291cmNlOiAnaG9vaycgYXMgY29uc3QsXG4gICAgICBkYXRhOiBob29rLFxuICAgIH0sXG4gICAgbGlua3M6IFtdLFxuICAgIGV2ZW50cyxcbiAgICBzdGFydFRpbWU6IGRhdGVUb090ZWxUaW1lKGhvb2suY3JlYXRlZEF0KSxcbiAgICBlbmRUaW1lOiBkYXRlVG9PdGVsVGltZShlbmRUaW1lKSxcbiAgICBkdXJhdGlvbjogY2FsY3VsYXRlRHVyYXRpb24oaG9vay5jcmVhdGVkQXQsIGVuZFRpbWUpLFxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSByb290IHNwYW4gZm9yIHRoZSB3b3JrZmxvdyBydW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blRvU3BhbihcbiAgcnVuOiBXb3JrZmxvd1J1bixcbiAgcnVuRXZlbnRzOiBFdmVudFtdLFxuICBub3dUaW1lPzogRGF0ZVxuKTogU3BhbiB7XG4gIGNvbnN0IG5vdyA9IG5vd1RpbWUgPz8gbmV3IERhdGUoKTtcblxuICAvLyBQcmVmZXIgdGhlIGV2ZW50IG9jY3VycmVuY2UgdGltZXN0YW1wIHdoZW4gYXZhaWxhYmxlIHNvIHRoZSByb290IHNwYW5cbiAgLy8gbGluZXMgdXAgd2l0aCBjaGlsZCBzcGFucyB0aGF0IGFscmVhZHkgdXNlIGV2ZW50IG9jY3VycmVuY2UgdGltZS5cbiAgY29uc3QgcnVuQ3JlYXRlZEV2ZW50ID0gcnVuRXZlbnRzLmZpbmQoXG4gICAgKGV2ZW50KSA9PiBldmVudC5ldmVudFR5cGUgPT09ICdydW5fY3JlYXRlZCdcbiAgKTtcbiAgY29uc3QgcnVuU3RhcnRlZEV2ZW50ID0gcnVuRXZlbnRzLmZpbmQoXG4gICAgKGV2ZW50KSA9PiBldmVudC5ldmVudFR5cGUgPT09ICdydW5fc3RhcnRlZCdcbiAgKTtcbiAgY29uc3QgdGVybWluYWxFdmVudCA9IHJ1bkV2ZW50c1xuICAgIC5zbGljZSgpXG4gICAgLnJldmVyc2UoKVxuICAgIC5maW5kKFxuICAgICAgKGV2ZW50KSA9PlxuICAgICAgICBldmVudC5ldmVudFR5cGUgPT09ICdydW5fY29tcGxldGVkJyB8fFxuICAgICAgICBldmVudC5ldmVudFR5cGUgPT09ICdydW5fZmFpbGVkJyB8fFxuICAgICAgICBldmVudC5ldmVudFR5cGUgPT09ICdydW5fY2FuY2VsbGVkJ1xuICAgICk7XG4gIGNvbnN0IHNwYW5TdGFydFRpbWUgPVxuICAgIGdldEV2ZW50VGltZXN0YW1wKHJ1bkNyZWF0ZWRFdmVudCkgPz8gbmV3IERhdGUocnVuLmNyZWF0ZWRBdCk7XG4gIGNvbnN0IGFjdGl2ZVN0YXJ0VGltZSA9XG4gICAgZ2V0RXZlbnRUaW1lc3RhbXAocnVuU3RhcnRlZEV2ZW50KSA/P1xuICAgIChydW4uc3RhcnRlZEF0ID8gbmV3IERhdGUocnVuLnN0YXJ0ZWRBdCkgOiB1bmRlZmluZWQpO1xuICBjb25zdCBjb21wbGV0ZWRBdCA9XG4gICAgZ2V0RXZlbnRUaW1lc3RhbXAodGVybWluYWxFdmVudCkgPz8gcnVuLmNvbXBsZXRlZEF0ID8/IHVuZGVmaW5lZDtcbiAgY29uc3QgZW5kVGltZSA9IGNvbXBsZXRlZEF0ID8/IG5vdztcblxuICAvLyBPbmx5IGVtYmVkIGlkZW50aWZpY2F0aW9uIGZpZWxkcyDigJQgbm90IHRoZSBmdWxsIG9iamVjdCB3aXRoXG4gIC8vIGlucHV0L291dHB1dC9lcnJvciB3aGljaCBtYXkgY29udGFpbiBub24tY2xvbmVhYmxlIHR5cGVzLiBMaWZlY3ljbGVcbiAgLy8gdGltZXN0YW1wcyBhcmUgZXZlbnQtZGVyaXZlZCBzbyBkZXRhaWwgcm93cyBhbGlnbiB3aXRoIHRoZSBzcGFuIHRpbWVsaW5lLlxuICBjb25zdCB7IGlucHV0OiBfaSwgb3V0cHV0OiBfbywgZXJyb3I6IF9lLCAuLi5ydW5JZGVudGl0eSB9ID0gcnVuO1xuICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgIHJlc291cmNlOiAncnVuJyBhcyBjb25zdCxcbiAgICBkYXRhOiB7XG4gICAgICAuLi5ydW5JZGVudGl0eSxcbiAgICAgIGNyZWF0ZWRBdDogc3BhblN0YXJ0VGltZSxcbiAgICAgIHN0YXJ0ZWRBdDogYWN0aXZlU3RhcnRUaW1lLFxuICAgICAgY29tcGxldGVkQXQsXG4gICAgfSxcbiAgfTtcblxuICAvLyBDb252ZXJ0IHJ1bi1sZXZlbCBldmVudHMgdG8gc3BhbiBldmVudHNcbiAgY29uc3QgZXZlbnRzID0gY29udmVydEV2ZW50c1RvU3BhbkV2ZW50cyhydW5FdmVudHMsIGZhbHNlLCB7XG4gICAgcHJlZmVyT2NjdXJyZWRBdDogdHJ1ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzcGFuSWQ6IFN0cmluZyhydW4ucnVuSWQpLFxuICAgIG5hbWU6IFN0cmluZyhwYXJzZVdvcmtmbG93TmFtZShydW4ud29ya2Zsb3dOYW1lKT8uc2hvcnROYW1lID8/ICc/JyksXG4gICAga2luZDogMSwgLy8gSU5URVJOQUwgc3BhbiBraW5kXG4gICAgcmVzb3VyY2U6ICdydW4nLFxuICAgIGxpYnJhcnk6IFdPUktGTE9XX0xJQlJBUlksXG4gICAgc3RhdHVzOiB7IGNvZGU6IDAgfSxcbiAgICB0cmFjZUZsYWdzOiAxLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgbGlua3M6IFtdLFxuICAgIGV2ZW50cyxcbiAgICBzdGFydFRpbWU6IGRhdGVUb090ZWxUaW1lKHNwYW5TdGFydFRpbWUpLFxuICAgIGVuZFRpbWU6IGRhdGVUb090ZWxUaW1lKGVuZFRpbWUpLFxuICAgIGR1cmF0aW9uOiBjYWxjdWxhdGVEdXJhdGlvbihzcGFuU3RhcnRUaW1lLCBlbmRUaW1lKSxcbiAgICAvLyBPbmx5IHNldCBhY3RpdmVTdGFydFRpbWUgaWYgaXQgZGlmZmVycyBmcm9tIHN0YXJ0VGltZSAoaS5lLiwgdGhlcmUgd2FzIGEgcXVldWVkIHBlcmlvZClcbiAgICBhY3RpdmVTdGFydFRpbWU6XG4gICAgICBhY3RpdmVTdGFydFRpbWUgJiYgYWN0aXZlU3RhcnRUaW1lLmdldFRpbWUoKSA+IHNwYW5TdGFydFRpbWUuZ2V0VGltZSgpXG4gICAgICAgID8gZGF0ZVRvT3RlbFRpbWUoYWN0aXZlU3RhcnRUaW1lKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cbiJdfQ==
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2Utc3Bhbi1jb25zdHJ1Y3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy93b3JrZmxvdy10cmFjZXMvdHJhY2Utc3Bhbi1jb25zdHJ1Y3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUVMLHVCQUF1QixHQUV4QixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixJQUFJLEVBQUUsMEJBQTBCO0lBQ2hDLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sa0JBQWtCLEdBQTRCLElBQUksR0FBRyxDQUFDO0lBQzFELGNBQWM7SUFDZCxlQUFlO0lBQ2YsZUFBZTtJQUNmLGNBQWM7SUFDZCxlQUFlO0lBQ2YsYUFBYTtJQUNiLFlBQVk7SUFDWixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLFVBQVU7Q0FDWCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUMvQixLQUF3QixFQUNOLEVBQUU7SUFDcEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLFVBQVUsSUFBSSxLQUFLLEVBQUUsU0FBUyxDQUFDO0lBQ3BELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFN0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxP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QUFTLEVBQUUsS0FBSyxFQUFFO1FBQ3pELGdCQUFnQixFQUFFLElBQUk7S0FDdkIsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxTQUFTLElBQUksR0FBRyxDQUFDO1FBQ25FLElBQUksRUFBRSxDQUFDLEVBQUUscUJBQXFCO1FBQzlCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLGdCQUFnQjtRQUN6QixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQ25CLFVBQVUsRUFBRSxDQUFDO1FBQ2IsVUFBVTtRQUNWLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTTtRQUNOLFNBQVMsRUFBRSxjQUFjLENBQUMsYUFBYSxDQUFDO1FBQ3hDLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQ2hDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDO1FBQ25ELDBGQUEwRjtRQUMxRixlQUFlLEVBQ2IsZUFBZSxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ3BFLENBQUMsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxTQUFTO0tBQ2hCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGdW5jdGlvbnMgZm9yIGNvbnN0cnVjdGluZyBPcGVuVGVsZW1ldHJ5IHNwYW5zIGZyb20gd29ya2Zsb3cgZW50aXRpZXNcbiAqL1xuXG5pbXBvcnQgeyBwYXJzZVN0ZXBOYW1lLCBwYXJzZVdvcmtmbG93TmFtZSB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmltcG9ydCB7XG4gIHR5cGUgRXZlbnQsXG4gIGlzVGVybWluYWxTdGVwRXZlbnRUeXBlLFxuICB0eXBlIFdvcmtmbG93UnVuLFxufSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHR5cGUgeyBTcGFuLCBTcGFuRXZlbnQgfSBmcm9tICcuLi90cmFjZS12aWV3ZXIvdHlwZXMnO1xuaW1wb3J0IHsgc2hvdWxkU2hvd1ZlcnRpY2FsTGluZSB9IGZyb20gJy4vZXZlbnQtY29sb3JzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUR1cmF0aW9uLCBkYXRlVG9PdGVsVGltZSB9IGZyb20gJy4vdHJhY2UtdGltZS11dGlscyc7XG5cbmV4cG9ydCBjb25zdCBXT1JLRkxPV19MSUJSQVJZID0ge1xuICBuYW1lOiAnd29ya2Zsb3ctZGV2ZWxvcG1lbnQta2l0JyxcbiAgdmVyc2lvbjogJzQuMC4wJyxcbn07XG5cbi8qKlxuICogRXZlbnQgdHlwZXMgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGFzIHZpc3VhbCBtYXJrZXJzIGluIHRoZSB0cmFjZSB2aWV3ZXJcbiAqL1xuY29uc3QgTUFSS0VSX0VWRU5UX1RZUEVTOiBTZXQ8RXZlbnRbJ2V2ZW50VHlwZSddPiA9IG5ldyBTZXQoW1xuICAnaG9va19jcmVhdGVkJyxcbiAgJ2hvb2tfcmVjZWl2ZWQnLFxuICAnaG9va19kaXNwb3NlZCcsXG4gICdzdGVwX3N0YXJ0ZWQnLFxuICAnc3RlcF9yZXRyeWluZycsXG4gICdzdGVwX2ZhaWxlZCcsXG4gICdydW5fZmFpbGVkJyxcbiAgJ3dhaXRfY3JlYXRlZCcsXG4gICd3YWl0X2NvbXBsZXRlZCcsXG4gICdhdHRyX3NldCcsXG5dKTtcblxuZXhwb3J0IGNvbnN0IGdldEV2ZW50VGltZXN0YW1wID0gKFxuICBldmVudDogRXZlbnQgfCB1bmRlZmluZWRcbik6IERhdGUgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB2YWx1ZSA9IGV2ZW50Py5vY2N1cnJlZEF0ID8/IGV2ZW50Py5jcmVhdGVkQXQ7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZGF0ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpO1xuICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IHVuZGVmaW5lZCA6IGRhdGU7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgd29ya2Zsb3cgZXZlbnRzIHRvIHNwYW4gZXZlbnRzXG4gKiBPbmx5IGluY2x1ZGVzIGV2ZW50cyB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgbWFya2Vyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEV2ZW50c1RvU3BhbkV2ZW50cyhcbiAgZXZlbnRzOiBFdmVudFtdLFxuICBmaWx0ZXJUeXBlcyA9IHRydWUsXG4gIG9wdGlvbnM6IHsgcHJlZmVyT2NjdXJyZWRBdD86IGJvb2xlYW4gfSA9IHt9XG4pOiBTcGFuRXZlbnRbXSB7XG4gIHJldHVybiBldmVudHNcbiAgICAuZmlsdGVyKChldmVudCkgPT5cbiAgICAgIGZpbHRlclR5cGVzID8gTUFSS0VSX0VWRU5UX1RZUEVTLmhhcyhldmVudC5ldmVudFR5cGUpIDogdHJ1ZVxuICAgIClcbiAgICAubWFwKChldmVudCkgPT4gKHtcbiAgICAgIG5hbWU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgIHRpbWVzdGFtcDogZGF0ZVRvT3RlbFRpbWUoXG4gICAgICAgIG9wdGlvbnMucHJlZmVyT2NjdXJyZWRBdFxuICAgICAgICAgID8gKGdldEV2ZW50VGltZXN0YW1wKGV2ZW50KSA/PyBldmVudC5jcmVhdGVkQXQpXG4gICAgICAgICAgOiBldmVudC5jcmVhdGVkQXRcbiAgICAgICksXG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGV2ZW50SWQ6IGV2ZW50LmV2ZW50SWQsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQ6IGV2ZW50LmNvcnJlbGF0aW9uSWQsXG4gICAgICAgIGV2ZW50RGF0YTogJ2V2ZW50RGF0YScgaW4gZXZlbnQgPyBldmVudC5ldmVudERhdGEgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgLy8gQ29udHJvbCB3aGV0aGVyIHRvIHNob3cgdmVydGljYWwgbGluZSBpbiB0aW1lbGluZVxuICAgICAgc2hvd1ZlcnRpY2FsTGluZTogc2hvdWxkU2hvd1ZlcnRpY2FsTGluZShldmVudC5ldmVudFR5cGUpLFxuICAgIH0pKTtcbn1cblxuZXhwb3J0IGNvbnN0IHdhaXRFdmVudHNUb1dhaXRFbnRpdHkgPSAoXG4gIGV2ZW50czogRXZlbnRbXVxuKToge1xuICB3YWl0SWQ6IHN0cmluZztcbiAgcnVuSWQ6IHN0cmluZztcbiAgY3JlYXRlZEF0OiBEYXRlO1xuICByZXN1bWVBdD86IERhdGU7XG4gIGNvbXBsZXRlZEF0PzogRGF0ZTtcbn0gfCBudWxsID0+IHtcbiAgY29uc3Qgc3RhcnRFdmVudCA9IGV2ZW50cy5maW5kKChldmVudCkgPT4gZXZlbnQuZXZlbnRUeXBlID09PSAnd2FpdF9jcmVhdGVkJyk7XG4gIGlmICghc3RhcnRFdmVudCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGNvbXBsZXRlZEV2ZW50ID0gZXZlbnRzLmZpbmQoXG4gICAgKGV2ZW50KSA9PiBldmVudC5ldmVudFR5cGUgPT09ICd3YWl0X2NvbXBsZXRlZCdcbiAgKTtcbiAgcmV0dXJuIHtcbiAgICB3YWl0SWQ6IHN0YXJ0RXZlbnQuY29ycmVsYXRpb25JZCxcbiAgICBydW5JZDogc3RhcnRFdmVudC5ydW5JZCxcbiAgICBjcmVhdGVkQXQ6IGdldEV2ZW50VGltZXN0YW1wKHN0YXJ0RXZlbnQpID8/IHN0YXJ0RXZlbnQuY3JlYXRlZEF0LFxuICAgIHJlc3VtZUF0OiBzdGFydEV2ZW50LmV2ZW50RGF0YT8ucmVzdW1lQXRcbiAgICAgID8gbmV3IERhdGUoc3RhcnRFdmVudC5ldmVudERhdGEucmVzdW1lQXQpXG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICBjb21wbGV0ZWRBdDogZ2V0RXZlbnRUaW1lc3RhbXAoY29tcGxldGVkRXZlbnQpLFxuICB9O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHdvcmtmbG93IFdhaXQgdG8gYW4gT3BlblRlbGVtZXRyeSBTcGFuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0VG9TcGFuKFxuICBldmVudHM6IEV2ZW50W10sXG4gIG1heEVuZFRpbWU6IERhdGUsXG4gIGZhbGxiYWNrRW5kVGltZSA9IG1heEVuZFRpbWVcbik6IFNwYW4gfCBudWxsIHtcbiAgY29uc3Qgd2FpdCA9IHdhaXRFdmVudHNUb1dhaXRFbnRpdHkoZXZlbnRzKTtcbiAgaWYgKCF3YWl0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgc3RhcnRUaW1lID0gd2FpdC5jcmVhdGVkQXQ7XG4gIGNvbnN0IHN0YXJ0TXMgPSBzdGFydFRpbWUuZ2V0VGltZSgpO1xuICBsZXQgZW5kVGltZSA9IHdhaXQuY29tcGxldGVkQXQ7XG4gIGlmICghZW5kVGltZSkge1xuICAgIGNvbnN0IGZhbGxiYWNrQ2FwID1cbiAgICAgIHdhaXQucmVzdW1lQXQgJiYgd2FpdC5yZXN1bWVBdC5nZXRUaW1lKCkgPCBmYWxsYmFja0VuZFRpbWUuZ2V0VGltZSgpXG4gICAgICAgID8gd2FpdC5yZXN1bWVBdFxuICAgICAgICA6IGZhbGxiYWNrRW5kVGltZTtcbiAgICBlbmRUaW1lID1cbiAgICAgIG1heEVuZFRpbWUuZ2V0VGltZSgpID4gc3RhcnRNcyAmJlxuICAgICAgbWF4RW5kVGltZS5nZXRUaW1lKCkgPCBmYWxsYmFja0NhcC5nZXRUaW1lKClcbiAgICAgICAgPyBtYXhFbmRUaW1lXG4gICAgICAgIDogZmFsbGJhY2tDYXA7XG4gIH1cbiAgY29uc3Qgc3RhcnQgPSBkYXRlVG9PdGVsVGltZShzdGFydFRpbWUpO1xuICBjb25zdCBlbmQgPSBkYXRlVG9PdGVsVGltZShlbmRUaW1lKTtcbiAgY29uc3QgZHVyYXRpb24gPSBjYWxjdWxhdGVEdXJhdGlvbihzdGFydFRpbWUsIGVuZFRpbWUpO1xuICBjb25zdCBzcGFuRXZlbnRzID0gY29udmVydEV2ZW50c1RvU3BhbkV2ZW50cyhldmVudHMsIGZhbHNlKTtcbiAgcmV0dXJuIHtcbiAgICBzcGFuSWQ6IHdhaXQud2FpdElkLFxuICAgIG5hbWU6ICdzbGVlcCcsXG4gICAga2luZDogMSwgLy8gSU5URVJOQUwgc3BhbiBraW5kXG4gICAgcmVzb3VyY2U6ICdzbGVlcCcsXG4gICAgbGlicmFyeTogV09SS0ZMT1dfTElCUkFSWSxcbiAgICBzdGF0dXM6IHsgY29kZTogMCB9LFxuICAgIHRyYWNlRmxhZ3M6IDEsXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgcmVzb3VyY2U6ICdzbGVlcCcgYXMgY29uc3QsXG4gICAgICBkYXRhOiB3YWl0LCAvLyB3YWl0IGlzIGEgcGxhaW4gb2JqZWN0IGJ1aWx0IGZyb20gZXZlbnRzLCBubyBub24tY2xvbmVhYmxlIHR5cGVzXG4gICAgfSxcbiAgICBsaW5rczogW10sXG4gICAgZXZlbnRzOiBzcGFuRXZlbnRzLFxuICAgIGR1cmF0aW9uLFxuICAgIHN0YXJ0VGltZTogc3RhcnQsXG4gICAgZW5kVGltZTogZW5kLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3Qgc3RlcEV2ZW50c1RvU3RlcEVudGl0eSA9IChcbiAgZXZlbnRzOiBFdmVudFtdXG4pOiB7XG4gIHN0ZXBJZDogc3RyaW5nO1xuICBydW5JZDogc3RyaW5nO1xuICBzdGVwTmFtZTogc3RyaW5nO1xuICBzdGF0dXM6ICdwZW5kaW5nJyB8ICdydW5uaW5nJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCcgfCAnY2FuY2VsbGVkJztcbiAgYXR0ZW1wdDogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IERhdGU7XG4gIHVwZGF0ZWRBdDogRGF0ZTtcbiAgc3RhcnRlZEF0PzogRGF0ZTtcbiAgY29tcGxldGVkQXQ/OiBEYXRlO1xuICBzcGVjVmVyc2lvbj86IG51bWJlcjtcbn0gfCBudWxsID0+IHtcbiAgY29uc3QgY3JlYXRlZEV2ZW50ID0gZXZlbnRzLmZpbmQoXG4gICAgKGV2ZW50KSA9PiBldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2NyZWF0ZWQnXG4gICk7XG5cbiAgLy8gVjEgcnVucyBkb24ndCBlbWl0IHN0ZXBfY3JlYXRlZCBldmVudHMuIEZhbGwgYmFjayB0byB0aGUgZWFybGllc3QgZXZlbnRcbiAgLy8gaW4gdGhlIGdyb3VwIHNvIHdlIGNhbiBzdGlsbCBidWlsZCBhIHN0ZXAgc3Bhbi5cbiAgY29uc3QgYW5jaG9yRXZlbnQgPSBjcmVhdGVkRXZlbnQgPz8gZXZlbnRzWzBdO1xuICBpZiAoIWFuY2hvckV2ZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBXYWxrIGV2ZW50cyBpbiBvcmRlciB0byBkZXJpdmUgc3RhdHVzLCBhdHRlbXB0IGNvdW50LCBhbmQgdGltZXN0YW1wcy5cbiAgLy8gSGFuZGxlcyBib3RoIHN0ZXBfcmV0cnlpbmcgYW5kIGNvbnNlY3V0aXZlIHN0ZXBfc3RhcnRlZCBhcyByZXRyeSBzaWduYWxzLlxuICBsZXQgc3RhdHVzOiAncGVuZGluZycgfCAncnVubmluZycgfCAnY29tcGxldGVkJyB8ICdmYWlsZWQnIHwgJ2NhbmNlbGxlZCcgPVxuICAgICdwZW5kaW5nJztcbiAgbGV0IGF0dGVtcHQgPSAwO1xuICBsZXQgc3RhcnRlZEF0OiBEYXRlIHwgdW5kZWZpbmVkO1xuICBsZXQgY29tcGxldGVkQXQ6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChjb25zdCBlIG9mIGV2ZW50cykge1xuICAgIHN3aXRjaCAoZS5ldmVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0ZXBfc3RhcnRlZCc6XG4gICAgICAgIHN0YXR1cyA9ICdydW5uaW5nJztcbiAgICAgICAgYXR0ZW1wdCArPSAxO1xuICAgICAgICBpZiAoIXN0YXJ0ZWRBdCkgc3RhcnRlZEF0ID0gZ2V0RXZlbnRUaW1lc3RhbXAoZSkgPz8gZS5jcmVhdGVkQXQ7XG4gICAgICAgIGNvbXBsZXRlZEF0ID0gdW5kZWZpbmVkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N0ZXBfY29tcGxldGVkJzpcbiAgICAgICAgc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgIGNvbXBsZXRlZEF0ID0gZ2V0RXZlbnRUaW1lc3RhbXAoZSkgPz8gZS5jcmVhdGVkQXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RlcF9mYWlsZWQnOlxuICAgICAgICBzdGF0dXMgPSAnZmFpbGVkJztcbiAgICAgICAgY29tcGxldGVkQXQgPSBnZXRFdmVudFRpbWVzdGFtcChlKSA/PyBlLmNyZWF0ZWRBdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdGVwX3JldHJ5aW5nJzpcbiAgICAgICAgc3RhdHVzID0gJ3BlbmRpbmcnO1xuICAgICAgICBjb21wbGV0ZWRBdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5zdXJlIGF0IGxlYXN0IGF0dGVtcHQgMSBpZiB3ZSBuZXZlciBzYXcgc3RlcF9zdGFydGVkXG4gIGlmIChhdHRlbXB0ID09PSAwKSBhdHRlbXB0ID0gMTtcblxuICBjb25zdCBsYXN0RXZlbnQgPSBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDFdO1xuXG4gIHJldHVybiB7XG4gICAgc3RlcElkOiBhbmNob3JFdmVudC5jb3JyZWxhdGlvbklkID8/ICcnLFxuICAgIHJ1bklkOiBhbmNob3JFdmVudC5ydW5JZCxcbiAgICBzdGVwTmFtZTogY3JlYXRlZEV2ZW50Py5ldmVudERhdGE/LnN0ZXBOYW1lID8/ICcnLFxuICAgIHN0YXR1cyxcbiAgICBhdHRlbXB0LFxuICAgIGNyZWF0ZWRBdDogZ2V0RXZlbnRUaW1lc3RhbXAoYW5jaG9yRXZlbnQpID8/IGFuY2hvckV2ZW50LmNyZWF0ZWRBdCxcbiAgICB1cGRhdGVkQXQ6XG4gICAgICBnZXRFdmVudFRpbWVzdGFtcChsYXN0RXZlbnQpID8/XG4gICAgICBsYXN0RXZlbnQ/LmNyZWF0ZWRBdCA/P1xuICAgICAgYW5jaG9yRXZlbnQuY3JlYXRlZEF0LFxuICAgIHN0YXJ0ZWRBdCxcbiAgICBjb21wbGV0ZWRBdCxcbiAgICBzcGVjVmVyc2lvbjogYW5jaG9yRXZlbnQuc3BlY1ZlcnNpb24sXG4gIH07XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIHN0ZXAgZXZlbnRzIHRvIGFuIE9wZW5UZWxlbWV0cnkgU3BhblxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RlcFRvU3BhbihzdGVwRXZlbnRzOiBFdmVudFtdLCBtYXhFbmRUaW1lOiBEYXRlKTogU3BhbiB8IG51bGwge1xuICBjb25zdCBzdGVwID0gc3RlcEV2ZW50c1RvU3RlcEVudGl0eShzdGVwRXZlbnRzKTtcbiAgaWYgKCFzdGVwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcGFyc2VkTmFtZSA9IHBhcnNlU3RlcE5hbWUoU3RyaW5nKHN0ZXAuc3RlcE5hbWUpKTtcblxuICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgIHJlc291cmNlOiAnc3RlcCcgYXMgY29uc3QsXG4gICAgZGF0YTogc3RlcCxcbiAgfTtcblxuICBjb25zdCByZXNvdXJjZSA9ICdzdGVwJztcblxuICAvLyBJbmNsdWRlIEFMTCBjb3JyZWxhdGVkIGV2ZW50cyBvbiB0aGUgc3BhbiBzbyB0aGUgc2lkZWJhciBkZXRhaWwgdmlld1xuICAvLyBjYW4gZGlzcGxheSB0aGVtLiBUaGUgdGltZWxpbmUgdXNlcyB0aGUgYHNob3dWZXJ0aWNhbExpbmVgIGZsYWcgdG9cbiAgLy8gZGV0ZXJtaW5lIHdoaWNoIGV2ZW50cyBhcHBlYXIgYXMgbWFya2Vycy5cbiAgY29uc3QgZXZlbnRzID0gY29udmVydEV2ZW50c1RvU3BhbkV2ZW50cyhzdGVwRXZlbnRzLCBmYWxzZSwge1xuICAgIHByZWZlck9jY3VycmVkQXQ6IHRydWUsXG4gIH0pO1xuXG4gIC8vIFVzZSB0aGUgZXZlbnQgb2NjdXJyZW5jZSB0aW1lc3RhbXAgZm9yIHN0ZXAgc3BhbnMgd2hlbiBpdCBpcyBhdmFpbGFibGUsXG4gIC8vIGZhbGxpbmcgYmFjayB0byB0aGUgaW5nZXN0IHRpbWVzdGFtcCB1c2VkIGJ5IG9sZGVyIGV2ZW50IHN0cmVhbXMuXG4gIGNvbnN0IHNwYW5TdGFydEV2ZW50ID1cbiAgICBzdGVwRXZlbnRzLmZpbmQoKGV2ZW50KSA9PiBldmVudC5ldmVudFR5cGUgPT09ICdzdGVwX2NyZWF0ZWQnKSA/P1xuICAgIHN0ZXBFdmVudHNbMF07XG4gIGNvbnN0IHNwYW5TdGFydFRpbWUgPVxuICAgIGdldEV2ZW50VGltZXN0YW1wKHNwYW5TdGFydEV2ZW50KSA/PyBuZXcgRGF0ZShzdGVwLmNyZWF0ZWRBdCk7XG4gIGxldCBhY3RpdmVTdGFydFRpbWUgPSBzdGVwLnN0YXJ0ZWRBdCA/IG5ldyBEYXRlKHN0ZXAuc3RhcnRlZEF0KSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZmlyc3RTdGFydEV2ZW50ID0gc3RlcEV2ZW50cy5maW5kKFxuICAgIChldmVudCkgPT4gZXZlbnQuZXZlbnRUeXBlID09PSAnc3RlcF9zdGFydGVkJ1xuICApO1xuICBpZiAoZmlyc3RTdGFydEV2ZW50KSB7XG4gICAgYWN0aXZlU3RhcnRUaW1lID1cbiAgICAgIGdldEV2ZW50VGltZXN0YW1wKGZpcnN0U3RhcnRFdmVudCkgPz8gbmV3IERhdGUoZmlyc3RTdGFydEV2ZW50LmNyZWF0ZWRBdCk7XG4gIH1cblxuICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKG1heEVuZFRpbWUpO1xuICBpZiAoc3RlcC5jb21wbGV0ZWRBdCkge1xuICAgIGNvbnN0IGNvbXBsZXRlZEV2ZW50ID0gc3RlcEV2ZW50c1xuICAgICAgLnNsaWNlKClcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5maW5kKChldmVudCkgPT4gaXNUZXJtaW5hbFN0ZXBFdmVudFR5cGUoZXZlbnQuZXZlbnRUeXBlKSk7XG4gICAgZW5kVGltZSA9IGdldEV2ZW50VGltZXN0YW1wKGNvbXBsZXRlZEV2ZW50KSA/PyBuZXcgRGF0ZShzdGVwLmNvbXBsZXRlZEF0KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3BhbklkOiBTdHJpbmcoc3RlcC5zdGVwSWQpLFxuICAgIG5hbWU6IHBhcnNlZE5hbWU/LnNob3J0TmFtZSA/PyBTdHJpbmcoc3RlcC5zdGVwTmFtZSksXG4gICAga2luZDogMSwgLy8gSU5URVJOQUwgc3BhbiBraW5kXG4gICAgcmVzb3VyY2UsXG4gICAgbGlicmFyeTogV09SS0ZMT1dfTElCUkFSWSxcbiAgICBzdGF0dXM6IHsgY29kZTogMCB9LFxuICAgIHRyYWNlRmxhZ3M6IDEsXG4gICAgYXR0cmlidXRlcyxcbiAgICBsaW5rczogW10sXG4gICAgZXZlbnRzLFxuICAgIHN0YXJ0VGltZTogZGF0ZVRvT3RlbFRpbWUoc3BhblN0YXJ0VGltZSksXG4gICAgZW5kVGltZTogZGF0ZVRvT3RlbFRpbWUoZW5kVGltZSksXG4gICAgZHVyYXRpb246IGNhbGN1bGF0ZUR1cmF0aW9uKHNwYW5TdGFydFRpbWUsIGVuZFRpbWUpLFxuICAgIC8vIE9ubHkgc2V0IGFjdGl2ZVN0YXJ0VGltZSBpZiBpdCBkaWZmZXJzIGZyb20gc3RhcnRUaW1lIChpLmUuLCB0aGVyZSB3YXMgYSBxdWV1ZWQgcGVyaW9kKVxuICAgIGFjdGl2ZVN0YXJ0VGltZTpcbiAgICAgIGFjdGl2ZVN0YXJ0VGltZSAmJiBhY3RpdmVTdGFydFRpbWUuZ2V0VGltZSgpID4gc3BhblN0YXJ0VGltZS5nZXRUaW1lKClcbiAgICAgICAgPyBkYXRlVG9PdGVsVGltZShhY3RpdmVTdGFydFRpbWUpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgaG9va0V2ZW50c1RvSG9va0VudGl0eSA9IChcbiAgZXZlbnRzOiBFdmVudFtdXG4pOiB7XG4gIGhvb2tJZDogc3RyaW5nO1xuICBydW5JZDogc3RyaW5nO1xuICB0b2tlbj86IHN0cmluZztcbiAgY3JlYXRlZEF0OiBEYXRlO1xuICByZWNlaXZlZENvdW50OiBudW1iZXI7XG4gIGxhc3RSZWNlaXZlZEF0PzogRGF0ZTtcbiAgZGlzcG9zZWRBdD86IERhdGU7XG59IHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNyZWF0ZWRFdmVudCA9IGV2ZW50cy5maW5kKFxuICAgIChldmVudCkgPT4gZXZlbnQuZXZlbnRUeXBlID09PSAnaG9va19jcmVhdGVkJ1xuICApO1xuICBpZiAoIWNyZWF0ZWRFdmVudCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHJlY2VpdmVkRXZlbnRzID0gZXZlbnRzLmZpbHRlcihcbiAgICAoZXZlbnQpID0+IGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfcmVjZWl2ZWQnXG4gICk7XG4gIGNvbnN0IGRpc3Bvc2VkRXZlbnRzID0gZXZlbnRzLmZpbHRlcihcbiAgICAoZXZlbnQpID0+IGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfZGlzcG9zZWQnXG4gICk7XG4gIGNvbnN0IGxhc3RSZWNlaXZlZEV2ZW50ID0gcmVjZWl2ZWRFdmVudHMuYXQoLTEpO1xuICByZXR1cm4ge1xuICAgIGhvb2tJZDogY3JlYXRlZEV2ZW50LmNvcnJlbGF0aW9uSWQsXG4gICAgcnVuSWQ6IGNyZWF0ZWRFdmVudC5ydW5JZCxcbiAgICB0b2tlbjogY3JlYXRlZEV2ZW50LmV2ZW50RGF0YT8udG9rZW4sXG4gICAgY3JlYXRlZEF0OiBnZXRFdmVudFRpbWVzdGFtcChjcmVhdGVkRXZlbnQpID8/IGNyZWF0ZWRFdmVudC5jcmVhdGVkQXQsXG4gICAgcmVjZWl2ZWRDb3VudDogcmVjZWl2ZWRFdmVudHMubGVuZ3RoLFxuICAgIGxhc3RSZWNlaXZlZEF0OiBnZXRFdmVudFRpbWVzdGFtcChsYXN0UmVjZWl2ZWRFdmVudCksXG4gICAgZGlzcG9zZWRBdDogZ2V0RXZlbnRUaW1lc3RhbXAoZGlzcG9zZWRFdmVudHMuYXQoLTEpKSxcbiAgfTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSB3b3JrZmxvdyBIb29rIHRvIGFuIE9wZW5UZWxlbWV0cnkgU3BhblxuICovXG5leHBvcnQgZnVuY3Rpb24gaG9va1RvU3Bhbihob29rRXZlbnRzOiBFdmVudFtdLCBtYXhFbmRUaW1lOiBEYXRlKTogU3BhbiB8IG51bGwge1xuICBjb25zdCBob29rID0gaG9va0V2ZW50c1RvSG9va0VudGl0eShob29rRXZlbnRzKTtcbiAgaWYgKCFob29rKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBDb252ZXJ0IGhvb2stcmVsYXRlZCBldmVudHMgdG8gc3BhbiBldmVudHNcbiAgY29uc3QgZXZlbnRzID0gY29udmVydEV2ZW50c1RvU3BhbkV2ZW50cyhob29rRXZlbnRzLCBmYWxzZSk7XG5cbiAgY29uc3QgZW5kVGltZSA9IGhvb2suZGlzcG9zZWRBdCB8fCBtYXhFbmRUaW1lO1xuXG4gIHJldHVybiB7XG4gICAgc3BhbklkOiBTdHJpbmcoaG9vay5ob29rSWQpLFxuICAgIG5hbWU6IGhvb2sudG9rZW4gPz8gU3RyaW5nKGhvb2suaG9va0lkKSxcbiAgICBraW5kOiAxLCAvLyBJTlRFUk5BTCBzcGFuIGtpbmRcbiAgICByZXNvdXJjZTogJ2hvb2snLFxuICAgIGxpYnJhcnk6IFdPUktGTE9XX0xJQlJBUlksXG4gICAgc3RhdHVzOiB7IGNvZGU6IDEgfSxcbiAgICB0cmFjZUZsYWdzOiAxLFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgIHJlc291cmNlOiAnaG9vaycgYXMgY29uc3QsXG4gICAgICBkYXRhOiBob29rLFxuICAgIH0sXG4gICAgbGlua3M6IFtdLFxuICAgIGV2ZW50cyxcbiAgICBzdGFydFRpbWU6IGRhdGVUb090ZWxUaW1lKGhvb2suY3JlYXRlZEF0KSxcbiAgICBlbmRUaW1lOiBkYXRlVG9PdGVsVGltZShlbmRUaW1lKSxcbiAgICBkdXJhdGlvbjogY2FsY3VsYXRlRHVyYXRpb24oaG9vay5jcmVhdGVkQXQsIGVuZFRpbWUpLFxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSByb290IHNwYW4gZm9yIHRoZSB3b3JrZmxvdyBydW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blRvU3BhbihcbiAgcnVuOiBXb3JrZmxvd1J1bixcbiAgcnVuRXZlbnRzOiBFdmVudFtdLFxuICBub3dUaW1lPzogRGF0ZVxuKTogU3BhbiB7XG4gIGNvbnN0IG5vdyA9IG5vd1RpbWUgPz8gbmV3IERhdGUoKTtcblxuICAvLyBQcmVmZXIgdGhlIGV2ZW50IG9jY3VycmVuY2UgdGltZXN0YW1wIHdoZW4gYXZhaWxhYmxlIHNvIHRoZSByb290IHNwYW5cbiAgLy8gbGluZXMgdXAgd2l0aCBjaGlsZCBzcGFucyB0aGF0IGFscmVhZHkgdXNlIGV2ZW50IG9jY3VycmVuY2UgdGltZS5cbiAgY29uc3QgcnVuQ3JlYXRlZEV2ZW50ID0gcnVuRXZlbnRzLmZpbmQoXG4gICAgKGV2ZW50KSA9PiBldmVudC5ldmVudFR5cGUgPT09ICdydW5fY3JlYXRlZCdcbiAgKTtcbiAgY29uc3QgcnVuU3RhcnRlZEV2ZW50ID0gcnVuRXZlbnRzLmZpbmQoXG4gICAgKGV2ZW50KSA9PiBldmVudC5ldmVudFR5cGUgPT09ICdydW5fc3RhcnRlZCdcbiAgKTtcbiAgY29uc3QgdGVybWluYWxFdmVudCA9IHJ1bkV2ZW50c1xuICAgIC5zbGljZSgpXG4gICAgLnJldmVyc2UoKVxuICAgIC5maW5kKFxuICAgICAgKGV2ZW50KSA9PlxuICAgICAgICBldmVudC5ldmVudFR5cGUgPT09ICdydW5fY29tcGxldGVkJyB8fFxuICAgICAgICBldmVudC5ldmVudFR5cGUgPT09ICdydW5fZmFpbGVkJyB8fFxuICAgICAgICBldmVudC5ldmVudFR5cGUgPT09ICdydW5fY2FuY2VsbGVkJ1xuICAgICk7XG4gIGNvbnN0IHNwYW5TdGFydFRpbWUgPVxuICAgIGdldEV2ZW50VGltZXN0YW1wKHJ1bkNyZWF0ZWRFdmVudCkgPz8gbmV3IERhdGUocnVuLmNyZWF0ZWRBdCk7XG4gIGNvbnN0IGFjdGl2ZVN0YXJ0VGltZSA9XG4gICAgZ2V0RXZlbnRUaW1lc3RhbXAocnVuU3RhcnRlZEV2ZW50KSA/P1xuICAgIChydW4uc3RhcnRlZEF0ID8gbmV3IERhdGUocnVuLnN0YXJ0ZWRBdCkgOiB1bmRlZmluZWQpO1xuICBjb25zdCBjb21wbGV0ZWRBdCA9XG4gICAgZ2V0RXZlbnRUaW1lc3RhbXAodGVybWluYWxFdmVudCkgPz8gcnVuLmNvbXBsZXRlZEF0ID8/IHVuZGVmaW5lZDtcbiAgY29uc3QgZW5kVGltZSA9IGNvbXBsZXRlZEF0ID8/IG5vdztcblxuICAvLyBPbmx5IGVtYmVkIGlkZW50aWZpY2F0aW9uIGZpZWxkcyDigJQgbm90IHRoZSBmdWxsIG9iamVjdCB3aXRoXG4gIC8vIGlucHV0L291dHB1dC9lcnJvciB3aGljaCBtYXkgY29udGFpbiBub24tY2xvbmVhYmxlIHR5cGVzLiBMaWZlY3ljbGVcbiAgLy8gdGltZXN0YW1wcyBhcmUgZXZlbnQtZGVyaXZlZCBzbyBkZXRhaWwgcm93cyBhbGlnbiB3aXRoIHRoZSBzcGFuIHRpbWVsaW5lLlxuICBjb25zdCB7IGlucHV0OiBfaSwgb3V0cHV0OiBfbywgZXJyb3I6IF9lLCAuLi5ydW5JZGVudGl0eSB9ID0gcnVuO1xuICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgIHJlc291cmNlOiAncnVuJyBhcyBjb25zdCxcbiAgICBkYXRhOiB7XG4gICAgICAuLi5ydW5JZGVudGl0eSxcbiAgICAgIGNyZWF0ZWRBdDogc3BhblN0YXJ0VGltZSxcbiAgICAgIHN0YXJ0ZWRBdDogYWN0aXZlU3RhcnRUaW1lLFxuICAgICAgY29tcGxldGVkQXQsXG4gICAgfSxcbiAgfTtcblxuICAvLyBDb252ZXJ0IHJ1bi1sZXZlbCBldmVudHMgdG8gc3BhbiBldmVudHNcbiAgY29uc3QgZXZlbnRzID0gY29udmVydEV2ZW50c1RvU3BhbkV2ZW50cyhydW5FdmVudHMsIGZhbHNlLCB7XG4gICAgcHJlZmVyT2NjdXJyZWRBdDogdHJ1ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzcGFuSWQ6IFN0cmluZyhydW4ucnVuSWQpLFxuICAgIG5hbWU6IFN0cmluZyhwYXJzZVdvcmtmbG93TmFtZShydW4ud29ya2Zsb3dOYW1lKT8uc2hvcnROYW1lID8/ICc/JyksXG4gICAga2luZDogMSwgLy8gSU5URVJOQUwgc3BhbiBraW5kXG4gICAgcmVzb3VyY2U6ICdydW4nLFxuICAgIGxpYnJhcnk6IFdPUktGTE9XX0xJQlJBUlksXG4gICAgc3RhdHVzOiB7IGNvZGU6IDAgfSxcbiAgICB0cmFjZUZsYWdzOiAxLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgbGlua3M6IFtdLFxuICAgIGV2ZW50cyxcbiAgICBzdGFydFRpbWU6IGRhdGVUb090ZWxUaW1lKHNwYW5TdGFydFRpbWUpLFxuICAgIGVuZFRpbWU6IGRhdGVUb090ZWxUaW1lKGVuZFRpbWUpLFxuICAgIGR1cmF0aW9uOiBjYWxjdWxhdGVEdXJhdGlvbihzcGFuU3RhcnRUaW1lLCBlbmRUaW1lKSxcbiAgICAvLyBPbmx5IHNldCBhY3RpdmVTdGFydFRpbWUgaWYgaXQgZGlmZmVycyBmcm9tIHN0YXJ0VGltZSAoaS5lLiwgdGhlcmUgd2FzIGEgcXVldWVkIHBlcmlvZClcbiAgICBhY3RpdmVTdGFydFRpbWU6XG4gICAgICBhY3RpdmVTdGFydFRpbWUgJiYgYWN0aXZlU3RhcnRUaW1lLmdldFRpbWUoKSA+IHNwYW5TdGFydFRpbWUuZ2V0VGltZSgpXG4gICAgICAgID8gZGF0ZVRvT3RlbFRpbWUoYWN0aXZlU3RhcnRUaW1lKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cbiJdfQ==
@@ -2,7 +2,7 @@
2
2
  * Shared utilities for analyzing workflow events.
3
3
  * Used by run-actions and trace viewer components.
4
4
  */
5
- import type { Event, WorkflowRunStatus } from '@workflow/world';
5
+ import { type Event, type WorkflowRunStatus } from '@workflow/world';
6
6
  /**
7
7
  * Result of analyzing events for a workflow run
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"event-analysis.d.ts","sourceRoot":"","sources":["../../src/lib/event-analysis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAMhE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yEAAyE;IACzE,eAAe,EAAE,OAAO,CAAC;IACzB,iEAAiE;IACjE,eAAe,EAAE,OAAO,CAAC;IACzB,wCAAwC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,uCAAuC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uCAAuC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gEAAgE;IAChE,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,4EAA4E;IAC5E,oBAAoB,EAAE,IAAI,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,GAAG,aAAa,CAkGxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,OAAO,CAIT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAC3B,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,OAAO,CAmDT;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,GAC1B,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,GAC1B,OAAO,CAET"}
1
+ {"version":3,"file":"event-analysis.d.ts","sourceRoot":"","sources":["../../src/lib/event-analysis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAMzB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yEAAyE;IACzE,eAAe,EAAE,OAAO,CAAC;IACzB,iEAAiE;IACjE,eAAe,EAAE,OAAO,CAAC;IACzB,wCAAwC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,uCAAuC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uCAAuC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gEAAgE;IAChE,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,4EAA4E;IAC5E,oBAAoB,EAAE,IAAI,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,GAAG,aAAa,CAkGxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,OAAO,CAET;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAC3B,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,OAAO,CAmDT;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,GAC1B,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,GAC1B,OAAO,CAET"}
@@ -2,6 +2,7 @@
2
2
  * Shared utilities for analyzing workflow events.
3
3
  * Used by run-actions and trace viewer components.
4
4
  */
5
+ import { isTerminalWorkflowRunStatus, } from '@workflow/world';
5
6
  // Time thresholds for Re-enqueue button visibility
6
7
  const STEP_ACTIVITY_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
7
8
  const STEP_IDLE_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
@@ -92,7 +93,7 @@ export function analyzeEvents(events) {
92
93
  * Check if a workflow run status is terminal (completed, failed, or cancelled)
93
94
  */
94
95
  export function isTerminalStatus(status) {
95
- return (status === 'completed' || status === 'failed' || status === 'cancelled');
96
+ return status ? isTerminalWorkflowRunStatus(status) : false;
96
97
  }
97
98
  /**
98
99
  * Determine if the Re-enqueue button should be shown without the debug flag.
@@ -158,4 +159,4 @@ export function hasPendingStepsFromEvents(events) {
158
159
  export function hasPendingHooksFromEvents(events) {
159
160
  return analyzeEvents(events).hasPendingHooks;
160
161
  }
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtYW5hbHlzaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2V2ZW50LWFuYWx5c2lzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUlILG1EQUFtRDtBQUNuRCxNQUFNLHdCQUF3QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsYUFBYTtBQUM5RCxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtBQXdCeEQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQTJCO0lBQ3ZELElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPO1lBQ0wsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixlQUFlLEVBQUUsS0FBSztZQUN0QixlQUFlLEVBQUUsS0FBSztZQUN0QixlQUFlLEVBQUUsRUFBRTtZQUNuQixjQUFjLEVBQUUsRUFBRTtZQUNsQixjQUFjLEVBQUUsRUFBRTtZQUNsQixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7SUFDN0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUN4QyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztJQUM3QyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFdkMsSUFBSSxrQkFBa0IsR0FBZ0IsSUFBSSxDQUFDO0lBQzNDLElBQUksb0JBQW9CLEdB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QUMzQixHQUFHLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hELElBQUksdUJBQXVCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLHNEQUFzRDtJQUN0RCxJQUNFLENBQUMsUUFBUSxDQUFDLGtCQUFrQjtRQUM1QixDQUFDLFFBQVEsQ0FBQyxlQUFlO1FBQ3pCLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtRQUMxQixDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQ3pCLENBQUM7UUFDRCw0REFBNEQ7UUFDNUQsdURBQXVEO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUEyQjtJQUUzQixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUM7QUFDL0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUEyQjtJQUUzQixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIHV0aWxpdGllcyBmb3IgYW5hbHl6aW5nIHdvcmtmbG93IGV2ZW50cy5cbiAqIFVzZWQgYnkgcnVuLWFjdGlvbnMgYW5kIHRyYWNlIHZpZXdlciBjb21wb25lbnRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRXZlbnQsIFdvcmtmbG93UnVuU3RhdHVzIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcblxuLy8gVGltZSB0aHJlc2hvbGRzIGZvciBSZS1lbnF1ZXVlIGJ1dHRvbiB2aXNpYmlsaXR5XG5jb25zdCBTVEVQX0FDVElWSVRZX1RJTUVPVVRfTVMgPSAzMCAqIDYwICogMTAwMDsgLy8gMzAgbWludXRlc1xuY29uc3QgU1RFUF9JRExFX1RJTUVPVVRfTVMgPSA1ICogNjAgKiAxMDAwOyAvLyA1IG1pbnV0ZXNcblxuLyoqXG4gKiBSZXN1bHQgb2YgYW5hbHl6aW5nIGV2ZW50cyBmb3IgYSB3b3JrZmxvdyBydW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudEFuYWx5c2lzIHtcbiAgLyoqIFdoZXRoZXIgdGhlcmUgYXJlIHBlbmRpbmcgc2xlZXAvd2FpdCBjYWxscyAqL1xuICBoYXNQZW5kaW5nU2xlZXBzOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGVyZSBhcmUgcGVuZGluZyBzdGVwcyAoc3RhcnRlZCBidXQgbm90IGNvbXBsZXRlZC9mYWlsZWQpICovXG4gIGhhc1BlbmRpbmdTdGVwczogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlcmUgYXJlIHBlbmRpbmcgaG9va3MgKGNyZWF0ZWQgYnV0IG5vdCBkaXNwb3NlZCkgKi9cbiAgaGFzUGVuZGluZ0hvb2tzOiBib29sZWFuO1xuICAvKiogQ29ycmVsYXRpb24gSURzIG9mIHBlbmRpbmcgc2xlZXBzICovXG4gIHBlbmRpbmdTbGVlcElkczogc3RyaW5nW107XG4gIC8qKiBDb3JyZWxhdGlvbiBJRHMgb2YgcGVuZGluZyBzdGVwcyAqL1xuICBwZW5kaW5nU3RlcElkczogc3RyaW5nW107XG4gIC8qKiBDb3JyZWxhdGlvbiBJRHMgb2YgcGVuZGluZyBob29rcyAqL1xuICBwZW5kaW5nSG9va0lkczogc3RyaW5nW107XG4gIC8qKiBUaW1lc3RhbXAgb2YgdGhlIGxhc3Qgc3RlcF9zdGFydGVkIG9yIHN0ZXBfcmV0cnlpbmcgZXZlbnQgKi9cbiAgbGFzdFN0ZXBBY3Rpdml0eUF0OiBEYXRlIHwgbnVsbDtcbiAgLyoqIFRpbWVzdGFtcCBvZiB0aGUgbGFzdCBzdGVwIGNvbXBsZXRpb24gKHN0ZXBfY29tcGxldGVkIG9yIHN0ZXBfZmFpbGVkKSAqL1xuICBsYXN0U3RlcENvbXBsZXRpb25BdDogRGF0ZSB8IG51bGw7XG59XG5cbi8qKlxuICogQW5hbHl6ZSBldmVudHMgdG8gZGV0ZXJtaW5lIHBlbmRpbmcgc2xlZXBzLCBzdGVwcywgYW5kIGhvb2tzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYW5hbHl6ZUV2ZW50cyhldmVudHM6IEV2ZW50W10gfCB1bmRlZmluZWQpOiBFdmVudEFuYWx5c2lzIHtcbiAgaWYgKCFldmVudHMgfHwgZXZlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBoYXNQZW5kaW5nU2xlZXBzOiBmYWxzZSxcbiAgICAgIGhhc1BlbmRpbmdTdGVwczogZmFsc2UsXG4gICAgICBoYXNQZW5kaW5nSG9va3M6IGZhbHNlLFxuICAgICAgcGVuZGluZ1NsZWVwSWRzOiBbXSxcbiAgICAgIHBlbmRpbmdTdGVwSWRzOiBbXSxcbiAgICAgIHBlbmRpbmdIb29rSWRzOiBbXSxcbiAgICAgIGxhc3RTdGVwQWN0aXZpdHlBdDogbnVsbCxcbiAgICAgIGxhc3RTdGVwQ29tcGxldGlvbkF0OiBudWxsLFxuICAgIH07XG4gIH1cblxuICAvLyBHcm91cCBldmVudHMgYnkgY29ycmVsYXRpb24gSUQgZm9yIGVhY2ggdHlwZVxuICBjb25zdCB3YWl0Q3JlYXRlZCA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudD4oKTtcbiAgY29uc3Qgd2FpdENvbXBsZXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBzdGVwU3RhcnRlZCA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudD4oKTtcbiAgY29uc3Qgc3RlcENvbXBsZXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBob29rQ3JlYXRlZCA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudD4oKTtcbiAgY29uc3QgaG9va0Rpc3Bvc2VkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgbGV0IGxhc3RTdGVwQWN0aXZpdHlBdDogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBsZXQgbGFzdFN0ZXBDb21wbGV0aW9uQXQ6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSBldmVudC5jb3JyZWxhdGlvbklkO1xuICAgIGlmICghY29ycmVsYXRpb25JZCkgY29udGludWU7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSkge1xuICAgICAgLy8gU2xlZXBzL1dhaXRzXG4gICAgICBjYXNlICd3YWl0X2NyZWF0ZWQnOlxuICAgICAgICB3YWl0Q3JlYXRlZC5zZXQoY29ycmVsYXRpb25JZCwgZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3dhaXRfY29tcGxldGVkJzpcbiAgICAgICAgd2FpdENvbXBsZXRlZC5hZGQoY29ycmVsYXRpb25JZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBTdGVwc1xuICAgICAgY2FzZSAnc3RlcF9zdGFydGVkJzpcbiAgICAgICAgc3RlcFN0YXJ0ZWQuc2V0KGNvcnJlbGF0aW9uSWQsIGV2ZW50KTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFsYXN0U3RlcEFjdGl2aXR5QXQgfHxcbiAgICAgICAgICBuZXcgRGF0ZShldmVudC5jcmVhdGVkQXQpID4gbGFzdFN0ZXBBY3Rpdml0eUF0XG4gICAgICAgICkge1xuICAgICAgICAgIGxhc3RTdGVwQWN0aXZpdHlBdCA9IG5ldyBEYXRlKGV2ZW50LmNyZWF0ZWRBdCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdGVwX3JldHJ5aW5nJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFsYXN0U3RlcEFjdGl2aXR5QXQgfHxcbiAgICAgICAgICBuZXcgRGF0ZShldmVudC5jcmVhdGVkQXQpID4gbGFzdFN0ZXBBY3Rpdml0eUF0XG4gICAgICAgICkge1xuICAgICAgICAgIGxhc3RTdGVwQWN0aXZpdHlBdCA9IG5ldyBEYXRlKGV2ZW50LmNyZWF0ZWRBdCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdGVwX2NvbXBsZXRlZCc6XG4gICAgICBjYXNlICdzdGVwX2ZhaWxlZCc6XG4gICAgICAgIHN0ZXBDb21wbGV0ZWQuYWRkKGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWxhc3RTdGVwQ29tcGxldGlvbkF0IHx8XG4gICAgICAgICAgbmV3IERhdGUoZXZlbnQuY3JlYXRlZEF0KSA+IGxhc3RTdGVwQ29tcGxldGlvbkF0XG4gICAgICAgICkge1xuICAgICAgICAgIGxhc3RTdGVwQ29tcGxldGlvbkF0ID0gbmV3IERhdGUoZXZlbnQuY3JlYXRlZEF0KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgLy8gSG9va3NcbiAgICAgIGNhc2UgJ2hvb2tfY3JlYXRlZCc6XG4gICAgICAgIGhvb2tDcmVhdGVkLnNldChjb3JyZWxhdGlvbklkLCBldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaG9va19kaXNwb3NlZCc6XG4gICAgICAgIGhvb2tEaXNwb3NlZC5hZGQoY29ycmVsYXRpb25JZCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpbmQgcGVuZGluZyBpdGVtcyAoY3JlYXRlZCBidXQgbm90IGNvbXBsZXRlZClcbiAgY29uc3QgcGVuZGluZ1NsZWVwSWRzID0gQXJyYXkuZnJvbSh3YWl0Q3JlYXRlZC5rZXlzKCkpLmZpbHRlcihcbiAgICAoaWQpID0+ICF3YWl0Q29tcGxldGVkLmhhcyhpZClcbiAgKTtcbiAgY29uc3QgcGVuZGluZ1N0ZXBJZHMgPSBBcnJheS5mcm9tKHN0ZXBTdGFydGVkLmtleXMoKSkuZmlsdGVyKFxuICAgIChpZCkgPT4gIXN0ZXBDb21wbGV0ZWQuaGFzKGlkKVxuICApO1xuICBjb25zdCBwZW5kaW5nSG9va0lkcyA9IEFycmF5LmZyb20oaG9va0NyZWF0ZWQua2V5cygpKS5maWx0ZXIoXG4gICAgKGlkKSA9PiAhaG9va0Rpc3Bvc2VkLmhhcyhpZClcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGhhc1BlbmRpbmdTbGVlcHM6IHBlbmRpbmdTbGVlcElkcy5sZW5ndGggPiAwLFxuICAgIGhhc1BlbmRpbmdTdGVwczogcGVuZGluZ1N0ZXBJZHMubGVuZ3RoID4gMCxcbiAgICBoYXNQZW5kaW5nSG9va3M6IHBlbmRpbmdIb29rSWRzLmxlbmd0aCA+IDAsXG4gICAgcGVuZGluZ1NsZWVwSWRzLFxuICAgIHBlbmRpbmdTdGVwSWRzLFxuICAgIHBlbmRpbmdIb29rSWRzLFxuICAgIGxhc3RTdGVwQWN0aXZpdHlBdCxcbiAgICBsYXN0U3RlcENvbXBsZXRpb25BdCxcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHdvcmtmbG93IHJ1biBzdGF0dXMgaXMgdGVybWluYWwgKGNvbXBsZXRlZCwgZmFpbGVkLCBvciBjYW5jZWxsZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Rlcm1pbmFsU3RhdHVzKFxuICBzdGF0dXM6IFdvcmtmbG93UnVuU3RhdHVzIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBzdGF0dXMgPT09ICdjb21wbGV0ZWQnIHx8IHN0YXR1cyA9PT0gJ2ZhaWxlZCcgfHwgc3RhdHVzID09PSAnY2FuY2VsbGVkJ1xuICApO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgUmUtZW5xdWV1ZSBidXR0b24gc2hvdWxkIGJlIHNob3duIHdpdGhvdXQgdGhlIGRlYnVnIGZsYWcuXG4gKlxuICogVGhlIFJlLWVucXVldWUgYnV0dG9uIGlzIHNob3duIHdoZW4gdGhlIHdvcmtmbG93IGFwcGVhcnMgdG8gYmUgc3R1Y2s6XG4gKiAtIFRoZSB3b3JrZmxvdyBpcyBub3QgaW4gYSB0ZXJtaW5hbCBzdGF0ZVxuICogLSBUaGVyZSBhcmUgbm8gcGVuZGluZyBzbGVlcHMgKHdoaWNoIHdvdWxkIHNob3cgdGhlIFdha2UgdXAgYnV0dG9uIGluc3RlYWQpXG4gKiAtIFRoZXJlIGFyZSBubyBwZW5kaW5nIGhvb2tzICh3aGljaCBhcmUgd2FpdGluZyBmb3IgZXh0ZXJuYWwgaW5wdXQpXG4gKiAtIEVpdGhlcjpcbiAqICAgLSBUaGUgbGFzdCBzdGVwX3N0YXJ0ZWQgb3Igc3RlcF9yZXRyeWluZyBldmVudCB3YXMgPjMwIG1pbnV0ZXMgYWdvLCBPUlxuICogICAtIFRoZXJlIGhhdmUgYmVlbiBubyBwZW5kaW5nIHN0ZXBzIGZvciA+NSBtaW51dGVzIChhbGwgc3RlcHMgY29tcGxldGVkL2ZhaWxlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFNob3dSZWVucXVldWVCdXR0b24oXG4gIGV2ZW50czogRXZlbnRbXSB8IHVuZGVmaW5lZCxcbiAgc3RhdHVzOiBXb3JrZmxvd1J1blN0YXR1cyB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gIC8vIE5ldmVyIHNob3cgaWYgaW4gdGVybWluYWwgc3RhdGVcbiAgaWYgKGlzVGVybWluYWxTdGF0dXMoc3RhdHVzKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZUV2ZW50cyhldmVudHMpO1xuXG4gIC8vIERvbid0IHNob3cgaWYgdGhlcmUgYXJlIHBlbmRpbmcgc2xlZXBzIChXYWtlIHVwIGJ1dHRvbiBoYW5kbGVzIHRoaXMpXG4gIGlmIChhbmFseXNpcy5oYXNQZW5kaW5nU2xlZXBzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRG9uJ3Qgc2hvdyBpZiB0aGVyZSBhcmUgcGVuZGluZyBob29rcyAod2FpdGluZyBmb3IgZXh0ZXJuYWwgaW5wdXQpXG4gIGlmIChhbmFseXNpcy5oYXNQZW5kaW5nSG9va3MpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gIC8vIENoZWNrIGlmIGxhc3Qgc3RlcCBhY3Rpdml0eSB3YXMgPjMwIG1pbnV0ZXMgYWdvXG4gIGlmIChhbmFseXNpcy5sYXN0U3RlcEFjdGl2aXR5QXQpIHtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0QWN0aXZpdHkgPSBub3cgLSBhbmFseXNpcy5sYXN0U3RlcEFjdGl2aXR5QXQuZ2V0VGltZSgpO1xuICAgIGlmICh0aW1lU2luY2VMYXN0QWN0aXZpdHkgPiBTVEVQX0FDVElWSVRZX1RJTUVPVVRfTVMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBubyBwZW5kaW5nIHN0ZXBzIGFuZCBsYXN0IGNvbXBsZXRpb24gd2FzID41IG1pbnV0ZXMgYWdvXG4gIGlmICghYW5hbHlzaXMuaGFzUGVuZGluZ1N0ZXBzICYmIGFuYWx5c2lzLmxhc3RTdGVwQ29tcGxldGlvbkF0KSB7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdENvbXBsZXRpb24gPVxuICAgICAgbm93IC0gYW5hbHlzaXMubGFzdFN0ZXBDb21wbGV0aW9uQXQuZ2V0VGltZSgpO1xuICAgIGlmICh0aW1lU2luY2VMYXN0Q29tcGxldGlvbiA+IFNURVBfSURMRV9USU1FT1VUX01TKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGVyZSdzIG5vIHN0ZXAgYWN0aXZpdHkgYXQgYWxsIGJ1dCB0aGUgcnVuIGlzIG5vdCB0ZXJtaW5hbCxcbiAgLy8gYW5kIHdlJ3ZlIGJlZW4gd2FpdGluZyBmb3IgYSB3aGlsZSwgc2hvdyB0aGUgYnV0dG9uXG4gIGlmIChcbiAgICAhYW5hbHlzaXMubGFzdFN0ZXBBY3Rpdml0eUF0ICYmXG4gICAgIWFuYWx5c2lzLmhhc1BlbmRpbmdTdGVwcyAmJlxuICAgICFhbmFseXNpcy5oYXNQZW5kaW5nU2xlZXBzICYmXG4gICAgIWFuYWx5c2lzLmhhc1BlbmRpbmdIb29rc1xuICApIHtcbiAgICAvLyBUaGlzIGNhc2UgaGFuZGxlcyBydW5zIHRoYXQgaGF2ZW4ndCBzdGFydGVkIGFueSBzdGVwcyB5ZXRcbiAgICAvLyBidXQgYXJlbid0IGluIGEgdGVybWluYWwgc3RhdGUgLSB0aGV5IG1pZ2h0IGJlIHN0dWNrXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlcmUgYXJlIHBlbmRpbmcgc3RlcHMgZnJvbSBhbiBldmVudHMgbGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1BlbmRpbmdTdGVwc0Zyb21FdmVudHMoXG4gIGV2ZW50czogRXZlbnRbXSB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBhbmFseXplRXZlbnRzKGV2ZW50cykuaGFzUGVuZGluZ1N0ZXBzO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvb2tzIGZyb20gYW4gZXZlbnRzIGxpc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQZW5kaW5nSG9va3NGcm9tRXZlbnRzKFxuICBldmVudHM6IEV2ZW50W10gfCB1bmRlZmluZWRcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gYW5hbHl6ZUV2ZW50cyhldmVudHMpLmhhc1BlbmRpbmdIb29rcztcbn1cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtYW5hbHlzaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2V2ZW50LWFuYWx5c2lzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFFTCwyQkFBMkIsR0FFNUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixtREFBbUQ7QUFDbkQsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLGFBQWE7QUFDOUQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7QUF3QnhEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUEyQjtJQUN2RCxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkMsT0FBTztZQUNMLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsY0FBYyxFQUFFLEVBQUU7WUFDbEIsY0FBYyxFQUFFLEVBQUU7WUFDbEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7SUFDSixDQUFDO0lBRUQsK0NBQStDO0lBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7SUFDN0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUN4QyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztJQUM3QyxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRXZDLElB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USxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDL0QsTUFBTSx1QkFBdUIsR0FDM0IsR0FBRyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRCxJQUFJLHVCQUF1QixHQUFHLG9CQUFvQixFQUFFLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxzREFBc0Q7SUFDdEQsSUFDRSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0I7UUFDNUIsQ0FBQyxRQUFRLENBQUMsZUFBZTtRQUN6QixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7UUFDMUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUN6QixDQUFDO1FBQ0QsNERBQTREO1FBQzVELHVEQUF1RDtRQUN2RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsTUFBMkI7SUFFM0IsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDO0FBQy9DLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsTUFBMkI7SUFFM0IsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoYXJlZCB1dGlsaXRpZXMgZm9yIGFuYWx5emluZyB3b3JrZmxvdyBldmVudHMuXG4gKiBVc2VkIGJ5IHJ1bi1hY3Rpb25zIGFuZCB0cmFjZSB2aWV3ZXIgY29tcG9uZW50cy5cbiAqL1xuXG5pbXBvcnQge1xuICB0eXBlIEV2ZW50LFxuICBpc1Rlcm1pbmFsV29ya2Zsb3dSdW5TdGF0dXMsXG4gIHR5cGUgV29ya2Zsb3dSdW5TdGF0dXMsXG59IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbi8vIFRpbWUgdGhyZXNob2xkcyBmb3IgUmUtZW5xdWV1ZSBidXR0b24gdmlzaWJpbGl0eVxuY29uc3QgU1RFUF9BQ1RJVklUWV9USU1FT1VUX01TID0gMzAgKiA2MCAqIDEwMDA7IC8vIDMwIG1pbnV0ZXNcbmNvbnN0IFNURVBfSURMRV9USU1FT1VUX01TID0gNSAqIDYwICogMTAwMDsgLy8gNSBtaW51dGVzXG5cbi8qKlxuICogUmVzdWx0IG9mIGFuYWx5emluZyBldmVudHMgZm9yIGEgd29ya2Zsb3cgcnVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRBbmFseXNpcyB7XG4gIC8qKiBXaGV0aGVyIHRoZXJlIGFyZSBwZW5kaW5nIHNsZWVwL3dhaXQgY2FsbHMgKi9cbiAgaGFzUGVuZGluZ1NsZWVwczogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlcmUgYXJlIHBlbmRpbmcgc3RlcHMgKHN0YXJ0ZWQgYnV0IG5vdCBjb21wbGV0ZWQvZmFpbGVkKSAqL1xuICBoYXNQZW5kaW5nU3RlcHM6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZXJlIGFyZSBwZW5kaW5nIGhvb2tzIChjcmVhdGVkIGJ1dCBub3QgZGlzcG9zZWQpICovXG4gIGhhc1BlbmRpbmdIb29rczogYm9vbGVhbjtcbiAgLyoqIENvcnJlbGF0aW9uIElEcyBvZiBwZW5kaW5nIHNsZWVwcyAqL1xuICBwZW5kaW5nU2xlZXBJZHM6IHN0cmluZ1tdO1xuICAvKiogQ29ycmVsYXRpb24gSURzIG9mIHBlbmRpbmcgc3RlcHMgKi9cbiAgcGVuZGluZ1N0ZXBJZHM6IHN0cmluZ1tdO1xuICAvKiogQ29ycmVsYXRpb24gSURzIG9mIHBlbmRpbmcgaG9va3MgKi9cbiAgcGVuZGluZ0hvb2tJZHM6IHN0cmluZ1tdO1xuICAvKiogVGltZXN0YW1wIG9mIHRoZSBsYXN0IHN0ZXBfc3RhcnRlZCBvciBzdGVwX3JldHJ5aW5nIGV2ZW50ICovXG4gIGxhc3RTdGVwQWN0aXZpdHlBdDogRGF0ZSB8IG51bGw7XG4gIC8qKiBUaW1lc3RhbXAgb2YgdGhlIGxhc3Qgc3RlcCBjb21wbGV0aW9uIChzdGVwX2NvbXBsZXRlZCBvciBzdGVwX2ZhaWxlZCkgKi9cbiAgbGFzdFN0ZXBDb21wbGV0aW9uQXQ6IERhdGUgfCBudWxsO1xufVxuXG4vKipcbiAqIEFuYWx5emUgZXZlbnRzIHRvIGRldGVybWluZSBwZW5kaW5nIHNsZWVwcywgc3RlcHMsIGFuZCBob29rcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuYWx5emVFdmVudHMoZXZlbnRzOiBFdmVudFtdIHwgdW5kZWZpbmVkKTogRXZlbnRBbmFseXNpcyB7XG4gIGlmICghZXZlbnRzIHx8IGV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgaGFzUGVuZGluZ1NsZWVwczogZmFsc2UsXG4gICAgICBoYXNQZW5kaW5nU3RlcHM6IGZhbHNlLFxuICAgICAgaGFzUGVuZGluZ0hvb2tzOiBmYWxzZSxcbiAgICAgIHBlbmRpbmdTbGVlcElkczogW10sXG4gICAgICBwZW5kaW5nU3RlcElkczogW10sXG4gICAgICBwZW5kaW5nSG9va0lkczogW10sXG4gICAgICBsYXN0U3RlcEFjdGl2aXR5QXQ6IG51bGwsXG4gICAgICBsYXN0U3RlcENvbXBsZXRpb25BdDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgLy8gR3JvdXAgZXZlbnRzIGJ5IGNvcnJlbGF0aW9uIElEIGZvciBlYWNoIHR5cGVcbiAgY29uc3Qgd2FpdENyZWF0ZWQgPSBuZXcgTWFwPHN0cmluZywgRXZlbnQ+KCk7XG4gIGNvbnN0IHdhaXRDb21wbGV0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3Qgc3RlcFN0YXJ0ZWQgPSBuZXcgTWFwPHN0cmluZywgRXZlbnQ+KCk7XG4gIGNvbnN0IHN0ZXBDb21wbGV0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgaG9va0NyZWF0ZWQgPSBuZXcgTWFwPHN0cmluZywgRXZlbnQ+KCk7XG4gIGNvbnN0IGhvb2tEaXNwb3NlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGxldCBsYXN0U3RlcEFjdGl2aXR5QXQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgbGV0IGxhc3RTdGVwQ29tcGxldGlvbkF0OiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gZXZlbnQuY29ycmVsYXRpb25JZDtcbiAgICBpZiAoIWNvcnJlbGF0aW9uSWQpIGNvbnRpbnVlO1xuXG4gICAgc3dpdGNoIChldmVudC5ldmVudFR5cGUpIHtcbiAgICAgIC8vIFNsZWVwcy9XYWl0c1xuICAgICAgY2FzZSAnd2FpdF9jcmVhdGVkJzpcbiAgICAgICAgd2FpdENyZWF0ZWQuc2V0KGNvcnJlbGF0aW9uSWQsIGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3YWl0X2NvbXBsZXRlZCc6XG4gICAgICAgIHdhaXRDb21wbGV0ZWQuYWRkKGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gU3RlcHNcbiAgICAgIGNhc2UgJ3N0ZXBfc3RhcnRlZCc6XG4gICAgICAgIHN0ZXBTdGFydGVkLnNldChjb3JyZWxhdGlvbklkLCBldmVudCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhbGFzdFN0ZXBBY3Rpdml0eUF0IHx8XG4gICAgICAgICAgbmV3IERhdGUoZXZlbnQuY3JlYXRlZEF0KSA+IGxhc3RTdGVwQWN0aXZpdHlBdFxuICAgICAgICApIHtcbiAgICAgICAgICBsYXN0U3RlcEFjdGl2aXR5QXQgPSBuZXcgRGF0ZShldmVudC5jcmVhdGVkQXQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RlcF9yZXRyeWluZyc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhbGFzdFN0ZXBBY3Rpdml0eUF0IHx8XG4gICAgICAgICAgbmV3IERhdGUoZXZlbnQuY3JlYXRlZEF0KSA+IGxhc3RTdGVwQWN0aXZpdHlBdFxuICAgICAgICApIHtcbiAgICAgICAgICBsYXN0U3RlcEFjdGl2aXR5QXQgPSBuZXcgRGF0ZShldmVudC5jcmVhdGVkQXQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RlcF9jb21wbGV0ZWQnOlxuICAgICAgY2FzZSAnc3RlcF9mYWlsZWQnOlxuICAgICAgICBzdGVwQ29tcGxldGVkLmFkZChjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFsYXN0U3RlcENvbXBsZXRpb25BdCB8fFxuICAgICAgICAgIG5ldyBEYXRlKGV2ZW50LmNyZWF0ZWRBdCkgPiBsYXN0U3RlcENvbXBsZXRpb25BdFxuICAgICAgICApIHtcbiAgICAgICAgICBsYXN0U3RlcENvbXBsZXRpb25BdCA9IG5ldyBEYXRlKGV2ZW50LmNyZWF0ZWRBdCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIEhvb2tzXG4gICAgICBjYXNlICdob29rX2NyZWF0ZWQnOlxuICAgICAgICBob29rQ3JlYXRlZC5zZXQoY29ycmVsYXRpb25JZCwgZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hvb2tfZGlzcG9zZWQnOlxuICAgICAgICBob29rRGlzcG9zZWQuYWRkKGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBGaW5kIHBlbmRpbmcgaXRlbXMgKGNyZWF0ZWQgYnV0IG5vdCBjb21wbGV0ZWQpXG4gIGNvbnN0IHBlbmRpbmdTbGVlcElkcyA9IEFycmF5LmZyb20od2FpdENyZWF0ZWQua2V5cygpKS5maWx0ZXIoXG4gICAgKGlkKSA9PiAhd2FpdENvbXBsZXRlZC5oYXMoaWQpXG4gICk7XG4gIGNvbnN0IHBlbmRpbmdTdGVwSWRzID0gQXJyYXkuZnJvbShzdGVwU3RhcnRlZC5rZXlzKCkpLmZpbHRlcihcbiAgICAoaWQpID0+ICFzdGVwQ29tcGxldGVkLmhhcyhpZClcbiAgKTtcbiAgY29uc3QgcGVuZGluZ0hvb2tJZHMgPSBBcnJheS5mcm9tKGhvb2tDcmVhdGVkLmtleXMoKSkuZmlsdGVyKFxuICAgIChpZCkgPT4gIWhvb2tEaXNwb3NlZC5oYXMoaWQpXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBoYXNQZW5kaW5nU2xlZXBzOiBwZW5kaW5nU2xlZXBJZHMubGVuZ3RoID4gMCxcbiAgICBoYXNQZW5kaW5nU3RlcHM6IHBlbmRpbmdTdGVwSWRzLmxlbmd0aCA+IDAsXG4gICAgaGFzUGVuZGluZ0hvb2tzOiBwZW5kaW5nSG9va0lkcy5sZW5ndGggPiAwLFxuICAgIHBlbmRpbmdTbGVlcElkcyxcbiAgICBwZW5kaW5nU3RlcElkcyxcbiAgICBwZW5kaW5nSG9va0lkcyxcbiAgICBsYXN0U3RlcEFjdGl2aXR5QXQsXG4gICAgbGFzdFN0ZXBDb21wbGV0aW9uQXQsXG4gIH07XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB3b3JrZmxvdyBydW4gc3RhdHVzIGlzIHRlcm1pbmFsIChjb21wbGV0ZWQsIGZhaWxlZCwgb3IgY2FuY2VsbGVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUZXJtaW5hbFN0YXR1cyhcbiAgc3RhdHVzOiBXb3JrZmxvd1J1blN0YXR1cyB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGF0dXMgPyBpc1Rlcm1pbmFsV29ya2Zsb3dSdW5TdGF0dXMoc3RhdHVzKSA6IGZhbHNlO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgUmUtZW5xdWV1ZSBidXR0b24gc2hvdWxkIGJlIHNob3duIHdpdGhvdXQgdGhlIGRlYnVnIGZsYWcuXG4gKlxuICogVGhlIFJlLWVucXVldWUgYnV0dG9uIGlzIHNob3duIHdoZW4gdGhlIHdvcmtmbG93IGFwcGVhcnMgdG8gYmUgc3R1Y2s6XG4gKiAtIFRoZSB3b3JrZmxvdyBpcyBub3QgaW4gYSB0ZXJtaW5hbCBzdGF0ZVxuICogLSBUaGVyZSBhcmUgbm8gcGVuZGluZyBzbGVlcHMgKHdoaWNoIHdvdWxkIHNob3cgdGhlIFdha2UgdXAgYnV0dG9uIGluc3RlYWQpXG4gKiAtIFRoZXJlIGFyZSBubyBwZW5kaW5nIGhvb2tzICh3aGljaCBhcmUgd2FpdGluZyBmb3IgZXh0ZXJuYWwgaW5wdXQpXG4gKiAtIEVpdGhlcjpcbiAqICAgLSBUaGUgbGFzdCBzdGVwX3N0YXJ0ZWQgb3Igc3RlcF9yZXRyeWluZyBldmVudCB3YXMgPjMwIG1pbnV0ZXMgYWdvLCBPUlxuICogICAtIFRoZXJlIGhhdmUgYmVlbiBubyBwZW5kaW5nIHN0ZXBzIGZvciA+NSBtaW51dGVzIChhbGwgc3RlcHMgY29tcGxldGVkL2ZhaWxlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFNob3dSZWVucXVldWVCdXR0b24oXG4gIGV2ZW50czogRXZlbnRbXSB8IHVuZGVmaW5lZCxcbiAgc3RhdHVzOiBXb3JrZmxvd1J1blN0YXR1cyB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gIC8vIE5ldmVyIHNob3cgaWYgaW4gdGVybWluYWwgc3RhdGVcbiAgaWYgKGlzVGVybWluYWxTdGF0dXMoc3RhdHVzKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZUV2ZW50cyhldmVudHMpO1xuXG4gIC8vIERvbid0IHNob3cgaWYgdGhlcmUgYXJlIHBlbmRpbmcgc2xlZXBzIChXYWtlIHVwIGJ1dHRvbiBoYW5kbGVzIHRoaXMpXG4gIGlmIChhbmFseXNpcy5oYXNQZW5kaW5nU2xlZXBzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRG9uJ3Qgc2hvdyBpZiB0aGVyZSBhcmUgcGVuZGluZyBob29rcyAod2FpdGluZyBmb3IgZXh0ZXJuYWwgaW5wdXQpXG4gIGlmIChhbmFseXNpcy5oYXNQZW5kaW5nSG9va3MpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gIC8vIENoZWNrIGlmIGxhc3Qgc3RlcCBhY3Rpdml0eSB3YXMgPjMwIG1pbnV0ZXMgYWdvXG4gIGlmIChhbmFseXNpcy5sYXN0U3RlcEFjdGl2aXR5QXQpIHtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0QWN0aXZpdHkgPSBub3cgLSBhbmFseXNpcy5sYXN0U3RlcEFjdGl2aXR5QXQuZ2V0VGltZSgpO1xuICAgIGlmICh0aW1lU2luY2VMYXN0QWN0aXZpdHkgPiBTVEVQX0FDVElWSVRZX1RJTUVPVVRfTVMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBubyBwZW5kaW5nIHN0ZXBzIGFuZCBsYXN0IGNvbXBsZXRpb24gd2FzID41IG1pbnV0ZXMgYWdvXG4gIGlmICghYW5hbHlzaXMuaGFzUGVuZGluZ1N0ZXBzICYmIGFuYWx5c2lzLmxhc3RTdGVwQ29tcGxldGlvbkF0KSB7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdENvbXBsZXRpb24gPVxuICAgICAgbm93IC0gYW5hbHlzaXMubGFzdFN0ZXBDb21wbGV0aW9uQXQuZ2V0VGltZSgpO1xuICAgIGlmICh0aW1lU2luY2VMYXN0Q29tcGxldGlvbiA+IFNURVBfSURMRV9USU1FT1VUX01TKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGVyZSdzIG5vIHN0ZXAgYWN0aXZpdHkgYXQgYWxsIGJ1dCB0aGUgcnVuIGlzIG5vdCB0ZXJtaW5hbCxcbiAgLy8gYW5kIHdlJ3ZlIGJlZW4gd2FpdGluZyBmb3IgYSB3aGlsZSwgc2hvdyB0aGUgYnV0dG9uXG4gIGlmIChcbiAgICAhYW5hbHlzaXMubGFzdFN0ZXBBY3Rpdml0eUF0ICYmXG4gICAgIWFuYWx5c2lzLmhhc1BlbmRpbmdTdGVwcyAmJlxuICAgICFhbmFseXNpcy5oYXNQZW5kaW5nU2xlZXBzICYmXG4gICAgIWFuYWx5c2lzLmhhc1BlbmRpbmdIb29rc1xuICApIHtcbiAgICAvLyBUaGlzIGNhc2UgaGFuZGxlcyBydW5zIHRoYXQgaGF2ZW4ndCBzdGFydGVkIGFueSBzdGVwcyB5ZXRcbiAgICAvLyBidXQgYXJlbid0IGluIGEgdGVybWluYWwgc3RhdGUgLSB0aGV5IG1pZ2h0IGJlIHN0dWNrXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlcmUgYXJlIHBlbmRpbmcgc3RlcHMgZnJvbSBhbiBldmVudHMgbGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1BlbmRpbmdTdGVwc0Zyb21FdmVudHMoXG4gIGV2ZW50czogRXZlbnRbXSB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBhbmFseXplRXZlbnRzKGV2ZW50cykuaGFzUGVuZGluZ1N0ZXBzO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvb2tzIGZyb20gYW4gZXZlbnRzIGxpc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQZW5kaW5nSG9va3NGcm9tRXZlbnRzKFxuICBldmVudHM6IEV2ZW50W10gfCB1bmRlZmluZWRcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gYW5hbHl6ZUV2ZW50cyhldmVudHMpLmhhc1BlbmRpbmdIb29rcztcbn1cbiJdfQ==
@@ -9,7 +9,7 @@
9
9
  * all events for a run once, then materializes entities client-side instead
10
10
  * of making separate API calls for each entity type.
11
11
  */
12
- import type { Event, StepStatus } from '@workflow/world';
12
+ import { type Event, type StepStatus } from '@workflow/world';
13
13
  export interface MaterializedStep {
14
14
  stepId: string;
15
15
  runId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"event-materialization.d.ts","sourceRoot":"","sources":["../../src/lib/event-materialization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMzD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,mDAAmD;IACnD,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,mDAAmD;IACnD,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,mDAAmD;IACnD,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAqCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CA2DpE;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CA8BpE;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CAyBpE;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAMpE"}
1
+ {"version":3,"file":"event-materialization.d.ts","sourceRoot":"","sources":["../../src/lib/event-materialization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,KAAK,KAAK,EAIV,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAMzB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,mDAAmD;IACnD,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,mDAAmD;IACnD,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,mDAAmD;IACnD,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAqCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CA2DpE;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CA8BpE;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CAyBpE;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAMpE"}
@@ -9,16 +9,17 @@
9
9
  * all events for a run once, then materializes entities client-side instead
10
10
  * of making separate API calls for each entity type.
11
11
  */
12
+ import { isHookLifecycleEventType, isStepEventType, isWaitEventType, } from '@workflow/world';
12
13
  // ---------------------------------------------------------------------------
13
- // Helper: group events by correlationId prefix
14
+ // Helper: group events by correlationId
14
15
  // ---------------------------------------------------------------------------
15
- function groupByCorrelationId(events, prefixes) {
16
+ function groupByCorrelationId(events, matchesEventType) {
16
17
  const groups = new Map();
17
18
  for (const event of events) {
18
19
  const cid = event.correlationId;
19
20
  if (!cid)
20
21
  continue;
21
- if (!prefixes.some((p) => cid.startsWith(p)))
22
+ if (!matchesEventType(event.eventType))
22
23
  continue;
23
24
  const existing = groups.get(cid);
24
25
  if (existing) {
@@ -47,7 +48,7 @@ function getEventTimestamp(event) {
47
48
  * step_created event with no completion yet.
48
49
  */
49
50
  export function materializeSteps(events) {
50
- const groups = groupByCorrelationId(events, ['step_']);
51
+ const groups = groupByCorrelationId(events, isStepEventType);
51
52
  const steps = [];
52
53
  for (const [correlationId, stepEvents] of groups) {
53
54
  const created = stepEvents.find((e) => e.eventType === 'step_created');
@@ -109,7 +110,7 @@ export function materializeSteps(events) {
109
110
  * Group hook_* events by correlationId and build Hook-like entities.
110
111
  */
111
112
  export function materializeHooks(events) {
112
- const groups = groupByCorrelationId(events, ['hook_']);
113
+ const groups = groupByCorrelationId(events, isHookLifecycleEventType);
113
114
  const hooks = [];
114
115
  for (const [correlationId, hookEvents] of groups) {
115
116
  const created = hookEvents.find((e) => e.eventType === 'hook_created');
@@ -140,7 +141,7 @@ export function materializeHooks(events) {
140
141
  * Group wait_* events by correlationId and build Wait-like entities.
141
142
  */
142
143
  export function materializeWaits(events) {
143
- const groups = groupByCorrelationId(events, ['wait_']);
144
+ const groups = groupByCorrelationId(events, isWaitEventType);
144
145
  const waits = [];
145
146
  for (const [correlationId, waitEvents] of groups) {
146
147
  const created = waitEvents.find((e) => e.eventType === 'wait_created');
@@ -175,4 +176,4 @@ export function materializeAll(events) {
175
176
  waits: materializeWaits(events),
176
177
  };
177
178
  }
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWF0ZXJpYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9ldmVudC1tYXRlcmlhbGl6YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQW1ESCw4RUFBOEU7QUFDOUUsK0NBQStDO0FBQy9DLDhFQUE4RTtBQUU5RSxTQUFTLG9CQUFvQixDQUMzQixNQUFlLEVBQ2YsUUFBa0I7SUFFbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFDMUMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxHQUFHO1lBQUUsU0FBUztRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLFNBQVM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQXdCO0lBQ2pELE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxVQUFVLElBQUksS0FBSyxFQUFFLFNBQVMsQ0FBQztJQUNwRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRTdCLE1BQU0sSUFBSSxH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RUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDM0MsU0FBUyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTO1lBQzFELFFBQVEsRUFDTixPQUFPLENBQUMsU0FBUyxLQUFLLGNBQWM7Z0JBQ2xDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVE7Z0JBQzdCLENBQUMsQ0FBQyxTQUFTO1lBQ2YsV0FBVyxFQUFFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztZQUN6QyxNQUFNLEVBQUUsVUFBVTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsOEVBQThFO0FBQzlFLGlCQUFpQjtBQUNqQiw4RUFBOEU7QUFFOUU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFlO0lBQzVDLE9BQU87UUFDTCxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQy9CLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDL0IsS0FBSyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztLQUNoQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXZlbnQgbWF0ZXJpYWxpemF0aW9uIGhlbHBlcnMuXG4gKlxuICogVGhlc2UgZnVuY3Rpb25zIGNvbnZlcnQgYSBmbGF0IGxpc3Qgb2Ygd29ya2Zsb3cgZXZlbnRzIGludG8gZW50aXR5LWxpa2VcbiAqIG9iamVjdHMgKHN0ZXBzLCBob29rcywgd2FpdHMpIGJ5IGdyb3VwaW5nIGV2ZW50cyBieSBjb3JyZWxhdGlvbklkIGFuZFxuICogc3RpdGNoaW5nIHRvZ2V0aGVyIGxpZmVjeWNsZSBldmVudHMuXG4gKlxuICogVGhpcyBlbmFibGVzIGEgXCJ0b3AtZG93blwiIGRhdGEgZmV0Y2hpbmcgcGF0dGVybiB3aGVyZSB0aGUgY2xpZW50IGZldGNoZXNcbiAqIGFsbCBldmVudHMgZm9yIGEgcnVuIG9uY2UsIHRoZW4gbWF0ZXJpYWxpemVzIGVudGl0aWVzIGNsaWVudC1zaWRlIGluc3RlYWRcbiAqIG9mIG1ha2luZyBzZXBhcmF0ZSBBUEkgY2FsbHMgZm9yIGVhY2ggZW50aXR5IHR5cGUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBFdmVudCwgU3RlcFN0YXR1cyB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTWF0ZXJpYWxpemVkIGVudGl0eSB0eXBlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF0ZXJpYWxpemVkU3RlcCB7XG4gIHN0ZXBJZDogc3RyaW5nO1xuICBydW5JZDogc3RyaW5nO1xuICBzdGVwTmFtZTogc3RyaW5nO1xuICBzdGF0dXM6IFN0ZXBTdGF0dXM7XG4gIGF0dGVtcHQ6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBEYXRlO1xuICBzdGFydGVkQXQ/OiBEYXRlO1xuICBjb21wbGV0ZWRBdD86IERhdGU7XG4gIHVwZGF0ZWRBdDogRGF0ZTtcbiAgLyoqIEFsbCBldmVudHMgZm9yIHRoaXMgc3RlcCwgaW4gaW5zZXJ0aW9uIG9yZGVyICovXG4gIGV2ZW50czogRXZlbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXRlcmlhbGl6ZWRIb29rIHtcbiAgaG9va0lkOiBzdHJpbmc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHRva2VuPzogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IERhdGU7XG4gIHJlY2VpdmVkQ291bnQ6IG51bWJlcjtcbiAgbGFzdFJlY2VpdmVkQXQ/OiBEYXRlO1xuICBkaXNwb3NlZEF0PzogRGF0ZTtcbiAgLyoqIEFsbCBldmVudHMgZm9yIHRoaXMgaG9vaywgaW4gaW5zZXJ0aW9uIG9yZGVyICovXG4gIGV2ZW50czogRXZlbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXRlcmlhbGl6ZWRXYWl0IHtcbiAgd2FpdElkOiBzdHJpbmc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHN0YXR1czogJ3dhaXRpbmcnIHwgJ2NvbXBsZXRlZCc7XG4gIGNyZWF0ZWRBdDogRGF0ZTtcbiAgcmVzdW1lQXQ/OiBEYXRlO1xuICBjb21wbGV0ZWRBdD86IERhdGU7XG4gIC8qKiBBbGwgZXZlbnRzIGZvciB0aGlzIHdhaXQsIGluIGluc2VydGlvbiBvcmRlciAqL1xuICBldmVudHM6IEV2ZW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF0ZXJpYWxpemVkRW50aXRpZXMge1xuICBzdGVwczogTWF0ZXJpYWxpemVkU3RlcFtdO1xuICBob29rczogTWF0ZXJpYWxpemVkSG9va1tdO1xuICB3YWl0czogTWF0ZXJpYWxpemVkV2FpdFtdO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhlbHBlcjogZ3JvdXAgZXZlbnRzIGJ5IGNvcnJlbGF0aW9uSWQgcHJlZml4XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZ3JvdXBCeUNvcnJlbGF0aW9uSWQoXG4gIGV2ZW50czogRXZlbnRbXSxcbiAgcHJlZml4ZXM6IHN0cmluZ1tdXG4pOiBNYXA8c3RyaW5nLCBFdmVudFtdPiB7XG4gIGNvbnN0IGdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudFtdPigpO1xuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgIGNvbnN0IGNpZCA9IGV2ZW50LmNvcnJlbGF0aW9uSWQ7XG4gICAgaWYgKCFjaWQpIGNvbnRpbnVlO1xuICAgIGlmICghcHJlZml4ZXMuc29tZSgocCkgPT4gY2lkLnN0YXJ0c1dpdGgocCkpKSBjb250aW51ZTtcbiAgICBjb25zdCBleGlzdGluZyA9IGdyb3Vwcy5nZXQoY2lkKTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIGV4aXN0aW5nLnB1c2goZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHMuc2V0KGNpZCwgW2V2ZW50XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBncm91cHM7XG59XG5cbmZ1bmN0aW9uIGdldEV2ZW50VGltZXN0YW1wKGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZCk6IERhdGUgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IGV2ZW50Py5vY2N1cnJlZEF0ID8/IGV2ZW50Py5jcmVhdGVkQXQ7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZGF0ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpO1xuICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IHVuZGVmaW5lZCA6IGRhdGU7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gbWF0ZXJpYWxpemVTdGVwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogR3JvdXAgc3RlcF8qIGV2ZW50cyBieSBjb3JyZWxhdGlvbklkIGFuZCBidWlsZCBTdGVwLWxpa2UgZW50aXRpZXMuXG4gKlxuICogSGFuZGxlcyBwYXJ0aWFsIGV2ZW50IGxpc3RzIGdyYWNlZnVsbHk6IGEgc3RlcCBtYXkgb25seSBoYXZlIGFcbiAqIHN0ZXBfY3JlYXRlZCBldmVudCB3aXRoIG5vIGNvbXBsZXRpb24geWV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF0ZXJpYWxpemVTdGVwcyhldmVudHM6IEV2ZW50W10pOiBNYXRlcmlhbGl6ZWRTdGVwW10ge1xuICBjb25zdCBncm91cHMgPSBncm91cEJ5Q29ycmVsYXRpb25JZChldmVudHMsIFsnc3RlcF8nXSk7XG4gIGNvbnN0IHN0ZXBzOiBNYXRlcmlhbGl6ZWRTdGVwW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IFtjb3JyZWxhdGlvbklkLCBzdGVwRXZlbnRzXSBvZiBncm91cHMpIHtcbiAgICBjb25zdCBjcmVhdGVkID0gc3RlcEV2ZW50cy5maW5kKChlKSA9PiBlLmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY3JlYXRlZCcpO1xuICAgIGlmICghY3JlYXRlZCkgY29udGludWU7XG5cbiAgICBsZXQgc3RhdHVzOiBTdGVwU3RhdHVzID0gJ3BlbmRpbmcnO1xuICAgIGxldCBhdHRlbXB0ID0gMDtcbiAgICBsZXQgc3RhcnRlZEF0OiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgIGxldCBjb21wbGV0ZWRBdDogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgICBsZXQgdXBkYXRlZEF0ID0gZ2V0RXZlbnRUaW1lc3RhbXAoY3JlYXRlZCkgPz8gY3JlYXRlZC5jcmVhdGVkQXQ7XG5cbiAgICBmb3IgKGNvbnN0IGUgb2Ygc3RlcEV2ZW50cykge1xuICAgICAgc3dpdGNoIChlLmV2ZW50VHlwZSkge1xuICAgICAgICBjYXNlICdzdGVwX3N0YXJ0ZWQnOlxuICAgICAgICAgIHN0YXR1cyA9ICdydW5uaW5nJztcbiAgICAgICAgICBhdHRlbXB0ICs9IDE7XG4gICAgICAgICAgaWYgKCFzdGFydGVkQXQpIHN0YXJ0ZWRBdCA9IGdldEV2ZW50VGltZXN0YW1wKGUpID8/IGUuY3JlYXRlZEF0O1xuICAgICAgICAgIGNvbXBsZXRlZEF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHVwZGF0ZWRBdCA9IGdldEV2ZW50VGltZXN0YW1wKGUpID8/IGUuY3JlYXRlZEF0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdGVwX2NvbXBsZXRlZCc6XG4gICAgICAgICAgc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgY29tcGxldGVkQXQgPSBnZXRFdmVudFRpbWVzdGFtcChlKSA/PyBlLmNyZWF0ZWRBdDtcbiAgICAgICAgICB1cGRhdGVkQXQgPSBnZXRFdmVudFRpbWVzdGFtcChlKSA/PyBlLmNyZWF0ZWRBdDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RlcF9mYWlsZWQnOlxuICAgICAgICAgIHN0YXR1cyA9ICdmYWlsZWQnO1xuICAgICAgICAgIGNvbXBsZXRlZEF0ID0gZ2V0RXZlbnRUaW1lc3RhbXAoZSkgPz8gZS5jcmVhdGVkQXQ7XG4gICAgICAgICAgdXBkYXRlZEF0ID0gZ2V0RXZlbnRUaW1lc3RhbXAoZSkgPz8gZS5jcmVhdGVkQXQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0ZXBfcmV0cnlpbmcnOlxuICAgICAgICAgIHN0YXR1cyA9ICdwZW5kaW5nJztcbiAgICAgICAgICBjb21wbGV0ZWRBdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB1cGRhdGVkQXQgPSBnZXRFdmVudFRpbWVzdGFtcChlKSA/PyBlLmNyZWF0ZWRBdDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdGVwcy5wdXNoKHtcbiAgICAgIHN0ZXBJZDogY29ycmVsYXRpb25JZCxcbiAgICAgIHJ1bklkOiBjcmVhdGVkLnJ1bklkLFxuICAgICAgc3RlcE5hbWU6XG4gICAgICAgIGNyZWF0ZWQuZXZlbnRUeXBlID09PSAnc3RlcF9jcmVhdGVkJ1xuICAgICAgICAgID8gKGNyZWF0ZWQuZXZlbnREYXRhPy5zdGVwTmFtZSA/PyBjb3JyZWxhdGlvbklkKVxuICAgICAgICAgIDogY29ycmVsYXRpb25JZCxcbiAgICAgIHN0YXR1cyxcbiAgICAgIGF0dGVtcHQsXG4gICAgICBjcmVhdGVkQXQ6IGdldEV2ZW50VGltZXN0YW1wKGNyZWF0ZWQpID8/IGNyZWF0ZWQuY3JlYXRlZEF0LFxuICAgICAgc3RhcnRlZEF0LFxuICAgICAgY29tcGxldGVkQXQsXG4gICAgICB1cGRhdGVkQXQsXG4gICAgICBldmVudHM6IHN0ZXBFdmVudHMsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc3RlcHM7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gbWF0ZXJpYWxpemVIb29rc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogR3JvdXAgaG9va18qIGV2ZW50cyBieSBjb3JyZWxhdGlvbklkIGFuZCBidWlsZCBIb29rLWxpa2UgZW50aXRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRlcmlhbGl6ZUhvb2tzKGV2ZW50czogRXZlbnRbXSk6IE1hdGVyaWFsaXplZEhvb2tbXSB7XG4gIGNvbnN0IGdyb3VwcyA9IGdyb3VwQnlDb3JyZWxhdGlvbklkKGV2ZW50cywgWydob29rXyddKTtcbiAgY29uc3QgaG9va3M6IE1hdGVyaWFsaXplZEhvb2tbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2NvcnJlbGF0aW9uSWQsIGhvb2tFdmVudHNdIG9mIGdyb3Vwcykge1xuICAgIGNvbnN0IGNyZWF0ZWQgPSBob29rRXZlbnRzLmZpbmQoKGUpID0+IGUuZXZlbnRUeXBlID09PSAnaG9va19jcmVhdGVkJyk7XG4gICAgaWYgKCFjcmVhdGVkKSBjb250aW51ZTtcblxuICAgIGNvbnN0IHJlY2VpdmVkRXZlbnRzID0gaG9va0V2ZW50cy5maWx0ZXIoXG4gICAgICAoZSkgPT4gZS5ldmVudFR5cGUgPT09ICdob29rX3JlY2VpdmVkJ1xuICAgICk7XG4gICAgY29uc3QgZGlzcG9zZWQgPSBob29rRXZlbnRzLmZpbmQoKGUpID0+IGUuZXZlbnRUeXBlID09PSAnaG9va19kaXNwb3NlZCcpO1xuICAgIGNvbnN0IGxhc3RSZWNlaXZlZCA9IHJlY2VpdmVkRXZlbnRzLmF0KC0xKTtcblxuICAgIGhvb2tzLnB1c2goe1xuICAgICAgaG9va0lkOiBjb3JyZWxhdGlvbklkLFxuICAgICAgcnVuSWQ6IGNyZWF0ZWQucnVuSWQsXG4gICAgICB0b2tlbjpcbiAgICAgICAgY3JlYXRlZC5ldmVudFR5cGUgPT09ICdob29rX2NyZWF0ZWQnXG4gICAgICAgICAgPyBjcmVhdGVkLmV2ZW50RGF0YT8udG9rZW5cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGNyZWF0ZWRBdDogZ2V0RXZlbnRUaW1lc3RhbXAoY3JlYXRlZCkgPz8gY3JlYXRlZC5jcmVhdGVkQXQsXG4gICAgICByZWNlaXZlZENvdW50OiByZWNlaXZlZEV2ZW50cy5sZW5ndGgsXG4gICAgICBsYXN0UmVjZWl2ZWRBdDogZ2V0RXZlbnRUaW1lc3RhbXAobGFzdFJlY2VpdmVkKSxcbiAgICAgIGRpc3Bvc2VkQXQ6IGdldEV2ZW50VGltZXN0YW1wKGRpc3Bvc2VkKSxcbiAgICAgIGV2ZW50czogaG9va0V2ZW50cyxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBob29rcztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBtYXRlcmlhbGl6ZVdhaXRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBHcm91cCB3YWl0XyogZXZlbnRzIGJ5IGNvcnJlbGF0aW9uSWQgYW5kIGJ1aWxkIFdhaXQtbGlrZSBlbnRpdGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGVyaWFsaXplV2FpdHMoZXZlbnRzOiBFdmVudFtdKTogTWF0ZXJpYWxpemVkV2FpdFtdIHtcbiAgY29uc3QgZ3JvdXBzID0gZ3JvdXBCeUNvcnJlbGF0aW9uSWQoZXZlbnRzLCBbJ3dhaXRfJ10pO1xuICBjb25zdCB3YWl0czogTWF0ZXJpYWxpemVkV2FpdFtdID0gW107XG5cbiAgZm9yIChjb25zdCBbY29ycmVsYXRpb25JZCwgd2FpdEV2ZW50c10gb2YgZ3JvdXBzKSB7XG4gICAgY29uc3QgY3JlYXRlZCA9IHdhaXRFdmVudHMuZmluZCgoZSkgPT4gZS5ldmVudFR5cGUgPT09ICd3YWl0X2NyZWF0ZWQnKTtcbiAgICBpZiAoIWNyZWF0ZWQpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgY29tcGxldGVkID0gd2FpdEV2ZW50cy5maW5kKChlKSA9PiBlLmV2ZW50VHlwZSA9PT0gJ3dhaXRfY29tcGxldGVkJyk7XG5cbiAgICB3YWl0cy5wdXNoKHtcbiAgICAgIHdhaXRJZDogY29ycmVsYXRpb25JZCxcbiAgICAgIHJ1bklkOiBjcmVhdGVkLnJ1bklkLFxuICAgICAgc3RhdHVzOiBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6ICd3YWl0aW5nJyxcbiAgICAgIGNyZWF0ZWRBdDogZ2V0RXZlbnRUaW1lc3RhbXAoY3JlYXRlZCkgPz8gY3JlYXRlZC5jcmVhdGVkQXQsXG4gICAgICByZXN1bWVBdDpcbiAgICAgICAgY3JlYXRlZC5ldmVudFR5cGUgPT09ICd3YWl0X2NyZWF0ZWQnXG4gICAgICAgICAgPyBjcmVhdGVkLmV2ZW50RGF0YT8ucmVzdW1lQXRcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGNvbXBsZXRlZEF0OiBnZXRFdmVudFRpbWVzdGFtcChjb21wbGV0ZWQpLFxuICAgICAgZXZlbnRzOiB3YWl0RXZlbnRzLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHdhaXRzO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIG1hdGVyaWFsaXplQWxsXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IG1hdGVyaWFsaXplcyBhbGwgZW50aXR5IHR5cGVzIGZyb20gYSBmbGF0XG4gKiBldmVudCBsaXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF0ZXJpYWxpemVBbGwoZXZlbnRzOiBFdmVudFtdKTogTWF0ZXJpYWxpemVkRW50aXRpZXMge1xuICByZXR1cm4ge1xuICAgIHN0ZXBzOiBtYXRlcmlhbGl6ZVN0ZXBzKGV2ZW50cyksXG4gICAgaG9va3M6IG1hdGVyaWFsaXplSG9va3MoZXZlbnRzKSxcbiAgICB3YWl0czogbWF0ZXJpYWxpemVXYWl0cyhldmVudHMpLFxuICB9O1xufVxuIl19
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWF0ZXJpYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9ldmVudC1tYXRlcmlhbGl6YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUVILE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLGVBQWUsR0FFaEIsTUFBTSxpQkFBaUIsQ0FBQztBQWlEekIsOEVBQThFO0FBQzlFLHdDQUF3QztBQUN4Qyw4RUFBOEU7QUFFOUUsU0FBUyxvQkFBb0IsQ0FDM0IsTUFBZSxFQUNmLGdCQUFnRDtJQUVoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUMxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUc7WUFBRSxTQUFTO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQUUsU0FBUztRQUNqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsS0FBd0I7SUFDakQsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLFVBQVUsSUFBSSxLQUFLLEVBQUUsU0FBUyxDQUFDO0lBQ3BELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENB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TyxDQUFDLEtBQUs7WUFDcEIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQzNDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUztZQUMxRCxRQUFRLEVBQ04sT0FBTyxDQUFDLFNBQVMsS0FBSyxjQUFjO2dCQUNsQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRO2dCQUM3QixDQUFDLENBQUMsU0FBUztZQUNmLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7WUFDekMsTUFBTSxFQUFFLFVBQVU7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELDhFQUE4RTtBQUM5RSxpQkFBaUI7QUFDakIsOEVBQThFO0FBRTlFOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBZTtJQUM1QyxPQUFPO1FBQ0wsS0FBSyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUMvQixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQy9CLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7S0FDaEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV2ZW50IG1hdGVyaWFsaXphdGlvbiBoZWxwZXJzLlxuICpcbiAqIFRoZXNlIGZ1bmN0aW9ucyBjb252ZXJ0IGEgZmxhdCBsaXN0IG9mIHdvcmtmbG93IGV2ZW50cyBpbnRvIGVudGl0eS1saWtlXG4gKiBvYmplY3RzIChzdGVwcywgaG9va3MsIHdhaXRzKSBieSBncm91cGluZyBldmVudHMgYnkgY29ycmVsYXRpb25JZCBhbmRcbiAqIHN0aXRjaGluZyB0b2dldGhlciBsaWZlY3ljbGUgZXZlbnRzLlxuICpcbiAqIFRoaXMgZW5hYmxlcyBhIFwidG9wLWRvd25cIiBkYXRhIGZldGNoaW5nIHBhdHRlcm4gd2hlcmUgdGhlIGNsaWVudCBmZXRjaGVzXG4gKiBhbGwgZXZlbnRzIGZvciBhIHJ1biBvbmNlLCB0aGVuIG1hdGVyaWFsaXplcyBlbnRpdGllcyBjbGllbnQtc2lkZSBpbnN0ZWFkXG4gKiBvZiBtYWtpbmcgc2VwYXJhdGUgQVBJIGNhbGxzIGZvciBlYWNoIGVudGl0eSB0eXBlLlxuICovXG5cbmltcG9ydCB7XG4gIHR5cGUgRXZlbnQsXG4gIGlzSG9va0xpZmVjeWNsZUV2ZW50VHlwZSxcbiAgaXNTdGVwRXZlbnRUeXBlLFxuICBpc1dhaXRFdmVudFR5cGUsXG4gIHR5cGUgU3RlcFN0YXR1cyxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNYXRlcmlhbGl6ZWQgZW50aXR5IHR5cGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBNYXRlcmlhbGl6ZWRTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHN0ZXBOYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogU3RlcFN0YXR1cztcbiAgYXR0ZW1wdDogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IERhdGU7XG4gIHN0YXJ0ZWRBdD86IERhdGU7XG4gIGNvbXBsZXRlZEF0PzogRGF0ZTtcbiAgdXBkYXRlZEF0OiBEYXRlO1xuICAvKiogQWxsIGV2ZW50cyBmb3IgdGhpcyBzdGVwLCBpbiBpbnNlcnRpb24gb3JkZXIgKi9cbiAgZXZlbnRzOiBFdmVudFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hdGVyaWFsaXplZEhvb2sge1xuICBob29rSWQ6IHN0cmluZztcbiAgcnVuSWQ6IHN0cmluZztcbiAgdG9rZW4/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogRGF0ZTtcbiAgcmVjZWl2ZWRDb3VudDogbnVtYmVyO1xuICBsYXN0UmVjZWl2ZWRBdD86IERhdGU7XG4gIGRpc3Bvc2VkQXQ/OiBEYXRlO1xuICAvKiogQWxsIGV2ZW50cyBmb3IgdGhpcyBob29rLCBpbiBpbnNlcnRpb24gb3JkZXIgKi9cbiAgZXZlbnRzOiBFdmVudFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hdGVyaWFsaXplZFdhaXQge1xuICB3YWl0SWQ6IHN0cmluZztcbiAgcnVuSWQ6IHN0cmluZztcbiAgc3RhdHVzOiAnd2FpdGluZycgfCAnY29tcGxldGVkJztcbiAgY3JlYXRlZEF0OiBEYXRlO1xuICByZXN1bWVBdD86IERhdGU7XG4gIGNvbXBsZXRlZEF0PzogRGF0ZTtcbiAgLyoqIEFsbCBldmVudHMgZm9yIHRoaXMgd2FpdCwgaW4gaW5zZXJ0aW9uIG9yZGVyICovXG4gIGV2ZW50czogRXZlbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXRlcmlhbGl6ZWRFbnRpdGllcyB7XG4gIHN0ZXBzOiBNYXRlcmlhbGl6ZWRTdGVwW107XG4gIGhvb2tzOiBNYXRlcmlhbGl6ZWRIb29rW107XG4gIHdhaXRzOiBNYXRlcmlhbGl6ZWRXYWl0W107XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSGVscGVyOiBncm91cCBldmVudHMgYnkgY29ycmVsYXRpb25JZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGdyb3VwQnlDb3JyZWxhdGlvbklkKFxuICBldmVudHM6IEV2ZW50W10sXG4gIG1hdGNoZXNFdmVudFR5cGU6IChldmVudFR5cGU6IHN0cmluZykgPT4gYm9vbGVhblxuKTogTWFwPHN0cmluZywgRXZlbnRbXT4ge1xuICBjb25zdCBncm91cHMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRbXT4oKTtcbiAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICBjb25zdCBjaWQgPSBldmVudC5jb3JyZWxhdGlvbklkO1xuICAgIGlmICghY2lkKSBjb250aW51ZTtcbiAgICBpZiAoIW1hdGNoZXNFdmVudFR5cGUoZXZlbnQuZXZlbnRUeXBlKSkgY29udGludWU7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBncm91cHMuZ2V0KGNpZCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBleGlzdGluZy5wdXNoKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzLnNldChjaWQsIFtldmVudF0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZ3JvdXBzO1xufVxuXG5mdW5jdGlvbiBnZXRFdmVudFRpbWVzdGFtcChldmVudDogRXZlbnQgfCB1bmRlZmluZWQpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBldmVudD8ub2NjdXJyZWRBdCA/PyBldmVudD8uY3JlYXRlZEF0O1xuICBpZiAoIXZhbHVlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGRhdGUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKHZhbHVlKTtcbiAgcmV0dXJuIE51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSkgPyB1bmRlZmluZWQgOiBkYXRlO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIG1hdGVyaWFsaXplU3RlcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEdyb3VwIHN0ZXBfKiBldmVudHMgYnkgY29ycmVsYXRpb25JZCBhbmQgYnVpbGQgU3RlcC1saWtlIGVudGl0aWVzLlxuICpcbiAqIEhhbmRsZXMgcGFydGlhbCBldmVudCBsaXN0cyBncmFjZWZ1bGx5OiBhIHN0ZXAgbWF5IG9ubHkgaGF2ZSBhXG4gKiBzdGVwX2NyZWF0ZWQgZXZlbnQgd2l0aCBubyBjb21wbGV0aW9uIHlldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGVyaWFsaXplU3RlcHMoZXZlbnRzOiBFdmVudFtdKTogTWF0ZXJpYWxpemVkU3RlcFtdIHtcbiAgY29uc3QgZ3JvdXBzID0gZ3JvdXBCeUNvcnJlbGF0aW9uSWQoZXZlbnRzLCBpc1N0ZXBFdmVudFR5cGUpO1xuICBjb25zdCBzdGVwczogTWF0ZXJpYWxpemVkU3RlcFtdID0gW107XG5cbiAgZm9yIChjb25zdCBbY29ycmVsYXRpb25JZCwgc3RlcEV2ZW50c10gb2YgZ3JvdXBzKSB7XG4gICAgY29uc3QgY3JlYXRlZCA9IHN0ZXBFdmVudHMuZmluZCgoZSkgPT4gZS5ldmVudFR5cGUgPT09ICdzdGVwX2NyZWF0ZWQnKTtcbiAgICBpZiAoIWNyZWF0ZWQpIGNvbnRpbnVlO1xuXG4gICAgbGV0IHN0YXR1czogU3RlcFN0YXR1cyA9ICdwZW5kaW5nJztcbiAgICBsZXQgYXR0ZW1wdCA9IDA7XG4gICAgbGV0IHN0YXJ0ZWRBdDogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgICBsZXQgY29tcGxldGVkQXQ6IERhdGUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHVwZGF0ZWRBdCA9IGdldEV2ZW50VGltZXN0YW1wKGNyZWF0ZWQpID8/IGNyZWF0ZWQuY3JlYXRlZEF0O1xuXG4gICAgZm9yIChjb25zdCBlIG9mIHN0ZXBFdmVudHMpIHtcbiAgICAgIHN3aXRjaCAoZS5ldmVudFR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RlcF9zdGFydGVkJzpcbiAgICAgICAgICBzdGF0dXMgPSAncnVubmluZyc7XG4gICAgICAgICAgYXR0ZW1wdCArPSAxO1xuICAgICAgICAgIGlmICghc3RhcnRlZEF0KSBzdGFydGVkQXQgPSBnZXRFdmVudFRpbWVzdGFtcChlKSA/PyBlLmNyZWF0ZWRBdDtcbiAgICAgICAgICBjb21wbGV0ZWRBdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB1cGRhdGVkQXQgPSBnZXRFdmVudFRpbWVzdGFtcChlKSA/PyBlLmNyZWF0ZWRBdDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RlcF9jb21wbGV0ZWQnOlxuICAgICAgICAgIHN0YXR1cyA9ICdjb21wbGV0ZWQnO1xuICAgICAgICAgIGNvbXBsZXRlZEF0ID0gZ2V0RXZlbnRUaW1lc3RhbXAoZSkgPz8gZS5jcmVhdGVkQXQ7XG4gICAgICAgICAgdXBkYXRlZEF0ID0gZ2V0RXZlbnRUaW1lc3RhbXAoZSkgPz8gZS5jcmVhdGVkQXQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0ZXBfZmFpbGVkJzpcbiAgICAgICAgICBzdGF0dXMgPSAnZmFpbGVkJztcbiAgICAgICAgICBjb21wbGV0ZWRBdCA9IGdldEV2ZW50VGltZXN0YW1wKGUpID8/IGUuY3JlYXRlZEF0O1xuICAgICAgICAgIHVwZGF0ZWRBdCA9IGdldEV2ZW50VGltZXN0YW1wKGUpID8/IGUuY3JlYXRlZEF0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdGVwX3JldHJ5aW5nJzpcbiAgICAgICAgICBzdGF0dXMgPSAncGVuZGluZyc7XG4gICAgICAgICAgY29tcGxldGVkQXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgdXBkYXRlZEF0ID0gZ2V0RXZlbnRUaW1lc3RhbXAoZSkgPz8gZS5jcmVhdGVkQXQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RlcHMucHVzaCh7XG4gICAgICBzdGVwSWQ6IGNvcnJlbGF0aW9uSWQsXG4gICAgICBydW5JZDogY3JlYXRlZC5ydW5JZCxcbiAgICAgIHN0ZXBOYW1lOlxuICAgICAgICBjcmVhdGVkLmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY3JlYXRlZCdcbiAgICAgICAgICA/IChjcmVhdGVkLmV2ZW50RGF0YT8uc3RlcE5hbWUgPz8gY29ycmVsYXRpb25JZClcbiAgICAgICAgICA6IGNvcnJlbGF0aW9uSWQsXG4gICAgICBzdGF0dXMsXG4gICAgICBhdHRlbXB0LFxuICAgICAgY3JlYXRlZEF0OiBnZXRFdmVudFRpbWVzdGFtcChjcmVhdGVkKSA/PyBjcmVhdGVkLmNyZWF0ZWRBdCxcbiAgICAgIHN0YXJ0ZWRBdCxcbiAgICAgIGNvbXBsZXRlZEF0LFxuICAgICAgdXBkYXRlZEF0LFxuICAgICAgZXZlbnRzOiBzdGVwRXZlbnRzLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0ZXBzO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIG1hdGVyaWFsaXplSG9va3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEdyb3VwIGhvb2tfKiBldmVudHMgYnkgY29ycmVsYXRpb25JZCBhbmQgYnVpbGQgSG9vay1saWtlIGVudGl0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF0ZXJpYWxpemVIb29rcyhldmVudHM6IEV2ZW50W10pOiBNYXRlcmlhbGl6ZWRIb29rW10ge1xuICBjb25zdCBncm91cHMgPSBncm91cEJ5Q29ycmVsYXRpb25JZChldmVudHMsIGlzSG9va0xpZmVjeWNsZUV2ZW50VHlwZSk7XG4gIGNvbnN0IGhvb2tzOiBNYXRlcmlhbGl6ZWRIb29rW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IFtjb3JyZWxhdGlvbklkLCBob29rRXZlbnRzXSBvZiBncm91cHMpIHtcbiAgICBjb25zdCBjcmVhdGVkID0gaG9va0V2ZW50cy5maW5kKChlKSA9PiBlLmV2ZW50VHlwZSA9PT0gJ2hvb2tfY3JlYXRlZCcpO1xuICAgIGlmICghY3JlYXRlZCkgY29udGludWU7XG5cbiAgICBjb25zdCByZWNlaXZlZEV2ZW50cyA9IGhvb2tFdmVudHMuZmlsdGVyKFxuICAgICAgKGUpID0+IGUuZXZlbnRUeXBlID09PSAnaG9va19yZWNlaXZlZCdcbiAgICApO1xuICAgIGNvbnN0IGRpc3Bvc2VkID0gaG9va0V2ZW50cy5maW5kKChlKSA9PiBlLmV2ZW50VHlwZSA9PT0gJ2hvb2tfZGlzcG9zZWQnKTtcbiAgICBjb25zdCBsYXN0UmVjZWl2ZWQgPSByZWNlaXZlZEV2ZW50cy5hdCgtMSk7XG5cbiAgICBob29rcy5wdXNoKHtcbiAgICAgIGhvb2tJZDogY29ycmVsYXRpb25JZCxcbiAgICAgIHJ1bklkOiBjcmVhdGVkLnJ1bklkLFxuICAgICAgdG9rZW46XG4gICAgICAgIGNyZWF0ZWQuZXZlbnRUeXBlID09PSAnaG9va19jcmVhdGVkJ1xuICAgICAgICAgID8gY3JlYXRlZC5ldmVudERhdGE/LnRva2VuXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBjcmVhdGVkQXQ6IGdldEV2ZW50VGltZXN0YW1wKGNyZWF0ZWQpID8/IGNyZWF0ZWQuY3JlYXRlZEF0LFxuICAgICAgcmVjZWl2ZWRDb3VudDogcmVjZWl2ZWRFdmVudHMubGVuZ3RoLFxuICAgICAgbGFzdFJlY2VpdmVkQXQ6IGdldEV2ZW50VGltZXN0YW1wKGxhc3RSZWNlaXZlZCksXG4gICAgICBkaXNwb3NlZEF0OiBnZXRFdmVudFRpbWVzdGFtcChkaXNwb3NlZCksXG4gICAgICBldmVudHM6IGhvb2tFdmVudHMsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaG9va3M7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gbWF0ZXJpYWxpemVXYWl0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogR3JvdXAgd2FpdF8qIGV2ZW50cyBieSBjb3JyZWxhdGlvbklkIGFuZCBidWlsZCBXYWl0LWxpa2UgZW50aXRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRlcmlhbGl6ZVdhaXRzKGV2ZW50czogRXZlbnRbXSk6IE1hdGVyaWFsaXplZFdhaXRbXSB7XG4gIGNvbnN0IGdyb3VwcyA9IGdyb3VwQnlDb3JyZWxhdGlvbklkKGV2ZW50cywgaXNXYWl0RXZlbnRUeXBlKTtcbiAgY29uc3Qgd2FpdHM6IE1hdGVyaWFsaXplZFdhaXRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2NvcnJlbGF0aW9uSWQsIHdhaXRFdmVudHNdIG9mIGdyb3Vwcykge1xuICAgIGNvbnN0IGNyZWF0ZWQgPSB3YWl0RXZlbnRzLmZpbmQoKGUpID0+IGUuZXZlbnRUeXBlID09PSAnd2FpdF9jcmVhdGVkJyk7XG4gICAgaWYgKCFjcmVhdGVkKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGNvbXBsZXRlZCA9IHdhaXRFdmVudHMuZmluZCgoZSkgPT4gZS5ldmVudFR5cGUgPT09ICd3YWl0X2NvbXBsZXRlZCcpO1xuXG4gICAgd2FpdHMucHVzaCh7XG4gICAgICB3YWl0SWQ6IGNvcnJlbGF0aW9uSWQsXG4gICAgICBydW5JZDogY3JlYXRlZC5ydW5JZCxcbiAgICAgIHN0YXR1czogY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnd2FpdGluZycsXG4gICAgICBjcmVhdGVkQXQ6IGdldEV2ZW50VGltZXN0YW1wKGNyZWF0ZWQpID8/IGNyZWF0ZWQuY3JlYXRlZEF0LFxuICAgICAgcmVzdW1lQXQ6XG4gICAgICAgIGNyZWF0ZWQuZXZlbnRUeXBlID09PSAnd2FpdF9jcmVhdGVkJ1xuICAgICAgICAgID8gY3JlYXRlZC5ldmVudERhdGE/LnJlc3VtZUF0XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBjb21wbGV0ZWRBdDogZ2V0RXZlbnRUaW1lc3RhbXAoY29tcGxldGVkKSxcbiAgICAgIGV2ZW50czogd2FpdEV2ZW50cyxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB3YWl0cztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBtYXRlcmlhbGl6ZUFsbFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQ29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBtYXRlcmlhbGl6ZXMgYWxsIGVudGl0eSB0eXBlcyBmcm9tIGEgZmxhdFxuICogZXZlbnQgbGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGVyaWFsaXplQWxsKGV2ZW50czogRXZlbnRbXSk6IE1hdGVyaWFsaXplZEVudGl0aWVzIHtcbiAgcmV0dXJuIHtcbiAgICBzdGVwczogbWF0ZXJpYWxpemVTdGVwcyhldmVudHMpLFxuICAgIGhvb2tzOiBtYXRlcmlhbGl6ZUhvb2tzKGV2ZW50cyksXG4gICAgd2FpdHM6IG1hdGVyaWFsaXplV2FpdHMoZXZlbnRzKSxcbiAgfTtcbn1cbiJdfQ==
@@ -6,7 +6,6 @@
6
6
  * objects for UI rendering.
7
7
  */
8
8
  import { type Revivers } from '@workflow/core/serialization-format';
9
- export declare function getEventDataRefFields(eventType: string): string[];
10
9
  export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isRunRef, isStreamId, isStreamRef, type Revivers, RUN_REF_TYPE, type RunRef, STREAM_REF_TYPE, type StreamRef, serializedInstanceToRef, truncateId, } from '@workflow/core/serialization-format';
11
10
  /**
12
11
  * Get the web-specific revivers for hydrating serialized data.
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAOL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAQ7C,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAOjE;AAGD,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,YAAY,EACZ,KAAK,MAAM,EACX,eAAe,EACf,KAAK,SAAS,EACd,uBAAuB,EACvB,UAAU,GACX,MAAM,qCAAqC,CAAC;AAgE7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CA+MzC;AAmBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAMnD;AAMD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AA0BlD,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMzD;AAMD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAiBnD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMvD;AAsCD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,QAAQ,EAAE,CAAC,EACX,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,CAAC,CAAC,CAyDZ;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAkB7D"}
1
+ {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAOL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,YAAY,EACZ,KAAK,MAAM,EACX,eAAe,EACf,KAAK,SAAS,EACd,uBAAuB,EACvB,UAAU,GACX,MAAM,qCAAqC,CAAC;AAgE7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CA+MzC;AAmBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAMnD;AAMD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AA0BlD,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMzD;AAMD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAiBnD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMvD;AAsCD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,QAAQ,EAAE,CAAC,EACX,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,CAAC,CAAC,CAyDZ;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAkB7D"}