@projectcor/maia-components 2.11.63-2 → 2.11.63-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/App.js +6 -2
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +7 -3
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +4 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +40 -7
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +2 -2
- package/lib/components/atoms/icons/RocketIcon.js +31 -0
- package/lib/components/atoms/icons/SkillIcon.js +30 -0
- package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
- package/lib/components/atoms/icons/WrenchIcon.js +42 -0
- package/lib/components/atoms/icons/index.js +4 -1
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +522 -0
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +234 -0
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +437 -0
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +3 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +3 -3
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
- package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +80 -0
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.interface.js +2 -0
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +722 -0
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +165 -0
- package/lib/components/molecules/AbmSection/AbmTriggersSection/index.js +2 -0
- package/lib/components/molecules/AbmSection/index.js +2 -1
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +21 -2
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +60 -16
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
- package/lib/components/molecules/ChatAIModal/constants.js +10 -2
- package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.js +486 -0
- package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.styles.js +184 -0
- package/lib/components/molecules/ChatAIMyRoutines/index.js +2 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
- package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
- package/lib/components/molecules/ChatFooter/ChatFooter.js +1 -1
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
- package/lib/components/molecules/SchedulesPage/SchedulesPage.js +610 -0
- package/lib/components/molecules/SchedulesPage/index.js +2 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +61 -28
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +15 -11
- package/lib/components/molecules/SkillsPage/SkillsPage.js +708 -0
- package/lib/components/molecules/SkillsPage/index.js +2 -0
- package/lib/components/molecules/maiaSectionModalStyles.js +91 -0
- package/lib/components/molecules/maiaSectionUiTokens.js +31 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +269 -56
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
- package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
- package/lib/components/organisms/AbmSkillModal/index.js +2 -0
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +17 -2
- package/lib/constants/config.js +4 -1
- package/lib/dev/DevAbmAgentModal.js +114 -0
- package/lib/dev/mocks/abmModalMocks.js +193 -0
- package/lib/hooks/useAgentModel/useCreateAgent.js +11 -10
- package/lib/hooks/useAgentModel/useUpdateAgent.js +12 -11
- package/lib/hooks/useContextMentions.js +61 -13
- package/lib/hooks/useEntitySearch.js +277 -91
- package/lib/hooks/useMentionAllowedTypes.js +46 -11
- package/lib/hooks/useMentionPopover.js +64 -30
- package/lib/lang/br/index.js +572 -3
- package/lib/lang/en/index.js +572 -3
- package/lib/lang/es/index.js +572 -3
- package/lib/lang/fr/index.js +304 -4
- package/lib/services/maia/Agents/connectors.js +110 -0
- package/lib/services/maia/Agents/createAgent.js +1 -1
- package/lib/services/maia/Agents/getAgentById.js +3 -2
- package/lib/services/maia/Agents/skills.js +164 -0
- package/lib/services/maia/Agents/updateAgent.js +1 -1
- package/lib/services/maia/Orchestrator/orchestrator.js +1 -2
- package/lib/services/maia/Schedules/createSchedule.js +39 -0
- package/lib/services/maia/Schedules/deleteSchedule.js +36 -0
- package/lib/services/maia/Schedules/getMySchedules.js +55 -0
- package/lib/services/maia/Schedules/getSchedules.js +58 -0
- package/lib/services/maia/Schedules/index.js +5 -0
- package/lib/services/maia/Skills/createSkill.js +39 -0
- package/lib/services/maia/Skills/deleteSkill.js +38 -0
- package/lib/services/maia/Skills/generateSkill.js +41 -0
- package/lib/services/maia/Skills/getSkills.js +90 -0
- package/lib/services/maia/Skills/updateSkill.js +39 -0
- package/lib/types/Chat.js +1 -1
- package/lib/types/agent.js +1 -1
- package/lib/types/agentModal.js +1 -1
- package/lib/types/agentSkill.js +2 -0
- package/lib/types/attachment.js +2 -0
- package/lib/types/contextMention.js +1 -1
- package/lib/types/skill.js +2 -0
- package/lib/utils/contextMentionIcons.js +29 -1
- package/lib/utils/renderContextMentions.js +9 -4
- package/package.json +1 -1
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
+
import ReactDOM from 'react-dom';
|
|
6
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
7
|
+
import { useTranslation } from 'react-i18next';
|
|
8
|
+
import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
|
|
9
|
+
import { ChevronDown } from '@projectcor/icons/lib/components/ChevronDown';
|
|
10
|
+
import { Cross } from '@projectcor/icons/lib/components/Cross';
|
|
11
|
+
import { AbmTriggersSection } from '../AbmSection/AbmTriggersSection/AbmTriggersSection';
|
|
12
|
+
import { Backdrop } from '../../atoms/Backdrop';
|
|
13
|
+
import { fetchMaia } from '../../../services/maia/client';
|
|
14
|
+
import { getMySchedules, deleteSchedule } from '../../../services/maia/Schedules';
|
|
15
|
+
import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal/DeleteQuestionModal';
|
|
16
|
+
import { MAIAIsologo } from '../../atoms/icons';
|
|
17
|
+
import { Loader } from '../../atoms/Loader';
|
|
18
|
+
import { maiaSectionUi as u } from '../maiaSectionUiTokens';
|
|
19
|
+
import { SCAgentSelectorContainer, SCAgentSelectorList, SCAgentSelectorLoadingRow, SCAgentSelectorOption, SCAgentSelectorTrigger, MAIA_SECTION_MODAL_Z, SCFieldWithDropdownZ } from '../maiaSectionModalStyles';
|
|
20
|
+
import { SCMRActionsRow, SCMRBody, SCMRCardBody, SCMRCardButton, SCMRCardContentText, SCMRCardFooter, SCMRCardFrequency, SCMRCardHeader, SCMRCardMenu, SCMRCardMenuItem, SCMRCardMenuItems, SCMRCardTitleName, SCMRCardTopRow, SCMRCardsOuter, SCMRCardsRow, SCMRContainer, SCMRCreateButton, SCMRCreateButtonText, SCMREmptyStateButton, SCMREmptyStateColumn, SCMREmptyStateRoot, SCMREmptyStateSubtitle, SCMREmptyStateTitleBlock, SCMREmptyStateTitle, SCMRKebabButton, SCMRLoadWrapper, SCMRModalBodyScroll, SCMRModalCancelButton, SCMRModalCloseButton, SCMRModalContent, SCMRModalFooter, SCMRModalHeader, SCMRModalSaveButton, SCMRModalTitle, SCMRModalWrapper, SCMRStatusBadge, SCMRSubtitle, SCMRTitle, SCMRTitleInner, SCMRTitleWrap } from './ChatAIMyRoutines.styles';
|
|
21
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
22
|
+
var routineToFormState = function routineToFormState(routine) {
|
|
23
|
+
var _routine$name, _routine$hour, _routine$minute, _routine$day_of_week;
|
|
24
|
+
return {
|
|
25
|
+
name: (_routine$name = routine.name) !== null && _routine$name !== void 0 ? _routine$name : '',
|
|
26
|
+
input: routine.input,
|
|
27
|
+
scheduleType: routine.schedule_type,
|
|
28
|
+
hour: (_routine$hour = routine.hour) !== null && _routine$hour !== void 0 ? _routine$hour : 12,
|
|
29
|
+
minute: (_routine$minute = routine.minute) !== null && _routine$minute !== void 0 ? _routine$minute : 0,
|
|
30
|
+
dayOfWeek: (_routine$day_of_week = routine.day_of_week) !== null && _routine$day_of_week !== void 0 ? _routine$day_of_week : 0,
|
|
31
|
+
timezone: routine.timezone
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export var ChatAIMyRoutines = function ChatAIMyRoutines() {
|
|
35
|
+
var _document$getElementB, _selectedAgent$id;
|
|
36
|
+
var _useTranslation = useTranslation('abm_agent_section'),
|
|
37
|
+
t = _useTranslation.t;
|
|
38
|
+
var _useState = useState([]),
|
|
39
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
40
|
+
routines = _useState2[0],
|
|
41
|
+
setRoutines = _useState2[1];
|
|
42
|
+
var _useState3 = useState(false),
|
|
43
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
44
|
+
loading = _useState4[0],
|
|
45
|
+
setLoading = _useState4[1];
|
|
46
|
+
var _useState5 = useState(false),
|
|
47
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
48
|
+
panelOpen = _useState6[0],
|
|
49
|
+
setPanelOpen = _useState6[1];
|
|
50
|
+
var _useState7 = useState(null),
|
|
51
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
52
|
+
editingRoutine = _useState8[0],
|
|
53
|
+
setEditingRoutine = _useState8[1];
|
|
54
|
+
var _useState9 = useState(null),
|
|
55
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
56
|
+
templateForm = _useState0[0],
|
|
57
|
+
setTemplateForm = _useState0[1];
|
|
58
|
+
var _useState1 = useState([]),
|
|
59
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
60
|
+
agents = _useState10[0],
|
|
61
|
+
setAgents = _useState10[1];
|
|
62
|
+
var _useState11 = useState(false),
|
|
63
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
64
|
+
loadingAgents = _useState12[0],
|
|
65
|
+
setLoadingAgents = _useState12[1];
|
|
66
|
+
var _useState13 = useState(null),
|
|
67
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
68
|
+
selectedAgent = _useState14[0],
|
|
69
|
+
setSelectedAgent = _useState14[1];
|
|
70
|
+
var _useState15 = useState(false),
|
|
71
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
72
|
+
dropdownOpen = _useState16[0],
|
|
73
|
+
setDropdownOpen = _useState16[1];
|
|
74
|
+
var _useState17 = useState(0),
|
|
75
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
76
|
+
submitCount = _useState18[0],
|
|
77
|
+
setSubmitCount = _useState18[1];
|
|
78
|
+
var _useState19 = useState(false),
|
|
79
|
+
_useState20 = _slicedToArray(_useState19, 2),
|
|
80
|
+
isFormValid = _useState20[0],
|
|
81
|
+
setIsFormValid = _useState20[1];
|
|
82
|
+
var _useState21 = useState(null),
|
|
83
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
84
|
+
menuOpenForId = _useState22[0],
|
|
85
|
+
setMenuOpenForId = _useState22[1];
|
|
86
|
+
var _useState23 = useState(null),
|
|
87
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
88
|
+
routineToDelete = _useState24[0],
|
|
89
|
+
setRoutineToDelete = _useState24[1];
|
|
90
|
+
var dropdownRef = useRef(null);
|
|
91
|
+
var fetchRoutines = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
92
|
+
var result, _t;
|
|
93
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
94
|
+
while (1) switch (_context.prev = _context.next) {
|
|
95
|
+
case 0:
|
|
96
|
+
setLoading(true);
|
|
97
|
+
_context.prev = 1;
|
|
98
|
+
_context.next = 2;
|
|
99
|
+
return getMySchedules({
|
|
100
|
+
limit: 100,
|
|
101
|
+
offset: 0
|
|
102
|
+
});
|
|
103
|
+
case 2:
|
|
104
|
+
result = _context.sent;
|
|
105
|
+
setRoutines(result.data);
|
|
106
|
+
_context.next = 4;
|
|
107
|
+
break;
|
|
108
|
+
case 3:
|
|
109
|
+
_context.prev = 3;
|
|
110
|
+
_t = _context["catch"](1);
|
|
111
|
+
case 4:
|
|
112
|
+
_context.prev = 4;
|
|
113
|
+
setLoading(false);
|
|
114
|
+
return _context.finish(4);
|
|
115
|
+
case 5:
|
|
116
|
+
case "end":
|
|
117
|
+
return _context.stop();
|
|
118
|
+
}
|
|
119
|
+
}, _callee, null, [[1, 3, 4, 5]]);
|
|
120
|
+
})), []);
|
|
121
|
+
var fetchAgents = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
122
|
+
var response, data, agentList, _t2;
|
|
123
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
124
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
125
|
+
case 0:
|
|
126
|
+
setLoadingAgents(true);
|
|
127
|
+
_context2.prev = 1;
|
|
128
|
+
_context2.next = 2;
|
|
129
|
+
return fetchMaia({
|
|
130
|
+
path: 'agents?agent_type=custom&limit=100&offset=0',
|
|
131
|
+
method: 'GET'
|
|
132
|
+
});
|
|
133
|
+
case 2:
|
|
134
|
+
response = _context2.sent;
|
|
135
|
+
_context2.next = 3;
|
|
136
|
+
return response.json();
|
|
137
|
+
case 3:
|
|
138
|
+
data = _context2.sent;
|
|
139
|
+
agentList = (data.data || []).map(function (a) {
|
|
140
|
+
return {
|
|
141
|
+
id: a.id,
|
|
142
|
+
name: a.name,
|
|
143
|
+
emoji: a.emoji || ''
|
|
144
|
+
};
|
|
145
|
+
});
|
|
146
|
+
setAgents(agentList);
|
|
147
|
+
if (agentList.length === 1) {
|
|
148
|
+
setSelectedAgent(agentList[0]);
|
|
149
|
+
setDropdownOpen(false);
|
|
150
|
+
}
|
|
151
|
+
_context2.next = 5;
|
|
152
|
+
break;
|
|
153
|
+
case 4:
|
|
154
|
+
_context2.prev = 4;
|
|
155
|
+
_t2 = _context2["catch"](1);
|
|
156
|
+
case 5:
|
|
157
|
+
_context2.prev = 5;
|
|
158
|
+
setLoadingAgents(false);
|
|
159
|
+
return _context2.finish(5);
|
|
160
|
+
case 6:
|
|
161
|
+
case "end":
|
|
162
|
+
return _context2.stop();
|
|
163
|
+
}
|
|
164
|
+
}, _callee2, null, [[1, 4, 5, 6]]);
|
|
165
|
+
})), []);
|
|
166
|
+
useEffect(function () {
|
|
167
|
+
fetchRoutines();
|
|
168
|
+
}, [fetchRoutines]);
|
|
169
|
+
useEffect(function () {
|
|
170
|
+
if (!panelOpen) {
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
setDropdownOpen(false);
|
|
174
|
+
fetchAgents();
|
|
175
|
+
return undefined;
|
|
176
|
+
}, [panelOpen, fetchAgents]);
|
|
177
|
+
var openCreatePanel = useCallback(function () {
|
|
178
|
+
setEditingRoutine(null);
|
|
179
|
+
setTemplateForm(null);
|
|
180
|
+
setSelectedAgent(null);
|
|
181
|
+
setIsFormValid(false);
|
|
182
|
+
setSubmitCount(0);
|
|
183
|
+
setPanelOpen(true);
|
|
184
|
+
}, []);
|
|
185
|
+
var openDetailPanel = useCallback(function (routine) {
|
|
186
|
+
var _routine$agent_name, _routine$agent_emoji;
|
|
187
|
+
setEditingRoutine(routine);
|
|
188
|
+
setTemplateForm(routineToFormState(routine));
|
|
189
|
+
setSelectedAgent(routine.agent_external_id ? {
|
|
190
|
+
id: routine.agent_external_id,
|
|
191
|
+
name: (_routine$agent_name = routine.agent_name) !== null && _routine$agent_name !== void 0 ? _routine$agent_name : '',
|
|
192
|
+
emoji: (_routine$agent_emoji = routine.agent_emoji) !== null && _routine$agent_emoji !== void 0 ? _routine$agent_emoji : ''
|
|
193
|
+
} : null);
|
|
194
|
+
setIsFormValid(false);
|
|
195
|
+
setSubmitCount(0);
|
|
196
|
+
setPanelOpen(true);
|
|
197
|
+
}, []);
|
|
198
|
+
var closePanel = useCallback(function () {
|
|
199
|
+
setPanelOpen(false);
|
|
200
|
+
setEditingRoutine(null);
|
|
201
|
+
setTemplateForm(null);
|
|
202
|
+
}, []);
|
|
203
|
+
useEffect(function () {
|
|
204
|
+
if (!dropdownOpen) {
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
var closeIfOutside = function closeIfOutside(e) {
|
|
208
|
+
var _dropdownRef$current;
|
|
209
|
+
if (!((_dropdownRef$current = dropdownRef.current) !== null && _dropdownRef$current !== void 0 && _dropdownRef$current.contains(e.target))) setDropdownOpen(false);
|
|
210
|
+
};
|
|
211
|
+
document.addEventListener('click', closeIfOutside);
|
|
212
|
+
return function () {
|
|
213
|
+
return document.removeEventListener('click', closeIfOutside);
|
|
214
|
+
};
|
|
215
|
+
}, [dropdownOpen]);
|
|
216
|
+
useEffect(function () {
|
|
217
|
+
var handleClickOutside = function handleClickOutside() {
|
|
218
|
+
if (menuOpenForId) setMenuOpenForId(null);
|
|
219
|
+
};
|
|
220
|
+
document.addEventListener('click', handleClickOutside);
|
|
221
|
+
return function () {
|
|
222
|
+
return document.removeEventListener('click', handleClickOutside);
|
|
223
|
+
};
|
|
224
|
+
}, [menuOpenForId]);
|
|
225
|
+
var handleCreateSuccess = useCallback(function () {
|
|
226
|
+
closePanel();
|
|
227
|
+
setSelectedAgent(null);
|
|
228
|
+
fetchRoutines();
|
|
229
|
+
}, [closePanel, fetchRoutines]);
|
|
230
|
+
var handleConfirmDelete = useCallback(/*#__PURE__*/function () {
|
|
231
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(chat) {
|
|
232
|
+
var _t3;
|
|
233
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
234
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
235
|
+
case 0:
|
|
236
|
+
_context3.prev = 0;
|
|
237
|
+
_context3.next = 1;
|
|
238
|
+
return deleteSchedule(chat.id);
|
|
239
|
+
case 1:
|
|
240
|
+
setRoutineToDelete(null);
|
|
241
|
+
fetchRoutines();
|
|
242
|
+
_context3.next = 3;
|
|
243
|
+
break;
|
|
244
|
+
case 2:
|
|
245
|
+
_context3.prev = 2;
|
|
246
|
+
_t3 = _context3["catch"](0);
|
|
247
|
+
case 3:
|
|
248
|
+
case "end":
|
|
249
|
+
return _context3.stop();
|
|
250
|
+
}
|
|
251
|
+
}, _callee3, null, [[0, 2]]);
|
|
252
|
+
}));
|
|
253
|
+
return function (_x) {
|
|
254
|
+
return _ref3.apply(this, arguments);
|
|
255
|
+
};
|
|
256
|
+
}(), [fetchRoutines]);
|
|
257
|
+
var frequencyLabel = function frequencyLabel(schedule) {
|
|
258
|
+
var _map$schedule$schedul;
|
|
259
|
+
var map = {
|
|
260
|
+
minutely: t('triggersSection.frequencies.minutely'),
|
|
261
|
+
hourly: t('triggersSection.frequencies.hourly'),
|
|
262
|
+
daily: t('triggersSection.frequencies.daily'),
|
|
263
|
+
weekly: t('triggersSection.frequencies.weekly')
|
|
264
|
+
};
|
|
265
|
+
return (_map$schedule$schedul = map[schedule.schedule_type]) !== null && _map$schedule$schedul !== void 0 ? _map$schedule$schedul : schedule.schedule_type;
|
|
266
|
+
};
|
|
267
|
+
var statusLabel = function statusLabel(status) {
|
|
268
|
+
var _map$status;
|
|
269
|
+
var map = {
|
|
270
|
+
active: t('triggersSection.status.active'),
|
|
271
|
+
paused: t('triggersSection.status.paused'),
|
|
272
|
+
disabled: t('triggersSection.status.disabled')
|
|
273
|
+
};
|
|
274
|
+
return (_map$status = map[status]) !== null && _map$status !== void 0 ? _map$status : status;
|
|
275
|
+
};
|
|
276
|
+
var selectedLabel = selectedAgent ? "".concat(selectedAgent.emoji ? "".concat(selectedAgent.emoji, " ") : '').concat(selectedAgent.name) : t('triggersSection.selectAgent');
|
|
277
|
+
var deleteModalChat = routineToDelete ? {
|
|
278
|
+
title: routineToDelete.name || t('triggersSection.untitledRoutine'),
|
|
279
|
+
id: routineToDelete.id
|
|
280
|
+
} : null;
|
|
281
|
+
var container = (_document$getElementB = document.getElementById('modal-root-actions')) !== null && _document$getElementB !== void 0 ? _document$getElementB : document.body;
|
|
282
|
+
return /*#__PURE__*/_jsxs(SCMRContainer, {
|
|
283
|
+
$hasItems: !!routines.length,
|
|
284
|
+
children: [/*#__PURE__*/_jsx(MAIAIsologo, {}), /*#__PURE__*/_jsxs(SCMRBody, {
|
|
285
|
+
$canCreate: true,
|
|
286
|
+
children: [routines.length ? /*#__PURE__*/_jsxs(SCMRTitleWrap, {
|
|
287
|
+
children: [/*#__PURE__*/_jsxs(SCMRTitleInner, {
|
|
288
|
+
children: [/*#__PURE__*/_jsx(SCMRTitle, {
|
|
289
|
+
children: t('triggersSection.myRoutinesTitle')
|
|
290
|
+
}), /*#__PURE__*/_jsx(SCMRSubtitle, {
|
|
291
|
+
children: t('triggersSection.myRoutinesSubtitle')
|
|
292
|
+
})]
|
|
293
|
+
}), /*#__PURE__*/_jsx(SCMRActionsRow, {
|
|
294
|
+
children: /*#__PURE__*/_jsx(SCMRCreateButton, {
|
|
295
|
+
type: "button",
|
|
296
|
+
onClick: openCreatePanel,
|
|
297
|
+
children: /*#__PURE__*/_jsx(SCMRCreateButtonText, {
|
|
298
|
+
children: t('triggersSection.newRoutine')
|
|
299
|
+
})
|
|
300
|
+
})
|
|
301
|
+
})]
|
|
302
|
+
}) : null, loading ? /*#__PURE__*/_jsx(SCMRLoadWrapper, {
|
|
303
|
+
children: /*#__PURE__*/_jsx(Loader, {
|
|
304
|
+
size: "small"
|
|
305
|
+
})
|
|
306
|
+
}) : null, !loading && routines.length ? /*#__PURE__*/_jsx(SCMRCardsOuter, {
|
|
307
|
+
children: /*#__PURE__*/_jsx(SCMRCardsRow, {
|
|
308
|
+
children: routines.map(function (routine) {
|
|
309
|
+
var _routine$agent_name2;
|
|
310
|
+
return /*#__PURE__*/_jsxs(SCMRCardButton, {
|
|
311
|
+
type: "button",
|
|
312
|
+
onClick: function onClick() {
|
|
313
|
+
return openDetailPanel(routine);
|
|
314
|
+
},
|
|
315
|
+
children: [/*#__PURE__*/_jsx(SCMRCardHeader, {
|
|
316
|
+
children: /*#__PURE__*/_jsxs(SCMRCardTopRow, {
|
|
317
|
+
children: [/*#__PURE__*/_jsx(SCMRCardTitleName, {
|
|
318
|
+
children: routine.name || t('triggersSection.untitledRoutine')
|
|
319
|
+
}), /*#__PURE__*/_jsx(SCMRKebabButton, {
|
|
320
|
+
type: "button",
|
|
321
|
+
"aria-label": t('triggersSection.deleteRoutine'),
|
|
322
|
+
onClick: function onClick(event) {
|
|
323
|
+
event.preventDefault();
|
|
324
|
+
event.stopPropagation();
|
|
325
|
+
setMenuOpenForId(function (prev) {
|
|
326
|
+
return prev === routine.id ? null : routine.id;
|
|
327
|
+
});
|
|
328
|
+
},
|
|
329
|
+
children: /*#__PURE__*/_jsx(MenuDots, {
|
|
330
|
+
color: "#999",
|
|
331
|
+
width: 15,
|
|
332
|
+
height: 15
|
|
333
|
+
})
|
|
334
|
+
})]
|
|
335
|
+
})
|
|
336
|
+
}), /*#__PURE__*/_jsxs(SCMRCardBody, {
|
|
337
|
+
children: [/*#__PURE__*/_jsx(SCMRCardContentText, {
|
|
338
|
+
children: routine.agent_emoji || routine.agent_name ? "".concat(routine.agent_emoji ? "".concat(routine.agent_emoji, " ") : '').concat((_routine$agent_name2 = routine.agent_name) !== null && _routine$agent_name2 !== void 0 ? _routine$agent_name2 : '') : ''
|
|
339
|
+
}), /*#__PURE__*/_jsxs(SCMRCardFooter, {
|
|
340
|
+
children: [/*#__PURE__*/_jsx(SCMRCardFrequency, {
|
|
341
|
+
children: frequencyLabel(routine)
|
|
342
|
+
}), /*#__PURE__*/_jsx(SCMRStatusBadge, {
|
|
343
|
+
$status: routine.status,
|
|
344
|
+
children: statusLabel(routine.status)
|
|
345
|
+
})]
|
|
346
|
+
})]
|
|
347
|
+
}), menuOpenForId === routine.id ? /*#__PURE__*/_jsx(SCMRCardMenu, {
|
|
348
|
+
onClick: function onClick(event) {
|
|
349
|
+
event.preventDefault();
|
|
350
|
+
event.stopPropagation();
|
|
351
|
+
},
|
|
352
|
+
children: /*#__PURE__*/_jsx(SCMRCardMenuItems, {
|
|
353
|
+
children: /*#__PURE__*/_jsx(SCMRCardMenuItem, {
|
|
354
|
+
type: "button",
|
|
355
|
+
onClick: function onClick() {
|
|
356
|
+
setRoutineToDelete(routine);
|
|
357
|
+
setMenuOpenForId(null);
|
|
358
|
+
},
|
|
359
|
+
children: t('triggersSection.deleteRoutine')
|
|
360
|
+
})
|
|
361
|
+
})
|
|
362
|
+
}) : null]
|
|
363
|
+
}, routine.id);
|
|
364
|
+
})
|
|
365
|
+
})
|
|
366
|
+
}) : null, !loading && !routines.length ? /*#__PURE__*/_jsxs(SCMREmptyStateRoot, {
|
|
367
|
+
children: [/*#__PURE__*/_jsx(SCMREmptyStateColumn, {
|
|
368
|
+
children: /*#__PURE__*/_jsxs(SCMREmptyStateTitleBlock, {
|
|
369
|
+
children: [/*#__PURE__*/_jsx(SCMREmptyStateTitle, {
|
|
370
|
+
children: t('triggersSection.myRoutinesEmptyTitle')
|
|
371
|
+
}), /*#__PURE__*/_jsx(SCMREmptyStateSubtitle, {
|
|
372
|
+
children: t('triggersSection.myRoutinesEmptyDescription')
|
|
373
|
+
})]
|
|
374
|
+
})
|
|
375
|
+
}), /*#__PURE__*/_jsx(SCMREmptyStateButton, {
|
|
376
|
+
type: "button",
|
|
377
|
+
onClick: openCreatePanel,
|
|
378
|
+
children: t('triggersSection.newRoutine')
|
|
379
|
+
})]
|
|
380
|
+
}) : null]
|
|
381
|
+
}), panelOpen && /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(Backdrop, {
|
|
382
|
+
onClick: closePanel,
|
|
383
|
+
zIndex: MAIA_SECTION_MODAL_Z,
|
|
384
|
+
children: /*#__PURE__*/_jsxs(SCMRModalWrapper, {
|
|
385
|
+
onClick: function onClick(e) {
|
|
386
|
+
return e.stopPropagation();
|
|
387
|
+
},
|
|
388
|
+
children: [/*#__PURE__*/_jsxs(SCMRModalHeader, {
|
|
389
|
+
children: [/*#__PURE__*/_jsx(SCMRModalTitle, {
|
|
390
|
+
children: editingRoutine ? t('triggersSection.routineDetail') : t('triggersSection.newRoutine')
|
|
391
|
+
}), /*#__PURE__*/_jsx(SCMRModalCloseButton, {
|
|
392
|
+
type: "button",
|
|
393
|
+
"aria-label": t('triggersSection.back'),
|
|
394
|
+
onClick: closePanel,
|
|
395
|
+
children: /*#__PURE__*/_jsx(Cross, {
|
|
396
|
+
color: "#a6a6a6",
|
|
397
|
+
width: 18,
|
|
398
|
+
height: 18
|
|
399
|
+
})
|
|
400
|
+
})]
|
|
401
|
+
}), /*#__PURE__*/_jsxs(SCMRModalContent, {
|
|
402
|
+
children: [/*#__PURE__*/_jsxs(SCFieldWithDropdownZ, {
|
|
403
|
+
children: [t('triggersSection.agent'), /*#__PURE__*/_jsx(SCAgentSelectorContainer, {
|
|
404
|
+
ref: dropdownRef,
|
|
405
|
+
children: editingRoutine ? /*#__PURE__*/_jsx(SCAgentSelectorTrigger, {
|
|
406
|
+
open: false,
|
|
407
|
+
type: "button",
|
|
408
|
+
disabled: true,
|
|
409
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
410
|
+
children: selectedLabel
|
|
411
|
+
})
|
|
412
|
+
}) : /*#__PURE__*/_jsxs(_Fragment, {
|
|
413
|
+
children: [/*#__PURE__*/_jsxs(SCAgentSelectorTrigger, {
|
|
414
|
+
open: dropdownOpen,
|
|
415
|
+
onClick: function onClick() {
|
|
416
|
+
return setDropdownOpen(function (prev) {
|
|
417
|
+
return !prev;
|
|
418
|
+
});
|
|
419
|
+
},
|
|
420
|
+
type: "button",
|
|
421
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
422
|
+
children: loadingAgents ? t('triggersSection.loadingAgents') : selectedLabel
|
|
423
|
+
}), /*#__PURE__*/_jsx(ChevronDown, {
|
|
424
|
+
width: "14px",
|
|
425
|
+
height: "14px",
|
|
426
|
+
color: dropdownOpen ? u.agentAccent : u.textMuted
|
|
427
|
+
})]
|
|
428
|
+
}), dropdownOpen && /*#__PURE__*/_jsx(SCAgentSelectorList, {
|
|
429
|
+
children: loadingAgents ? /*#__PURE__*/_jsx(SCAgentSelectorLoadingRow, {
|
|
430
|
+
children: t('triggersSection.loadingAgents')
|
|
431
|
+
}) : agents.map(function (agent) {
|
|
432
|
+
return /*#__PURE__*/_jsxs(SCAgentSelectorOption, {
|
|
433
|
+
isSelected: (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) === agent.id,
|
|
434
|
+
onMouseDown: function onMouseDown(e) {
|
|
435
|
+
e.stopPropagation();
|
|
436
|
+
},
|
|
437
|
+
onClick: function onClick() {
|
|
438
|
+
setSelectedAgent(agent);
|
|
439
|
+
setDropdownOpen(false);
|
|
440
|
+
},
|
|
441
|
+
children: [agent.emoji ? "".concat(agent.emoji, " ") : '', agent.name]
|
|
442
|
+
}, agent.id);
|
|
443
|
+
})
|
|
444
|
+
})]
|
|
445
|
+
})
|
|
446
|
+
})]
|
|
447
|
+
}), /*#__PURE__*/_jsx(SCMRModalBodyScroll, {
|
|
448
|
+
children: /*#__PURE__*/_jsx(AbmTriggersSection, {
|
|
449
|
+
agentExternalId: (_selectedAgent$id = selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) !== null && _selectedAgent$id !== void 0 ? _selectedAgent$id : null,
|
|
450
|
+
initialForm: templateForm !== null && templateForm !== void 0 ? templateForm : undefined,
|
|
451
|
+
submitCount: submitCount,
|
|
452
|
+
onSuccess: handleCreateSuccess,
|
|
453
|
+
onValidityChange: setIsFormValid,
|
|
454
|
+
standaloneCreateOnly: true
|
|
455
|
+
})
|
|
456
|
+
})]
|
|
457
|
+
}), /*#__PURE__*/_jsxs(SCMRModalFooter, {
|
|
458
|
+
children: [/*#__PURE__*/_jsx(SCMRModalCancelButton, {
|
|
459
|
+
type: "button",
|
|
460
|
+
onClick: closePanel,
|
|
461
|
+
children: t('triggersSection.back')
|
|
462
|
+
}), !editingRoutine && /*#__PURE__*/_jsx(SCMRModalSaveButton, {
|
|
463
|
+
type: "button",
|
|
464
|
+
disabled: !isFormValid,
|
|
465
|
+
onClick: function onClick() {
|
|
466
|
+
return setSubmitCount(function (prev) {
|
|
467
|
+
return prev + 1;
|
|
468
|
+
});
|
|
469
|
+
},
|
|
470
|
+
children: t('triggersSection.save')
|
|
471
|
+
})]
|
|
472
|
+
})]
|
|
473
|
+
})
|
|
474
|
+
}), container), deleteModalChat ? /*#__PURE__*/_jsx(DeleteQuestionModal, {
|
|
475
|
+
action: "routine",
|
|
476
|
+
chat: deleteModalChat,
|
|
477
|
+
onClose: function onClose() {
|
|
478
|
+
return setRoutineToDelete(null);
|
|
479
|
+
},
|
|
480
|
+
handlers: {
|
|
481
|
+
handleConfirmAction: handleConfirmDelete
|
|
482
|
+
}
|
|
483
|
+
}) : null]
|
|
484
|
+
});
|
|
485
|
+
};
|
|
486
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdERPTSIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VUcmFuc2xhdGlvbiIsIk1lbnVEb3RzIiwiQ2hldnJvbkRvd24iLCJDcm9zcyIsIkFibVRyaWdnZXJzU2VjdGlvbiIsIkJhY2tkcm9wIiwiZmV0Y2hNYWlhIiwiZ2V0TXlTY2hlZHVsZXMiLCJkZWxldGVTY2hlZHVsZSIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJNQUlBSXNvbG9nbyIsIkxvYWRlciIsIm1haWFTZWN0aW9uVWkiLCJ1IiwiU0NBZ2VudFNlbGVjdG9yQ29udGFpbmVyIiwiU0NBZ2VudFNlbGVjdG9yTGlzdCIsIlNDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3ciLCJTQ0FnZW50U2VsZWN0b3JPcHRpb24iLCJTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyIiwiTUFJQV9TRUNUSU9OX01PREFMX1oiLCJTQ0ZpZWxkV2l0aERyb3Bkb3duWiIsIlNDTVJBY3Rpb25zUm93IiwiU0NNUkJvZHkiLCJTQ01SQ2FyZEJvZHkiLCJTQ01SQ2FyZEJ1dHRvbiIsIlNDTVJDYXJkQ29udGVudFRleHQiLCJTQ01SQ2FyZEZvb3RlciIsIlNDTVJDYXJkRnJlcXVlbmN5IiwiU0NNUkNhcmRIZWFkZXIiLCJTQ01SQ2FyZE1lbnUiLCJTQ01SQ2FyZE1lbnVJdGVtIiwiU0NNUkNhcmRNZW51SXRlbXMiLCJTQ01SQ2FyZFRpdGxlTmFtZSIsIlNDTVJDYXJkVG9wUm93IiwiU0NNUkNhcmRzT3V0ZXIiLCJTQ01SQ2FyZHNSb3ciLCJTQ01SQ29udGFpbmVyIiwiU0NNUkNyZWF0ZUJ1dHRvbiIsIlNDTVJDcmVhdGVCdXR0b25UZXh0IiwiU0NNUkVtcHR5U3RhdGVCdXR0b24iLCJTQ01SRW1wdHlTdGF0ZUNvbHVtbiIsIlNDTVJFbXB0eVN0YXRlUm9vdCIsIlNDTVJFbXB0eVN0YXRlU3VidGl0bGUiLCJTQ01SRW1wdHlTdGF0ZVRpdGxlQmxvY2siLCJTQ01SRW1wdHlTdGF0ZVRpdGxlIiwiU0NNUktlYmFiQnV0dG9uIiwiU0NNUkxvYWRXcmFwcGVyIiwiU0NNUk1vZGFsQm9keVNjcm9sbCIsIlNDTVJNb2RhbENhbmNlbEJ1dHRvbiIsIlNDTVJNb2RhbENsb3NlQnV0dG9uIiwiU0NNUk1vZGFsQ29udGVudCIsIlNDTVJNb2RhbEZvb3RlciIsIlNDTVJNb2RhbEhlYWRlciIsIlNDTVJNb2RhbFNhdmVCdXR0b24iLCJTQ01STW9kYWxUaXRsZSIsIlNDTVJNb2RhbFdyYXBwZXIiLCJTQ01SU3RhdHVzQmFkZ2UiLCJTQ01SU3VidGl0bGUiLCJTQ01SVGl0bGUiLCJTQ01SVGl0bGVJbm5lciIsIlNDTVJUaXRsZVdyYXAiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJyb3V0aW5lVG9Gb3JtU3RhdGUiLCJyb3V0aW5lIiwiX3JvdXRpbmUkbmFtZSIsIl9yb3V0aW5lJGhvdXIiLCJfcm91dGluZSRtaW51dGUiLCJfcm91dGluZSRkYXlfb2Zfd2VlayIsIm5hbWUiLCJpbnB1dCIsInNjaGVkdWxlVHlwZSIsInNjaGVkdWxlX3R5cGUiLCJob3VyIiwibWludXRlIiwiZGF5T2ZXZWVrIiwiZGF5X29mX3dlZWsiLCJ0aW1lem9uZSIsIkNoYXRBSU15Um91dGluZXMiLCJfZG9jdW1lbnQkZ2V0RWxlbWVudEIiLCJfc2VsZWN0ZWRBZ2VudCRpZCIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJyb3V0aW5lcyIsInNldFJvdXRpbmVzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwicGFuZWxPcGVuIiwic2V0UGFuZWxPcGVuIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJlZGl0aW5nUm91dGluZSIsInNldEVkaXRpbmdSb3V0aW5lIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJ0ZW1wbGF0ZUZvcm0iLCJzZXRUZW1wbGF0ZUZvcm0iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJhZ2VudHMiLCJzZXRBZ2VudHMiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibG9hZGluZ0FnZW50cyIsInNldExvYWRpbmdBZ2VudHMiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwic2VsZWN0ZWRBZ2VudCIsInNldFNlbGVjdGVkQWdlbnQiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiZHJvcGRvd25PcGVuIiwic2V0RHJvcGRvd25PcGVuIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInN1Ym1pdENvdW50Iiwic2V0U3VibWl0Q291bnQiLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwiaXNGb3JtVmFsaWQiLCJzZXRJc0Zvcm1WYWxpZCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJtZW51T3BlbkZvcklkIiwic2V0TWVudU9wZW5Gb3JJZCIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJyb3V0aW5lVG9EZWxldGUiLCJzZXRSb3V0aW5lVG9EZWxldGUiLCJkcm9wZG93blJlZiIsImZldGNoUm91dGluZXMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3VsdCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJsaW1pdCIsIm9mZnNldCIsInNlbnQiLCJkYXRhIiwiZmluaXNoIiwic3RvcCIsImZldGNoQWdlbnRzIiwiX2NhbGxlZTIiLCJyZXNwb25zZSIsImFnZW50TGlzdCIsIl90MiIsIl9jb250ZXh0MiIsInBhdGgiLCJtZXRob2QiLCJqc29uIiwibWFwIiwiYSIsImlkIiwiZW1vamkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJvcGVuQ3JlYXRlUGFuZWwiLCJvcGVuRGV0YWlsUGFuZWwiLCJfcm91dGluZSRhZ2VudF9uYW1lIiwiX3JvdXRpbmUkYWdlbnRfZW1vamkiLCJhZ2VudF9leHRlcm5hbF9pZCIsImFnZW50X25hbWUiLCJhZ2VudF9lbW9qaSIsImNsb3NlUGFuZWwiLCJjbG9zZUlmT3V0c2lkZSIsImUiLCJfZHJvcGRvd25SZWYkY3VycmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDbGlja091dHNpZGUiLCJoYW5kbGVDcmVhdGVTdWNjZXNzIiwiaGFuZGxlQ29uZmlybURlbGV0ZSIsIl9yZWYzIiwiX2NhbGxlZTMiLCJjaGF0IiwiX3QzIiwiX2NvbnRleHQzIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImZyZXF1ZW5jeUxhYmVsIiwic2NoZWR1bGUiLCJfbWFwJHNjaGVkdWxlJHNjaGVkdWwiLCJtaW51dGVseSIsImhvdXJseSIsImRhaWx5Iiwid2Vla2x5Iiwic3RhdHVzTGFiZWwiLCJzdGF0dXMiLCJfbWFwJHN0YXR1cyIsImFjdGl2ZSIsInBhdXNlZCIsImRpc2FibGVkIiwic2VsZWN0ZWRMYWJlbCIsImNvbmNhdCIsImRlbGV0ZU1vZGFsQ2hhdCIsInRpdGxlIiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJib2R5IiwiJGhhc0l0ZW1zIiwiY2hpbGRyZW4iLCIkY2FuQ3JlYXRlIiwidHlwZSIsIm9uQ2xpY2siLCJzaXplIiwiX3JvdXRpbmUkYWdlbnRfbmFtZTIiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsIiRzdGF0dXMiLCJjcmVhdGVQb3J0YWwiLCJ6SW5kZXgiLCJyZWYiLCJvcGVuIiwiYWdlbnRBY2NlbnQiLCJ0ZXh0TXV0ZWQiLCJhZ2VudCIsImlzU2VsZWN0ZWQiLCJvbk1vdXNlRG93biIsImFnZW50RXh0ZXJuYWxJZCIsImluaXRpYWxGb3JtIiwib25TdWNjZXNzIiwib25WYWxpZGl0eUNoYW5nZSIsInN0YW5kYWxvbmVDcmVhdGVPbmx5IiwiYWN0aW9uIiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNeVJvdXRpbmVzL0NoYXRBSU15Um91dGluZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgQ2hldnJvbkRvd24gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG93bidcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBBYm1UcmlnZ2Vyc1NlY3Rpb24gfSBmcm9tICcuLi9BYm1TZWN0aW9uL0FibVRyaWdnZXJzU2VjdGlvbi9BYm1UcmlnZ2Vyc1NlY3Rpb24nXG5pbXBvcnQgdHlwZSB7IFRyaWdnZXJGb3JtU3RhdGUgfSBmcm9tICcuLi9BYm1TZWN0aW9uL0FibVRyaWdnZXJzU2VjdGlvbi9BYm1UcmlnZ2Vyc1NlY3Rpb24uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgQmFja2Ryb3AgfSBmcm9tICcuLi8uLi9hdG9tcy9CYWNrZHJvcCdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgZ2V0TXlTY2hlZHVsZXMsIGRlbGV0ZVNjaGVkdWxlLCB0eXBlIFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NjaGVkdWxlcydcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbC9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgTUFJQUlzb2xvZ28gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcbmltcG9ydCB7IG1haWFTZWN0aW9uVWkgYXMgdSB9IGZyb20gJy4uL21haWFTZWN0aW9uVWlUb2tlbnMnXG5pbXBvcnQge1xuICBTQ0FnZW50U2VsZWN0b3JDb250YWluZXIsXG4gIFNDQWdlbnRTZWxlY3Rvckxpc3QsXG4gIFNDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3csXG4gIFNDQWdlbnRTZWxlY3Rvck9wdGlvbixcbiAgU0NBZ2VudFNlbGVjdG9yVHJpZ2dlcixcbiAgTUFJQV9TRUNUSU9OX01PREFMX1osXG4gIFNDRmllbGRXaXRoRHJvcGRvd25aLFxufSBmcm9tICcuLi9tYWlhU2VjdGlvbk1vZGFsU3R5bGVzJ1xuaW1wb3J0IHtcbiAgU0NNUkFjdGlvbnNSb3csXG4gIFNDTVJCb2R5LFxuICBTQ01SQ2FyZEJvZHksXG4gIFNDTVJDYXJkQnV0dG9uLFxuICBTQ01SQ2FyZENvbnRlbnRUZXh0LFxuICBTQ01SQ2FyZEZvb3RlcixcbiAgU0NNUkNhcmRGcmVxdWVuY3ksXG4gIFNDTVJDYXJkSGVhZGVyLFxuICBTQ01SQ2FyZE1lbnUsXG4gIFNDTVJDYXJkTWVudUl0ZW0sXG4gIFNDTVJDYXJkTWVudUl0ZW1zLFxuICBTQ01SQ2FyZFRpdGxlTmFtZSxcbiAgU0NNUkNhcmRUb3BSb3csXG4gIFNDTVJDYXJkc091dGVyLFxuICBTQ01SQ2FyZHNSb3csXG4gIFNDTVJDb250YWluZXIsXG4gIFNDTVJDcmVhdGVCdXR0b24sXG4gIFNDTVJDcmVhdGVCdXR0b25UZXh0LFxuICBTQ01SRW1wdHlTdGF0ZUJ1dHRvbixcbiAgU0NNUkVtcHR5U3RhdGVDb2x1bW4sXG4gIFNDTVJFbXB0eVN0YXRlUm9vdCxcbiAgU0NNUkVtcHR5U3RhdGVTdWJ0aXRsZSxcbiAgU0NNUkVtcHR5U3RhdGVUaXRsZUJsb2NrLFxuICBTQ01SRW1wdHlTdGF0ZVRpdGxlLFxuICBTQ01SS2ViYWJCdXR0b24sXG4gIFNDTVJMb2FkV3JhcHBlcixcbiAgU0NNUk1vZGFsQm9keVNjcm9sbCxcbiAgU0NNUk1vZGFsQ2FuY2VsQnV0dG9uLFxuICBTQ01STW9kYWxDbG9zZUJ1dHRvbixcbiAgU0NNUk1vZGFsQ29udGVudCxcbiAgU0NNUk1vZGFsRm9vdGVyLFxuICBTQ01STW9kYWxIZWFkZXIsXG4gIFNDTVJNb2RhbFNhdmVCdXR0b24sXG4gIFNDTVJNb2RhbFRpdGxlLFxuICBTQ01STW9kYWxXcmFwcGVyLFxuICBTQ01SU3RhdHVzQmFkZ2UsXG4gIFNDTVJTdWJ0aXRsZSxcbiAgU0NNUlRpdGxlLFxuICBTQ01SVGl0bGVJbm5lcixcbiAgU0NNUlRpdGxlV3JhcCxcbn0gZnJvbSAnLi9DaGF0QUlNeVJvdXRpbmVzLnN0eWxlcydcblxudHlwZSBBZ2VudE9wdGlvbiA9IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBlbW9qaTogc3RyaW5nIH1cblxuY29uc3Qgcm91dGluZVRvRm9ybVN0YXRlID0gKHJvdXRpbmU6IFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2UpOiBQYXJ0aWFsPFRyaWdnZXJGb3JtU3RhdGU+ID0+ICh7XG4gIG5hbWU6IHJvdXRpbmUubmFtZSA/PyAnJyxcbiAgaW5wdXQ6IHJvdXRpbmUuaW5wdXQsXG4gIHNjaGVkdWxlVHlwZTogcm91dGluZS5zY2hlZHVsZV90eXBlLFxuICBob3VyOiByb3V0aW5lLmhvdXIgPz8gMTIsXG4gIG1pbnV0ZTogcm91dGluZS5taW51dGUgPz8gMCxcbiAgZGF5T2ZXZWVrOiByb3V0aW5lLmRheV9vZl93ZWVrID8/IDAsXG4gIHRpbWV6b25lOiByb3V0aW5lLnRpbWV6b25lLFxufSlcblxuZXhwb3J0IGNvbnN0IENoYXRBSU15Um91dGluZXMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgY29uc3QgW3JvdXRpbmVzLCBzZXRSb3V0aW5lc10gPSB1c2VTdGF0ZTxTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlW10+KFtdKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3BhbmVsT3Blbiwgc2V0UGFuZWxPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZWRpdGluZ1JvdXRpbmUsIHNldEVkaXRpbmdSb3V0aW5lXSA9IHVzZVN0YXRlPFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2UgfCBudWxsPihudWxsKVxuICBjb25zdCBbdGVtcGxhdGVGb3JtLCBzZXRUZW1wbGF0ZUZvcm1dID0gdXNlU3RhdGU8UGFydGlhbDxUcmlnZ2VyRm9ybVN0YXRlPiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFthZ2VudHMsIHNldEFnZW50c10gPSB1c2VTdGF0ZTxBZ2VudE9wdGlvbltdPihbXSlcbiAgY29uc3QgW2xvYWRpbmdBZ2VudHMsIHNldExvYWRpbmdBZ2VudHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZEFnZW50LCBzZXRTZWxlY3RlZEFnZW50XSA9IHVzZVN0YXRlPEFnZW50T3B0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2Ryb3Bkb3duT3Blbiwgc2V0RHJvcGRvd25PcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc3VibWl0Q291bnQsIHNldFN1Ym1pdENvdW50XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc0Zvcm1WYWxpZCwgc2V0SXNGb3JtVmFsaWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFttZW51T3BlbkZvcklkLCBzZXRNZW51T3BlbkZvcklkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtyb3V0aW5lVG9EZWxldGUsIHNldFJvdXRpbmVUb0RlbGV0ZV0gPSB1c2VTdGF0ZTxTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgY29uc3QgZmV0Y2hSb3V0aW5lcyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldE15U2NoZWR1bGVzKHsgbGltaXQ6IDEwMCwgb2Zmc2V0OiAwIH0pXG4gICAgICBzZXRSb3V0aW5lcyhyZXN1bHQuZGF0YSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHNpbGVudGx5IGZhaWxcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGZldGNoQWdlbnRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldExvYWRpbmdBZ2VudHModHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICBwYXRoOiAnYWdlbnRzP2FnZW50X3R5cGU9Y3VzdG9tJmxpbWl0PTEwMCZvZmZzZXQ9MCcsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9KVxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgY29uc3QgYWdlbnRMaXN0OiBBZ2VudE9wdGlvbltdID0gKGRhdGEuZGF0YSB8fCBbXSkubWFwKChhOiBhbnkpID0+ICh7XG4gICAgICAgIGlkOiBhLmlkLFxuICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgIGVtb2ppOiBhLmVtb2ppIHx8ICcnLFxuICAgICAgfSkpXG4gICAgICBzZXRBZ2VudHMoYWdlbnRMaXN0KVxuICAgICAgaWYgKGFnZW50TGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgc2V0U2VsZWN0ZWRBZ2VudChhZ2VudExpc3RbMF0pXG4gICAgICAgIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHNpbGVudGx5IGZhaWxcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZ0FnZW50cyhmYWxzZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hSb3V0aW5lcygpXG4gIH0sIFtmZXRjaFJvdXRpbmVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcGFuZWxPcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICBmZXRjaEFnZW50cygpXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbcGFuZWxPcGVuLCBmZXRjaEFnZW50c10pXG5cbiAgY29uc3Qgb3BlbkNyZWF0ZVBhbmVsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEVkaXRpbmdSb3V0aW5lKG51bGwpXG4gICAgc2V0VGVtcGxhdGVGb3JtKG51bGwpXG4gICAgc2V0U2VsZWN0ZWRBZ2VudChudWxsKVxuICAgIHNldElzRm9ybVZhbGlkKGZhbHNlKVxuICAgIHNldFN1Ym1pdENvdW50KDApXG4gICAgc2V0UGFuZWxPcGVuKHRydWUpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9wZW5EZXRhaWxQYW5lbCA9IHVzZUNhbGxiYWNrKChyb3V0aW5lOiBTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlKSA9PiB7XG4gICAgc2V0RWRpdGluZ1JvdXRpbmUocm91dGluZSlcbiAgICBzZXRUZW1wbGF0ZUZvcm0ocm91dGluZVRvRm9ybVN0YXRlKHJvdXRpbmUpKVxuICAgIHNldFNlbGVjdGVkQWdlbnQoXG4gICAgICByb3V0aW5lLmFnZW50X2V4dGVybmFsX2lkXG4gICAgICAgID8geyBpZDogcm91dGluZS5hZ2VudF9leHRlcm5hbF9pZCwgbmFtZTogcm91dGluZS5hZ2VudF9uYW1lID8/ICcnLCBlbW9qaTogcm91dGluZS5hZ2VudF9lbW9qaSA/PyAnJyB9XG4gICAgICAgIDogbnVsbFxuICAgIClcbiAgICBzZXRJc0Zvcm1WYWxpZChmYWxzZSlcbiAgICBzZXRTdWJtaXRDb3VudCgwKVxuICAgIHNldFBhbmVsT3Blbih0cnVlKVxuICB9LCBbXSlcblxuICBjb25zdCBjbG9zZVBhbmVsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFBhbmVsT3BlbihmYWxzZSlcbiAgICBzZXRFZGl0aW5nUm91dGluZShudWxsKVxuICAgIHNldFRlbXBsYXRlRm9ybShudWxsKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZHJvcGRvd25PcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IGNsb3NlSWZPdXRzaWRlID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghZHJvcGRvd25SZWYuY3VycmVudD8uY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUlmT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUlmT3V0c2lkZSlcbiAgfSwgW2Ryb3Bkb3duT3Blbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JJZCkgc2V0TWVudU9wZW5Gb3JJZChudWxsKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gIH0sIFttZW51T3BlbkZvcklkXSlcblxuICBjb25zdCBoYW5kbGVDcmVhdGVTdWNjZXNzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNsb3NlUGFuZWwoKVxuICAgIHNldFNlbGVjdGVkQWdlbnQobnVsbClcbiAgICBmZXRjaFJvdXRpbmVzKClcbiAgfSwgW2Nsb3NlUGFuZWwsIGZldGNoUm91dGluZXNdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZVNjaGVkdWxlKGNoYXQuaWQpXG4gICAgICAgIHNldFJvdXRpbmVUb0RlbGV0ZShudWxsKVxuICAgICAgICBmZXRjaFJvdXRpbmVzKClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBzaWxlbnRseSBmYWlsXG4gICAgICB9XG4gICAgfSxcbiAgICBbZmV0Y2hSb3V0aW5lc11cbiAgKVxuXG4gIGNvbnN0IGZyZXF1ZW5jeUxhYmVsID0gKHNjaGVkdWxlOiBTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlKSA9PiB7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgbWludXRlbHk6IHQoJ3RyaWdnZXJzU2VjdGlvbi5mcmVxdWVuY2llcy5taW51dGVseScpLFxuICAgICAgaG91cmx5OiB0KCd0cmlnZ2Vyc1NlY3Rpb24uZnJlcXVlbmNpZXMuaG91cmx5JyksXG4gICAgICBkYWlseTogdCgndHJpZ2dlcnNTZWN0aW9uLmZyZXF1ZW5jaWVzLmRhaWx5JyksXG4gICAgICB3ZWVrbHk6IHQoJ3RyaWdnZXJzU2VjdGlvbi5mcmVxdWVuY2llcy53ZWVrbHknKSxcbiAgICB9XG4gICAgcmV0dXJuIG1hcFtzY2hlZHVsZS5zY2hlZHVsZV90eXBlXSA/PyBzY2hlZHVsZS5zY2hlZHVsZV90eXBlXG4gIH1cblxuICBjb25zdCBzdGF0dXNMYWJlbCA9IChzdGF0dXM6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIGFjdGl2ZTogdCgndHJpZ2dlcnNTZWN0aW9uLnN0YXR1cy5hY3RpdmUnKSxcbiAgICAgIHBhdXNlZDogdCgndHJpZ2dlcnNTZWN0aW9uLnN0YXR1cy5wYXVzZWQnKSxcbiAgICAgIGRpc2FibGVkOiB0KCd0cmlnZ2Vyc1NlY3Rpb24uc3RhdHVzLmRpc2FibGVkJyksXG4gICAgfVxuICAgIHJldHVybiBtYXBbc3RhdHVzXSA/PyBzdGF0dXNcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGVkTGFiZWwgPSBzZWxlY3RlZEFnZW50XG4gICAgPyBgJHtzZWxlY3RlZEFnZW50LmVtb2ppID8gYCR7c2VsZWN0ZWRBZ2VudC5lbW9qaX0gYCA6ICcnfSR7c2VsZWN0ZWRBZ2VudC5uYW1lfWBcbiAgICA6IHQoJ3RyaWdnZXJzU2VjdGlvbi5zZWxlY3RBZ2VudCcpXG5cbiAgY29uc3QgZGVsZXRlTW9kYWxDaGF0ID0gcm91dGluZVRvRGVsZXRlXG4gICAgPyB7IHRpdGxlOiByb3V0aW5lVG9EZWxldGUubmFtZSB8fCB0KCd0cmlnZ2Vyc1NlY3Rpb24udW50aXRsZWRSb3V0aW5lJyksIGlkOiByb3V0aW5lVG9EZWxldGUuaWQgfVxuICAgIDogbnVsbFxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1yb290LWFjdGlvbnMnKSA/PyBkb2N1bWVudC5ib2R5XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNUkNvbnRhaW5lciAkaGFzSXRlbXM9eyEhcm91dGluZXMubGVuZ3RofT5cbiAgICAgIDxNQUlBSXNvbG9nbyAvPlxuXG4gICAgICA8U0NNUkJvZHkgJGNhbkNyZWF0ZT5cbiAgICAgICAge3JvdXRpbmVzLmxlbmd0aCA/IChcbiAgICAgICAgICA8U0NNUlRpdGxlV3JhcD5cbiAgICAgICAgICAgIDxTQ01SVGl0bGVJbm5lcj5cbiAgICAgICAgICAgICAgPFNDTVJUaXRsZT57dCgndHJpZ2dlcnNTZWN0aW9uLm15Um91dGluZXNUaXRsZScpfTwvU0NNUlRpdGxlPlxuICAgICAgICAgICAgICA8U0NNUlN1YnRpdGxlPnt0KCd0cmlnZ2Vyc1NlY3Rpb24ubXlSb3V0aW5lc1N1YnRpdGxlJyl9PC9TQ01SU3VidGl0bGU+XG4gICAgICAgICAgICA8L1NDTVJUaXRsZUlubmVyPlxuICAgICAgICAgICAgPFNDTVJBY3Rpb25zUm93PlxuICAgICAgICAgICAgICA8U0NNUkNyZWF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b3BlbkNyZWF0ZVBhbmVsfT5cbiAgICAgICAgICAgICAgICA8U0NNUkNyZWF0ZUJ1dHRvblRleHQ+e3QoJ3RyaWdnZXJzU2VjdGlvbi5uZXdSb3V0aW5lJyl9PC9TQ01SQ3JlYXRlQnV0dG9uVGV4dD5cbiAgICAgICAgICAgICAgPC9TQ01SQ3JlYXRlQnV0dG9uPlxuICAgICAgICAgICAgPC9TQ01SQWN0aW9uc1Jvdz5cbiAgICAgICAgICA8L1NDTVJUaXRsZVdyYXA+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgIDxTQ01STG9hZFdyYXBwZXI+XG4gICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgPC9TQ01STG9hZFdyYXBwZXI+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHshbG9hZGluZyAmJiByb3V0aW5lcy5sZW5ndGggPyAoXG4gICAgICAgICAgPFNDTVJDYXJkc091dGVyPlxuICAgICAgICAgICAgPFNDTVJDYXJkc1Jvdz5cbiAgICAgICAgICAgICAge3JvdXRpbmVzLm1hcChyb3V0aW5lID0+IChcbiAgICAgICAgICAgICAgICA8U0NNUkNhcmRCdXR0b24ga2V5PXtyb3V0aW5lLmlkfSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gb3BlbkRldGFpbFBhbmVsKHJvdXRpbmUpfT5cbiAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZFRpdGxlTmFtZT57cm91dGluZS5uYW1lIHx8IHQoJ3RyaWdnZXJzU2VjdGlvbi51bnRpdGxlZFJvdXRpbmUnKX08L1NDTVJDYXJkVGl0bGVOYW1lPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SS2ViYWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgndHJpZ2dlcnNTZWN0aW9uLmRlbGV0ZVJvdXRpbmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51T3BlbkZvcklkKHByZXYgPT4gKHByZXYgPT09IHJvdXRpbmUuaWQgPyBudWxsIDogcm91dGluZS5pZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51RG90cyBjb2xvcj1cIiM5OTlcIiB3aWR0aD17MTV9IGhlaWdodD17MTV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01SS2ViYWJCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkQ29udGVudFRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge3JvdXRpbmUuYWdlbnRfZW1vamkgfHwgcm91dGluZS5hZ2VudF9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke3JvdXRpbmUuYWdlbnRfZW1vamkgPyBgJHtyb3V0aW5lLmFnZW50X2Vtb2ppfSBgIDogJyd9JHtyb3V0aW5lLmFnZW50X25hbWUgPz8gJyd9YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01SQ2FyZENvbnRlbnRUZXh0PlxuICAgICAgICAgICAgICAgICAgICA8U0NNUkNhcmRGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkRnJlcXVlbmN5PntmcmVxdWVuY3lMYWJlbChyb3V0aW5lKX08L1NDTVJDYXJkRnJlcXVlbmN5PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SU3RhdHVzQmFkZ2UgJHN0YXR1cz17cm91dGluZS5zdGF0dXN9PntzdGF0dXNMYWJlbChyb3V0aW5lLnN0YXR1cyl9PC9TQ01SU3RhdHVzQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRGb290ZXI+XG4gICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkQm9keT5cbiAgICAgICAgICAgICAgICAgIHttZW51T3BlbkZvcklkID09PSByb3V0aW5lLmlkID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NNUkNhcmRNZW51XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkTWVudUl0ZW1zPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkTWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSb3V0aW5lVG9EZWxldGUocm91dGluZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51T3BlbkZvcklkKG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCd0cmlnZ2Vyc1NlY3Rpb24uZGVsZXRlUm91dGluZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01SQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRNZW51SXRlbXM+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRNZW51PlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ01SQ2FyZEJ1dHRvbj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NDTVJDYXJkc1Jvdz5cbiAgICAgICAgICA8L1NDTVJDYXJkc091dGVyPlxuICAgICAgICApIDogbnVsbH1cblxuICAgICAgICB7IWxvYWRpbmcgJiYgIXJvdXRpbmVzLmxlbmd0aCA/IChcbiAgICAgICAgICA8U0NNUkVtcHR5U3RhdGVSb290PlxuICAgICAgICAgICAgPFNDTVJFbXB0eVN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICA8U0NNUkVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgICAgICAgIDxTQ01SRW1wdHlTdGF0ZVRpdGxlPnt0KCd0cmlnZ2Vyc1NlY3Rpb24ubXlSb3V0aW5lc0VtcHR5VGl0bGUnKX08L1NDTVJFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDTVJFbXB0eVN0YXRlU3VidGl0bGU+e3QoJ3RyaWdnZXJzU2VjdGlvbi5teVJvdXRpbmVzRW1wdHlEZXNjcmlwdGlvbicpfTwvU0NNUkVtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9TQ01SRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgICA8L1NDTVJFbXB0eVN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgPFNDTVJFbXB0eVN0YXRlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtvcGVuQ3JlYXRlUGFuZWx9PlxuICAgICAgICAgICAgICB7dCgndHJpZ2dlcnNTZWN0aW9uLm5ld1JvdXRpbmUnKX1cbiAgICAgICAgICAgIDwvU0NNUkVtcHR5U3RhdGVCdXR0b24+XG4gICAgICAgICAgPC9TQ01SRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ01SQm9keT5cblxuICAgICAge3BhbmVsT3BlbiAmJlxuICAgICAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPEJhY2tkcm9wIG9uQ2xpY2s9e2Nsb3NlUGFuZWx9IHpJbmRleD17TUFJQV9TRUNUSU9OX01PREFMX1p9PlxuICAgICAgICAgICAgPFNDTVJNb2RhbFdyYXBwZXIgb25DbGljaz17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfT5cbiAgICAgICAgICAgICAgPFNDTVJNb2RhbEhlYWRlcj5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsVGl0bGU+XG4gICAgICAgICAgICAgICAgICB7ZWRpdGluZ1JvdXRpbmUgPyB0KCd0cmlnZ2Vyc1NlY3Rpb24ucm91dGluZURldGFpbCcpIDogdCgndHJpZ2dlcnNTZWN0aW9uLm5ld1JvdXRpbmUnKX1cbiAgICAgICAgICAgICAgICA8L1NDTVJNb2RhbFRpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ01STW9kYWxDbG9zZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD17dCgndHJpZ2dlcnNTZWN0aW9uLmJhY2snKX0gb25DbGljaz17Y2xvc2VQYW5lbH0+XG4gICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgIDwvU0NNUk1vZGFsQ2xvc2VCdXR0b24+XG4gICAgICAgICAgICAgIDwvU0NNUk1vZGFsSGVhZGVyPlxuICAgICAgICAgICAgICA8U0NNUk1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAgICA8U0NGaWVsZFdpdGhEcm9wZG93blo+XG4gICAgICAgICAgICAgICAgICB7dCgndHJpZ2dlcnNTZWN0aW9uLmFnZW50Jyl9XG4gICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yQ29udGFpbmVyIHJlZj17ZHJvcGRvd25SZWYgYXMgYW55fT5cbiAgICAgICAgICAgICAgICAgICAge2VkaXRpbmdSb3V0aW5lID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyIG9wZW49e2ZhbHNlfSB0eXBlPVwiYnV0dG9uXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c2VsZWN0ZWRMYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yVHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuPXtkcm9wZG93bk9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldERyb3Bkb3duT3BlbihwcmV2ID0+ICFwcmV2KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPntsb2FkaW5nQWdlbnRzID8gdCgndHJpZ2dlcnNTZWN0aW9uLmxvYWRpbmdBZ2VudHMnKSA6IHNlbGVjdGVkTGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gd2lkdGg9XCIxNHB4XCIgaGVpZ2h0PVwiMTRweFwiIGNvbG9yPXtkcm9wZG93bk9wZW4gPyB1LmFnZW50QWNjZW50IDogdS50ZXh0TXV0ZWR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDQWdlbnRTZWxlY3RvclRyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZHJvcGRvd25PcGVuICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDQWdlbnRTZWxlY3Rvckxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2xvYWRpbmdBZ2VudHMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yTG9hZGluZ1Jvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5sb2FkaW5nQWdlbnRzJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50cy5tYXAoYWdlbnQgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXthZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gYWdlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRBZ2VudChhZ2VudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FnZW50LmVtb2ppID8gYCR7YWdlbnQuZW1vaml9IGAgOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWdlbnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JPcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NBZ2VudFNlbGVjdG9yTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1NDQWdlbnRTZWxlY3RvckNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L1NDRmllbGRXaXRoRHJvcGRvd25aPlxuICAgICAgICAgICAgICAgIDxTQ01STW9kYWxCb2R5U2Nyb2xsPlxuICAgICAgICAgICAgICAgICAgPEFibVRyaWdnZXJzU2VjdGlvblxuICAgICAgICAgICAgICAgICAgICBhZ2VudEV4dGVybmFsSWQ9e3NlbGVjdGVkQWdlbnQ/LmlkID8/IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxGb3JtPXt0ZW1wbGF0ZUZvcm0gPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRDb3VudD17c3VibWl0Q291bnR9XG4gICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz17aGFuZGxlQ3JlYXRlU3VjY2Vzc31cbiAgICAgICAgICAgICAgICAgICAgb25WYWxpZGl0eUNoYW5nZT17c2V0SXNGb3JtVmFsaWR9XG4gICAgICAgICAgICAgICAgICAgIHN0YW5kYWxvbmVDcmVhdGVPbmx5XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU0NNUk1vZGFsQm9keVNjcm9sbD5cbiAgICAgICAgICAgICAgPC9TQ01STW9kYWxDb250ZW50PlxuICAgICAgICAgICAgICA8U0NNUk1vZGFsRm9vdGVyPlxuICAgICAgICAgICAgICAgIDxTQ01STW9kYWxDYW5jZWxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2Nsb3NlUGFuZWx9PlxuICAgICAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5iYWNrJyl9XG4gICAgICAgICAgICAgICAgPC9TQ01STW9kYWxDYW5jZWxCdXR0b24+XG4gICAgICAgICAgICAgICAgeyFlZGl0aW5nUm91dGluZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8U0NNUk1vZGFsU2F2ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc0Zvcm1WYWxpZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U3VibWl0Q291bnQocHJldiA9PiBwcmV2ICsgMSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KCd0cmlnZ2Vyc1NlY3Rpb24uc2F2ZScpfVxuICAgICAgICAgICAgICAgICAgPC9TQ01STW9kYWxTYXZlQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NNUk1vZGFsRm9vdGVyPlxuICAgICAgICAgICAgPC9TQ01STW9kYWxXcmFwcGVyPlxuICAgICAgICAgIDwvQmFja2Ryb3A+LFxuICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICApfVxuXG4gICAgICB7ZGVsZXRlTW9kYWxDaGF0ID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIGFjdGlvbj1cInJvdXRpbmVcIlxuICAgICAgICAgIGNoYXQ9e2RlbGV0ZU1vZGFsQ2hhdH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRSb3V0aW5lVG9EZWxldGUobnVsbCl9XG4gICAgICAgICAgaGFuZGxlcnM9e3sgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSB9fVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9TQ01SQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBQ0EsT0FBT0EsUUFBUSxNQUFNLFdBQVc7QUFDaEMsU0FBU0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxXQUFXLFFBQVEsOENBQThDO0FBQzFFLFNBQVNDLEtBQUssUUFB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
|