@projectcor/maia-components 2.11.100-2 → 2.11.100-3

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 (63) hide show
  1. package/lib/App.js +2 -4
  2. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +14 -212
  3. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +9 -99
  4. package/lib/components/atoms/Chip/Chip.js +12 -5
  5. package/lib/components/atoms/Chip/styles.js +6 -6
  6. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +121 -28
  7. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +6 -2
  8. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +12 -5
  9. package/lib/components/atoms/MAIAInput/MAIAInput.js +390 -270
  10. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +5 -8
  11. package/lib/components/atoms/MAIAInput/maiaInputLayout.js +25 -0
  12. package/lib/components/atoms/MAIAInput/styles.js +102 -86
  13. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +54 -41
  14. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +25 -12
  15. package/lib/components/atoms/icons/MaiaInputAddIcon.js +42 -0
  16. package/lib/components/atoms/icons/MaiaInputAttachIcon.js +29 -0
  17. package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +33 -0
  18. package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +35 -0
  19. package/lib/components/atoms/icons/MaiaInputMentionIcon.js +44 -0
  20. package/lib/components/atoms/icons/MaiaInputRobotIcon.js +29 -0
  21. package/lib/components/atoms/icons/MaiaInputSendIcon.js +29 -0
  22. package/lib/components/atoms/icons/MaiaInputSlashIcon.js +29 -0
  23. package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +35 -0
  24. package/lib/components/atoms/icons/index.js +10 -1
  25. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +4 -91
  26. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +18 -7
  27. package/lib/components/molecules/ChatAIHome/styles.js +54 -38
  28. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +44 -191
  29. package/lib/components/molecules/ChatAIMessages/newStyles.js +10 -26
  30. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +1 -2
  31. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +1 -4
  32. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +1 -8
  33. package/lib/components/molecules/ChatFooter/ChatFooter.js +23 -62
  34. package/lib/components/molecules/Sidebar/Sidebar.js +14 -3
  35. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +5 -34
  36. package/lib/hooks/useAgentModel/useCreateAgent.js +14 -40
  37. package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -37
  38. package/lib/hooks/useChatManager/useChatManager.js +46 -145
  39. package/lib/hooks/useEvent.js +1 -2
  40. package/lib/hooks/useMentionPopover.js +4 -2
  41. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +23 -180
  42. package/lib/lang/br/index.js +7 -16
  43. package/lib/lang/en/index.js +7 -16
  44. package/lib/lang/es/index.js +7 -16
  45. package/lib/lang/fr/index.js +9 -15
  46. package/lib/styles/config.js +2 -2
  47. package/lib/types/agentModal.js +1 -1
  48. package/lib/types/streamActivity.js +1 -1
  49. package/lib/utils/normalizeAgentConnectors.js +3 -28
  50. package/package.json +1 -1
  51. package/lib/components/molecules/StreamAssistantTurnTimeline/StreamAssistantTurnTimeline.js +0 -90
  52. package/lib/components/molecules/StreamAssistantTurnTimeline/StreamAssistantTurnTimeline.styles.js +0 -19
  53. package/lib/components/molecules/StreamAssistantTurnTimeline/index.js +0 -2
  54. package/lib/dev/DevStreamTimelineDemo.js +0 -614
  55. package/lib/dev/mockStreamTimelineDemo.js +0 -417
  56. package/lib/dev/mockStreamTimelineRunner.js +0 -298
  57. package/lib/hooks/useStreamTimeline/index.js +0 -7
  58. package/lib/hooks/useStreamTimeline/streamTimelineStore.js +0 -37
  59. package/lib/services/maia/Agents/connectors.js +0 -124
  60. package/lib/types/streamTimeline.js +0 -2
  61. package/lib/utils/streamDebugLog.js +0 -169
  62. package/lib/utils/streamExecutionSteps.js +0 -96
  63. package/lib/utils/streamTimeline.js +0 -161
@@ -1,298 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
- import _regeneratorRuntime from "@babel/runtime/regenerator";
6
- import { streamTimelineStore } from '../hooks/useStreamTimeline';
7
- import { appendContentToStreamTimeline, appendNodeToStreamTimeline, finalizeStreamTimeline, startStreamTimelineTurn } from '../utils/streamTimeline';
8
- import { getInitialStreamActivity, resolveInitialHitlStreamActivity } from '../utils/streamActivityMessages';
9
- import { resetExecutionStepCounter } from '../utils/streamExecutionSteps';
10
- import { mergeStreamChunk } from '../utils/sseStreamContent';
11
- import { DEMO_TURN_ID, sleep } from './mockStreamTimelineDemo';
12
- var buildHitlContext = function buildHitlContext(approval, messageText) {
13
- var _approval$pending_act;
14
- return {
15
- messageId: "approval-".concat(approval.original_thread_id),
16
- messageText: messageText,
17
- approval: approval,
18
- pendingActions: approval.pending_actions,
19
- threadIds: (_approval$pending_act = approval.pending_actions) === null || _approval$pending_act === void 0 ? void 0 : _approval$pending_act.map(function (action) {
20
- return action.thread_id;
21
- })
22
- };
23
- };
24
- export var resetMockRunnerState = function resetMockRunnerState(callbacks) {
25
- streamTimelineStore.clear();
26
- resetExecutionStepCounter();
27
- callbacks.onHitlContext(null);
28
- callbacks.onApprovalUi(null);
29
- callbacks.onUiPatch({
30
- waitingResponse: false,
31
- isWriting: false,
32
- initialActivity: null,
33
- phase: 'idle'
34
- });
35
- };
36
- export var beginMockTurn = function beginMockTurn(callbacks) {
37
- var turnId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEMO_TURN_ID;
38
- resetExecutionStepCounter();
39
- streamTimelineStore.replace(startStreamTimelineTurn(turnId));
40
- callbacks.onUiPatch({
41
- phase: 'running',
42
- waitingResponse: true,
43
- isWriting: false
44
- });
45
- };
46
- export var beginMockHitlContinue = function beginMockHitlContinue(t, hitlContext, callbacks) {
47
- var turnId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEMO_TURN_ID;
48
- resetExecutionStepCounter();
49
- streamTimelineStore.replace(startStreamTimelineTurn(turnId));
50
- callbacks.onHitlContext(hitlContext);
51
- callbacks.onUiPatch({
52
- phase: 'running_continue',
53
- waitingResponse: true,
54
- isWriting: false,
55
- initialActivity: resolveInitialHitlStreamActivity(t, hitlContext)
56
- });
57
- };
58
- export var applyMockStreamEvent = /*#__PURE__*/function () {
59
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(event, runId, t, accumulatedRef, hitlContextRef, callbacks) {
60
- var _event$charDelayMs, delay, buffer, i, _callbacks$onAccumula, _callbacks$onAccumula2, isManual, hitlContext;
61
- return _regeneratorRuntime.wrap(function (_context) {
62
- while (1) switch (_context.prev = _context.next) {
63
- case 0:
64
- if (callbacks.isRunActive(runId)) {
65
- _context.next = 1;
66
- break;
67
- }
68
- return _context.abrupt("return", 'stopped');
69
- case 1:
70
- if (!(event.kind === 'wait')) {
71
- _context.next = 3;
72
- break;
73
- }
74
- callbacks.onLog(event.label);
75
- _context.next = 2;
76
- return sleep(event.ms);
77
- case 2:
78
- return _context.abrupt("return", callbacks.isRunActive(runId) ? 'continue' : 'stopped');
79
- case 3:
80
- if (!(event.kind === 'thinking')) {
81
- _context.next = 4;
82
- break;
83
- }
84
- callbacks.onLog('event: thinking');
85
- callbacks.onUiPatch({
86
- waitingResponse: true,
87
- isWriting: false,
88
- initialActivity: getInitialStreamActivity(t, {})
89
- });
90
- return _context.abrupt("return", 'continue');
91
- case 4:
92
- if (!(event.kind === 'writing')) {
93
- _context.next = 5;
94
- break;
95
- }
96
- callbacks.onLog('event: writing_started');
97
- callbacks.onUiPatch({
98
- isWriting: true
99
- });
100
- streamTimelineStore.replace(appendContentToStreamTimeline(streamTimelineStore.getSnapshot(), accumulatedRef.current));
101
- return _context.abrupt("return", 'continue');
102
- case 5:
103
- if (!(event.kind === 'node')) {
104
- _context.next = 6;
105
- break;
106
- }
107
- callbacks.onLog("event: ".concat(event.label));
108
- streamTimelineStore.replace(appendNodeToStreamTimeline(streamTimelineStore.getSnapshot(), event.payload, accumulatedRef.current, t, hitlContextRef.current, event.payload.thread_id));
109
- return _context.abrupt("return", 'continue');
110
- case 6:
111
- if (!(event.kind === 'tokens')) {
112
- _context.next = 11;
113
- break;
114
- }
115
- callbacks.onLog("event: ".concat(event.label));
116
- delay = (_event$charDelayMs = event.charDelayMs) !== null && _event$charDelayMs !== void 0 ? _event$charDelayMs : 18;
117
- buffer = accumulatedRef.current;
118
- i = 0;
119
- case 7:
120
- if (!(i < event.text.length)) {
121
- _context.next = 10;
122
- break;
123
- }
124
- if (callbacks.isRunActive(runId)) {
125
- _context.next = 8;
126
- break;
127
- }
128
- return _context.abrupt("return", 'stopped');
129
- case 8:
130
- buffer += event.text[i];
131
- accumulatedRef.current = buffer;
132
- streamTimelineStore.replace(appendContentToStreamTimeline(streamTimelineStore.getSnapshot(), buffer));
133
- (_callbacks$onAccumula = callbacks.onAccumulatedChange) === null || _callbacks$onAccumula === void 0 || _callbacks$onAccumula.call(callbacks, buffer);
134
- // eslint-disable-next-line no-await-in-loop
135
- _context.next = 9;
136
- return sleep(delay);
137
- case 9:
138
- i += 1;
139
- _context.next = 7;
140
- break;
141
- case 10:
142
- return _context.abrupt("return", 'continue');
143
- case 11:
144
- if (!(event.kind === 'content')) {
145
- _context.next = 12;
146
- break;
147
- }
148
- callbacks.onLog("event: ".concat(event.label));
149
- callbacks.onUiPatch({
150
- isWriting: true
151
- });
152
- accumulatedRef.current = mergeStreamChunk(accumulatedRef.current, event.text);
153
- streamTimelineStore.replace(appendContentToStreamTimeline(streamTimelineStore.getSnapshot(), accumulatedRef.current));
154
- (_callbacks$onAccumula2 = callbacks.onAccumulatedChange) === null || _callbacks$onAccumula2 === void 0 || _callbacks$onAccumula2.call(callbacks, accumulatedRef.current);
155
- return _context.abrupt("return", 'continue');
156
- case 12:
157
- if (!(event.kind === 'approval_required')) {
158
- _context.next = 14;
159
- break;
160
- }
161
- callbacks.onLog("event: ".concat(event.label));
162
- isManual = event.approval.manual_approval_detected === true;
163
- hitlContext = buildHitlContext(event.approval, accumulatedRef.current);
164
- hitlContextRef.current = hitlContext;
165
- callbacks.onHitlContext(hitlContext);
166
- if (!isManual) {
167
- _context.next = 13;
168
- break;
169
- }
170
- callbacks.onLog('→ manual_approval_detected: stream sigue');
171
- callbacks.onUiPatch({
172
- waitingResponse: true,
173
- isWriting: false,
174
- initialActivity: resolveInitialHitlStreamActivity(t, hitlContext)
175
- });
176
- return _context.abrupt("return", 'continue');
177
- case 13:
178
- callbacks.onLog('→ stream settled: timeline limpiado, ApprovalBox');
179
- streamTimelineStore.clear();
180
- callbacks.onUiPatch({
181
- waitingResponse: false,
182
- isWriting: false,
183
- initialActivity: null,
184
- phase: 'awaiting_approval'
185
- });
186
- callbacks.onApprovalUi({
187
- message: accumulatedRef.current,
188
- approval: event.approval,
189
- status: 'pending'
190
- });
191
- return _context.abrupt("return", 'pause');
192
- case 14:
193
- if (!(event.kind === 'complete')) {
194
- _context.next = 18;
195
- break;
196
- }
197
- callbacks.onLog("event: ".concat(event.label));
198
- streamTimelineStore.replace(finalizeStreamTimeline(appendContentToStreamTimeline(streamTimelineStore.getSnapshot(), accumulatedRef.current)));
199
- callbacks.onUiPatch({
200
- waitingResponse: false,
201
- isWriting: false,
202
- initialActivity: null,
203
- phase: 'done'
204
- });
205
- hitlContextRef.current = null;
206
- callbacks.onHitlContext(null);
207
- if (!(callbacks.showProdCompleteBehavior && !callbacks.keepTimelineOnComplete)) {
208
- _context.next = 17;
209
- break;
210
- }
211
- _context.next = 15;
212
- return sleep(400);
213
- case 15:
214
- if (callbacks.isRunActive(runId)) {
215
- _context.next = 16;
216
- break;
217
- }
218
- return _context.abrupt("return", 'stopped');
219
- case 16:
220
- streamTimelineStore.clear();
221
- callbacks.onLog('→ timeline limpiado (comportamiento prod)');
222
- case 17:
223
- return _context.abrupt("return", 'continue');
224
- case 18:
225
- return _context.abrupt("return", 'continue');
226
- case 19:
227
- case "end":
228
- return _context.stop();
229
- }
230
- }, _callee);
231
- }));
232
- return function applyMockStreamEvent(_x, _x2, _x3, _x4, _x5, _x6) {
233
- return _ref.apply(this, arguments);
234
- };
235
- }();
236
- export var runMockEventList = /*#__PURE__*/function () {
237
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(events, runId, t, accumulatedRef, hitlContextRef, callbacks) {
238
- var _iterator, _step, event, result, _t;
239
- return _regeneratorRuntime.wrap(function (_context2) {
240
- while (1) switch (_context2.prev = _context2.next) {
241
- case 0:
242
- _iterator = _createForOfIteratorHelper(events);
243
- _context2.prev = 1;
244
- _iterator.s();
245
- case 2:
246
- if ((_step = _iterator.n()).done) {
247
- _context2.next = 7;
248
- break;
249
- }
250
- event = _step.value;
251
- if (callbacks.isRunActive(runId)) {
252
- _context2.next = 3;
253
- break;
254
- }
255
- return _context2.abrupt("return", 'stopped');
256
- case 3:
257
- _context2.next = 4;
258
- return applyMockStreamEvent(event, runId, t, accumulatedRef, hitlContextRef, callbacks);
259
- case 4:
260
- result = _context2.sent;
261
- if (!(result === 'pause')) {
262
- _context2.next = 5;
263
- break;
264
- }
265
- return _context2.abrupt("return", 'paused');
266
- case 5:
267
- if (!(result === 'stopped')) {
268
- _context2.next = 6;
269
- break;
270
- }
271
- return _context2.abrupt("return", 'stopped');
272
- case 6:
273
- _context2.next = 2;
274
- break;
275
- case 7:
276
- _context2.next = 9;
277
- break;
278
- case 8:
279
- _context2.prev = 8;
280
- _t = _context2["catch"](1);
281
- _iterator.e(_t);
282
- case 9:
283
- _context2.prev = 9;
284
- _iterator.f();
285
- return _context2.finish(9);
286
- case 10:
287
- return _context2.abrupt("return", 'completed');
288
- case 11:
289
- case "end":
290
- return _context2.stop();
291
- }
292
- }, _callee2, null, [[1, 8, 9, 10]]);
293
- }));
294
- return function runMockEventList(_x7, _x8, _x9, _x0, _x1, _x10) {
295
- return _ref2.apply(this, arguments);
296
- };
297
- }();
298
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHJlYW1UaW1lbGluZVN0b3JlIiwiYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUiLCJhcHBlbmROb2RlVG9TdHJlYW1UaW1lbGluZSIsImZpbmFsaXplU3RyZWFtVGltZWxpbmUiLCJzdGFydFN0cmVhbVRpbWVsaW5lVHVybiIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJERU1PX1RVUk5fSUQiLCJzbGVlcCIsImJ1aWxkSGl0bENvbnRleHQiLCJhcHByb3ZhbCIsIm1lc3NhZ2VUZXh0IiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0IiwibWVzc2FnZUlkIiwiY29uY2F0Iiwib3JpZ2luYWxfdGhyZWFkX2lkIiwicGVuZGluZ0FjdGlvbnMiLCJwZW5kaW5nX2FjdGlvbnMiLCJ0aHJlYWRJZHMiLCJtYXAiLCJhY3Rpb24iLCJ0aHJlYWRfaWQiLCJyZXNldE1vY2tSdW5uZXJTdGF0ZSIsImNhbGxiYWNrcyIsImNsZWFyIiwib25IaXRsQ29udGV4dCIsIm9uQXBwcm92YWxVaSIsIm9uVWlQYXRjaCIsIndhaXRpbmdSZXNwb25zZSIsImlzV3JpdGluZyIsImluaXRpYWxBY3Rpdml0eSIsInBoYXNlIiwiYmVnaW5Nb2NrVHVybiIsInR1cm5JZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJiZWdpbk1vY2tIaXRsQ29udGludWUiLCJ0IiwiaGl0bENvbnRleHQiLCJhcHBseU1vY2tTdHJlYW1FdmVudCIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImV2ZW50IiwicnVuSWQiLCJhY2N1bXVsYXRlZFJlZiIsImhpdGxDb250ZXh0UmVmIiwiX2V2ZW50JGNoYXJEZWxheU1zIiwiZGVsYXkiLCJidWZmZXIiLCJpIiwiX2NhbGxiYWNrcyRvbkFjY3VtdWxhIiwiX2NhbGxiYWNrcyRvbkFjY3VtdWxhMiIsImlzTWFudWFsIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJpc1J1bkFjdGl2ZSIsImFicnVwdCIsImtpbmQiLCJvbkxvZyIsImxhYmVsIiwibXMiLCJnZXRTbmFwc2hvdCIsImN1cnJlbnQiLCJwYXlsb2FkIiwiY2hhckRlbGF5TXMiLCJ0ZXh0Iiwib25BY2N1bXVsYXRlZENoYW5nZSIsImNhbGwiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJtZXNzYWdlIiwic3RhdHVzIiwic2hvd1Byb2RDb21wbGV0ZUJlaGF2aW9yIiwia2VlcFRpbWVsaW5lT25Db21wbGV0ZSIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsIl94NCIsIl94NSIsIl94NiIsImFwcGx5IiwicnVuTW9ja0V2ZW50TGlzdCIsIl9yZWYyIiwiX2NhbGxlZTIiLCJldmVudHMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsInJlc3VsdCIsIl90IiwiX2NvbnRleHQyIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsInNlbnQiLCJlIiwiZiIsImZpbmlzaCIsIl94NyIsIl94OCIsIl94OSIsIl94MCIsIl94MSIsIl94MTAiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGV2L21vY2tTdHJlYW1UaW1lbGluZVJ1bm5lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFwcHJvdmFsUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQgeyBzdHJlYW1UaW1lbGluZVN0b3JlIH0gZnJvbSAnLi4vaG9va3MvdXNlU3RyZWFtVGltZWxpbmUnXG5pbXBvcnQge1xuICBhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZSxcbiAgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUsXG4gIGZpbmFsaXplU3RyZWFtVGltZWxpbmUsXG4gIHN0YXJ0U3RyZWFtVGltZWxpbmVUdXJuLFxufSBmcm9tICcuLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7XG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG4gIHR5cGUgSGl0bEV4ZWN1dGlvbkNvbnRleHQsXG59IGZyb20gJy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvc3RyZWFtRXhlY3V0aW9uU3RlcHMnXG5pbXBvcnQgeyBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB0eXBlIHsgTW9ja1N0cmVhbVRpbWVsaW5lRXZlbnQgfSBmcm9tICcuL21vY2tTdHJlYW1UaW1lbGluZURlbW8nXG5pbXBvcnQgeyBERU1PX1RVUk5fSUQsIHNsZWVwIH0gZnJvbSAnLi9tb2NrU3RyZWFtVGltZWxpbmVEZW1vJ1xuXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxuZXhwb3J0IHR5cGUgTW9ja1J1bm5lclVpU3RhdGUgPSB7XG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgaW5pdGlhbEFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSB8IG51bGxcbiAgcGhhc2U6ICdpZGxlJyB8ICdydW5uaW5nJyB8ICdhd2FpdGluZ19hcHByb3ZhbCcgfCAncnVubmluZ19jb250aW51ZScgfCAnZG9uZSdcbn1cblxuZXhwb3J0IHR5cGUgTW9ja0FwcHJvdmFsVWlTdGF0ZSA9IHtcbiAgbWVzc2FnZTogc3RyaW5nXG4gIGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3RcbiAgc3RhdHVzOiAncGVuZGluZycgfCAnYXBwcm92ZWQnIHwgJ3JlamVjdGVkJ1xufSB8IG51bGxcblxuZXhwb3J0IHR5cGUgQXBwbHlFdmVudFJlc3VsdCA9ICdjb250aW51ZScgfCAncGF1c2UnIHwgJ3N0b3BwZWQnXG5cbmV4cG9ydCB0eXBlIE1vY2tSdW5uZXJDYWxsYmFja3MgPSB7XG4gIG9uVWlQYXRjaDogKHBhdGNoOiBQYXJ0aWFsPE1vY2tSdW5uZXJVaVN0YXRlPikgPT4gdm9pZFxuICBvbkFwcHJvdmFsVWk6IChzdGF0ZTogTW9ja0FwcHJvdmFsVWlTdGF0ZSkgPT4gdm9pZFxuICBvbkhpdGxDb250ZXh0OiAoY3R4OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwpID0+IHZvaWRcbiAgb25Mb2c6IChsaW5lOiBzdHJpbmcpID0+IHZvaWRcbiAgb25BY2N1bXVsYXRlZENoYW5nZT86ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWRcbiAgZ2V0UnVuSWQ6ICgpID0+IG51bWJlclxuICBpc1J1bkFjdGl2ZTogKHJ1bklkOiBudW1iZXIpID0+IGJvb2xlYW5cbiAgc2hvd1Byb2RDb21wbGV0ZUJlaGF2aW9yOiBib29sZWFuXG4gIGtlZXBUaW1lbGluZU9uQ29tcGxldGU6IGJvb2xlYW5cbn1cblxuY29uc3QgYnVpbGRIaXRsQ29udGV4dCA9IChhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0LCBtZXNzYWdlVGV4dDogc3RyaW5nKTogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPT4gKHtcbiAgbWVzc2FnZUlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgbWVzc2FnZVRleHQsXG4gIGFwcHJvdmFsLFxuICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICB0aHJlYWRJZHM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkKSxcbn0pXG5cbmV4cG9ydCBjb25zdCByZXNldE1vY2tSdW5uZXJTdGF0ZSA9IChjYWxsYmFja3M6IE1vY2tSdW5uZXJDYWxsYmFja3MpOiB2b2lkID0+IHtcbiAgc3RyZWFtVGltZWxpbmVTdG9yZS5jbGVhcigpXG4gIHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIoKVxuICBjYWxsYmFja3Mub25IaXRsQ29udGV4dChudWxsKVxuICBjYWxsYmFja3Mub25BcHByb3ZhbFVpKG51bGwpXG4gIGNhbGxiYWNrcy5vblVpUGF0Y2goe1xuICAgIHdhaXRpbmdSZXNwb25zZTogZmFsc2UsXG4gICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICBpbml0aWFsQWN0aXZpdHk6IG51bGwsXG4gICAgcGhhc2U6ICdpZGxlJyxcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGJlZ2luTW9ja1R1cm4gPSAoY2FsbGJhY2tzOiBNb2NrUnVubmVyQ2FsbGJhY2tzLCB0dXJuSWQgPSBERU1PX1RVUk5fSUQpOiB2b2lkID0+IHtcbiAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcigpXG4gIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShzdGFydFN0cmVhbVRpbWVsaW5lVHVybih0dXJuSWQpKVxuICBjYWxsYmFja3Mub25VaVBhdGNoKHsgcGhhc2U6ICdydW5uaW5nJywgd2FpdGluZ1Jlc3BvbnNlOiB0cnVlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG59XG5cbmV4cG9ydCBjb25zdCBiZWdpbk1vY2tIaXRsQ29udGludWUgPSAoXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQsXG4gIGNhbGxiYWNrczogTW9ja1J1bm5lckNhbGxiYWNrcyxcbiAgdHVybklkID0gREVNT19UVVJOX0lEXG4pOiB2b2lkID0+IHtcbiAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcigpXG4gIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShzdGFydFN0cmVhbVRpbWVsaW5lVHVybih0dXJuSWQpKVxuICBjYWxsYmFja3Mub25IaXRsQ29udGV4dChoaXRsQ29udGV4dClcbiAgY2FsbGJhY2tzLm9uVWlQYXRjaCh7XG4gICAgcGhhc2U6ICdydW5uaW5nX2NvbnRpbnVlJyxcbiAgICB3YWl0aW5nUmVzcG9uc2U6IHRydWUsXG4gICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICBpbml0aWFsQWN0aXZpdHk6IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KSxcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGFwcGx5TW9ja1N0cmVhbUV2ZW50ID0gYXN5bmMgKFxuICBldmVudDogTW9ja1N0cmVhbVRpbWVsaW5lRXZlbnQsXG4gIHJ1bklkOiBudW1iZXIsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBhY2N1bXVsYXRlZFJlZjogeyBjdXJyZW50OiBzdHJpbmcgfSxcbiAgaGl0bENvbnRleHRSZWY6IHsgY3VycmVudDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsIH0sXG4gIGNhbGxiYWNrczogTW9ja1J1bm5lckNhbGxiYWNrc1xuKTogUHJvbWlzZTxBcHBseUV2ZW50UmVzdWx0PiA9PiB7XG4gIGlmICghY2FsbGJhY2tzLmlzUnVuQWN0aXZlKHJ1bklkKSkgcmV0dXJuICdzdG9wcGVkJ1xuXG4gIGlmIChldmVudC5raW5kID09PSAnd2FpdCcpIHtcbiAgICBjYWxsYmFja3Mub25Mb2coZXZlbnQubGFiZWwpXG4gICAgYXdhaXQgc2xlZXAoZXZlbnQubXMpXG4gICAgcmV0dXJuIGNhbGxiYWNrcy5pc1J1bkFjdGl2ZShydW5JZCkgPyAnY29udGludWUnIDogJ3N0b3BwZWQnXG4gIH1cblxuICBpZiAoZXZlbnQua2luZCA9PT0gJ3RoaW5raW5nJykge1xuICAgIGNhbGxiYWNrcy5vbkxvZygnZXZlbnQ6IHRoaW5raW5nJylcbiAgICBjYWxsYmFja3Mub25VaVBhdGNoKHtcbiAgICAgIHdhaXRpbmdSZXNwb25zZTogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICBpbml0aWFsQWN0aXZpdHk6IGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCB7fSksXG4gICAgfSlcbiAgICByZXR1cm4gJ2NvbnRpbnVlJ1xuICB9XG5cbiAgaWYgKGV2ZW50LmtpbmQgPT09ICd3cml0aW5nJykge1xuICAgIGNhbGxiYWNrcy5vbkxvZygnZXZlbnQ6IHdyaXRpbmdfc3RhcnRlZCcpXG4gICAgY2FsbGJhY2tzLm9uVWlQYXRjaCh7IGlzV3JpdGluZzogdHJ1ZSB9KVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShcbiAgICAgIGFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lKHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSwgYWNjdW11bGF0ZWRSZWYuY3VycmVudClcbiAgICApXG4gICAgcmV0dXJuICdjb250aW51ZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAnbm9kZScpIHtcbiAgICBjYWxsYmFja3Mub25Mb2coYGV2ZW50OiAke2V2ZW50LmxhYmVsfWApXG4gICAgc3RyZWFtVGltZWxpbmVTdG9yZS5yZXBsYWNlKFxuICAgICAgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUoXG4gICAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSxcbiAgICAgICAgZXZlbnQucGF5bG9hZCxcbiAgICAgICAgYWNjdW11bGF0ZWRSZWYuY3VycmVudCxcbiAgICAgICAgdCxcbiAgICAgICAgaGl0bENvbnRleHRSZWYuY3VycmVudCxcbiAgICAgICAgZXZlbnQucGF5bG9hZC50aHJlYWRfaWRcbiAgICAgIClcbiAgICApXG4gICAgcmV0dXJuICdjb250aW51ZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAndG9rZW5zJykge1xuICAgIGNhbGxiYWNrcy5vbkxvZyhgZXZlbnQ6ICR7ZXZlbnQubGFiZWx9YClcbiAgICBjb25zdCBkZWxheSA9IGV2ZW50LmNoYXJEZWxheU1zID8/IDE4XG4gICAgbGV0IGJ1ZmZlciA9IGFjY3VtdWxhdGVkUmVmLmN1cnJlbnRcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV2ZW50LnRleHQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmICghY2FsbGJhY2tzLmlzUnVuQWN0aXZlKHJ1bklkKSkgcmV0dXJuICdzdG9wcGVkJ1xuICAgICAgYnVmZmVyICs9IGV2ZW50LnRleHRbaV1cbiAgICAgIGFjY3VtdWxhdGVkUmVmLmN1cnJlbnQgPSBidWZmZXJcbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZShzdHJlYW1UaW1lbGluZVN0b3JlLmdldFNuYXBzaG90KCksIGJ1ZmZlcikpXG4gICAgICBjYWxsYmFja3Mub25BY2N1bXVsYXRlZENoYW5nZT8uKGJ1ZmZlcilcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICBhd2FpdCBzbGVlcChkZWxheSlcbiAgICB9XG4gICAgcmV0dXJuICdjb250aW51ZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAnY29udGVudCcpIHtcbiAgICBjYWxsYmFja3Mub25Mb2coYGV2ZW50OiAke2V2ZW50LmxhYmVsfWApXG4gICAgY2FsbGJhY2tzLm9uVWlQYXRjaCh7IGlzV3JpdGluZzogdHJ1ZSB9KVxuICAgIGFjY3VtdWxhdGVkUmVmLmN1cnJlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkUmVmLmN1cnJlbnQsIGV2ZW50LnRleHQpXG4gICAgc3RyZWFtVGltZWxpbmVTdG9yZS5yZXBsYWNlKFxuICAgICAgYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpLCBhY2N1bXVsYXRlZFJlZi5jdXJyZW50KVxuICAgIClcbiAgICBjYWxsYmFja3Mub25BY2N1bXVsYXRlZENoYW5nZT8uKGFjY3VtdWxhdGVkUmVmLmN1cnJlbnQpXG4gICAgcmV0dXJuICdjb250aW51ZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAnYXBwcm92YWxfcmVxdWlyZWQnKSB7XG4gICAgY2FsbGJhY2tzLm9uTG9nKGBldmVudDogJHtldmVudC5sYWJlbH1gKVxuICAgIGNvbnN0IGlzTWFudWFsID0gZXZlbnQuYXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlXG4gICAgY29uc3QgaGl0bENvbnRleHQgPSBidWlsZEhpdGxDb250ZXh0KGV2ZW50LmFwcHJvdmFsLCBhY2N1bXVsYXRlZFJlZi5jdXJyZW50KVxuICAgIGhpdGxDb250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgIGNhbGxiYWNrcy5vbkhpdGxDb250ZXh0KGhpdGxDb250ZXh0KVxuXG4gICAgaWYgKGlzTWFudWFsKSB7XG4gICAgICBjYWxsYmFja3Mub25Mb2coJ+KGkiBtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQ6IHN0cmVhbSBzaWd1ZScpXG4gICAgICBjYWxsYmFja3Mub25VaVBhdGNoKHtcbiAgICAgICAgd2FpdGluZ1Jlc3BvbnNlOiB0cnVlLFxuICAgICAgICBpc1dyaXRpbmc6IGZhbHNlLFxuICAgICAgICBpbml0aWFsQWN0aXZpdHk6IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KSxcbiAgICAgIH0pXG4gICAgICByZXR1cm4gJ2NvbnRpbnVlJ1xuICAgIH1cblxuICAgIGNhbGxiYWNrcy5vbkxvZygn4oaSIHN0cmVhbSBzZXR0bGVkOiB0aW1lbGluZSBsaW1waWFkbywgQXBwcm92YWxCb3gnKVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuY2xlYXIoKVxuICAgIGNhbGxiYWNrcy5vblVpUGF0Y2goe1xuICAgICAgd2FpdGluZ1Jlc3BvbnNlOiBmYWxzZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICBpbml0aWFsQWN0aXZpdHk6IG51bGwsXG4gICAgICBwaGFzZTogJ2F3YWl0aW5nX2FwcHJvdmFsJyxcbiAgICB9KVxuICAgIGNhbGxiYWNrcy5vbkFwcHJvdmFsVWkoe1xuICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRSZWYuY3VycmVudCxcbiAgICAgIGFwcHJvdmFsOiBldmVudC5hcHByb3ZhbCxcbiAgICAgIHN0YXR1czogJ3BlbmRpbmcnLFxuICAgIH0pXG4gICAgcmV0dXJuICdwYXVzZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAnY29tcGxldGUnKSB7XG4gICAgY2FsbGJhY2tzLm9uTG9nKGBldmVudDogJHtldmVudC5sYWJlbH1gKVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShcbiAgICAgIGZpbmFsaXplU3RyZWFtVGltZWxpbmUoYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpLCBhY2N1bXVsYXRlZFJlZi5jdXJyZW50KSlcbiAgICApXG4gICAgY2FsbGJhY2tzLm9uVWlQYXRjaCh7XG4gICAgICB3YWl0aW5nUmVzcG9uc2U6IGZhbHNlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIGluaXRpYWxBY3Rpdml0eTogbnVsbCxcbiAgICAgIHBoYXNlOiAnZG9uZScsXG4gICAgfSlcbiAgICBoaXRsQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGNhbGxiYWNrcy5vbkhpdGxDb250ZXh0KG51bGwpXG5cbiAgICBpZiAoY2FsbGJhY2tzLnNob3dQcm9kQ29tcGxldGVCZWhhdmlvciAmJiAhY2FsbGJhY2tzLmtlZXBUaW1lbGluZU9uQ29tcGxldGUpIHtcbiAgICAgIGF3YWl0IHNsZWVwKDQwMClcbiAgICAgIGlmICghY2FsbGJhY2tzLmlzUnVuQWN0aXZlKHJ1bklkKSkgcmV0dXJuICdzdG9wcGVkJ1xuICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5jbGVhcigpXG4gICAgICBjYWxsYmFja3Mub25Mb2coJ+KGkiB0aW1lbGluZSBsaW1waWFkbyAoY29tcG9ydGFtaWVudG8gcHJvZCknKVxuICAgIH1cbiAgICByZXR1cm4gJ2NvbnRpbnVlJ1xuICB9XG5cbiAgcmV0dXJuICdjb250aW51ZSdcbn1cblxuZXhwb3J0IGNvbnN0IHJ1bk1vY2tFdmVudExpc3QgPSBhc3luYyAoXG4gIGV2ZW50czogTW9ja1N0cmVhbVRpbWVsaW5lRXZlbnRbXSxcbiAgcnVuSWQ6IG51bWJlcixcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGFjY3VtdWxhdGVkUmVmOiB7IGN1cnJlbnQ6IHN0cmluZyB9LFxuICBoaXRsQ29udGV4dFJlZjogeyBjdXJyZW50OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwgfSxcbiAgY2FsbGJhY2tzOiBNb2NrUnVubmVyQ2FsbGJhY2tzXG4pOiBQcm9taXNlPCdjb21wbGV0ZWQnIHwgJ3BhdXNlZCcgfCAnc3RvcHBlZCc+ID0+IHtcbiAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICBpZiAoIWNhbGxiYWNrcy5pc1J1bkFjdGl2ZShydW5JZCkpIHJldHVybiAnc3RvcHBlZCdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcGx5TW9ja1N0cmVhbUV2ZW50KGV2ZW50LCBydW5JZCwgdCwgYWNjdW11bGF0ZWRSZWYsIGhpdGxDb250ZXh0UmVmLCBjYWxsYmFja3MpXG4gICAgaWYgKHJlc3VsdCA9PT0gJ3BhdXNlJykgcmV0dXJuICdwYXVzZWQnXG4gICAgaWYgKHJlc3VsdCA9PT0gJ3N0b3BwZWQnKSByZXR1cm4gJ3N0b3BwZWQnXG4gIH1cbiAgcmV0dXJuICdjb21wbGV0ZWQnXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsU0FBU0EsbUJBQW1CLFFBQVEsNEJBQTRCO0FBQ2hFLFNBQ0VDLDZCQUE2QixFQUM3QkMsMEJBQTBCLEVBQzFCQyxzQkFBc0IsRUFDdEJDLHVCQUF1QixRQUNsQix5QkFBeUI7QUFDaEMsU0FDRUMsd0JBQXdCLEVBQ3hCQyxnQ0FBZ0MsUUFFM0IsaUNBQWlDO0FBQ3hDLFNBQVNDLHlCQUF5QixRQUFRLCtCQUErQjtBQUN6RSxTQUFTQyxn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
@@ -1,7 +0,0 @@
1
- import { useSyncExternalStore } from 'react';
2
- import { streamTimelineStore } from './streamTimelineStore';
3
- export var useStreamTimeline = function useStreamTimeline() {
4
- return useSyncExternalStore(streamTimelineStore.subscribe, streamTimelineStore.getSnapshot, streamTimelineStore.getServerSnapshot);
5
- };
6
- export { streamTimelineStore };
7
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTeW5jRXh0ZXJuYWxTdG9yZSIsInN0cmVhbVRpbWVsaW5lU3RvcmUiLCJ1c2VTdHJlYW1UaW1lbGluZSIsInN1YnNjcmliZSIsImdldFNuYXBzaG90IiwiZ2V0U2VydmVyU25hcHNob3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlU3RyZWFtVGltZWxpbmUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3luY0V4dGVybmFsU3RvcmUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfSBmcm9tICcuL3N0cmVhbVRpbWVsaW5lU3RvcmUnXG5cbmV4cG9ydCBjb25zdCB1c2VTdHJlYW1UaW1lbGluZSA9ICgpID0+XG4gIHVzZVN5bmNFeHRlcm5hbFN0b3JlKFxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuc3Vic2NyaWJlLFxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QsXG4gICAgc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTZXJ2ZXJTbmFwc2hvdFxuICApXG5cbmV4cG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxvQkFBb0IsUUFBUSxPQUFPO0FBQzVDLFNBQVNDLG1CQUFtQixRQUFRLHVCQUF1QjtBQUUzRCxPQUFPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUE7RUFBQSxPQUM1QkYsb0JBQW9CLENBQ2xCQyxtQkFBbUIsQ0FBQ0UsU0FBUyxFQUM3QkYsbUJBQW1CLENBQUNHLFdBQVcsRUFDL0JILG1CQUFtQixDQUFDSSxpQkFDdEIsQ0FBQztBQUFBO0FBRUgsU0FBU0osbUJBQW1CIiwiaWdub3JlTGlzdCI6W119
@@ -1,37 +0,0 @@
1
- import { createEmptyTimelineSnapshot } from '../../utils/streamTimeline';
2
- import { streamDebugLog, streamDebugTimeline } from '../../utils/streamDebugLog';
3
- var listeners = new Set();
4
- var snapshot = createEmptyTimelineSnapshot();
5
- var emitChange = function emitChange() {
6
- listeners.forEach(function (listener) {
7
- listener();
8
- });
9
- };
10
- export var streamTimelineStore = {
11
- getSnapshot: function getSnapshot() {
12
- return snapshot;
13
- },
14
- getServerSnapshot: function getServerSnapshot() {
15
- return createEmptyTimelineSnapshot();
16
- },
17
- subscribe: function subscribe(listener) {
18
- listeners.add(listener);
19
- return function () {
20
- listeners["delete"](listener);
21
- };
22
- },
23
- replace: function replace(next) {
24
- snapshot = next;
25
- streamDebugTimeline('timelineStore', 'replace', snapshot);
26
- emitChange();
27
- },
28
- clear: function clear() {
29
- if (snapshot.turnId == null && snapshot.segments.length === 0) return;
30
- streamDebugLog('timelineStore', 'clear', {
31
- previousTurnId: snapshot.turnId
32
- });
33
- snapshot = createEmptyTimelineSnapshot();
34
- emitChange();
35
- }
36
- };
37
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVFbXB0eVRpbWVsaW5lU25hcHNob3QiLCJzdHJlYW1EZWJ1Z0xvZyIsInN0cmVhbURlYnVnVGltZWxpbmUiLCJsaXN0ZW5lcnMiLCJTZXQiLCJzbmFwc2hvdCIsImVtaXRDaGFuZ2UiLCJmb3JFYWNoIiwibGlzdGVuZXIiLCJzdHJlYW1UaW1lbGluZVN0b3JlIiwiZ2V0U25hcHNob3QiLCJnZXRTZXJ2ZXJTbmFwc2hvdCIsInN1YnNjcmliZSIsImFkZCIsInJlcGxhY2UiLCJuZXh0IiwiY2xlYXIiLCJ0dXJuSWQiLCJzZWdtZW50cyIsImxlbmd0aCIsInByZXZpb3VzVHVybklkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZVN0cmVhbVRpbWVsaW5lL3N0cmVhbVRpbWVsaW5lU3RvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJlYW1UaW1lbGluZVNuYXBzaG90IH0gZnJvbSAnLi4vLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQgeyBjcmVhdGVFbXB0eVRpbWVsaW5lU25hcHNob3QgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IHN0cmVhbURlYnVnTG9nLCBzdHJlYW1EZWJ1Z1RpbWVsaW5lIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtRGVidWdMb2cnXG5cbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQ8KCkgPT4gdm9pZD4oKVxuXG5sZXQgc25hcHNob3Q6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPSBjcmVhdGVFbXB0eVRpbWVsaW5lU25hcHNob3QoKVxuXG5jb25zdCBlbWl0Q2hhbmdlID0gKCkgPT4ge1xuICBsaXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgbGlzdGVuZXIoKVxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtVGltZWxpbmVTdG9yZSA9IHtcbiAgZ2V0U25hcHNob3QoKTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCB7XG4gICAgcmV0dXJuIHNuYXBzaG90XG4gIH0sXG5cbiAgZ2V0U2VydmVyU25hcHNob3QoKTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCB7XG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5VGltZWxpbmVTbmFwc2hvdCgpXG4gIH0sXG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSB7XG4gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcilcbiAgICB9XG4gIH0sXG5cbiAgcmVwbGFjZShuZXh0OiBTdHJlYW1UaW1lbGluZVNuYXBzaG90KSB7XG4gICAgc25hcHNob3QgPSBuZXh0XG4gICAgc3RyZWFtRGVidWdUaW1lbGluZSgndGltZWxpbmVTdG9yZScsICdyZXBsYWNlJywgc25hcHNob3QpXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG5cbiAgY2xlYXIoKSB7XG4gICAgaWYgKHNuYXBzaG90LnR1cm5JZCA9PSBudWxsICYmIHNuYXBzaG90LnNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgc3RyZWFtRGVidWdMb2coJ3RpbWVsaW5lU3RvcmUnLCAnY2xlYXInLCB7IHByZXZpb3VzVHVybklkOiBzbmFwc2hvdC50dXJuSWQgfSlcbiAgICBzbmFwc2hvdCA9IGNyZWF0ZUVtcHR5VGltZWxpbmVTbmFwc2hvdCgpXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG59XG4iXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLDJCQUEyQixRQUFRLDRCQUE0QjtBQUN4RSxTQUFTQyxjQUFjLEVBQUVDLG1CQUFtQixRQUFRLDRCQUE0QjtBQUVoRixJQUFNQyxTQUFTLEdBQUcsSUFBSUMsR0FBRyxDQUFhLENBQUM7QUFFdkMsSUFBSUMsUUFBZ0MsR0FBR0wsMkJBQTJCLENBQUMsQ0FBQztBQUVwRSxJQUFNTSxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBQSxFQUFTO0VBQ3ZCSCxTQUFTLENBQUNJLE9BQU8sQ0FBQyxVQUFBQyxRQUFRLEVBQUk7SUFDNUJBLFFBQVEsQ0FBQyxDQUFDO0VBQ1osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sSUFBTUMsbUJBQW1CLEdBQUc7RUFDakNDLFdBQVcsV0FBWEEsV0FBV0EsQ0FBQSxFQUEyQjtJQUNwQyxPQUFPTCxRQUFRO0VBQ2pCLENBQUM7RUFFRE0saUJBQWlCLFdBQWpCQSxpQkFBaUJBLENBQUEsRUFBMkI7SUFDMUMsT0FBT1gsMkJBQTJCLENBQUMsQ0FBQztFQUN0QyxDQUFDO0VBRURZLFNBQVMsV0FBVEEsU0FBU0EsQ0FBQ0osUUFBb0IsRUFBRTtJQUM5QkwsU0FBUyxDQUFDVSxHQUFHLENBQUNMLFFBQVEsQ0FBQztJQUN2QixPQUFPLFlBQU07TUFDWEwsU0FBUyxVQUFPLENBQUNLLFFBQVEsQ0FBQztJQUM1QixDQUFDO0VBQ0gsQ0FBQztFQUVETSxPQUFPLFdBQVBBLE9BQU9BLENBQUNDLElBQTRCLEVBQUU7SUFDcENWLFFBQVEsR0FBR1UsSUFBSTtJQUNmYixtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFRyxRQUFRLENBQUM7SUFDekRDLFVBQVUsQ0FBQyxDQUFDO0VBQ2QsQ0FBQztFQUVEVSxLQUFLLFdBQUxBLEtBQUtBLENBQUEsRUFBRztJQUNOLElBQUlYLFFBQVEsQ0FBQ1ksTUFBTSxJQUFJLElBQUksSUFBSVosUUFBUSxDQUFDYSxRQUFRLENBQUNDLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDL0RsQixjQUFjLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRTtNQUFFbUIsY0FBYyxFQUFFZixRQUFRLENBQUNZO0lBQU8sQ0FBQyxDQUFDO0lBQzdFWixRQUFRLEdBQUdMLDJCQUEyQixDQUFDLENBQUM7SUFDeENNLFVBQVUsQ0FBQyxDQUFDO0VBQ2Q7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,124 +0,0 @@
1
- import _toArray from "@babel/runtime/helpers/toArray";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
4
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
- import { fetchMaia } from '../client';
6
- export var getAvailableConnectors = /*#__PURE__*/function () {
7
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
8
- var response;
9
- return _regeneratorRuntime.wrap(function (_context) {
10
- while (1) switch (_context.prev = _context.next) {
11
- case 0:
12
- _context.next = 1;
13
- return fetchMaia({
14
- path: 'connectors',
15
- method: 'GET'
16
- });
17
- case 1:
18
- response = _context.sent;
19
- if (response.ok) {
20
- _context.next = 2;
21
- break;
22
- }
23
- throw new Error('Failed to fetch connectors');
24
- case 2:
25
- return _context.abrupt("return", response.json());
26
- case 3:
27
- case "end":
28
- return _context.stop();
29
- }
30
- }, _callee);
31
- }));
32
- return function getAvailableConnectors() {
33
- return _ref.apply(this, arguments);
34
- };
35
- }();
36
- export var getAgentConnectors = /*#__PURE__*/function () {
37
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(agentId) {
38
- var response;
39
- return _regeneratorRuntime.wrap(function (_context2) {
40
- while (1) switch (_context2.prev = _context2.next) {
41
- case 0:
42
- _context2.next = 1;
43
- return fetchMaia({
44
- path: "agents/".concat(agentId, "/connectors"),
45
- method: 'GET'
46
- });
47
- case 1:
48
- response = _context2.sent;
49
- if (response.ok) {
50
- _context2.next = 2;
51
- break;
52
- }
53
- throw new Error('Failed to fetch agent connectors');
54
- case 2:
55
- return _context2.abrupt("return", response.json());
56
- case 3:
57
- case "end":
58
- return _context2.stop();
59
- }
60
- }, _callee2);
61
- }));
62
- return function getAgentConnectors(_x) {
63
- return _ref2.apply(this, arguments);
64
- };
65
- }();
66
- export var saveAgentConnectors = /*#__PURE__*/function () {
67
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(agentId, connectorSlugs) {
68
- var response;
69
- return _regeneratorRuntime.wrap(function (_context3) {
70
- while (1) switch (_context3.prev = _context3.next) {
71
- case 0:
72
- _context3.next = 1;
73
- return fetchMaia({
74
- path: "agents/".concat(agentId, "/connectors"),
75
- method: 'POST',
76
- body: {
77
- connector_slugs: connectorSlugs
78
- }
79
- });
80
- case 1:
81
- response = _context3.sent;
82
- if (response.ok) {
83
- _context3.next = 2;
84
- break;
85
- }
86
- throw new Error('Failed to save agent connectors');
87
- case 2:
88
- return _context3.abrupt("return", response.json());
89
- case 3:
90
- case "end":
91
- return _context3.stop();
92
- }
93
- }, _callee3);
94
- }));
95
- return function saveAgentConnectors(_x2, _x3) {
96
- return _ref3.apply(this, arguments);
97
- };
98
- }();
99
- export var openConnectorAuthorizationWindows = function openConnectorAuthorizationWindows(authorizations, popupWindow) {
100
- if (!authorizations.length) {
101
- if (popupWindow && !popupWindow.closed) {
102
- popupWindow.close();
103
- }
104
- return;
105
- }
106
- var _authorizations = _toArray(authorizations),
107
- firstAuthorization = _authorizations[0],
108
- remainingAuthorizations = _arrayLikeToArray(_authorizations).slice(1);
109
- if (popupWindow && !popupWindow.closed) {
110
- popupWindow.location.href = firstAuthorization.auth_url;
111
- } else {
112
- window.open(firstAuthorization.auth_url, '_blank', 'popup=yes,width=560,height=760');
113
- }
114
- remainingAuthorizations.forEach(function (authorization) {
115
- window.open(authorization.auth_url, '_blank', 'popup=yes,width=560,height=760');
116
- });
117
- };
118
- export var connectorAuthErrorMessage = function connectorAuthErrorMessage(error) {
119
- if (error.slug === 'netsuite') {
120
- return error.message;
121
- }
122
- return "".concat(error.name, ": ").concat(error.message);
123
- };
124
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJnZXRBdmFpbGFibGVDb25uZWN0b3JzIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInBhdGgiLCJtZXRob2QiLCJzZW50Iiwib2siLCJFcnJvciIsImFicnVwdCIsImpzb24iLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJnZXRBZ2VudENvbm5lY3RvcnMiLCJfcmVmMiIsIl9jYWxsZWUyIiwiYWdlbnRJZCIsIl9jb250ZXh0MiIsImNvbmNhdCIsIl94Iiwic2F2ZUFnZW50Q29ubmVjdG9ycyIsIl9yZWYzIiwiX2NhbGxlZTMiLCJjb25uZWN0b3JTbHVncyIsIl9jb250ZXh0MyIsImJvZHkiLCJjb25uZWN0b3Jfc2x1Z3MiLCJfeDIiLCJfeDMiLCJvcGVuQ29ubmVjdG9yQXV0aG9yaXphdGlvbldpbmRvd3MiLCJhdXRob3JpemF0aW9ucyIsInBvcHVwV2luZG93IiwibGVuZ3RoIiwiY2xvc2VkIiwiY2xvc2UiLCJfYXV0aG9yaXphdGlvbnMiLCJfdG9BcnJheSIsImZpcnN0QXV0aG9yaXphdGlvbiIsInJlbWFpbmluZ0F1dGhvcml6YXRpb25zIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJzbGljZSIsImxvY2F0aW9uIiwiaHJlZiIsImF1dGhfdXJsIiwid2luZG93Iiwib3BlbiIsImZvckVhY2giLCJhdXRob3JpemF0aW9uIiwiY29ubmVjdG9yQXV0aEVycm9yTWVzc2FnZSIsImVycm9yIiwic2x1ZyIsIm1lc3NhZ2UiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvQWdlbnRzL2Nvbm5lY3RvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuXG5leHBvcnQgdHlwZSBDYXRhbG9nQ29ubmVjdG9yID0ge1xuICBpZDogbnVtYmVyXG4gIHNsdWc6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgaWNvbl91cmw/OiBzdHJpbmdcbiAgcmVxdWlyZXNfYXV0aDogYm9vbGVhblxuICBpc19hY3RpdmU6IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgQWdlbnRDb25uZWN0b3IgPSBDYXRhbG9nQ29ubmVjdG9yICYge1xuICBlbmFibGVkX2Zvcl9hZ2VudDogYm9vbGVhblxuICB1c2VyX2F1dGhvcml6ZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgUGVuZGluZ0Nvbm5lY3RvckF1dGhvcml6YXRpb24gPSB7XG4gIHNsdWc6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgYXV0aF91cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBDb25uZWN0b3JBdXRoRXJyb3IgPSB7XG4gIHNsdWc6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgbWVzc2FnZTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFNhdmVBZ2VudENvbm5lY3RvcnNSZXNwb25zZSA9IHtcbiAgYWdlbnRfaWQ6IHN0cmluZ1xuICBjb25uZWN0b3Jfc2x1Z3M6IHN0cmluZ1tdXG4gIHJlcXVpcmVzX2F1dGg/OiBQZW5kaW5nQ29ubmVjdG9yQXV0aG9yaXphdGlvbltdXG4gIGF1dGhfZXJyb3JzPzogQ29ubmVjdG9yQXV0aEVycm9yW11cbn1cblxuZXhwb3J0IGNvbnN0IGdldEF2YWlsYWJsZUNvbm5lY3RvcnMgPSBhc3luYyAoKTogUHJvbWlzZTxDYXRhbG9nQ29ubmVjdG9yW10+ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgIHBhdGg6ICdjb25uZWN0b3JzJyxcbiAgICBtZXRob2Q6ICdHRVQnLFxuICB9KVxuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBjb25uZWN0b3JzJylcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZS5qc29uKClcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFnZW50Q29ubmVjdG9ycyA9IGFzeW5jIChhZ2VudElkOiBzdHJpbmcpOiBQcm9taXNlPEFnZW50Q29ubmVjdG9yW10+ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgIHBhdGg6IGBhZ2VudHMvJHthZ2VudElkfS9jb25uZWN0b3JzYCxcbiAgICBtZXRob2Q6ICdHRVQnLFxuICB9KVxuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBhZ2VudCBjb25uZWN0b3JzJylcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZS5qc29uKClcbn1cblxuZXhwb3J0IGNvbnN0IHNhdmVBZ2VudENvbm5lY3RvcnMgPSBhc3luYyAoXG4gIGFnZW50SWQ6IHN0cmluZyxcbiAgY29ubmVjdG9yU2x1Z3M6IHN0cmluZ1tdXG4pOiBQcm9taXNlPFNhdmVBZ2VudENvbm5lY3RvcnNSZXNwb25zZT4gPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgcGF0aDogYGFnZW50cy8ke2FnZW50SWR9L2Nvbm5lY3RvcnNgLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGJvZHk6IHtcbiAgICAgIGNvbm5lY3Rvcl9zbHVnczogY29ubmVjdG9yU2x1Z3MsXG4gICAgfSxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gc2F2ZSBhZ2VudCBjb25uZWN0b3JzJylcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZS5qc29uKClcbn1cblxuZXhwb3J0IGNvbnN0IG9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cyA9IChcbiAgYXV0aG9yaXphdGlvbnM6IFBlbmRpbmdDb25uZWN0b3JBdXRob3JpemF0aW9uW10sXG4gIHBvcHVwV2luZG93PzogV2luZG93IHwgbnVsbFxuKSA9PiB7XG4gIGlmICghYXV0aG9yaXphdGlvbnMubGVuZ3RoKSB7XG4gICAgaWYgKHBvcHVwV2luZG93ICYmICFwb3B1cFdpbmRvdy5jbG9zZWQpIHtcbiAgICAgIHBvcHVwV2luZG93LmNsb3NlKClcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBbZmlyc3RBdXRob3JpemF0aW9uLCAuLi5yZW1haW5pbmdBdXRob3JpemF0aW9uc10gPSBhdXRob3JpemF0aW9uc1xuXG4gIGlmIChwb3B1cFdpbmRvdyAmJiAhcG9wdXBXaW5kb3cuY2xvc2VkKSB7XG4gICAgcG9wdXBXaW5kb3cubG9jYXRpb24uaHJlZiA9IGZpcnN0QXV0aG9yaXphdGlvbi5hdXRoX3VybFxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5vcGVuKGZpcnN0QXV0aG9yaXphdGlvbi5hdXRoX3VybCwgJ19ibGFuaycsICdwb3B1cD15ZXMsd2lkdGg9NTYwLGhlaWdodD03NjAnKVxuICB9XG5cbiAgcmVtYWluaW5nQXV0aG9yaXphdGlvbnMuZm9yRWFjaChhdXRob3JpemF0aW9uID0+IHtcbiAgICB3aW5kb3cub3BlbihhdXRob3JpemF0aW9uLmF1dGhfdXJsLCAnX2JsYW5rJywgJ3BvcHVwPXllcyx3aWR0aD01NjAsaGVpZ2h0PTc2MCcpXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0b3JBdXRoRXJyb3JNZXNzYWdlID0gKGVycm9yOiBDb25uZWN0b3JBdXRoRXJyb3IpOiBzdHJpbmcgPT4ge1xuICBpZiAoZXJyb3Iuc2x1ZyA9PT0gJ25ldHN1aXRlJykge1xuICAgIHJldHVybiBlcnJvci5tZXNzYWdlXG4gIH1cbiAgcmV0dXJuIGAke2Vycm9yLm5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YFxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EsU0FBUyxRQUFRLFdBQVc7QUFvQ3JDLE9BQU8sSUFBTUMsc0JBQXNCO0VBQUEsSUFBQUMsSUFBQSxHQUFBQyxpQkFB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aUMsQ0FBQztRQUFBO1VBQUEsT0FBQWlCLFNBQUEsQ0FBQWhCLE1BQUEsV0FHN0NWLFFBQVEsQ0FBQ1csSUFBSSxDQUFDLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQWUsU0FBQSxDQUFBZCxJQUFBO01BQUE7SUFBQSxHQUFBWSxRQUFBO0VBQUEsQ0FDdkI7RUFBQSxnQkFqQllGLG1CQUFtQkEsQ0FBQU8sR0FBQSxFQUFBQyxHQUFBO0lBQUEsT0FBQVAsS0FBQSxDQUFBVixLQUFBLE9BQUFDLFNBQUE7RUFBQTtBQUFBLEdBaUIvQjtBQUVELE9BQU8sSUFBTWlCLGlDQUFpQyxHQUFHLFNBQXBDQSxpQ0FBaUNBLENBQzVDQyxjQUErQyxFQUMvQ0MsV0FBMkIsRUFDeEI7RUFDSCxJQUFJLENBQUNELGNBQWMsQ0FBQ0UsTUFBTSxFQUFFO0lBQzFCLElBQUlELFdBQVcsSUFBSSxDQUFDQSxXQUFXLENBQUNFLE1BQU0sRUFBRTtNQUN0Q0YsV0FBVyxDQUFDRyxLQUFLLENBQUMsQ0FBQztJQUNyQjtJQUNBO0VBQ0Y7RUFFQSxJQUFBQyxlQUFBLEdBQUFDLFFBQUEsQ0FBeUROLGNBQWM7SUFBaEVPLGtCQUFrQixHQUFBRixlQUFBO0lBQUtHLHVCQUF1QixHQUFBQyxpQkFBQSxDQUFBSixlQUFBLEVBQUFLLEtBQUE7RUFFckQsSUFBSVQsV0FBVyxJQUFJLENBQUNBLFdBQVcsQ0FBQ0UsTUFBTSxFQUFFO0lBQ3RDRixXQUFXLENBQUNVLFFBQVEsQ0FBQ0MsSUFBSSxHQUFHTCxrQkFBa0IsQ0FBQ00sUUFBUTtFQUN6RCxDQUFDLE1BQU07SUFDTEMsTUFBTSxDQUFDQyxJQUFJLENBQUNSLGtCQUFrQixDQUFDTSxRQUFRLEVBQUUsUUFBUSxFQUFFLGdDQUFnQyxDQUFDO0VBQ3RGO0VBRUFMLHVCQUF1QixDQUFDUSxPQUFPLENBQUMsVUFBQUMsYUFBYSxFQUFJO0lBQy9DSCxNQUFNLENBQUNDLElBQUksQ0FBQ0UsYUFBYSxDQUFDSixRQUFRLEVBQUUsUUFBUSxFQUFFLGdDQUFnQyxDQUFDO0VBQ2pGLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLElBQU1LLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQUlDLEtBQXlCLEVBQWE7RUFDOUUsSUFBSUEsS0FBSyxDQUFDQyxJQUFJLEtBQUssVUFBVSxFQUFFO0lBQzdCLE9BQU9ELEtBQUssQ0FBQ0UsT0FBTztFQUN0QjtFQUNBLFVBQUFqQyxNQUFBLENBQVUrQixLQUFLLENBQUNHLElBQUksUUFBQWxDLE1BQUEsQ0FBSytCLEtBQUssQ0FBQ0UsT0FBTztBQUN4QyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3N0cmVhbVRpbWVsaW5lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RyZWFtRXhlY3V0aW9uU3RlcCwgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuL3N0cmVhbUFjdGl2aXR5J1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UaW1lbGluZUV4ZWN1dGlvblNlZ21lbnQgPSB7XG4gIHR5cGU6ICdleGVjdXRpb24nXG4gIGlkOiBzdHJpbmdcbiAgc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXVxufVxuXG5leHBvcnQgdHlwZSBTdHJlYW1UaW1lbGluZUNvbnRlbnRTZWdtZW50ID0ge1xuICB0eXBlOiAnY29udGVudCdcbiAgaWQ6IHN0cmluZ1xuICB0ZXh0OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgU3RyZWFtVGltZWxpbmVTZWdtZW50ID0gU3RyZWFtVGltZWxpbmVFeGVjdXRpb25TZWdtZW50IHwgU3RyZWFtVGltZWxpbmVDb250ZW50U2VnbWVudFxuXG5leHBvcnQgdHlwZSBTdHJlYW1UaW1lbGluZVNuYXBzaG90ID0ge1xuICB0dXJuSWQ6IHN0cmluZyB8IG51bGxcbiAgc2VnbWVudHM6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdXG4gIC8qKiBMb25naXR1ZCBkZWwgdGV4dG8geWEgYXNpZ25hZG8gYSBzZWdtZW50b3MgZGUgY29udGVuaWRvIGNlcnJhZG9zLiAqL1xuICBjb250ZW50RnJvemVuTGVuZ3RoOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgU3RyZWFtVGltZWxpbmVJbml0aWFsQWN0aXZpdHkgPSBQaWNrPFN0cmVhbUFjdGl2aXR5LCAncGhhc2UnIHwgJ21lc3NhZ2UnIHwgJ2F0dGFjaG1lbnRzQ291bnQnPiB8IG51bGxcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==