@projectcor/maia-components 2.11.103-5 → 2.11.103-7

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 (72) hide show
  1. package/lib/App.js +19 -44
  2. package/lib/components/atoms/MAIAInput/MAIAInput.js +6 -1
  3. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +20 -0
  4. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +20 -0
  5. package/lib/components/atoms/SessionGeneratingDot/index.js +2 -0
  6. package/lib/components/atoms/icons/MaiaSparkleIcon.js +75 -0
  7. package/lib/components/atoms/icons/index.js +2 -1
  8. package/lib/components/index.js +1 -2
  9. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +4 -91
  10. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +46 -7
  11. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +311 -69
  12. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +28 -18
  13. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +9 -2
  14. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +69 -61
  15. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +5 -1
  16. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +66 -0
  17. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +55 -0
  18. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +2 -0
  19. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -2
  20. package/lib/components/molecules/Sidebar/Sidebar.js +104 -61
  21. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +16 -1
  22. package/lib/components/molecules/Sidebar/Sidebar.styles.js +30 -29
  23. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +6 -35
  24. package/lib/components/organisms/ChatAI/ChatAI.js +131 -40
  25. package/lib/context/global-context.js +3 -1
  26. package/lib/hooks/useAgentModel/useCreateAgent.js +14 -61
  27. package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -58
  28. package/lib/hooks/useChatManager/useChatManager.js +530 -438
  29. package/lib/hooks/useChatMessages/useChatMessages.js +427 -236
  30. package/lib/hooks/useChats/useChats.js +21 -4
  31. package/lib/hooks/useEvent.js +1 -2
  32. package/lib/hooks/useMinimizedPillBottomOffset.js +110 -0
  33. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  34. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +139 -521
  35. package/lib/hooks/useStreamingMessage/index.js +2 -3
  36. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +13 -17
  37. package/lib/index.js +2 -5
  38. package/lib/lang/br/index.js +11 -9
  39. package/lib/lang/en/index.js +11 -9
  40. package/lib/lang/es/index.js +11 -9
  41. package/lib/lang/fr/index.js +13 -10
  42. package/lib/services/maia/Chats/getChatsByUserId.js +6 -4
  43. package/lib/services/maia/Chats/index.js +3 -1
  44. package/lib/services/maia/Chats/markSessionAsRead.js +32 -0
  45. package/lib/store/chatsSidebarOptimistic.js +92 -0
  46. package/lib/store/chatsStore.types.js +1 -1
  47. package/lib/store/maiaMinimizedPersistence.js +49 -0
  48. package/lib/store/sessions/activeView.js +22 -0
  49. package/lib/store/sessions/index.js +9 -0
  50. package/lib/store/sessions/sessionHitlContext.js +15 -0
  51. package/lib/store/sessions/sessionNotificationSound.js +57 -0
  52. package/lib/store/sessions/sessionNotifications.js +110 -0
  53. package/lib/store/sessions/sessionNotifications.types.js +2 -0
  54. package/lib/store/sessions/sessionStreamManager.js +576 -0
  55. package/lib/store/sessions/sessionStreamingText.js +80 -0
  56. package/lib/store/sessions/sessions.types.js +35 -0
  57. package/lib/store/sessions/useSessionMeta.js +39 -0
  58. package/lib/store/sessions/useSessionStreamingText.js +18 -0
  59. package/lib/store/sessions/useSessionsStore.js +197 -0
  60. package/lib/store/useChatsStore.js +149 -12
  61. package/lib/types/Chat.js +1 -1
  62. package/lib/types/agentModal.js +1 -1
  63. package/lib/utils/formatUnreadCount.js +6 -0
  64. package/lib/utils/maiaHostOpen.js +54 -0
  65. package/lib/utils/normalizeAgentConnectors.js +3 -28
  66. package/package.json +3 -3
  67. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -543
  68. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  69. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  70. package/lib/dev/DevMaiaPage.js +0 -30
  71. package/lib/hooks/useStreamingMessage/streamingStore.js +0 -69
  72. package/lib/services/maia/Agents/connectors.js +0 -250
@@ -9,7 +9,6 @@ import { useState, useRef } from 'react';
9
9
  import { useTranslation } from 'react-i18next';
10
10
  import { updateAgent } from '../../services/maia/Agents/updateAgent';
11
11
  import { setAgentToolGroups } from '../../services/maia/Agents/setAgentToolGroups';
12
- import { connectorAuthErrorMessage, openConnectorAuthorizationWindows, saveAgentConnectors, waitForConnectorAuthorization } from '../../services/maia/Agents/connectors';
13
12
  import { useSnackBarManager } from '../useSnackBarManager/useSnackBarManager';
14
13
  import { buildAgentToolGroupsRequest, buildAgentConnectorsFromTaskAccess } from '../../utils/normalizeAgentConnectors';
15
14
  export var parsedValuesByReq = function parsedValuesByReq(agentValues) {
@@ -48,7 +47,7 @@ export var useUpdateAgent = function useUpdateAgent() {
48
47
  };
49
48
  var handleUpdateAgent = /*#__PURE__*/function () {
50
49
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values) {
51
- var parsedValue, _values$accessibility, _values$accessibility2, _values$accessibility3, _values$general, response, taskAccess, selectedConnectors, agentId, authPopup, connectorsResponse, pendingAuth, authPopupWindow, authErrors, _yield$waitForConnect, authorized, authError, _t, _t2, _t3;
50
+ var parsedValue, _values$accessibility, _values$accessibility2, _values$general, response, taskAccess, agentId, _t, _t2;
52
51
  return _regeneratorRuntime.wrap(function (_context) {
53
52
  while (1) switch (_context.prev = _context.next) {
54
53
  case 0:
@@ -74,11 +73,9 @@ export var useUpdateAgent = function useUpdateAgent() {
74
73
  throw new Error(response.error);
75
74
  case 4:
76
75
  taskAccess = (_values$accessibility = (_values$accessibility2 = values.accessibility) === null || _values$accessibility2 === void 0 ? void 0 : _values$accessibility2.taskAccess) !== null && _values$accessibility !== void 0 ? _values$accessibility : true;
77
- selectedConnectors = ((_values$accessibility3 = values.accessibility) === null || _values$accessibility3 === void 0 ? void 0 : _values$accessibility3.selectedConnectors) || [];
78
76
  agentId = (_values$general = values.general) === null || _values$general === void 0 ? void 0 : _values$general.id;
79
- authPopup = selectedConnectors.length > 0 ? window.open('', '_blank', 'popup=yes,width=560,height=760') : null;
80
77
  if (!agentId) {
81
- _context.next = 13;
78
+ _context.next = 8;
82
79
  break;
83
80
  }
84
81
  _context.prev = 5;
@@ -92,70 +89,26 @@ export var useUpdateAgent = function useUpdateAgent() {
92
89
  _t = _context["catch"](5);
93
90
  console.error('Error setting agent tool groups:', _t);
94
91
  case 8:
95
- _context.prev = 8;
96
- _context.next = 9;
97
- return saveAgentConnectors(agentId.toString(), selectedConnectors);
98
- case 9:
99
- connectorsResponse = _context.sent;
100
- pendingAuth = connectorsResponse.requires_auth || [];
101
- authPopupWindow = openConnectorAuthorizationWindows(pendingAuth, authPopup);
102
- authErrors = connectorsResponse.auth_errors || [];
103
- if (authErrors.length) {
104
- handleSnackbarError(authErrors.map(function (error) {
105
- return error.slug === 'netsuite' ? t('accessibilitySection.netsuiteAuthSetupRequired') : connectorAuthErrorMessage(error);
106
- }).join(' '));
107
- }
108
- if (!pendingAuth.length) {
109
- _context.next = 11;
110
- break;
111
- }
112
- _context.next = 10;
113
- return waitForConnectorAuthorization({
114
- agentId: agentId.toString(),
115
- slugs: pendingAuth.map(function (item) {
116
- return item.slug;
117
- }),
118
- popup: authPopupWindow
119
- });
120
- case 10:
121
- _yield$waitForConnect = _context.sent;
122
- authorized = _yield$waitForConnect.authorized;
123
- authError = _yield$waitForConnect.error;
124
- if (!authorized.length) {
125
- handleSnackbarError(authError && authError !== 'timeout' ? authError : t('accessibilitySection.connectorAuthIncomplete'));
126
- }
127
- case 11:
128
- _context.next = 13;
129
- break;
130
- case 12:
131
- _context.prev = 12;
132
- _t2 = _context["catch"](8);
133
- console.error('Error setting agent connectors:', _t2);
134
- if (authPopup && !authPopup.closed) {
135
- authPopup.close();
136
- }
137
- handleSnackbarError(t('accessibilitySection.connectorAuthFailed'));
138
- case 13:
139
92
  setError(null);
140
93
  setSuccess(_objectSpread(_objectSpread({}, response), {}, {
141
- connectors: buildAgentConnectorsFromTaskAccess(taskAccess, selectedConnectors)
94
+ connectors: buildAgentConnectorsFromTaskAccess(taskAccess)
142
95
  }));
143
96
  setIsLoading(false);
144
97
  isProcessingRef.current = false;
145
- _context.next = 15;
98
+ _context.next = 10;
146
99
  break;
147
- case 14:
148
- _context.prev = 14;
149
- _t3 = _context["catch"](2);
150
- setError(_t3 instanceof Error ? _t3.message : t('errorAgentCreated'));
100
+ case 9:
101
+ _context.prev = 9;
102
+ _t2 = _context["catch"](2);
103
+ setError(_t2 instanceof Error ? _t2.message : t('errorAgentCreated'));
151
104
  setIsLoading(false);
152
105
  isProcessingRef.current = false;
153
106
  handleSnackbarError(t('errorAgentCreated'));
154
- case 15:
107
+ case 10:
155
108
  case "end":
156
109
  return _context.stop();
157
110
  }
158
- }, _callee, null, [[2, 14], [5, 7], [8, 12]]);
111
+ }, _callee, null, [[2, 9], [5, 7]]);
159
112
  }));
160
113
  return function handleUpdateAgent(_x) {
161
114
  return _ref.apply(this, arguments);
@@ -173,4 +126,4 @@ export var useUpdateAgent = function useUpdateAgent() {
173
126
  resetSuccess: resetSuccess
174
127
  };
175
128
  };
176
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZVRyYW5zbGF0aW9uIiwidXBkYXRlQWdlbnQiLCJzZXRBZ2VudFRvb2xHcm91cHMiLCJjb25uZWN0b3JBdXRoRXJyb3JNZXNzYWdlIiwib3BlbkNvbm5lY3RvckF1dGhvcml6YXRpb25XaW5kb3dzIiwic2F2ZUFnZW50Q29ubmVjdG9ycyIsIndhaXRGb3JDb25uZWN0b3JBdXRob3JpemF0aW9uIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0IiwiYnVpbGRBZ2VudENvbm5lY3RvcnNGcm9tVGFza0FjY2VzcyIsInBhcnNlZFZhbHVlc0J5UmVxIiwiYWdlbnRWYWx1ZXMiLCJfYWdlbnRWYWx1ZXMkYWlNb2RlbCIsIl9hZ2VudFZhbHVlcyRhaU1vZGVsMiIsImlkIiwibmFtZSIsImVtb2ppIiwiaW50cm9kdWN0aW9uIiwiaW5wdXRfcGxhY2Vob2xkZXIiLCJpbnB1dFBsYWNlaG9sZGVyIiwidXNlcl9wcm9tcHQiLCJ1c2VyUHJvbXB0IiwicHJvdmlkZXIiLCJhaU1vZGVsIiwibW9kZWxfbmFtZSIsInVzZVVwZGF0ZUFnZW50IiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic3VjY2VzcyIsInNldFN1Y2Nlc3MiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsImlzUHJvY2Vzc2luZ1JlZiIsImhhbmRsZVNldFN1Y2Nlc3MiLCJ2YWx1ZSIsImhhbmRsZVVwZGF0ZUFnZW50IiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwidmFsdWVzIiwicGFyc2VkVmFsdWUiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkyIiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5MyIsIl92YWx1ZXMkZ2VuZXJhbCIsInJlc3BvbnNlIiwidGFza0FjY2VzcyIsInNlbGVjdGVkQ29ubmVjdG9ycyIsImFnZW50SWQiLCJhdXRoUG9wdXAiLCJjb25uZWN0b3JzUmVzcG9uc2UiLCJwZW5kaW5nQXV0aCIsImF1dGhQb3B1cFdpbmRvdyIsImF1dGhFcnJvcnMiLCJfeWllbGQkd2FpdEZvckNvbm5lY3QiLCJhdXRob3JpemVkIiwiYXV0aEVycm9yIiwiX3QiLCJfdDIiLCJfdDMiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJhYnJ1cHQiLCJnZW5lcmFsIiwic2VudCIsIkVycm9yIiwiYWNjZXNzaWJpbGl0eSIsImxlbmd0aCIsIndpbmRvdyIsIm9wZW4iLCJ0b1N0cmluZyIsImNvbnNvbGUiLCJyZXF1aXJlc19hdXRoIiwiYXV0aF9lcnJvcnMiLCJtYXAiLCJzbHVnIiwiam9pbiIsInNsdWdzIiwiaXRlbSIsInBvcHVwIiwiY2xvc2VkIiwiY2xvc2UiLCJfb2JqZWN0U3ByZWFkIiwiY29ubmVjdG9ycyIsIm1lc3NhZ2UiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsInJlc2V0U3VjY2VzcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VBZ2VudE1vZGVsL3VzZVVwZGF0ZUFnZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEFnZW50VXBkYXRlUmVxdWVzdCwgdXBkYXRlQWdlbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy91cGRhdGVBZ2VudCdcbmltcG9ydCB7IHNldEFnZW50VG9vbEdyb3VwcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL3NldEFnZW50VG9vbEdyb3VwcydcbmltcG9ydCB7IGNvbm5lY3RvckF1dGhFcnJvck1lc3NhZ2UsIG9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cywgc2F2ZUFnZW50Q29ubmVjdG9ycywgd2FpdEZvckNvbm5lY3RvckF1dGhvcml6YXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9jb25uZWN0b3JzJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCwgYnVpbGRBZ2VudENvbm5lY3RvcnNGcm9tVGFza0FjY2VzcyB9IGZyb20gJy4uLy4uL3V0aWxzL25vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycydcblxuZXhwb3J0IGNvbnN0IHBhcnNlZFZhbHVlc0J5UmVxID0gKGFnZW50VmFsdWVzOiBhbnkpOiBBZ2VudFVwZGF0ZVJlcXVlc3QgPT4ge1xuICByZXR1cm4ge1xuICAgIGlkOiBhZ2VudFZhbHVlcy5pZCxcbiAgICBuYW1lOiBhZ2VudFZhbHVlcy5uYW1lLFxuICAgIGVtb2ppOiBhZ2VudFZhbHVlcy5lbW9qaSB8fCAn4pyoJyxcbiAgICBpbnRyb2R1Y3Rpb246IGFnZW50VmFsdWVzLmludHJvZHVjdGlvbiB8fCAnJyxcbiAgICBpbnB1dF9wbGFjZWhvbGRlcjogYWdlbnRWYWx1ZXMuaW5wdXRQbGFjZWhvbGRlciB8fCAnJyxcbiAgICB1c2VyX3Byb21wdDogYWdlbnRWYWx1ZXMudXNlclByb21wdCxcbiAgICBwcm92aWRlcjogYWdlbnRWYWx1ZXMuYWlNb2RlbD8ucHJvdmlkZXIsXG4gICAgbW9kZWxfbmFtZTogYWdlbnRWYWx1ZXMuYWlNb2RlbD8ubW9kZWxfbmFtZSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlVXBkYXRlQWdlbnQgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzdWNjZXNzLCBzZXRTdWNjZXNzXSA9IHVzZVN0YXRlPGFueT4oZmFsc2UpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgaXNQcm9jZXNzaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZVNldFN1Y2Nlc3MgPSAodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTdWNjZXNzKHZhbHVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBkYXRlQWdlbnQgPSBhc3luYyAodmFsdWVzOiBhbnkpID0+IHtcbiAgICBpZiAoaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZFZhbHVlOiBBZ2VudFVwZGF0ZVJlcXVlc3QgPSBwYXJzZWRWYWx1ZXNCeVJlcSh2YWx1ZXMuZ2VuZXJhbClcblxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHNldElzTG9hZGluZyh0cnVlKVxuICAgIHNldFN1Y2Nlc3MoZmFsc2UpXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB1cGRhdGVBZ2VudChwYXJzZWRWYWx1ZSlcblxuICAgICAgaWYgKHJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5lcnJvcilcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFza0FjY2VzcyA9IHZhbHVlcy5hY2Nlc3NpYmlsaXR5Py50YXNrQWNjZXNzID8/IHRydWVcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ29ubmVjdG9yczogc3RyaW5nW10gPSB2YWx1ZXMuYWNjZXNzaWJpbGl0eT8uc2VsZWN0ZWRDb25uZWN0b3JzIHx8IFtdXG4gICAgICBjb25zdCBhZ2VudElkID0gdmFsdWVzLmdlbmVyYWw/LmlkXG4gICAgICBjb25zdCBhdXRoUG9wdXAgPVxuICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnMubGVuZ3RoID4gMCA/IHdpbmRvdy5vcGVuKCcnLCAnX2JsYW5rJywgJ3BvcHVwPXllcyx3aWR0aD01NjAsaGVpZ2h0PTc2MCcpIDogbnVsbFxuICAgICAgaWYgKGFnZW50SWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBzZXRBZ2VudFRvb2xHcm91cHMoYWdlbnRJZC50b1N0cmluZygpLCBidWlsZEFnZW50VG9vbEdyb3Vwc1JlcXVlc3QodGFza0FjY2VzcykpXG4gICAgICAgIH0gY2F0Y2ggKHRvb2xHcm91cHNFcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNldHRpbmcgYWdlbnQgdG9vbCBncm91cHM6JywgdG9vbEdyb3Vwc0Vycm9yKVxuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb25uZWN0b3JzUmVzcG9uc2UgPSBhd2FpdCBzYXZlQWdlbnRDb25uZWN0b3JzKGFnZW50SWQudG9TdHJpbmcoKSwgc2VsZWN0ZWRDb25uZWN0b3JzKVxuICAgICAgICAgIGNvbnN0IHBlbmRpbmdBdXRoID0gY29ubmVjdG9yc1Jlc3BvbnNlLnJlcXVpcmVzX2F1dGggfHwgW11cbiAgICAgICAgICBjb25zdCBhdXRoUG9wdXBXaW5kb3cgPSBvcGVuQ29ubmVjdG9yQXV0aG9yaXphdGlvbldpbmRvd3MocGVuZGluZ0F1dGgsIGF1dGhQb3B1cClcbiAgICAgICAgICBjb25zdCBhdXRoRXJyb3JzID0gY29ubmVjdG9yc1Jlc3BvbnNlLmF1dGhfZXJyb3JzIHx8IFtdXG4gICAgICAgICAgaWYgKGF1dGhFcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKFxuICAgICAgICAgICAgICBhdXRoRXJyb3JzLm1hcChlcnJvciA9PlxuICAgICAgICAgICAgICAgIGVycm9yLnNsdWcgPT09ICduZXRzdWl0ZScgPyB0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5uZXRzdWl0ZUF1dGhTZXR1cFJlcXVpcmVkJykgOiBjb25uZWN0b3JBdXRoRXJyb3JNZXNzYWdlKGVycm9yKVxuICAgICAgICAgICAgICApLmpvaW4oJyAnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGVuZGluZ0F1dGgubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCB7IGF1dGhvcml6ZWQsIGVycm9yOiBhdXRoRXJyb3IgfSA9IGF3YWl0IHdhaXRGb3JDb25uZWN0b3JBdXRob3JpemF0aW9uKHtcbiAgICAgICAgICAgICAgYWdlbnRJZDogYWdlbnRJZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICBzbHVnczogcGVuZGluZ0F1dGgubWFwKGl0ZW0gPT4gaXRlbS5zbHVnKSxcbiAgICAgICAgICAgICAgcG9wdXA6IGF1dGhQb3B1cFdpbmRvdyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBpZiAoIWF1dGhvcml6ZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoYXV0aEVycm9yICYmIGF1dGhFcnJvciAhPT0gJ3RpbWVvdXQnXG4gICAgICAgICAgICAgICAgPyBhdXRoRXJyb3JcbiAgICAgICAgICAgICAgICA6IHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvckF1dGhJbmNvbXBsZXRlJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChjb25uZWN0b3JzRXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzZXR0aW5nIGFnZW50IGNvbm5lY3RvcnM6JywgY29ubmVjdG9yc0Vycm9yKVxuICAgICAgICAgIGlmIChhdXRoUG9wdXAgJiYgIWF1dGhQb3B1cC5jbG9zZWQpIHtcbiAgICAgICAgICAgIGF1dGhQb3B1cC5jbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yQXV0aEZhaWxlZCcpKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICBzZXRTdWNjZXNzKHsgLi4ucmVzcG9uc2UsIGNvbm5lY3RvcnM6IGJ1aWxkQWdlbnRDb25uZWN0b3JzRnJvbVRhc2tBY2Nlc3ModGFza0FjY2Vzcywgc2VsZWN0ZWRDb25uZWN0b3JzKSB9KVxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0RXJyb3IoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IHQoJ2Vycm9yQWdlbnRDcmVhdGVkJykpXG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWdlbnRDcmVhdGVkJykpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzZXRTdWNjZXNzID0gKCkgPT4ge1xuICAgIHNldFN1Y2Nlc3MoZmFsc2UpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGhhbmRsZVVwZGF0ZUFnZW50LFxuICAgIGlzTG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBzdWNjZXNzLFxuICAgIGhhbmRsZVNldFN1Y2Nlc3MsXG4gICAgcmVzZXRTdWNjZXNzLFxuICB9XG59XG4i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
129
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZVRyYW5zbGF0aW9uIiwidXBkYXRlQWdlbnQiLCJzZXRBZ2VudFRvb2xHcm91cHMiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJidWlsZEFnZW50VG9vbEdyb3Vwc1JlcXVlc3QiLCJidWlsZEFnZW50Q29ubmVjdG9yc0Zyb21UYXNrQWNjZXNzIiwicGFyc2VkVmFsdWVzQnlSZXEiLCJhZ2VudFZhbHVlcyIsIl9hZ2VudFZhbHVlcyRhaU1vZGVsIiwiX2FnZW50VmFsdWVzJGFpTW9kZWwyIiwiaWQiLCJuYW1lIiwiZW1vamkiLCJpbnRyb2R1Y3Rpb24iLCJpbnB1dF9wbGFjZWhvbGRlciIsImlucHV0UGxhY2Vob2xkZXIiLCJ1c2VyX3Byb21wdCIsInVzZXJQcm9tcHQiLCJwcm92aWRlciIsImFpTW9kZWwiLCJtb2RlbF9uYW1lIiwidXNlVXBkYXRlQWdlbnQiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzdWNjZXNzIiwic2V0U3VjY2VzcyIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhckVycm9yIiwiaXNQcm9jZXNzaW5nUmVmIiwiaGFuZGxlU2V0U3VjY2VzcyIsInZhbHVlIiwiaGFuZGxlVXBkYXRlQWdlbnQiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ2YWx1ZXMiLCJwYXJzZWRWYWx1ZSIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eSIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTIiLCJfdmFsdWVzJGdlbmVyYWwiLCJyZXNwb25zZSIsInRhc2tBY2Nlc3MiLCJhZ2VudElkIiwiX3QiLCJfdDIiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJhYnJ1cHQiLCJnZW5lcmFsIiwic2VudCIsIkVycm9yIiwiYWNjZXNzaWJpbGl0eSIsInRvU3RyaW5nIiwiY29uc29sZSIsIl9vYmplY3RTcHJlYWQiLCJjb25uZWN0b3JzIiwibWVzc2FnZSIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwicmVzZXRTdWNjZXNzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlVXBkYXRlQWdlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgQWdlbnRVcGRhdGVSZXF1ZXN0LCB1cGRhdGVBZ2VudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL3VwZGF0ZUFnZW50J1xuaW1wb3J0IHsgc2V0QWdlbnRUb29sR3JvdXBzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvc2V0QWdlbnRUb29sR3JvdXBzJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCwgYnVpbGRBZ2VudENvbm5lY3RvcnNGcm9tVGFza0FjY2VzcyB9IGZyb20gJy4uLy4uL3V0aWxzL25vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycydcblxuZXhwb3J0IGNvbnN0IHBhcnNlZFZhbHVlc0J5UmVxID0gKGFnZW50VmFsdWVzOiBhbnkpOiBBZ2VudFVwZGF0ZVJlcXVlc3QgPT4ge1xuICByZXR1cm4ge1xuICAgIGlkOiBhZ2VudFZhbHVlcy5pZCxcbiAgICBuYW1lOiBhZ2VudFZhbHVlcy5uYW1lLFxuICAgIGVtb2ppOiBhZ2VudFZhbHVlcy5lbW9qaSB8fCAn4pyoJyxcbiAgICBpbnRyb2R1Y3Rpb246IGFnZW50VmFsdWVzLmludHJvZHVjdGlvbiB8fCAnJyxcbiAgICBpbnB1dF9wbGFjZWhvbGRlcjogYWdlbnRWYWx1ZXMuaW5wdXRQbGFjZWhvbGRlciB8fCAnJyxcbiAgICB1c2VyX3Byb21wdDogYWdlbnRWYWx1ZXMudXNlclByb21wdCxcbiAgICBwcm92aWRlcjogYWdlbnRWYWx1ZXMuYWlNb2RlbD8ucHJvdmlkZXIsXG4gICAgbW9kZWxfbmFtZTogYWdlbnRWYWx1ZXMuYWlNb2RlbD8ubW9kZWxfbmFtZSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlVXBkYXRlQWdlbnQgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzdWNjZXNzLCBzZXRTdWNjZXNzXSA9IHVzZVN0YXRlPGFueT4oZmFsc2UpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgaXNQcm9jZXNzaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZVNldFN1Y2Nlc3MgPSAodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTdWNjZXNzKHZhbHVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBkYXRlQWdlbnQgPSBhc3luYyAodmFsdWVzOiBhbnkpID0+IHtcbiAgICBpZiAoaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZFZhbHVlOiBBZ2VudFVwZGF0ZVJlcXVlc3QgPSBwYXJzZWRWYWx1ZXNCeVJlcSh2YWx1ZXMuZ2VuZXJhbClcblxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHNldElzTG9hZGluZyh0cnVlKVxuICAgIHNldFN1Y2Nlc3MoZmFsc2UpXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB1cGRhdGVBZ2VudChwYXJzZWRWYWx1ZSlcblxuICAgICAgaWYgKHJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5lcnJvcilcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFza0FjY2VzcyA9IHZhbHVlcy5hY2Nlc3NpYmlsaXR5Py50YXNrQWNjZXNzID8/IHRydWVcbiAgICAgIGNvbnN0IGFnZW50SWQgPSB2YWx1ZXMuZ2VuZXJhbD8uaWRcbiAgICAgIGlmIChhZ2VudElkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgc2V0QWdlbnRUb29sR3JvdXBzKGFnZW50SWQudG9TdHJpbmcoKSwgYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0KHRhc2tBY2Nlc3MpKVxuICAgICAgICB9IGNhdGNoICh0b29sR3JvdXBzRXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzZXR0aW5nIGFnZW50IHRvb2wgZ3JvdXBzOicsIHRvb2xHcm91cHNFcnJvcilcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgc2V0U3VjY2Vzcyh7IC4uLnJlc3BvbnNlLCBjb25uZWN0b3JzOiBidWlsZEFnZW50Q29ubmVjdG9yc0Zyb21UYXNrQWNjZXNzKHRhc2tBY2Nlc3MpIH0pXG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogdCgnZXJyb3JBZ2VudENyZWF0ZWQnKSlcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBZ2VudENyZWF0ZWQnKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNldFN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgc2V0U3VjY2VzcyhmYWxzZSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaGFuZGxlVXBkYXRlQWdlbnQsXG4gICAgaXNMb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIHN1Y2Nlc3MsXG4gICAgaGFuZGxlU2V0U3VjY2VzcyxcbiAgICByZXNldFN1Y2Nlc3MsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3hDLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQTZCQyxXQUFXLFFBQVEsd0NBQXdDO0FBQ3hGLFNBQVNDLGtCQUFrQixRQUFRLCtDQUErQztBQUNsRixTQUFTQyxrQkFBa0IsUUFBUSwwQ0FBMEM7QUFDN0UsU0FBU0MsMkJBQTJCLEVBQUVDLGtDQUFrQyxRQUFRLHNDQUFzQztBQUV0SCxPQUFPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUlDLFdBQWdCLEVBQXlCO0VBQUEsSUFBQUMsb0JBQUEsRUFBQUMscUJBQUE7RUFDekUsT0FBTztJQUNMQyxFQUFFLEVBQUVILFdBQVcsQ0FBQ0csRUFBRTtJQUNsQkMsSUFBSSxFQUFFSixXQUFXLENBQUNJLElBQUk7SUFDdEJDLEtBQUssRUFBRUwsV0FBVyxDQUFDSyxLQUFLLElBQUksR0FBRztJQUMvQkMsWUFBWSxFQUFFTixXQUFXLENBQUNNLFlBQVksSUFBSSxFQUFFO0lBQzVDQyxpQkFB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