@workflow/web-shared 5.0.0-beta.24 → 5.0.0-beta.25

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 (95) hide show
  1. package/README.md +2 -10
  2. package/dist/components/event-list-view.d.ts +30 -0
  3. package/dist/components/event-list-view.d.ts.map +1 -1
  4. package/dist/components/event-list-view.js +27 -12
  5. package/dist/components/index.d.ts +4 -3
  6. package/dist/components/index.d.ts.map +1 -1
  7. package/dist/components/index.js +3 -3
  8. package/dist/components/new-trace-viewer/components/copy-button.js +2 -2
  9. package/dist/components/new-trace-viewer/components/event-list.js +2 -2
  10. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +2 -2
  11. package/dist/components/new-trace-viewer/components/span-markers.js +3 -3
  12. package/dist/components/new-trace-viewer/components/split-pane.js +2 -2
  13. package/dist/components/new-trace-viewer/components/timeline.js +2 -2
  14. package/dist/components/new-trace-viewer/trace-viewer.js +4 -4
  15. package/dist/components/run-trace-view.d.ts +5 -7
  16. package/dist/components/run-trace-view.d.ts.map +1 -1
  17. package/dist/components/run-trace-view.js +3 -3
  18. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  19. package/dist/components/sidebar/attribute-panel.js +3 -5
  20. package/dist/components/sidebar/detail-card.js +2 -2
  21. package/dist/components/sidebar/entity-detail-panel.d.ts +6 -10
  22. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  23. package/dist/components/sidebar/entity-detail-panel.js +8 -60
  24. package/dist/components/sidebar/events-list.d.ts +3 -1
  25. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  26. package/dist/components/sidebar/events-list.js +31 -9
  27. package/dist/components/sidebar/sidebar-data-context.d.ts +5 -6
  28. package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -1
  29. package/dist/components/sidebar/sidebar-data-context.js +1 -1
  30. package/dist/components/sidebar/span-detail-merge.d.ts +15 -0
  31. package/dist/components/sidebar/span-detail-merge.d.ts.map +1 -1
  32. package/dist/components/sidebar/span-detail-merge.js +40 -1
  33. package/dist/components/sidebar/use-selected-span-detail.d.ts +16 -0
  34. package/dist/components/sidebar/use-selected-span-detail.d.ts.map +1 -0
  35. package/dist/components/sidebar/use-selected-span-detail.js +93 -0
  36. package/dist/components/ui/alert.js +2 -2
  37. package/dist/components/ui/button.js +2 -2
  38. package/dist/components/ui/card.js +2 -2
  39. package/dist/components/ui/context-card.js +2 -2
  40. package/dist/components/ui/error-card.js +2 -2
  41. package/dist/components/ui/icon-button.js +2 -2
  42. package/dist/components/ui/kbd.js +2 -2
  43. package/dist/components/ui/skeleton.js +2 -2
  44. package/dist/components/ui/tooltip.js +2 -2
  45. package/dist/components/workflow-trace-view.d.ts +6 -7
  46. package/dist/components/workflow-trace-view.d.ts.map +1 -1
  47. package/dist/components/workflow-trace-view.js +3 -6
  48. package/dist/components/workflow-traces/trace-span-construction.d.ts +4 -4
  49. package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
  50. package/dist/components/workflow-traces/trace-span-construction.js +74 -53
  51. package/dist/lib/cn.d.ts +10 -0
  52. package/dist/lib/cn.d.ts.map +1 -0
  53. package/dist/lib/cn.js +83 -0
  54. package/dist/lib/event-materialization.d.ts +0 -3
  55. package/dist/lib/event-materialization.d.ts.map +1 -1
  56. package/dist/lib/event-materialization.js +28 -27
  57. package/dist/lib/trace-builder.d.ts.map +1 -1
  58. package/dist/lib/trace-builder.js +3 -3
  59. package/dist/lib/utils.d.ts +0 -2
  60. package/dist/lib/utils.d.ts.map +1 -1
  61. package/dist/lib/utils.js +1 -6
  62. package/package.json +3 -3
  63. package/src/components/event-list-view.tsx +76 -13
  64. package/src/components/index.ts +10 -6
  65. package/src/components/new-trace-viewer/components/copy-button.tsx +1 -1
  66. package/src/components/new-trace-viewer/components/event-list.tsx +1 -1
  67. package/src/components/new-trace-viewer/components/middle-truncate/middle-truncate.tsx +1 -1
  68. package/src/components/new-trace-viewer/components/span-markers.tsx +2 -2
  69. package/src/components/new-trace-viewer/components/split-pane.tsx +1 -1
  70. package/src/components/new-trace-viewer/components/timeline.tsx +1 -1
  71. package/src/components/new-trace-viewer/trace-viewer.tsx +6 -6
  72. package/src/components/run-trace-view.tsx +10 -14
  73. package/src/components/sidebar/attribute-panel.tsx +2 -4
  74. package/src/components/sidebar/detail-card.tsx +1 -1
  75. package/src/components/sidebar/entity-detail-panel.tsx +23 -94
  76. package/src/components/sidebar/events-list.tsx +58 -8
  77. package/src/components/sidebar/sidebar-data-context.tsx +6 -7
  78. package/src/components/sidebar/span-detail-merge.ts +69 -0
  79. package/src/components/sidebar/use-selected-span-detail.ts +146 -0
  80. package/src/components/ui/alert.tsx +1 -1
  81. package/src/components/ui/button.tsx +1 -1
  82. package/src/components/ui/card.tsx +1 -1
  83. package/src/components/ui/context-card.tsx +1 -1
  84. package/src/components/ui/error-card.tsx +1 -1
  85. package/src/components/ui/icon-button.tsx +1 -1
  86. package/src/components/ui/kbd.tsx +1 -1
  87. package/src/components/ui/skeleton.tsx +1 -1
  88. package/src/components/ui/tooltip.tsx +1 -1
  89. package/src/components/workflow-trace-view.tsx +11 -21
  90. package/src/components/workflow-traces/trace-span-construction.test.ts +85 -0
  91. package/src/components/workflow-traces/trace-span-construction.ts +113 -89
  92. package/src/lib/cn.ts +93 -0
  93. package/src/lib/event-materialization.ts +56 -76
  94. package/src/lib/trace-builder.ts +2 -1
  95. package/src/lib/utils.ts +0 -6
@@ -1,4 +1,43 @@
1
1
  const hasField = (value, key) => key in value;
2
+ const RESOURCES_WITH_FETCHED_DETAIL = new Set(['run', 'step', 'sleep']);
3
+ export function resourceNeedsFetchedDetail(resource) {
4
+ return resource !== undefined && RESOURCES_WITH_FETCHED_DETAIL.has(resource);
5
+ }
6
+ export function deriveSpanDetailView(args) {
7
+ const { resource, resourceId, inlineData, fetchedDetail, fetchedError } = args;
8
+ const matchedDetail = spanDetailMatchesSelection(fetchedDetail, resource, resourceId)
9
+ ? fetchedDetail
10
+ : null;
11
+ const displayData = mergeSpanDetail(inlineData, matchedDetail);
12
+ if (!resource || !resourceId) {
13
+ return { status: 'idle', displayData, detail: null, error: undefined };
14
+ }
15
+ if (fetchedError) {
16
+ return {
17
+ status: 'error',
18
+ displayData,
19
+ detail: matchedDetail,
20
+ error: fetchedError,
21
+ };
22
+ }
23
+ if (!resourceNeedsFetchedDetail(resource)) {
24
+ return {
25
+ status: 'ready',
26
+ displayData,
27
+ detail: matchedDetail,
28
+ error: undefined,
29
+ };
30
+ }
31
+ if (matchedDetail !== null) {
32
+ return {
33
+ status: 'ready',
34
+ displayData,
35
+ detail: matchedDetail,
36
+ error: undefined,
37
+ };
38
+ }
39
+ return { status: 'loading', displayData, detail: null, error: undefined };
40
+ }
2
41
  /**
3
42
  * Returns true when the fetched `detail` belongs to the current selection.
4
43
  * The fetch lags selection, so it can briefly hold a previously selected span
@@ -50,4 +89,4 @@ export function mergeSpanDetail(spanData, detail) {
50
89
  }
51
90
  return merged;
52
91
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhbi1kZXRhaWwtbWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zaWRlYmFyL3NwYW4tZGV0YWlsLW1lcmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sUUFBUSxHQUFHLENBQ2YsS0FBYSxFQUNiLEdBQVcsRUFDdUIsRUFBRSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFFcEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUN4QyxNQUFlLEVBQ2YsUUFBNEIsRUFDNUIsVUFBOEI7SUFFOUIsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssTUFBTTtZQUNULE9BQU8sUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQztRQUNwRSxLQUFLLE1BQU07WUFDVCxPQUFPLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUM7UUFDcEUsS0FBSyxPQUFPO1lBQ1YsT0FBTyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDO1FBQ3BFLEtBQUssS0FBSztZQUNSLE9BQU8sQ0FDTCxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztnQkFDekIsQ0FBQyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDO2dCQUNyQixDQUFDLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQztnQkFDckIsTUFBTSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQzVCLENBQUM7UUFDSjtZQUNFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLFFBQWlCLEVBQUUsTUFBZTtJQUNoRSxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCx3RUFBd0U7SUFDeEUsNERBQTREO0lBQzVELE1BQU0sTUFBTSxHQUE0QixFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDdEQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQ3ZDLFFBQW1DLENBQ3BDLEVBQUUsQ0FBQztRQUNGLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaGFzRmllbGQgPSAoXG4gIHZhbHVlOiBvYmplY3QsXG4gIGtleTogc3RyaW5nXG4pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiBrZXkgaW4gdmFsdWU7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIGZldGNoZWQgYGRldGFpbGAgYmVsb25ncyB0byB0aGUgY3VycmVudCBzZWxlY3Rpb24uXG4gKiBUaGUgZmV0Y2ggbGFncyBzZWxlY3Rpb24sIHNvIGl0IGNhbiBicmllZmx5IGhvbGQgYSBwcmV2aW91c2x5IHNlbGVjdGVkIHNwYW5cbiAqIChldmVuIGEgZGlmZmVyZW50IHJlc291cmNlIHR5cGUpOyByZWplY3QgaXQgYmVmb3JlIG1lcmdpbmcgb3IgaXRzIGZpZWxkc1xuICogdW5pb24gaW50byB0aGUgd3JvbmcgcGFuZWwuIFN0ZXBzL2hvb2tzL3dhaXRzIGNhcnJ5IHRoZWlyIHBhcmVudCBgcnVuSWRgLCBzb1xuICogYSBgcnVuYCBzZWxlY3Rpb24gZXhjbHVkZXMgb2JqZWN0cyBpZGVudGlmaWFibGUgYXMgYSBjaGlsZCByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYW5EZXRhaWxNYXRjaGVzU2VsZWN0aW9uKFxuICBkZXRhaWw6IHVua25vd24sXG4gIHJlc291cmNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHJlc291cmNlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gIGlmICghZGV0YWlsIHx8IHR5cGVvZiBkZXRhaWwgIT09ICdvYmplY3QnIHx8ICFyZXNvdXJjZSB8fCAhcmVzb3VyY2VJZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzd2l0Y2ggKHJlc291cmNlKSB7XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICByZXR1cm4gaGFzRmllbGQoZGV0YWlsLCAnc3RlcElkJykgJiYgZGV0YWlsLnN0ZXBJZCA9PT0gcmVzb3VyY2VJZDtcbiAgICBjYXNlICdob29rJzpcbiAgICAgIHJldHVybiBoYXNGaWVsZChkZXRhaWwsICdob29rSWQnKSAmJiBkZXRhaWwuaG9va0lkID09PSByZXNvdXJjZUlkO1xuICAgIGNhc2UgJ3NsZWVwJzpcbiAgICAgIHJldHVybiBoYXNGaWVsZChkZXRhaWwsICd3YWl0SWQnKSAmJiBkZXRhaWwud2FpdElkID09PSByZXNvdXJjZUlkO1xuICAgIGNhc2UgJ3J1bic6XG4gICAgICByZXR1cm4gKFxuICAgICAgICBoYXNGaWVsZChkZXRhaWwsICdydW5JZCcpICYmXG4gICAgICAgICEoJ3N0ZXBJZCcgaW4gZGV0YWlsKSAmJlxuICAgICAgICAhKCdob29rSWQnIGluIGRldGFpbCkgJiZcbiAgICAgICAgISgnd2FpdElkJyBpbiBkZXRhaWwpICYmXG4gICAgICAgIGRldGFpbC5ydW5JZCA9PT0gcmVzb3VyY2VJZFxuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogTWVyZ2VzIGZldGNoZWQgYGRldGFpbGAgb3ZlciB0aGUgc3BhbidzIG93biBkYXRhLiBUaGUgZGV0YWlsIHN1cHBsaWVzIHRoZVxuICogaGVhdnkgZmllbGRzIHRoZSB0cmFjZSBzdHJpcHMgKGlucHV0L291dHB1dC9lcnJvci9tZXRhZGF0YSwgc2xlZXAgcmVzdW1lQXQpO1xuICogdGhlIHNwYW4ncyBpZGVudGl0eSwgc3RhdHVzLCBhbmQgZXZlbnQtZGVyaXZlZCB0aW1lc3RhbXBzIHN0YXkgYXV0aG9yaXRhdGl2ZVxuICogc28gdGhleSBkb24ndCBmbGlja2VyIHRvIHRoZSBiYWNrZW5kIHJvdydzIG1pbGxpc2Vjb25kLWRpZmZlcmVudCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVNwYW5EZXRhaWwoc3BhbkRhdGE6IHVua25vd24sIGRldGFpbDogdW5rbm93bik6IHVua25vd24ge1xuICBpZiAoIWRldGFpbCB8fCB0eXBlb2YgZGV0YWlsICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBzcGFuRGF0YTtcbiAgfVxuICBpZiAoIXNwYW5EYXRhIHx8IHR5cGVvZiBzcGFuRGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZGV0YWlsO1xuICB9XG4gIC8vIFNraXAgYHVuZGVmaW5lZGAgc3BhbiBmaWVsZHMgc28gdGhleSBkb24ndCBjbG9iYmVyIGEgdmFsdWUgdGhlIGRldGFpbFxuICAvLyBsZWdpdGltYXRlbHkgcHJvdmlkZXMgKGUuZy4gYSBzdGVwJ3Mgb3B0aW9uYWwgc3RhcnRlZEF0KS5cbiAgY29uc3QgbWVyZ2VkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4uZGV0YWlsIH07XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgIHNwYW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICkpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVyZ2VkW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lcmdlZDtcbn1cbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhbi1kZXRhaWwtbWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zaWRlYmFyL3NwYW4tZGV0YWlsLW1lcmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sUUFBUSxHQUFHLENBQ2YsS0FBYSxFQUNiLEdBQVcsRUFDdUIsRUFBRSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFFcEQsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUV4RSxNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLFFBQTRCO0lBRTVCLE9BQU8sUUFBUSxLQUFLLFNBQVMsSUFBSSw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQVdELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQU1wQztJQUNDLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQ3JFLElBQUksQ0FBQztJQUVQLE1BQU0sYUFBYSxHQUFHLDBCQUEwQixDQUM5QyxhQUFhLEVBQ2IsUUFBUSxFQUNSLFVBQVUsQ0FDWDtRQUNDLENBQUMsQ0FBQyxhQUFhO1FBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNULE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUc1RCxDQUFDO0lBRUYsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixPQUFPO1lBQ0wsTUFBTSxFQUFFLE9B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Z1xuKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ga2V5IGluIHZhbHVlO1xuXG5jb25zdCBSRVNPVVJDRVNfV0lUSF9GRVRDSEVEX0RFVEFJTCA9IG5ldyBTZXQoWydydW4nLCAnc3RlcCcsICdzbGVlcCddKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc291cmNlTmVlZHNGZXRjaGVkRGV0YWlsKFxuICByZXNvdXJjZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlc291cmNlICE9PSB1bmRlZmluZWQgJiYgUkVTT1VSQ0VTX1dJVEhfRkVUQ0hFRF9ERVRBSUwuaGFzKHJlc291cmNlKTtcbn1cblxuZXhwb3J0IHR5cGUgU3BhbkRldGFpbFN0YXR1cyA9ICdpZGxlJyB8ICdsb2FkaW5nJyB8ICdyZWFkeScgfCAnZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwYW5EZXRhaWxWaWV3IHtcbiAgc3RhdHVzOiBTcGFuRGV0YWlsU3RhdHVzO1xuICBkaXNwbGF5RGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGRldGFpbDogdW5rbm93bjtcbiAgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU3BhbkRldGFpbFZpZXcoYXJnczoge1xuICByZXNvdXJjZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZXNvdXJjZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlubGluZURhdGE6IHVua25vd247XG4gIGZldGNoZWREZXRhaWw6IHVua25vd247XG4gIGZldGNoZWRFcnJvcjogRXJyb3IgfCBudWxsO1xufSk6IFNwYW5EZXRhaWxWaWV3IHtcbiAgY29uc3QgeyByZXNvdXJjZSwgcmVzb3VyY2VJZCwgaW5saW5lRGF0YSwgZmV0Y2hlZERldGFpbCwgZmV0Y2hlZEVycm9yIH0gPVxuICAgIGFyZ3M7XG5cbiAgY29uc3QgbWF0Y2hlZERldGFpbCA9IHNwYW5EZXRhaWxNYXRjaGVzU2VsZWN0aW9uKFxuICAgIGZldGNoZWREZXRhaWwsXG4gICAgcmVzb3VyY2UsXG4gICAgcmVzb3VyY2VJZFxuICApXG4gICAgPyBmZXRjaGVkRGV0YWlsXG4gICAgOiBudWxsO1xuICBjb25zdCBkaXNwbGF5RGF0YSA9IG1lcmdlU3BhbkRldGFpbChpbmxpbmVEYXRhLCBtYXRjaGVkRGV0YWlsKSBhcyBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHVua25vd25cbiAgPjtcblxuICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZUlkKSB7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiAnaWRsZScsIGRpc3BsYXlEYXRhLCBkZXRhaWw6IG51bGwsIGVycm9yOiB1bmRlZmluZWQgfTtcbiAgfVxuICBpZiAoZmV0Y2hlZEVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIGRpc3BsYXlEYXRhLFxuICAgICAgZGV0YWlsOiBtYXRjaGVkRGV0YWlsLFxuICAgICAgZXJyb3I6IGZldGNoZWRFcnJvcixcbiAgICB9O1xuICB9XG4gIGlmICghcmVzb3VyY2VOZWVkc0ZldGNoZWREZXRhaWwocmVzb3VyY2UpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogJ3JlYWR5JyxcbiAgICAgIGRpc3BsYXlEYXRhLFxuICAgICAgZGV0YWlsOiBtYXRjaGVkRGV0YWlsLFxuICAgICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG4gIGlmIChtYXRjaGVkRGV0YWlsICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogJ3JlYWR5JyxcbiAgICAgIGRpc3BsYXlEYXRhLFxuICAgICAgZGV0YWlsOiBtYXRjaGVkRGV0YWlsLFxuICAgICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG4gIHJldHVybiB7IHN0YXR1czogJ2xvYWRpbmcnLCBkaXNwbGF5RGF0YSwgZGV0YWlsOiBudWxsLCBlcnJvcjogdW5kZWZpbmVkIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIGZldGNoZWQgYGRldGFpbGAgYmVsb25ncyB0byB0aGUgY3VycmVudCBzZWxlY3Rpb24uXG4gKiBUaGUgZmV0Y2ggbGFncyBzZWxlY3Rpb24sIHNvIGl0IGNhbiBicmllZmx5IGhvbGQgYSBwcmV2aW91c2x5IHNlbGVjdGVkIHNwYW5cbiAqIChldmVuIGEgZGlmZmVyZW50IHJlc291cmNlIHR5cGUpOyByZWplY3QgaXQgYmVmb3JlIG1lcmdpbmcgb3IgaXRzIGZpZWxkc1xuICogdW5pb24gaW50byB0aGUgd3JvbmcgcGFuZWwuIFN0ZXBzL2hvb2tzL3dhaXRzIGNhcnJ5IHRoZWlyIHBhcmVudCBgcnVuSWRgLCBzb1xuICogYSBgcnVuYCBzZWxlY3Rpb24gZXhjbHVkZXMgb2JqZWN0cyBpZGVudGlmaWFibGUgYXMgYSBjaGlsZCByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYW5EZXRhaWxNYXRjaGVzU2VsZWN0aW9uKFxuICBkZXRhaWw6IHVua25vd24sXG4gIHJlc291cmNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHJlc291cmNlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gIGlmICghZGV0YWlsIHx8IHR5cGVvZiBkZXRhaWwgIT09ICdvYmplY3QnIHx8ICFyZXNvdXJjZSB8fCAhcmVzb3VyY2VJZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzd2l0Y2ggKHJlc291cmNlKSB7XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICByZXR1cm4gaGFzRmllbGQoZGV0YWlsLCAnc3RlcElkJykgJiYgZGV0YWlsLnN0ZXBJZCA9PT0gcmVzb3VyY2VJZDtcbiAgICBjYXNlICdob29rJzpcbiAgICAgIHJldHVybiBoYXNGaWVsZChkZXRhaWwsICdob29rSWQnKSAmJiBkZXRhaWwuaG9va0lkID09PSByZXNvdXJjZUlkO1xuICAgIGNhc2UgJ3NsZWVwJzpcbiAgICAgIHJldHVybiBoYXNGaWVsZChkZXRhaWwsICd3YWl0SWQnKSAmJiBkZXRhaWwud2FpdElkID09PSByZXNvdXJjZUlkO1xuICAgIGNhc2UgJ3J1bic6XG4gICAgICByZXR1cm4gKFxuICAgICAgICBoYXNGaWVsZChkZXRhaWwsICdydW5JZCcpICYmXG4gICAgICAgICEoJ3N0ZXBJZCcgaW4gZGV0YWlsKSAmJlxuICAgICAgICAhKCdob29rSWQnIGluIGRldGFpbCkgJiZcbiAgICAgICAgISgnd2FpdElkJyBpbiBkZXRhaWwpICYmXG4gICAgICAgIGRldGFpbC5ydW5JZCA9PT0gcmVzb3VyY2VJZFxuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogTWVyZ2VzIGZldGNoZWQgYGRldGFpbGAgb3ZlciB0aGUgc3BhbidzIG93biBkYXRhLiBUaGUgZGV0YWlsIHN1cHBsaWVzIHRoZVxuICogaGVhdnkgZmllbGRzIHRoZSB0cmFjZSBzdHJpcHMgKGlucHV0L291dHB1dC9lcnJvci9tZXRhZGF0YSwgc2xlZXAgcmVzdW1lQXQpO1xuICogdGhlIHNwYW4ncyBpZGVudGl0eSwgc3RhdHVzLCBhbmQgZXZlbnQtZGVyaXZlZCB0aW1lc3RhbXBzIHN0YXkgYXV0aG9yaXRhdGl2ZVxuICogc28gdGhleSBkb24ndCBmbGlja2VyIHRvIHRoZSBiYWNrZW5kIHJvdydzIG1pbGxpc2Vjb25kLWRpZmZlcmVudCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVNwYW5EZXRhaWwoc3BhbkRhdGE6IHVua25vd24sIGRldGFpbDogdW5rbm93bik6IHVua25vd24ge1xuICBpZiAoIWRldGFpbCB8fCB0eXBlb2YgZGV0YWlsICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBzcGFuRGF0YTtcbiAgfVxuICBpZiAoIXNwYW5EYXRhIHx8IHR5cGVvZiBzcGFuRGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZGV0YWlsO1xuICB9XG4gIC8vIFNraXAgYHVuZGVmaW5lZGAgc3BhbiBmaWVsZHMgc28gdGhleSBkb24ndCBjbG9iYmVyIGEgdmFsdWUgdGhlIGRldGFpbFxuICAvLyBsZWdpdGltYXRlbHkgcHJvdmlkZXMgKGUuZy4gYSBzdGVwJ3Mgb3B0aW9uYWwgc3RhcnRlZEF0KS5cbiAgY29uc3QgbWVyZ2VkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4uZGV0YWlsIH07XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgIHNwYW5EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICkpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVyZ2VkW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lcmdlZDtcbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import type { Event, Hook, Step, WorkflowRun } from '@workflow/world';
2
+ import type { SelectedSpanInfo, SpanSelectionInfo } from './entity-detail-panel';
3
+ import { type SpanDetailStatus } from './span-detail-merge';
4
+ export type DetailResource = WorkflowRun | Step | Hook | Event;
5
+ export type FetchSpanDetail = (selection: SpanSelectionInfo) => Promise<DetailResource>;
6
+ export interface SelectedSpanDetailResult {
7
+ status: SpanDetailStatus;
8
+ resource: SpanSelectionInfo['resource'] | undefined;
9
+ resourceId: string | undefined;
10
+ runId: string | undefined;
11
+ displayData: Record<string, unknown>;
12
+ detail: DetailResource | null;
13
+ error: Error | undefined;
14
+ }
15
+ export declare function useSelectedSpanDetail(selectedSpan: SelectedSpanInfo | null, fetchSpanDetail: FetchSpanDetail): SelectedSpanDetailResult;
16
+ //# sourceMappingURL=use-selected-span-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-selected-span-detail.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/use-selected-span-detail.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,CAC5B,SAAS,EAAE,iBAAiB,KACzB,OAAO,CAAC,cAAc,CAAC,CAAC;AA6C7B,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IACpD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,gBAAgB,GAAG,IAAI,EACrC,eAAe,EAAE,eAAe,GAC/B,wBAAwB,CAqE1B"}
@@ -0,0 +1,93 @@
1
+ 'use client';
2
+ import { useEffect, useMemo, useRef, useState } from 'react';
3
+ import { deriveSpanDetailView, resourceNeedsFetchedDetail, } from './span-detail-merge';
4
+ function deriveSpanSelection(selectedSpan) {
5
+ if (!selectedSpan)
6
+ return null;
7
+ const { resource, data } = selectedSpan;
8
+ if (resource === 'step' &&
9
+ data &&
10
+ typeof data === 'object' &&
11
+ 'stepId' in data) {
12
+ const step = data;
13
+ return { resource: 'step', resourceId: step.stepId, runId: step.runId };
14
+ }
15
+ if (resource === 'run' &&
16
+ data &&
17
+ typeof data === 'object' &&
18
+ 'runId' in data) {
19
+ return { resource: 'run', resourceId: data.runId };
20
+ }
21
+ if (resource === 'hook' &&
22
+ data &&
23
+ typeof data === 'object' &&
24
+ 'hookId' in data) {
25
+ return { resource: 'hook', resourceId: data.hookId };
26
+ }
27
+ if (resource === 'sleep') {
28
+ if (!selectedSpan.spanId)
29
+ return null;
30
+ const waitData = data;
31
+ return {
32
+ resource: 'sleep',
33
+ resourceId: selectedSpan.spanId,
34
+ runId: waitData?.runId,
35
+ };
36
+ }
37
+ return null;
38
+ }
39
+ export function useSelectedSpanDetail(selectedSpan, fetchSpanDetail) {
40
+ const selection = useMemo(() => deriveSpanSelection(selectedSpan), [selectedSpan]);
41
+ const resource = selection?.resource;
42
+ const resourceId = selection?.resourceId;
43
+ const runId = selection?.runId;
44
+ const selectionKey = resource && resourceId ? `${resource}:${resourceId}` : null;
45
+ const needsFetch = resourceNeedsFetchedDetail(resource);
46
+ const [fetched, setFetched] = useState({ detail: null, error: null, errorKey: null });
47
+ const tokenRef = useRef(0);
48
+ const selectionRef = useRef(selection);
49
+ selectionRef.current = selection;
50
+ useEffect(() => {
51
+ if (!selectionKey || !needsFetch) {
52
+ return;
53
+ }
54
+ const activeSelection = selectionRef.current;
55
+ if (!activeSelection) {
56
+ return;
57
+ }
58
+ const token = ++tokenRef.current;
59
+ fetchSpanDetail(activeSelection)
60
+ .then((detail) => {
61
+ if (tokenRef.current !== token)
62
+ return;
63
+ setFetched({ detail, error: null, errorKey: null });
64
+ })
65
+ .catch((err) => {
66
+ if (tokenRef.current !== token)
67
+ return;
68
+ setFetched({
69
+ detail: null,
70
+ error: err instanceof Error ? err : new Error(String(err)),
71
+ errorKey: selectionKey,
72
+ });
73
+ });
74
+ }, [selectionKey, runId, needsFetch, fetchSpanDetail]);
75
+ const scopedError = fetched.errorKey === selectionKey ? fetched.error : null;
76
+ const view = useMemo(() => deriveSpanDetailView({
77
+ resource,
78
+ resourceId,
79
+ inlineData: selectedSpan?.data,
80
+ fetchedDetail: fetched.detail,
81
+ fetchedError: scopedError,
82
+ }), [resource, resourceId, selectedSpan?.data, fetched.detail, scopedError]);
83
+ return {
84
+ status: view.status,
85
+ resource,
86
+ resourceId,
87
+ runId,
88
+ displayData: view.displayData,
89
+ detail: view.detail,
90
+ error: view.error,
91
+ };
92
+ }
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXNlbGVjdGVkLXNwYW4tZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2lkZWJhci91c2Utc2VsZWN0ZWQtc3Bhbi1kZXRhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBR2IsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUs3RCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLDBCQUEwQixHQUUzQixNQUFNLHFCQUFxQixDQUFDO0FBUTdCLFNBQVMsbUJBQW1CLENBQzFCLFlBQXFDO0lBRXJDLElBQUksQ0FBQyxZQUFZO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDL0IsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUM7SUFFeEMsSUFDRSxRQUFRLEtBQUssTUFBTTtRQUNuQixJQUFJO1FBQ0osT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN4QixRQUFRLElBQUksSUFBSSxFQUNoQixDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBWSxDQUFDO1FBQzFCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUNELElBQ0UsUUFBUSxLQUFLLEtBQUs7UUFDbEIsSUFBSTtRQUNKLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDeEIsT0FBTyxJQUFJLElBQUksRUFDZixDQUFDO1FBQ0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFHLElBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQ0UsUUFBUSxLQUFLLE1BQU07UUFDbkIsSUFBSTtRQUNKLE9BQU8sSUFBSSxLQUFLLFFBQVE7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RUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUV2RCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRTdFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLENBQ0gsb0JBQW9CLENBQUM7UUFDbkIsUUFBUTtRQUNSLFVBQVU7UUFDVixVQUFVLEVBQUUsWUFBWSxFQUFFLElBQUk7UUFDOUIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQzdCLFlBQVksRUFBRSxXQUFXO0tBQzFCLENBQUMsRUFDSixDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUN4RSxDQUFDO0lBRUYsT0FBTztRQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtRQUNuQixRQUFRO1FBQ1IsVUFBVTtRQUNWLEtBQUs7UUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7UUFDN0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUErQjtRQUM1QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7S0FDbEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB0eXBlIHsgRXZlbnQsIEhvb2ssIFN0ZXAsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtcbiAgU2VsZWN0ZWRTcGFuSW5mbyxcbiAgU3BhblNlbGVjdGlvbkluZm8sXG59IGZyb20gJy4vZW50aXR5LWRldGFpbC1wYW5lbCc7XG5pbXBvcnQge1xuICBkZXJpdmVTcGFuRGV0YWlsVmlldyxcbiAgcmVzb3VyY2VOZWVkc0ZldGNoZWREZXRhaWwsXG4gIHR5cGUgU3BhbkRldGFpbFN0YXR1cyxcbn0gZnJvbSAnLi9zcGFuLWRldGFpbC1tZXJnZSc7XG5cbmV4cG9ydCB0eXBlIERldGFpbFJlc291cmNlID0gV29ya2Zsb3dSdW4gfCBTdGVwIHwgSG9vayB8IEV2ZW50O1xuXG5leHBvcnQgdHlwZSBGZXRjaFNwYW5EZXRhaWwgPSAoXG4gIHNlbGVjdGlvbjogU3BhblNlbGVjdGlvbkluZm9cbikgPT4gUHJvbWlzZTxEZXRhaWxSZXNvdXJjZT47XG5cbmZ1bmN0aW9uIGRlcml2ZVNwYW5TZWxlY3Rpb24oXG4gIHNlbGVjdGVkU3BhbjogU2VsZWN0ZWRTcGFuSW5mbyB8IG51bGxcbik6IFNwYW5TZWxlY3Rpb25JbmZvIHwgbnVsbCB7XG4gIGlmICghc2VsZWN0ZWRTcGFuKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyByZXNvdXJjZSwgZGF0YSB9ID0gc2VsZWN0ZWRTcGFuO1xuXG4gIGlmIChcbiAgICByZXNvdXJjZSA9PT0gJ3N0ZXAnICYmXG4gICAgZGF0YSAmJlxuICAgIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICdzdGVwSWQnIGluIGRhdGFcbiAgKSB7XG4gICAgY29uc3Qgc3RlcCA9IGRhdGEgYXMgU3RlcDtcbiAgICByZXR1cm4geyByZXNvdXJjZTogJ3N0ZXAnLCByZXNvdXJjZUlkOiBzdGVwLnN0ZXBJZCwgcnVuSWQ6IHN0ZXAucnVuSWQgfTtcbiAgfVxuICBpZiAoXG4gICAgcmVzb3VyY2UgPT09ICdydW4nICYmXG4gICAgZGF0YSAmJlxuICAgIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICdydW5JZCcgaW4gZGF0YVxuICApIHtcbiAgICByZXR1cm4geyByZXNvdXJjZTogJ3J1bicsIHJlc291cmNlSWQ6IChkYXRhIGFzIFdvcmtmbG93UnVuKS5ydW5JZCB9O1xuICB9XG4gIGlmIChcbiAgICByZXNvdXJjZSA9PT0gJ2hvb2snICYmXG4gICAgZGF0YSAmJlxuICAgIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICdob29rSWQnIGluIGRhdGFcbiAgKSB7XG4gICAgcmV0dXJuIHsgcmVzb3VyY2U6ICdob29rJywgcmVzb3VyY2VJZDogKGRhdGEgYXMgSG9vaykuaG9va0lkIH07XG4gIH1cbiAgaWYgKHJlc291cmNlID09PSAnc2xlZXAnKSB7XG4gICAgaWYgKCFzZWxlY3RlZFNwYW4uc3BhbklkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB3YWl0RGF0YSA9IGRhdGEgYXMgeyBydW5JZD86IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICByZXNvdXJjZTogJ3NsZWVwJyxcbiAgICAgIHJlc291cmNlSWQ6IHNlbGVjdGVkU3Bhbi5zcGFuSWQsXG4gICAgICBydW5JZDogd2FpdERhdGE/LnJ1bklkLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0ZWRTcGFuRGV0YWlsUmVzdWx0IHtcbiAgc3RhdHVzOiBTcGFuRGV0YWlsU3RhdHVzO1xuICByZXNvdXJjZTogU3BhblNlbGVjdGlvbkluZm9bJ3Jlc291cmNlJ10gfCB1bmRlZmluZWQ7XG4gIHJlc291cmNlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcnVuSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGlzcGxheURhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBkZXRhaWw6IERldGFpbFJlc291cmNlIHwgbnVsbDtcbiAgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0ZWRTcGFuRGV0YWlsKFxuICBzZWxlY3RlZFNwYW46IFNlbGVjdGVkU3BhbkluZm8gfCBudWxsLFxuICBmZXRjaFNwYW5EZXRhaWw6IEZldGNoU3BhbkRldGFpbFxuKTogU2VsZWN0ZWRTcGFuRGV0YWlsUmVzdWx0IHtcbiAgY29uc3Qgc2VsZWN0aW9uID0gdXNlTWVtbyhcbiAgICAoKSA9PiBkZXJpdmVTcGFuU2VsZWN0aW9uKHNlbGVjdGVkU3BhbiksXG4gICAgW3NlbGVjdGVkU3Bhbl1cbiAgKTtcbiAgY29uc3QgcmVzb3VyY2UgPSBzZWxlY3Rpb24/LnJlc291cmNlO1xuICBjb25zdCByZXNvdXJjZUlkID0gc2VsZWN0aW9uPy5yZXNvdXJjZUlkO1xuICBjb25zdCBydW5JZCA9IHNlbGVjdGlvbj8ucnVuSWQ7XG4gIGNvbnN0IHNlbGVjdGlvbktleSA9XG4gICAgcmVzb3VyY2UgJiYgcmVzb3VyY2VJZCA/IGAke3Jlc291cmNlfToke3Jlc291cmNlSWR9YCA6IG51bGw7XG4gIGNvbnN0IG5lZWRzRmV0Y2ggPSByZXNvdXJjZU5lZWRzRmV0Y2hlZERldGFpbChyZXNvdXJjZSk7XG5cbiAgY29uc3QgW2ZldGNoZWQsIHNldEZldGNoZWRdID0gdXNlU3RhdGU8e1xuICAgIGRldGFpbDogRGV0YWlsUmVzb3VyY2UgfCBudWxsO1xuICAgIGVycm9yOiBFcnJvciB8IG51bGw7XG4gICAgZXJyb3JLZXk6IHN0cmluZyB8IG51bGw7XG4gIH0+KHsgZGV0YWlsOiBudWxsLCBlcnJvcjogbnVsbCwgZXJyb3JLZXk6IG51bGwgfSk7XG5cbiAgY29uc3QgdG9rZW5SZWYgPSB1c2VSZWYoMCk7XG4gIGNvbnN0IHNlbGVjdGlvblJlZiA9IHVzZVJlZihzZWxlY3Rpb24pO1xuICBzZWxlY3Rpb25SZWYuY3VycmVudCA9IHNlbGVjdGlvbjtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VsZWN0aW9uS2V5IHx8ICFuZWVkc0ZldGNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZVNlbGVjdGlvbiA9IHNlbGVjdGlvblJlZi5jdXJyZW50O1xuICAgIGlmICghYWN0aXZlU2VsZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRva2VuID0gKyt0b2tlblJlZi5jdXJyZW50O1xuICAgIGZldGNoU3BhbkRldGFpbChhY3RpdmVTZWxlY3Rpb24pXG4gICAgICAudGhlbigoZGV0YWlsKSA9PiB7XG4gICAgICAgIGlmICh0b2tlblJlZi5jdXJyZW50ICE9PSB0b2tlbikgcmV0dXJuO1xuICAgICAgICBzZXRGZXRjaGVkKHsgZGV0YWlsLCBlcnJvcjogbnVsbCwgZXJyb3JLZXk6IG51bGwgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgaWYgKHRva2VuUmVmLmN1cnJlbnQgIT09IHRva2VuKSByZXR1cm47XG4gICAgICAgIHNldEZldGNoZWQoe1xuICAgICAgICAgIGRldGFpbDogbnVsbCxcbiAgICAgICAgICBlcnJvcjogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpLFxuICAgICAgICAgIGVycm9yS2V5OiBzZWxlY3Rpb25LZXksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH0sIFtzZWxlY3Rpb25LZXksIHJ1bklkLCBuZWVkc0ZldGNoLCBmZXRjaFNwYW5EZXRhaWxdKTtcblxuICBjb25zdCBzY29wZWRFcnJvciA9IGZldGNoZWQuZXJyb3JLZXkgPT09IHNlbGVjdGlvbktleSA/IGZldGNoZWQuZXJyb3IgOiBudWxsO1xuXG4gIGNvbnN0IHZpZXcgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBkZXJpdmVTcGFuRGV0YWlsVmlldyh7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICByZXNvdXJjZUlkLFxuICAgICAgICBpbmxpbmVEYXRhOiBzZWxlY3RlZFNwYW4/LmRhdGEsXG4gICAgICAgIGZldGNoZWREZXRhaWw6IGZldGNoZWQuZGV0YWlsLFxuICAgICAgICBmZXRjaGVkRXJyb3I6IHNjb3BlZEVycm9yLFxuICAgICAgfSksXG4gICAgW3Jlc291cmNlLCByZXNvdXJjZUlkLCBzZWxlY3RlZFNwYW4/LmRhdGEsIGZldGNoZWQuZGV0YWlsLCBzY29wZWRFcnJvcl1cbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1czogdmlldy5zdGF0dXMsXG4gICAgcmVzb3VyY2UsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBydW5JZCxcbiAgICBkaXNwbGF5RGF0YTogdmlldy5kaXNwbGF5RGF0YSxcbiAgICBkZXRhaWw6IHZpZXcuZGV0YWlsIGFzIERldGFpbFJlc291cmNlIHwgbnVsbCxcbiAgICBlcnJvcjogdmlldy5lcnJvcixcbiAgfTtcbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cva } from 'class-variance-authority';
3
3
  import * as React from 'react';
4
- import { cn } from '../../lib/utils';
4
+ import { cn } from '../../lib/cn';
5
5
  const alertVariants = cva('relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4', {
6
6
  variants: {
7
7
  variant: {
@@ -20,4 +20,4 @@ AlertTitle.displayName = 'AlertTitle';
20
20
  const AlertDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('text-sm [&_p]:leading-relaxed', className), ...props })));
21
21
  AlertDescription.displayName = 'AlertDescription';
22
22
  export { Alert, AlertTitle, AlertDescription };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy91aS9hbGVydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FDdkIsbUlBQW1JLEVBQ25JO0lBQ0UsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFO1lBQ1AsT0FBTyxFQUFFLEVBQUU7WUFDWCxXQUFXLEVBQ1Qsc0VBQXNFO1NBQ3pFO0tBQ0Y7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsU0FBUztLQUNuQjtDQUNGLENBQ0YsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBRzVCLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUMzQyxjQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsSUFBSSxFQUFDLE9BQU8sRUFDWixTQUFTLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLEtBQ2hELEtBQUssR0FDVCxDQUNILENBQUMsQ0FBQztBQUNILEtBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO0FBRTVCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBR2pDLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xDLGFBQ0UsR0FBRyxFQUFFLEdBQUcsRUFDUixTQUFTLEVBQUUsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLFNBQVMsQ0FBQyxLQUNwRSxLQUFLLEdBQ1QsQ0FDSCxDQUFDLENBQUM7QUFDSCxVQUFVLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztBQUV0QyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxVQUFVLENBR3ZDLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xDLGNBQ0UsR0FBRyxFQUFFLEdBQUcsRUFDUixTQUFTLEVBQUUsRUFBRSxDQUFDLCtCQUErQixFQUFFLFNBQVMsQ0FBQyxLQUNyRCxLQUFLLEdBQ1QsQ0FDSCxDQUFDLENBQUM7QUFDSCxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tICdjbGFzcy12YXJpYW5jZS1hdXRob3JpdHknO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5cbmNvbnN0IGFsZXJ0VmFyaWFudHMgPSBjdmEoXG4gICdyZWxhdGl2ZSB3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgcC00IFsmPnN2Z34qXTpwbC03IFsmPnN2ZytkaXZdOnRyYW5zbGF0ZS15LVstM3B4XSBbJj5zdmddOmFic29sdXRlIFsmPnN2Z106bGVmdC00IFsmPnN2Z106dG9wLTQnLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgICdib3JkZXItcmVkLTQwMCB0ZXh0LXJlZC05MDAgZGFyazpib3JkZXItcmVkLTcwMCBbJj5zdmddOnRleHQtcmVkLTkwMCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gICAgfSxcbiAgfVxuKTtcblxuY29uc3QgQWxlcnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+ICYgVmFyaWFudFByb3BzPHR5cGVvZiBhbGVydFZhcmlhbnRzPlxuPigoeyBjbGFzc05hbWUsIHZhcmlhbnQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2XG4gICAgcmVmPXtyZWZ9XG4gICAgcm9sZT1cImFsZXJ0XCJcbiAgICBjbGFzc05hbWU9e2NuKGFsZXJ0VmFyaWFudHMoeyB2YXJpYW50IH0pLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQWxlcnQuZGlzcGxheU5hbWUgPSAnQWxlcnQnO1xuXG5jb25zdCBBbGVydFRpdGxlID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTFBhcmFncmFwaEVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxIZWFkaW5nRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGg1XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbignbWItMSBmb250LW1lZGl1bSBsZWFkaW5nLW5vbmUgdHJhY2tpbmctdGlnaHQnLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQWxlcnRUaXRsZS5kaXNwbGF5TmFtZSA9ICdBbGVydFRpdGxlJztcblxuY29uc3QgQWxlcnREZXNjcmlwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MUGFyYWdyYXBoRWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdlxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtc20gWyZfcF06bGVhZGluZy1yZWxheGVkJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkFsZXJ0RGVzY3JpcHRpb24uZGlzcGxheU5hbWUgPSAnQWxlcnREZXNjcmlwdGlvbic7XG5cbmV4cG9ydCB7IEFsZXJ0LCBBbGVydFRpdGxlLCBBbGVydERlc2NyaXB0aW9uIH07XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy91aS9hbGVydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsQyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQ3ZCLG1JQUFtSSxFQUNuSTtJQUNFLFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRTtZQUNQLE9BQU8sRUFBRSxFQUFFO1lBQ1gsV0FBVyxFQUNULHNFQUFzRTtTQUN6RTtLQUNGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsT0FBTyxFQUFFLFNBQVM7S0FDbkI7Q0FDRixDQUNGLENBQUM7QUFFRixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUc1QixDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FDM0MsY0FDRSxHQUFHLEVBQUUsR0FBRyxFQUNSLElBQUksRUFBQyxPQUFPLEVBQ1osU0FBUyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxLQUNoRCxLQUFLLEdBQ1QsQ0FDSCxDQUFDLENBQUM7QUFDSCxLQUFLLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUU1QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUdqQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUNsQyxhQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsU0FBUyxFQUFFLEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxTQUFTLENBQUMsS0FDcEUsS0FBSyxHQUNULENBQ0gsQ0FBQyxDQUFDO0FBQ0gsVUFBVSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFFdEMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUd2QyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUNsQyxjQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsU0FBUyxFQUFFLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxTQUFTLENBQUMsS0FDckQsS0FBSyxHQUNULENBQ0gsQ0FBQyxDQUFDO0FBQ0gsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLGtCQUFrQixDQUFDO0FBRWxELE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSAnY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi9saWIvY24nO1xuXG5jb25zdCBhbGVydFZhcmlhbnRzID0gY3ZhKFxuICAncmVsYXRpdmUgdy1mdWxsIHJvdW5kZWQtbGcgYm9yZGVyIHAtNCBbJj5zdmd+Kl06cGwtNyBbJj5zdmcrZGl2XTp0cmFuc2xhdGUteS1bLTNweF0gWyY+c3ZnXTphYnNvbHV0ZSBbJj5zdmddOmxlZnQtNCBbJj5zdmddOnRvcC00JyxcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICAnYm9yZGVyLXJlZC00MDAgdGV4dC1yZWQtOTAwIGRhcms6Ym9yZGVyLXJlZC03MDAgWyY+c3ZnXTp0ZXh0LXJlZC05MDAnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogJ2RlZmF1bHQnLFxuICAgIH0sXG4gIH1cbik7XG5cbmNvbnN0IEFsZXJ0ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTERpdkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIFZhcmlhbnRQcm9wczx0eXBlb2YgYWxlcnRWYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCB2YXJpYW50LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdlxuICAgIHJlZj17cmVmfVxuICAgIHJvbGU9XCJhbGVydFwiXG4gICAgY2xhc3NOYW1lPXtjbihhbGVydFZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkFsZXJ0LmRpc3BsYXlOYW1lID0gJ0FsZXJ0JztcblxuY29uc3QgQWxlcnRUaXRsZSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxQYXJhZ3JhcGhFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxoNVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ21iLTEgZm9udC1tZWRpdW0gbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkFsZXJ0VGl0bGUuZGlzcGxheU5hbWUgPSAnQWxlcnRUaXRsZSc7XG5cbmNvbnN0IEFsZXJ0RGVzY3JpcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MUGFyYWdyYXBoRWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LXNtIFsmX3BdOmxlYWRpbmctcmVsYXhlZCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5BbGVydERlc2NyaXB0aW9uLmRpc3BsYXlOYW1lID0gJ0FsZXJ0RGVzY3JpcHRpb24nO1xuXG5leHBvcnQgeyBBbGVydCwgQWxlcnRUaXRsZSwgQWxlcnREZXNjcmlwdGlvbiB9O1xuIl19
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cva } from 'class-variance-authority';
3
- import { cn } from '../../lib/utils';
3
+ import { cn } from '../../lib/cn';
4
4
  const buttonVariants = cva([
5
5
  'outline-none m-0 border-0 align-baseline no-underline group/trigger',
6
6
  'relative cursor-pointer select-none transform translate-z-0',
@@ -43,4 +43,4 @@ export function Button({ className, variant, size, type = 'button', ...props })
43
43
  return (_jsx("button", { type: type, className: cn(buttonVariants({ variant, size, className })), ...props }));
44
44
  }
45
45
  export { buttonVariants };
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdWkvYnV0dG9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUN4QjtJQUNFLHFFQUFxRTtJQUNyRSw2REFBNkQ7SUFDN0QscUdBQXFHO0lBQ3JHLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsMEZBQTBGO0lBQzFGLDZFQUE2RTtJQUM3RSxrRkFBa0Y7SUFDbEYsb0RBQW9EO0lBQ3BELG9FQUFvRTtJQUNwRSwwRUFBMEU7SUFDMUUsd0VBQXdFO0lBQ3hFLHVFQUF1RTtJQUN2RSw0RkFBNEY7SUFDNUYsa0JBQWtCO0lBQ2xCLDhEQUE4RDtJQUM5RCx5RUFBeUU7SUFDekUsdUZBQXVGO0NBQ3hGLEVBQ0Q7SUFDRSxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsRUFBRTtZQUNYLFNBQVMsRUFDUCx1SkFBdUo7WUFDekosS0FBSyxFQUNILDZHQUE2RztTQUNoSDtRQUNELElBQUksRUFBRTtZQUNKLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsRUFBRSxFQUFFLHNCQUFzQjtZQUMxQixFQUFFLEVBQUUsZ0RBQWdEO1lBQ3BELElBQUksRUFBRSxTQUFTO1NBQ2hCO0tBQ0Y7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsU0FBUztRQUNsQixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQ0YsQ0FBQztBQUtGLE1BQU0sVUFBVSxNQUFNLENBQUMsRUFDckIsU0FBUyxFQUNULE9BQU8sRUFDUCxJQUFJLEVBQ0osSUFBSSxHQUFHLFFBQVEsRUFDZixHQUFHLEtBQUssRUFDSTtJQUNaLE9BQU8sQ0FDTCxpQkFDRSxJQUFJLEVBQUUsSUFBSSxFQUNWLFNBQVMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQ3ZELEtBQUssR0FDVCxDQUNILENBQUM7QUFDSixDQUFDO0FBRUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gJ2NsYXNzLXZhcmlhbmNlLWF1dGhvcml0eSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5cbmNvbnN0IGJ1dHRvblZhcmlhbnRzID0gY3ZhKFxuICBbXG4gICAgJ291dGxpbmUtbm9uZSBtLTAgYm9yZGVyLTAgYWxpZ24tYmFzZWxpbmUgbm8tdW5kZXJsaW5lIGdyb3VwL3RyaWdnZXInLFxuICAgICdyZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZSB0cmFuc2Zvcm0gdHJhbnNsYXRlLXotMCcsXG4gICAgJ2lubGluZS1mbGV4IG1heC13LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC14LTEgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCBmb250LW1lZGl1bScsXG4gICAgJyF0ZXh0LWdyYXktMTAwJyxcbiAgICAnYmctZ3JheS0xMDAwJyxcbiAgICAndHJhbnNpdGlvbi1bYm9yZGVyLWNvbG9yLGJhY2tncm91bmQsY29sb3IsdHJhbnNmb3JtLGJveC1zaGFkb3ddIGR1cmF0aW9uLTE1MCBlYXNlLWluLW91dCcsXG4gICAgLy8gR2Vpc3QgaW52ZXJ0IGhvdmVyOiBsaXRlcmFsIGZhbGxiYWNrcyAobm8gdG9rZW4gZGVwLCBzbyBpdCByZXNvbHZlcyBpbiBhbnlcbiAgICAvLyBjb25zdW1pbmcgYXBwKSwgZGFya2VuZWQgdmlhIGFuY2VzdG9yIHRoZW1lIGNsYXNzIHdpdGhvdXQgYSByZWdpc3RlcmVkIHZhcmlhbnQuXG4gICAgJ2hvdmVyOmJnLVt2YXIoLS10aGVtZWQtaG92ZXItYmcsX2hzbCgwLF8wJSxfMjIlKSldJyxcbiAgICAnWy5kYXJrLXRoZW1lXyZdOmhvdmVyOmJnLVt2YXIoLS10aGVtZWQtaG92ZXItYmcsX2hzbCgwLF8wJSxfODAlKSldJyxcbiAgICAnW1tkYXRhLXRoZW1lPWRhcmtdXyZdOmhvdmVyOmJnLVt2YXIoLS10aGVtZWQtaG92ZXItYmcsX2hzbCgwLF8wJSxfODAlKSldJyxcbiAgICAvLyBHZWlzdCBmb2N1cyByaW5nIGFzIGFyYml0cmFyeSBwcm9wZXJ0aWVzIChubyBiYXJlIGBvdXRsaW5lYC9hbWJpZ3VvdXNcbiAgICAvLyBhcmJpdHJhcnktY29sb3IgdXRpbGl0aWVzLCB3aGljaCBkaWZmZXIgYmV0d2VlbiBUYWlsd2luZCB2MyBhbmQgdjQpLlxuICAgICdmb2N1cy12aXNpYmxlOltvdXRsaW5lOjJweF9zb2xpZF92YXIoLS1kcy1mb2N1cy1jb2xvcildIGZvY3VzLXZpc2libGU6W291dGxpbmUtb2Zmc2V0OjJweF0nLFxuICAgIC8vIGRpc2FibGVkIHN0eWxlc1xuICAgICdkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgYXJpYS1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgICdkaXNhYmxlZDpiZy1ncmF5LTEwMCBkaXNhYmxlZDohdGV4dC1ncmF5LTcwMCBkaXNhYmxlZDpob3ZlcjpiZy1ncmF5LTEwMCcsXG4gICAgJ2FyaWEtZGlzYWJsZWQ6YmctZ3JheS0xMDAgYXJpYS1kaXNhYmxlZDp0ZXh0LWdyYXktNzAwIGFyaWEtZGlzYWJsZWQ6aG92ZXI6YmctZ3JheS0xMDAnLFxuICBdLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIHNlY29uZGFyeTpcbiAgICAgICAgICAnYm9yZGVyIGJvcmRlci1ncmF5LWFscGhhLTQwMCBbLS10aGVtZWQtYmc6X3ZhcigtLWRzLWJhY2tncm91bmQtMTAwKV0gWy0tdGhlbWVkLWZnOl92YXIoLS1kcy1ncmF5LTEwMDApXSBbLS10aGVtZWQtaG92ZXItYmc6X3ZhcigtLWRzLWdyYXktYWxwaGEtMjAwKV0nLFxuICAgICAgICBnaG9zdDpcbiAgICAgICAgICAnWy0tdGhlbWVkLWJnOl90cmFuc3BhcmVudF0gWy0tdGhlbWVkLWZnOl92YXIoLS1kcy1ncmF5LTEwMDApXSBbLS10aGVtZWQtaG92ZXItYmc6X3ZhcigtLWRzLWdyYXktYWxwaGEtMTAwKV0nLFxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgZGVmYXVsdDogJ2gtMTAgcHgtNCB0ZXh0LVsxNHB4XScsXG4gICAgICAgIHNtOiAnaC04IHB4LTMgdGV4dC1bMTRweF0nLFxuICAgICAgICB4czogJ2gtNiBweC0xLjUgcHktMC41IHRleHQtYnV0dG9uLTEyIHJvdW5kZWQtWzRweF0nLFxuICAgICAgICBpY29uOiAnaC04IHctOCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiAnZGVmYXVsdCcsXG4gICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgfSxcbiAgfVxuKTtcblxuZXhwb3J0IHR5cGUgQnV0dG9uUHJvcHMgPSBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4gJlxuICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPjtcblxuZXhwb3J0IGZ1bmN0aW9uIEJ1dHRvbih7XG4gIGNsYXNzTmFtZSxcbiAgdmFyaWFudCxcbiAgc2l6ZSxcbiAgdHlwZSA9ICdidXR0b24nLFxuICAuLi5wcm9wc1xufTogQnV0dG9uUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPXt0eXBlfVxuICAgICAgY2xhc3NOYW1lPXtjbihidXR0b25WYXJpYW50cyh7IHZhcmlhbnQsIHNpemUsIGNsYXNzTmFtZSB9KSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IHsgYnV0dG9uVmFyaWFudHMgfTtcbiJdfQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdWkvYnV0dG9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWxDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FDeEI7SUFDRSxxRUFBcUU7SUFDckUsNkRBQTZEO0lBQzdELHFHQUFxRztJQUNyRyxnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLDBGQUEwRjtJQUMxRiw2RUFBNkU7SUFDN0Usa0ZBQWtGO0lBQ2xGLG9EQUFvRDtJQUNwRCxvRUFBb0U7SUFDcEUsMEVBQTBFO0lBQzFFLHdFQUF3RTtJQUN4RSx1RUFBdUU7SUFDdkUsNEZBQTRGO0lBQzVGLGtCQUFrQjtJQUNsQiw4REFBOEQ7SUFDOUQseUVBQXlFO0lBQ3pFLHVGQUF1RjtDQUN4RixFQUNEO0lBQ0UsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFO1lBQ1AsT0FBTyxFQUFFLEVBQUU7WUFDWCxTQUFTLEVBQ1AsdUpBQXVKO1lBQ3pKLEtBQUssRUFDSCw2R0FBNkc7U0FDaEg7UUFDRCxJQUFJLEVBQUU7WUFDSixPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLEVBQUUsRUFBRSxzQkFBc0I7WUFDMUIsRUFBRSxFQUFFLGdEQUFnRDtZQUNwRCxJQUFJLEVBQUUsU0FBUztTQUNoQjtLQUNGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsT0FBTyxFQUFFLFNBQVM7UUFDbEIsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUNGLENBQUM7QUFLRixNQUFNLFVBQVUsTUFBTSxDQUFDLEVBQ3JCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsSUFBSSxFQUNKLElBQUksR0FBRyxRQUFRLEVBQ2YsR0FBRyxLQUFLLEVBQ0k7SUFDWixPQUFPLENBQ0wsaUJBQ0UsSUFBSSxFQUFFLElBQUksRUFDVixTQUFTLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUN2RCxLQUFLLEdBQ1QsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tICdjbGFzcy12YXJpYW5jZS1hdXRob3JpdHknO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi9saWIvY24nO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgW1xuICAgICdvdXRsaW5lLW5vbmUgbS0wIGJvcmRlci0wIGFsaWduLWJhc2VsaW5lIG5vLXVuZGVybGluZSBncm91cC90cmlnZ2VyJyxcbiAgICAncmVsYXRpdmUgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmUgdHJhbnNmb3JtIHRyYW5zbGF0ZS16LTAnLFxuICAgICdpbmxpbmUtZmxleCBtYXgtdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAteC0xIHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQtbWQgZm9udC1tZWRpdW0nLFxuICAgICchdGV4dC1ncmF5LTEwMCcsXG4gICAgJ2JnLWdyYXktMTAwMCcsXG4gICAgJ3RyYW5zaXRpb24tW2JvcmRlci1jb2xvcixiYWNrZ3JvdW5kLGNvbG9yLHRyYW5zZm9ybSxib3gtc2hhZG93XSBkdXJhdGlvbi0xNTAgZWFzZS1pbi1vdXQnLFxuICAgIC8vIEdlaXN0IGludmVydCBob3ZlcjogbGl0ZXJhbCBmYWxsYmFja3MgKG5vIHRva2VuIGRlcCwgc28gaXQgcmVzb2x2ZXMgaW4gYW55XG4gICAgLy8gY29uc3VtaW5nIGFwcCksIGRhcmtlbmVkIHZpYSBhbmNlc3RvciB0aGVtZSBjbGFzcyB3aXRob3V0IGEgcmVnaXN0ZXJlZCB2YXJpYW50LlxuICAgICdob3ZlcjpiZy1bdmFyKC0tdGhlbWVkLWhvdmVyLWJnLF9oc2woMCxfMCUsXzIyJSkpXScsXG4gICAgJ1suZGFyay10aGVtZV8mXTpob3ZlcjpiZy1bdmFyKC0tdGhlbWVkLWhvdmVyLWJnLF9oc2woMCxfMCUsXzgwJSkpXScsXG4gICAgJ1tbZGF0YS10aGVtZT1kYXJrXV8mXTpob3ZlcjpiZy1bdmFyKC0tdGhlbWVkLWhvdmVyLWJnLF9oc2woMCxfMCUsXzgwJSkpXScsXG4gICAgLy8gR2Vpc3QgZm9jdXMgcmluZyBhcyBhcmJpdHJhcnkgcHJvcGVydGllcyAobm8gYmFyZSBgb3V0bGluZWAvYW1iaWd1b3VzXG4gICAgLy8gYXJiaXRyYXJ5LWNvbG9yIHV0aWxpdGllcywgd2hpY2ggZGlmZmVyIGJldHdlZW4gVGFpbHdpbmQgdjMgYW5kIHY0KS5cbiAgICAnZm9jdXMtdmlzaWJsZTpbb3V0bGluZToycHhfc29saWRfdmFyKC0tZHMtZm9jdXMtY29sb3IpXSBmb2N1cy12aXNpYmxlOltvdXRsaW5lLW9mZnNldDoycHhdJyxcbiAgICAvLyBkaXNhYmxlZCBzdHlsZXNcbiAgICAnZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGFyaWEtZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICAnZGlzYWJsZWQ6YmctZ3JheS0xMDAgZGlzYWJsZWQ6IXRleHQtZ3JheS03MDAgZGlzYWJsZWQ6aG92ZXI6YmctZ3JheS0xMDAnLFxuICAgICdhcmlhLWRpc2FibGVkOmJnLWdyYXktMTAwIGFyaWEtZGlzYWJsZWQ6dGV4dC1ncmF5LTcwMCBhcmlhLWRpc2FibGVkOmhvdmVyOmJnLWdyYXktMTAwJyxcbiAgXSxcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICBzZWNvbmRhcnk6XG4gICAgICAgICAgJ2JvcmRlciBib3JkZXItZ3JheS1hbHBoYS00MDAgWy0tdGhlbWVkLWJnOl92YXIoLS1kcy1iYWNrZ3JvdW5kLTEwMCldIFstLXRoZW1lZC1mZzpfdmFyKC0tZHMtZ3JheS0xMDAwKV0gWy0tdGhlbWVkLWhvdmVyLWJnOl92YXIoLS1kcy1ncmF5LWFscGhhLTIwMCldJyxcbiAgICAgICAgZ2hvc3Q6XG4gICAgICAgICAgJ1stLXRoZW1lZC1iZzpfdHJhbnNwYXJlbnRdIFstLXRoZW1lZC1mZzpfdmFyKC0tZHMtZ3JheS0xMDAwKV0gWy0tdGhlbWVkLWhvdmVyLWJnOl92YXIoLS1kcy1ncmF5LWFscGhhLTEwMCldJyxcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6ICdoLTEwIHB4LTQgdGV4dC1bMTRweF0nLFxuICAgICAgICBzbTogJ2gtOCBweC0zIHRleHQtWzE0cHhdJyxcbiAgICAgICAgeHM6ICdoLTYgcHgtMS41IHB5LTAuNSB0ZXh0LWJ1dHRvbi0xMiByb3VuZGVkLVs0cHhdJyxcbiAgICAgICAgaWNvbjogJ2gtOCB3LTgnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogJ2RlZmF1bHQnLFxuICAgICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIH0sXG4gIH1cbik7XG5cbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+ICZcbiAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz47XG5cbmV4cG9ydCBmdW5jdGlvbiBCdXR0b24oe1xuICBjbGFzc05hbWUsXG4gIHZhcmlhbnQsXG4gIHNpemUsXG4gIHR5cGUgPSAnYnV0dG9uJyxcbiAgLi4ucHJvcHNcbn06IEJ1dHRvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIGNsYXNzTmFtZT17Y24oYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplLCBjbGFzc05hbWUgfSkpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCB7IGJ1dHRvblZhcmlhbnRzIH07XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
- import { cn } from '../../lib/utils';
4
+ import { cn } from '../../lib/cn';
5
5
  const Card = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('rounded-lg border shadow-sm', className), ...props })));
6
6
  Card.displayName = 'Card';
7
7
  const CardHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('flex flex-col space-y-1.5 p-6', className), ...props })));
@@ -15,4 +15,4 @@ CardContent.displayName = 'CardContent';
15
15
  const CardFooter = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('flex items-center p-6 pt-0', className), ...props })));
16
16
  CardFooter.displayName = 'CardFooter';
17
17
  export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent, };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3VpL2NhcmQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FHM0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FDbEMsY0FDRSxHQUFHLEVBQUUsR0FBRyxFQUNSLFNBQVMsRUFBRSxFQUFFLENBQUMsNkJBQTZCLEVBQUUsU0FBUyxDQUFDLEtBQ25ELEtBQUssR0FDVCxDQUNILENBQUMsQ0FBQztBQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBRTFCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBR2pDLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xDLGNBQ0UsR0FBRyxFQUFFLEdBQUcsRUFDUixTQUFTLEVBQUUsRUFBRSxDQUFDLCtCQUErQixFQUFFLFNBQVMsQ0FBQyxLQUNyRCxLQUFLLEdBQ1QsQ0FDSCxDQUFDLENBQUM7QUFDSCxVQUFVLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztBQUV0QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUdoQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUNsQyxjQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsU0FBUyxFQUFFLEVBQUUsQ0FDWCxvREFBb0QsRUFDcEQsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQyxDQUFDO0FBQ0gsU0FBUyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7QUFFcEMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FHdEMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FDbEMsY0FDRSxHQUFHLEVBQUUsR0FBRyxFQUNSLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUNuQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsS0FDbEMsS0FBSyxHQUNULENBQ0gsQ0FBQyxDQUFDO0FBQ0gsZUFBZSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztBQUVoRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUdsQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUNsQyxjQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEtBQU0sS0FBSyxHQUFJLENBQ25FLENBQUMsQ0FBQztBQUNILFdBQVcsQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO0FBRXhDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBR2pDLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xDLGNBQ0UsR0FBRyxFQUFFLEdBQUcsRUFDUixTQUFTLEVBQUUsRUFBRSxDQUFDLDRCQUE0QixFQUFFLFNBQVMsQ0FBQyxLQUNsRCxLQUFLLEdBQ1QsQ0FDSCxDQUFDLENBQUM7QUFDSCxVQUFVLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztBQUV0QyxPQUFPLEVBQ0wsSUFBSSxFQUNKLFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULGVBQWUsRUFDZixXQUFXLEdBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5cbmNvbnN0IENhcmQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCdyb3VuZGVkLWxnIGJvcmRlciBzaGFkb3ctc20nLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ2FyZC5kaXNwbGF5TmFtZSA9ICdDYXJkJztcblxuY29uc3QgQ2FyZEhlYWRlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdlxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC1jb2wgc3BhY2UteS0xLjUgcC02JywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNhcmRIZWFkZXIuZGlzcGxheU5hbWUgPSAnQ2FyZEhlYWRlcic7XG5cbmNvbnN0IENhcmRUaXRsZSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdlxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAndGV4dC0yeGwgZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgdHJhY2tpbmctdGlnaHQnLFxuICAgICAgY2xhc3NOYW1lXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNhcmRUaXRsZS5kaXNwbGF5TmFtZSA9ICdDYXJkVGl0bGUnO1xuXG5jb25zdCBDYXJkRGVzY3JpcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LXNtJywgY2xhc3NOYW1lKX1cbiAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktOTAwKScgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNhcmREZXNjcmlwdGlvbi5kaXNwbGF5TmFtZSA9ICdDYXJkRGVzY3JpcHRpb24nO1xuXG5jb25zdCBDYXJkQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbigncC02IHB0LTAnLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbkNhcmRDb250ZW50LmRpc3BsYXlOYW1lID0gJ0NhcmRDb250ZW50JztcblxuY29uc3QgQ2FyZEZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPGRpdlxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggaXRlbXMtY2VudGVyIHAtNiBwdC0wJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNhcmRGb290ZXIuZGlzcGxheU5hbWUgPSAnQ2FyZEZvb3Rlcic7XG5cbmV4cG9ydCB7XG4gIENhcmQsXG4gIENhcmRIZWFkZXIsXG4gIENhcmRGb290ZXIsXG4gIENhcmRUaXRsZSxcbiAgQ2FyZERlc2NyaXB0aW9uLFxuICBDYXJkQ29udGVudCxcbn07XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3VpL2NhcmQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWxDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBRzNCLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xDLGNBQ0UsR0FBRyxFQUFFLEdBQUcsRUFDUixTQUFTLEVBQUUsRUFBRSxDQUFDLDZCQUE2QixFQUFFLFNBQVMsQ0FBQyxLQUNuRCxLQUFLLEdBQ1QsQ0FDSCxDQUFDLENBQUM7QUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztBQUUxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUdqQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUNsQyxjQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsU0FBUyxFQUFFLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxTQUFTLENBQUMsS0FDckQsS0FBSyxHQUNULENBQ0gsQ0FBQyxDQUFDO0FBQ0gsVUFBVSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFFdEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FHaEMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FDbEMsY0FDRSxHQUFHLEVBQUUsR0FBRyxFQUNSLFNBQVMsRUFBRSxFQUFFLENBQ1gsb0RBQW9ELEVBQ3BELFNBQVMsQ0FDVixLQUNHLEtBQUssR0FDVCxDQUNILENBQUMsQ0FBQztBQUNILFNBQVMsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0FBRXBDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBR3RDLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xDLGNBQ0UsR0FBRyxFQUFFLEdBQUcsRUFDUixTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFDbkMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEtBQ2xDLEtBQUssR0FDVCxDQUNILENBQUMsQ0FBQztBQUNILGVBQWUsQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUM7QUFFaEQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FHbEMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FDbEMsY0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxLQUFNLEtBQUssR0FBSSxDQUNuRSxDQUFDLENBQUM7QUFDSCxXQUFXLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQztBQUV4QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUdqQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUNsQyxjQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsU0FBUyxFQUFFLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxTQUFTLENBQUMsS0FDbEQsS0FBSyxHQUNULENBQ0gsQ0FBQyxDQUFDO0FBQ0gsVUFBVSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFFdEMsT0FBTyxFQUNMLElBQUksRUFDSixVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxHQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi9saWIvY24nO1xuXG5jb25zdCBDYXJkID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTERpdkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigncm91bmRlZC1sZyBib3JkZXIgc2hhZG93LXNtJywgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNhcmQuZGlzcGxheU5hbWUgPSAnQ2FyZCc7XG5cbmNvbnN0IENhcmRIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sIHNwYWNlLXktMS41IHAtNicsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5DYXJkSGVhZGVyLmRpc3BsYXlOYW1lID0gJ0NhcmRIZWFkZXInO1xuXG5jb25zdCBDYXJkVGl0bGUgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ3RleHQtMnhsIGZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0JyxcbiAgICAgIGNsYXNzTmFtZVxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5DYXJkVGl0bGUuZGlzcGxheU5hbWUgPSAnQ2FyZFRpdGxlJztcblxuY29uc3QgQ2FyZERlc2NyaXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgSFRNTERpdkVsZW1lbnQsXG4gIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8ZGl2XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbigndGV4dC1zbScsIGNsYXNzTmFtZSl9XG4gICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTkwMCknIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5DYXJkRGVzY3JpcHRpb24uZGlzcGxheU5hbWUgPSAnQ2FyZERlc2NyaXB0aW9uJztcblxuY29uc3QgQ2FyZENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ3AtNiBwdC0wJywgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5DYXJkQ29udGVudC5kaXNwbGF5TmFtZSA9ICdDYXJkQ29udGVudCc7XG5cbmNvbnN0IENhcmRGb290ZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxkaXZcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGl0ZW1zLWNlbnRlciBwLTYgcHQtMCcsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5DYXJkRm9vdGVyLmRpc3BsYXlOYW1lID0gJ0NhcmRGb290ZXInO1xuXG5leHBvcnQge1xuICBDYXJkLFxuICBDYXJkSGVhZGVyLFxuICBDYXJkRm9vdGVyLFxuICBDYXJkVGl0bGUsXG4gIENhcmREZXNjcmlwdGlvbixcbiAgQ2FyZENvbnRlbnQsXG59O1xuIl19
@@ -5,7 +5,7 @@ import { createContext, useContext, useEffect, useId, useMemo, useRef, useState,
5
5
  import { createPortal } from 'react-dom';
6
6
  import useMeasure from 'react-use-measure';
7
7
  import { useReducedMotion } from '../../hooks/use-reduced-motion';
8
- import { cn } from '../../lib/utils';
8
+ import { cn } from '../../lib/cn';
9
9
  const INACTIVE_TIMEOUT_MS = 250;
10
10
  const ENTER_DELAY_MS = 0;
11
11
  const OPEN_DELAY_MS = 150;
@@ -468,4 +468,4 @@ export function ContextCardTrigger({ content, children, side = 'right', align =
468
468
  }, children: content }) }, id), portalRef.current)
469
469
  : null] }));
470
470
  }
471
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1jYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdWkvY29udGV4dC1jYXJkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBRWIsT0FBTyxFQUFFLElBQUksSUFBSSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBQ1YsU0FBUyxFQUNULEtBQUssRUFDTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN6QixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUM7QUFDMUIsTUFBTSwwQkFBMEIsR0FBRyxHQUFHLENBQUM7QUFDdkMsTUFBTSxrQ0FBa0MsR0FBRyxHQUFHLENBQUM7QUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFrQ2hDLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUF5QjtJQUMvRCxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ25DLFNBQVMsRUFBRSxJQUFtRDtJQUM5RCxRQUFRLEVBQUUsSUFBa0Q7SUFDNUQsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFD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Qy9DLENBQUMsQ0FBQyxZQUFZLENBQ1YsY0FDRSxTQUFTLEVBQUUsRUFBRSxDQUNYLG1OQUFtTixFQUNuTixjQUFjLElBQUksa0JBQWtCLENBQ3JDLEVBRUQsR0FBRyxFQUFFLFVBQVUsRUFDZixLQUFLLEVBQUU7d0JBQ0wsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDcEMsYUFBYSxFQUNYLFdBQVcsSUFBSSxPQUFPLElBQUksQ0FBQyx1QkFBdUI7NEJBQ2hELENBQUMsQ0FBQyxLQUFLOzRCQUNQLENBQUMsQ0FBQyxNQUFNO3FCQUNiLFlBRUQsY0FDRSxTQUFTLEVBQUUsRUFBRSxDQUNYLHNLQUFzSyxFQUN0SyxjQUFjOzRCQUNaLENBQUMsQ0FBQyxrQkFBa0I7NEJBQ3BCLENBQUMsQ0FBQywrS0FBK0ssQ0FDcEwsRUFDRCxHQUFHLEVBQUUsaUJBQWlCLEVBQ3RCLEtBQUssRUFBRTs0QkFDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQzt5QkFDekIsWUFFQSxPQUFPLEdBQ0osSUF2QkQsRUFBRSxDQXdCSCxFQUNOLFNBQVMsQ0FBQyxPQUFPLENBQ2xCO2dCQUNILENBQUMsQ0FBQyxJQUFJLElBQ0gsQ0FDUixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgUm9vdCBhcyBTbG90Um9vdCwgU2xvdHRhYmxlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNsb3QnO1xuaW1wb3J0IHR5cGUgeyBKU1gsIE11dGFibGVSZWZPYmplY3QsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VJZCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB1c2VNZWFzdXJlIGZyb20gJ3JlYWN0LXVzZS1tZWFzdXJlJztcbmltcG9ydCB7IHVzZVJlZHVjZWRNb3Rpb24gfSBmcm9tICcuLi8uLi9ob29rcy91c2UtcmVkdWNlZC1tb3Rpb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi9saWIvdXRpbHMnO1xuXG5jb25zdCBJTkFDVElWRV9USU1FT1VUX01TID0gMjUwO1xuY29uc3QgRU5URVJfREVMQVlfTVMgPSAwO1xuY29uc3QgT1BFTl9ERUxBWV9NUyA9IDE1MDtcbmNvbnN0IE1BWF9UUkFOU0lUSU9OX0RJU1RBTkNFX1BYID0gMTUwO1xuY29uc3QgTUFYX09WRVJMQVBfRk9SX1RSQU5TSVRJT05fUEVSQ0VOVCA9IDEwMDtcbmNvbnN0IFBFUlNJU1RfVElNRU9VVF9NUyA9IDEwMDA7XG5cbmludGVyZmFjZSBQb2ludCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ29udGV4dENhcmREYXRhIHtcbiAgaWQ6IHN0cmluZztcbiAgb3JpZ2luOiBQb2ludDtcbiAgY29udGVudFNpemU6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfTtcbiAgc2lkZTogU2lkZTtcbiAgYXJyb3dPZmZzZXQ6IFBvaW50O1xufVxuXG50eXBlIE51bGxTdHJpbmcgPSBzdHJpbmcgfCBudWxsO1xuXG5pbnRlcmZhY2UgQ29udGV4dENhcmRDb250ZXh0VHlwZSB7XG4gIHJvb3RPcmlnaW46IFBvaW50O1xuICByb290Qm91bmRzOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH07XG4gIHBvcnRhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gIGFjdGl2ZUlkOiBSZWZPYmplY3Q8TnVsbFN0cmluZyB8IG51bGw+O1xuICBzZXRBY3RpdmVJZDogKGlkOiBOdWxsU3RyaW5nKSA9PiB2b2lkO1xuICBob3ZlcmVkSWQ6IE51bGxTdHJpbmc7XG4gIHNldEhvdmVyZWRJZDogKGlkOiBOdWxsU3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVBY3RpdmVDb250ZXh0Q2FyZDogKHVwZGF0ZTogQ29udGV4dENhcmREYXRhIHwgbnVsbCkgPT4gdm9pZDtcbiAgc2tpcFRyYW5zaXRpb246IGJvb2xlYW47XG4gIHJvb3RWaXNpYmxlOiBib29sZWFuO1xuICBkaXN0YW5jZUZyb21MYXN0OiBudW1iZXI7XG4gIGxhc3RPcmlnaW46IFBvaW50IHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgYSByZWFsIHtAbGluayBDb250ZXh0Q2FyZFByb3ZpZGVyfSBpcyBtb3VudGVkIGFib3ZlIHRoaXMgY29uc3VtZXIuICovXG4gIGlzUHJvdmlkZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IENvbnRleHRDYXJkQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8Q29udGV4dENhcmRDb250ZXh0VHlwZT4oe1xuICByb290T3JpZ2luOiB7IHg6IDAsIHk6IDAgfSxcbiAgcm9vdEJvdW5kczogeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0sXG4gIHBvcnRhbFJlZjogbnVsbCBhcyB1bmtub3duIGFzIFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBhY3RpdmVJZDogbnVsbCBhcyB1bmtub3duIGFzIE11dGFibGVSZWZPYmplY3Q8c3RyaW5nIHwgbnVsbD4sXG4gIHNldEFjdGl2ZUlkOiAoKSA9PiB2b2lkIDAsXG4gIGhvdmVyZWRJZDogbnVsbCxcbiAgc2V0SG92ZXJlZElkOiAoKSA9PiB2b2lkIDAsXG4gIHVwZGF0ZUFjdGl2ZUNvbnRleHRDYXJkOiAoKSA9PiB2b2lkIDAsXG4gIHNraXBUcmFuc2l0aW9uOiBmYWxzZSxcbiAgcm9vdFZpc2libGU6IGZhbHNlLFxuICBkaXN0YW5jZUZyb21MYXN0OiAwLFxuICBsYXN0T3JpZ2luOiBudWxsLFxuICBpc1Byb3ZpZGVkOiBmYWxzZSxcbn0pO1xuQ29udGV4dENhcmRDb250ZXh0LmRpc3BsYXlOYW1lID0gJ0NvbnRleHRDYXJkQ29udGV4dCc7XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBjdXJyZW50IHN1YnRyZWUgaXMgd3JhcHBlZCBpbiBhIHtAbGluayBDb250ZXh0Q2FyZFByb3ZpZGVyfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUhhc0NvbnRleHRDYXJkUHJvdmlkZXIoKTogYm9vbGVhbiB7XG4gIHJldHVybiB1c2VDb250ZXh0KENvbnRleHRDYXJkQ29udGV4dCkuaXNQcm92aWRlZDtcbn1cblxuZnVuY3Rpb24gdXNlUHJldmlvdXM8VD4odmFsdWU6IFQpOiBUIHwgbnVsbCB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxUIHwgbnVsbD4obnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZWYuY3VycmVudDtcbn1cblxuZnVuY3Rpb24gaXNSZWZPYmplY3QoXG4gIHZhbHVlOiBIVE1MRWxlbWVudCB8IFJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogdmFsdWUgaXMgUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4ge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiAnY3VycmVudCcgaW4gdmFsdWU7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgc2hhcmVkIHN0YXRlIGFuZCBhIHBvcnRhbCBjb250YWluZXIgZm9yIHtAbGluayBDb250ZXh0Q2FyZFRyaWdnZXJ9XG4gKiBjb21wb25lbnRzLiBNdXN0IHdyYXAgYW55IHRyZWUgY29udGFpbmluZyB0cmlnZ2VyczsgbWFuYWdlcyBwb3NpdGlvbmluZyxcbiAqIHZpc2liaWxpdHkgdHJhbnNpdGlvbnMsIGFuZCB0aGUgYW5pbWF0ZWQgYXJyb3cgdGlwIGFjcm9zcyBhbGwgY2FyZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb250ZXh0Q2FyZFByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIHBvcnRhbFRhcmdldCxcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgLyoqIEN1c3RvbSBjb250YWluZXIgZm9yIHRoZSBwb3J0YWwuIEFjY2VwdHMgZWl0aGVyIGFuIGVsZW1lbnQgb3IgYSByZWYuICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50IHwgUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4gfCBudWxsO1xufSk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IFtpc01vdW50ZWQsIHNldElzTW91bnRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRJc01vdW50ZWQodHJ1ZSksIFtdKTtcbiAgY29uc3QgcmVzb2x2ZWRQb3J0YWxUYXJnZXQgPSBpc1JlZk9iamVjdChwb3J0YWxUYXJnZXQpXG4gICAgPyBwb3J0YWxUYXJnZXQuY3VycmVudFxuICAgIDogcG9ydGFsVGFyZ2V0O1xuICBjb25zdCBbcmVmLCBib3VuZHNdID0gdXNlTWVhc3VyZSgpO1xuICBjb25zdCBwb3J0YWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2FjdGl2ZUNvbnRleHRDYXJkLCBzZXRBY3RpdmVDb250ZXh0Q2FyZF0gPVxuICAgIHVzZVN0YXRlPENvbnRleHRDYXJkRGF0YSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtob3ZlcmVkSWQsIHNldEhvdmVyZWRJZF0gPSB1c2VTdGF0ZTxOdWxsU3RyaW5nPihudWxsKTtcbiAgY29uc3QgYWN0aXZlSWQgPSB1c2VSZWY8TnVsbFN0cmluZz4obnVsbCk7XG5cbiAgZnVuY3Rpb24gc2V0QWN0aXZlSWQoaWQ6IE51bGxTdHJpbmcpOiB2b2lkIHtcbiAgICBhY3RpdmVJZC5jdXJyZW50ID0gaWQ7XG4gICAgc2V0VmlzaWJsZShpZCAhPT0gbnVsbCk7XG4gIH1cbiAgY29uc3QgdXBkYXRlQWN0aXZlQ29udGV4dENhcmQgPSAodXBkYXRlOiBDb250ZXh0Q2FyZERhdGEgfCBudWxsKTogdm9pZCA9PiB7XG4gICAgaWYgKHVwZGF0ZT8uaWQgIT09IGFjdGl2ZUlkLmN1cnJlbnQgJiYgdXBkYXRlICE9PSBudWxsKSByZXR1cm47XG4gICAgc2V0QWN0aXZlQ29udGV4dENhcmQodXBkYXRlKTtcbiAgfTtcblxuICBjb25zdCBCT1JERVJfV0lEVEggPSAxO1xuXG4gIGNvbnN0IGFjdGl2ZUJvdW5kcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghYWN0aXZlQ29udGV4dENhcmQpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICBzaWRlOiAndG9wJyBhcyBTaWRlLFxuICAgICAgICBhcnJvd09mZnNldDogeyB4OiAwLCB5OiAwIH0sXG4gICAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogYWN0aXZlQ29udGV4dENhcmQuY29udGVudFNpemUud2lkdGggKyBCT1JERVJfV0lEVEggKiAyLFxuICAgICAgaGVpZ2h0OiBhY3RpdmVDb250ZXh0Q2FyZC5jb250ZW50U2l6ZS5oZWlnaHQgKyBCT1JERVJfV0lEVEggKiAyLFxuICAgICAgeDogYWN0aXZlQ29udGV4dENhcmQub3JpZ2luLngsXG4gICAgICB5OiBhY3RpdmVDb250ZXh0Q2FyZC5vcmlnaW4ueSxcbiAgICAgIHNpZGU6IGFjdGl2ZUNvbnRleHRDYXJkLnNpZGUsXG4gICAgICBhcnJvd09mZnNldDogYWN0aXZlQ29udGV4dENhcmQuYXJyb3dPZmZzZXQsXG4gICAgfTtcbiAgfSwgW2FjdGl2ZUNvbnRleHRDYXJkXSk7XG5cbiAgY29uc3QgbGFzdEJvdW5kcyA9IHVzZVByZXZpb3VzKGFjdGl2ZUJvdW5kcyk7XG4gIGNvbnN0IGxhc3RJZCA9IHVzZVByZXZpb3VzKGFjdGl2ZUlkLmN1cnJlbnQpO1xuXG4gIGNvbnN0IHBlcmNlbnRPdmVybGFwRnJvbUxhc3QgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWxhc3RCb3VuZHMpIHJldHVybiAwO1xuXG4gICAgY29uc3Qgb3ZlcmxhcExlZnQgPSBNYXRoLm1heChhY3RpdmVCb3VuZHMueCwgbGFzdEJvdW5kcy54KTtcbiAgICBjb25zdCBvdmVybGFwUmlnaHQgPSBNYXRoLm1pbihcbiAgICAgIGFjdGl2ZUJvdW5kcy54ICsgYWN0aXZlQm91bmRzLndpZHRoLFxuICAgICAgbGFzdEJvdW5kcy54ICsgbGFzdEJvdW5kcy53aWR0aFxuICAgICk7XG4gICAgY29uc3Qgb3ZlcmxhcFRvcCA9IE1hdGgubWF4KGFjdGl2ZUJvdW5kcy55LCBsYXN0Qm91bmRzLnkpO1xuICAgIGNvbnN0IG92ZXJsYXBCb3R0b20gPSBNYXRoLm1pbihcbiAgICAgIGFjdGl2ZUJvdW5kcy55ICsgYWN0aXZlQm91bmRzLmhlaWdodCxcbiAgICAgIGxhc3RCb3VuZHMueSArIGxhc3RCb3VuZHMuaGVpZ2h0XG4gICAgKTtcblxuICAgIGlmIChvdmVybGFwTGVmdCA8IG92ZXJsYXBSaWdodCAmJiBvdmVybGFwVG9wIDwgb3ZlcmxhcEJvdHRvbSkge1xuICAgICAgY29uc3Qgb3ZlcmxhcEFyZWEgPVxuICAgICAgICAob3ZlcmxhcFJpZ2h0IC0gb3ZlcmxhcExlZnQpICogKG92ZXJsYXBCb3R0b20gLSBvdmVybGFwVG9wKTtcblxuICAgICAgY29uc3QgYWN0aXZlQm91bmRzQXJlYSA9IGFjdGl2ZUJvdW5kcy53aWR0aCAqIGFjdGl2ZUJvdW5kcy5oZWlnaHQ7XG5cbiAgICAgIGlmIChhY3RpdmVCb3VuZHNBcmVhID09PSAwKSByZXR1cm4gMDtcblxuICAgICAgcmV0dXJuIChvdmVybGFwQXJlYSAvIGFjdGl2ZUJvdW5kc0FyZWEpICogMTAwO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9LCBbYWN0aXZlQm91bmRzLCBsYXN0Qm91bmRzXSk7XG5cbiAgY29uc3QgZGlzdGFuY2VGcm9tTGFzdCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIE1hdGguc3FydChcbiAgICAgICAgKChsYXN0Qm91bmRzPy54ID8/IDApIC0gYWN0aXZlQm91bmRzLngpICoqIDIgK1xuICAgICAgICAgICgobGFzdEJvdW5kcz8ueSA/PyAwKSAtIGFjdGl2ZUJvdW5kcy55KSAqKiAyXG4gICAgICApLFxuICAgIFthY3RpdmVCb3VuZHMueCwgYWN0aXZlQm91bmRzLnksIGxhc3RCb3VuZHM/LngsIGxhc3RCb3VuZHM/LnldXG4gICk7XG5cbiAgY29uc3QgbGFzdE9yaWdpbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghbGFzdEJvdW5kcykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGxhc3RCb3VuZHMueCAtIGFjdGl2ZUJvdW5kcy54LFxuICAgICAgeTogbGFzdEJvdW5kcy55IC0gYWN0aXZlQm91bmRzLnksXG4gICAgfTtcbiAgfSwgW2FjdGl2ZUJvdW5kcywgbGFzdEJvdW5kc10pO1xuXG4gIGNvbnN0IFtpc1Njcm9sbGluZywgc2V0SXNTY3JvbGxpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBza2lwVHJhbnNpdGlvbiA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGRpc3RhbmNlRnJvbUxhc3QgPiBNQVhfVFJBTlNJVElPTl9ESVNUQU5DRV9QWCB8fFxuICAgICAgcGVyY2VudE92ZXJsYXBGcm9tTGFzdCA+IE1BWF9PVkVSTEFQX0ZPUl9UUkFOU0lUSU9OX1BFUkNFTlQgfHxcbiAgICAgIGxhc3RJZCA9PT0gbnVsbCB8fFxuICAgICAgaXNTY3JvbGxpbmcsXG4gICAgW2Rpc3RhbmNlRnJvbUxhc3QsIGlzU2Nyb2xsaW5nLCBsYXN0SWQsIHBlcmNlbnRPdmVybGFwRnJvbUxhc3RdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaXNTY3JvbGxpbmdUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAoaXNTY3JvbGxpbmdUaW1lb3V0KSB3aW5kb3cuY2xlYXJUaW1lb3V0KGlzU2Nyb2xsaW5nVGltZW91dCk7XG5cbiAgICAgIGlzU2Nyb2xsaW5nVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRJc1Njcm9sbGluZyhmYWxzZSk7XG4gICAgICB9LCA2Nik7XG5cbiAgICAgIGlmICghaXNTY3JvbGxpbmcpIHtcbiAgICAgICAgc2V0SXNTY3JvbGxpbmcodHJ1ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB0cnVlKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgdHJ1ZSk7XG4gICAgfTtcbiAgfSwgW2lzU2Nyb2xsaW5nXSk7XG5cbiAgY29uc3QgY29udGV4dFZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgdXBkYXRlQWN0aXZlQ29udGV4dENhcmQsXG4gICAgICByb290T3JpZ2luOiB7IC4uLmFjdGl2ZUJvdW5kcyB9LFxuICAgICAgcm9vdEJvdW5kczogYm91bmRzLFxuICAgICAgcG9ydGFsUmVmLFxuICAgICAgc2V0QWN0aXZlSWQsXG4gICAgICBhY3RpdmVJZCxcbiAgICAgIHNldEhvdmVyZWRJZCxcbiAgICAgIGhvdmVyZWRJZCxcbiAgICAgIHNraXBUcmFuc2l0aW9uLFxuICAgICAgcm9vdFZpc2libGU6IHZpc2libGUsXG4gICAgICBkaXN0YW5jZUZyb21MYXN0LFxuICAgICAgbGFzdE9yaWdpbixcbiAgICAgIGlzUHJvdmlkZWQ6IHRydWUsXG4gICAgfSksXG4gICAgW1xuICAgICAgYWN0aXZlQm91bmRzLFxuICAgICAgYm91bmRzLFxuICAgICAgaG92ZXJlZElkLFxuICAgICAgc2tpcFRyYW5zaXRpb24sXG4gICAgICB2aXNpYmxlLFxuICAgICAgZGlzdGFuY2VGcm9tTGFzdCxcbiAgICAgIGxhc3RPcmlnaW4sXG4gICAgXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHRDYXJkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dFZhbHVlfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIHtpc01vdW50ZWRcbiAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgaW5zZXQtMCBmaXhlZCBwb2ludGVyLWV2ZW50cy1ub25lIHotWzEwMDAwMF1cIlxuICAgICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1pbi13LW1heCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0xNTAgZWFzZS1bZWFzaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjMsXzAuNTcsXzAuMDcsXzAuOTUpXSB3aWxsLWNoYW5nZS1bdHJhbnNmb3JtLHdpZHRoLGhlaWdodF0gbW90aW9uLXJlZHVjZTohdHJhbnNpdGlvbi1ub25lXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgb3BhY2l0eTogdmlzaWJsZSA/IDEgOiAwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnYWJzb2x1dGUgYmctYmFja2dyb3VuZC0xMDAgYmctY2xpcC1wYWRkaW5nIHJvdW5kZWQtWzZweF0gb3ZlcmZsb3ctdmlzaWJsZSBwb2ludGVyLWV2ZW50cy1ub25lIHotWzEwMDAwMDBdIHNoYWRvdy1bdmFyKC0tZHMtc2hhZG93LXRvb2x0aXApLDBfMF8wXzFweF92YXIoLS1kcy1iYWNrZ3JvdW5kLTEwMCldIHctZml0IFstLWNvbnRleHQtY2FyZC10aXAtc3Ryb2tlOiNEQkRCREJdIGRhcmstdGhlbWU6Wy0tY29udGV4dC1jYXJkLXRpcC1zdHJva2U6IzI1MjUyNV0nLFxuICAgICAgICAgICAgICAgICAgICBza2lwVHJhbnNpdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gJyF0cmFuc2l0aW9uLW5vbmUnXG4gICAgICAgICAgICAgICAgICAgICAgOiAndHJhbnNpdGlvbi1bdHJhbnNmb3JtLHdpZHRoLGhlaWdodF0gZHVyYXRpb24tMjUwIGVhc2UtW2Vhc2luZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4yOSwwLjMxLDAuMDUsMC45NildIHdpbGwtY2hhbmdlLVt0cmFuc2Zvcm0sd2lkdGgsaGVpZ2h0XSBtb3Rpb24tcmVkdWNlOiF0cmFuc2l0aW9uLW5vbmUnXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgZGF0YS1za2lwLXRyYW5zaXRpb249e3NraXBUcmFuc2l0aW9ufVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlKCR7YWN0aXZlQm91bmRzLnh9cHgsJHthY3RpdmVCb3VuZHMueX1weClgLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogYWN0aXZlQm91bmRzLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGFjdGl2ZUJvdW5kcy5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAndy1bMTRweF0gaC1bN3B4XSBhYnNvbHV0ZSBncmlkIHBsYWNlLWNvbnRlbnQtY2VudGVyIHotWzk5OTk5OTk5OV0gb3JpZ2luLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1mdWxsIC10cmFuc2xhdGUteC0xLzIgcm90YXRlLTAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVCb3VuZHMuc2lkZSA9PT0gJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQtZnVsbCAtdHJhbnNsYXRlLXktMS8yIHJvdGF0ZS05MCAtbXItWzMuNXB4XSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUJvdW5kcy5zaWRlID09PSAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1mdWxsIC10cmFuc2xhdGUteC0xLzIgcm90YXRlLTE4MCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUJvdW5kcy5zaWRlID09PSAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0LWZ1bGwgLXRyYW5zbGF0ZS15LTEvMiByb3RhdGUtWzI3MGRlZ10gLW1sLVszLjVweF0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVCb3VuZHMuc2lkZSA9PT0gJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgc2tpcFRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgID8gJyF0cmFuc2l0aW9uLW5vbmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0cmFuc2l0aW9uLVt0cmFuc2Zvcm0sd2lkdGgsaGVpZ2h0XSBkdXJhdGlvbi0yNTAgZWFzZS1bZWFzaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjI5LDAuMzEsMC4wNSwwLjk2KV0gd2lsbC1jaGFuZ2UtW3RyYW5zZm9ybSx3aWR0aCxoZWlnaHRdIG1vdGlvbi1yZWR1Y2U6IXRyYW5zaXRpb24tbm9uZSdcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAuLi4oYWN0aXZlQm91bmRzLnNpZGUgPT09ICd0b3AnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQm91bmRzLnNpZGUgPT09ICdib3R0b20nXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBgY2FsYyg1MCUgKyAke2FjdGl2ZUJvdW5kcy5hcnJvd09mZnNldC54fXB4KWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogYGNhbGMoNTAlICsgJHthY3RpdmVCb3VuZHMuYXJyb3dPZmZzZXQueX1weClgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS1za2lwLXRyYW5zaXRpb249e3NraXBUcmFuc2l0aW9ufVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXNpZGU9e2FjdGl2ZUJvdW5kcy5zaWRlfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNFwiXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNCA3XCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXBQYXRoPVwidXJsKCNjb250ZXh0LWNhcmQtdGlwLWNsaXApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IC0wLjVWMC41SDEyLjk4MzRMMTIuODE4NCAwLjUwODc4OUMxMi40Mzc3IDAuNTUwODIyIDEyLjA4NTMgMC43MzgwNTYgMTEuODM1OSAxLjAzNDE4TDguNTMwMjcgNC45NTk5NkM3LjczMTE0IDUuOTA4OTMgNi4yNjg4NiA1LjkwODkyIDUuNDY5NzMgNC45NTk5NkwyLjE2NDA2IDEuMDM0MThDMS44NzkwNSAwLjY5NTczMyAxLjQ1OTA3IDAuNSAxLjAxNjYgMC41SC0xVi0wLjVIMTVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cInZhcigtLWRzLWJhY2tncm91bmQtMTAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogJ3ZhcigtLWRzLWJhY2tncm91bmQtMTAwKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiAndmFyKC0tY29udGV4dC1jYXJkLXRpcC1zdHJva2UpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VPcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjb250ZXh0LWNhcmQtdGlwLWNsaXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGZpbGw6ICd3aGl0ZScsIGZpbGxPcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtwb3J0YWxSZWZ9IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+LFxuICAgICAgICAgICAgcmVzb2x2ZWRQb3J0YWxUYXJnZXQgPz8gZG9jdW1lbnQuYm9keVxuICAgICAgICAgIClcbiAgICAgICAgOiBudWxsfVxuICAgIDwvQ29udGV4dENhcmRDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuXG5leHBvcnQgdHlwZSBTaWRlID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG5leHBvcnQgdHlwZSBBbGlnbiA9ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuXG4vKiogUHJvcHMgZm9yIHRoZSB7QGxpbmsgQ29udGV4dENhcmRUcmlnZ2VyfSBjb21wb25lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRDYXJkVHJpZ2dlclByb3BzXG4gIGV4dGVuZHMgT21pdDxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sICdjb250ZW50Jz4ge1xuICAvKiogVGhlIGNvbnRlbnQgcmVuZGVyZWQgaW5zaWRlIHRoZSBjb250ZXh0IGNhcmQgcG9wdXAuICovXG4gIGNvbnRlbnQ6IFJlYWN0Tm9kZTtcbiAgLyoqIFdoaWNoIHNpZGUgb2YgdGhlIHRyaWdnZXIgdG8gZGlzcGxheSB0aGUgY2FyZC4gRGVmYXVsdHMgdG8gYFwicmlnaHRcImAuICovXG4gIHNpZGU/OiBTaWRlO1xuICAvKiogQWxpZ25tZW50IG9mIHRoZSBjYXJkIHJlbGF0aXZlIHRvIHRoZSB0cmlnZ2VyLiBEZWZhdWx0cyB0byBgXCJjZW50ZXJcImAuICovXG4gIGFsaWduPzogQWxpZ247XG4gIC8qKiBEaXN0YW5jZSBpbiBwaXhlbHMgYmV0d2VlbiB0aGUgdHJpZ2dlciBhbmQgdGhlIGNhcmQuIERlZmF1bHRzIHRvIGAxNmAuICovXG4gIHNpZGVPZmZzZXQ/OiBudW1iZXI7XG4gIC8qKiBPZmZzZXQgaW4gcGl4ZWxzIGFsb25nIHRoZSBhbGlnbm1lbnQgYXhpcy4gRGVmYXVsdHMgdG8gYDBgLiAqL1xuICBhbGlnbk9mZnNldD86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gZGlzYWJsZSBwb2ludGVyIGV2ZW50cyBvbiB0aGUgY2FyZCBjb250ZW50LiAqL1xuICBpZ25vcmVDYXJkUG9pbnRlckV2ZW50cz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIHJlbW92ZSBkZWZhdWx0IHBhZGRpbmcgZnJvbSB0aGUgY2FyZCBjb250ZW50LiAqL1xuICBub1BhZGRpbmc/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgdHJpZ2dlciB1c2VzIHRoZSBTbG90IHBhdHRlcm4gdG8gbWVyZ2UgcHJvcHMgb250byBpdHMgY2hpbGQuICovXG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xuICAvKiogQ2FuIGJlIHVzZWQgdG8gaGlkZSB0aGUgY2FyZCB3aGVuIG5lZWRlZC4gKi9cbiAgaGlkZT86IGJvb2xlYW47XG4gIC8qKiBUaW1lIGluIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIGNhcmQgaXMgZGlzbWlzc2VkIGFmdGVyIG1vdXNlIGxlYXZlcy4gKi9cbiAgaW5hY3RpdmVUaW1lb3V0TXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBmbG9hdGluZyBjb250ZXh0IGNhcmQgb24gaG92ZXIgd2l0aCB2aWV3cG9ydC1hd2FyZSBjb2xsaXNpb25cbiAqIGRldGVjdGlvbiBhbmQgYW5pbWF0ZWQgcG9zaXRpb24gdHJhbnNpdGlvbnMgYmV0d2VlbiB0cmlnZ2VycyBpbiB0aGUgc2FtZVxuICoge0BsaW5rIENvbnRleHRDYXJkUHJvdmlkZXJ9LiBQZXJzaXN0cyBicmllZmx5IGFmdGVyIG1vdXNlIGxlYXZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29udGV4dENhcmRUcmlnZ2VyKHtcbiAgY29udGVudCxcbiAgY2hpbGRyZW4sXG4gIHNpZGUgPSAncmlnaHQnLFxuICBhbGlnbiA9ICdjZW50ZXInLFxuICBzaWRlT2Zmc2V0ID0gMTYsXG4gIGFsaWduT2Zmc2V0ID0gMCxcbiAgaWdub3JlQ2FyZFBvaW50ZXJFdmVudHMgPSBmYWxzZSxcbiAgbm9QYWRkaW5nLFxuICBhc0NoaWxkLFxuICBjbGFzc05hbWUsXG4gIGhpZGUsXG4gIGluYWN0aXZlVGltZW91dE1zID0gSU5BQ1RJVkVfVElNRU9VVF9NUyxcbn06IENvbnRleHRDYXJkVHJpZ2dlclByb3BzKTogSlNYLkVsZW1lbnQge1xuICBjb25zdCB0cmlnZ2VyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgY29udGVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtjb250ZW50TWVhc3VyZVJlZiwgY29udGVudE1lYXN1cmVCb3VuZHNdID0gdXNlTWVhc3VyZSgpO1xuICBjb25zdCB7XG4gICAgcG9ydGFsUmVmLFxuICAgIHVwZGF0ZUFjdGl2ZUNvbnRleHRDYXJkLFxuICAgIGFjdGl2ZUlkLFxuICAgIHNldEFjdGl2ZUlkLFxuICAgIGhvdmVyZWRJZCxcbiAgICBzZXRIb3ZlcmVkSWQsXG4gICAgc2tpcFRyYW5zaXRpb24sXG4gICAgcm9vdFZpc2libGUsXG4gIH0gPSB1c2VDb250ZXh0KENvbnRleHRDYXJkQ29udGV4dCk7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAvLyBPbmx5IGNsZWFyIHRoZSBzaGFyZWQgYWN0aXZlIGNhcmQgaWYgdGhpcyB0cmlnZ2VyIHdhcyB0aGUgYWN0aXZlIG9uZTtcbiAgICAgIC8vIG90aGVyd2lzZSBhbiB1bm1vdW50aW5nIGluYWN0aXZlIHRyaWdnZXIgd291bGQgaGlkZSBhbm90aGVyIHRyaWdnZXIncyBjYXJkLlxuICAgICAgaWYgKGFjdGl2ZUlkLmN1cnJlbnQgPT09IGlkKSB7XG4gICAgICAgIHNldEFjdGl2ZUlkKG51bGwpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICBjb25zdCByZWR1Y2VNb3Rpb24gPSB1c2VSZWR1Y2VkTW90aW9uKCk7XG5cbiAgY29uc3QgW2xvY2FsSG92ZXIsIHNldExvY2FsSG92ZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcGVyc2lzdGluZywgc2V0UGVyc2lzdGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBhY3RpdmVUaW1lb3V0ID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHBlcnNpc3RpbmdUaW1lb3V0ID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IG9wZW5UaW1lb3V0ID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBsb2NhbEhvdmVyICYmXG4gICAgICBjb250ZW50TWVhc3VyZUJvdW5kcy53aWR0aCA+IDAgJiZcbiAgICAgIGNvbnRlbnRNZWFzdXJlQm91bmRzLmhlaWdodCA+IDBcbiAgICApIHtcbiAgICAgIGlmIChvcGVuVGltZW91dC5jdXJyZW50KSBjbGVhclRpbWVvdXQob3BlblRpbWVvdXQuY3VycmVudCk7XG4gICAgICBvcGVuVGltZW91dC5jdXJyZW50ID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHNldEFjdGl2ZUlkKGlkKTtcbiAgICAgICAgICB1cGRhdGVCb3VuZHMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdFZpc2libGUgPyAwIDogT1BFTl9ERUxBWV9NU1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChvcGVuVGltZW91dC5jdXJyZW50KSBjbGVhclRpbWVvdXQob3BlblRpbWVvdXQuY3VycmVudCk7XG4gICAgfTtcbiAgfSwgW2xvY2FsSG92ZXIsIGNvbnRlbnRNZWFzdXJlQm91bmRzXSk7XG5cbiAgY29uc3QgZW50ZXJUaW1lb3V0ID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW50ZXJUaW1lb3V0LmN1cnJlbnQpIGNsZWFyVGltZW91dChlbnRlclRpbWVvdXQuY3VycmVudCk7XG4gICAgaWYgKGhvdmVyZWRJZCAhPT0gaWQpIHtcbiAgICAgIC8vIEV4aXRzIGFyZSBpbnN0YW50XG4gICAgICBzZXRWaXNpYmxlKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRW50ZXJzIGNhbiBiZSBkZWxheWVkIHVubGVzcyB3ZSB3aXNoIHRvIHNjcmlwdCB0aGUgdHJhbnNpdGlvblxuICAgICAgZW50ZXJUaW1lb3V0LmN1cnJlbnQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0VmlzaWJsZSh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVkdWNlTW90aW9uIHx8IHNraXBUcmFuc2l0aW9uID8gMCA6IEVOVEVSX0RFTEFZX01TXG4gICAgICApO1xuICAgIH1cbiAgfSwgW2hvdmVyZWRJZCwgaWQsIHJlZHVjZU1vdGlvbiwgc2tpcFRyYW5zaXRpb25dKTtcblxuICBmdW5jdGlvbiB1cGRhdGVCb3VuZHMoKTogdm9pZCB7XG4gICAgaWYgKCFjb250ZW50UmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBjb25zdCBib3VuZHMgPSBjb21wdXRlQm91bmRzKCk7XG4gICAgdXBkYXRlQWN0aXZlQ29udGV4dENhcmQoeyBpZCwgLi4uYm91bmRzIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gY29tcHV0ZUJvdW5kcyhzaWRlT3ZlcnJpZGU/OiBTaWRlKToge1xuICAgIG9yaWdpbjogUG9pbnQ7XG4gICAgY29udGVudFNpemU6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfTtcbiAgICBzaWRlOiBTaWRlO1xuICAgIGFycm93T2Zmc2V0OiBQb2ludDtcbiAgfSB7XG4gICAgaWYgKCF0cmlnZ2VyUmVmLmN1cnJlbnQpIHRocm93IG5ldyBFcnJvcignVHJpZ2dlciBub3QgZm91bmQnKTtcbiAgICBpZiAoIWNvbnRlbnRSZWYuY3VycmVudCkgdGhyb3cgbmV3IEVycm9yKCdDb250ZW50IG5vdCBmb3VuZCcpO1xuICAgIGNvbnN0IGFwcGxpZWRTaWRlID0gc2lkZU92ZXJyaWRlID8/IHNpZGU7XG4gICAgY29uc3QgdHJpZ2dlclJlY3QgPSB0cmlnZ2VyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGVudFJlY3QgPSBjb250ZW50UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29udGVudFJlZi5jdXJyZW50LnN0eWxlLndpZHRoID0gJ21heC1jb250ZW50JztcbiAgICBjb250ZW50UmVmLmN1cnJlbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGNvbnN0IGNvbnRlbnRTaXplID0ge1xuICAgICAgd2lkdGg6IE1hdGgubWF4KGNvbnRlbnRSZWN0LndpZHRoLCBjb250ZW50UmVmLmN1cnJlbnQub2Zmc2V0V2lkdGgpLFxuICAgICAgaGVpZ2h0OiBjb250ZW50UmVjdC5oZWlnaHQsXG4gICAgfTtcblxuICAgIGxldCBvcmlnaW46IFBvaW50O1xuXG4gICAgY29uc3QgYXJyb3dXaWR0aCA9IDE0O1xuICAgIGNvbnN0IGhhbGZBcnJvd1dpZHRoID0gYXJyb3dXaWR0aCAvIDI7XG4gICAgY29uc3QgaGFsZlRyaWdnZXJXaWR0aCA9IHRyaWdnZXJSZWN0LndpZHRoIC8gMjtcbiAgICBjb25zdCBoYWxmVHJpZ2dlckhlaWdodCA9IHRyaWdnZXJSZWN0LmhlaWdodCAvIDI7XG4gICAgY29uc3QgaGFsZkNvbnRlbnRXaWR0aCA9IGNvbnRlbnRTaXplLndpZHRoIC8gMjtcbiAgICBjb25zdCBoYWxmQ29udGVudEhlaWdodCA9IGNvbnRlbnRTaXplLmhlaWdodCAvIDI7XG5cbiAgICBjb25zdCB0b3AgPSB0cmlnZ2VyUmVjdC50b3A7XG4gICAgY29uc3QgbGVmdCA9IHRyaWdnZXJSZWN0LmxlZnQ7XG5cbiAgICBsZXQgYWxpZ25YID0gbGVmdCArIGhhbGZUcmlnZ2VyV2lkdGggLSBoYWxmQ29udGVudFdpZHRoICsgYWxpZ25PZmZzZXQ7XG4gICAgaWYgKGFsaWduID09PSAnc3RhcnQnKSBhbGlnblggPSBsZWZ0ICsgYWxpZ25PZmZzZXQ7XG4gICAgaWYgKGFsaWduID09PSAnZW5kJylcbiAgICAgIGFsaWduWCA9IGxlZnQgKyB0cmlnZ2VyUmVjdC53aWR0aCAtIGNvbnRlbnRSZWN0LndpZHRoICsgYWxpZ25PZmZzZXQ7XG5cbiAgICBsZXQgYWxpZ25ZID0gdG9wICsgaGFsZlRyaWdnZXJIZWlnaHQgLSBoYWxmQ29udGVudEhlaWdodCArIGFsaWduT2Zmc2V0O1xuICAgIGlmIChhbGlnbiA9PT0gJ3N0YXJ0JykgYWxpZ25ZID0gdG9wICsgYWxpZ25PZmZzZXQ7XG4gICAgaWYgKGFsaWduID09PSAnZW5kJylcbiAgICAgIGFsaWduWSA9IHRvcCArIHRyaWdnZXJSZWN0LmhlaWdodCAtIGNvbnRlbnRSZWN0LmhlaWdodCArIGFsaWduT2Zmc2V0O1xuXG4gICAgc3dpdGNoIChhcHBsaWVkU2lkZSkge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgb3JpZ2luID0ge1xuICAgICAgICAgIHg6IGFsaWduWCxcbiAgICAgICAgICB5OiB0b3AgLSBjb250ZW50UmVjdC5oZWlnaHQgLSBzaWRlT2Zmc2V0LFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgb3JpZ2luID0ge1xuICAgICAgICAgIHg6IGxlZnQgKyB0cmlnZ2VyUmVjdC53aWR0aCArIHNpZGVPZmZzZXQsXG4gICAgICAgICAgeTogYWxpZ25ZLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIG9yaWdpbiA9IHtcbiAgICAgICAgICB4OiBhbGlnblgsXG4gICAgICAgICAgeTogdG9wICsgdHJpZ2dlclJlY3QuaGVpZ2h0ICsgc2lkZU9mZnNldCxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgb3JpZ2luID0ge1xuICAgICAgICAgIHg6IGxlZnQgLSBjb250ZW50UmVjdC53aWR0aCAtIHNpZGVPZmZzZXQsXG4gICAgICAgICAgeTogYWxpZ25ZLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gYXBwbGllZFNpZGU7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzaWRlOiAke1N0cmluZyhfZXhoYXVzdGl2ZSl9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG5cbiAgICBjb25zdCBpc09mZnNjcmVlbkxlZnQgPSBvcmlnaW4ueCA8IDA7XG4gICAgY29uc3QgaXNPZmZzY3JlZW5SaWdodCA9IG9yaWdpbi54ICsgY29udGVudFJlY3Qud2lkdGggPiB2aWV3cG9ydFdpZHRoO1xuICAgIGNvbnN0IGlzT2Zmc2NyZWVuVG9wID0gb3JpZ2luLnkgPCAwO1xuICAgIGNvbnN0IGlzT2Zmc2NyZWVuQm90dG9tID0gb3JpZ2luLnkgKyBjb250ZW50UmVjdC5oZWlnaHQgPiB2aWV3cG9ydEhlaWdodDtcblxuICAgIGlmICghc2lkZU92ZXJyaWRlKSB7XG4gICAgICBjb25zdCBzcGFjZUFib3ZlID0gdG9wO1xuICAgICAgY29uc3Qgc3BhY2VCZWxvdyA9IHZpZXdwb3J0SGVpZ2h0IC0gKHRvcCArIHRyaWdnZXJSZWN0LmhlaWdodCk7XG4gICAgICBjb25zdCBzcGFjZUxlZnQgPSBsZWZ0O1xuICAgICAgY29uc3Qgc3BhY2VSaWdodCA9IHZpZXdwb3J0V2lkdGggLSAobGVmdCArIHRyaWdnZXJSZWN0LndpZHRoKTtcblxuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnICYmIGlzT2Zmc2NyZWVuVG9wICYmIHNwYWNlQmVsb3cgPiBzcGFjZUFib3ZlKSB7XG4gICAgICAgIHJldHVybiBjb21wdXRlQm91bmRzKCdib3R0b20nKTtcbiAgICAgIH1cbiAgICAgIGlmIChzaWRlID09PSAnYm90dG9tJyAmJiBpc09mZnNjcmVlbkJvdHRvbSAmJiBzcGFjZUFib3ZlID4gc3BhY2VCZWxvdykge1xuICAgICAgICByZXR1cm4gY29tcHV0ZUJvdW5kcygndG9wJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaWRlID09PSAncmlnaHQnICYmIGlzT2Zmc2NyZWVuUmlnaHQgJiYgc3BhY2VMZWZ0ID4gc3BhY2VSaWdodCkge1xuICAgICAgICByZXR1cm4gY29tcHV0ZUJvdW5kcygnbGVmdCcpO1xuICAgICAgfVxuICAgICAgaWYgKHNpZGUgPT09ICdsZWZ0JyAmJiBpc09mZnNjcmVlbkxlZnQgJiYgc3BhY2VSaWdodCA+IHNwYWNlTGVmdCkge1xuICAgICAgICByZXR1cm4gY29tcHV0ZUJvdW5kcygncmlnaHQnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbScpICYmXG4gICAgICAgIGlzT2Zmc2NyZWVuTGVmdCAmJlxuICAgICAgICBzcGFjZVJpZ2h0ID4gY29udGVudFJlY3Qud2lkdGhcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gY29tcHV0ZUJvdW5kcygncmlnaHQnKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSAmJlxuICAgICAgICBpc09mZnNjcmVlblJpZ2h0ICYmXG4gICAgICAgIHNwYWNlTGVmdCA+IGNvbnRlbnRSZWN0LndpZHRoXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVCb3VuZHMoJ2xlZnQnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAoc2lkZSA9PT0gJ2xlZnQnIHx8IHNpZGUgPT09ICdyaWdodCcpICYmXG4gICAgICAgIGlzT2Zmc2NyZWVuVG9wICYmXG4gICAgICAgIHNwYWNlQmVsb3cgPiBjb250ZW50UmVjdC5oZWlnaHRcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gY29tcHV0ZUJvdW5kcygnYm90dG9tJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIChzaWRlID09PSAnbGVmdCcgfHwgc2lkZSA9PT0gJ3JpZ2h0JykgJiZcbiAgICAgICAgaXNPZmZzY3JlZW5Cb3R0b20gJiZcbiAgICAgICAgc3BhY2VBYm92ZSA+IGNvbnRlbnRSZWN0LmhlaWdodFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBjb21wdXRlQm91bmRzKCd0b3AnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB2aWV3cG9ydFBhZGRpbmcgPSA4O1xuICAgIGlmIChhcHBsaWVkU2lkZSA9PT0gJ2xlZnQnIHx8IGFwcGxpZWRTaWRlID09PSAncmlnaHQnKSB7XG4gICAgICBvcmlnaW4ueSA9IE1hdGgubWF4KFxuICAgICAgICB2aWV3cG9ydFBhZGRpbmcsXG4gICAgICAgIE1hdGgubWluKFxuICAgICAgICAgIG9yaWdpbi55LFxuICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0IC0gY29udGVudFNpemUuaGVpZ2h0IC0gdmlld3BvcnRQYWRkaW5nXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9yaWdpbi54ID0gTWF0aC5tYXgoXG4gICAgICAgIHZpZXdwb3J0UGFkZGluZyxcbiAgICAgICAgTWF0aC5taW4ob3JpZ2luLngsIHZpZXdwb3J0V2lkdGggLSBjb250ZW50U2l6ZS53aWR0aCAtIHZpZXdwb3J0UGFkZGluZylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIGNvbnN0cmFpbiBZIHBvc2l0aW9uIHdpdGhpbiB2aWV3cG9ydCBib3VuZHNcbiAgICBvcmlnaW4ueSA9IE1hdGgubWF4KFxuICAgICAgdmlld3BvcnRQYWRkaW5nLFxuICAgICAgTWF0aC5taW4ob3JpZ2luLnksIHZpZXdwb3J0SGVpZ2h0IC0gY29udGVudFNpemUuaGVpZ2h0IC0gdmlld3BvcnRQYWRkaW5nKVxuICAgICk7XG5cbiAgICBjb25zdCB0cmlnZ2VyQ2VudGVyWCA9IGxlZnQgKyBoYWxmVHJpZ2dlcldpZHRoO1xuICAgIGNvbnN0IHRyaWdnZXJDZW50ZXJZID0gdG9wICsgaGFsZlRyaWdnZXJIZWlnaHQ7XG4gICAgY29uc3QgY2FyZENlbnRlclggPSBvcmlnaW4ueCArIGNvbnRlbnRTaXplLndpZHRoIC8gMjtcbiAgICBjb25zdCBjYXJkQ2VudGVyWSA9IG9yaWdpbi55ICsgY29udGVudFNpemUuaGVpZ2h0IC8gMjtcblxuICAgIGxldCBhcnJvd09mZnNldFggPSB0cmlnZ2VyQ2VudGVyWCAtIGNhcmRDZW50ZXJYO1xuICAgIGxldCBhcnJvd09mZnNldFkgPSB0cmlnZ2VyQ2VudGVyWSAtIGNhcmRDZW50ZXJZO1xuXG4gICAgLy8gQ2xhbXAgYXJyb3cgb2Zmc2V0IHRvIGVuc3VyZSBpdCBzdGF5cyB3aXRoaW4gY2FyZCBib3VuZGFyaWVzLlxuICAgIC8vIEFycm93IHNob3VsZCBiZSBhdCBsZWFzdCBoYWxmQXJyb3dXaWR0aCAoN3B4KSBmcm9tIHRoZSBjYXJkIGVkZ2VzLlxuICAgIGNvbnN0IG1heEFycm93T2Zmc2V0WCA9IGhhbGZDb250ZW50V2lkdGggLSBoYWxmQXJyb3dXaWR0aDtcbiAgICBjb25zdCBtYXhBcnJvd09mZnNldFkgPSBoYWxmQ29udGVudEhlaWdodCAtIGhhbGZBcnJvd1dpZHRoO1xuXG4gICAgaWYgKGFwcGxpZWRTaWRlID09PSAndG9wJyB8fCBhcHBsaWVkU2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgIGFycm93T2Zmc2V0WCA9IE1hdGgubWF4KFxuICAgICAgICAtbWF4QXJyb3dPZmZzZXRYLFxuICAgICAgICBNYXRoLm1pbihhcnJvd09mZnNldFgsIG1heEFycm93T2Zmc2V0WClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFwcGxpZWRTaWRlID09PSAnbGVmdCcgfHwgYXBwbGllZFNpZGUgPT09ICdyaWdodCcpIHtcbiAgICAgIGFycm93T2Zmc2V0WSA9IE1hdGgubWF4KFxuICAgICAgICAtbWF4QXJyb3dPZmZzZXRZLFxuICAgICAgICBNYXRoLm1pbihhcnJvd09mZnNldFksIG1heEFycm93T2Zmc2V0WSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYXJyb3dPZmZzZXQgPSB7XG4gICAgICB4OiBhcnJvd09mZnNldFgsXG4gICAgICB5OiBhcnJvd09mZnNldFksXG4gICAgfTtcblxuICAgIHJldHVybiB7IG9yaWdpbiwgY29udGVudFNpemUsIHNpZGU6IGFwcGxpZWRTaWRlLCBhcnJvd09mZnNldCB9O1xuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGVCb3VuZHMsIHRydWUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGVCb3VuZHMpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGVCb3VuZHMsIHRydWUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZUJvdW5kcyk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIGZ1bmN0aW9uIHJlc2V0RGVzdHJ1Y3RpdmVUaW1lb3V0cygpOiB2b2lkIHtcbiAgICBpZiAoYWN0aXZlVGltZW91dC5jdXJyZW50KSBjbGVhclRpbWVvdXQoYWN0aXZlVGltZW91dC5jdXJyZW50KTtcbiAgICBpZiAocGVyc2lzdGluZ1RpbWVvdXQuY3VycmVudCkgY2xlYXJUaW1lb3V0KHBlcnNpc3RpbmdUaW1lb3V0LmN1cnJlbnQpO1xuICAgIGlmIChvcGVuVGltZW91dC5jdXJyZW50KSBjbGVhclRpbWVvdXQob3BlblRpbWVvdXQuY3VycmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBhdHRlbXB0RGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoYWN0aXZlVGltZW91dC5jdXJyZW50KSBjbGVhclRpbWVvdXQoYWN0aXZlVGltZW91dC5jdXJyZW50KTtcbiAgICBhY3RpdmVUaW1lb3V0LmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChhY3RpdmVJZC5jdXJyZW50ICE9PSBpZCkgcmV0dXJuO1xuICAgICAgc2V0QWN0aXZlSWQobnVsbCk7XG4gICAgfSwgaW5hY3RpdmVUaW1lb3V0TXMpO1xuICB9XG5cbiAgZnVuY3Rpb24gYXR0ZW1wdFBlcnNpc3QoKTogdm9pZCB7XG4gICAgc2V0UGVyc2lzdGluZyh0cnVlKTtcbiAgICBpZiAocGVyc2lzdGluZ1RpbWVvdXQuY3VycmVudCkgY2xlYXJUaW1lb3V0KHBlcnNpc3RpbmdUaW1lb3V0LmN1cnJlbnQpO1xuICAgIHBlcnNpc3RpbmdUaW1lb3V0LmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFBlcnNpc3RpbmcoZmFsc2UpO1xuICAgIH0sIFBFUlNJU1RfVElNRU9VVF9NUyk7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgcmVzZXREZXN0cnVjdGl2ZVRpbWVvdXRzKCk7XG4gICAgc2V0SG92ZXJlZElkKGlkKTtcbiAgICBzZXRMb2NhbEhvdmVyKHRydWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIHNldExvY2FsSG92ZXIoZmFsc2UpO1xuICAgIGF0dGVtcHREZWFjdGl2YXRlKCk7XG4gICAgYXR0ZW1wdFBlcnNpc3QoKTtcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gY2xvc2UgaW5zdGFudGx5XG4gICAgaWYgKGhpZGUpIHtcbiAgICAgIHNldExvY2FsSG92ZXIoZmFsc2UpO1xuICAgICAgc2V0QWN0aXZlSWQobnVsbCk7XG4gICAgfVxuICB9LCBbaGlkZSwgc2V0QWN0aXZlSWRdKTtcblxuICBmdW5jdGlvbiBoYW5kbGVDbGljayhlOiBSZWFjdC5Nb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgLy8gQ2xvc2UgaWYgY2xpY2tpbmcgYSBsaW5rLiBXZSBhc3N1bWUgd2Ugd2FudCB0aGUgY2FyZCB0byBkaXNhcHBlYXIgaWYgbmF2aWdhdGluZy5cbiAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBlLnRhcmdldC5jbG9zZXN0KCdhW2hyZWZdJykpIHtcbiAgICAgIG9uTW91c2VMZWF2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdFJvb3QgOiAnZGl2JztcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnaW5saW5lLWZsZXggY3Vyc29yLXBvaW50ZXIgZmxleC1bMF8xX2F1dG9dIG92ZXJmbG93LWhpZGRlbicsXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIG9uTW91c2VFbnRlcj17b25Nb3VzZUVudGVyfVxuICAgICAgb25Nb3VzZUxlYXZlPXtvbk1vdXNlTGVhdmV9XG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIHJlZj17dHJpZ2dlclJlZn1cbiAgICA+XG4gICAgICA8U2xvdHRhYmxlPntjaGlsZHJlbn08L1Nsb3R0YWJsZT5cbiAgICAgIHtwb3J0YWxSZWY/LmN1cnJlbnQgJiYgKGxvY2FsSG92ZXIgfHwgcGVyc2lzdGluZylcbiAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgJ2Fic29sdXRlIHRvcC0wIHAtMyBsZWZ0LTAgbWF4LXctbWF4IHRyYW5zaXRpb24tW3RyYW5zZm9ybSx3aWR0aCxoZWlnaHRdIGR1cmF0aW9uLTI1MCBlYXNlLVtlYXNpbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMjksMC4zMSwwLjA1LDAuOTYpXSB3aWxsLWNoYW5nZS1bdHJhbnNmb3JtLHdpZHRoLGhlaWdodF0gbW90aW9uLXJlZHVjZTohdHJhbnNpdGlvbi1ub25lJyxcbiAgICAgICAgICAgICAgICBza2lwVHJhbnNpdGlvbiAmJiAnIXRyYW5zaXRpb24tbm9uZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAga2V5PXtpZH1cbiAgICAgICAgICAgICAgcmVmPXtjb250ZW50UmVmfVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIC4uLihub1BhZGRpbmcgPyB7IHBhZGRpbmc6IDAgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOlxuICAgICAgICAgICAgICAgICAgcm9vdFZpc2libGUgJiYgdmlzaWJsZSAmJiAhaWdub3JlQ2FyZFBvaW50ZXJFdmVudHNcbiAgICAgICAgICAgICAgICAgICAgPyAnYWxsJ1xuICAgICAgICAgICAgICAgICAgICA6ICdub25lJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAnbWluLXctbWF4IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTE1MCBlYXNlLVtlYXNpbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMyxfMC41NyxfMC4wNyxfMC45NSldIHdpbGwtY2hhbmdlLVt0cmFuc2Zvcm0sd2lkdGgsaGVpZ2h0XSBtb3Rpb24tcmVkdWNlOiF0cmFuc2l0aW9uLW5vbmUnLFxuICAgICAgICAgICAgICAgICAgc2tpcFRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgPyAnIXRyYW5zaXRpb24tbm9uZSdcbiAgICAgICAgICAgICAgICAgICAgOiAndHJhbnNpdGlvbi1bdHJhbnNmb3JtLHdpZHRoLGhlaWdodF0gZHVyYXRpb24tMjUwIGVhc2UtW2Vhc2luZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4yOSwwLjMxLDAuMDUsMC45NildIHdpbGwtY2hhbmdlLVt0cmFuc2Zvcm0sd2lkdGgsaGVpZ2h0XSBtb3Rpb24tcmVkdWNlOiF0cmFuc2l0aW9uLW5vbmUnXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICByZWY9e2NvbnRlbnRNZWFzdXJlUmVmfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBvcGFjaXR5OiBOdW1iZXIodmlzaWJsZSksXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PixcbiAgICAgICAgICAgIHBvcnRhbFJlZi5jdXJyZW50XG4gICAgICAgICAgKVxuICAgICAgICA6IG51bGx9XG4gICAgPC9Db21wPlxuICApO1xufVxuIl19
471
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1jYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdWkvY29udGV4dC1jYXJkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBRWIsT0FBTyxFQUFFLElBQUksSUFBSSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBQ1YsU0FBUyxFQUNULEtBQUssRUFDTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztBQUNoQyxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFDekIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBQzFCLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBQ3ZDLE1BQU0sa0NBQWtDLEdBQUcsR0FBRyxDQUFDO0FBQy9DLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBa0NoQyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBeUI7SUFDL0QsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNuQyxTQUFTLEVBQUUsSUFBbUQ7SUFDOUQsUUFBUSxFQUFFLElBQWtEO0lBQzVELFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxL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QyxDQUFDLENBQUMsWUFBWSxDQUNWLGNBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCxtTkFBbU4sRUFDbk4sY0FBYyxJQUFJLGtCQUFrQixDQUNyQyxFQUVELEdBQUcsRUFBRSxVQUFVLEVBQ2YsS0FBSyxFQUFFO3dCQUNMLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ3BDLGFBQWEsRUFDWCxXQUFXLElBQUksT0FBTyxJQUFJLENBQUMsdUJBQXVCOzRCQUNoRCxDQUFDLENBQUMsS0FBSzs0QkFDUCxDQUFDLENBQUMsTUFBTTtxQkFDYixZQUVELGNBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCxzS0FBc0ssRUFDdEssY0FBYzs0QkFDWixDQUFDLENBQUMsa0JBQWtCOzRCQUNwQixDQUFDLENBQUMsK0tBQStLLENBQ3BMLEVBQ0QsR0FBRyxFQUFFLGlCQUFpQixFQUN0QixLQUFLLEVBQUU7NEJBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7eUJBQ3pCLFlBRUEsT0FBTyxHQUNKLElBdkJELEVBQUUsQ0F3QkgsRUFDTixTQUFTLENBQUMsT0FBTyxDQUNsQjtnQkFDSCxDQUFDLENBQUMsSUFBSSxJQUNILENBQ1IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IFJvb3QgYXMgU2xvdFJvb3QsIFNsb3R0YWJsZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1zbG90JztcbmltcG9ydCB0eXBlIHsgSlNYLCBNdXRhYmxlUmVmT2JqZWN0LCBSZWFjdE5vZGUsIFJlZk9iamVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgdXNlTWVhc3VyZSBmcm9tICdyZWFjdC11c2UtbWVhc3VyZSc7XG5pbXBvcnQgeyB1c2VSZWR1Y2VkTW90aW9uIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlLXJlZHVjZWQtbW90aW9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vbGliL2NuJztcblxuY29uc3QgSU5BQ1RJVkVfVElNRU9VVF9NUyA9IDI1MDtcbmNvbnN0IEVOVEVSX0RFTEFZX01TID0gMDtcbmNvbnN0IE9QRU5fREVMQVlfTVMgPSAxNTA7XG5jb25zdCBNQVhfVFJBTlNJVElPTl9ESVNUQU5DRV9QWCA9IDE1MDtcbmNvbnN0IE1BWF9PVkVSTEFQX0ZPUl9UUkFOU0lUSU9OX1BFUkNFTlQgPSAxMDA7XG5jb25zdCBQRVJTSVNUX1RJTUVPVVRfTVMgPSAxMDAwO1xuXG5pbnRlcmZhY2UgUG9pbnQge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENvbnRleHRDYXJkRGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIG9yaWdpbjogUG9pbnQ7XG4gIGNvbnRlbnRTaXplOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH07XG4gIHNpZGU6IFNpZGU7XG4gIGFycm93T2Zmc2V0OiBQb2ludDtcbn1cblxudHlwZSBOdWxsU3RyaW5nID0gc3RyaW5nIHwgbnVsbDtcblxuaW50ZXJmYWNlIENvbnRleHRDYXJkQ29udGV4dFR5cGUge1xuICByb290T3JpZ2luOiBQb2ludDtcbiAgcm9vdEJvdW5kczogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9O1xuICBwb3J0YWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICBhY3RpdmVJZDogUmVmT2JqZWN0PE51bGxTdHJpbmcgfCBudWxsPjtcbiAgc2V0QWN0aXZlSWQ6IChpZDogTnVsbFN0cmluZykgPT4gdm9pZDtcbiAgaG92ZXJlZElkOiBOdWxsU3RyaW5nO1xuICBzZXRIb3ZlcmVkSWQ6IChpZDogTnVsbFN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlQWN0aXZlQ29udGV4dENhcmQ6ICh1cGRhdGU6IENvbnRleHRDYXJkRGF0YSB8IG51bGwpID0+IHZvaWQ7XG4gIHNraXBUcmFuc2l0aW9uOiBib29sZWFuO1xuICByb290VmlzaWJsZTogYm9vbGVhbjtcbiAgZGlzdGFuY2VGcm9tTGFzdDogbnVtYmVyO1xuICBsYXN0T3JpZ2luOiBQb2ludCB8IG51bGw7XG4gIC8qKiBXaGV0aGVyIGEgcmVhbCB7QGxpbmsgQ29udGV4dENhcmRQcm92aWRlcn0gaXMgbW91bnRlZCBhYm92ZSB0aGlzIGNvbnN1bWVyLiAqL1xuICBpc1Byb3ZpZGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBDb250ZXh0Q2FyZENvbnRleHQgPSBjcmVhdGVDb250ZXh0PENvbnRleHRDYXJkQ29udGV4dFR5cGU+KHtcbiAgcm9vdE9yaWdpbjogeyB4OiAwLCB5OiAwIH0sXG4gIHJvb3RCb3VuZHM6IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9LFxuICBwb3J0YWxSZWY6IG51bGwgYXMgdW5rbm93biBhcyBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPixcbiAgYWN0aXZlSWQ6IG51bGwgYXMgdW5rbm93biBhcyBNdXRhYmxlUmVmT2JqZWN0PHN0cmluZyB8IG51bGw+LFxuICBzZXRBY3RpdmVJZDogKCkgPT4gdm9pZCAwLFxuICBob3ZlcmVkSWQ6IG51bGwsXG4gIHNldEhvdmVyZWRJZDogKCkgPT4gdm9pZCAwLFxuICB1cGRhdGVBY3RpdmVDb250ZXh0Q2FyZDogKCkgPT4gdm9pZCAwLFxuICBza2lwVHJhbnNpdGlvbjogZmFsc2UsXG4gIHJvb3RWaXNpYmxlOiBmYWxzZSxcbiAgZGlzdGFuY2VGcm9tTGFzdDogMCxcbiAgbGFzdE9yaWdpbjogbnVsbCxcbiAgaXNQcm92aWRlZDogZmFsc2UsXG59KTtcbkNvbnRleHRDYXJkQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdDb250ZXh0Q2FyZENvbnRleHQnO1xuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGUgY3VycmVudCBzdWJ0cmVlIGlzIHdyYXBwZWQgaW4gYSB7QGxpbmsgQ29udGV4dENhcmRQcm92aWRlcn0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VIYXNDb250ZXh0Q2FyZFByb3ZpZGVyKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdXNlQ29udGV4dChDb250ZXh0Q2FyZENvbnRleHQpLmlzUHJvdmlkZWQ7XG59XG5cbmZ1bmN0aW9uIHVzZVByZXZpb3VzPFQ+KHZhbHVlOiBUKTogVCB8IG51bGwge1xuICBjb25zdCByZWYgPSB1c2VSZWY8VCB8IG51bGw+KG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG5cbmZ1bmN0aW9uIGlzUmVmT2JqZWN0KFxuICB2YWx1ZTogSFRNTEVsZW1lbnQgfCBSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPiB8IG51bGwgfCB1bmRlZmluZWRcbik6IHZhbHVlIGlzIFJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+IHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgJ2N1cnJlbnQnIGluIHZhbHVlO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIHNoYXJlZCBzdGF0ZSBhbmQgYSBwb3J0YWwgY29udGFpbmVyIGZvciB7QGxpbmsgQ29udGV4dENhcmRUcmlnZ2VyfVxuICogY29tcG9uZW50cy4gTXVzdCB3cmFwIGFueSB0cmVlIGNvbnRhaW5pbmcgdHJpZ2dlcnM7IG1hbmFnZXMgcG9zaXRpb25pbmcsXG4gKiB2aXNpYmlsaXR5IHRyYW5zaXRpb25zLCBhbmQgdGhlIGFuaW1hdGVkIGFycm93IHRpcCBhY3Jvc3MgYWxsIGNhcmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29udGV4dENhcmRQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICBwb3J0YWxUYXJnZXQsXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIC8qKiBDdXN0b20gY29udGFpbmVyIGZvciB0aGUgcG9ydGFsLiBBY2NlcHRzIGVpdGhlciBhbiBlbGVtZW50IG9yIGEgcmVmLiAqL1xuICBwb3J0YWxUYXJnZXQ/OiBIVE1MRWxlbWVudCB8IFJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+IHwgbnVsbDtcbn0pOiBSZWFjdE5vZGUge1xuICBjb25zdCBbaXNNb3VudGVkLCBzZXRJc01vdW50ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0SXNNb3VudGVkKHRydWUpLCBbXSk7XG4gIGNvbnN0IHJlc29sdmVkUG9ydGFsVGFyZ2V0ID0gaXNSZWZPYmplY3QocG9ydGFsVGFyZ2V0KVxuICAgID8gcG9ydGFsVGFyZ2V0LmN1cnJlbnRcbiAgICA6IHBvcnRhbFRhcmdldDtcbiAgY29uc3QgW3JlZiwgYm91bmRzXSA9IHVzZU1lYXN1cmUoKTtcbiAgY29uc3QgcG9ydGFsUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFthY3RpdmVDb250ZXh0Q2FyZCwgc2V0QWN0aXZlQ29udGV4dENhcmRdID1cbiAgICB1c2VTdGF0ZTxDb250ZXh0Q2FyZERhdGEgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaG92ZXJlZElkLCBzZXRIb3ZlcmVkSWRdID0gdXNlU3RhdGU8TnVsbFN0cmluZz4obnVsbCk7XG4gIGNvbnN0IGFjdGl2ZUlkID0gdXNlUmVmPE51bGxTdHJpbmc+KG51bGwpO1xuXG4gIGZ1bmN0aW9uIHNldEFjdGl2ZUlkKGlkOiBOdWxsU3RyaW5nKTogdm9pZCB7XG4gICAgYWN0aXZlSWQuY3VycmVudCA9IGlkO1xuICAgIHNldFZpc2libGUoaWQgIT09IG51bGwpO1xuICB9XG4gIGNvbnN0IHVwZGF0ZUFjdGl2ZUNvbnRleHRDYXJkID0gKHVwZGF0ZTogQ29udGV4dENhcmREYXRhIHwgbnVsbCk6IHZvaWQgPT4ge1xuICAgIGlmICh1cGRhdGU/LmlkICE9PSBhY3RpdmVJZC5jdXJyZW50ICYmIHVwZGF0ZSAhPT0gbnVsbCkgcmV0dXJuO1xuICAgIHNldEFjdGl2ZUNvbnRleHRDYXJkKHVwZGF0ZSk7XG4gIH07XG5cbiAgY29uc3QgQk9SREVSX1dJRFRIID0gMTtcblxuICBjb25zdCBhY3RpdmVCb3VuZHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWFjdGl2ZUNvbnRleHRDYXJkKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgc2lkZTogJ3RvcCcgYXMgU2lkZSxcbiAgICAgICAgYXJyb3dPZmZzZXQ6IHsgeDogMCwgeTogMCB9LFxuICAgICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IGFjdGl2ZUNvbnRleHRDYXJkLmNvbnRlbnRTaXplLndpZHRoICsgQk9SREVSX1dJRFRIICogMixcbiAgICAgIGhlaWdodDogYWN0aXZlQ29udGV4dENhcmQuY29udGVudFNpemUuaGVpZ2h0ICsgQk9SREVSX1dJRFRIICogMixcbiAgICAgIHg6IGFjdGl2ZUNvbnRleHRDYXJkLm9yaWdpbi54LFxuICAgICAgeTogYWN0aXZlQ29udGV4dENhcmQub3JpZ2luLnksXG4gICAgICBzaWRlOiBhY3RpdmVDb250ZXh0Q2FyZC5zaWRlLFxuICAgICAgYXJyb3dPZmZzZXQ6IGFjdGl2ZUNvbnRleHRDYXJkLmFycm93T2Zmc2V0LFxuICAgIH07XG4gIH0sIFthY3RpdmVDb250ZXh0Q2FyZF0pO1xuXG4gIGNvbnN0IGxhc3RCb3VuZHMgPSB1c2VQcmV2aW91cyhhY3RpdmVCb3VuZHMpO1xuICBjb25zdCBsYXN0SWQgPSB1c2VQcmV2aW91cyhhY3RpdmVJZC5jdXJyZW50KTtcblxuICBjb25zdCBwZXJjZW50T3ZlcmxhcEZyb21MYXN0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFsYXN0Qm91bmRzKSByZXR1cm4gMDtcblxuICAgIGNvbnN0IG92ZXJsYXBMZWZ0ID0gTWF0aC5tYXgoYWN0aXZlQm91bmRzLngsIGxhc3RCb3VuZHMueCk7XG4gICAgY29uc3Qgb3ZlcmxhcFJpZ2h0ID0gTWF0aC5taW4oXG4gICAgICBhY3RpdmVCb3VuZHMueCArIGFjdGl2ZUJvdW5kcy53aWR0aCxcbiAgICAgIGxhc3RCb3VuZHMueCArIGxhc3RCb3VuZHMud2lkdGhcbiAgICApO1xuICAgIGNvbnN0IG92ZXJsYXBUb3AgPSBNYXRoLm1heChhY3RpdmVCb3VuZHMueSwgbGFzdEJvdW5kcy55KTtcbiAgICBjb25zdCBvdmVybGFwQm90dG9tID0gTWF0aC5taW4oXG4gICAgICBhY3RpdmVCb3VuZHMueSArIGFjdGl2ZUJvdW5kcy5oZWlnaHQsXG4gICAgICBsYXN0Qm91bmRzLnkgKyBsYXN0Qm91bmRzLmhlaWdodFxuICAgICk7XG5cbiAgICBpZiAob3ZlcmxhcExlZnQgPCBvdmVybGFwUmlnaHQgJiYgb3ZlcmxhcFRvcCA8IG92ZXJsYXBCb3R0b20pIHtcbiAgICAgIGNvbnN0IG92ZXJsYXBBcmVhID1cbiAgICAgICAgKG92ZXJsYXBSaWdodCAtIG92ZXJsYXBMZWZ0KSAqIChvdmVybGFwQm90dG9tIC0gb3ZlcmxhcFRvcCk7XG5cbiAgICAgIGNvbnN0IGFjdGl2ZUJvdW5kc0FyZWEgPSBhY3RpdmVCb3VuZHMud2lkdGggKiBhY3RpdmVCb3VuZHMuaGVpZ2h0O1xuXG4gICAgICBpZiAoYWN0aXZlQm91bmRzQXJlYSA9PT0gMCkgcmV0dXJuIDA7XG5cbiAgICAgIHJldHVybiAob3ZlcmxhcEFyZWEgLyBhY3RpdmVCb3VuZHNBcmVhKSAqIDEwMDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfSwgW2FjdGl2ZUJvdW5kcywgbGFzdEJvdW5kc10pO1xuXG4gIGNvbnN0IGRpc3RhbmNlRnJvbUxhc3QgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBNYXRoLnNxcnQoXG4gICAgICAgICgobGFzdEJvdW5kcz8ueCA/PyAwKSAtIGFjdGl2ZUJvdW5kcy54KSAqKiAyICtcbiAgICAgICAgICAoKGxhc3RCb3VuZHM/LnkgPz8gMCkgLSBhY3RpdmVCb3VuZHMueSkgKiogMlxuICAgICAgKSxcbiAgICBbYWN0aXZlQm91bmRzLngsIGFjdGl2ZUJvdW5kcy55LCBsYXN0Qm91bmRzPy54LCBsYXN0Qm91bmRzPy55XVxuICApO1xuXG4gIGNvbnN0IGxhc3RPcmlnaW4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWxhc3RCb3VuZHMpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICB4OiBsYXN0Qm91bmRzLnggLSBhY3RpdmVCb3VuZHMueCxcbiAgICAgIHk6IGxhc3RCb3VuZHMueSAtIGFjdGl2ZUJvdW5kcy55LFxuICAgIH07XG4gIH0sIFthY3RpdmVCb3VuZHMsIGxhc3RCb3VuZHNdKTtcblxuICBjb25zdCBbaXNTY3JvbGxpbmcsIHNldElzU2Nyb2xsaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc2tpcFRyYW5zaXRpb24gPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBkaXN0YW5jZUZyb21MYXN0ID4gTUFYX1RSQU5TSVRJT05fRElTVEFOQ0VfUFggfHxcbiAgICAgIHBlcmNlbnRPdmVybGFwRnJvbUxhc3QgPiBNQVhfT1ZFUkxBUF9GT1JfVFJBTlNJVElPTl9QRVJDRU5UIHx8XG4gICAgICBsYXN0SWQgPT09IG51bGwgfHxcbiAgICAgIGlzU2Nyb2xsaW5nLFxuICAgIFtkaXN0YW5jZUZyb21MYXN0LCBpc1Njcm9sbGluZywgbGFzdElkLCBwZXJjZW50T3ZlcmxhcEZyb21MYXN0XVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGlzU2Nyb2xsaW5nVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGlzU2Nyb2xsaW5nVGltZW91dCkgd2luZG93LmNsZWFyVGltZW91dChpc1Njcm9sbGluZ1RpbWVvdXQpO1xuXG4gICAgICBpc1Njcm9sbGluZ1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0SXNTY3JvbGxpbmcoZmFsc2UpO1xuICAgICAgfSwgNjYpO1xuXG4gICAgICBpZiAoIWlzU2Nyb2xsaW5nKSB7XG4gICAgICAgIHNldElzU2Nyb2xsaW5nKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwsIHRydWUpO1xuICAgIH07XG4gIH0sIFtpc1Njcm9sbGluZ10pO1xuXG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHVwZGF0ZUFjdGl2ZUNvbnRleHRDYXJkLFxuICAgICAgcm9vdE9yaWdpbjogeyAuLi5hY3RpdmVCb3VuZHMgfSxcbiAgICAgIHJvb3RCb3VuZHM6IGJvdW5kcyxcbiAgICAgIHBvcnRhbFJlZixcbiAgICAgIHNldEFjdGl2ZUlkLFxuICAgICAgYWN0aXZlSWQsXG4gICAgICBzZXRIb3ZlcmVkSWQsXG4gICAgICBob3ZlcmVkSWQsXG4gICAgICBza2lwVHJhbnNpdGlvbixcbiAgICAgIHJvb3RWaXNpYmxlOiB2aXNpYmxlLFxuICAgICAgZGlzdGFuY2VGcm9tTGFzdCxcbiAgICAgIGxhc3RPcmlnaW4sXG4gICAgICBpc1Byb3ZpZGVkOiB0cnVlLFxuICAgIH0pLFxuICAgIFtcbiAgICAgIGFjdGl2ZUJvdW5kcyxcbiAgICAgIGJvdW5kcyxcbiAgICAgIGhvdmVyZWRJZCxcbiAgICAgIHNraXBUcmFuc2l0aW9uLFxuICAgICAgdmlzaWJsZSxcbiAgICAgIGRpc3RhbmNlRnJvbUxhc3QsXG4gICAgICBsYXN0T3JpZ2luLFxuICAgIF1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0Q2FyZENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRWYWx1ZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICB7aXNNb3VudGVkXG4gICAgICAgID8gY3JlYXRlUG9ydGFsKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIGluc2V0LTAgZml4ZWQgcG9pbnRlci1ldmVudHMtbm9uZSB6LVsxMDAwMDBdXCJcbiAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtaW4tdy1tYXggdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTUwIGVhc2UtW2Vhc2luZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4zLF8wLjU3LF8wLjA3LF8wLjk1KV0gd2lsbC1jaGFuZ2UtW3RyYW5zZm9ybSx3aWR0aCxoZWlnaHRdIG1vdGlvbi1yZWR1Y2U6IXRyYW5zaXRpb24tbm9uZVwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IHZpc2libGUgPyAxIDogMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgJ2Fic29sdXRlIGJnLWJhY2tncm91bmQtMTAwIGJnLWNsaXAtcGFkZGluZyByb3VuZGVkLVs2cHhdIG92ZXJmbG93LXZpc2libGUgcG9pbnRlci1ldmVudHMtbm9uZSB6LVsxMDAwMDAwXSBzaGFkb3ctW3ZhcigtLWRzLXNoYWRvdy10b29sdGlwKSwwXzBfMF8xcHhfdmFyKC0tZHMtYmFja2dyb3VuZC0xMDApXSB3LWZpdCBbLS1jb250ZXh0LWNhcmQtdGlwLXN0cm9rZTojREJEQkRCXSBkYXJrLXRoZW1lOlstLWNvbnRleHQtY2FyZC10aXAtc3Ryb2tlOiMyNTI1MjVdJyxcbiAgICAgICAgICAgICAgICAgICAgc2tpcFRyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/ICchdHJhbnNpdGlvbi1ub25lJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ3RyYW5zaXRpb24tW3RyYW5zZm9ybSx3aWR0aCxoZWlnaHRdIGR1cmF0aW9uLTI1MCBlYXNlLVtlYXNpbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMjksMC4zMSwwLjA1LDAuOTYpXSB3aWxsLWNoYW5nZS1bdHJhbnNmb3JtLHdpZHRoLGhlaWdodF0gbW90aW9uLXJlZHVjZTohdHJhbnNpdGlvbi1ub25lJ1xuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIGRhdGEtc2tpcC10cmFuc2l0aW9uPXtza2lwVHJhbnNpdGlvbn1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZSgke2FjdGl2ZUJvdW5kcy54fXB4LCR7YWN0aXZlQm91bmRzLnl9cHgpYCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGFjdGl2ZUJvdW5kcy53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhY3RpdmVCb3VuZHMuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgJ3ctWzE0cHhdIGgtWzdweF0gYWJzb2x1dGUgZ3JpZCBwbGFjZS1jb250ZW50LWNlbnRlciB6LVs5OTk5OTk5OTldIG9yaWdpbi1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtZnVsbCAtdHJhbnNsYXRlLXgtMS8yIHJvdGF0ZS0wJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQm91bmRzLnNpZGUgPT09ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0LWZ1bGwgLXRyYW5zbGF0ZS15LTEvMiByb3RhdGUtOTAgLW1yLVszLjVweF0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVCb3VuZHMuc2lkZSA9PT0gJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tZnVsbCAtdHJhbnNsYXRlLXgtMS8yIHJvdGF0ZS0xODAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVCb3VuZHMuc2lkZSA9PT0gJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGVmdC1mdWxsIC10cmFuc2xhdGUteS0xLzIgcm90YXRlLVsyNzBkZWddIC1tbC1bMy41cHhdJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQm91bmRzLnNpZGUgPT09ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHNraXBUcmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICchdHJhbnNpdGlvbi1ub25lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAndHJhbnNpdGlvbi1bdHJhbnNmb3JtLHdpZHRoLGhlaWdodF0gZHVyYXRpb24tMjUwIGVhc2UtW2Vhc2luZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4yOSwwLjMxLDAuMDUsMC45NildIHdpbGwtY2hhbmdlLVt0cmFuc2Zvcm0sd2lkdGgsaGVpZ2h0XSBtb3Rpb24tcmVkdWNlOiF0cmFuc2l0aW9uLW5vbmUnXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uKGFjdGl2ZUJvdW5kcy5zaWRlID09PSAndG9wJyB8fFxuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUJvdW5kcy5zaWRlID09PSAnYm90dG9tJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogYGNhbGMoNTAlICsgJHthY3RpdmVCb3VuZHMuYXJyb3dPZmZzZXQueH1weClgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGBjYWxjKDUwJSArICR7YWN0aXZlQm91bmRzLmFycm93T2Zmc2V0Lnl9cHgpYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtc2tpcC10cmFuc2l0aW9uPXtza2lwVHJhbnNpdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS1zaWRlPXthY3RpdmVCb3VuZHMuc2lkZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTRcIlxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjdcIlxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTQgN1wiXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwUGF0aD1cInVybCgjY29udGV4dC1jYXJkLXRpcC1jbGlwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAtMC41VjAuNUgxMi45ODM0TDEyLjgxODQgMC41MDg3ODlDMTIuNDM3NyAwLjU1MDgyMiAxMi4wODUzIDAuNzM4MDU2IDExLjgzNTkgMS4wMzQxOEw4LjUzMDI3IDQuOTU5OTZDNy43MzExNCA1LjkwODkzIDYuMjY4ODYgNS45MDg5MiA1LjQ2OTczIDQuOTU5OTZMMi4xNjQwNiAxLjAzNDE4QzEuODc5MDUgMC42OTU3MzMgMS40NTkwNyAwLjUgMS4wMTY2IDAuNUgtMVYtMC41SDE1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ2YXIoLS1kcy1iYWNrZ3JvdW5kLTEwMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICd2YXIoLS1kcy1iYWNrZ3JvdW5kLTEwMCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ3ZhcigtLWNvbnRleHQtY2FyZC10aXAtc3Ryb2tlKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlT3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY29udGV4dC1jYXJkLXRpcC1jbGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBmaWxsOiAnd2hpdGUnLCBmaWxsT3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17cG9ydGFsUmVmfSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PixcbiAgICAgICAgICAgIHJlc29sdmVkUG9ydGFsVGFyZ2V0ID8/IGRvY3VtZW50LmJvZHlcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbH1cbiAgICA8L0NvbnRleHRDYXJkQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cblxuZXhwb3J0IHR5cGUgU2lkZSA9ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xuZXhwb3J0IHR5cGUgQWxpZ24gPSAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJztcblxuLyoqIFByb3BzIGZvciB0aGUge0BsaW5rIENvbnRleHRDYXJkVHJpZ2dlcn0gY29tcG9uZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0Q2FyZFRyaWdnZXJQcm9wc1xuICBleHRlbmRzIE9taXQ8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCAnY29udGVudCc+IHtcbiAgLyoqIFRoZSBjb250ZW50IHJlbmRlcmVkIGluc2lkZSB0aGUgY29udGV4dCBjYXJkIHBvcHVwLiAqL1xuICBjb250ZW50OiBSZWFjdE5vZGU7XG4gIC8qKiBXaGljaCBzaWRlIG9mIHRoZSB0cmlnZ2VyIHRvIGRpc3BsYXkgdGhlIGNhcmQuIERlZmF1bHRzIHRvIGBcInJpZ2h0XCJgLiAqL1xuICBzaWRlPzogU2lkZTtcbiAgLyoqIEFsaWdubWVudCBvZiB0aGUgY2FyZCByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlci4gRGVmYXVsdHMgdG8gYFwiY2VudGVyXCJgLiAqL1xuICBhbGlnbj86IEFsaWduO1xuICAvKiogRGlzdGFuY2UgaW4gcGl4ZWxzIGJldHdlZW4gdGhlIHRyaWdnZXIgYW5kIHRoZSBjYXJkLiBEZWZhdWx0cyB0byBgMTZgLiAqL1xuICBzaWRlT2Zmc2V0PzogbnVtYmVyO1xuICAvKiogT2Zmc2V0IGluIHBpeGVscyBhbG9uZyB0aGUgYWxpZ25tZW50IGF4aXMuIERlZmF1bHRzIHRvIGAwYC4gKi9cbiAgYWxpZ25PZmZzZXQ/OiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRvIGRpc2FibGUgcG9pbnRlciBldmVudHMgb24gdGhlIGNhcmQgY29udGVudC4gKi9cbiAgaWdub3JlQ2FyZFBvaW50ZXJFdmVudHM/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byByZW1vdmUgZGVmYXVsdCBwYWRkaW5nIGZyb20gdGhlIGNhcmQgY29udGVudC4gKi9cbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIHRyaWdnZXIgdXNlcyB0aGUgU2xvdCBwYXR0ZXJuIHRvIG1lcmdlIHByb3BzIG9udG8gaXRzIGNoaWxkLiAqL1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgLyoqIENhbiBiZSB1c2VkIHRvIGhpZGUgdGhlIGNhcmQgd2hlbiBuZWVkZWQuICovXG4gIGhpZGU/OiBib29sZWFuO1xuICAvKiogVGltZSBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSBjYXJkIGlzIGRpc21pc3NlZCBhZnRlciBtb3VzZSBsZWF2ZXMuICovXG4gIGluYWN0aXZlVGltZW91dE1zPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIERpc3BsYXlzIGEgZmxvYXRpbmcgY29udGV4dCBjYXJkIG9uIGhvdmVyIHdpdGggdmlld3BvcnQtYXdhcmUgY29sbGlzaW9uXG4gKiBkZXRlY3Rpb24gYW5kIGFuaW1hdGVkIHBvc2l0aW9uIHRyYW5zaXRpb25zIGJldHdlZW4gdHJpZ2dlcnMgaW4gdGhlIHNhbWVcbiAqIHtAbGluayBDb250ZXh0Q2FyZFByb3ZpZGVyfS4gUGVyc2lzdHMgYnJpZWZseSBhZnRlciBtb3VzZSBsZWF2ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbnRleHRDYXJkVHJpZ2dlcih7XG4gIGNvbnRlbnQsXG4gIGNoaWxkcmVuLFxuICBzaWRlID0gJ3JpZ2h0JyxcbiAgYWxpZ24gPSAnY2VudGVyJyxcbiAgc2lkZU9mZnNldCA9IDE2LFxuICBhbGlnbk9mZnNldCA9IDAsXG4gIGlnbm9yZUNhcmRQb2ludGVyRXZlbnRzID0gZmFsc2UsXG4gIG5vUGFkZGluZyxcbiAgYXNDaGlsZCxcbiAgY2xhc3NOYW1lLFxuICBoaWRlLFxuICBpbmFjdGl2ZVRpbWVvdXRNcyA9IElOQUNUSVZFX1RJTUVPVVRfTVMsXG59OiBDb250ZXh0Q2FyZFRyaWdnZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgdHJpZ2dlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbY29udGVudE1lYXN1cmVSZWYsIGNvbnRlbnRNZWFzdXJlQm91bmRzXSA9IHVzZU1lYXN1cmUoKTtcbiAgY29uc3Qge1xuICAgIHBvcnRhbFJlZixcbiAgICB1cGRhdGVBY3RpdmVDb250ZXh0Q2FyZCxcbiAgICBhY3RpdmVJZCxcbiAgICBzZXRBY3RpdmVJZCxcbiAgICBob3ZlcmVkSWQsXG4gICAgc2V0SG92ZXJlZElkLFxuICAgIHNraXBUcmFuc2l0aW9uLFxuICAgIHJvb3RWaXNpYmxlLFxuICB9ID0gdXNlQ29udGV4dChDb250ZXh0Q2FyZENvbnRleHQpO1xuICBjb25zdCBpZCA9IHVzZUlkKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gT25seSBjbGVhciB0aGUgc2hhcmVkIGFjdGl2ZSBjYXJkIGlmIHRoaXMgdHJpZ2dlciB3YXMgdGhlIGFjdGl2ZSBvbmU7XG4gICAgICAvLyBvdGhlcndpc2UgYW4gdW5tb3VudGluZyBpbmFjdGl2ZSB0cmlnZ2VyIHdvdWxkIGhpZGUgYW5vdGhlciB0cmlnZ2VyJ3MgY2FyZC5cbiAgICAgIGlmIChhY3RpdmVJZC5jdXJyZW50ID09PSBpZCkge1xuICAgICAgICBzZXRBY3RpdmVJZChudWxsKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgY29uc3QgcmVkdWNlTW90aW9uID0gdXNlUmVkdWNlZE1vdGlvbigpO1xuXG4gIGNvbnN0IFtsb2NhbEhvdmVyLCBzZXRMb2NhbEhvdmVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3BlcnNpc3RpbmcsIHNldFBlcnNpc3RpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgYWN0aXZlVGltZW91dCA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCBwZXJzaXN0aW5nVGltZW91dCA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCBvcGVuVGltZW91dCA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgbG9jYWxIb3ZlciAmJlxuICAgICAgY29udGVudE1lYXN1cmVCb3VuZHMud2lkdGggPiAwICYmXG4gICAgICBjb250ZW50TWVhc3VyZUJvdW5kcy5oZWlnaHQgPiAwXG4gICAgKSB7XG4gICAgICBpZiAob3BlblRpbWVvdXQuY3VycmVudCkgY2xlYXJUaW1lb3V0KG9wZW5UaW1lb3V0LmN1cnJlbnQpO1xuICAgICAgb3BlblRpbWVvdXQuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBzZXRBY3RpdmVJZChpZCk7XG4gICAgICAgICAgdXBkYXRlQm91bmRzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RWaXNpYmxlID8gMCA6IE9QRU5fREVMQVlfTVNcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAob3BlblRpbWVvdXQuY3VycmVudCkgY2xlYXJUaW1lb3V0KG9wZW5UaW1lb3V0LmN1cnJlbnQpO1xuICAgIH07XG4gIH0sIFtsb2NhbEhvdmVyLCBjb250ZW50TWVhc3VyZUJvdW5kc10pO1xuXG4gIGNvbnN0IGVudGVyVGltZW91dCA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVudGVyVGltZW91dC5jdXJyZW50KSBjbGVhclRpbWVvdXQoZW50ZXJUaW1lb3V0LmN1cnJlbnQpO1xuICAgIGlmIChob3ZlcmVkSWQgIT09IGlkKSB7XG4gICAgICAvLyBFeGl0cyBhcmUgaW5zdGFudFxuICAgICAgc2V0VmlzaWJsZShmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVudGVycyBjYW4gYmUgZGVsYXllZCB1bmxlc3Mgd2Ugd2lzaCB0byBzY3JpcHQgdGhlIHRyYW5zaXRpb25cbiAgICAgIGVudGVyVGltZW91dC5jdXJyZW50ID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHNldFZpc2libGUodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlZHVjZU1vdGlvbiB8fCBza2lwVHJhbnNpdGlvbiA/IDAgOiBFTlRFUl9ERUxBWV9NU1xuICAgICAgKTtcbiAgICB9XG4gIH0sIFtob3ZlcmVkSWQsIGlkLCByZWR1Y2VNb3Rpb24sIHNraXBUcmFuc2l0aW9uXSk7XG5cbiAgZnVuY3Rpb24gdXBkYXRlQm91bmRzKCk6IHZvaWQge1xuICAgIGlmICghY29udGVudFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgY29uc3QgYm91bmRzID0gY29tcHV0ZUJvdW5kcygpO1xuICAgIHVwZGF0ZUFjdGl2ZUNvbnRleHRDYXJkKHsgaWQsIC4uLmJvdW5kcyB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVCb3VuZHMoc2lkZU92ZXJyaWRlPzogU2lkZSk6IHtcbiAgICBvcmlnaW46IFBvaW50O1xuICAgIGNvbnRlbnRTaXplOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH07XG4gICAgc2lkZTogU2lkZTtcbiAgICBhcnJvd09mZnNldDogUG9pbnQ7XG4gIH0ge1xuICAgIGlmICghdHJpZ2dlclJlZi5jdXJyZW50KSB0aHJvdyBuZXcgRXJyb3IoJ1RyaWdnZXIgbm90IGZvdW5kJyk7XG4gICAgaWYgKCFjb250ZW50UmVmLmN1cnJlbnQpIHRocm93IG5ldyBFcnJvcignQ29udGVudCBub3QgZm91bmQnKTtcbiAgICBjb25zdCBhcHBsaWVkU2lkZSA9IHNpZGVPdmVycmlkZSA/PyBzaWRlO1xuICAgIGNvbnN0IHRyaWdnZXJSZWN0ID0gdHJpZ2dlclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWN0ID0gY29udGVudFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnRlbnRSZWYuY3VycmVudC5zdHlsZS53aWR0aCA9ICdtYXgtY29udGVudCc7XG4gICAgY29udGVudFJlZi5jdXJyZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBjb25zdCBjb250ZW50U2l6ZSA9IHtcbiAgICAgIHdpZHRoOiBNYXRoLm1heChjb250ZW50UmVjdC53aWR0aCwgY29udGVudFJlZi5jdXJyZW50Lm9mZnNldFdpZHRoKSxcbiAgICAgIGhlaWdodDogY29udGVudFJlY3QuaGVpZ2h0LFxuICAgIH07XG5cbiAgICBsZXQgb3JpZ2luOiBQb2ludDtcblxuICAgIGNvbnN0IGFycm93V2lkdGggPSAxNDtcbiAgICBjb25zdCBoYWxmQXJyb3dXaWR0aCA9IGFycm93V2lkdGggLyAyO1xuICAgIGNvbnN0IGhhbGZUcmlnZ2VyV2lkdGggPSB0cmlnZ2VyUmVjdC53aWR0aCAvIDI7XG4gICAgY29uc3QgaGFsZlRyaWdnZXJIZWlnaHQgPSB0cmlnZ2VyUmVjdC5oZWlnaHQgLyAyO1xuICAgIGNvbnN0IGhhbGZDb250ZW50V2lkdGggPSBjb250ZW50U2l6ZS53aWR0aCAvIDI7XG4gICAgY29uc3QgaGFsZkNvbnRlbnRIZWlnaHQgPSBjb250ZW50U2l6ZS5oZWlnaHQgLyAyO1xuXG4gICAgY29uc3QgdG9wID0gdHJpZ2dlclJlY3QudG9wO1xuICAgIGNvbnN0IGxlZnQgPSB0cmlnZ2VyUmVjdC5sZWZ0O1xuXG4gICAgbGV0IGFsaWduWCA9IGxlZnQgKyBoYWxmVHJpZ2dlcldpZHRoIC0gaGFsZkNvbnRlbnRXaWR0aCArIGFsaWduT2Zmc2V0O1xuICAgIGlmIChhbGlnbiA9PT0gJ3N0YXJ0JykgYWxpZ25YID0gbGVmdCArIGFsaWduT2Zmc2V0O1xuICAgIGlmIChhbGlnbiA9PT0gJ2VuZCcpXG4gICAgICBhbGlnblggPSBsZWZ0ICsgdHJpZ2dlclJlY3Qud2lkdGggLSBjb250ZW50UmVjdC53aWR0aCArIGFsaWduT2Zmc2V0O1xuXG4gICAgbGV0IGFsaWduWSA9IHRvcCArIGhhbGZUcmlnZ2VySGVpZ2h0IC0gaGFsZkNvbnRlbnRIZWlnaHQgKyBhbGlnbk9mZnNldDtcbiAgICBpZiAoYWxpZ24gPT09ICdzdGFydCcpIGFsaWduWSA9IHRvcCArIGFsaWduT2Zmc2V0O1xuICAgIGlmIChhbGlnbiA9PT0gJ2VuZCcpXG4gICAgICBhbGlnblkgPSB0b3AgKyB0cmlnZ2VyUmVjdC5oZWlnaHQgLSBjb250ZW50UmVjdC5oZWlnaHQgKyBhbGlnbk9mZnNldDtcblxuICAgIHN3aXRjaCAoYXBwbGllZFNpZGUpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIG9yaWdpbiA9IHtcbiAgICAgICAgICB4OiBhbGlnblgsXG4gICAgICAgICAgeTogdG9wIC0gY29udGVudFJlY3QuaGVpZ2h0IC0gc2lkZU9mZnNldCxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIG9yaWdpbiA9IHtcbiAgICAgICAgICB4OiBsZWZ0ICsgdHJpZ2dlclJlY3Qud2lkdGggKyBzaWRlT2Zmc2V0LFxuICAgICAgICAgIHk6IGFsaWduWSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBvcmlnaW4gPSB7XG4gICAgICAgICAgeDogYWxpZ25YLFxuICAgICAgICAgIHk6IHRvcCArIHRyaWdnZXJSZWN0LmhlaWdodCArIHNpZGVPZmZzZXQsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIG9yaWdpbiA9IHtcbiAgICAgICAgICB4OiBsZWZ0IC0gY29udGVudFJlY3Qud2lkdGggLSBzaWRlT2Zmc2V0LFxuICAgICAgICAgIHk6IGFsaWduWSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IGFwcGxpZWRTaWRlO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2lkZTogJHtTdHJpbmcoX2V4aGF1c3RpdmUpfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXG4gICAgY29uc3QgaXNPZmZzY3JlZW5MZWZ0ID0gb3JpZ2luLnggPCAwO1xuICAgIGNvbnN0IGlzT2Zmc2NyZWVuUmlnaHQgPSBvcmlnaW4ueCArIGNvbnRlbnRSZWN0LndpZHRoID4gdmlld3BvcnRXaWR0aDtcbiAgICBjb25zdCBpc09mZnNjcmVlblRvcCA9IG9yaWdpbi55IDwgMDtcbiAgICBjb25zdCBpc09mZnNjcmVlbkJvdHRvbSA9IG9yaWdpbi55ICsgY29udGVudFJlY3QuaGVpZ2h0ID4gdmlld3BvcnRIZWlnaHQ7XG5cbiAgICBpZiAoIXNpZGVPdmVycmlkZSkge1xuICAgICAgY29uc3Qgc3BhY2VBYm92ZSA9IHRvcDtcbiAgICAgIGNvbnN0IHNwYWNlQmVsb3cgPSB2aWV3cG9ydEhlaWdodCAtICh0b3AgKyB0cmlnZ2VyUmVjdC5oZWlnaHQpO1xuICAgICAgY29uc3Qgc3BhY2VMZWZ0ID0gbGVmdDtcbiAgICAgIGNvbnN0IHNwYWNlUmlnaHQgPSB2aWV3cG9ydFdpZHRoIC0gKGxlZnQgKyB0cmlnZ2VyUmVjdC53aWR0aCk7XG5cbiAgICAgIGlmIChzaWRlID09PSAndG9wJyAmJiBpc09mZnNjcmVlblRvcCAmJiBzcGFjZUJlbG93ID4gc3BhY2VBYm92ZSkge1xuICAgICAgICByZXR1cm4gY29tcHV0ZUJvdW5kcygnYm90dG9tJyk7XG4gICAgICB9XG4gICAgICBpZiAoc2lkZSA9PT0gJ2JvdHRvbScgJiYgaXNPZmZzY3JlZW5Cb3R0b20gJiYgc3BhY2VBYm92ZSA+IHNwYWNlQmVsb3cpIHtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVCb3VuZHMoJ3RvcCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2lkZSA9PT0gJ3JpZ2h0JyAmJiBpc09mZnNjcmVlblJpZ2h0ICYmIHNwYWNlTGVmdCA+IHNwYWNlUmlnaHQpIHtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVCb3VuZHMoJ2xlZnQnKTtcbiAgICAgIH1cbiAgICAgIGlmIChzaWRlID09PSAnbGVmdCcgJiYgaXNPZmZzY3JlZW5MZWZ0ICYmIHNwYWNlUmlnaHQgPiBzcGFjZUxlZnQpIHtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVCb3VuZHMoJ3JpZ2h0Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSAmJlxuICAgICAgICBpc09mZnNjcmVlbkxlZnQgJiZcbiAgICAgICAgc3BhY2VSaWdodCA+IGNvbnRlbnRSZWN0LndpZHRoXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVCb3VuZHMoJ3JpZ2h0Jyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykgJiZcbiAgICAgICAgaXNPZmZzY3JlZW5SaWdodCAmJlxuICAgICAgICBzcGFjZUxlZnQgPiBjb250ZW50UmVjdC53aWR0aFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBjb21wdXRlQm91bmRzKCdsZWZ0Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKHNpZGUgPT09ICdsZWZ0JyB8fCBzaWRlID09PSAncmlnaHQnKSAmJlxuICAgICAgICBpc09mZnNjcmVlblRvcCAmJlxuICAgICAgICBzcGFjZUJlbG93ID4gY29udGVudFJlY3QuaGVpZ2h0XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVCb3VuZHMoJ2JvdHRvbScpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAoc2lkZSA9PT0gJ2xlZnQnIHx8IHNpZGUgPT09ICdyaWdodCcpICYmXG4gICAgICAgIGlzT2Zmc2NyZWVuQm90dG9tICYmXG4gICAgICAgIHNwYWNlQWJvdmUgPiBjb250ZW50UmVjdC5oZWlnaHRcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gY29tcHV0ZUJvdW5kcygndG9wJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgdmlld3BvcnRQYWRkaW5nID0gODtcbiAgICBpZiAoYXBwbGllZFNpZGUgPT09ICdsZWZ0JyB8fCBhcHBsaWVkU2lkZSA9PT0gJ3JpZ2h0Jykge1xuICAgICAgb3JpZ2luLnkgPSBNYXRoLm1heChcbiAgICAgICAgdmlld3BvcnRQYWRkaW5nLFxuICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICBvcmlnaW4ueSxcbiAgICAgICAgICB2aWV3cG9ydEhlaWdodCAtIGNvbnRlbnRTaXplLmhlaWdodCAtIHZpZXdwb3J0UGFkZGluZ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcmlnaW4ueCA9IE1hdGgubWF4KFxuICAgICAgICB2aWV3cG9ydFBhZGRpbmcsXG4gICAgICAgIE1hdGgubWluKG9yaWdpbi54LCB2aWV3cG9ydFdpZHRoIC0gY29udGVudFNpemUud2lkdGggLSB2aWV3cG9ydFBhZGRpbmcpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEFsd2F5cyBjb25zdHJhaW4gWSBwb3NpdGlvbiB3aXRoaW4gdmlld3BvcnQgYm91bmRzXG4gICAgb3JpZ2luLnkgPSBNYXRoLm1heChcbiAgICAgIHZpZXdwb3J0UGFkZGluZyxcbiAgICAgIE1hdGgubWluKG9yaWdpbi55LCB2aWV3cG9ydEhlaWdodCAtIGNvbnRlbnRTaXplLmhlaWdodCAtIHZpZXdwb3J0UGFkZGluZylcbiAgICApO1xuXG4gICAgY29uc3QgdHJpZ2dlckNlbnRlclggPSBsZWZ0ICsgaGFsZlRyaWdnZXJXaWR0aDtcbiAgICBjb25zdCB0cmlnZ2VyQ2VudGVyWSA9IHRvcCArIGhhbGZUcmlnZ2VySGVpZ2h0O1xuICAgIGNvbnN0IGNhcmRDZW50ZXJYID0gb3JpZ2luLnggKyBjb250ZW50U2l6ZS53aWR0aCAvIDI7XG4gICAgY29uc3QgY2FyZENlbnRlclkgPSBvcmlnaW4ueSArIGNvbnRlbnRTaXplLmhlaWdodCAvIDI7XG5cbiAgICBsZXQgYXJyb3dPZmZzZXRYID0gdHJpZ2dlckNlbnRlclggLSBjYXJkQ2VudGVyWDtcbiAgICBsZXQgYXJyb3dPZmZzZXRZID0gdHJpZ2dlckNlbnRlclkgLSBjYXJkQ2VudGVyWTtcblxuICAgIC8vIENsYW1wIGFycm93IG9mZnNldCB0byBlbnN1cmUgaXQgc3RheXMgd2l0aGluIGNhcmQgYm91bmRhcmllcy5cbiAgICAvLyBBcnJvdyBzaG91bGQgYmUgYXQgbGVhc3QgaGFsZkFycm93V2lkdGggKDdweCkgZnJvbSB0aGUgY2FyZCBlZGdlcy5cbiAgICBjb25zdCBtYXhBcnJvd09mZnNldFggPSBoYWxmQ29udGVudFdpZHRoIC0gaGFsZkFycm93V2lkdGg7XG4gICAgY29uc3QgbWF4QXJyb3dPZmZzZXRZID0gaGFsZkNvbnRlbnRIZWlnaHQgLSBoYWxmQXJyb3dXaWR0aDtcblxuICAgIGlmIChhcHBsaWVkU2lkZSA9PT0gJ3RvcCcgfHwgYXBwbGllZFNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICBhcnJvd09mZnNldFggPSBNYXRoLm1heChcbiAgICAgICAgLW1heEFycm93T2Zmc2V0WCxcbiAgICAgICAgTWF0aC5taW4oYXJyb3dPZmZzZXRYLCBtYXhBcnJvd09mZnNldFgpXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcHBsaWVkU2lkZSA9PT0gJ2xlZnQnIHx8IGFwcGxpZWRTaWRlID09PSAncmlnaHQnKSB7XG4gICAgICBhcnJvd09mZnNldFkgPSBNYXRoLm1heChcbiAgICAgICAgLW1heEFycm93T2Zmc2V0WSxcbiAgICAgICAgTWF0aC5taW4oYXJyb3dPZmZzZXRZLCBtYXhBcnJvd09mZnNldFkpXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGFycm93T2Zmc2V0ID0ge1xuICAgICAgeDogYXJyb3dPZmZzZXRYLFxuICAgICAgeTogYXJyb3dPZmZzZXRZLFxuICAgIH07XG5cbiAgICByZXR1cm4geyBvcmlnaW4sIGNvbnRlbnRTaXplLCBzaWRlOiBhcHBsaWVkU2lkZSwgYXJyb3dPZmZzZXQgfTtcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlQm91bmRzLCB0cnVlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlQm91bmRzKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlQm91bmRzLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGVCb3VuZHMpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICBmdW5jdGlvbiByZXNldERlc3RydWN0aXZlVGltZW91dHMoKTogdm9pZCB7XG4gICAgaWYgKGFjdGl2ZVRpbWVvdXQuY3VycmVudCkgY2xlYXJUaW1lb3V0KGFjdGl2ZVRpbWVvdXQuY3VycmVudCk7XG4gICAgaWYgKHBlcnNpc3RpbmdUaW1lb3V0LmN1cnJlbnQpIGNsZWFyVGltZW91dChwZXJzaXN0aW5nVGltZW91dC5jdXJyZW50KTtcbiAgICBpZiAob3BlblRpbWVvdXQuY3VycmVudCkgY2xlYXJUaW1lb3V0KG9wZW5UaW1lb3V0LmN1cnJlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gYXR0ZW1wdERlYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgaWYgKGFjdGl2ZVRpbWVvdXQuY3VycmVudCkgY2xlYXJUaW1lb3V0KGFjdGl2ZVRpbWVvdXQuY3VycmVudCk7XG4gICAgYWN0aXZlVGltZW91dC5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoYWN0aXZlSWQuY3VycmVudCAhPT0gaWQpIHJldHVybjtcbiAgICAgIHNldEFjdGl2ZUlkKG51bGwpO1xuICAgIH0sIGluYWN0aXZlVGltZW91dE1zKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGF0dGVtcHRQZXJzaXN0KCk6IHZvaWQge1xuICAgIHNldFBlcnNpc3RpbmcodHJ1ZSk7XG4gICAgaWYgKHBlcnNpc3RpbmdUaW1lb3V0LmN1cnJlbnQpIGNsZWFyVGltZW91dChwZXJzaXN0aW5nVGltZW91dC5jdXJyZW50KTtcbiAgICBwZXJzaXN0aW5nVGltZW91dC5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRQZXJzaXN0aW5nKGZhbHNlKTtcbiAgICB9LCBQRVJTSVNUX1RJTUVPVVRfTVMpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25Nb3VzZUVudGVyKCk6IHZvaWQge1xuICAgIHJlc2V0RGVzdHJ1Y3RpdmVUaW1lb3V0cygpO1xuICAgIHNldEhvdmVyZWRJZChpZCk7XG4gICAgc2V0TG9jYWxIb3Zlcih0cnVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICBzZXRMb2NhbEhvdmVyKGZhbHNlKTtcbiAgICBhdHRlbXB0RGVhY3RpdmF0ZSgpO1xuICAgIGF0dGVtcHRQZXJzaXN0KCk7XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGNsb3NlIGluc3RhbnRseVxuICAgIGlmIChoaWRlKSB7XG4gICAgICBzZXRMb2NhbEhvdmVyKGZhbHNlKTtcbiAgICAgIHNldEFjdGl2ZUlkKG51bGwpO1xuICAgIH1cbiAgfSwgW2hpZGUsIHNldEFjdGl2ZUlkXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZTogUmVhY3QuTW91c2VFdmVudCk6IHZvaWQge1xuICAgIC8vIENsb3NlIGlmIGNsaWNraW5nIGEgbGluay4gV2UgYXNzdW1lIHdlIHdhbnQgdGhlIGNhcmQgdG8gZGlzYXBwZWFyIGlmIG5hdmlnYXRpbmcuXG4gICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgZS50YXJnZXQuY2xvc2VzdCgnYVtocmVmXScpKSB7XG4gICAgICBvbk1vdXNlTGVhdmUoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3RSb290IDogJ2Rpdic7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2lubGluZS1mbGV4IGN1cnNvci1wb2ludGVyIGZsZXgtWzBfMV9hdXRvXSBvdmVyZmxvdy1oaWRkZW4nLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICBvbk1vdXNlRW50ZXI9e29uTW91c2VFbnRlcn1cbiAgICAgIG9uTW91c2VMZWF2ZT17b25Nb3VzZUxlYXZlfVxuICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICByZWY9e3RyaWdnZXJSZWZ9XG4gICAgPlxuICAgICAgPFNsb3R0YWJsZT57Y2hpbGRyZW59PC9TbG90dGFibGU+XG4gICAgICB7cG9ydGFsUmVmPy5jdXJyZW50ICYmIChsb2NhbEhvdmVyIHx8IHBlcnNpc3RpbmcpXG4gICAgICAgID8gY3JlYXRlUG9ydGFsKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICdhYnNvbHV0ZSB0b3AtMCBwLTMgbGVmdC0wIG1heC13LW1heCB0cmFuc2l0aW9uLVt0cmFuc2Zvcm0sd2lkdGgsaGVpZ2h0XSBkdXJhdGlvbi0yNTAgZWFzZS1bZWFzaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjI5LDAuMzEsMC4wNSwwLjk2KV0gd2lsbC1jaGFuZ2UtW3RyYW5zZm9ybSx3aWR0aCxoZWlnaHRdIG1vdGlvbi1yZWR1Y2U6IXRyYW5zaXRpb24tbm9uZScsXG4gICAgICAgICAgICAgICAgc2tpcFRyYW5zaXRpb24gJiYgJyF0cmFuc2l0aW9uLW5vbmUnXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIGtleT17aWR9XG4gICAgICAgICAgICAgIHJlZj17Y29udGVudFJlZn1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAuLi4obm9QYWRkaW5nID8geyBwYWRkaW5nOiAwIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czpcbiAgICAgICAgICAgICAgICAgIHJvb3RWaXNpYmxlICYmIHZpc2libGUgJiYgIWlnbm9yZUNhcmRQb2ludGVyRXZlbnRzXG4gICAgICAgICAgICAgICAgICAgID8gJ2FsbCdcbiAgICAgICAgICAgICAgICAgICAgOiAnbm9uZScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgJ21pbi13LW1heCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0xNTAgZWFzZS1bZWFzaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjMsXzAuNTcsXzAuMDcsXzAuOTUpXSB3aWxsLWNoYW5nZS1bdHJhbnNmb3JtLHdpZHRoLGhlaWdodF0gbW90aW9uLXJlZHVjZTohdHJhbnNpdGlvbi1ub25lJyxcbiAgICAgICAgICAgICAgICAgIHNraXBUcmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gJyF0cmFuc2l0aW9uLW5vbmUnXG4gICAgICAgICAgICAgICAgICAgIDogJ3RyYW5zaXRpb24tW3RyYW5zZm9ybSx3aWR0aCxoZWlnaHRdIGR1cmF0aW9uLTI1MCBlYXNlLVtlYXNpbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMjksMC4zMSwwLjA1LDAuOTYpXSB3aWxsLWNoYW5nZS1bdHJhbnNmb3JtLHdpZHRoLGhlaWdodF0gbW90aW9uLXJlZHVjZTohdHJhbnNpdGlvbi1ub25lJ1xuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgcmVmPXtjb250ZW50TWVhc3VyZVJlZn1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgb3BhY2l0eTogTnVtYmVyKHZpc2libGUpLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4sXG4gICAgICAgICAgICBwb3J0YWxSZWYuY3VycmVudFxuICAgICAgICAgIClcbiAgICAgICAgOiBudWxsfVxuICAgIDwvQ29tcD5cbiAgKTtcbn1cbiJdfQ==