@projectcor/maia-components 2.35.3-0 → 2.35.4-0
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.
- package/CHANGELOG.md +9 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +6 -2
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +135 -0
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +27 -0
- package/lib/components/atoms/Chip/Chip.spec.js +32 -0
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +29 -0
- package/lib/components/atoms/Fade/Fade.spec.js +31 -0
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +42 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.js +45 -3
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +283 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +68 -0
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +107 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +85 -0
- package/lib/components/atoms/Switch/Switch.spec.js +41 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +77 -0
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +104 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +291 -0
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +46 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +20 -5
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +128 -0
- package/lib/components/molecules/ChatFooter/ChatFooter.js +13 -1
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +105 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +84 -0
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +116 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +9 -3
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +183 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +12 -7
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +335 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +66 -7
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +293 -0
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +174 -0
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +59 -0
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +79 -0
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +86 -0
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +95 -0
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +96 -0
- package/lib/hooks/useCaretPosition.spec.js +58 -0
- package/lib/hooks/useDebounce.spec.js +42 -0
- package/lib/hooks/useEvent.js +15 -2
- package/lib/hooks/useEvent.spec.js +40 -0
- package/lib/hooks/useMentionAllowedTypes.spec.js +89 -0
- package/lib/hooks/useModal/useModal.spec.js +73 -0
- package/lib/hooks/useResize.spec.js +37 -0
- package/lib/hooks/useSkillsCatalog.spec.js +88 -0
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +33 -0
- package/lib/hooks/useT.spec.js +20 -0
- package/lib/hooks/useToggle.spec.js +33 -0
- package/lib/services/maia/Access/updateAccess.spec.js +108 -0
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +69 -0
- package/lib/services/maia/Actions/getSlashCommands.spec.js +74 -0
- package/lib/services/maia/Agents/createAgent.spec.js +55 -0
- package/lib/services/maia/Agents/deleteAgent.spec.js +42 -0
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +108 -0
- package/lib/services/maia/Agents/getAgentById.spec.js +55 -0
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +82 -0
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +45 -0
- package/lib/services/maia/Agents/toggleFavorite.spec.js +47 -0
- package/lib/services/maia/Agents/updateAgent.spec.js +48 -0
- package/lib/services/maia/Chats/deleteChat.spec.js +31 -0
- package/lib/services/maia/Chats/getChatMessages.spec.js +150 -0
- package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +149 -0
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +30 -0
- package/lib/services/maia/Chats/patchChat.spec.js +41 -0
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +28 -0
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +58 -0
- package/lib/services/maia/Knowledge/delete.spec.js +45 -0
- package/lib/services/maia/Knowledge/download.spec.js +78 -0
- package/lib/services/maia/Knowledge/save.spec.js +58 -0
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +72 -0
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +52 -0
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +83 -0
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +82 -0
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +63 -0
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +82 -0
- package/lib/services/maia/Skills/createSkill.spec.js +68 -0
- package/lib/services/maia/Skills/deleteSkill.spec.js +42 -0
- package/lib/services/maia/Skills/generateSkill.spec.js +48 -0
- package/lib/services/maia/Skills/getSkills.spec.js +152 -0
- package/lib/services/maia/Skills/updateSkill.spec.js +62 -0
- package/lib/services/maia/client.spec.js +56 -0
- package/lib/services/utils/fetchCOR.spec.js +211 -0
- package/lib/services/utils/getCookie.spec.js +20 -0
- package/lib/store/chatsSidebarOptimistic.spec.js +120 -0
- package/lib/store/faqsStore.types.js +1 -1
- package/lib/store/maiaLastChatPersistence.spec.js +22 -0
- package/lib/store/maiaPanelSessionPersistence.spec.js +62 -0
- package/lib/store/sessions/sessions.types.spec.js +16 -0
- package/lib/store/sessions/useSessionsStore.spec.js +135 -0
- package/lib/store/useChatsStore.js +3 -3
- package/lib/store/useChatsStore.spec.js +619 -0
- package/lib/store/useFaqsStore.spec.js +57 -0
- package/lib/test/buttonMock.js +22 -0
- package/lib/test/fetchPolyfill.js +160 -0
- package/lib/test/fileMock.js +2 -0
- package/lib/test/global-context.js +49 -0
- package/lib/test/iconMock.js +19 -0
- package/lib/test/mockFetch.js +49 -0
- package/lib/test/portalRoot.js +13 -0
- package/lib/test/styleMock.js +2 -0
- package/lib/test/test-utils.js +26 -0
- package/lib/test/tooltipMock.js +11 -0
- package/lib/types/Chat.js +1 -1
- package/lib/types/FrequentlyAskedQuestion.js +1 -1
- package/lib/utils/agentDisplayName.spec.js +44 -0
- package/lib/utils/autoApproveStorage.spec.js +25 -0
- package/lib/utils/chatInputFiles.spec.js +39 -0
- package/lib/utils/contextMentionLabel.spec.js +13 -0
- package/lib/utils/contextMentionTriggers.spec.js +38 -0
- package/lib/utils/contextMentionTypeLabel.spec.js +14 -0
- package/lib/utils/corConnectorMentionTypes.spec.js +23 -0
- package/lib/utils/fileDownloadHelper.spec.js +67 -0
- package/lib/utils/formatQuickActionMessage.spec.js +27 -0
- package/lib/utils/formatUnreadCount.spec.js +12 -0
- package/lib/utils/getUnitFileSize.spec.js +18 -0
- package/lib/utils/hitlAnalytics.spec.js +100 -0
- package/lib/utils/hoursPlannerQuickActionType.spec.js +64 -0
- package/lib/utils/mapBackendLang.spec.js +19 -0
- package/lib/utils/normalizeAgentConnectors.spec.js +89 -0
- package/lib/utils/orchestratorSubagents.spec.js +32 -0
- package/lib/utils/reasoningMappers.spec.js +103 -0
- package/lib/utils/retryCompletion.spec.js +99 -0
- package/lib/utils/skillContentSize.spec.js +13 -0
- package/lib/utils/slashCommandMarker.spec.js +43 -0
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +51 -0
- package/lib/utils/sseStreamContent.spec.js +31 -0
- package/lib/utils/streamActivityMessages.spec.js +98 -0
- package/lib/utils/validateTrimmedFields.spec.js +26 -0
- package/package.json +9 -6
|
@@ -13,6 +13,7 @@ import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
|
|
|
13
13
|
import { useTranslation } from 'react-i18next';
|
|
14
14
|
import { deleteSkill } from '../../../services/maia/Skills/deleteSkill';
|
|
15
15
|
import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
|
|
16
|
+
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
16
17
|
import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
|
|
17
18
|
import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal/DeleteQuestionModal';
|
|
18
19
|
import { SKILL_USE_AFTER_SAVE_EVENT } from '../../organisms/AbmSkillModal/AbmSkillModal';
|
|
@@ -38,12 +39,14 @@ var formatSkillDisplayName = function formatSkillDisplayName(name) {
|
|
|
38
39
|
return "#".concat(normalized);
|
|
39
40
|
};
|
|
40
41
|
var openSkillModal = function openSkillModal(values) {
|
|
42
|
+
var analyticsSource = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'catalog';
|
|
41
43
|
document.dispatchEvent(new CustomEvent('abm-skill-modal-set-values', {
|
|
42
44
|
detail: {
|
|
43
45
|
skillValues: {
|
|
44
46
|
values: values,
|
|
45
47
|
isOpen: true
|
|
46
|
-
}
|
|
48
|
+
},
|
|
49
|
+
analyticsSource: analyticsSource
|
|
47
50
|
}
|
|
48
51
|
}));
|
|
49
52
|
};
|
|
@@ -89,6 +92,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
89
92
|
onDeleteSkill = _ref2.onDeleteSkill;
|
|
90
93
|
var _useTranslation = useTranslation([SECTIONS.chatAI]),
|
|
91
94
|
t = _useTranslation.t;
|
|
95
|
+
var eventAmplitude = useEvent();
|
|
92
96
|
var _useSnackBarManager = useSnackBarManager(),
|
|
93
97
|
handleSnackbarSuccess = _useSnackBarManager.handleSnackbarSuccess,
|
|
94
98
|
handleSnackbarError = _useSnackBarManager.handleSnackbarError;
|
|
@@ -126,11 +130,12 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
126
130
|
});
|
|
127
131
|
}, [searchQuery, tabSkills]);
|
|
128
132
|
var handleCreateSkill = useCallback(function () {
|
|
133
|
+
var fromEmpty = activeTab === 'mine' && !loading && mySkills.length === 0 && !searchQuery;
|
|
129
134
|
openSkillModal({
|
|
130
135
|
isEditing: false,
|
|
131
136
|
intent: 'write'
|
|
132
|
-
});
|
|
133
|
-
}, []);
|
|
137
|
+
}, fromEmpty ? 'empty' : 'catalog');
|
|
138
|
+
}, [activeTab, loading, mySkills.length, searchQuery]);
|
|
134
139
|
|
|
135
140
|
// "Mis skills" tiene Usar + Editar + Eliminar; "Compartidas" solo Usar.
|
|
136
141
|
var cardMenuHeightPx = isMineTab ? CARD_MENU_ITEM_HEIGHT_PX * 3 : CARD_MENU_ITEM_HEIGHT_PX;
|
|
@@ -148,6 +153,12 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
148
153
|
|
|
149
154
|
/** Mismo flujo que el botón "Usar skill" del modal: chat nuevo con el primer agente y la mención puesta. */
|
|
150
155
|
var handleUseSkill = useCallback(function (skill) {
|
|
156
|
+
eventAmplitude(EVENTS.aiChatSkillUse, {
|
|
157
|
+
skill_id: skill.id,
|
|
158
|
+
access_type: skill.access_type || 'only_me',
|
|
159
|
+
source: 'card',
|
|
160
|
+
is_shared: !isMineTab
|
|
161
|
+
});
|
|
151
162
|
document.dispatchEvent(new CustomEvent(SKILL_USE_AFTER_SAVE_EVENT, {
|
|
152
163
|
detail: {
|
|
153
164
|
skill: skill,
|
|
@@ -155,7 +166,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
155
166
|
}
|
|
156
167
|
}));
|
|
157
168
|
setMenuOpenForSkillId(null);
|
|
158
|
-
}, []);
|
|
169
|
+
}, [eventAmplitude, isMineTab]);
|
|
159
170
|
var handleOpenSkill = useCallback(function (skill, isReadOnly) {
|
|
160
171
|
openSkillModal({
|
|
161
172
|
isEditing: true,
|
|
@@ -190,6 +201,10 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
190
201
|
_context.next = 1;
|
|
191
202
|
return deleteSkill(chat.id);
|
|
192
203
|
case 1:
|
|
204
|
+
eventAmplitude(EVENTS.aiChatSkillAbmDelete, {
|
|
205
|
+
skill_id: chat.id,
|
|
206
|
+
source: 'catalog'
|
|
207
|
+
});
|
|
193
208
|
handleSnackbarSuccess(t('mySkills.deleteSuccess'));
|
|
194
209
|
onDeleteSkill === null || onDeleteSkill === void 0 || onDeleteSkill(chat.id);
|
|
195
210
|
setSkillToDelete(null);
|
|
@@ -430,4 +445,4 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
|
|
|
430
445
|
}) : null]
|
|
431
446
|
});
|
|
432
447
|
};
|
|
433
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJJbmZvcm1hdGlvbkNpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUcmFuc2xhdGlvbiIsImRlbGV0ZVNraWxsIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCIsIlNFQ1RJT05TIiwiTG9hZGVyIiwiU2tpbGxDcmVhdGVkQnlJY29uIiwiU2tpbGxWaXNpYmlsaXR5RXZlcnlvbmVJY29uIiwiU2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbiIsIlNDTVNCb2R5IiwiU0NNU0NhcmRCdXR0b24iLCJTQ01TQ2FyZENvbnRlbnRUZXh0IiwiU0NNU0NhcmRNZW51IiwiU0NNU0NhcmRNZW51SXRlbSIsIlNDTVNDYXJkVGl0bGVOYW1lIiwiU0NNU0NhcmRUb3BSb3ciLCJTQ01TQ2FyZFZpc2liaWxpdHlSb3ciLCJTQ01TQ2FyZFZpc2liaWxpdHlUZXh0IiwiU0NNU0NhcmRzTGlzdCIsIlNDTVNDb250YWluZXIiLCJTQ01TQ3JlYXRlQnV0dG9uIiwiU0NNU0NyZWF0ZUJ1dHRvblRleHQiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3QiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlIiwiU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZSIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jayIsIlNDTVNLZWJhYkJ1dHRvbiIsIlNDTVNMb2FkV3JhcHBlciIsIlNDTVNNZXRhRGVzY3JpcHRpb24iLCJTQ01TTWV0YVJvdyIsIlNDTVNQYW5lbCIsIlNDTVNQYW5lbEhlYWRlciIsIlNDTVNMaXN0U2Nyb2xsQXJlYSIsIlNDTVNTZWFyY2hJbnB1dCIsIlNDTVNTZWFyY2hXcmFwcGVyIiwiU0NNU1RhYkJhciIsIlNDTVNUYWJCdXR0b24iLCJTQ01TVGFiSW5mb0ljb24iLCJTQ01TVGl0bGUiLCJTQ01TVGl0bGVCbG9jayIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkRST1BET1dOX0dBUF9QWCIsIkNBUkRfTUVOVV9JVEVNX0hFSUdIVF9QWCIsInJlc29sdmVEcm9wZG93blBsYWNlbWVudCIsImFuY2hvciIsImRyb3Bkb3duSGVpZ2h0IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInNwYWNlQmVsb3ciLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsImJvdHRvbSIsInNwYWNlQWJvdmUiLCJ0b3AiLCJmb3JtYXRTa2lsbERpc3BsYXlOYW1lIiwibmFtZSIsIm5vcm1hbGl6ZWQiLCJyZXBsYWNlIiwiY29uY2F0Iiwib3BlblNraWxsTW9kYWwiLCJ2YWx1ZXMiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsInNraWxsVmFsdWVzIiwiaXNPcGVuIiwiU2tpbGxTZWFyY2hJbnB1dCIsIm1lbW8iLCJfcmVmIiwib25TZWFyY2giLCJwbGFjZWhvbGRlciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInZhbHVlIiwic2V0VmFsdWUiLCJkZWJvdW5jZVJlZiIsImhhbmRsZUNoYW5nZSIsImV2ZW50IiwibmV4dFZhbHVlIiwidGFyZ2V0IiwiY3VycmVudCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJ0cmltIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwidHlwZSIsIm9uQ2hhbmdlIiwiQ2hhdEFJTXlTa2lsbHMiLCJfcmVmMiIsIm15U2tpbGxzIiwic2hhcmVkU2tpbGxzIiwiX3JlZjIkbG9hZGluZyIsImxvYWRpbmciLCJvbkRlbGV0ZVNraWxsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhclN1Y2Nlc3MiLCJoYW5kbGVTbmFja2JhckVycm9yIiwidG9vbHRpcFpJbmRleCIsImxpc3RTY3JvbGxSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2VhcmNoUXVlcnkiLCJzZXRTZWFyY2hRdWVyeSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibWVudU9wZW5Gb3JTa2lsbElkIiwic2V0TWVudU9wZW5Gb3JTa2lsbElkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJjYXJkTWVudVBsYWNlbWVudCIsInNldENhcmRNZW51UGxhY2VtZW50IiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwic2tpbGxUb0RlbGV0ZSIsInNldFNraWxsVG9EZWxldGUiLCJpc01pbmVUYWIiLCJ0YWJTa2lsbHMiLCJmaWx0ZXJlZFNraWxscyIsIm5vcm1hbGl6ZWRRdWVyeSIsInRvTG93ZXJDYXNlIiwibWF0Y2hlZCIsImZpbHRlciIsInNraWxsIiwiaW5jbHVkZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwiaGFuZGxlQ3JlYXRlU2tpbGwiLCJpc0VkaXRpbmciLCJpbnRlbnQiLCJjYXJkTWVudUhlaWdodFB4IiwiaGFuZGxlVG9nZ2xlQ2FyZE1lbnUiLCJza2lsbElkIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjYXJkQW5jaG9yIiwiY3VycmVudFRhcmdldCIsImNsb3Nlc3QiLCJIVE1MRWxlbWVudCIsInByZXYiLCJoYW5kbGVVc2VTa2lsbCIsInVzZUZpcnN0QWdlbnQiLCJoYW5kbGVPcGVuU2tpbGwiLCJpc1JlYWRPbmx5IiwiaXNTaGFyZWQiLCJnZW5lcmFsIiwiaWQiLCJkZXNjcmlwdGlvbiIsImNvbnRlbnQiLCJhY2Nlc3NfdHlwZSIsImNyZWF0ZWRfYnlfbmFtZSIsImNyZWF0ZWRfYXQiLCJ1cGRhdGVkX2F0IiwiZGVsZXRlTW9kYWxDaGF0IiwidGl0bGUiLCJoYW5kbGVDb25maXJtRGVsZXRlIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNoYXQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5kZWZpbmVkIiwiaGFuZGxlUmVwb3NpdGlvbiIsIl9saXN0U2Nyb2xsUmVmJGN1cnJlbiIsIm9wZW5DYXJkIiwicXVlcnlTZWxlY3RvciIsInNjcm9sbENvbnRhaW5lciIsInBhc3NpdmUiLCJ0YWJEZXNjcmlwdGlvbiIsImlzTWluZUVtcHR5IiwibGVuZ3RoIiwic2hvd1NraWxsc1Rvb2xiYXIiLCJyZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbiIsIm9uQ2xpY2siLCJyZW5kZXJTZWFyY2hFbXB0eVN0YXRlIiwicmVuZGVyRW1wdHlTdGF0ZSIsIiRhY3RpdmUiLCJfb2JqZWN0U3ByZWFkIiwiekluZGV4IiwicmVmIiwic2l6ZSIsIm1hcCIsImluZGV4IiwiJGluZGV4IiwiJGVsZXZhdGVkIiwiJHZpc2libGUiLCIkcGxhY2VtZW50IiwiJGRlc3RydWN0aXZlIiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNeVNraWxscy9DaGF0QUlNeVNraWxscy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9TZWFyY2gnXG5pbXBvcnQgeyBJbmZvcm1hdGlvbkNpcmNsZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0luZm9ybWF0aW9uQ2lyY2xlJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgU2tpbGwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IGRlbGV0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZGVsZXRlU2tpbGwnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IFNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcbmltcG9ydCB7IFNraWxsQ3JlYXRlZEJ5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL1NraWxsQ3JlYXRlZEJ5SWNvbidcbmltcG9ydCB7IFNraWxsVmlzaWJpbGl0eUV2ZXJ5b25lSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL1NraWxsVmlzaWJpbGl0eUV2ZXJ5b25lSWNvbidcbmltcG9ydCB7IFNraWxsVmlzaWJpbGl0eU9ubHlNZUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbFZpc2liaWxpdHlPbmx5TWVJY29uJ1xuaW1wb3J0IHtcbiAgU0NNU0JvZHksXG4gIFNDTVNDYXJkQnV0dG9uLFxuICBTQ01TQ2FyZENvbnRlbnRUZXh0LFxuICBTQ01TQ2FyZE1lbnUsXG4gIFNDTVNDYXJkTWVudUl0ZW0sXG4gIFNDTVNDYXJkVGl0bGVOYW1lLFxuICBTQ01TQ2FyZFRvcFJvdyxcbiAgU0NNU0NhcmRWaXNpYmlsaXR5Um93LFxuICBTQ01TQ2FyZFZpc2liaWxpdHlUZXh0LFxuICBTQ01TQ2FyZHNMaXN0LFxuICBTQ01TQ29udGFpbmVyLFxuICBTQ01TQ3JlYXRlQnV0dG9uLFxuICBTQ01TQ3JlYXRlQnV0dG9uVGV4dCxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290LFxuICBTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlLFxuICBTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlLFxuICBTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2ssXG4gIFNDTVNLZWJhYkJ1dHRvbixcbiAgU0NNU0xvYWRXcmFwcGVyLFxuICBTQ01TTWV0YURlc2NyaXB0aW9uLFxuICBTQ01TTWV0YVJvdyxcbiAgU0NNU1BhbmVsLFxuICBTQ01TUGFuZWxIZWFkZXIsXG4gIFNDTVNMaXN0U2Nyb2xsQXJlYSxcbiAgU0NNU1NlYXJjaElucHV0LFxuICBTQ01TU2VhcmNoV3JhcHBlcixcbiAgU0NNU1RhYkJhcixcbiAgU0NNU1RhYkJ1dHRvbixcbiAgU0NNU1RhYkluZm9JY29uLFxuICBTQ01TVGl0bGUsXG4gIFNDTVNUaXRsZUJsb2NrLFxufSBmcm9tICcuL0NoYXRBSU15U2tpbGxzLnN0eWxlcydcblxudHlwZSBDaGF0QUlNeVNraWxsc1Byb3BzID0ge1xuICBteVNraWxsczogU2tpbGxbXVxuICBzaGFyZWRTa2lsbHM6IFNraWxsW11cbiAgbG9hZGluZz86IGJvb2xlYW5cbiAgb25EZWxldGVTa2lsbD86IChza2lsbElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxudHlwZSBTa2lsbHNUYWIgPSAnbWluZScgfCAnc2hhcmVkJ1xuXG50eXBlIFNraWxsTW9kYWxJbnRlbnQgPSAnZ2VuZXJhdGUnIHwgJ3dyaXRlJ1xuXG50eXBlIERyb3Bkb3duUGxhY2VtZW50ID0gJ3RvcCcgfCAnYm90dG9tJ1xuXG5jb25zdCBEUk9QRE9XTl9HQVBfUFggPSA2XG5jb25zdCBDQVJEX01FTlVfSVRFTV9IRUlHSFRfUFggPSA0MFxuXG5jb25zdCByZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQgPSAoYW5jaG9yOiBIVE1MRWxlbWVudCwgZHJvcGRvd25IZWlnaHQ6IG51bWJlcik6IERyb3Bkb3duUGxhY2VtZW50ID0+IHtcbiAgY29uc3QgcmVjdCA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20gLSBEUk9QRE9XTl9HQVBfUFhcbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wIC0gRFJPUERPV05fR0FQX1BYXG5cbiAgaWYgKHNwYWNlQmVsb3cgPj0gZHJvcGRvd25IZWlnaHQpIHJldHVybiAnYm90dG9tJ1xuICBpZiAoc3BhY2VBYm92ZSA+PSBkcm9wZG93bkhlaWdodCkgcmV0dXJuICd0b3AnXG4gIHJldHVybiBzcGFjZUJlbG93ID49IHNwYWNlQWJvdmUgPyAnYm90dG9tJyA6ICd0b3AnXG59XG5cbmNvbnN0IGZvcm1hdFNraWxsRGlzcGxheU5hbWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBuYW1lLnJlcGxhY2UoL14oQFxcL3wjKS8sICcnKVxuICByZXR1cm4gYCMke25vcm1hbGl6ZWR9YFxufVxuXG5jb25zdCBvcGVuU2tpbGxNb2RhbCA9ICh2YWx1ZXM6IHtcbiAgaXNFZGl0aW5nOiBib29sZWFuXG4gIGlzUmVhZE9ubHk/OiBib29sZWFuXG4gIGlzU2hhcmVkPzogYm9vbGVhblxuICBpbnRlbnQ/OiBTa2lsbE1vZGFsSW50ZW50XG4gIGdlbmVyYWw/OiB7XG4gICAgaWQ/OiBzdHJpbmdcbiAgICBuYW1lPzogc3RyaW5nXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICBjb250ZW50Pzogc3RyaW5nXG4gICAgYWNjZXNzX3R5cGU/OiBTa2lsbFsnYWNjZXNzX3R5cGUnXVxuICAgIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZ1xuICAgIGNyZWF0ZWRfYXQ/OiBzdHJpbmdcbiAgICB1cGRhdGVkX2F0Pzogc3RyaW5nXG4gIH1cbn0pID0+IHtcbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIHNraWxsVmFsdWVzOiB7XG4gICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgKVxufVxuXG5jb25zdCBTa2lsbFNlYXJjaElucHV0ID0gUmVhY3QubWVtbyhcbiAgKHsgb25TZWFyY2gsIHBsYWNlaG9sZGVyIH06IHsgb25TZWFyY2g6IChxdWVyeTogc3RyaW5nKSA9PiB2b2lkOyBwbGFjZWhvbGRlcjogc3RyaW5nIH0pID0+IHtcbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKVxuICAgIGNvbnN0IGRlYm91bmNlUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcblxuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcbiAgICAgICAgc2V0VmFsdWUobmV4dFZhbHVlKVxuICAgICAgICBpZiAoZGVib3VuY2VSZWYuY3VycmVudCkgY2xlYXJUaW1lb3V0KGRlYm91bmNlUmVmLmN1cnJlbnQpXG4gICAgICAgIGRlYm91bmNlUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBvblNlYXJjaChuZXh0VmFsdWUudHJpbSgpKVxuICAgICAgICB9LCAyNTApXG4gICAgICB9LFxuICAgICAgW29uU2VhcmNoXVxuICAgIClcblxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+ICgpID0+IHtcbiAgICAgICAgaWYgKGRlYm91bmNlUmVmLmN1cnJlbnQpIGNsZWFyVGltZW91dChkZWJvdW5jZVJlZi5jdXJyZW50KVxuICAgICAgfSxcbiAgICAgIFtdXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01TU2VhcmNoV3JhcHBlcj5cbiAgICAgICAgPFNlYXJjaCB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IGNvbG9yPVwiIzk5OVwiIC8+XG4gICAgICAgIDxTQ01TU2VhcmNoSW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT17dmFsdWV9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn0gLz5cbiAgICAgIDwvU0NNU1NlYXJjaFdyYXBwZXI+XG4gICAgKVxuICB9XG4pXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNeVNraWxscyA9ICh7IG15U2tpbGxzLCBzaGFyZWRTa2lsbHMsIGxvYWRpbmcgPSBmYWxzZSwgb25EZWxldGVTa2lsbCB9OiBDaGF0QUlNeVNraWxsc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGxpc3RTY3JvbGxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZTxTa2lsbHNUYWI+KCdtaW5lJylcbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW21lbnVPcGVuRm9yU2tpbGxJZCwgc2V0TWVudU9wZW5Gb3JTa2lsbElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtjYXJkTWVudVBsYWNlbWVudCwgc2V0Q2FyZE1lbnVQbGFjZW1lbnRdID0gdXNlU3RhdGU8RHJvcGRvd25QbGFjZW1lbnQ+KCdib3R0b20nKVxuICBjb25zdCBbc2tpbGxUb0RlbGV0ZSwgc2V0U2tpbGxUb0RlbGV0ZV0gPSB1c2VTdGF0ZTxTa2lsbCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzTWluZVRhYiA9IGFjdGl2ZVRhYiA9PT0gJ21pbmUnXG5cbiAgY29uc3QgdGFiU2tpbGxzID0gaXNNaW5lVGFiID8gbXlTa2lsbHMgOiBzaGFyZWRTa2lsbHNcblxuICBjb25zdCBmaWx0ZXJlZFNraWxscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHNlYXJjaFF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBtYXRjaGVkID0gbm9ybWFsaXplZFF1ZXJ5XG4gICAgICA/IHRhYlNraWxscy5maWx0ZXIoc2tpbGwgPT4gc2tpbGwubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSkpXG4gICAgICA6IHRhYlNraWxsc1xuICAgIHJldHVybiBbLi4ubWF0Y2hlZF0uc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgfSwgW3NlYXJjaFF1ZXJ5LCB0YWJTa2lsbHNdKVxuXG4gIGNvbnN0IGhhbmRsZUNyZWF0ZVNraWxsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9wZW5Ta2lsbE1vZGFsKHsgaXNFZGl0aW5nOiBmYWxzZSwgaW50ZW50OiAnd3JpdGUnIH0pXG4gIH0sIFtdKVxuXG4gIC8vIFwiTWlzIHNraWxsc1wiIHRpZW5lIFVzYXIgKyBFZGl0YXIgKyBFbGltaW5hcjsgXCJDb21wYXJ0aWRhc1wiIHNvbG8gVXNhci5cbiAgY29uc3QgY2FyZE1lbnVIZWlnaHRQeCA9IGlzTWluZVRhYiA/IENBUkRfTUVOVV9JVEVNX0hFSUdIVF9QWCAqIDMgOiBDQVJEX01FTlVfSVRFTV9IRUlHSFRfUFhcblxuICBjb25zdCBoYW5kbGVUb2dnbGVDYXJkTWVudSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4sIHNraWxsSWQ6IHN0cmluZykgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGNvbnN0IGNhcmRBbmNob3IgPSBldmVudC5jdXJyZW50VGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXNraWxsLWNhcmQtaWRdJylcbiAgICAgIGlmIChjYXJkQW5jaG9yIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgc2V0Q2FyZE1lbnVQbGFjZW1lbnQocmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50KGNhcmRBbmNob3IsIGNhcmRNZW51SGVpZ2h0UHgpKVxuICAgICAgfVxuICAgICAgc2V0TWVudU9wZW5Gb3JTa2lsbElkKHByZXYgPT4gKHByZXYgPT09IHNraWxsSWQgPyBudWxsIDogc2tpbGxJZCkpXG4gICAgfSxcbiAgICBbY2FyZE1lbnVIZWlnaHRQeF1cbiAgKVxuXG4gIC8qKiBNaXNtbyBmbHVqbyBxdWUgZWwgYm90w7NuIFwiVXNhciBza2lsbFwiIGRlbCBtb2RhbDogY2hhdCBudWV2byBjb24gZWwgcHJpbWVyIGFnZW50ZSB5IGxhIG1lbmNpw7NuIHB1ZXN0YS4gKi9cbiAgY29uc3QgaGFuZGxlVXNlU2tpbGwgPSB1c2VDYWxsYmFjaygoc2tpbGw6IFNraWxsKSA9PiB7XG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudChTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwge1xuICAgICAgICBkZXRhaWw6IHsgc2tpbGwsIHVzZUZpcnN0QWdlbnQ6IHRydWUgfSxcbiAgICAgIH0pXG4gICAgKVxuICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVPcGVuU2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsLCBpc1JlYWRPbmx5OiBib29sZWFuKSA9PiB7XG4gICAgICBvcGVuU2tpbGxNb2RhbCh7XG4gICAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgaXNSZWFkT25seSxcbiAgICAgICAgaXNTaGFyZWQ6ICFpc01pbmVUYWIsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICBpZDogc2tpbGwuaWQsXG4gICAgICAgICAgbmFtZTogc2tpbGwubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogc2tpbGwuZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29udGVudDogc2tpbGwuY29udGVudCxcbiAgICAgICAgICBhY2Nlc3NfdHlwZTogc2tpbGwuYWNjZXNzX3R5cGUsXG4gICAgICAgICAgY3JlYXRlZF9ieV9uYW1lOiBza2lsbC5jcmVhdGVkX2J5X25hbWUsXG4gICAgICAgICAgY3JlYXRlZF9hdDogc2tpbGwuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBza2lsbC51cGRhdGVkX2F0LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2lzTWluZVRhYl1cbiAgKVxuXG4gIGNvbnN0IGRlbGV0ZU1vZGFsQ2hhdCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHNraWxsVG9EZWxldGUgPyB7IHRpdGxlOiBza2lsbFRvRGVsZXRlLm5hbWUsIGlkOiBza2lsbFRvRGVsZXRlLmlkIH0gOiBudWxsKSxcbiAgICBbc2tpbGxUb0RlbGV0ZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoY2hhdC5pZClcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBvbkRlbGV0ZVNraWxsPy4oY2hhdC5pZClcbiAgICAgIHNldFNraWxsVG9EZWxldGUobnVsbClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLmRlbGV0ZUVycm9yJykpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JTa2lsbElkKSB7XG4gICAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZW51T3BlbkZvclNraWxsSWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB7XG4gICAgICBjb25zdCBvcGVuQ2FyZCA9IGxpc3RTY3JvbGxSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcjxIVE1MQnV0dG9uRWxlbWVudD4oXG4gICAgICAgIGBbZGF0YS1za2lsbC1jYXJkLWlkPVwiJHttZW51T3BlbkZvclNraWxsSWR9XCJdYFxuICAgICAgKVxuICAgICAgaWYgKG9wZW5DYXJkKSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChvcGVuQ2FyZCwgY2FyZE1lbnVIZWlnaHRQeCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gbGlzdFNjcm9sbFJlZi5jdXJyZW50XG4gICAgc2Nyb2xsQ29udGFpbmVyPy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzY3JvbGxDb250YWluZXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWQsIGNhcmRNZW51SGVpZ2h0UHhdKVxuXG4gIGNvbnN0IHRhYkRlc2NyaXB0aW9uID0gaXNNaW5lVGFiID8gdCgnbXlTa2lsbHMubXlTa2lsbHNEZXNjcmlwdGlvbicpIDogdCgnbXlTa2lsbHMuc2hhcmVkU2tpbGxzRGVzY3JpcHRpb24nKVxuXG4gIGNvbnN0IGlzTWluZUVtcHR5ID0gaXNNaW5lVGFiICYmICFsb2FkaW5nICYmIG15U2tpbGxzLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgY29uc3Qgc2hvd1NraWxsc1Rvb2xiYXIgPSBpc01pbmVUYWIgPyAhaXNNaW5lRW1wdHkgOiB0YWJTa2lsbHMubGVuZ3RoID4gMCB8fCAhIXNlYXJjaFF1ZXJ5XG5cbiAgY29uc3QgcmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24gPSAoKSA9PiAoXG4gICAgPFNDTVNDcmVhdGVCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNyZWF0ZVNraWxsfT5cbiAgICAgIDxTQ01TQ3JlYXRlQnV0dG9uVGV4dD57dCgnbXlTa2lsbHMuY3JlYXRlU2tpbGwnKX08L1NDTVNDcmVhdGVCdXR0b25UZXh0PlxuICAgIDwvU0NNU0NyZWF0ZUJ1dHRvbj5cbiAgKVxuXG4gIGNvbnN0IHJlbmRlclNlYXJjaEVtcHR5U3RhdGUgPSAoKSA9PiAoXG4gICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5zZWFyY2hFbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5zZWFyY2hFbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgKVxuXG4gIGNvbnN0IHJlbmRlckVtcHR5U3RhdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpc01pbmVUYWIpIHtcbiAgICAgIGlmIChzZWFyY2hRdWVyeSkge1xuICAgICAgICByZXR1cm4gcmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5zaGFyZWRFbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT57dCgnbXlTa2lsbHMuc2hhcmVkRW1wdHlTdGF0ZURlc2NyaXB0aW9uJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoc2VhcmNoUXVlcnkpIHtcbiAgICAgIHJldHVybiByZW5kZXJTZWFyY2hFbXB0eVN0YXRlKClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT57dCgnbXlTa2lsbHMuZW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5lbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICB7cmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24oKX1cbiAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTVNDb250YWluZXI+XG4gICAgICA8U0NNU0JvZHk+XG4gICAgICAgIDxTQ01TVGl0bGVCbG9jaz5cbiAgICAgICAgICA8U0NNU1RpdGxlPnt0KCdteVNraWxscy50aXRsZScpfTwvU0NNU1RpdGxlPlxuICAgICAgICA8L1NDTVNUaXRsZUJsb2NrPlxuXG4gICAgICAgIDxTQ01TUGFuZWw+XG4gICAgICAgICAgPFNDTVNQYW5lbEhlYWRlcj5cbiAgICAgICAgICAgIDxTQ01TVGFiQmFyPlxuICAgICAgICAgICAgICA8U0NNU1RhYkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgJGFjdGl2ZT17aXNNaW5lVGFifSBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ21pbmUnKX0+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnRhYk15U2tpbGxzJyl9XG4gICAgICAgICAgICAgIDwvU0NNU1RhYkJ1dHRvbj5cbiAgICAgICAgICAgICAgPFNDTVNUYWJCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9eyFpc01pbmVUYWJ9IG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignc2hhcmVkJyl9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy50YWJTaGFyZWRTa2lsbHMnKX1cbiAgICAgICAgICAgICAgPC9TQ01TVGFiQnV0dG9uPlxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnbXlTa2lsbHMuaW5mb1Rvb2x0aXAnKX0gey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfT5cbiAgICAgICAgICAgICAgICA8U0NNU1RhYkluZm9JY29uIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmluZm9Ub29sdGlwJyl9PlxuICAgICAgICAgICAgICAgICAgPEluZm9ybWF0aW9uQ2lyY2xlIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICA8L1NDTVNUYWJJbmZvSWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9TQ01TVGFiQmFyPlxuXG4gICAgICAgICAgICB7c2hvd1NraWxsc1Rvb2xiYXIgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFNDTVNNZXRhUm93PlxuICAgICAgICAgICAgICAgICAgPFNDTVNNZXRhRGVzY3JpcHRpb24+e3RhYkRlc2NyaXB0aW9ufTwvU0NNU01ldGFEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyByZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbigpIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L1NDTVNNZXRhUm93PlxuXG4gICAgICAgICAgICAgICAgPFNraWxsU2VhcmNoSW5wdXQgb25TZWFyY2g9e3NldFNlYXJjaFF1ZXJ5fSBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuc2VhcmNoUGxhY2Vob2xkZXInKX0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1NDTVNQYW5lbEhlYWRlcj5cblxuICAgICAgICAgIDxTQ01TTGlzdFNjcm9sbEFyZWEgcmVmPXtsaXN0U2Nyb2xsUmVmfT5cbiAgICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgICA8U0NNU0xvYWRXcmFwcGVyPlxuICAgICAgICAgICAgICAgIDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9TQ01TTG9hZFdyYXBwZXI+XG4gICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgeyFsb2FkaW5nICYmIGZpbHRlcmVkU2tpbGxzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgPFNDTVNDYXJkc0xpc3Q+XG4gICAgICAgICAgICAgICAge2ZpbHRlcmVkU2tpbGxzLm1hcCgoc2tpbGwsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8U0NNU0NhcmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAga2V5PXtza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtc2tpbGwtY2FyZC1pZD17c2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICRpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICRlbGV2YXRlZD17bWVudU9wZW5Gb3JTa2lsbElkID09PSBza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlT3BlblNraWxsKHNraWxsLCB0cnVlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFRpdGxlTmFtZT57Zm9ybWF0U2tpbGxEaXNwbGF5TmFtZShza2lsbC5uYW1lKX08L1NDTVNDYXJkVGl0bGVOYW1lPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TS2ViYWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJHZpc2libGU9e21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5jYXJkTWVudUFyaWFMYWJlbCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlVG9nZ2xlQ2FyZE1lbnUoZXZlbnQsIHNraWxsLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVudURvdHMgY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0tlYmFiQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRDb250ZW50VGV4dD57c2tpbGwuZGVzY3JpcHRpb24gfHwgc2tpbGwuY29udGVudH08L1NDTVNDYXJkQ29udGVudFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFZpc2liaWxpdHlSb3c+XG4gICAgICAgICAgICAgICAgICAgICAge2lzTWluZVRhYiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtza2lsbC5hY2Nlc3NfdHlwZSA9PT0gJ2NvbXBhbnknID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2tpbGwuYWNjZXNzX3R5cGUgPT09ICdjb21wYW55J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdteVNraWxscy52aXNpYmlsaXR5RXZlcnlvbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdteVNraWxscy52aXNpYmlsaXR5T25seU1lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIHshaXNNaW5lVGFiICYmIHNraWxsLmNyZWF0ZWRfYnlfbmFtZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbENyZWF0ZWRCeUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnNoYXJlZENyZWF0ZWRCeScsIHsgbmFtZTogc2tpbGwuY3JlYXRlZF9ieV9uYW1lIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZFZpc2liaWxpdHlSb3c+XG4gICAgICAgICAgICAgICAgICAgIHttZW51T3BlbkZvclNraWxsSWQgPT09IHNraWxsLmlkID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVcbiAgICAgICAgICAgICAgICAgICAgICAgICRwbGFjZW1lbnQ9e2NhcmRNZW51UGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVVc2VTa2lsbChza2lsbCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudXNlU2tpbGwnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudUl0ZW0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IGhhbmRsZU9wZW5Ta2lsbChza2lsbCwgZmFsc2UpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5lZGl0Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiAkZGVzdHJ1Y3RpdmUgb25DbGljaz17KCkgPT4gc2V0U2tpbGxUb0RlbGV0ZShza2lsbCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRlbGV0ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudT5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkQnV0dG9uPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1NDTVNDYXJkc0xpc3Q+XG4gICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgeyFsb2FkaW5nICYmICFmaWx0ZXJlZFNraWxscy5sZW5ndGggPyByZW5kZXJFbXB0eVN0YXRlKCkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNU0xpc3RTY3JvbGxBcmVhPlxuICAgICAgICA8L1NDTVNQYW5lbD5cbiAgICAgIDwvU0NNU0JvZHk+XG5cbiAgICAgIHtkZWxldGVNb2RhbENoYXQgPyAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2tpbGxUb0RlbGV0ZShudWxsKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e2RlbGV0ZU1vZGFsQ2hhdH1cbiAgICAgICAgICBhY3Rpb249XCJza2lsbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L1NDTVNDb250YWluZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRixTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsaUJBQWlCLFFBQVEsb0RBQW9EO0FBQ3RGLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxrQkFBa0IsUUFBUSxzREFBc0Q7QUFDekYsU0FBU0Msc0JBQXNCLFFBQVEsdUNBQXVDO0FBQzlFLFNBQVNDLG1CQUFtQixRQUFRLHlEQUF5RDtBQUM3RixTQUFTQyww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
|
|
448
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJJbmZvcm1hdGlvbkNpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUcmFuc2xhdGlvbiIsImRlbGV0ZVNraWxsIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwiU0VDVElPTlMiLCJMb2FkZXIiLCJTa2lsbENyZWF0ZWRCeUljb24iLCJTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24iLCJTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIiwiU0NNU0JvZHkiLCJTQ01TQ2FyZEJ1dHRvbiIsIlNDTVNDYXJkQ29udGVudFRleHQiLCJTQ01TQ2FyZE1lbnUiLCJTQ01TQ2FyZE1lbnVJdGVtIiwiU0NNU0NhcmRUaXRsZU5hbWUiLCJTQ01TQ2FyZFRvcFJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVRleHQiLCJTQ01TQ2FyZHNMaXN0IiwiU0NNU0NvbnRhaW5lciIsIlNDTVNDcmVhdGVCdXR0b24iLCJTQ01TQ3JlYXRlQnV0dG9uVGV4dCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGUiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlIiwiU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrIiwiU0NNU0tlYmFiQnV0dG9uIiwiU0NNU0xvYWRXcmFwcGVyIiwiU0NNU01ldGFEZXNjcmlwdGlvbiIsIlNDTVNNZXRhUm93IiwiU0NNU1BhbmVsIiwiU0NNU1BhbmVsSGVhZGVyIiwiU0NNU0xpc3RTY3JvbGxBcmVhIiwiU0NNU1NlYXJjaElucHV0IiwiU0NNU1NlYXJjaFdyYXBwZXIiLCJTQ01TVGFiQmFyIiwiU0NNU1RhYkJ1dHRvbiIsIlNDTVNUYWJJbmZvSWNvbiIsIlNDTVNUaXRsZSIsIlNDTVNUaXRsZUJsb2NrIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiRFJPUERPV05fR0FQX1BYIiwiQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYIiwicmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50IiwiYW5jaG9yIiwiZHJvcGRvd25IZWlnaHQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwic3BhY2VCZWxvdyIsIndpbmRvdyIsImlubmVySGVpZ2h0IiwiYm90dG9tIiwic3BhY2VBYm92ZSIsInRvcCIsImZvcm1hdFNraWxsRGlzcGxheU5hbWUiLCJuYW1lIiwibm9ybWFsaXplZCIsInJlcGxhY2UiLCJjb25jYXQiLCJvcGVuU2tpbGxNb2RhbCIsInZhbHVlcyIsImFuYWx5dGljc1NvdXJjZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwic2tpbGxWYWx1ZXMiLCJpc09wZW4iLCJTa2lsbFNlYXJjaElucHV0IiwibWVtbyIsIl9yZWYiLCJvblNlYXJjaCIsInBsYWNlaG9sZGVyIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidmFsdWUiLCJzZXRWYWx1ZSIsImRlYm91bmNlUmVmIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJuZXh0VmFsdWUiLCJ0YXJnZXQiLCJjdXJyZW50IiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInRyaW0iLCJjaGlsZHJlbiIsIndpZHRoIiwiaGVpZ2h0IiwiY29sb3IiLCJ0eXBlIiwib25DaGFuZ2UiLCJDaGF0QUlNeVNraWxscyIsIl9yZWYyIiwibXlTa2lsbHMiLCJzaGFyZWRTa2lsbHMiLCJfcmVmMiRsb2FkaW5nIiwibG9hZGluZyIsIm9uRGVsZXRlU2tpbGwiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsInRvb2x0aXBaSW5kZXgiLCJsaXN0U2Nyb2xsUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJhY3RpdmVUYWIiLCJzZXRBY3RpdmVUYWIiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNlYXJjaFF1ZXJ5Iiwic2V0U2VhcmNoUXVlcnkiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsIm1lbnVPcGVuRm9yU2tpbGxJZCIsInNldE1lbnVPcGVuRm9yU2tpbGxJZCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiY2FyZE1lbnVQbGFjZW1lbnQiLCJzZXRDYXJkTWVudVBsYWNlbWVudCIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNraWxsVG9EZWxldGUiLCJzZXRTa2lsbFRvRGVsZXRlIiwiaXNNaW5lVGFiIiwidGFiU2tpbGxzIiwiZmlsdGVyZWRTa2lsbHMiLCJub3JtYWxpemVkUXVlcnkiLCJ0b0xvd2VyQ2FzZSIsIm1hdGNoZWQiLCJmaWx0ZXIiLCJza2lsbCIsImluY2x1ZGVzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsImhhbmRsZUNyZWF0ZVNraWxsIiwiZnJvbUVtcHR5IiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiY2FyZE1lbnVIZWlnaHRQeCIsImhhbmRsZVRvZ2dsZUNhcmRNZW51Iiwic2tpbGxJZCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2FyZEFuY2hvciIsImN1cnJlbnRUYXJnZXQiLCJjbG9zZXN0IiwiSFRNTEVsZW1lbnQiLCJwcmV2IiwiaGFuZGxlVXNlU2tpbGwiLCJhaUNoYXRTa2lsbFVzZSIsInNraWxsX2lkIiwiaWQiLCJhY2Nlc3NfdHlwZSIsInNvdXJjZSIsImlzX3NoYXJlZCIsInVzZUZpcnN0QWdlbnQiLCJoYW5kbGVPcGVuU2tpbGwiLCJpc1JlYWRPbmx5IiwiaXNTaGFyZWQiLCJnZW5lcmFsIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiY3JlYXRlZF9ieV9uYW1lIiwiY3JlYXRlZF9hdCIsInVwZGF0ZWRfYXQiLCJkZWxldGVNb2RhbENoYXQiLCJ0aXRsZSIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiY2hhdCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsImFpQ2hhdFNraWxsQWJtRGVsZXRlIiwic3RvcCIsIl94IiwiYXBwbHkiLCJoYW5kbGVDbGlja091dHNpZGUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVJlcG9zaXRpb24iLCJfbGlzdFNjcm9sbFJlZiRjdXJyZW4iLCJvcGVuQ2FyZCIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JvbGxDb250YWluZXIiLCJwYXNzaXZlIiwidGFiRGVzY3JpcHRpb24iLCJpc01pbmVFbXB0eSIsInNob3dTa2lsbHNUb29sYmFyIiwicmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24iLCJvbkNsaWNrIiwicmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSIsInJlbmRlckVtcHR5U3RhdGUiLCIkYWN0aXZlIiwiX29iamVjdFNwcmVhZCIsInpJbmRleCIsInJlZiIsInNpemUiLCJtYXAiLCJpbmRleCIsIiRpbmRleCIsIiRlbGV2YXRlZCIsIiR2aXNpYmxlIiwiJHBsYWNlbWVudCIsIiRkZXN0cnVjdGl2ZSIsIm9uQ2xvc2UiLCJoYW5kbGVycyIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJhY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTXlTa2lsbHMvQ2hhdEFJTXlTa2lsbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU2VhcmNoJ1xuaW1wb3J0IHsgSW5mb3JtYXRpb25DaXJjbGUgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9JbmZvcm1hdGlvbkNpcmNsZSdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBkZWxldGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2RlbGV0ZVNraWxsJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTa2lsbENyZWF0ZWRCeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbENyZWF0ZWRCeUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvU2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbidcbmltcG9ydCB7XG4gIFNDTVNCb2R5LFxuICBTQ01TQ2FyZEJ1dHRvbixcbiAgU0NNU0NhcmRDb250ZW50VGV4dCxcbiAgU0NNU0NhcmRNZW51LFxuICBTQ01TQ2FyZE1lbnVJdGVtLFxuICBTQ01TQ2FyZFRpdGxlTmFtZSxcbiAgU0NNU0NhcmRUb3BSb3csXG4gIFNDTVNDYXJkVmlzaWJpbGl0eVJvdyxcbiAgU0NNU0NhcmRWaXNpYmlsaXR5VGV4dCxcbiAgU0NNU0NhcmRzTGlzdCxcbiAgU0NNU0NvbnRhaW5lcixcbiAgU0NNU0NyZWF0ZUJ1dHRvbixcbiAgU0NNU0NyZWF0ZUJ1dHRvblRleHQsXG4gIFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrLFxuICBTQ01TS2ViYWJCdXR0b24sXG4gIFNDTVNMb2FkV3JhcHBlcixcbiAgU0NNU01ldGFEZXNjcmlwdGlvbixcbiAgU0NNU01ldGFSb3csXG4gIFNDTVNQYW5lbCxcbiAgU0NNU1BhbmVsSGVhZGVyLFxuICBTQ01TTGlzdFNjcm9sbEFyZWEsXG4gIFNDTVNTZWFyY2hJbnB1dCxcbiAgU0NNU1NlYXJjaFdyYXBwZXIsXG4gIFNDTVNUYWJCYXIsXG4gIFNDTVNUYWJCdXR0b24sXG4gIFNDTVNUYWJJbmZvSWNvbixcbiAgU0NNU1RpdGxlLFxuICBTQ01TVGl0bGVCbG9jayxcbn0gZnJvbSAnLi9DaGF0QUlNeVNraWxscy5zdHlsZXMnXG5cbnR5cGUgQ2hhdEFJTXlTa2lsbHNQcm9wcyA9IHtcbiAgbXlTa2lsbHM6IFNraWxsW11cbiAgc2hhcmVkU2tpbGxzOiBTa2lsbFtdXG4gIGxvYWRpbmc/OiBib29sZWFuXG4gIG9uRGVsZXRlU2tpbGw/OiAoc2tpbGxJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbnR5cGUgU2tpbGxzVGFiID0gJ21pbmUnIHwgJ3NoYXJlZCdcblxudHlwZSBTa2lsbE1vZGFsSW50ZW50ID0gJ2dlbmVyYXRlJyB8ICd3cml0ZSdcblxudHlwZSBEcm9wZG93blBsYWNlbWVudCA9ICd0b3AnIHwgJ2JvdHRvbSdcblxuY29uc3QgRFJPUERPV05fR0FQX1BYID0gNlxuY29uc3QgQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYID0gNDBcblxuY29uc3QgcmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50ID0gKGFuY2hvcjogSFRNTEVsZW1lbnQsIGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIpOiBEcm9wZG93blBsYWNlbWVudCA9PiB7XG4gIGNvbnN0IHJlY3QgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3Qgc3BhY2VCZWxvdyA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QuYm90dG9tIC0gRFJPUERPV05fR0FQX1BYXG4gIGNvbnN0IHNwYWNlQWJvdmUgPSByZWN0LnRvcCAtIERST1BET1dOX0dBUF9QWFxuXG4gIGlmIChzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0KSByZXR1cm4gJ2JvdHRvbSdcbiAgaWYgKHNwYWNlQWJvdmUgPj0gZHJvcGRvd25IZWlnaHQpIHJldHVybiAndG9wJ1xuICByZXR1cm4gc3BhY2VCZWxvdyA+PSBzcGFjZUFib3ZlID8gJ2JvdHRvbScgOiAndG9wJ1xufVxuXG5jb25zdCBmb3JtYXRTa2lsbERpc3BsYXlOYW1lID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgcmV0dXJuIGAjJHtub3JtYWxpemVkfWBcbn1cblxuY29uc3Qgb3BlblNraWxsTW9kYWwgPSAoXG4gIHZhbHVlczoge1xuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGlzUmVhZE9ubHk/OiBib29sZWFuXG4gICAgaXNTaGFyZWQ/OiBib29sZWFuXG4gICAgaW50ZW50PzogU2tpbGxNb2RhbEludGVudFxuICAgIGdlbmVyYWw/OiB7XG4gICAgICBpZD86IHN0cmluZ1xuICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICAgIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICAgIGFjY2Vzc190eXBlPzogU2tpbGxbJ2FjY2Vzc190eXBlJ11cbiAgICAgIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZ1xuICAgICAgY3JlYXRlZF9hdD86IHN0cmluZ1xuICAgICAgdXBkYXRlZF9hdD86IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAgYW5hbHl0aWNzU291cmNlOiAnY2F0YWxvZycgfCAnZW1wdHknID0gJ2NhdGFsb2cnXG4pID0+IHtcbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIHNraWxsVmFsdWVzOiB7XG4gICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYW5hbHl0aWNzU291cmNlLFxuICAgICAgfSxcbiAgICB9KVxuICApXG59XG5cbmNvbnN0IFNraWxsU2VhcmNoSW5wdXQgPSBSZWFjdC5tZW1vKFxuICAoeyBvblNlYXJjaCwgcGxhY2Vob2xkZXIgfTogeyBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7IHBsYWNlaG9sZGVyOiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpXG4gICAgY29uc3QgZGVib3VuY2VSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICBzZXRWYWx1ZShuZXh0VmFsdWUpXG4gICAgICAgIGlmIChkZWJvdW5jZVJlZi5jdXJyZW50KSBjbGVhclRpbWVvdXQoZGVib3VuY2VSZWYuY3VycmVudClcbiAgICAgICAgZGVib3VuY2VSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIG9uU2VhcmNoKG5leHRWYWx1ZS50cmltKCkpXG4gICAgICAgIH0sIDI1MClcbiAgICAgIH0sXG4gICAgICBbb25TZWFyY2hdXG4gICAgKVxuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgKCkgPT4gKCkgPT4ge1xuICAgICAgICBpZiAoZGVib3VuY2VSZWYuY3VycmVudCkgY2xlYXJUaW1lb3V0KGRlYm91bmNlUmVmLmN1cnJlbnQpXG4gICAgICB9LFxuICAgICAgW11cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVNTZWFyY2hXcmFwcGVyPlxuICAgICAgICA8U2VhcmNoIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gY29sb3I9XCIjOTk5XCIgLz5cbiAgICAgICAgPFNDTVNTZWFyY2hJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPXt2YWx1ZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfSAvPlxuICAgICAgPC9TQ01TU2VhcmNoV3JhcHBlcj5cbiAgICApXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IENoYXRBSU15U2tpbGxzID0gKHsgbXlTa2lsbHMsIHNoYXJlZFNraWxscywgbG9hZGluZyA9IGZhbHNlLCBvbkRlbGV0ZVNraWxsIH06IENoYXRBSU15U2tpbGxzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGxpc3RTY3JvbGxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZTxTa2lsbHNUYWI+KCdtaW5lJylcbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW21lbnVPcGVuRm9yU2tpbGxJZCwgc2V0TWVudU9wZW5Gb3JTa2lsbElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtjYXJkTWVudVBsYWNlbWVudCwgc2V0Q2FyZE1lbnVQbGFjZW1lbnRdID0gdXNlU3RhdGU8RHJvcGRvd25QbGFjZW1lbnQ+KCdib3R0b20nKVxuICBjb25zdCBbc2tpbGxUb0RlbGV0ZSwgc2V0U2tpbGxUb0RlbGV0ZV0gPSB1c2VTdGF0ZTxTa2lsbCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzTWluZVRhYiA9IGFjdGl2ZVRhYiA9PT0gJ21pbmUnXG5cbiAgY29uc3QgdGFiU2tpbGxzID0gaXNNaW5lVGFiID8gbXlTa2lsbHMgOiBzaGFyZWRTa2lsbHNcblxuICBjb25zdCBmaWx0ZXJlZFNraWxscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHNlYXJjaFF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBtYXRjaGVkID0gbm9ybWFsaXplZFF1ZXJ5XG4gICAgICA/IHRhYlNraWxscy5maWx0ZXIoc2tpbGwgPT4gc2tpbGwubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSkpXG4gICAgICA6IHRhYlNraWxsc1xuICAgIHJldHVybiBbLi4ubWF0Y2hlZF0uc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgfSwgW3NlYXJjaFF1ZXJ5LCB0YWJTa2lsbHNdKVxuXG4gIGNvbnN0IGhhbmRsZUNyZWF0ZVNraWxsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGZyb21FbXB0eSA9IGFjdGl2ZVRhYiA9PT0gJ21pbmUnICYmICFsb2FkaW5nICYmIG15U2tpbGxzLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgICBvcGVuU2tpbGxNb2RhbCh7IGlzRWRpdGluZzogZmFsc2UsIGludGVudDogJ3dyaXRlJyB9LCBmcm9tRW1wdHkgPyAnZW1wdHknIDogJ2NhdGFsb2cnKVxuICB9LCBbYWN0aXZlVGFiLCBsb2FkaW5nLCBteVNraWxscy5sZW5ndGgsIHNlYXJjaFF1ZXJ5XSlcblxuICAvLyBcIk1pcyBza2lsbHNcIiB0aWVuZSBVc2FyICsgRWRpdGFyICsgRWxpbWluYXI7IFwiQ29tcGFydGlkYXNcIiBzb2xvIFVzYXIuXG4gIGNvbnN0IGNhcmRNZW51SGVpZ2h0UHggPSBpc01pbmVUYWIgPyBDQVJEX01FTlVfSVRFTV9IRUlHSFRfUFggKiAzIDogQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2FyZE1lbnUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBza2lsbElkOiBzdHJpbmcpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBjb25zdCBjYXJkQW5jaG9yID0gZXZlbnQuY3VycmVudFRhcmdldC5jbG9zZXN0KCdbZGF0YS1za2lsbC1jYXJkLWlkXScpXG4gICAgICBpZiAoY2FyZEFuY2hvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChjYXJkQW5jaG9yLCBjYXJkTWVudUhlaWdodFB4KSlcbiAgICAgIH1cbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChwcmV2ID0+IChwcmV2ID09PSBza2lsbElkID8gbnVsbCA6IHNraWxsSWQpKVxuICAgIH0sXG4gICAgW2NhcmRNZW51SGVpZ2h0UHhdXG4gIClcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIGVsIGJvdMOzbiBcIlVzYXIgc2tpbGxcIiBkZWwgbW9kYWw6IGNoYXQgbnVldm8gY29uIGVsIHByaW1lciBhZ2VudGUgeSBsYSBtZW5jacOzbiBwdWVzdGEuICovXG4gIGNvbnN0IGhhbmRsZVVzZVNraWxsID0gdXNlQ2FsbGJhY2soXG4gICAgKHNraWxsOiBTa2lsbCkgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsVXNlLCB7XG4gICAgICAgIHNraWxsX2lkOiBza2lsbC5pZCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IHNraWxsLmFjY2Vzc190eXBlIHx8ICdvbmx5X21lJyxcbiAgICAgICAgc291cmNlOiAnY2FyZCcsXG4gICAgICAgIGlzX3NoYXJlZDogIWlzTWluZVRhYixcbiAgICAgIH0pXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIHtcbiAgICAgICAgICBkZXRhaWw6IHsgc2tpbGwsIHVzZUZpcnN0QWdlbnQ6IHRydWUgfSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlLCBpc01pbmVUYWJdXG4gIClcblxuICBjb25zdCBoYW5kbGVPcGVuU2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsLCBpc1JlYWRPbmx5OiBib29sZWFuKSA9PiB7XG4gICAgICBvcGVuU2tpbGxNb2RhbCh7XG4gICAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgaXNSZWFkT25seSxcbiAgICAgICAgaXNTaGFyZWQ6ICFpc01pbmVUYWIsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICBpZDogc2tpbGwuaWQsXG4gICAgICAgICAgbmFtZTogc2tpbGwubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogc2tpbGwuZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29udGVudDogc2tpbGwuY29udGVudCxcbiAgICAgICAgICBhY2Nlc3NfdHlwZTogc2tpbGwuYWNjZXNzX3R5cGUsXG4gICAgICAgICAgY3JlYXRlZF9ieV9uYW1lOiBza2lsbC5jcmVhdGVkX2J5X25hbWUsXG4gICAgICAgICAgY3JlYXRlZF9hdDogc2tpbGwuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBza2lsbC51cGRhdGVkX2F0LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2lzTWluZVRhYl1cbiAgKVxuXG4gIGNvbnN0IGRlbGV0ZU1vZGFsQ2hhdCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHNraWxsVG9EZWxldGUgPyB7IHRpdGxlOiBza2lsbFRvRGVsZXRlLm5hbWUsIGlkOiBza2lsbFRvRGVsZXRlLmlkIH0gOiBudWxsKSxcbiAgICBbc2tpbGxUb0RlbGV0ZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoY2hhdC5pZClcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibURlbGV0ZSwgeyBza2lsbF9pZDogY2hhdC5pZCwgc291cmNlOiAnY2F0YWxvZycgfSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBvbkRlbGV0ZVNraWxsPy4oY2hhdC5pZClcbiAgICAgIHNldFNraWxsVG9EZWxldGUobnVsbClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLmRlbGV0ZUVycm9yJykpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JTa2lsbElkKSB7XG4gICAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZW51T3BlbkZvclNraWxsSWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB7XG4gICAgICBjb25zdCBvcGVuQ2FyZCA9IGxpc3RTY3JvbGxSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcjxIVE1MQnV0dG9uRWxlbWVudD4oXG4gICAgICAgIGBbZGF0YS1za2lsbC1jYXJkLWlkPVwiJHttZW51T3BlbkZvclNraWxsSWR9XCJdYFxuICAgICAgKVxuICAgICAgaWYgKG9wZW5DYXJkKSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChvcGVuQ2FyZCwgY2FyZE1lbnVIZWlnaHRQeCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gbGlzdFNjcm9sbFJlZi5jdXJyZW50XG4gICAgc2Nyb2xsQ29udGFpbmVyPy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzY3JvbGxDb250YWluZXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWQsIGNhcmRNZW51SGVpZ2h0UHhdKVxuXG4gIGNvbnN0IHRhYkRlc2NyaXB0aW9uID0gaXNNaW5lVGFiID8gdCgnbXlTa2lsbHMubXlTa2lsbHNEZXNjcmlwdGlvbicpIDogdCgnbXlTa2lsbHMuc2hhcmVkU2tpbGxzRGVzY3JpcHRpb24nKVxuXG4gIGNvbnN0IGlzTWluZUVtcHR5ID0gaXNNaW5lVGFiICYmICFsb2FkaW5nICYmIG15U2tpbGxzLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgY29uc3Qgc2hvd1NraWxsc1Rvb2xiYXIgPSBpc01pbmVUYWIgPyAhaXNNaW5lRW1wdHkgOiB0YWJTa2lsbHMubGVuZ3RoID4gMCB8fCAhIXNlYXJjaFF1ZXJ5XG5cbiAgY29uc3QgcmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24gPSAoKSA9PiAoXG4gICAgPFNDTVNDcmVhdGVCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNyZWF0ZVNraWxsfT5cbiAgICAgIDxTQ01TQ3JlYXRlQnV0dG9uVGV4dD57dCgnbXlTa2lsbHMuY3JlYXRlU2tpbGwnKX08L1NDTVNDcmVhdGVCdXR0b25UZXh0PlxuICAgIDwvU0NNU0NyZWF0ZUJ1dHRvbj5cbiAgKVxuXG4gIGNvbnN0IHJlbmRlclNlYXJjaEVtcHR5U3RhdGUgPSAoKSA9PiAoXG4gICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5zZWFyY2hFbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5zZWFyY2hFbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgKVxuXG4gIGNvbnN0IHJlbmRlckVtcHR5U3RhdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpc01pbmVUYWIpIHtcbiAgICAgIGlmIChzZWFyY2hRdWVyeSkge1xuICAgICAgICByZXR1cm4gcmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5zaGFyZWRFbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT57dCgnbXlTa2lsbHMuc2hhcmVkRW1wdHlTdGF0ZURlc2NyaXB0aW9uJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoc2VhcmNoUXVlcnkpIHtcbiAgICAgIHJldHVybiByZW5kZXJTZWFyY2hFbXB0eVN0YXRlKClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT57dCgnbXlTa2lsbHMuZW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5lbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICB7cmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24oKX1cbiAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTVNDb250YWluZXI+XG4gICAgICA8U0NNU0JvZHk+XG4gICAgICAgIDxTQ01TVGl0bGVCbG9jaz5cbiAgICAgICAgICA8U0NNU1RpdGxlPnt0KCdteVNraWxscy50aXRsZScpfTwvU0NNU1RpdGxlPlxuICAgICAgICA8L1NDTVNUaXRsZUJsb2NrPlxuXG4gICAgICAgIDxTQ01TUGFuZWw+XG4gICAgICAgICAgPFNDTVNQYW5lbEhlYWRlcj5cbiAgICAgICAgICAgIDxTQ01TVGFiQmFyPlxuICAgICAgICAgICAgICA8U0NNU1RhYkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgJGFjdGl2ZT17aXNNaW5lVGFifSBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ21pbmUnKX0+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnRhYk15U2tpbGxzJyl9XG4gICAgICAgICAgICAgIDwvU0NNU1RhYkJ1dHRvbj5cbiAgICAgICAgICAgICAgPFNDTVNUYWJCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9eyFpc01pbmVUYWJ9IG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignc2hhcmVkJyl9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy50YWJTaGFyZWRTa2lsbHMnKX1cbiAgICAgICAgICAgICAgPC9TQ01TVGFiQnV0dG9uPlxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnbXlTa2lsbHMuaW5mb1Rvb2x0aXAnKX0gey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfT5cbiAgICAgICAgICAgICAgICA8U0NNU1RhYkluZm9JY29uIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmluZm9Ub29sdGlwJyl9PlxuICAgICAgICAgICAgICAgICAgPEluZm9ybWF0aW9uQ2lyY2xlIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICA8L1NDTVNUYWJJbmZvSWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9TQ01TVGFiQmFyPlxuXG4gICAgICAgICAgICB7c2hvd1NraWxsc1Rvb2xiYXIgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFNDTVNNZXRhUm93PlxuICAgICAgICAgICAgICAgICAgPFNDTVNNZXRhRGVzY3JpcHRpb24+e3RhYkRlc2NyaXB0aW9ufTwvU0NNU01ldGFEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyByZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbigpIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L1NDTVNNZXRhUm93PlxuXG4gICAgICAgICAgICAgICAgPFNraWxsU2VhcmNoSW5wdXQgb25TZWFyY2g9e3NldFNlYXJjaFF1ZXJ5fSBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuc2VhcmNoUGxhY2Vob2xkZXInKX0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1NDTVNQYW5lbEhlYWRlcj5cblxuICAgICAgICAgIDxTQ01TTGlzdFNjcm9sbEFyZWEgcmVmPXtsaXN0U2Nyb2xsUmVmfT5cbiAgICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgICA8U0NNU0xvYWRXcmFwcGVyPlxuICAgICAgICAgICAgICAgIDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9TQ01TTG9hZFdyYXBwZXI+XG4gICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgeyFsb2FkaW5nICYmIGZpbHRlcmVkU2tpbGxzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgPFNDTVNDYXJkc0xpc3Q+XG4gICAgICAgICAgICAgICAge2ZpbHRlcmVkU2tpbGxzLm1hcCgoc2tpbGwsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8U0NNU0NhcmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAga2V5PXtza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtc2tpbGwtY2FyZC1pZD17c2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICRpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICRlbGV2YXRlZD17bWVudU9wZW5Gb3JTa2lsbElkID09PSBza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlT3BlblNraWxsKHNraWxsLCB0cnVlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFRpdGxlTmFtZT57Zm9ybWF0U2tpbGxEaXNwbGF5TmFtZShza2lsbC5uYW1lKX08L1NDTVNDYXJkVGl0bGVOYW1lPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TS2ViYWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJHZpc2libGU9e21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5jYXJkTWVudUFyaWFMYWJlbCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlVG9nZ2xlQ2FyZE1lbnUoZXZlbnQsIHNraWxsLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVudURvdHMgY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0tlYmFiQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRDb250ZW50VGV4dD57c2tpbGwuZGVzY3JpcHRpb24gfHwgc2tpbGwuY29udGVudH08L1NDTVNDYXJkQ29udGVudFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFZpc2liaWxpdHlSb3c+XG4gICAgICAgICAgICAgICAgICAgICAge2lzTWluZVRhYiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtza2lsbC5hY2Nlc3NfdHlwZSA9PT0gJ2NvbXBhbnknID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2tpbGwuYWNjZXNzX3R5cGUgPT09ICdjb21wYW55J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdteVNraWxscy52aXNpYmlsaXR5RXZlcnlvbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdteVNraWxscy52aXNpYmlsaXR5T25seU1lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIHshaXNNaW5lVGFiICYmIHNraWxsLmNyZWF0ZWRfYnlfbmFtZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbENyZWF0ZWRCeUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnNoYXJlZENyZWF0ZWRCeScsIHsgbmFtZTogc2tpbGwuY3JlYXRlZF9ieV9uYW1lIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZFZpc2liaWxpdHlSb3c+XG4gICAgICAgICAgICAgICAgICAgIHttZW51T3BlbkZvclNraWxsSWQgPT09IHNraWxsLmlkID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVcbiAgICAgICAgICAgICAgICAgICAgICAgICRwbGFjZW1lbnQ9e2NhcmRNZW51UGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVVc2VTa2lsbChza2lsbCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudXNlU2tpbGwnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudUl0ZW0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IGhhbmRsZU9wZW5Ta2lsbChza2lsbCwgZmFsc2UpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5lZGl0Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiAkZGVzdHJ1Y3RpdmUgb25DbGljaz17KCkgPT4gc2V0U2tpbGxUb0RlbGV0ZShza2lsbCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRlbGV0ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudT5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkQnV0dG9uPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1NDTVNDYXJkc0xpc3Q+XG4gICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgeyFsb2FkaW5nICYmICFmaWx0ZXJlZFNraWxscy5sZW5ndGggPyByZW5kZXJFbXB0eVN0YXRlKCkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNU0xpc3RTY3JvbGxBcmVhPlxuICAgICAgICA8L1NDTVNQYW5lbD5cbiAgICAgIDwvU0NNU0JvZHk+XG5cbiAgICAgIHtkZWxldGVNb2RhbENoYXQgPyAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2tpbGxUb0RlbGV0ZShudWxsKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e2RlbGV0ZU1vZGFsQ2hhdH1cbiAgICAgICAgICBhY3Rpb249XCJza2lsbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L1NDTVNDb250YWluZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRixTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsaUJBQWlCLFFBQVEsb0RBQW9EO0FBQ3RGLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxrQkFBa0IsUUFBUSxzREFBc0Q7QUFDekYsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEseUJBQXlCO0FBQzFELFNBQVNDLHNCQUFzQixRQUFRLHVDQUF1QztBQUM5RSxTQUFTQyxtQkFBbUIsUUFBUSx5REFBeUQ7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
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import { fireEvent, renderWithProviders, screen } from '../../../test/test-utils';
|
|
5
|
+
import { ChatAIMySkills } from './ChatAIMySkills';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
var SKILL_USE_AFTER_SAVE_EVENT = 'maia-use-skill-after-save';
|
|
8
|
+
jest.mock('../../organisms/AbmSkillModal/AbmSkillModal', function () {
|
|
9
|
+
return {
|
|
10
|
+
SKILL_USE_AFTER_SAVE_EVENT: 'maia-use-skill-after-save'
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
jest.mock('../../../lang/utils', function () {
|
|
14
|
+
return {
|
|
15
|
+
formatDate: function formatDate() {
|
|
16
|
+
return '10 Sep, 2026';
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
jest.mock('../../../hooks/useEvent', function () {
|
|
21
|
+
return {
|
|
22
|
+
EVENTS: {
|
|
23
|
+
aiChatSkillUse: 'AI_CHAT_SKILL_USE',
|
|
24
|
+
aiChatSkillAbmDelete: 'AI_CHAT_SKILL_ABM_DELETE'
|
|
25
|
+
},
|
|
26
|
+
useEvent: function useEvent() {
|
|
27
|
+
return jest.fn();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
jest.mock('../../../hooks/useSnackBarManager/useSnackBarManager', function () {
|
|
32
|
+
return {
|
|
33
|
+
useSnackBarManager: function useSnackBarManager() {
|
|
34
|
+
return {
|
|
35
|
+
handleSnackbarSuccess: jest.fn(),
|
|
36
|
+
handleSnackbarError: jest.fn()
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
jest.mock('../../../hooks/useMaiaTaskPanelZIndex', function () {
|
|
42
|
+
return {
|
|
43
|
+
useMaiaTaskPanelZIndex: function useMaiaTaskPanelZIndex() {
|
|
44
|
+
return 1500;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
jest.mock('../../organisms/DeleteQuestionModal/DeleteQuestionModal', function () {
|
|
49
|
+
return {
|
|
50
|
+
DeleteQuestionModal: function DeleteQuestionModal() {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
var skill = function skill() {
|
|
56
|
+
var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
57
|
+
return _objectSpread({
|
|
58
|
+
id: 'sk1',
|
|
59
|
+
name: 'Resumir',
|
|
60
|
+
description: 'Resume briefs',
|
|
61
|
+
content: 'Resume el brief',
|
|
62
|
+
access_type: 'only_me'
|
|
63
|
+
}, overrides);
|
|
64
|
+
};
|
|
65
|
+
describe('ChatAIMySkills', function () {
|
|
66
|
+
it('opens the create modal from the empty mine tab', function () {
|
|
67
|
+
var onOpen = jest.fn();
|
|
68
|
+
document.addEventListener('abm-skill-modal-set-values', onOpen);
|
|
69
|
+
renderWithProviders(/*#__PURE__*/_jsx(ChatAIMySkills, {
|
|
70
|
+
mySkills: [],
|
|
71
|
+
sharedSkills: []
|
|
72
|
+
}));
|
|
73
|
+
expect(screen.getByText('mySkills.emptyStateTitle')).toBeInTheDocument();
|
|
74
|
+
fireEvent.click(screen.getByRole('button', {
|
|
75
|
+
name: 'mySkills.createSkill'
|
|
76
|
+
}));
|
|
77
|
+
expect(onOpen).toHaveBeenCalled();
|
|
78
|
+
var event = onOpen.mock.calls[0][0];
|
|
79
|
+
expect(event.detail.analyticsSource).toBe('empty');
|
|
80
|
+
expect(event.detail.skillValues.values.isEditing).toBe(false);
|
|
81
|
+
document.removeEventListener('abm-skill-modal-set-values', onOpen);
|
|
82
|
+
});
|
|
83
|
+
it('opens a skill in read-only mode from the card', function () {
|
|
84
|
+
var onOpen = jest.fn();
|
|
85
|
+
document.addEventListener('abm-skill-modal-set-values', onOpen);
|
|
86
|
+
renderWithProviders(/*#__PURE__*/_jsx(ChatAIMySkills, {
|
|
87
|
+
mySkills: [skill()],
|
|
88
|
+
sharedSkills: []
|
|
89
|
+
}));
|
|
90
|
+
fireEvent.click(screen.getByRole('button', {
|
|
91
|
+
name: /#Resumir/
|
|
92
|
+
}));
|
|
93
|
+
var event = onOpen.mock.calls[0][0];
|
|
94
|
+
expect(event.detail.skillValues.values.isReadOnly).toBe(true);
|
|
95
|
+
expect(event.detail.skillValues.values.general.id).toBe('sk1');
|
|
96
|
+
document.removeEventListener('abm-skill-modal-set-values', onOpen);
|
|
97
|
+
});
|
|
98
|
+
it('uses a skill from the card menu', function () {
|
|
99
|
+
var onUse = jest.fn();
|
|
100
|
+
document.addEventListener(SKILL_USE_AFTER_SAVE_EVENT, onUse);
|
|
101
|
+
renderWithProviders(/*#__PURE__*/_jsx(ChatAIMySkills, {
|
|
102
|
+
mySkills: [skill()],
|
|
103
|
+
sharedSkills: []
|
|
104
|
+
}));
|
|
105
|
+
fireEvent.click(screen.getByRole('button', {
|
|
106
|
+
name: 'mySkills.cardMenuAriaLabel'
|
|
107
|
+
}));
|
|
108
|
+
fireEvent.click(screen.getByRole('button', {
|
|
109
|
+
name: 'mySkills.useSkill'
|
|
110
|
+
}));
|
|
111
|
+
expect(onUse).toHaveBeenCalled();
|
|
112
|
+
var event = onUse.mock.calls[0][0];
|
|
113
|
+
expect(event.detail.skill.id).toBe('sk1');
|
|
114
|
+
expect(event.detail.useFirstAgent).toBe(true);
|
|
115
|
+
document.removeEventListener(SKILL_USE_AFTER_SAVE_EVENT, onUse);
|
|
116
|
+
});
|
|
117
|
+
it('shows the shared empty state', function () {
|
|
118
|
+
renderWithProviders(/*#__PURE__*/_jsx(ChatAIMySkills, {
|
|
119
|
+
mySkills: [skill()],
|
|
120
|
+
sharedSkills: []
|
|
121
|
+
}));
|
|
122
|
+
fireEvent.click(screen.getByRole('button', {
|
|
123
|
+
name: 'mySkills.tabSharedSkills'
|
|
124
|
+
}));
|
|
125
|
+
expect(screen.getByText('mySkills.sharedEmptyStateTitle')).toBeInTheDocument();
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaXJlRXZlbnQiLCJyZW5kZXJXaXRoUHJvdmlkZXJzIiwic2NyZWVuIiwiQ2hhdEFJTXlTa2lsbHMiLCJqc3giLCJfanN4IiwiU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQiLCJqZXN0IiwibW9jayIsImZvcm1hdERhdGUiLCJFVkVOVFMiLCJhaUNoYXRTa2lsbFVzZSIsImFpQ2hhdFNraWxsQWJtRGVsZXRlIiwidXNlRXZlbnQiLCJmbiIsInVzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsInNraWxsIiwib3ZlcnJpZGVzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsImlkIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiY29udGVudCIsImFjY2Vzc190eXBlIiwiZGVzY3JpYmUiLCJpdCIsIm9uT3BlbiIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsIm15U2tpbGxzIiwic2hhcmVkU2tpbGxzIiwiZXhwZWN0IiwiZ2V0QnlUZXh0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJjbGljayIsImdldEJ5Um9sZSIsInRvSGF2ZUJlZW5DYWxsZWQiLCJldmVudCIsImNhbGxzIiwiZGV0YWlsIiwiYW5hbHl0aWNzU291cmNlIiwidG9CZSIsInNraWxsVmFsdWVzIiwidmFsdWVzIiwiaXNFZGl0aW5nIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlzUmVhZE9ubHkiLCJnZW5lcmFsIiwib25Vc2UiLCJ1c2VGaXJzdEFnZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU15U2tpbGxzL0NoYXRBSU15U2tpbGxzLnNwZWMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcmVFdmVudCwgcmVuZGVyV2l0aFByb3ZpZGVycywgc2NyZWVuIH0gZnJvbSAnLi4vLi4vLi4vdGVzdC90ZXN0LXV0aWxzJ1xuaW1wb3J0IHR5cGUgeyBTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgQ2hhdEFJTXlTa2lsbHMgfSBmcm9tICcuL0NoYXRBSU15U2tpbGxzJ1xuXG5jb25zdCBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCA9ICdtYWlhLXVzZS1za2lsbC1hZnRlci1zYXZlJ1xuXG5qZXN0Lm1vY2soJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnLCAoKSA9PiAoe1xuICBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVDogJ21haWEtdXNlLXNraWxsLWFmdGVyLXNhdmUnLFxufSkpXG5cbmplc3QubW9jaygnLi4vLi4vLi4vbGFuZy91dGlscycsICgpID0+ICh7XG4gIGZvcm1hdERhdGU6ICgpID0+ICcxMCBTZXAsIDIwMjYnLFxufSkpXG5cbmplc3QubW9jaygnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnLCAoKSA9PiAoe1xuICBFVkVOVFM6IHtcbiAgICBhaUNoYXRTa2lsbFVzZTogJ0FJX0NIQVRfU0tJTExfVVNFJyxcbiAgICBhaUNoYXRTa2lsbEFibURlbGV0ZTogJ0FJX0NIQVRfU0tJTExfQUJNX0RFTEVURScsXG4gIH0sXG4gIHVzZUV2ZW50OiAoKSA9PiBqZXN0LmZuKCksXG59KSlcblxuamVzdC5tb2NrKCcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJywgKCkgPT4gKHtcbiAgdXNlU25hY2tCYXJNYW5hZ2VyOiAoKSA9PiAoeyBoYW5kbGVTbmFja2JhclN1Y2Nlc3M6IGplc3QuZm4oKSwgaGFuZGxlU25hY2tiYXJFcnJvcjogamVzdC5mbigpIH0pLFxufSkpXG5cbmplc3QubW9jaygnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCcsICgpID0+ICh7XG4gIHVzZU1haWFUYXNrUGFuZWxaSW5kZXg6ICgpID0+IDE1MDAsXG59KSlcblxuamVzdC5tb2NrKCcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbC9EZWxldGVRdWVzdGlvbk1vZGFsJywgKCkgPT4gKHtcbiAgRGVsZXRlUXVlc3Rpb25Nb2RhbDogKCkgPT4gbnVsbCxcbn0pKVxuXG5jb25zdCBza2lsbCA9IChvdmVycmlkZXM6IFBhcnRpYWw8U2tpbGw+ID0ge30pOiBTa2lsbCA9PiAoe1xuICBpZDogJ3NrMScsXG4gIG5hbWU6ICdSZXN1bWlyJyxcbiAgZGVzY3JpcHRpb246ICdSZXN1bWUgYnJpZWZzJyxcbiAgY29udGVudDogJ1Jlc3VtZSBlbCBicmllZicsXG4gIGFjY2Vzc190eXBlOiAnb25seV9tZScsXG4gIC4uLm92ZXJyaWRlcyxcbn0pXG5cbmRlc2NyaWJlKCdDaGF0QUlNeVNraWxscycsICgpID0+IHtcbiAgaXQoJ29wZW5zIHRoZSBjcmVhdGUgbW9kYWwgZnJvbSB0aGUgZW1wdHkgbWluZSB0YWInLCAoKSA9PiB7XG4gICAgY29uc3Qgb25PcGVuID0gamVzdC5mbigpXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBvbk9wZW4pXG5cbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKDxDaGF0QUlNeVNraWxscyBteVNraWxscz17W119IHNoYXJlZFNraWxscz17W119IC8+KVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ215U2tpbGxzLmVtcHR5U3RhdGVUaXRsZScpKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ215U2tpbGxzLmNyZWF0ZVNraWxsJyB9KSlcblxuICAgIGV4cGVjdChvbk9wZW4pLnRvSGF2ZUJlZW5DYWxsZWQoKVxuICAgIGNvbnN0IGV2ZW50ID0gb25PcGVuLm1vY2suY2FsbHNbMF1bMF0gYXMgQ3VzdG9tRXZlbnRcbiAgICBleHBlY3QoZXZlbnQuZGV0YWlsLmFuYWx5dGljc1NvdXJjZSkudG9CZSgnZW1wdHknKVxuICAgIGV4cGVjdChldmVudC5kZXRhaWwuc2tpbGxWYWx1ZXMudmFsdWVzLmlzRWRpdGluZykudG9CZShmYWxzZSlcblxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywgb25PcGVuKVxuICB9KVxuXG4gIGl0KCdvcGVucyBhIHNraWxsIGluIHJlYWQtb25seSBtb2RlIGZyb20gdGhlIGNhcmQnLCAoKSA9PiB7XG4gICAgY29uc3Qgb25PcGVuID0gamVzdC5mbigpXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBvbk9wZW4pXG5cbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKDxDaGF0QUlNeVNraWxscyBteVNraWxscz17W3NraWxsKCldfSBzaGFyZWRTa2lsbHM9e1tdfSAvPilcblxuICAgIGZpcmVFdmVudC5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC8jUmVzdW1pci8gfSkpXG5cbiAgICBjb25zdCBldmVudCA9IG9uT3Blbi5tb2NrLmNhbGxzWzBdWzBdIGFzIEN1c3RvbUV2ZW50XG4gICAgZXhwZWN0KGV2ZW50LmRldGFpbC5za2lsbFZhbHVlcy52YWx1ZXMuaXNSZWFkT25seSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChldmVudC5kZXRhaWwuc2tpbGxWYWx1ZXMudmFsdWVzLmdlbmVyYWwuaWQpLnRvQmUoJ3NrMScpXG5cbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIG9uT3BlbilcbiAgfSlcblxuICBpdCgndXNlcyBhIHNraWxsIGZyb20gdGhlIGNhcmQgbWVudScsICgpID0+IHtcbiAgICBjb25zdCBvblVzZSA9IGplc3QuZm4oKVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIG9uVXNlKVxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyg8Q2hhdEFJTXlTa2lsbHMgbXlTa2lsbHM9e1tza2lsbCgpXX0gc2hhcmVkU2tpbGxzPXtbXX0gLz4pXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnbXlTa2lsbHMuY2FyZE1lbnVBcmlhTGFiZWwnIH0pKVxuICAgIGZpcmVFdmVudC5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICdteVNraWxscy51c2VTa2lsbCcgfSkpXG5cbiAgICBleHBlY3Qob25Vc2UpLnRvSGF2ZUJlZW5DYWxsZWQoKVxuICAgIGNvbnN0IGV2ZW50ID0gb25Vc2UubW9jay5jYWxsc1swXVswXSBhcyBDdXN0b21FdmVudFxuICAgIGV4cGVjdChldmVudC5kZXRhaWwuc2tpbGwuaWQpLnRvQmUoJ3NrMScpXG4gICAgZXhwZWN0KGV2ZW50LmRldGFpbC51c2VGaXJzdEFnZW50KS50b0JlKHRydWUpXG5cbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5ULCBvblVzZSlcbiAgfSlcblxuICBpdCgnc2hvd3MgdGhlIHNoYXJlZCBlbXB0eSBzdGF0ZScsICgpID0+IHtcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKDxDaGF0QUlNeVNraWxscyBteVNraWxscz17W3NraWxsKCldfSBzaGFyZWRTa2lsbHM9e1tdfSAvPilcblxuICAgIGZpcmVFdmVudC5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICdteVNraWxscy50YWJTaGFyZWRTa2lsbHMnIH0pKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ215U2tpbGxzLnNoYXJlZEVtcHR5U3RhdGVUaXRsZScpKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG59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
|