@projectcor/maia-components 2.11.36-7 → 2.11.36

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 (105) hide show
  1. package/lib/App.js +11 -24
  2. package/lib/components/atoms/MAIAInput/MAIAInput.js +191 -61
  3. package/lib/components/atoms/icons/index.js +1 -3
  4. package/lib/components/index.js +1 -2
  5. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
  6. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +3 -3
  7. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
  8. package/lib/components/molecules/AbmSection/index.js +1 -2
  9. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -13
  10. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +4 -8
  11. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +2 -21
  12. package/lib/components/molecules/ChatAIMessages/newStyles.js +2 -2
  13. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +89 -91
  14. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
  15. package/lib/components/molecules/ChatAIModal/constants.js +2 -10
  16. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -5
  17. package/lib/components/molecules/Sidebar/Sidebar.js +31 -68
  18. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -6
  19. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +50 -247
  20. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
  21. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +3 -13
  22. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +3 -6
  23. package/lib/dev/Providers.js +6 -11
  24. package/lib/hooks/useAgentModel/useCreateAgent.js +10 -11
  25. package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -12
  26. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  27. package/lib/hooks/useChatManager/useChatManager.js +11 -21
  28. package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
  29. package/lib/hooks/useChatMessages/useChatMessages.js +14 -30
  30. package/lib/hooks/useEvent.js +1 -5
  31. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +4 -6
  32. package/lib/lang/br/index.js +1 -266
  33. package/lib/lang/en/index.js +1 -266
  34. package/lib/lang/es/index.js +1 -266
  35. package/lib/lang/fr/index.js +2 -268
  36. package/lib/services/maia/Agents/createAgent.js +1 -1
  37. package/lib/services/maia/Agents/getAgentById.js +2 -3
  38. package/lib/services/maia/Agents/updateAgent.js +1 -1
  39. package/lib/services/maia/Chats/getChatMessages.js +4 -29
  40. package/lib/services/maia/Orchestrator/orchestrator.js +9 -11
  41. package/lib/services/maia/RecentProjects/getRecentProjects.js +4 -12
  42. package/lib/services/utils/mapChatMessages.js +5 -12
  43. package/lib/types/Chat.js +1 -1
  44. package/lib/types/agent.js +1 -1
  45. package/lib/types/agentModal.js +1 -1
  46. package/package.json +1 -1
  47. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +0 -28
  48. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +0 -84
  49. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +0 -123
  50. package/lib/components/atoms/ContextMentionChip/index.js +0 -4
  51. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +0 -85
  52. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +0 -6
  53. package/lib/components/atoms/ContextMentionEditor/index.js +0 -2
  54. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +0 -188
  55. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +0 -98
  56. package/lib/components/atoms/ContextMentionItem/index.js +0 -2
  57. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +0 -131
  58. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +0 -63
  59. package/lib/components/atoms/ContextMentionPopover/index.js +0 -3
  60. package/lib/components/atoms/icons/NotionIcon.js +0 -36
  61. package/lib/components/atoms/icons/RocketIcon.js +0 -31
  62. package/lib/components/atoms/icons/WrenchIcon.js +0 -42
  63. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +0 -510
  64. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +0 -234
  65. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +0 -437
  66. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +0 -3
  67. package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +0 -80
  68. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.interface.js +0 -2
  69. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +0 -722
  70. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +0 -165
  71. package/lib/components/molecules/AbmSection/AbmTriggersSection/index.js +0 -2
  72. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +0 -55
  73. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +0 -6
  74. package/lib/components/molecules/ContextMentionInput/index.js +0 -2
  75. package/lib/components/molecules/SchedulesPage/SchedulesPage.js +0 -610
  76. package/lib/components/molecules/SchedulesPage/index.js +0 -2
  77. package/lib/components/molecules/SkillsPage/SkillsPage.js +0 -708
  78. package/lib/components/molecules/SkillsPage/index.js +0 -2
  79. package/lib/components/molecules/maiaSectionModalStyles.js +0 -91
  80. package/lib/components/molecules/maiaSectionUiTokens.js +0 -31
  81. package/lib/constants/taskLinkIcon.js +0 -6
  82. package/lib/dev/DevAbmAgentModal.js +0 -114
  83. package/lib/dev/DevContextMentionInput.js +0 -65
  84. package/lib/dev/mocks/abmModalMocks.js +0 -193
  85. package/lib/hooks/useCaretPosition.js +0 -35
  86. package/lib/hooks/useContextMentions.js +0 -204
  87. package/lib/hooks/useEntitySearch.js +0 -405
  88. package/lib/hooks/useMentionAllowedTypes.js +0 -86
  89. package/lib/hooks/useMentionPopover.js +0 -284
  90. package/lib/services/maia/Agents/connectors.js +0 -110
  91. package/lib/services/maia/Agents/skills.js +0 -164
  92. package/lib/services/maia/Schedules/createSchedule.js +0 -39
  93. package/lib/services/maia/Schedules/deleteSchedule.js +0 -36
  94. package/lib/services/maia/Schedules/getMySchedules.js +0 -55
  95. package/lib/services/maia/Schedules/getSchedules.js +0 -58
  96. package/lib/services/maia/Schedules/index.js +0 -5
  97. package/lib/services/query/entitySearchQuery.js +0 -16
  98. package/lib/services/query/usersDirectoryQuery.js +0 -19
  99. package/lib/types/agentSkill.js +0 -2
  100. package/lib/types/attachment.js +0 -2
  101. package/lib/types/contextMention.js +0 -37
  102. package/lib/utils/contextMentionIcons.js +0 -115
  103. package/lib/utils/contextMentionLabel.js +0 -4
  104. package/lib/utils/contextMentionTypeLabel.js +0 -17
  105. package/lib/utils/renderContextMentions.js +0 -216
@@ -1,4 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
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; }
2
5
  /* eslint-disable no-restricted-syntax */
3
6
  /* eslint-disable no-continue */
4
7
  /* eslint-disable no-void */
@@ -9,14 +12,13 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
9
12
  /* eslint-disable jsx-a11y/click-events-have-key-events */
10
13
  /* eslint-disable no-console */
11
14
  /* eslint-disable jsx-a11y/no-static-element-interactions */
12
- import { useCallback, useEffect, useRef, useState } from 'react';
13
- import { createPortal } from 'react-dom';
15
+ import { useEffect, useRef, useState } from 'react';
14
16
  import { PaperPlane } from '@projectcor/icons/lib/components/PaperPlane';
15
17
  import { Attach } from '@projectcor/icons/lib/components/Attach';
16
18
  import { Globe } from '@projectcor/icons/lib/components/Globe';
17
19
  import { Trash } from '@projectcor/icons/lib/components/Trash';
18
20
  import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
19
- import { SCMIAttachment, SCMIAttachmentDeleteIcon, SCMIWrapperAttachmentButton, SCMIWrapperWebSearchButton, SCMIWrapperDeepSearchButton, StyledMAIAInputButtons, StyledMAIAInputWrapper, StyledMAIASendButton, StyledMAIAStopButton, StyledMAIAStopIcon } from './styles';
21
+ import { SCMIAttachment, SCMIAttachmentDeleteIcon, SCMIWrapperAttachmentButton, SCMIWrapperWebSearchButton, SCMIWrapperDeepSearchButton, StyledMAIAInput, StyledMAIAInputButtons, StyledMAIAInputWrapper, StyledMAIASendButton, StyledMAIAStopButton, StyledMAIAStopIcon } from './styles';
20
22
  import { useGlobalContext } from '../../../context/global-context';
21
23
  import { ModalFileExceeds } from '../../organisms/ModalFileExceeds';
22
24
  import { useT } from '../../../hooks/useT';
@@ -24,9 +26,6 @@ import { TelescopeIcon } from '../icons/TelescopeIcon';
24
26
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
25
27
  import { allowedFileTypes, fileTypes, MAX_FILE_SIZE_MB_MAIA_VISION, MAX_FILE_SIZE_MB_OLD, MAX_FILE_SIZE_MB_AUDIO } from '../../../constants/formatExtensions';
26
28
  import { BLUE_IA_COLORS } from '../../../styles/config';
27
- import { ContextMentionEditor } from '../ContextMentionEditor';
28
- // eslint-disable-next-line import/no-cycle
29
- import { useMentionPopover } from '../../../hooks/useMentionPopover';
30
29
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
31
30
  export var MAIAInput = function MAIAInput(_ref) {
32
31
  var onSendMessage = _ref.onSendMessage,
@@ -47,13 +46,13 @@ export var MAIAInput = function MAIAInput(_ref) {
47
46
  newChatKey = _ref.newChatKey;
48
47
  var _useT = useT(),
49
48
  t = _useT.t;
50
- var editorRef = useRef(null);
49
+ var inputRef = useRef(null);
51
50
  var fileInputRef = useRef(null);
52
51
  var wrapperRef = useRef(null);
53
52
  var _useState = useState(''),
54
53
  _useState2 = _slicedToArray(_useState, 2),
55
- valueText = _useState2[0],
56
- setValueText = _useState2[1];
54
+ valueTextarea = _useState2[0],
55
+ setValueTextarea = _useState2[1];
57
56
  var _useState3 = useState(true),
58
57
  _useState4 = _slicedToArray(_useState3, 2),
59
58
  isDisabled = _useState4[0],
@@ -78,14 +77,6 @@ export var MAIAInput = function MAIAInput(_ref) {
78
77
  toggleDeepSearch = _useGlobalContext.toggleDeepSearch,
79
78
  isDeepSearchActive = _useGlobalContext.isDeepSearchActive,
80
79
  agent = _useGlobalContext.agent;
81
- var _useMentionPopover = useMentionPopover({
82
- editorRef: editorRef
83
- }),
84
- popoverOpen = _useMentionPopover.popoverOpen,
85
- handleTrigger = _useMentionPopover.handleTrigger,
86
- handlePopoverKeyDown = _useMentionPopover.handleKeyDown,
87
- popoverNode = _useMentionPopover.popoverNode;
88
-
89
80
  // Inicializar las referencias como undefined para detectar el primer cambio correctamente
90
81
  var previousAgentIdRef = useRef(undefined);
91
82
  var previousChatIdRef = useRef(undefined);
@@ -112,29 +103,136 @@ export var MAIAInput = function MAIAInput(_ref) {
112
103
  });
113
104
  }
114
105
  };
106
+ var handleResize = function handleResize() {
107
+ var textarea = inputRef.current;
108
+ if (!textarea) {
109
+ return;
110
+ }
111
+
112
+ // Altura mínima equivalente a una línea
113
+ var minHeight = 22.1;
114
+ var maxHeight = 122.1;
115
+
116
+ // Para medir correctamente el scrollHeight, necesitamos quitar temporalmente las restricciones
117
+ var previousMinHeight = textarea.style.minHeight;
118
+ var previousMaxHeight = textarea.style.maxHeight;
119
+
120
+ // Establecer altura a 'auto' y quitar temporalmente min-height y max-height para medir correctamente
121
+ textarea.style.height = 'auto';
122
+ textarea.style.minHeight = '0px';
123
+ textarea.style.maxHeight = 'none';
124
+
125
+ // Forzar reflow para que el navegador recalcule
126
+ void textarea.offsetHeight;
127
+
128
+ // Ahora medir el scrollHeight real sin restricciones
129
+ var scrollHeight = textarea.scrollHeight;
130
+
131
+ // Calcular la altura de una línea usando los estilos computados
132
+ var computedStyle = window.getComputedStyle(textarea);
133
+ var lineHeight = parseFloat(computedStyle.lineHeight) || 20; // Fallback a 20px si no está definido
134
+ var paddingTop = parseFloat(computedStyle.paddingTop) || 0;
135
+ var paddingBottom = parseFloat(computedStyle.paddingBottom) || 0;
136
+ var borderTop = parseFloat(computedStyle.borderTopWidth) || 0;
137
+ var borderBottom = parseFloat(computedStyle.borderBottomWidth) || 0;
138
+
139
+ // Altura de una línea completa (line-height + padding + border)
140
+ var singleLineHeight = lineHeight + paddingTop + paddingBottom + borderTop + borderBottom;
141
+ var isEmpty = textarea.value.trim() === '';
142
+
143
+ // Medir el ancho del texto usando Canvas para determinar si se envuelve a múltiples líneas
144
+ var hasMultipleVisualLines = false;
145
+ var canvas = document.createElement('canvas');
146
+ var context = canvas.getContext('2d');
147
+ if (!context) {
148
+ // Fallback si Canvas no está disponible: usar scrollHeight
149
+ hasMultipleVisualLines = scrollHeight > singleLineHeight * 1.5;
150
+ } else {
151
+ var textareaStyles = window.getComputedStyle(textarea);
152
+ context.font = "".concat(textareaStyles.fontWeight, " ").concat(textareaStyles.fontSize, " ").concat(textareaStyles.fontFamily);
153
+
154
+ // Calcular el ancho disponible (ancho total menos padding izquierdo/derecho y border izquierdo/derecho)
155
+ var paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;
156
+ var paddingRight = parseFloat(computedStyle.paddingRight) || 0;
157
+ var borderLeft = parseFloat(computedStyle.borderLeftWidth) || 0;
158
+ var borderRight = parseFloat(computedStyle.borderRightWidth) || 0;
159
+ var textareaWidth = textarea.offsetWidth - paddingLeft - paddingRight - borderLeft - borderRight;
160
+ var text = textarea.value || '';
161
+ var lines = text.split('\n');
162
+
163
+ // Si hay múltiples líneas por saltos de línea explícitos
164
+ if (lines.length > 1) {
165
+ hasMultipleVisualLines = true;
166
+ } else {
167
+ // Verificar si el texto se envuelve midiendo el ancho de cada línea
168
+ var _iterator = _createForOfIteratorHelper(lines),
169
+ _step;
170
+ try {
171
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
172
+ var line = _step.value;
173
+ if (line.trim() === '') continue;
174
+ var textWidth = context.measureText(line).width;
175
+ // Si alguna línea es más ancha que el textarea disponible, se envuelve
176
+ if (textWidth > textareaWidth) {
177
+ hasMultipleVisualLines = true;
178
+ break;
179
+ }
180
+ }
181
+ } catch (err) {
182
+ _iterator.e(err);
183
+ } finally {
184
+ _iterator.f();
185
+ }
186
+ }
187
+ }
188
+ var newHeight;
189
+ if (isEmpty) {
190
+ // Cuando está vacío, usar altura mínima
191
+ newHeight = minHeight;
192
+ } else if (!hasMultipleVisualLines) {
193
+ // Cuando hay contenido pero solo una línea visual, usar altura mínima
194
+ newHeight = minHeight;
195
+ } else {
196
+ // Para múltiples líneas visuales, usar el scrollHeight
197
+ newHeight = Math.min(Math.max(scrollHeight, minHeight), maxHeight);
198
+ }
199
+
200
+ // Restaurar estilos antes de aplicar la nueva altura
201
+ textarea.style.minHeight = previousMinHeight || '22.1px';
202
+ textarea.style.maxHeight = previousMaxHeight || '122.1px';
203
+ textarea.style.height = "".concat(newHeight, "px");
204
+ };
115
205
  useEffect(function () {
116
- if (!disabled) {
117
- var _editorRef$current;
118
- (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 || _editorRef$current.focus();
206
+ if (inputRef.current && !disabled) {
207
+ inputRef.current.focus();
208
+ handleResize();
119
209
  }
120
210
  }, [disabled]);
121
211
 
122
212
  // Auto-focus cuando cambia el agente o la conversación, o al montar el componente
123
213
  useEffect(function () {
214
+ // Comparación que maneja correctamente undefined/null
124
215
  var agentChanged = previousAgentIdRef.current !== (agent === null || agent === void 0 ? void 0 : agent.id);
216
+ // Comparación estricta que detecta cambios incluso cuando uno es undefined
125
217
  var previousChatId = previousChatIdRef.current;
126
218
  var currentChatId = chatId;
127
219
  var chatChanged = previousChatId !== currentChatId;
220
+ // Detectar cambio específico de undefined/null a un valor (nuevo chat -> conversación vieja)
128
221
  var changedFromNewChatToOldChat = (previousChatId === undefined || previousChatId === null) && currentChatId !== undefined && currentChatId !== null;
129
222
  var newChatStarted = previousNewChatKeyRef.current !== newChatKey;
130
223
  var isInitialMount = previousAgentIdRef.current === undefined && previousChatIdRef.current === undefined;
131
- if ((agentChanged || chatChanged || changedFromNewChatToOldChat || newChatStarted || isInitialMount) && !disabled) {
224
+ if ((agentChanged || chatChanged || changedFromNewChatToOldChat || newChatStarted || isInitialMount) && inputRef.current && !disabled) {
225
+ // Usar setTimeout para asegurar que el DOM esté listo
226
+ // Aumentar el delay para casos donde el componente se está montando
132
227
  var delay = isInitialMount || changedFromNewChatToOldChat ? 200 : 100;
133
228
  setTimeout(function () {
134
- var _editorRef$current2;
135
- if (!disabled) (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 || _editorRef$current2.focus();
229
+ if (inputRef.current && !disabled) {
230
+ inputRef.current.focus();
231
+ }
136
232
  }, delay);
137
233
  }
234
+
235
+ // Actualizar las referencias DESPUÉS de la comparación
138
236
  previousAgentIdRef.current = agent === null || agent === void 0 ? void 0 : agent.id;
139
237
  previousChatIdRef.current = chatId;
140
238
  previousNewChatKeyRef.current = newChatKey;
@@ -143,46 +241,72 @@ export var MAIAInput = function MAIAInput(_ref) {
143
241
  // Clear input when session changes (user switches to a different chat)
144
242
  useEffect(function () {
145
243
  var handleSessionChange = function handleSessionChange() {
146
- var _editorRef$current3;
147
- (_editorRef$current3 = editorRef.current) === null || _editorRef$current3 === void 0 || _editorRef$current3.clear();
148
- setValueText('');
244
+ setValueTextarea('');
149
245
  setIsDisabled(true);
246
+ if (inputRef.current) {
247
+ inputRef.current.value = '';
248
+ }
249
+ handleResize();
150
250
  };
151
251
  document.addEventListener('chat-session-changed', handleSessionChange);
152
252
  return function () {
153
- return document.removeEventListener('chat-session-changed', handleSessionChange);
253
+ document.removeEventListener('chat-session-changed', handleSessionChange);
154
254
  };
155
255
  }, []);
156
256
  useEffect(function () {
157
- var hasText = valueText.trim().length > 0;
257
+ var animationFrameId = requestAnimationFrame(function () {
258
+ handleResize();
259
+ });
260
+ return function () {
261
+ return cancelAnimationFrame(animationFrameId);
262
+ };
263
+ }, [valueTextarea]);
264
+ useEffect(function () {
265
+ var hasText = valueTextarea.trim().length > 0;
158
266
  var hasAttachments = attachments.length > 0;
159
267
  setIsDisabled(!hasText && !hasAttachments);
160
- }, [attachments, valueText]);
161
- var handleSendMessage = useCallback(function () {
162
- var _editorRef$current4, _state$text, _state$mentions, _editorRef$current5;
163
- var state = (_editorRef$current4 = editorRef.current) === null || _editorRef$current4 === void 0 ? void 0 : _editorRef$current4.serialize();
164
- var text = (_state$text = state === null || state === void 0 ? void 0 : state.text) !== null && _state$text !== void 0 ? _state$text : '';
165
- if (!text.trim() && !attachments.length) return;
166
- onSendMessage(text, attachments, (_state$mentions = state === null || state === void 0 ? void 0 : state.mentions) !== null && _state$mentions !== void 0 ? _state$mentions : []);
167
- (_editorRef$current5 = editorRef.current) === null || _editorRef$current5 === void 0 || _editorRef$current5.clear();
168
- setValueText('');
169
- setIsDisabled(true);
170
- }, [attachments, onSendMessage]);
171
- var handleEditorInput = useCallback(function (_ref2) {
172
- var text = _ref2.text,
173
- trigger = _ref2.trigger;
174
- setValueText(text);
175
- setIsDisabled(!text.trim() && !attachments.length);
176
- onChange === null || onChange === void 0 || onChange();
177
- handleTrigger(trigger);
178
- }, [attachments.length, onChange, handleTrigger]);
179
- var handleKeyDown = useCallback(function (e) {
180
- if (handlePopoverKeyDown(e)) return;
181
- if (e.key === 'Enter' && !e.shiftKey && !popoverOpen) {
268
+ }, [attachments, valueTextarea]);
269
+ var handleSendMessage = function handleSendMessage() {
270
+ if (inputRef.current) {
271
+ onSendMessage(inputRef.current.value, attachments);
272
+ inputRef.current.value = '';
273
+ setValueTextarea('');
274
+ setIsDisabled(true);
275
+ handleResize();
276
+ return;
277
+ }
278
+ if (attachments.length) {
279
+ onSendMessage('', attachments);
280
+ setValueTextarea('');
281
+ setIsDisabled(true);
282
+ }
283
+ };
284
+ var handleKeyDown = function handleKeyDown(e) {
285
+ if (e.key === 'Enter' && !e.shiftKey) {
182
286
  e.preventDefault();
183
- if (!isDisabled && !disabled) handleSendMessage();
287
+ if (!isDisabled && !disabled) {
288
+ handleSendMessage();
289
+ }
184
290
  }
185
- }, [handlePopoverKeyDown, popoverOpen, isDisabled, disabled, handleSendMessage]);
291
+ };
292
+ var handleChange = function handleChange(e) {
293
+ var hasText = e.target.value.trim().length > 0;
294
+ var hasAttachments = attachments.length > 0;
295
+ setIsDisabled(!hasText && !hasAttachments);
296
+ setValueTextarea(e.target.value);
297
+ onChange === null || onChange === void 0 || onChange();
298
+ };
299
+ var handlePaste = function handlePaste() {
300
+ setTimeout(function () {
301
+ var _inputRef$current$val, _inputRef$current;
302
+ handleResize();
303
+ var currentValue = (_inputRef$current$val = (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.value) !== null && _inputRef$current$val !== void 0 ? _inputRef$current$val : '';
304
+ var hasText = currentValue.trim().length > 0;
305
+ var hasAttachments = attachments.length > 0;
306
+ setValueTextarea(currentValue);
307
+ setIsDisabled(!hasText && !hasAttachments);
308
+ }, 10);
309
+ };
186
310
  var handleFileSelect = function handleFileSelect(e) {
187
311
  var files = e.target.files;
188
312
  if (!files) return;
@@ -276,6 +400,11 @@ export var MAIAInput = function MAIAInput(_ref) {
276
400
  var handleDeleteAttachment = function handleDeleteAttachment(fileId) {
277
401
  onDeleteAttachment === null || onDeleteAttachment === void 0 || onDeleteAttachment(fileId);
278
402
  };
403
+ var handleBlur = function handleBlur() {
404
+ var hasText = valueTextarea.trim().length > 0;
405
+ var hasAttachments = attachments.length > 0;
406
+ setIsDisabled(!hasText && !hasAttachments);
407
+ };
279
408
  var handleWrapperFocus = function handleWrapperFocus() {
280
409
  return setIsFocused(true);
281
410
  };
@@ -330,14 +459,15 @@ export var MAIAInput = function MAIAInput(_ref) {
330
459
  })
331
460
  }, "".concat(index, "-").concat(attachment.name));
332
461
  })
333
- }), /*#__PURE__*/_jsx(ContextMentionEditor, {
334
- ref: editorRef,
462
+ }), /*#__PURE__*/_jsx(StyledMAIAInput, {
463
+ ref: inputRef,
335
464
  disabled: disabled,
336
- placeholder: placeholder,
337
- onInput: handleEditorInput,
465
+ onChange: handleChange,
338
466
  onKeyDown: handleKeyDown,
339
- onFocus: handleWrapperFocus,
340
- onBlur: handleWrapperBlur
467
+ onPaste: handlePaste,
468
+ placeholder: placeholder,
469
+ alignButtons: alignButtons,
470
+ onBlur: handleBlur
341
471
  }), /*#__PURE__*/_jsxs(StyledMAIAInputButtons, {
342
472
  children: [/*#__PURE__*/_jsxs("div", {
343
473
  style: {
@@ -396,7 +526,7 @@ export var MAIAInput = function MAIAInput(_ref) {
396
526
  onClick: handleSendMessage,
397
527
  className: className,
398
528
  disabled: isDisabled || disabled,
399
- hasValues: !!valueText.length,
529
+ hasValues: !!valueTextarea.length,
400
530
  children: /*#__PURE__*/_jsx(PaperPlane, {
401
531
  color: "#BFBFBF",
402
532
  width: 18,
@@ -426,7 +556,7 @@ export var MAIAInput = function MAIAInput(_ref) {
426
556
  excludedFiles: modalProps.excludedFiles,
427
557
  exceededFiles: modalProps.exceededFiles,
428
558
  fileSizes: modalProps.fileSizes
429
- }), popoverNode && /*#__PURE__*/createPortal(popoverNode, document.body)]
559
+ })]
430
560
  });
431
561
  };
432
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlUG9ydGFsIiwiUGFwZXJQbGFuZSIsIkF0dGFjaCIsIkdsb2JlIiwiVHJhc2giLCJUb29sdGlwIiwiU0NNSUF0dGFjaG1lbnQiLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJTQ01JV3JhcHBlckF0dGFjaG1lbnRCdXR0b24iLCJTQ01JV3JhcHBlcldlYlNlYXJjaEJ1dHRvbiIsIlNDTUlXcmFwcGVyRGVlcFNlYXJjaEJ1dHRvbiIsIlN0eWxlZE1BSUFJbnB1dEJ1dHRvbnMiLCJTdHlsZWRNQUlBSW5wdXRXcmFwcGVyIiwiU3R5bGVkTUFJQVNlbmRCdXR0b24iLCJTdHlsZWRNQUlBU3RvcEJ1dHRvbiIsIlN0eWxlZE1BSUFTdG9wSWNvbiIsInVzZUdsb2JhbENvbnRleHQiLCJNb2RhbEZpbGVFeGNlZWRzIiwidXNlVCIsIlRlbGVzY29wZUljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImFsbG93ZWRGaWxlVHlwZXMiLCJmaWxlVHlwZXMiLCJNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OIiwiTUFYX0ZJTEVfU0laRV9NQl9PTEQiLCJNQVhfRklMRV9TSVpFX01CX0FVRElPIiwiQkxVRV9JQV9DT0xPUlMiLCJDb250ZXh0TWVudGlvbkVkaXRvciIsInVzZU1lbnRpb25Qb3BvdmVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTUFJQUlucHV0IiwiX3JlZiIsIm9uU2VuZE1lc3NhZ2UiLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsImlzU3RyZWFtaW5nIiwiaXNXcml0aW5nIiwib25TdG9wR2VuZXJhdGlvbiIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJfcmVmJGFsaWduQnV0dG9ucyIsImFsaWduQnV0dG9ucyIsIm9uRmlsZUF0dGFjaCIsIm9uRGVsZXRlQXR0YWNobWVudCIsIl9yZWYkYXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImNoYXRJZCIsIm5ld0NoYXRLZXkiLCJfdXNlVCIsInQiLCJlZGl0b3JSZWYiLCJmaWxlSW5wdXRSZWYiLCJ3cmFwcGVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidmFsdWVUZXh0Iiwic2V0VmFsdWVUZXh0IiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc0Rpc2FibGVkIiwic2V0SXNEaXNhYmxlZCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNGb2N1c2VkIiwic2V0SXNGb2N1c2VkIiwiX3VzZVN0YXRlNyIsImlzT3BlbiIsImV4Y2x1ZGVkRmlsZXMiLCJleGNlZWRlZEZpbGVzIiwiZmlsZVNpemVzIiwiX3VzZVN0YXRlOCIsIm1vZGFsUHJvcHMiLCJzZXRNb2RhbFByb3BzIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwidG9nZ2xlRGVlcFNlYXJjaCIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImFnZW50IiwiX3VzZU1lbnRpb25Qb3BvdmVyIiwicG9wb3Zlck9wZW4iLCJoYW5kbGVUcmlnZ2VyIiwiaGFuZGxlUG9wb3ZlcktleURvd24iLCJoYW5kbGVLZXlEb3duIiwicG9wb3Zlck5vZGUiLCJwcmV2aW91c0FnZW50SWRSZWYiLCJ1bmRlZmluZWQiLCJwcmV2aW91c0NoYXRJZFJlZiIsInByZXZpb3VzTmV3Q2hhdEtleVJlZiIsImhhbmRsZVdlYlNlYXJjaFRvZ2dsZSIsImFpQ2hhdFRvb2xzIiwib3B0aW9uIiwiaGFuZGxlRGVlcFNlYXJjaFRvZ2dsZSIsIl9lZGl0b3JSZWYkY3VycmVudCIsImN1cnJlbnQiLCJmb2N1cyIsImFnZW50Q2hhbmdlZCIsImlkIiwicHJldmlvdXNDaGF0SWQiLCJjdXJyZW50Q2hhdElkIiwiY2hhdENoYW5nZWQiLCJjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQiLCJuZXdDaGF0U3RhcnRlZCIsImlzSW5pdGlhbE1vdW50IiwiZGVsYXkiLCJzZXRUaW1lb3V0IiwiX2VkaXRvclJlZiRjdXJyZW50MiIsImhhbmRsZVNlc3Npb25DaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwiY2xlYXIiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFzVGV4dCIsInRyaW0iLCJsZW5ndGgiLCJoYXNBdHRhY2htZW50cyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiX2VkaXRvclJlZiRjdXJyZW50NCIsIl9zdGF0ZSR0ZXh0IiwiX3N0YXRlJG1lbnRpb25zIiwiX2VkaXRvclJlZiRjdXJyZW50NSIsInN0YXRlIiwic2VyaWFsaXplIiwidGV4dCIsIm1lbnRpb25zIiwiaGFuZGxlRWRpdG9ySW5wdXQiLCJfcmVmMiIsInRyaWdnZXIiLCJlIiwia2V5Iiwic2hpZnRLZXkiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZUZpbGVTZWxlY3QiLCJmaWxlcyIsInRhcmdldCIsImZpbGVzSW5zZXJ0ZWQiLCJpc05ld0Zvcm1hdCIsImV4dGVuc2lvbiIsImluY2x1ZGVzIiwiaXNPbGRGb3JtYXQiLCJpc0F1ZGlvRm9ybWF0IiwiQXJyYXkiLCJmcm9tIiwiZm9yRWFjaCIsImZpbGUiLCJfZmlsZU5hbWVQYXJ0cyRwb3AiLCJleGNsdWRlZEZpbGUiLCJmaWxlTmFtZVBhcnRzIiwibmFtZSIsInNwbGl0IiwiZmlsZUV4dGVuc2lvbiIsImNvbmNhdCIsInBvcCIsInRvTG93ZXJDYXNlIiwic2l6ZSIsInB1c2giLCJ0eXBlRmlsZSIsInR5cGUiLCJwYXJzZWRGaWxlIiwiRmlsZSIsInZhbHVlIiwiaGFuZGxlQXR0YWNoQ2xpY2siLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQiLCJjbGljayIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJoYW5kbGVXcmFwcGVyRm9jdXMiLCJoYW5kbGVXcmFwcGVyQmx1ciIsIl93cmFwcGVyUmVmJGN1cnJlbnQiLCJjb250YWlucyIsImFjdGl2ZUVsZW1lbnQiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImFpQ2hhdFN0b3BSZXNwb25zZSIsImljb25Db2xvckluYWN0aXZlIiwiY2hpbGRyZW4iLCJyZWYiLCJvbkZvY3VzIiwib25CbHVyIiwic3R5bGUiLCJkaXNwbGF5IiwiZ2FwIiwiYWxpZ25JdGVtcyIsIm1hcCIsImF0dGFjaG1lbnQiLCJpbmRleCIsIl9maWxlTmFtZVBhcnRzJHBvcDIiLCJfYXR0YWNobWVudCR0eXBlIiwiaXNJbWFnZUJ5RXh0ZW5zaW9uIiwiaXNJbWFnZUJ5TWltZSIsInN0YXJ0c1dpdGgiLCJpc0ltYWdlIiwidGl0bGUiLCJpY29uIiwib25DbGljayIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJvbklucHV0Iiwib25LZXlEb3duIiwiaXNNYXhpbWl6ZWQiLCIkaXNGb2N1c2VkIiwiaXNBY3RpdmUiLCJoYXNWYWx1ZXMiLCJtdWx0aXBsZSIsImFjY2VwdCIsIm9uQ2xvc2UiLCJib2R5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12b2lkICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWxvbmVseS1pZiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIEtleWJvYXJkRXZlbnQsIFJlYWN0Tm9kZSwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgUGFwZXJQbGFuZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BhcGVyUGxhbmUnXG5pbXBvcnQgeyBBdHRhY2ggfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9BdHRhY2gnXG5pbXBvcnQgeyBHbG9iZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0dsb2JlJ1xuaW1wb3J0IHsgVHJhc2ggfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9UcmFzaCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHtcbiAgU0NNSUF0dGFjaG1lbnQsXG4gIFNDTUlBdHRhY2htZW50RGVsZXRlSWNvbixcbiAgU0NNSVdyYXBwZXJBdHRhY2htZW50QnV0dG9uLFxuICBTQ01JV3JhcHBlcldlYlNlYXJjaEJ1dHRvbixcbiAgU0NNSVdyYXBwZXJEZWVwU2VhcmNoQnV0dG9uLFxuICBTdHlsZWRNQUlBSW5wdXRCdXR0b25zLFxuICBTdHlsZWRNQUlBSW5wdXRXcmFwcGVyLFxuICBTdHlsZWRNQUlBU2VuZEJ1dHRvbixcbiAgU3R5bGVkTUFJQVN0b3BCdXR0b24sXG4gIFN0eWxlZE1BSUFTdG9wSWNvbixcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IE1vZGFsRmlsZUV4Y2VlZHMgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvTW9kYWxGaWxlRXhjZWVkcydcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgVGVsZXNjb3BlSWNvbiB9IGZyb20gJy4uL2ljb25zL1RlbGVzY29wZUljb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQge1xuICBhbGxvd2VkRmlsZVR5cGVzLFxuICBmaWxlVHlwZXMsXG4gIE1BWF9GSUxFX1NJWkVfTUJfTUFJQV9WSVNJT04sXG4gIE1BWF9GSUxFX1NJWkVfTUJfT0xELFxuICBNQVhfRklMRV9TSVpFX01CX0FVRElPLFxufSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvZm9ybWF0RXh0ZW5zaW9ucydcbmltcG9ydCB7IEJMVUVfSUFfQ09MT1JTIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9yLCBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgdXNlTWVudGlvblBvcG92ZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5cbnR5cGUgQXR0YWNobWVudEZpbGUgPSB7XG4gIGZpbGU6IEZpbGVcbiAgb3JpZ2luYWxGaWxlPzogRmlsZVxuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbn1cblxudHlwZSBNQUlBSW5wdXRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nLCBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSkgPT4gdm9pZFxuICBvblN0b3BHZW5lcmF0aW9uPzogKCkgPT4gdm9pZFxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBvbkNoYW5nZT86ICgpID0+IHZvaWRcbiAgYWxpZ25CdXR0b25zPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuICBvbkZpbGVBdHRhY2g/OiAoZmlsZTogRmlsZSkgPT4gdm9pZFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQ/OiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGNoYXRJZD86IHN0cmluZ1xuICBuZXdDaGF0S2V5PzogbnVtYmVyXG59XG5cbmV4cG9ydCBjb25zdCBNQUlBSW5wdXQgPSAoe1xuICBvblNlbmRNZXNzYWdlLFxuICBjbGFzc05hbWUsXG4gIGRpc2FibGVkLFxuICBpc1N0cmVhbWluZyxcbiAgaXNXcml0aW5nLFxuICBvblN0b3BHZW5lcmF0aW9uLFxuICBwbGFjZWhvbGRlcixcbiAgb25DaGFuZ2UsXG4gIGFsaWduQnV0dG9ucyA9ICd2ZXJ0aWNhbCcsXG4gIG9uRmlsZUF0dGFjaCxcbiAgb25EZWxldGVBdHRhY2htZW50LFxuICBhdHRhY2htZW50cyA9IFtdLFxuICBjaGF0SWQsXG4gIG5ld0NoYXRLZXksXG59OiBNQUlBSW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWY8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+KG51bGwpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCB3cmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbdmFsdWVUZXh0LCBzZXRWYWx1ZVRleHRdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtpc0Rpc2FibGVkLCBzZXRJc0Rpc2FibGVkXSA9IHVzZVN0YXRlKHRydWUpXG4gIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21vZGFsUHJvcHMsIHNldE1vZGFsUHJvcHNdID0gdXNlU3RhdGUoe1xuICAgIGlzT3BlbjogZmFsc2UsXG4gICAgZXhjbHVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZXhjZWVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZmlsZVNpemVzOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+LFxuICB9KVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyB0b2dnbGVXZWJTZWFyY2gsIGlzV2ViU2VhcmNoQWN0aXZlLCB0b2dnbGVEZWVwU2VhcmNoLCBpc0RlZXBTZWFyY2hBY3RpdmUsIGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICBjb25zdCB7XG4gICAgcG9wb3Zlck9wZW4sXG4gICAgaGFuZGxlVHJpZ2dlcixcbiAgICBoYW5kbGVLZXlEb3duOiBoYW5kbGVQb3BvdmVyS2V5RG93bixcbiAgICBwb3BvdmVyTm9kZSxcbiAgfSA9IHVzZU1lbnRpb25Qb3BvdmVyKHtcbiAgICBlZGl0b3JSZWYsXG4gIH0pXG5cbiAgLy8gSW5pY2lhbGl6YXIgbGFzIHJlZmVyZW5jaWFzIGNvbW8gdW5kZWZpbmVkIHBhcmEgZGV0ZWN0YXIgZWwgcHJpbWVyIGNhbWJpbyBjb3JyZWN0YW1lbnRlXG4gIGNvbnN0IHByZXZpb3VzQWdlbnRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNDaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzTmV3Q2hhdEtleVJlZiA9IHVzZVJlZjxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICBjb25zdCBoYW5kbGVXZWJTZWFyY2hUb2dnbGUgPSAoKSA9PiB7XG4gICAgaWYgKGlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgfVxuICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgaWYgKCFpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7IG9wdGlvbjogJ3NlYXJjaCcgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVEZWVwU2VhcmNoVG9nZ2xlID0gKCkgPT4ge1xuICAgIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICB9XG4gICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgaWYgKCFpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywgeyBvcHRpb246ICdkZWVwX3NlYXJjaCcgfSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgfVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIC8vIEF1dG8tZm9jdXMgY3VhbmRvIGNhbWJpYSBlbCBhZ2VudGUgbyBsYSBjb252ZXJzYWNpw7NuLCBvIGFsIG1vbnRhciBlbCBjb21wb25lbnRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYWdlbnRDaGFuZ2VkID0gcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgIT09IGFnZW50Py5pZFxuICAgIGNvbnN0IHByZXZpb3VzQ2hhdElkID0gcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudFxuICAgIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSBjaGF0SWRcbiAgICBjb25zdCBjaGF0Q2hhbmdlZCA9IHByZXZpb3VzQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkXG4gICAgY29uc3QgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID1cbiAgICAgIChwcmV2aW91c0NoYXRJZCA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzQ2hhdElkID09PSBudWxsKSAmJiBjdXJyZW50Q2hhdElkICE9PSB1bmRlZmluZWQgJiYgY3VycmVudENoYXRJZCAhPT0gbnVsbFxuICAgIGNvbnN0IG5ld0NoYXRTdGFydGVkID0gcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgIT09IG5ld0NoYXRLZXlcbiAgICBjb25zdCBpc0luaXRpYWxNb3VudCA9IHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ID09PSB1bmRlZmluZWQgJiYgcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkXG5cbiAgICBpZiAoKGFnZW50Q2hhbmdlZCB8fCBjaGF0Q2hhbmdlZCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgfHwgbmV3Q2hhdFN0YXJ0ZWQgfHwgaXNJbml0aWFsTW91bnQpICYmICFkaXNhYmxlZCkge1xuICAgICAgY29uc3QgZGVsYXkgPSBpc0luaXRpYWxNb3VudCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgPyAyMDAgOiAxMDBcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVkKSBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgZGVsYXkpXG4gICAgfVxuXG4gICAgcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgPSBhZ2VudD8uaWRcbiAgICBwcmV2aW91c0NoYXRJZFJlZi5jdXJyZW50ID0gY2hhdElkXG4gICAgcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgPSBuZXdDaGF0S2V5XG4gIH0sIFthZ2VudD8uaWQsIGNoYXRJZCwgbmV3Q2hhdEtleSwgZGlzYWJsZWRdKVxuXG4gIC8vIENsZWFyIGlucHV0IHdoZW4gc2Vzc2lvbiBjaGFuZ2VzICh1c2VyIHN3aXRjaGVzIHRvIGEgZGlmZmVyZW50IGNoYXQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Vzc2lvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBzZXRWYWx1ZVRleHQoJycpXG4gICAgICBzZXRJc0Rpc2FibGVkKHRydWUpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFzVGV4dCA9IHZhbHVlVGV4dC50cmltKCkubGVuZ3RoID4gMFxuICAgIGNvbnN0IGhhc0F0dGFjaG1lbnRzID0gYXR0YWNobWVudHMubGVuZ3RoID4gMFxuICAgIHNldElzRGlzYWJsZWQoIWhhc1RleHQgJiYgIWhhc0F0dGFjaG1lbnRzKVxuICB9LCBbYXR0YWNobWVudHMsIHZhbHVlVGV4dF0pXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBlZGl0b3JSZWYuY3VycmVudD8uc2VyaWFsaXplKClcbiAgICBjb25zdCB0ZXh0ID0gc3RhdGU/LnRleHQgPz8gJydcbiAgICBpZiAoIXRleHQudHJpbSgpICYmICFhdHRhY2htZW50cy5sZW5ndGgpIHJldHVyblxuICAgIG9uU2VuZE1lc3NhZ2UodGV4dCwgYXR0YWNobWVudHMsIHN0YXRlPy5tZW50aW9ucyA/PyBbXSlcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgIHNldFZhbHVlVGV4dCgnJylcbiAgICBzZXRJc0Rpc2FibGVkKHRydWUpXG4gIH0sIFthdHRhY2htZW50cywgb25TZW5kTWVzc2FnZV0pXG5cbiAgY29uc3QgaGFuZGxlRWRpdG9ySW5wdXQgPSB1c2VDYWxsYmFjayhcbiAgICAoeyB0ZXh0LCB0cmlnZ2VyIH06IHsgdGV4dDogc3RyaW5nOyBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXTsgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICBzZXRWYWx1ZVRleHQodGV4dClcbiAgICAgIHNldElzRGlzYWJsZWQoIXRleHQudHJpbSgpICYmICFhdHRhY2htZW50cy5sZW5ndGgpXG4gICAgICBvbkNoYW5nZT8uKClcbiAgICAgIGhhbmRsZVRyaWdnZXIodHJpZ2dlcilcbiAgICB9LFxuICAgIFthdHRhY2htZW50cy5sZW5ndGgsIG9uQ2hhbmdlLCBoYW5kbGVUcmlnZ2VyXVxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGhhbmRsZVBvcG92ZXJLZXlEb3duKGUpKSByZXR1cm5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiAhZS5zaGlmdEtleSAmJiAhcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGlmICghaXNEaXNhYmxlZCAmJiAhZGlzYWJsZWQpIGhhbmRsZVNlbmRNZXNzYWdlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtoYW5kbGVQb3BvdmVyS2V5RG93biwgcG9wb3Zlck9wZW4sIGlzRGlzYWJsZWQsIGRpc2FibGVkLCBoYW5kbGVTZW5kTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVTZWxlY3QgPSAoZTogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBmaWxlcyA9IGUudGFyZ2V0LmZpbGVzXG4gICAgaWYgKCFmaWxlcykgcmV0dXJuXG5cbiAgICBjb25zdCBleGNlZWRlZEZpbGVzOiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgZXhjbHVkZWRGaWxlczogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGZpbGVTaXplczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9XG4gICAgbGV0IGZpbGVzSW5zZXJ0ZWQgPSBhdHRhY2htZW50cy5sZW5ndGhcblxuICAgIC8vIERlZmluaXIgbMOtbWl0ZXMgcGFyYSBkaWZlcmVudGVzIHRpcG9zIGRlIGFyY2hpdm9zXG4gICAgY29uc3QgaXNOZXdGb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpID0+IFsnLnBuZycsICcuanBnJywgJy5qcGVnJywgJy5wZGYnXS5pbmNsdWRlcyhleHRlbnNpb24pXG4gICAgY29uc3QgaXNPbGRGb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpID0+XG4gICAgICBbJy50eHQnLCAnLm1kJywgJy5jc3YnLCAnLmRvYycsICcuZG9jeCcsICcueGxzeCcsICcueGxzJ10uaW5jbHVkZXMoZXh0ZW5zaW9uKVxuICAgIGNvbnN0IGlzQXVkaW9Gb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpID0+XG4gICAgICBbJy5mbGFjJywgJy5tNGEnLCAnLm1wMycsICcubXA0JywgJy5vZ2EnLCAnLm9nZycsICcud2F2JywgJy53ZWJtJ10uaW5jbHVkZXMoZXh0ZW5zaW9uKVxuXG4gICAgQXJyYXkuZnJvbShmaWxlcykuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgIGxldCBleGNsdWRlZEZpbGUgPSBmYWxzZVxuICAgICAgY29uc3QgZmlsZU5hbWVQYXJ0cyA9IGZpbGUubmFtZS5zcGxpdCgnLicpXG4gICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZU5hbWVQYXJ0cy5sZW5ndGggPiAxID8gYC4ke2ZpbGVOYW1lUGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCl9YCA6ICcnXG5cbiAgICAgIGlmICghYWxsb3dlZEZpbGVUeXBlcz8uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGZpbGVTaXplc1tmaWxlLm5hbWVdID0gZmlsZS5zaXplXG5cbiAgICAgIC8vIFZhbGlkYWNpb25lcyBlc3BlY8OtZmljYXMgc2Vnw7puIGVsIHRpcG8gZGUgYXJjaGl2b1xuICAgICAgaWYgKGlzTmV3Rm9ybWF0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIC8vIFBhcmEgbnVldm9zIGZvcm1hdG9zOiBoYXN0YSA0Ljk5TUIgcG9yIGFyY2hpdm8sIGhhc3RhIDUgYXJjaGl2b3NcbiAgICAgICAgaWYgKGZpbGUuc2l6ZSA+IE1BWF9GSUxFX1NJWkVfTUJfTUFJQV9WSVNJT04gKiAxMDI0ICogMTAyNCkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gNSkge1xuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzT2xkRm9ybWF0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIC8vIFBhcmEgZm9ybWF0b3MgYW50ZXJpb3JlczogaGFzdGEgMU1CIHBvciBhcmNoaXZvLCBoYXN0YSA1IGFyY2hpdm9zXG4gICAgICAgIGlmIChmaWxlLnNpemUgPiBNQVhfRklMRV9TSVpFX01CX09MRCAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXNJbnNlcnRlZCArIDEgPiA1KSB7XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNBdWRpb0Zvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICAvLyBQYXJhIGFyY2hpdm9zIGRlIGF1ZGlvOiBoYXN0YSAxME1CIHBvciBhcmNoaXZvLCBoYXN0YSA1IGFyY2hpdm9zXG4gICAgICAgIGlmIChmaWxlLnNpemUgPiBNQVhfRklMRV9TSVpFX01CX0FVRElPICogMTAyNCAqIDEwMjQpIHtcbiAgICAgICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlc0luc2VydGVkICsgMSA+IDUpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWV4Y2x1ZGVkRmlsZSkge1xuICAgICAgICBmaWxlc0luc2VydGVkICs9IDFcbiAgICAgICAgY29uc3QgdHlwZUZpbGUgPSBmaWxlLnR5cGUgfHwgZmlsZVR5cGVzW2ZpbGVFeHRlbnNpb25dXG4gICAgICAgIGNvbnN0IHBhcnNlZEZpbGUgPSBuZXcgRmlsZShbZmlsZV0sIGZpbGUubmFtZSwgeyB0eXBlOiB0eXBlRmlsZSB9KVxuICAgICAgICBvbkZpbGVBdHRhY2g/LihwYXJzZWRGaWxlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBzZXRJc0Rpc2FibGVkKGZhbHNlKVxuICAgIGlmIChleGNsdWRlZEZpbGVzLmxlbmd0aCB8fCBleGNlZWRlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogdHJ1ZSwgZXhjbHVkZWRGaWxlcywgZXhjZWVkZWRGaWxlcywgZmlsZVNpemVzIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNoQ2xpY2sgPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7IG9wdGlvbjogJ2ZpbGVzJyB9KVxuICAgIGlmIChhdHRhY2htZW50cy5sZW5ndGggPj0gNSkgcmV0dXJuXG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoZmlsZUlkOiBzdHJpbmcpID0+IHtcbiAgICBvbkRlbGV0ZUF0dGFjaG1lbnQ/LihmaWxlSWQpXG4gIH1cblxuICBjb25zdCBoYW5kbGVXcmFwcGVyRm9jdXMgPSAoKSA9PiBzZXRJc0ZvY3VzZWQodHJ1ZSlcbiAgY29uc3QgaGFuZGxlV3JhcHBlckJsdXIgPSAoKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXdyYXBwZXJSZWYuY3VycmVudD8uY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKVxuICAgICAgfVxuICAgIH0sIDApXG4gIH1cblxuICBjb25zdCBoYW5kbGVTdG9wR2VuZXJhdGlvbiA9ICgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U3RvcFJlc3BvbnNlKVxuICAgIG9uU3RvcEdlbmVyYXRpb24/LigpXG4gIH1cblxuICBjb25zdCBpY29uQ29sb3JJbmFjdGl2ZSA9IGlzRm9jdXNlZCA/ICcjNjY2NjY2JyA6ICcjOTk5J1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHlsZWRNQUlBSW5wdXRXcmFwcGVyXG4gICAgICAgIHJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICBhbGlnbkJ1dHRvbnM9e2FsaWduQnV0dG9uc31cbiAgICAgICAgaGFzQXR0YWNobWVudHM9eyEhYXR0YWNobWVudHMubGVuZ3RofVxuICAgICAgICBvbkZvY3VzPXtoYW5kbGVXcmFwcGVyRm9jdXN9XG4gICAgICAgIG9uQmx1cj17aGFuZGxlV3JhcHBlckJsdXJ9XG4gICAgICA+XG4gICAgICAgIHshIWF0dGFjaG1lbnRzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogJzEycHgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgIHthdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBhdHRhY2htZW50Lm5hbWUuc3BsaXQoJy4nKVxuICAgICAgICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZU5hbWVQYXJ0cy5sZW5ndGggPiAxID8gYC4ke2ZpbGVOYW1lUGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCl9YCA6ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGlzSW1hZ2VCeUV4dGVuc2lvbiA9IFsnLnBuZycsICcuanBnJywgJy5qcGVnJ10uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbilcbiAgICAgICAgICAgICAgY29uc3QgaXNJbWFnZUJ5TWltZSA9IGF0dGFjaG1lbnQudHlwZT8uc3RhcnRzV2l0aCgnaW1hZ2UvJylcbiAgICAgICAgICAgICAgY29uc3QgaXNJbWFnZSA9IGlzSW1hZ2VCeU1pbWUgJiYgaXNJbWFnZUJ5RXh0ZW5zaW9uXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2F0dGFjaG1lbnQubmFtZX0ga2V5PXtgJHtpbmRleH0tJHthdHRhY2htZW50Lm5hbWV9YH0+XG4gICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnQgaXNJbWFnZT17aXNJbWFnZX0+XG4gICAgICAgICAgICAgICAgICAgIHthdHRhY2htZW50Lmljb259XG4gICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudERlbGV0ZUljb24gb25DbGljaz17KCkgPT4gaGFuZGxlRGVsZXRlQXR0YWNobWVudChhdHRhY2htZW50LmlkKX0+XG4gICAgICAgICAgICAgICAgICAgICAgPFRyYXNoIGNvbG9yPVwicmdiYSgxOTEsIDE5MSwgMTkxLCAxKVwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudERlbGV0ZUljb24+XG4gICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50PlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIDxDb250ZXh0TWVudGlvbkVkaXRvclxuICAgICAgICAgIHJlZj17ZWRpdG9yUmVmfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgb25JbnB1dD17aGFuZGxlRWRpdG9ySW5wdXR9XG4gICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZVdyYXBwZXJGb2N1c31cbiAgICAgICAgICBvbkJsdXI9e2hhbmRsZVdyYXBwZXJCbHVyfVxuICAgICAgICAvPlxuICAgICAgICA8U3R5bGVkTUFJQUlucHV0QnV0dG9ucz5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiAnMTBweCcgfX0+XG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YXR0YWNobWVudHMubGVuZ3RoID49IDUgPyB0KCdjaGF0LmxpbWl0RmlsZXMnKSA6IHQoJ2NoYXQuYXR0YWNoRmlsZScpfT5cbiAgICAgICAgICAgICAgPFNDTUlXcmFwcGVyQXR0YWNobWVudEJ1dHRvblxuICAgICAgICAgICAgICAgIGhhc0F0dGFjaG1lbnRzPXshIWF0dGFjaG1lbnRzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICBpc01heGltaXplZD17YXR0YWNobWVudHMubGVuZ3RoID49IDV9XG4gICAgICAgICAgICAgICAgJGlzRm9jdXNlZD17aXNGb2N1c2VkfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUF0dGFjaENsaWNrfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEF0dGFjaFxuICAgICAgICAgICAgICAgICAgY29sb3I9eyFhdHRhY2htZW50cy5sZW5ndGggPyBpY29uQ29sb3JJbmFjdGl2ZSA6IGAke0JMVUVfSUFfQ09MT1JTWzUwMF19YH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9TQ01JV3JhcHBlckF0dGFjaG1lbnRCdXR0b24+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zZWFyY2hXZWInKX0+XG4gICAgICAgICAgICAgIDxTQ01JV3JhcHBlcldlYlNlYXJjaEJ1dHRvblxuICAgICAgICAgICAgICAgIGlzQWN0aXZlPXshIWlzV2ViU2VhcmNoQWN0aXZlfVxuICAgICAgICAgICAgICAgICRpc0ZvY3VzZWQ9e2lzRm9jdXNlZH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVXZWJTZWFyY2hUb2dnbGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R2xvYmVcbiAgICAgICAgICAgICAgICAgIGNvbG9yPXtpc1dlYlNlYXJjaEFjdGl2ZSA/IGAke0JMVUVfSUFfQ09MT1JTWzUwMF19YCA6IGljb25Db2xvckluYWN0aXZlfVxuICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NDTUlXcmFwcGVyV2ViU2VhcmNoQnV0dG9uPlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NoYXQuZGVlcFNlYXJjaCcpfT5cbiAgICAgICAgICAgICAgPFNDTUlXcmFwcGVyRGVlcFNlYXJjaEJ1dHRvblxuICAgICAgICAgICAgICAgIGlzQWN0aXZlPXshIWlzRGVlcFNlYXJjaEFjdGl2ZX1cbiAgICAgICAgICAgICAgICAkaXNGb2N1c2VkPXtpc0ZvY3VzZWR9XG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlRGVlcFNlYXJjaFRvZ2dsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZWxlc2NvcGVJY29uXG4gICAgICAgICAgICAgICAgICBjb2xvcj17aXNEZWVwU2VhcmNoQWN0aXZlID8gYCR7QkxVRV9JQV9DT0xPUlNbNTAwXX1gIDogaWNvbkNvbG9ySW5hY3RpdmV9XG4gICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NNSVdyYXBwZXJEZWVwU2VhcmNoQnV0dG9uPlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAge2lzV3JpdGluZyA/IChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjaGF0LnN0b3AnKX0+XG4gICAgICAgICAgICAgIDxTdHlsZWRNQUlBU3RvcEJ1dHRvbiBkaXNhYmxlZD17ZmFsc2V9IG9uQ2xpY2s9e2hhbmRsZVN0b3BHZW5lcmF0aW9ufSBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTdG9wSWNvbiAvPlxuICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTdG9wQnV0dG9uPlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17aXNTdHJlYW1pbmcgPyB0KCdjaGF0LnNlbmQnKSA6IHQoJ2NoYXQuc2VuZCcpfT5cbiAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWQgfHwgZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgaGFzVmFsdWVzPXshIXZhbHVlVGV4dC5sZW5ndGh9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGFwZXJQbGFuZSBjb2xvcj1cIiNCRkJGQkZcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRCdXR0b24+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TdHlsZWRNQUlBSW5wdXRCdXR0b25zPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9e2ZpbGVJbnB1dFJlZn1cbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICBhY2NlcHQ9XCIudHh0LC5tZCwuY3N2LC5kb2MsLmRvY3gsLnBuZywuanBnLC5qcGVnLC5wZGYsLnhsc3gsLnhscywuZmxhYywubTRhLC5tcDMsLm1wNCwub2dhLC5vZ2csLndhdiwud2VibVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVTZWxlY3R9XG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ25vbmUnIH19XG4gICAgICAgIC8+XG4gICAgICA8L1N0eWxlZE1BSUFJbnB1dFdyYXBwZXI+XG4gICAgICB7bW9kYWxQcm9wcy5pc09wZW4gJiYgKFxuICAgICAgICA8TW9kYWxGaWxlRXhjZWVkc1xuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1vZGFsUHJvcHMoeyBpc09wZW46IGZhbHNlLCBleGNsdWRlZEZpbGVzOiBbXSwgZXhjZWVkZWRGaWxlczogW10sIGZpbGVTaXplczoge30gfSl9XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNsdWRlZEZpbGVzfVxuICAgICAgICAgIGV4Y2VlZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjZWVkZWRGaWxlc31cbiAgICAgICAgICBmaWxlU2l6ZXM9e21vZGFsUHJvcHMuZmlsZVNpemVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtwb3BvdmVyTm9kZSAmJiBjcmVhdGVQb3J0YWwocG9wb3Zlck5vZGUsIGRvY3VtZW50LmJvZHkpfVxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQWdEQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUN2RyxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxVQUFVLFFBQVEsNkNBQTZDO0FBQ3hFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFFdEUsU0FDRUMsY0FBYyxFQUNkQyx3QkFB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
562
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlBhcGVyUGxhbmUiLCJBdHRhY2giLCJHbG9iZSIsIlRyYXNoIiwiVG9vbHRpcCIsIlNDTUlBdHRhY2htZW50IiwiU0NNSUF0dGFjaG1lbnREZWxldGVJY29uIiwiU0NNSVdyYXBwZXJBdHRhY2htZW50QnV0dG9uIiwiU0NNSVdyYXBwZXJXZWJTZWFyY2hCdXR0b24iLCJTQ01JV3JhcHBlckRlZXBTZWFyY2hCdXR0b24iLCJTdHlsZWRNQUlBSW5wdXQiLCJTdHlsZWRNQUlBSW5wdXRCdXR0b25zIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiU3R5bGVkTUFJQVN0b3BCdXR0b24iLCJTdHlsZWRNQUlBU3RvcEljb24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiTW9kYWxGaWxlRXhjZWVkcyIsInVzZVQiLCJUZWxlc2NvcGVJY29uIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJhbGxvd2VkRmlsZVR5cGVzIiwiZmlsZVR5cGVzIiwiTUFYX0ZJTEVfU0laRV9NQl9NQUlBX1ZJU0lPTiIsIk1BWF9GSUxFX1NJWkVfTUJfT0xEIiwiTUFYX0ZJTEVfU0laRV9NQl9BVURJTyIsIkJMVUVfSUFfQ09MT1JTIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTUFJQUlucHV0IiwiX3JlZiIsIm9uU2VuZE1lc3NhZ2UiLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsImlzU3RyZWFtaW5nIiwiaXNXcml0aW5nIiwib25TdG9wR2VuZXJhdGlvbiIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJfcmVmJGFsaWduQnV0dG9ucyIsImFsaWduQnV0dG9ucyIsIm9uRmlsZUF0dGFjaCIsIm9uRGVsZXRlQXR0YWNobWVudCIsIl9yZWYkYXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImNoYXRJZCIsIm5ld0NoYXRLZXkiLCJfdXNlVCIsInQiLCJpbnB1dFJlZiIsImZpbGVJbnB1dFJlZiIsIndyYXBwZXJSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ2YWx1ZVRleHRhcmVhIiwic2V0VmFsdWVUZXh0YXJlYSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNEaXNhYmxlZCIsInNldElzRGlzYWJsZWQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzRm9jdXNlZCIsInNldElzRm9jdXNlZCIsIl91c2VTdGF0ZTciLCJpc09wZW4iLCJleGNsdWRlZEZpbGVzIiwiZXhjZWVkZWRGaWxlcyIsImZpbGVTaXplcyIsIl91c2VTdGF0ZTgiLCJtb2RhbFByb3BzIiwic2V0TW9kYWxQcm9wcyIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInRvZ2dsZURlZXBTZWFyY2giLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJhZ2VudCIsInByZXZpb3VzQWdlbnRJZFJlZiIsInVuZGVmaW5lZCIsInByZXZpb3VzQ2hhdElkUmVmIiwicHJldmlvdXNOZXdDaGF0S2V5UmVmIiwiaGFuZGxlV2ViU2VhcmNoVG9nZ2xlIiwiYWlDaGF0VG9vbHMiLCJvcHRpb24iLCJoYW5kbGVEZWVwU2VhcmNoVG9nZ2xlIiwiaGFuZGxlUmVzaXplIiwidGV4dGFyZWEiLCJjdXJyZW50IiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwicHJldmlvdXNNaW5IZWlnaHQiLCJzdHlsZSIsInByZXZpb3VzTWF4SGVpZ2h0IiwiaGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0Iiwic2Nyb2xsSGVpZ2h0IiwiY29tcHV0ZWRTdHlsZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJsaW5lSGVpZ2h0IiwicGFyc2VGbG9hdCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiYm9yZGVyVG9wIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJCb3R0b20iLCJib3JkZXJCb3R0b21XaWR0aCIsInNpbmdsZUxpbmVIZWlnaHQiLCJpc0VtcHR5IiwidmFsdWUiLCJ0cmltIiwiaGFzTXVsdGlwbGVWaXN1YWxMaW5lcyIsImNhbnZhcyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwidGV4dGFyZWFTdHlsZXMiLCJmb250IiwiY29uY2F0IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiYm9yZGVyTGVmdCIsImJvcmRlckxlZnRXaWR0aCIsImJvcmRlclJpZ2h0IiwiYm9yZGVyUmlnaHRXaWR0aCIsInRleHRhcmVhV2lkdGgiLCJvZmZzZXRXaWR0aCIsInRleHQiLCJsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsImxpbmUiLCJ0ZXh0V2lkdGgiLCJtZWFzdXJlVGV4dCIsIndpZHRoIiwiZXJyIiwiZSIsImYiLCJuZXdIZWlnaHQiLCJNYXRoIiwibWluIiwibWF4IiwiZm9jdXMiLCJhZ2VudENoYW5nZWQiLCJpZCIsInByZXZpb3VzQ2hhdElkIiwiY3VycmVudENoYXRJZCIsImNoYXRDaGFuZ2VkIiwiY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0IiwibmV3Q2hhdFN0YXJ0ZWQiLCJpc0luaXRpYWxNb3VudCIsImRlbGF5Iiwic2V0VGltZW91dCIsImhhbmRsZVNlc3Npb25DaGFuZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFuaW1hdGlvbkZyYW1lSWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsImhhc1RleHQiLCJoYXNBdHRhY2htZW50cyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaGFuZGxlS2V5RG93biIsImtleSIsInNoaWZ0S2V5IiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVDaGFuZ2UiLCJ0YXJnZXQiLCJoYW5kbGVQYXN0ZSIsIl9pbnB1dFJlZiRjdXJyZW50JHZhbCIsIl9pbnB1dFJlZiRjdXJyZW50IiwiY3VycmVudFZhbHVlIiwiaGFuZGxlRmlsZVNlbGVjdCIsImZpbGVzIiwiZmlsZXNJbnNlcnRlZCIsImlzTmV3Rm9ybWF0IiwiZXh0ZW5zaW9uIiwiaW5jbHVkZXMiLCJpc09sZEZvcm1hdCIsImlzQXVkaW9Gb3JtYXQiLCJBcnJheSIsImZyb20iLCJmb3JFYWNoIiwiZmlsZSIsIl9maWxlTmFtZVBhcnRzJHBvcCIsImV4Y2x1ZGVkRmlsZSIsImZpbGVOYW1lUGFydHMiLCJuYW1lIiwiZmlsZUV4dGVuc2lvbiIsInBvcCIsInRvTG93ZXJDYXNlIiwic2l6ZSIsInB1c2giLCJ0eXBlRmlsZSIsInR5cGUiLCJwYXJzZWRGaWxlIiwiRmlsZSIsImhhbmRsZUF0dGFjaENsaWNrIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiY2xpY2siLCJoYW5kbGVEZWxldGVBdHRhY2htZW50IiwiZmlsZUlkIiwiaGFuZGxlQmx1ciIsImhhbmRsZVdyYXBwZXJGb2N1cyIsImhhbmRsZVdyYXBwZXJCbHVyIiwiX3dyYXBwZXJSZWYkY3VycmVudCIsImNvbnRhaW5zIiwiYWN0aXZlRWxlbWVudCIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiYWlDaGF0U3RvcFJlc3BvbnNlIiwiaWNvbkNvbG9ySW5hY3RpdmUiLCJjaGlsZHJlbiIsInJlZiIsIm9uRm9jdXMiLCJvbkJsdXIiLCJkaXNwbGF5IiwiZ2FwIiwiYWxpZ25JdGVtcyIsIm1hcCIsImF0dGFjaG1lbnQiLCJpbmRleCIsIl9maWxlTmFtZVBhcnRzJHBvcDIiLCJfYXR0YWNobWVudCR0eXBlIiwiaXNJbWFnZUJ5RXh0ZW5zaW9uIiwiaXNJbWFnZUJ5TWltZSIsInN0YXJ0c1dpdGgiLCJpc0ltYWdlIiwidGl0bGUiLCJpY29uIiwib25DbGljayIsImNvbG9yIiwib25LZXlEb3duIiwib25QYXN0ZSIsImlzTWF4aW1pemVkIiwiJGlzRm9jdXNlZCIsImlzQWN0aXZlIiwiaGFzVmFsdWVzIiwibXVsdGlwbGUiLCJhY2NlcHQiLCJvbkNsb3NlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12b2lkICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWxvbmVseS1pZiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIEtleWJvYXJkRXZlbnQsIFJlYWN0Tm9kZSwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBQYXBlclBsYW5lIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvUGFwZXJQbGFuZSdcbmltcG9ydCB7IEF0dGFjaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0F0dGFjaCdcbmltcG9ydCB7IEdsb2JlIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvR2xvYmUnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuXG5pbXBvcnQge1xuICBTQ01JQXR0YWNobWVudCxcbiAgU0NNSUF0dGFjaG1lbnREZWxldGVJY29uLFxuICBTQ01JV3JhcHBlckF0dGFjaG1lbnRCdXR0b24sXG4gIFNDTUlXcmFwcGVyV2ViU2VhcmNoQnV0dG9uLFxuICBTQ01JV3JhcHBlckRlZXBTZWFyY2hCdXR0b24sXG4gIFN0eWxlZE1BSUFJbnB1dCxcbiAgU3R5bGVkTUFJQUlucHV0QnV0dG9ucyxcbiAgU3R5bGVkTUFJQUlucHV0V3JhcHBlcixcbiAgU3R5bGVkTUFJQVNlbmRCdXR0b24sXG4gIFN0eWxlZE1BSUFTdG9wQnV0dG9uLFxuICBTdHlsZWRNQUlBU3RvcEljb24sXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBNb2RhbEZpbGVFeGNlZWRzIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL01vZGFsRmlsZUV4Y2VlZHMnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IFRlbGVzY29wZUljb24gfSBmcm9tICcuLi9pY29ucy9UZWxlc2NvcGVJY29uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHtcbiAgYWxsb3dlZEZpbGVUeXBlcyxcbiAgZmlsZVR5cGVzLFxuICBNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OLFxuICBNQVhfRklMRV9TSVpFX01CX09MRCxcbiAgTUFYX0ZJTEVfU0laRV9NQl9BVURJTyxcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Zvcm1hdEV4dGVuc2lvbnMnXG5pbXBvcnQgeyBCTFVFX0lBX0NPTE9SUyB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9jb25maWcnXG5cbnR5cGUgQXR0YWNobWVudEZpbGUgPSB7XG4gIGZpbGU6IEZpbGVcbiAgb3JpZ2luYWxGaWxlPzogRmlsZVxuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbn1cblxudHlwZSBNQUlBSW5wdXRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nLCBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10pID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgpID0+IHZvaWRcbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzV3JpdGluZz86IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgb25DaGFuZ2U/OiAoKSA9PiB2b2lkXG4gIGFsaWduQnV0dG9ucz86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcbiAgb25GaWxlQXR0YWNoPzogKGZpbGU6IEZpbGUpID0+IHZvaWRcbiAgb25EZWxldGVBdHRhY2htZW50PzogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBjaGF0SWQ/OiBzdHJpbmdcbiAgbmV3Q2hhdEtleT86IG51bWJlclxufVxuXG5leHBvcnQgY29uc3QgTUFJQUlucHV0ID0gKHtcbiAgb25TZW5kTWVzc2FnZSxcbiAgY2xhc3NOYW1lLFxuICBkaXNhYmxlZCxcbiAgaXNTdHJlYW1pbmcsXG4gIGlzV3JpdGluZyxcbiAgb25TdG9wR2VuZXJhdGlvbixcbiAgcGxhY2Vob2xkZXIsXG4gIG9uQ2hhbmdlLFxuICBhbGlnbkJ1dHRvbnMgPSAndmVydGljYWwnLFxuICBvbkZpbGVBdHRhY2gsXG4gIG9uRGVsZXRlQXR0YWNobWVudCxcbiAgYXR0YWNobWVudHMgPSBbXSxcbiAgY2hhdElkLFxuICBuZXdDaGF0S2V5LFxufTogTUFJQUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbClcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFt2YWx1ZVRleHRhcmVhLCBzZXRWYWx1ZVRleHRhcmVhXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbaXNEaXNhYmxlZCwgc2V0SXNEaXNhYmxlZF0gPSB1c2VTdGF0ZSh0cnVlKVxuICBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFttb2RhbFByb3BzLCBzZXRNb2RhbFByb3BzXSA9IHVzZVN0YXRlKHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGV4Y2x1ZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGV4Y2VlZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGZpbGVTaXplczoge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgfSlcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdG9nZ2xlV2ViU2VhcmNoLCBpc1dlYlNlYXJjaEFjdGl2ZSwgdG9nZ2xlRGVlcFNlYXJjaCwgaXNEZWVwU2VhcmNoQWN0aXZlLCBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIC8vIEluaWNpYWxpemFyIGxhcyByZWZlcmVuY2lhcyBjb21vIHVuZGVmaW5lZCBwYXJhIGRldGVjdGFyIGVsIHByaW1lciBjYW1iaW8gY29ycmVjdGFtZW50ZVxuICBjb25zdCBwcmV2aW91c0FnZW50SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzQ2hhdElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c05ld0NoYXRLZXlSZWYgPSB1c2VSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG5cbiAgY29uc3QgaGFuZGxlV2ViU2VhcmNoVG9nZ2xlID0gKCkgPT4ge1xuICAgIGlmIChpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGlmICghaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywgeyBvcHRpb246ICdzZWFyY2gnIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRGVlcFNlYXJjaFRvZ2dsZSA9ICgpID0+IHtcbiAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgfVxuICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIGlmICghaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHsgb3B0aW9uOiAnZGVlcF9zZWFyY2gnIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUmVzaXplID0gKCkgPT4ge1xuICAgIGNvbnN0IHRleHRhcmVhID0gaW5wdXRSZWYuY3VycmVudFxuICAgIGlmICghdGV4dGFyZWEpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEFsdHVyYSBtw61uaW1hIGVxdWl2YWxlbnRlIGEgdW5hIGzDrW5lYVxuICAgIGNvbnN0IG1pbkhlaWdodCA9IDIyLjFcbiAgICBjb25zdCBtYXhIZWlnaHQgPSAxMjIuMVxuXG4gICAgLy8gUGFyYSBtZWRpciBjb3JyZWN0YW1lbnRlIGVsIHNjcm9sbEhlaWdodCwgbmVjZXNpdGFtb3MgcXVpdGFyIHRlbXBvcmFsbWVudGUgbGFzIHJlc3RyaWNjaW9uZXNcbiAgICBjb25zdCBwcmV2aW91c01pbkhlaWdodCA9IHRleHRhcmVhLnN0eWxlLm1pbkhlaWdodFxuICAgIGNvbnN0IHByZXZpb3VzTWF4SGVpZ2h0ID0gdGV4dGFyZWEuc3R5bGUubWF4SGVpZ2h0XG5cbiAgICAvLyBFc3RhYmxlY2VyIGFsdHVyYSBhICdhdXRvJyB5IHF1aXRhciB0ZW1wb3JhbG1lbnRlIG1pbi1oZWlnaHQgeSBtYXgtaGVpZ2h0IHBhcmEgbWVkaXIgY29ycmVjdGFtZW50ZVxuICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9ICdhdXRvJ1xuICAgIHRleHRhcmVhLnN0eWxlLm1pbkhlaWdodCA9ICcwcHgnXG4gICAgdGV4dGFyZWEuc3R5bGUubWF4SGVpZ2h0ID0gJ25vbmUnXG5cbiAgICAvLyBGb3J6YXIgcmVmbG93IHBhcmEgcXVlIGVsIG5hdmVnYWRvciByZWNhbGN1bGVcbiAgICB2b2lkIHRleHRhcmVhLm9mZnNldEhlaWdodFxuXG4gICAgLy8gQWhvcmEgbWVkaXIgZWwgc2Nyb2xsSGVpZ2h0IHJlYWwgc2luIHJlc3RyaWNjaW9uZXNcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSB0ZXh0YXJlYS5zY3JvbGxIZWlnaHRcblxuICAgIC8vIENhbGN1bGFyIGxhIGFsdHVyYSBkZSB1bmEgbMOtbmVhIHVzYW5kbyBsb3MgZXN0aWxvcyBjb21wdXRhZG9zXG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRleHRhcmVhKVxuICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUubGluZUhlaWdodCkgfHwgMjAgLy8gRmFsbGJhY2sgYSAyMHB4IHNpIG5vIGVzdMOhIGRlZmluaWRvXG4gICAgY29uc3QgcGFkZGluZ1RvcCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nVG9wKSB8fCAwXG4gICAgY29uc3QgcGFkZGluZ0JvdHRvbSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nQm90dG9tKSB8fCAwXG4gICAgY29uc3QgYm9yZGVyVG9wID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmJvcmRlclRvcFdpZHRoKSB8fCAwXG4gICAgY29uc3QgYm9yZGVyQm90dG9tID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKSB8fCAwXG5cbiAgICAvLyBBbHR1cmEgZGUgdW5hIGzDrW5lYSBjb21wbGV0YSAobGluZS1oZWlnaHQgKyBwYWRkaW5nICsgYm9yZGVyKVxuICAgIGNvbnN0IHNpbmdsZUxpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0ICsgcGFkZGluZ1RvcCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJUb3AgKyBib3JkZXJCb3R0b21cblxuICAgIGNvbnN0IGlzRW1wdHkgPSB0ZXh0YXJlYS52YWx1ZS50cmltKCkgPT09ICcnXG5cbiAgICAvLyBNZWRpciBlbCBhbmNobyBkZWwgdGV4dG8gdXNhbmRvIENhbnZhcyBwYXJhIGRldGVybWluYXIgc2kgc2UgZW52dWVsdmUgYSBtw7psdGlwbGVzIGzDrW5lYXNcbiAgICBsZXQgaGFzTXVsdGlwbGVWaXN1YWxMaW5lcyA9IGZhbHNlXG5cbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxuXG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAvLyBGYWxsYmFjayBzaSBDYW52YXMgbm8gZXN0w6EgZGlzcG9uaWJsZTogdXNhciBzY3JvbGxIZWlnaHRcbiAgICAgIGhhc011bHRpcGxlVmlzdWFsTGluZXMgPSBzY3JvbGxIZWlnaHQgPiBzaW5nbGVMaW5lSGVpZ2h0ICogMS41XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRleHRhcmVhU3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGV4dGFyZWEpXG4gICAgICBjb250ZXh0LmZvbnQgPSBgJHt0ZXh0YXJlYVN0eWxlcy5mb250V2VpZ2h0fSAke3RleHRhcmVhU3R5bGVzLmZvbnRTaXplfSAke3RleHRhcmVhU3R5bGVzLmZvbnRGYW1pbHl9YFxuXG4gICAgICAvLyBDYWxjdWxhciBlbCBhbmNobyBkaXNwb25pYmxlIChhbmNobyB0b3RhbCBtZW5vcyBwYWRkaW5nIGl6cXVpZXJkby9kZXJlY2hvIHkgYm9yZGVyIGl6cXVpZXJkby9kZXJlY2hvKVxuICAgICAgY29uc3QgcGFkZGluZ0xlZnQgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUucGFkZGluZ0xlZnQpIHx8IDBcbiAgICAgIGNvbnN0IHBhZGRpbmdSaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nUmlnaHQpIHx8IDBcbiAgICAgIGNvbnN0IGJvcmRlckxlZnQgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuYm9yZGVyTGVmdFdpZHRoKSB8fCAwXG4gICAgICBjb25zdCBib3JkZXJSaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5ib3JkZXJSaWdodFdpZHRoKSB8fCAwXG4gICAgICBjb25zdCB0ZXh0YXJlYVdpZHRoID0gdGV4dGFyZWEub2Zmc2V0V2lkdGggLSBwYWRkaW5nTGVmdCAtIHBhZGRpbmdSaWdodCAtIGJvcmRlckxlZnQgLSBib3JkZXJSaWdodFxuICAgICAgY29uc3QgdGV4dCA9IHRleHRhcmVhLnZhbHVlIHx8ICcnXG4gICAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpXG5cbiAgICAgIC8vIFNpIGhheSBtw7psdGlwbGVzIGzDrW5lYXMgcG9yIHNhbHRvcyBkZSBsw61uZWEgZXhwbMOtY2l0b3NcbiAgICAgIGlmIChsaW5lcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGhhc011bHRpcGxlVmlzdWFsTGluZXMgPSB0cnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgdGV4dG8gc2UgZW52dWVsdmUgbWlkaWVuZG8gZWwgYW5jaG8gZGUgY2FkYSBsw61uZWFcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgaWYgKGxpbmUudHJpbSgpID09PSAnJykgY29udGludWVcbiAgICAgICAgICBjb25zdCB0ZXh0V2lkdGggPSBjb250ZXh0Lm1lYXN1cmVUZXh0KGxpbmUpLndpZHRoXG4gICAgICAgICAgLy8gU2kgYWxndW5hIGzDrW5lYSBlcyBtw6FzIGFuY2hhIHF1ZSBlbCB0ZXh0YXJlYSBkaXNwb25pYmxlLCBzZSBlbnZ1ZWx2ZVxuICAgICAgICAgIGlmICh0ZXh0V2lkdGggPiB0ZXh0YXJlYVdpZHRoKSB7XG4gICAgICAgICAgICBoYXNNdWx0aXBsZVZpc3VhbExpbmVzID0gdHJ1ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbmV3SGVpZ2h0OiBudW1iZXJcbiAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgLy8gQ3VhbmRvIGVzdMOhIHZhY8OtbywgdXNhciBhbHR1cmEgbcOtbmltYVxuICAgICAgbmV3SGVpZ2h0ID0gbWluSGVpZ2h0XG4gICAgfSBlbHNlIGlmICghaGFzTXVsdGlwbGVWaXN1YWxMaW5lcykge1xuICAgICAgLy8gQ3VhbmRvIGhheSBjb250ZW5pZG8gcGVybyBzb2xvIHVuYSBsw61uZWEgdmlzdWFsLCB1c2FyIGFsdHVyYSBtw61uaW1hXG4gICAgICBuZXdIZWlnaHQgPSBtaW5IZWlnaHRcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUGFyYSBtw7psdGlwbGVzIGzDrW5lYXMgdmlzdWFsZXMsIHVzYXIgZWwgc2Nyb2xsSGVpZ2h0XG4gICAgICBuZXdIZWlnaHQgPSBNYXRoLm1pbihNYXRoLm1heChzY3JvbGxIZWlnaHQsIG1pbkhlaWdodCksIG1heEhlaWdodClcbiAgICB9XG5cbiAgICAvLyBSZXN0YXVyYXIgZXN0aWxvcyBhbnRlcyBkZSBhcGxpY2FyIGxhIG51ZXZhIGFsdHVyYVxuICAgIHRleHRhcmVhLnN0eWxlLm1pbkhlaWdodCA9IHByZXZpb3VzTWluSGVpZ2h0IHx8ICcyMi4xcHgnXG4gICAgdGV4dGFyZWEuc3R5bGUubWF4SGVpZ2h0ID0gcHJldmlvdXNNYXhIZWlnaHQgfHwgJzEyMi4xcHgnXG5cbiAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBgJHtuZXdIZWlnaHR9cHhgXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFJlZi5jdXJyZW50ICYmICFkaXNhYmxlZCkge1xuICAgICAgaW5wdXRSZWYuY3VycmVudC5mb2N1cygpXG4gICAgICBoYW5kbGVSZXNpemUoKVxuICAgIH1cbiAgfSwgW2Rpc2FibGVkXSlcblxuICAvLyBBdXRvLWZvY3VzIGN1YW5kbyBjYW1iaWEgZWwgYWdlbnRlIG8gbGEgY29udmVyc2FjacOzbiwgbyBhbCBtb250YXIgZWwgY29tcG9uZW50ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIENvbXBhcmFjacOzbiBxdWUgbWFuZWphIGNvcnJlY3RhbWVudGUgdW5kZWZpbmVkL251bGxcbiAgICBjb25zdCBhZ2VudENoYW5nZWQgPSBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCAhPT0gYWdlbnQ/LmlkXG4gICAgLy8gQ29tcGFyYWNpw7NuIGVzdHJpY3RhIHF1ZSBkZXRlY3RhIGNhbWJpb3MgaW5jbHVzbyBjdWFuZG8gdW5vIGVzIHVuZGVmaW5lZFxuICAgIGNvbnN0IHByZXZpb3VzQ2hhdElkID0gcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudFxuICAgIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSBjaGF0SWRcbiAgICBjb25zdCBjaGF0Q2hhbmdlZCA9IHByZXZpb3VzQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkXG4gICAgLy8gRGV0ZWN0YXIgY2FtYmlvIGVzcGVjw61maWNvIGRlIHVuZGVmaW5lZC9udWxsIGEgdW4gdmFsb3IgKG51ZXZvIGNoYXQgLT4gY29udmVyc2FjacOzbiB2aWVqYSlcbiAgICBjb25zdCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgPVxuICAgICAgKHByZXZpb3VzQ2hhdElkID09PSB1bmRlZmluZWQgfHwgcHJldmlvdXNDaGF0SWQgPT09IG51bGwpICYmIGN1cnJlbnRDaGF0SWQgIT09IHVuZGVmaW5lZCAmJiBjdXJyZW50Q2hhdElkICE9PSBudWxsXG4gICAgY29uc3QgbmV3Q2hhdFN0YXJ0ZWQgPSBwcmV2aW91c05ld0NoYXRLZXlSZWYuY3VycmVudCAhPT0gbmV3Q2hhdEtleVxuICAgIGNvbnN0IGlzSW5pdGlhbE1vdW50ID0gcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZCAmJiBwcmV2aW91c0NoYXRJZFJlZi5jdXJyZW50ID09PSB1bmRlZmluZWRcblxuICAgIGlmIChcbiAgICAgIChhZ2VudENoYW5nZWQgfHwgY2hhdENoYW5nZWQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0IHx8IG5ld0NoYXRTdGFydGVkIHx8IGlzSW5pdGlhbE1vdW50KSAmJlxuICAgICAgaW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgIWRpc2FibGVkXG4gICAgKSB7XG4gICAgICAvLyBVc2FyIHNldFRpbWVvdXQgcGFyYSBhc2VndXJhciBxdWUgZWwgRE9NIGVzdMOpIGxpc3RvXG4gICAgICAvLyBBdW1lbnRhciBlbCBkZWxheSBwYXJhIGNhc29zIGRvbmRlIGVsIGNvbXBvbmVudGUgc2UgZXN0w6EgbW9udGFuZG9cbiAgICAgIGNvbnN0IGRlbGF5ID0gaXNJbml0aWFsTW91bnQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID8gMjAwIDogMTAwXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKGlucHV0UmVmLmN1cnJlbnQgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgICAgaW5wdXRSZWYuY3VycmVudC5mb2N1cygpXG4gICAgICAgIH1cbiAgICAgIH0sIGRlbGF5KVxuICAgIH1cblxuICAgIC8vIEFjdHVhbGl6YXIgbGFzIHJlZmVyZW5jaWFzIERFU1BVw4lTIGRlIGxhIGNvbXBhcmFjacOzblxuICAgIHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ID0gYWdlbnQ/LmlkXG4gICAgcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCA9IGNoYXRJZFxuICAgIHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50ID0gbmV3Q2hhdEtleVxuICB9LCBbYWdlbnQ/LmlkLCBjaGF0SWQsIG5ld0NoYXRLZXksIGRpc2FibGVkXSlcblxuICAvLyBDbGVhciBpbnB1dCB3aGVuIHNlc3Npb24gY2hhbmdlcyAodXNlciBzd2l0Y2hlcyB0byBhIGRpZmZlcmVudCBjaGF0KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNlc3Npb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBzZXRWYWx1ZVRleHRhcmVhKCcnKVxuICAgICAgc2V0SXNEaXNhYmxlZCh0cnVlKVxuICAgICAgaWYgKGlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgICB9XG4gICAgICBoYW5kbGVSZXNpemUoKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSlcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgaGFuZGxlUmVzaXplKClcbiAgICB9KVxuXG4gICAgcmV0dXJuICgpID0+IGNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvbkZyYW1lSWQpXG4gIH0sIFt2YWx1ZVRleHRhcmVhXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhc1RleHQgPSB2YWx1ZVRleHRhcmVhLnRyaW0oKS5sZW5ndGggPiAwXG4gICAgY29uc3QgaGFzQXR0YWNobWVudHMgPSBhdHRhY2htZW50cy5sZW5ndGggPiAwXG4gICAgc2V0SXNEaXNhYmxlZCghaGFzVGV4dCAmJiAhaGFzQXR0YWNobWVudHMpXG4gIH0sIFthdHRhY2htZW50cywgdmFsdWVUZXh0YXJlYV0pXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKGlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uU2VuZE1lc3NhZ2UoaW5wdXRSZWYuY3VycmVudC52YWx1ZSwgYXR0YWNobWVudHMpXG4gICAgICBpbnB1dFJlZi5jdXJyZW50LnZhbHVlID0gJydcbiAgICAgIHNldFZhbHVlVGV4dGFyZWEoJycpXG4gICAgICBzZXRJc0Rpc2FibGVkKHRydWUpXG4gICAgICBoYW5kbGVSZXNpemUoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChhdHRhY2htZW50cy5sZW5ndGgpIHtcbiAgICAgIG9uU2VuZE1lc3NhZ2UoJycsIGF0dGFjaG1lbnRzKVxuICAgICAgc2V0VmFsdWVUZXh0YXJlYSgnJylcbiAgICAgIHNldElzRGlzYWJsZWQodHJ1ZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgIWUuc2hpZnRLZXkpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgaWYgKCFpc0Rpc2FibGVkICYmICFkaXNhYmxlZCkge1xuICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IENoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgaGFzVGV4dCA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKS5sZW5ndGggPiAwXG4gICAgY29uc3QgaGFzQXR0YWNobWVudHMgPSBhdHRhY2htZW50cy5sZW5ndGggPiAwXG4gICAgc2V0SXNEaXNhYmxlZCghaGFzVGV4dCAmJiAhaGFzQXR0YWNobWVudHMpXG4gICAgc2V0VmFsdWVUZXh0YXJlYShlLnRhcmdldC52YWx1ZSlcbiAgICBvbkNoYW5nZT8uKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBhc3RlID0gKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaGFuZGxlUmVzaXplKClcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGlucHV0UmVmLmN1cnJlbnQ/LnZhbHVlID8/ICcnXG4gICAgICBjb25zdCBoYXNUZXh0ID0gY3VycmVudFZhbHVlLnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICBjb25zdCBoYXNBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzLmxlbmd0aCA+IDBcbiAgICAgIHNldFZhbHVlVGV4dGFyZWEoY3VycmVudFZhbHVlKVxuICAgICAgc2V0SXNEaXNhYmxlZCghaGFzVGV4dCAmJiAhaGFzQXR0YWNobWVudHMpXG4gICAgfSwgMTApXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlU2VsZWN0ID0gKGU6IENoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgZmlsZXMgPSBlLnRhcmdldC5maWxlc1xuICAgIGlmICghZmlsZXMpIHJldHVyblxuXG4gICAgY29uc3QgZXhjZWVkZWRGaWxlczogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGV4Y2x1ZGVkRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBmaWxlU2l6ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fVxuICAgIGxldCBmaWxlc0luc2VydGVkID0gYXR0YWNobWVudHMubGVuZ3RoXG5cbiAgICAvLyBEZWZpbmlyIGzDrW1pdGVzIHBhcmEgZGlmZXJlbnRlcyB0aXBvcyBkZSBhcmNoaXZvc1xuICAgIGNvbnN0IGlzTmV3Rm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PiBbJy5wbmcnLCAnLmpwZycsICcuanBlZycsICcucGRmJ10uaW5jbHVkZXMoZXh0ZW5zaW9uKVxuICAgIGNvbnN0IGlzT2xkRm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PlxuICAgICAgWycudHh0JywgJy5tZCcsICcuY3N2JywgJy5kb2MnLCAnLmRvY3gnLCAnLnhsc3gnLCAnLnhscyddLmluY2x1ZGVzKGV4dGVuc2lvbilcbiAgICBjb25zdCBpc0F1ZGlvRm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PlxuICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLmluY2x1ZGVzKGV4dGVuc2lvbilcblxuICAgIEFycmF5LmZyb20oZmlsZXMpLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICBsZXQgZXhjbHVkZWRGaWxlID0gZmFsc2VcbiAgICAgIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVxuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGVOYW1lUGFydHMubGVuZ3RoID4gMSA/IGAuJHtmaWxlTmFtZVBhcnRzLnBvcCgpPy50b0xvd2VyQ2FzZSgpfWAgOiAnJ1xuXG4gICAgICBpZiAoIWFsbG93ZWRGaWxlVHlwZXM/LmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBmaWxlU2l6ZXNbZmlsZS5uYW1lXSA9IGZpbGUuc2l6ZVxuXG4gICAgICAvLyBWYWxpZGFjaW9uZXMgZXNwZWPDrWZpY2FzIHNlZ8O6biBlbCB0aXBvIGRlIGFyY2hpdm9cbiAgICAgIGlmIChpc05ld0Zvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICAvLyBQYXJhIG51ZXZvcyBmb3JtYXRvczogaGFzdGEgNC45OU1CIHBvciBhcmNoaXZvLCBoYXN0YSA1IGFyY2hpdm9zXG4gICAgICAgIGlmIChmaWxlLnNpemUgPiBNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OICogMTAyNCAqIDEwMjQpIHtcbiAgICAgICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlc0luc2VydGVkICsgMSA+IDUpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc09sZEZvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICAvLyBQYXJhIGZvcm1hdG9zIGFudGVyaW9yZXM6IGhhc3RhIDFNQiBwb3IgYXJjaGl2bywgaGFzdGEgNSBhcmNoaXZvc1xuICAgICAgICBpZiAoZmlsZS5zaXplID4gTUFYX0ZJTEVfU0laRV9NQl9PTEQgKiAxMDI0ICogMTAyNCkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gNSkge1xuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzQXVkaW9Gb3JtYXQoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgLy8gUGFyYSBhcmNoaXZvcyBkZSBhdWRpbzogaGFzdGEgMTBNQiBwb3IgYXJjaGl2bywgaGFzdGEgNSBhcmNoaXZvc1xuICAgICAgICBpZiAoZmlsZS5zaXplID4gTUFYX0ZJTEVfU0laRV9NQl9BVURJTyAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXNJbnNlcnRlZCArIDEgPiA1KSB7XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFleGNsdWRlZEZpbGUpIHtcbiAgICAgICAgZmlsZXNJbnNlcnRlZCArPSAxXG4gICAgICAgIGNvbnN0IHR5cGVGaWxlID0gZmlsZS50eXBlIHx8IGZpbGVUeXBlc1tmaWxlRXh0ZW5zaW9uXVxuICAgICAgICBjb25zdCBwYXJzZWRGaWxlID0gbmV3IEZpbGUoW2ZpbGVdLCBmaWxlLm5hbWUsIHsgdHlwZTogdHlwZUZpbGUgfSlcbiAgICAgICAgb25GaWxlQXR0YWNoPy4ocGFyc2VkRmlsZSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgc2V0SXNEaXNhYmxlZChmYWxzZSlcbiAgICBpZiAoZXhjbHVkZWRGaWxlcy5sZW5ndGggfHwgZXhjZWVkZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgIHNldE1vZGFsUHJvcHMoeyBpc09wZW46IHRydWUsIGV4Y2x1ZGVkRmlsZXMsIGV4Y2VlZGVkRmlsZXMsIGZpbGVTaXplcyB9KVxuICAgIH1cblxuICAgIGlmIChmaWxlSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQudmFsdWUgPSAnJ1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaENsaWNrID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywgeyBvcHRpb246ICdmaWxlcycgfSlcbiAgICBpZiAoYXR0YWNobWVudHMubGVuZ3RoID49IDUpIHJldHVyblxuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEZWxldGVBdHRhY2htZW50ID0gKGZpbGVJZDogc3RyaW5nKSA9PiB7XG4gICAgb25EZWxldGVBdHRhY2htZW50Py4oZmlsZUlkKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmx1ciA9ICgpID0+IHtcbiAgICBjb25zdCBoYXNUZXh0ID0gdmFsdWVUZXh0YXJlYS50cmltKCkubGVuZ3RoID4gMFxuICAgIGNvbnN0IGhhc0F0dGFjaG1lbnRzID0gYXR0YWNobWVudHMubGVuZ3RoID4gMFxuICAgIHNldElzRGlzYWJsZWQoIWhhc1RleHQgJiYgIWhhc0F0dGFjaG1lbnRzKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlV3JhcHBlckZvY3VzID0gKCkgPT4gc2V0SXNGb2N1c2VkKHRydWUpXG4gIGNvbnN0IGhhbmRsZVdyYXBwZXJCbHVyID0gKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF3cmFwcGVyUmVmLmN1cnJlbnQ/LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIHNldElzRm9jdXNlZChmYWxzZSlcbiAgICAgIH1cbiAgICB9LCAwKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU3RvcEdlbmVyYXRpb24gPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFN0b3BSZXNwb25zZSlcbiAgICBvblN0b3BHZW5lcmF0aW9uPy4oKVxuICB9XG5cbiAgY29uc3QgaWNvbkNvbG9ySW5hY3RpdmUgPSBpc0ZvY3VzZWQgPyAnIzY2NjY2NicgOiAnIzk5OSdcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3R5bGVkTUFJQUlucHV0V3JhcHBlclxuICAgICAgICByZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgYWxpZ25CdXR0b25zPXthbGlnbkJ1dHRvbnN9XG4gICAgICAgIGhhc0F0dGFjaG1lbnRzPXshIWF0dGFjaG1lbnRzLmxlbmd0aH1cbiAgICAgICAgb25Gb2N1cz17aGFuZGxlV3JhcHBlckZvY3VzfVxuICAgICAgICBvbkJsdXI9e2hhbmRsZVdyYXBwZXJCbHVyfVxuICAgICAgPlxuICAgICAgICB7ISFhdHRhY2htZW50cy5sZW5ndGggJiYgKFxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6ICcxMnB4JywgYWxpZ25JdGVtczogJ2NlbnRlcicgfX0+XG4gICAgICAgICAgICB7YXR0YWNobWVudHMubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZVBhcnRzID0gYXR0YWNobWVudC5uYW1lLnNwbGl0KCcuJylcbiAgICAgICAgICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGVOYW1lUGFydHMubGVuZ3RoID4gMSA/IGAuJHtmaWxlTmFtZVBhcnRzLnBvcCgpPy50b0xvd2VyQ2FzZSgpfWAgOiAnJ1xuICAgICAgICAgICAgICBjb25zdCBpc0ltYWdlQnlFeHRlbnNpb24gPSBbJy5wbmcnLCAnLmpwZycsICcuanBlZyddLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pXG4gICAgICAgICAgICAgIGNvbnN0IGlzSW1hZ2VCeU1pbWUgPSBhdHRhY2htZW50LnR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpXG4gICAgICAgICAgICAgIGNvbnN0IGlzSW1hZ2UgPSBpc0ltYWdlQnlNaW1lICYmIGlzSW1hZ2VCeUV4dGVuc2lvblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXthdHRhY2htZW50Lm5hbWV9IGtleT17YCR7aW5kZXh9LSR7YXR0YWNobWVudC5uYW1lfWB9PlxuICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50IGlzSW1hZ2U9e2lzSW1hZ2V9PlxuICAgICAgICAgICAgICAgICAgICB7YXR0YWNobWVudC5pY29ufVxuICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnREZWxldGVJY29uIG9uQ2xpY2s9eygpID0+IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQoYXR0YWNobWVudC5pZCl9PlxuICAgICAgICAgICAgICAgICAgICAgIDxUcmFzaCBjb2xvcj1cInJnYmEoMTkxLCAxOTEsIDE5MSwgMSlcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnREZWxldGVJY29uPlxuICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudD5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICA8U3R5bGVkTUFJQUlucHV0XG4gICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgb25QYXN0ZT17aGFuZGxlUGFzdGV9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgIGFsaWduQnV0dG9ucz17YWxpZ25CdXR0b25zfVxuICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgLz5cbiAgICAgICAgPFN0eWxlZE1BSUFJbnB1dEJ1dHRvbnM+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogJzEwcHgnIH19PlxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2F0dGFjaG1lbnRzLmxlbmd0aCA+PSA1ID8gdCgnY2hhdC5saW1pdEZpbGVzJykgOiB0KCdjaGF0LmF0dGFjaEZpbGUnKX0+XG4gICAgICAgICAgICAgIDxTQ01JV3JhcHBlckF0dGFjaG1lbnRCdXR0b25cbiAgICAgICAgICAgICAgICBoYXNBdHRhY2htZW50cz17ISFhdHRhY2htZW50cy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgaXNNYXhpbWl6ZWQ9e2F0dGFjaG1lbnRzLmxlbmd0aCA+PSA1fVxuICAgICAgICAgICAgICAgICRpc0ZvY3VzZWQ9e2lzRm9jdXNlZH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBdHRhY2hDbGlja31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxBdHRhY2hcbiAgICAgICAgICAgICAgICAgIGNvbG9yPXshYXR0YWNobWVudHMubGVuZ3RoID8gaWNvbkNvbG9ySW5hY3RpdmUgOiBgJHtCTFVFX0lBX0NPTE9SU1s1MDBdfWB9XG4gICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NNSVdyYXBwZXJBdHRhY2htZW50QnV0dG9uPlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NoYXQuc2VhcmNoV2ViJyl9PlxuICAgICAgICAgICAgICA8U0NNSVdyYXBwZXJXZWJTZWFyY2hCdXR0b25cbiAgICAgICAgICAgICAgICBpc0FjdGl2ZT17ISFpc1dlYlNlYXJjaEFjdGl2ZX1cbiAgICAgICAgICAgICAgICAkaXNGb2N1c2VkPXtpc0ZvY3VzZWR9XG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlV2ViU2VhcmNoVG9nZ2xlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEdsb2JlXG4gICAgICAgICAgICAgICAgICBjb2xvcj17aXNXZWJTZWFyY2hBY3RpdmUgPyBgJHtCTFVFX0lBX0NPTE9SU1s1MDBdfWAgOiBpY29uQ29sb3JJbmFjdGl2ZX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9TQ01JV3JhcHBlcldlYlNlYXJjaEJ1dHRvbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjaGF0LmRlZXBTZWFyY2gnKX0+XG4gICAgICAgICAgICAgIDxTQ01JV3JhcHBlckRlZXBTZWFyY2hCdXR0b25cbiAgICAgICAgICAgICAgICBpc0FjdGl2ZT17ISFpc0RlZXBTZWFyY2hBY3RpdmV9XG4gICAgICAgICAgICAgICAgJGlzRm9jdXNlZD17aXNGb2N1c2VkfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZURlZXBTZWFyY2hUb2dnbGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGVsZXNjb3BlSWNvblxuICAgICAgICAgICAgICAgICAgY29sb3I9e2lzRGVlcFNlYXJjaEFjdGl2ZSA/IGAke0JMVUVfSUFfQ09MT1JTWzUwMF19YCA6IGljb25Db2xvckluYWN0aXZlfVxuICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NDTUlXcmFwcGVyRGVlcFNlYXJjaEJ1dHRvbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHtpc1dyaXRpbmcgPyAoXG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zdG9wJyl9PlxuICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BCdXR0b24gZGlzYWJsZWQ9e2ZhbHNlfSBvbkNsaWNrPXtoYW5kbGVTdG9wR2VuZXJhdGlvbn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICAgICAgICAgIDxTdHlsZWRNQUlBU3RvcEljb24gLz5cbiAgICAgICAgICAgICAgPC9TdHlsZWRNQUlBU3RvcEJ1dHRvbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2lzU3RyZWFtaW5nID8gdCgnY2hhdC5zZW5kJykgOiB0KCdjaGF0LnNlbmQnKX0+XG4gICAgICAgICAgICAgIDxTdHlsZWRNQUlBU2VuZEJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkIHx8IGRpc2FibGVkfVxuICAgICAgICAgICAgICAgIGhhc1ZhbHVlcz17ISF2YWx1ZVRleHRhcmVhLmxlbmd0aH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxQYXBlclBsYW5lIGNvbG9yPVwiI0JGQkZCRlwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgPC9TdHlsZWRNQUlBU2VuZEJ1dHRvbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApfVxuICAgICAgICA8L1N0eWxlZE1BSUFJbnB1dEJ1dHRvbnM+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIGFjY2VwdD1cIi50eHQsLm1kLC5jc3YsLmRvYywuZG9jeCwucG5nLC5qcGcsLmpwZWcsLnBkZiwueGxzeCwueGxzLC5mbGFjLC5tNGEsLm1wMywubXA0LC5vZ2EsLm9nZywud2F2LC53ZWJtXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZVNlbGVjdH1cbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnbm9uZScgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvU3R5bGVkTUFJQUlucHV0V3JhcHBlcj5cbiAgICAgIHttb2RhbFByb3BzLmlzT3BlbiAmJiAoXG4gICAgICAgIDxNb2RhbEZpbGVFeGNlZWRzXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogZmFsc2UsIGV4Y2x1ZGVkRmlsZXM6IFtdLCBleGNlZWRlZEZpbGVzOiBbXSwgZmlsZVNpemVzOiB7fSB9KX1cbiAgICAgICAgICBleGNsdWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2x1ZGVkRmlsZXN9XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNlZWRlZEZpbGVzfVxuICAgICAgICAgIGZpbGVTaXplcz17bW9kYWxQcm9wcy5maWxlU2l6ZXN9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQWdEQSxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDMUYsU0FBU0MsVUFBVSxRQUFRLDZDQUE2QztBQUN4RSxTQUFTQyxNQUFNLFFBQVEseUNBQXlDO0FBQ2hFLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQ0VDLGNBQWMsRUFDZEMsd0JBQXdCLEVBQ3hCQywyQkFBMkIsRUFDM0JDLDBCQUEwQixFQUMxQkMsMkJBQTJCLEVBQzNCQyxlQUFlLEVBQ2ZDLHNCQUFzQixFQUN0QkMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsRUFDcEJDLG9CQUFvQixFQUNwQkMsa0JBQWtCLFFBQ2IsVUFBVTtBQUNqQixTQUFTQyxnQkFBZ0IsUUFBUSxpQ0FBaUM7QUFDbEUsU0FBU0MsZ0JB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
@@ -30,6 +30,4 @@ export { MaiaChatLayoutMenuIcon } from './MaiaChatLayoutMenuIcon';
30
30
  export { MAIAIsologo } from './MAIAIsologo';
31
31
  export { MaiaStoreIcon } from './MaiaStoreIcon';
32
32
  export { MyAgentsNavIcon } from './MyAgentsNavIcon';
33
- export { RocketIcon } from './RocketIcon';
34
- export { NotionIcon } from './NotionIcon';
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBSUljb24iLCJFcnJvclN0YXRlIiwiQ29yTG9nbyIsIkhvbWVJY29uIiwiTmV3Q2hhdCIsIkRvY0ZpbGVJY29uIiwiRG9jeEZpbGVJY29uIiwiTURGaWxlSWNvbiIsIkNzdkZpbGVJY29uIiwiVGV4dEZpbGVJY29uIiwiUGRmRmlsZUljb24iLCJJbWFnZUZpbGVJY29uIiwiWGxzeEZpbGVJY29uIiwiWGxzRmlsZUljb24iLCJNcDNGaWxlSWNvbiIsIldhdkZpbGVJY29uIiwiQWFjRmlsZUljb24iLCJGbGFjRmlsZUljb24iLCJNNGFGaWxlSWNvbiIsIk1wNEZpbGVJY29uIiwiT2dhRmlsZUljb24iLCJPZ2dGaWxlSWNvbiIsIldlYm1GaWxlSWNvbiIsIkFjY2Vzc2liaWxpdHlJY29uIiwiQnJhaW5JY29uIiwiQWdlbnRNYWlhSWNvbiIsIkZhcXNJY29uIiwiTUFJQUljb24iLCJNYWlhQ2hhdExheW91dE1lbnVJY29uIiwiTUFJQUlzb2xvZ28iLCJNYWlhU3RvcmVJY29uIiwiTXlBZ2VudHNOYXZJY29uIiwiUm9ja2V0SWNvbiIsIk5vdGlvbkljb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9pY29ucy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBSUljb24gfSBmcm9tICcuL0FJSWNvbidcbmV4cG9ydCB7IEVycm9yU3RhdGUgfSBmcm9tICcuL0Vycm9yU3RhdGUnXG5leHBvcnQgeyBDb3JMb2dvIH0gZnJvbSAnLi9Db3JMb2dvJ1xuZXhwb3J0IHsgSG9tZUljb24gfSBmcm9tICcuL0hvbWVJY29uJ1xuZXhwb3J0IHsgTmV3Q2hhdCB9IGZyb20gJy4vTmV3Q2hhdCdcbmV4cG9ydCB7IERvY0ZpbGVJY29uIH0gZnJvbSAnLi9Eb2NGaWxlJ1xuZXhwb3J0IHsgRG9jeEZpbGVJY29uIH0gZnJvbSAnLi9Eb2N4RmlsZSdcbmV4cG9ydCB7IE1ERmlsZUljb24gfSBmcm9tICcuL01ERmlsZSdcbmV4cG9ydCB7IENzdkZpbGVJY29uIH0gZnJvbSAnLi9Dc3ZGaWxlJ1xuZXhwb3J0IHsgVGV4dEZpbGVJY29uIH0gZnJvbSAnLi9UZXh0RmlsZSdcbmV4cG9ydCB7IFBkZkZpbGVJY29uIH0gZnJvbSAnLi9QZGZGaWxlJ1xuZXhwb3J0IHsgSW1hZ2VGaWxlSWNvbiB9IGZyb20gJy4vSW1hZ2VGaWxlJ1xuZXhwb3J0IHsgWGxzeEZpbGVJY29uIH0gZnJvbSAnLi9YbHN4RmlsZSdcbmV4cG9ydCB7IFhsc0ZpbGVJY29uIH0gZnJvbSAnLi9YbHNGaWxlJ1xuZXhwb3J0IHsgTXAzRmlsZUljb24gfSBmcm9tICcuL01wM0ZpbGUnXG5leHBvcnQgeyBXYXZGaWxlSWNvbiB9IGZyb20gJy4vV2F2RmlsZSdcbmV4cG9ydCB7IEFhY0ZpbGVJY29uIH0gZnJvbSAnLi9BYWNGaWxlJ1xuZXhwb3J0IHsgRmxhY0ZpbGVJY29uIH0gZnJvbSAnLi9GbGFjSWNvbidcbmV4cG9ydCB7IE00YUZpbGVJY29uIH0gZnJvbSAnLi9NNGFGaWxlJ1xuZXhwb3J0IHsgTXA0RmlsZUljb24gfSBmcm9tICcuL01wNEZpbGUnXG5leHBvcnQgeyBPZ2FGaWxlSWNvbiB9IGZyb20gJy4vT2dhRmlsZSdcbmV4cG9ydCB7IE9nZ0ZpbGVJY29uIH0gZnJvbSAnLi9PZ2dGaWxlJ1xuZXhwb3J0IHsgV2VibUZpbGVJY29uIH0gZnJvbSAnLi9XZWJtRmlsZSdcbmV4cG9ydCB7IEFjY2Vzc2liaWxpdHlJY29uIH0gZnJvbSAnLi9BY2Nlc3NpYmlsaXR5SWNvbidcbmV4cG9ydCB7IEJyYWluSWNvbiB9IGZyb20gJy4vQnJhaW4nXG5leHBvcnQgeyBBZ2VudE1haWFJY29uIH0gZnJvbSAnLi9BZ2VudE1haWFJY29uJ1xuZXhwb3J0IHsgRmFxc0ljb24gfSBmcm9tICcuL0ZhcXNJY29uJ1xuZXhwb3J0IHsgTUFJQUljb24gfSBmcm9tICcuL01BSUFJY29uJ1xuZXhwb3J0IHsgTWFpYUNoYXRMYXlvdXRNZW51SWNvbiB9IGZyb20gJy4vTWFpYUNoYXRMYXlvdXRNZW51SWNvbidcbmV4cG9ydCB7IE1BSUFJc29sb2dvIH0gZnJvbSAnLi9NQUlBSXNvbG9nbydcbmV4cG9ydCB7IE1haWFTdG9yZUljb24gfSBmcm9tICcuL01haWFTdG9yZUljb24nXG5leHBvcnQgeyBNeUFnZW50c05hdkljb24gfSBmcm9tICcuL015QWdlbnRzTmF2SWNvbidcbmV4cG9ydCB7IFJvY2tldEljb24gfSBmcm9tICcuL1JvY2tldEljb24nXG5leHBvcnQgeyBOb3Rpb25JY29uIH0gZnJvbSAnLi9Ob3Rpb25JY29uJ1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxNQUFNLFFBQVEsVUFBVTtBQUNqQyxTQUFTQyxVQUFVLFFBQVEsY0FBYztBQUN6QyxTQUFTQyxPQUFPLFFBQVEsV0FBVztBQUNuQyxTQUFTQyxRQUFRLFFBQVEsWUFBWTtBQUNyQyxTQUFTQyxPQUFPLFFBQVEsV0FBVztBQUNuQyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxZQUFZLFFBQVEsWUFBWTtBQUN6QyxTQUFTQyxVQUFVLFFBQVEsVUFBVTtBQUNyQyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxZQUFZLFFBQVEsWUFBWTtBQUN6QyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxhQUFhLFFBQVEsYUFBYTtBQUMzQyxTQUFTQyxZQUFZLFFBQVEsWUFBWTtBQUN6QyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxZQUFZLFFBQVEsWUFBWTtBQUN6QyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxTQUFTQyxZQUFZLFFBQVEsWUFBWTtBQUN6QyxTQUFTQyxpQkFBaUIsUUFBUSxxQkFBcUI7QUFDdkQsU0FBU0MsU0FBUyxRQUFRLFNBQVM7QUFDbkMsU0FBU0MsYUFBYSxRQUFRLGlCQUFpQjtBQUMvQyxTQUFTQyxRQUFRLFFBQVEsWUFBWTtBQUNyQyxTQUFTQyxRQUFRLFFBQVEsWUFBWTtBQUNyQyxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0MsV0FBVyxRQUFRLGVBQWU7QUFDM0MsU0FBU0MsYUFBYSxRQUFRLGlCQUFpQjtBQUMvQyxTQUFTQyxlQUFlLFFBQVEsbUJBQW1CO0FBQ25ELFNBQVNDLFVBQVUsUUFBUSxjQUFjO0FBQ3pDLFNBQVNDLFVBQVUsUUFBUSxjQUFjIiwiaWdub3JlTGlzdCI6W119
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBSUljb24iLCJFcnJvclN0YXRlIiwiQ29yTG9nbyIsIkhvbWVJY29uIiwiTmV3Q2hhdCIsIkRvY0ZpbGVJY29uIiwiRG9jeEZpbGVJY29uIiwiTURGaWxlSWNvbiIsIkNzdkZpbGVJY29uIiwiVGV4dEZpbGVJY29uIiwiUGRmRmlsZUljb24iLCJJbWFnZUZpbGVJY29uIiwiWGxzeEZpbGVJY29uIiwiWGxzRmlsZUljb24iLCJNcDNGaWxlSWNvbiIsIldhdkZpbGVJY29uIiwiQWFjRmlsZUljb24iLCJGbGFjRmlsZUljb24iLCJNNGFGaWxlSWNvbiIsIk1wNEZpbGVJY29uIiwiT2dhRmlsZUljb24iLCJPZ2dGaWxlSWNvbiIsIldlYm1GaWxlSWNvbiIsIkFjY2Vzc2liaWxpdHlJY29uIiwiQnJhaW5JY29uIiwiQWdlbnRNYWlhSWNvbiIsIkZhcXNJY29uIiwiTUFJQUljb24iLCJNYWlhQ2hhdExheW91dE1lbnVJY29uIiwiTUFJQUlzb2xvZ28iLCJNYWlhU3RvcmVJY29uIiwiTXlBZ2VudHNOYXZJY29uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvaWNvbnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQUlJY29uIH0gZnJvbSAnLi9BSUljb24nXG5leHBvcnQgeyBFcnJvclN0YXRlIH0gZnJvbSAnLi9FcnJvclN0YXRlJ1xuZXhwb3J0IHsgQ29yTG9nbyB9IGZyb20gJy4vQ29yTG9nbydcbmV4cG9ydCB7IEhvbWVJY29uIH0gZnJvbSAnLi9Ib21lSWNvbidcbmV4cG9ydCB7IE5ld0NoYXQgfSBmcm9tICcuL05ld0NoYXQnXG5leHBvcnQgeyBEb2NGaWxlSWNvbiB9IGZyb20gJy4vRG9jRmlsZSdcbmV4cG9ydCB7IERvY3hGaWxlSWNvbiB9IGZyb20gJy4vRG9jeEZpbGUnXG5leHBvcnQgeyBNREZpbGVJY29uIH0gZnJvbSAnLi9NREZpbGUnXG5leHBvcnQgeyBDc3ZGaWxlSWNvbiB9IGZyb20gJy4vQ3N2RmlsZSdcbmV4cG9ydCB7IFRleHRGaWxlSWNvbiB9IGZyb20gJy4vVGV4dEZpbGUnXG5leHBvcnQgeyBQZGZGaWxlSWNvbiB9IGZyb20gJy4vUGRmRmlsZSdcbmV4cG9ydCB7IEltYWdlRmlsZUljb24gfSBmcm9tICcuL0ltYWdlRmlsZSdcbmV4cG9ydCB7IFhsc3hGaWxlSWNvbiB9IGZyb20gJy4vWGxzeEZpbGUnXG5leHBvcnQgeyBYbHNGaWxlSWNvbiB9IGZyb20gJy4vWGxzRmlsZSdcbmV4cG9ydCB7IE1wM0ZpbGVJY29uIH0gZnJvbSAnLi9NcDNGaWxlJ1xuZXhwb3J0IHsgV2F2RmlsZUljb24gfSBmcm9tICcuL1dhdkZpbGUnXG5leHBvcnQgeyBBYWNGaWxlSWNvbiB9IGZyb20gJy4vQWFjRmlsZSdcbmV4cG9ydCB7IEZsYWNGaWxlSWNvbiB9IGZyb20gJy4vRmxhY0ljb24nXG5leHBvcnQgeyBNNGFGaWxlSWNvbiB9IGZyb20gJy4vTTRhRmlsZSdcbmV4cG9ydCB7IE1wNEZpbGVJY29uIH0gZnJvbSAnLi9NcDRGaWxlJ1xuZXhwb3J0IHsgT2dhRmlsZUljb24gfSBmcm9tICcuL09nYUZpbGUnXG5leHBvcnQgeyBPZ2dGaWxlSWNvbiB9IGZyb20gJy4vT2dnRmlsZSdcbmV4cG9ydCB7IFdlYm1GaWxlSWNvbiB9IGZyb20gJy4vV2VibUZpbGUnXG5leHBvcnQgeyBBY2Nlc3NpYmlsaXR5SWNvbiB9IGZyb20gJy4vQWNjZXNzaWJpbGl0eUljb24nXG5leHBvcnQgeyBCcmFpbkljb24gfSBmcm9tICcuL0JyYWluJ1xuZXhwb3J0IHsgQWdlbnRNYWlhSWNvbiB9IGZyb20gJy4vQWdlbnRNYWlhSWNvbidcbmV4cG9ydCB7IEZhcXNJY29uIH0gZnJvbSAnLi9GYXFzSWNvbidcbmV4cG9ydCB7IE1BSUFJY29uIH0gZnJvbSAnLi9NQUlBSWNvbidcbmV4cG9ydCB7IE1haWFDaGF0TGF5b3V0TWVudUljb24gfSBmcm9tICcuL01haWFDaGF0TGF5b3V0TWVudUljb24nXG5leHBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4vTUFJQUlzb2xvZ28nXG5leHBvcnQgeyBNYWlhU3RvcmVJY29uIH0gZnJvbSAnLi9NYWlhU3RvcmVJY29uJ1xuZXhwb3J0IHsgTXlBZ2VudHNOYXZJY29uIH0gZnJvbSAnLi9NeUFnZW50c05hdkljb24nXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE1BQU0sUUFBUSxVQUFVO0FBQ2pDLFNBQVNDLFVBQVUsUUFBUSxjQUFjO0FBQ3pDLFNBQVNDLE9BQU8sUUFBUSxXQUFXO0FBQ25DLFNBQVNDLFFBQVEsUUFBUSxZQUFZO0FBQ3JDLFNBQVNDLE9BQU8sUUFBUSxXQUFXO0FBQ25DLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFlBQVksUUFBUSxZQUFZO0FBQ3pDLFNBQVNDLFVBQVUsUUFBUSxVQUFVO0FBQ3JDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFlBQVksUUFBUSxZQUFZO0FBQ3pDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLGFBQWEsUUFBUSxhQUFhO0FBQzNDLFNBQVNDLFlBQVksUUFBUSxZQUFZO0FBQ3pDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFlBQVksUUFBUSxZQUFZO0FBQ3pDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLFlBQVksUUFBUSxZQUFZO0FBQ3pDLFNBQVNDLGlCQUFpQixRQUFRLHFCQUFxQjtBQUN2RCxTQUFTQyxTQUFTLFFBQVEsU0FBUztBQUNuQyxTQUFTQyxhQUFhLFFBQVEsaUJBQWlCO0FBQy9DLFNBQVNDLFFBQVEsUUFBUSxZQUFZO0FBQ3JDLFNBQVNDLFFBQVEsUUFBUSxZQUFZO0FBQ3JDLFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyxXQUFXLFFBQVEsZUFBZTtBQUMzQyxTQUFTQyxhQUFhLFFBQVEsaUJBQWlCO0FBQy9DLFNBQVNDLGVBQWUsUUFBUSxtQkFBbUIiLCJpZ25vcmVMaXN0IjpbXX0=