@projectcor/maia-components 2.11.58 → 2.11.59-1
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 +4 -2
- package/lib/components/atoms/icons/RocketIcon.js +31 -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 +3 -1
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +510 -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 +448 -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/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 +247 -50
- 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 +16 -2
- 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/useMentionAllowedTypes.js +38 -6
- package/lib/lang/br/index.js +294 -1
- package/lib/lang/en/index.js +294 -1
- package/lib/lang/es/index.js +294 -1
- package/lib/lang/fr/index.js +296 -2
- 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/skill.js +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,448 @@
|
|
|
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 } from "react/jsx-runtime";
|
|
22
|
+
export var ChatAIMyRoutines = function ChatAIMyRoutines() {
|
|
23
|
+
var _document$getElementB, _selectedAgent$id;
|
|
24
|
+
var _useTranslation = useTranslation('abm_agent_section'),
|
|
25
|
+
t = _useTranslation.t;
|
|
26
|
+
var _useState = useState([]),
|
|
27
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
28
|
+
routines = _useState2[0],
|
|
29
|
+
setRoutines = _useState2[1];
|
|
30
|
+
var _useState3 = useState(false),
|
|
31
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
32
|
+
loading = _useState4[0],
|
|
33
|
+
setLoading = _useState4[1];
|
|
34
|
+
var _useState5 = useState(false),
|
|
35
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
36
|
+
showCreatePanel = _useState6[0],
|
|
37
|
+
setShowCreatePanel = _useState6[1];
|
|
38
|
+
var _useState7 = useState(null),
|
|
39
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
40
|
+
templateForm = _useState8[0],
|
|
41
|
+
setTemplateForm = _useState8[1];
|
|
42
|
+
var _useState9 = useState([]),
|
|
43
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
44
|
+
agents = _useState0[0],
|
|
45
|
+
setAgents = _useState0[1];
|
|
46
|
+
var _useState1 = useState(false),
|
|
47
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
48
|
+
loadingAgents = _useState10[0],
|
|
49
|
+
setLoadingAgents = _useState10[1];
|
|
50
|
+
var _useState11 = useState(null),
|
|
51
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
52
|
+
selectedAgent = _useState12[0],
|
|
53
|
+
setSelectedAgent = _useState12[1];
|
|
54
|
+
var _useState13 = useState(false),
|
|
55
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
56
|
+
dropdownOpen = _useState14[0],
|
|
57
|
+
setDropdownOpen = _useState14[1];
|
|
58
|
+
var _useState15 = useState(0),
|
|
59
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
60
|
+
submitCount = _useState16[0],
|
|
61
|
+
setSubmitCount = _useState16[1];
|
|
62
|
+
var _useState17 = useState(false),
|
|
63
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
64
|
+
isFormValid = _useState18[0],
|
|
65
|
+
setIsFormValid = _useState18[1];
|
|
66
|
+
var _useState19 = useState(null),
|
|
67
|
+
_useState20 = _slicedToArray(_useState19, 2),
|
|
68
|
+
menuOpenForId = _useState20[0],
|
|
69
|
+
setMenuOpenForId = _useState20[1];
|
|
70
|
+
var _useState21 = useState(null),
|
|
71
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
72
|
+
routineToDelete = _useState22[0],
|
|
73
|
+
setRoutineToDelete = _useState22[1];
|
|
74
|
+
var dropdownRef = useRef(null);
|
|
75
|
+
var fetchRoutines = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
76
|
+
var result, _t;
|
|
77
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
78
|
+
while (1) switch (_context.prev = _context.next) {
|
|
79
|
+
case 0:
|
|
80
|
+
setLoading(true);
|
|
81
|
+
_context.prev = 1;
|
|
82
|
+
_context.next = 2;
|
|
83
|
+
return getMySchedules({
|
|
84
|
+
limit: 100,
|
|
85
|
+
offset: 0
|
|
86
|
+
});
|
|
87
|
+
case 2:
|
|
88
|
+
result = _context.sent;
|
|
89
|
+
setRoutines(result.data);
|
|
90
|
+
_context.next = 4;
|
|
91
|
+
break;
|
|
92
|
+
case 3:
|
|
93
|
+
_context.prev = 3;
|
|
94
|
+
_t = _context["catch"](1);
|
|
95
|
+
case 4:
|
|
96
|
+
_context.prev = 4;
|
|
97
|
+
setLoading(false);
|
|
98
|
+
return _context.finish(4);
|
|
99
|
+
case 5:
|
|
100
|
+
case "end":
|
|
101
|
+
return _context.stop();
|
|
102
|
+
}
|
|
103
|
+
}, _callee, null, [[1, 3, 4, 5]]);
|
|
104
|
+
})), []);
|
|
105
|
+
var fetchAgents = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
106
|
+
var response, data, agentList, _t2;
|
|
107
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
108
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
109
|
+
case 0:
|
|
110
|
+
setLoadingAgents(true);
|
|
111
|
+
_context2.prev = 1;
|
|
112
|
+
_context2.next = 2;
|
|
113
|
+
return fetchMaia({
|
|
114
|
+
path: 'agents?agent_type=custom&limit=100&offset=0',
|
|
115
|
+
method: 'GET'
|
|
116
|
+
});
|
|
117
|
+
case 2:
|
|
118
|
+
response = _context2.sent;
|
|
119
|
+
_context2.next = 3;
|
|
120
|
+
return response.json();
|
|
121
|
+
case 3:
|
|
122
|
+
data = _context2.sent;
|
|
123
|
+
agentList = (data.data || []).map(function (a) {
|
|
124
|
+
return {
|
|
125
|
+
id: a.id,
|
|
126
|
+
name: a.name,
|
|
127
|
+
emoji: a.emoji || ''
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
setAgents(agentList);
|
|
131
|
+
if (agentList.length === 1) {
|
|
132
|
+
setSelectedAgent(agentList[0]);
|
|
133
|
+
setDropdownOpen(false);
|
|
134
|
+
}
|
|
135
|
+
_context2.next = 5;
|
|
136
|
+
break;
|
|
137
|
+
case 4:
|
|
138
|
+
_context2.prev = 4;
|
|
139
|
+
_t2 = _context2["catch"](1);
|
|
140
|
+
case 5:
|
|
141
|
+
_context2.prev = 5;
|
|
142
|
+
setLoadingAgents(false);
|
|
143
|
+
return _context2.finish(5);
|
|
144
|
+
case 6:
|
|
145
|
+
case "end":
|
|
146
|
+
return _context2.stop();
|
|
147
|
+
}
|
|
148
|
+
}, _callee2, null, [[1, 4, 5, 6]]);
|
|
149
|
+
})), []);
|
|
150
|
+
useEffect(function () {
|
|
151
|
+
fetchRoutines();
|
|
152
|
+
}, [fetchRoutines]);
|
|
153
|
+
useEffect(function () {
|
|
154
|
+
if (!showCreatePanel) {
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
setDropdownOpen(false);
|
|
158
|
+
fetchAgents();
|
|
159
|
+
return undefined;
|
|
160
|
+
}, [showCreatePanel, fetchAgents]);
|
|
161
|
+
useEffect(function () {
|
|
162
|
+
if (!dropdownOpen) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
var closeIfOutside = function closeIfOutside(e) {
|
|
166
|
+
var _dropdownRef$current;
|
|
167
|
+
if (!((_dropdownRef$current = dropdownRef.current) !== null && _dropdownRef$current !== void 0 && _dropdownRef$current.contains(e.target))) setDropdownOpen(false);
|
|
168
|
+
};
|
|
169
|
+
document.addEventListener('click', closeIfOutside);
|
|
170
|
+
return function () {
|
|
171
|
+
return document.removeEventListener('click', closeIfOutside);
|
|
172
|
+
};
|
|
173
|
+
}, [dropdownOpen]);
|
|
174
|
+
useEffect(function () {
|
|
175
|
+
var handleClickOutside = function handleClickOutside() {
|
|
176
|
+
if (menuOpenForId) setMenuOpenForId(null);
|
|
177
|
+
};
|
|
178
|
+
document.addEventListener('click', handleClickOutside);
|
|
179
|
+
return function () {
|
|
180
|
+
return document.removeEventListener('click', handleClickOutside);
|
|
181
|
+
};
|
|
182
|
+
}, [menuOpenForId]);
|
|
183
|
+
var handleCreateSuccess = useCallback(function () {
|
|
184
|
+
setSubmitCount(0);
|
|
185
|
+
setShowCreatePanel(false);
|
|
186
|
+
setSelectedAgent(null);
|
|
187
|
+
setTemplateForm(null);
|
|
188
|
+
setIsFormValid(false);
|
|
189
|
+
fetchRoutines();
|
|
190
|
+
}, [fetchRoutines]);
|
|
191
|
+
var handleConfirmDelete = useCallback(/*#__PURE__*/function () {
|
|
192
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(chat) {
|
|
193
|
+
var _t3;
|
|
194
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
195
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
196
|
+
case 0:
|
|
197
|
+
_context3.prev = 0;
|
|
198
|
+
_context3.next = 1;
|
|
199
|
+
return deleteSchedule(chat.id);
|
|
200
|
+
case 1:
|
|
201
|
+
setRoutineToDelete(null);
|
|
202
|
+
fetchRoutines();
|
|
203
|
+
_context3.next = 3;
|
|
204
|
+
break;
|
|
205
|
+
case 2:
|
|
206
|
+
_context3.prev = 2;
|
|
207
|
+
_t3 = _context3["catch"](0);
|
|
208
|
+
case 3:
|
|
209
|
+
case "end":
|
|
210
|
+
return _context3.stop();
|
|
211
|
+
}
|
|
212
|
+
}, _callee3, null, [[0, 2]]);
|
|
213
|
+
}));
|
|
214
|
+
return function (_x) {
|
|
215
|
+
return _ref3.apply(this, arguments);
|
|
216
|
+
};
|
|
217
|
+
}(), [fetchRoutines]);
|
|
218
|
+
var frequencyLabel = function frequencyLabel(schedule) {
|
|
219
|
+
var _map$schedule$schedul;
|
|
220
|
+
var map = {
|
|
221
|
+
minutely: t('triggersSection.frequencies.minutely'),
|
|
222
|
+
hourly: t('triggersSection.frequencies.hourly'),
|
|
223
|
+
daily: t('triggersSection.frequencies.daily'),
|
|
224
|
+
weekly: t('triggersSection.frequencies.weekly')
|
|
225
|
+
};
|
|
226
|
+
return (_map$schedule$schedul = map[schedule.schedule_type]) !== null && _map$schedule$schedul !== void 0 ? _map$schedule$schedul : schedule.schedule_type;
|
|
227
|
+
};
|
|
228
|
+
var statusLabel = function statusLabel(status) {
|
|
229
|
+
var _map$status;
|
|
230
|
+
var map = {
|
|
231
|
+
active: t('triggersSection.status.active'),
|
|
232
|
+
paused: t('triggersSection.status.paused'),
|
|
233
|
+
disabled: t('triggersSection.status.disabled')
|
|
234
|
+
};
|
|
235
|
+
return (_map$status = map[status]) !== null && _map$status !== void 0 ? _map$status : status;
|
|
236
|
+
};
|
|
237
|
+
var selectedLabel = selectedAgent ? "".concat(selectedAgent.emoji ? "".concat(selectedAgent.emoji, " ") : '').concat(selectedAgent.name) : t('triggersSection.selectAgent');
|
|
238
|
+
var deleteModalChat = routineToDelete ? {
|
|
239
|
+
title: routineToDelete.name || t('triggersSection.untitledRoutine'),
|
|
240
|
+
id: routineToDelete.id
|
|
241
|
+
} : null;
|
|
242
|
+
var container = (_document$getElementB = document.getElementById('modal-root-actions')) !== null && _document$getElementB !== void 0 ? _document$getElementB : document.body;
|
|
243
|
+
return /*#__PURE__*/_jsxs(SCMRContainer, {
|
|
244
|
+
$hasItems: !!routines.length,
|
|
245
|
+
children: [/*#__PURE__*/_jsx(MAIAIsologo, {}), /*#__PURE__*/_jsxs(SCMRBody, {
|
|
246
|
+
$canCreate: true,
|
|
247
|
+
children: [routines.length ? /*#__PURE__*/_jsxs(SCMRTitleWrap, {
|
|
248
|
+
children: [/*#__PURE__*/_jsxs(SCMRTitleInner, {
|
|
249
|
+
children: [/*#__PURE__*/_jsx(SCMRTitle, {
|
|
250
|
+
children: t('triggersSection.myRoutinesTitle')
|
|
251
|
+
}), /*#__PURE__*/_jsx(SCMRSubtitle, {
|
|
252
|
+
children: t('triggersSection.myRoutinesSubtitle')
|
|
253
|
+
})]
|
|
254
|
+
}), /*#__PURE__*/_jsx(SCMRActionsRow, {
|
|
255
|
+
children: /*#__PURE__*/_jsx(SCMRCreateButton, {
|
|
256
|
+
type: "button",
|
|
257
|
+
onClick: function onClick() {
|
|
258
|
+
return setShowCreatePanel(true);
|
|
259
|
+
},
|
|
260
|
+
children: /*#__PURE__*/_jsx(SCMRCreateButtonText, {
|
|
261
|
+
children: t('triggersSection.newRoutine')
|
|
262
|
+
})
|
|
263
|
+
})
|
|
264
|
+
})]
|
|
265
|
+
}) : null, loading ? /*#__PURE__*/_jsx(SCMRLoadWrapper, {
|
|
266
|
+
children: /*#__PURE__*/_jsx(Loader, {
|
|
267
|
+
size: "small"
|
|
268
|
+
})
|
|
269
|
+
}) : null, !loading && routines.length ? /*#__PURE__*/_jsx(SCMRCardsOuter, {
|
|
270
|
+
children: /*#__PURE__*/_jsx(SCMRCardsRow, {
|
|
271
|
+
children: routines.map(function (routine) {
|
|
272
|
+
var _routine$agent_name;
|
|
273
|
+
return /*#__PURE__*/_jsxs(SCMRCardButton, {
|
|
274
|
+
type: "button",
|
|
275
|
+
children: [/*#__PURE__*/_jsx(SCMRCardHeader, {
|
|
276
|
+
children: /*#__PURE__*/_jsxs(SCMRCardTopRow, {
|
|
277
|
+
children: [/*#__PURE__*/_jsx(SCMRCardTitleName, {
|
|
278
|
+
children: routine.name || t('triggersSection.untitledRoutine')
|
|
279
|
+
}), /*#__PURE__*/_jsx(SCMRKebabButton, {
|
|
280
|
+
type: "button",
|
|
281
|
+
"aria-label": t('triggersSection.deleteRoutine'),
|
|
282
|
+
onClick: function onClick(event) {
|
|
283
|
+
event.preventDefault();
|
|
284
|
+
event.stopPropagation();
|
|
285
|
+
setMenuOpenForId(function (prev) {
|
|
286
|
+
return prev === routine.id ? null : routine.id;
|
|
287
|
+
});
|
|
288
|
+
},
|
|
289
|
+
children: /*#__PURE__*/_jsx(MenuDots, {
|
|
290
|
+
color: "#999",
|
|
291
|
+
width: 15,
|
|
292
|
+
height: 15
|
|
293
|
+
})
|
|
294
|
+
})]
|
|
295
|
+
})
|
|
296
|
+
}), /*#__PURE__*/_jsxs(SCMRCardBody, {
|
|
297
|
+
children: [/*#__PURE__*/_jsx(SCMRCardContentText, {
|
|
298
|
+
children: routine.agent_emoji || routine.agent_name ? "".concat(routine.agent_emoji ? "".concat(routine.agent_emoji, " ") : '').concat((_routine$agent_name = routine.agent_name) !== null && _routine$agent_name !== void 0 ? _routine$agent_name : '') : ''
|
|
299
|
+
}), /*#__PURE__*/_jsxs(SCMRCardFooter, {
|
|
300
|
+
children: [/*#__PURE__*/_jsx(SCMRCardFrequency, {
|
|
301
|
+
children: frequencyLabel(routine)
|
|
302
|
+
}), /*#__PURE__*/_jsx(SCMRStatusBadge, {
|
|
303
|
+
$status: routine.status,
|
|
304
|
+
children: statusLabel(routine.status)
|
|
305
|
+
})]
|
|
306
|
+
})]
|
|
307
|
+
}), menuOpenForId === routine.id ? /*#__PURE__*/_jsx(SCMRCardMenu, {
|
|
308
|
+
onClick: function onClick(event) {
|
|
309
|
+
event.preventDefault();
|
|
310
|
+
event.stopPropagation();
|
|
311
|
+
},
|
|
312
|
+
children: /*#__PURE__*/_jsx(SCMRCardMenuItems, {
|
|
313
|
+
children: /*#__PURE__*/_jsx(SCMRCardMenuItem, {
|
|
314
|
+
type: "button",
|
|
315
|
+
onClick: function onClick() {
|
|
316
|
+
setRoutineToDelete(routine);
|
|
317
|
+
setMenuOpenForId(null);
|
|
318
|
+
},
|
|
319
|
+
children: t('triggersSection.deleteRoutine')
|
|
320
|
+
})
|
|
321
|
+
})
|
|
322
|
+
}) : null]
|
|
323
|
+
}, routine.id);
|
|
324
|
+
})
|
|
325
|
+
})
|
|
326
|
+
}) : null, !loading && !routines.length ? /*#__PURE__*/_jsxs(SCMREmptyStateRoot, {
|
|
327
|
+
children: [/*#__PURE__*/_jsx(SCMREmptyStateColumn, {
|
|
328
|
+
children: /*#__PURE__*/_jsxs(SCMREmptyStateTitleBlock, {
|
|
329
|
+
children: [/*#__PURE__*/_jsx(SCMREmptyStateTitle, {
|
|
330
|
+
children: t('triggersSection.myRoutinesEmptyTitle')
|
|
331
|
+
}), /*#__PURE__*/_jsx(SCMREmptyStateSubtitle, {
|
|
332
|
+
children: t('triggersSection.myRoutinesEmptyDescription')
|
|
333
|
+
})]
|
|
334
|
+
})
|
|
335
|
+
}), /*#__PURE__*/_jsx(SCMREmptyStateButton, {
|
|
336
|
+
type: "button",
|
|
337
|
+
onClick: function onClick() {
|
|
338
|
+
return setShowCreatePanel(true);
|
|
339
|
+
},
|
|
340
|
+
children: t('triggersSection.newRoutine')
|
|
341
|
+
})]
|
|
342
|
+
}) : null]
|
|
343
|
+
}), showCreatePanel && /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(Backdrop, {
|
|
344
|
+
onClick: function onClick() {
|
|
345
|
+
setShowCreatePanel(false);
|
|
346
|
+
setTemplateForm(null);
|
|
347
|
+
},
|
|
348
|
+
zIndex: MAIA_SECTION_MODAL_Z,
|
|
349
|
+
children: /*#__PURE__*/_jsxs(SCMRModalWrapper, {
|
|
350
|
+
onClick: function onClick(e) {
|
|
351
|
+
return e.stopPropagation();
|
|
352
|
+
},
|
|
353
|
+
children: [/*#__PURE__*/_jsxs(SCMRModalHeader, {
|
|
354
|
+
children: [/*#__PURE__*/_jsx(SCMRModalTitle, {
|
|
355
|
+
children: t('triggersSection.newRoutine')
|
|
356
|
+
}), /*#__PURE__*/_jsx(SCMRModalCloseButton, {
|
|
357
|
+
type: "button",
|
|
358
|
+
"aria-label": t('triggersSection.back'),
|
|
359
|
+
onClick: function onClick() {
|
|
360
|
+
setShowCreatePanel(false);
|
|
361
|
+
setTemplateForm(null);
|
|
362
|
+
},
|
|
363
|
+
children: /*#__PURE__*/_jsx(Cross, {
|
|
364
|
+
color: "#a6a6a6",
|
|
365
|
+
width: 18,
|
|
366
|
+
height: 18
|
|
367
|
+
})
|
|
368
|
+
})]
|
|
369
|
+
}), /*#__PURE__*/_jsxs(SCMRModalContent, {
|
|
370
|
+
children: [/*#__PURE__*/_jsxs(SCFieldWithDropdownZ, {
|
|
371
|
+
children: [t('triggersSection.agent'), /*#__PURE__*/_jsxs(SCAgentSelectorContainer, {
|
|
372
|
+
ref: dropdownRef,
|
|
373
|
+
children: [/*#__PURE__*/_jsxs(SCAgentSelectorTrigger, {
|
|
374
|
+
open: dropdownOpen,
|
|
375
|
+
onClick: function onClick() {
|
|
376
|
+
return setDropdownOpen(function (prev) {
|
|
377
|
+
return !prev;
|
|
378
|
+
});
|
|
379
|
+
},
|
|
380
|
+
type: "button",
|
|
381
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
382
|
+
children: loadingAgents ? t('triggersSection.loadingAgents') : selectedLabel
|
|
383
|
+
}), /*#__PURE__*/_jsx(ChevronDown, {
|
|
384
|
+
width: "14px",
|
|
385
|
+
height: "14px",
|
|
386
|
+
color: dropdownOpen ? u.agentAccent : u.textMuted
|
|
387
|
+
})]
|
|
388
|
+
}), dropdownOpen && /*#__PURE__*/_jsx(SCAgentSelectorList, {
|
|
389
|
+
children: loadingAgents ? /*#__PURE__*/_jsx(SCAgentSelectorLoadingRow, {
|
|
390
|
+
children: t('triggersSection.loadingAgents')
|
|
391
|
+
}) : agents.map(function (agent) {
|
|
392
|
+
return /*#__PURE__*/_jsxs(SCAgentSelectorOption, {
|
|
393
|
+
isSelected: (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) === agent.id,
|
|
394
|
+
onMouseDown: function onMouseDown(e) {
|
|
395
|
+
e.stopPropagation();
|
|
396
|
+
},
|
|
397
|
+
onClick: function onClick() {
|
|
398
|
+
setSelectedAgent(agent);
|
|
399
|
+
setDropdownOpen(false);
|
|
400
|
+
},
|
|
401
|
+
children: [agent.emoji ? "".concat(agent.emoji, " ") : '', agent.name]
|
|
402
|
+
}, agent.id);
|
|
403
|
+
})
|
|
404
|
+
})]
|
|
405
|
+
})]
|
|
406
|
+
}), /*#__PURE__*/_jsx(SCMRModalBodyScroll, {
|
|
407
|
+
children: /*#__PURE__*/_jsx(AbmTriggersSection, {
|
|
408
|
+
agentExternalId: (_selectedAgent$id = selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) !== null && _selectedAgent$id !== void 0 ? _selectedAgent$id : null,
|
|
409
|
+
initialForm: templateForm !== null && templateForm !== void 0 ? templateForm : undefined,
|
|
410
|
+
submitCount: submitCount,
|
|
411
|
+
onSuccess: handleCreateSuccess,
|
|
412
|
+
onValidityChange: setIsFormValid,
|
|
413
|
+
standaloneCreateOnly: true
|
|
414
|
+
})
|
|
415
|
+
})]
|
|
416
|
+
}), /*#__PURE__*/_jsxs(SCMRModalFooter, {
|
|
417
|
+
children: [/*#__PURE__*/_jsx(SCMRModalCancelButton, {
|
|
418
|
+
type: "button",
|
|
419
|
+
onClick: function onClick() {
|
|
420
|
+
setShowCreatePanel(false);
|
|
421
|
+
setTemplateForm(null);
|
|
422
|
+
},
|
|
423
|
+
children: t('triggersSection.back')
|
|
424
|
+
}), /*#__PURE__*/_jsx(SCMRModalSaveButton, {
|
|
425
|
+
type: "button",
|
|
426
|
+
disabled: !isFormValid,
|
|
427
|
+
onClick: function onClick() {
|
|
428
|
+
return setSubmitCount(function (prev) {
|
|
429
|
+
return prev + 1;
|
|
430
|
+
});
|
|
431
|
+
},
|
|
432
|
+
children: t('triggersSection.save')
|
|
433
|
+
})]
|
|
434
|
+
})]
|
|
435
|
+
})
|
|
436
|
+
}), container), deleteModalChat ? /*#__PURE__*/_jsx(DeleteQuestionModal, {
|
|
437
|
+
action: "routine",
|
|
438
|
+
chat: deleteModalChat,
|
|
439
|
+
onClose: function onClose() {
|
|
440
|
+
return setRoutineToDelete(null);
|
|
441
|
+
},
|
|
442
|
+
handlers: {
|
|
443
|
+
handleConfirmAction: handleConfirmDelete
|
|
444
|
+
}
|
|
445
|
+
}) : null]
|
|
446
|
+
});
|
|
447
|
+
};
|
|
448
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdERPTSIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VUcmFuc2xhdGlvbiIsIk1lbnVEb3RzIiwiQ2hldnJvbkRvd24iLCJDcm9zcyIsIkFibVRyaWdnZXJzU2VjdGlvbiIsIkJhY2tkcm9wIiwiZmV0Y2hNYWlhIiwiZ2V0TXlTY2hlZHVsZXMiLCJkZWxldGVTY2hlZHVsZSIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJNQUlBSXNvbG9nbyIsIkxvYWRlciIsIm1haWFTZWN0aW9uVWkiLCJ1IiwiU0NBZ2VudFNlbGVjdG9yQ29udGFpbmVyIiwiU0NBZ2VudFNlbGVjdG9yTGlzdCIsIlNDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3ciLCJTQ0FnZW50U2VsZWN0b3JPcHRpb24iLCJTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyIiwiTUFJQV9TRUNUSU9OX01PREFMX1oiLCJTQ0ZpZWxkV2l0aERyb3Bkb3duWiIsIlNDTVJBY3Rpb25zUm93IiwiU0NNUkJvZHkiLCJTQ01SQ2FyZEJvZHkiLCJTQ01SQ2FyZEJ1dHRvbiIsIlNDTVJDYXJkQ29udGVudFRleHQiLCJTQ01SQ2FyZEZvb3RlciIsIlNDTVJDYXJkRnJlcXVlbmN5IiwiU0NNUkNhcmRIZWFkZXIiLCJTQ01SQ2FyZE1lbnUiLCJTQ01SQ2FyZE1lbnVJdGVtIiwiU0NNUkNhcmRNZW51SXRlbXMiLCJTQ01SQ2FyZFRpdGxlTmFtZSIsIlNDTVJDYXJkVG9wUm93IiwiU0NNUkNhcmRzT3V0ZXIiLCJTQ01SQ2FyZHNSb3ciLCJTQ01SQ29udGFpbmVyIiwiU0NNUkNyZWF0ZUJ1dHRvbiIsIlNDTVJDcmVhdGVCdXR0b25UZXh0IiwiU0NNUkVtcHR5U3RhdGVCdXR0b24iLCJTQ01SRW1wdHlTdGF0ZUNvbHVtbiIsIlNDTVJFbXB0eVN0YXRlUm9vdCIsIlNDTVJFbXB0eVN0YXRlU3VidGl0bGUiLCJTQ01SRW1wdHlTdGF0ZVRpdGxlQmxvY2siLCJTQ01SRW1wdHlTdGF0ZVRpdGxlIiwiU0NNUktlYmFiQnV0dG9uIiwiU0NNUkxvYWRXcmFwcGVyIiwiU0NNUk1vZGFsQm9keVNjcm9sbCIsIlNDTVJNb2RhbENhbmNlbEJ1dHRvbiIsIlNDTVJNb2RhbENsb3NlQnV0dG9uIiwiU0NNUk1vZGFsQ29udGVudCIsIlNDTVJNb2RhbEZvb3RlciIsIlNDTVJNb2RhbEhlYWRlciIsIlNDTVJNb2RhbFNhdmVCdXR0b24iLCJTQ01STW9kYWxUaXRsZSIsIlNDTVJNb2RhbFdyYXBwZXIiLCJTQ01SU3RhdHVzQmFkZ2UiLCJTQ01SU3VidGl0bGUiLCJTQ01SVGl0bGUiLCJTQ01SVGl0bGVJbm5lciIsIlNDTVJUaXRsZVdyYXAiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQ2hhdEFJTXlSb3V0aW5lcyIsIl9kb2N1bWVudCRnZXRFbGVtZW50QiIsIl9zZWxlY3RlZEFnZW50JGlkIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInJvdXRpbmVzIiwic2V0Um91dGluZXMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93Q3JlYXRlUGFuZWwiLCJzZXRTaG93Q3JlYXRlUGFuZWwiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInRlbXBsYXRlRm9ybSIsInNldFRlbXBsYXRlRm9ybSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiYWdlbnRzIiwic2V0QWdlbnRzIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwibG9hZGluZ0FnZW50cyIsInNldExvYWRpbmdBZ2VudHMiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwic2VsZWN0ZWRBZ2VudCIsInNldFNlbGVjdGVkQWdlbnQiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiZHJvcGRvd25PcGVuIiwic2V0RHJvcGRvd25PcGVuIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsInN1Ym1pdENvdW50Iiwic2V0U3VibWl0Q291bnQiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaXNGb3JtVmFsaWQiLCJzZXRJc0Zvcm1WYWxpZCIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJtZW51T3BlbkZvcklkIiwic2V0TWVudU9wZW5Gb3JJZCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJyb3V0aW5lVG9EZWxldGUiLCJzZXRSb3V0aW5lVG9EZWxldGUiLCJkcm9wZG93blJlZiIsImZldGNoUm91dGluZXMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3VsdCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJsaW1pdCIsIm9mZnNldCIsInNlbnQiLCJkYXRhIiwiZmluaXNoIiwic3RvcCIsImZldGNoQWdlbnRzIiwiX2NhbGxlZTIiLCJyZXNwb25zZSIsImFnZW50TGlzdCIsIl90MiIsIl9jb250ZXh0MiIsInBhdGgiLCJtZXRob2QiLCJqc29uIiwibWFwIiwiYSIsImlkIiwibmFtZSIsImVtb2ppIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2xvc2VJZk91dHNpZGUiLCJlIiwiX2Ryb3Bkb3duUmVmJGN1cnJlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiaGFuZGxlQ3JlYXRlU3VjY2VzcyIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmMyIsIl9jYWxsZWUzIiwiY2hhdCIsIl90MyIsIl9jb250ZXh0MyIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJmcmVxdWVuY3lMYWJlbCIsInNjaGVkdWxlIiwiX21hcCRzY2hlZHVsZSRzY2hlZHVsIiwibWludXRlbHkiLCJob3VybHkiLCJkYWlseSIsIndlZWtseSIsInNjaGVkdWxlX3R5cGUiLCJzdGF0dXNMYWJlbCIsInN0YXR1cyIsIl9tYXAkc3RhdHVzIiwiYWN0aXZlIiwicGF1c2VkIiwiZGlzYWJsZWQiLCJzZWxlY3RlZExhYmVsIiwiY29uY2F0IiwiZGVsZXRlTW9kYWxDaGF0IiwidGl0bGUiLCJjb250YWluZXIiLCJnZXRFbGVtZW50QnlJZCIsImJvZHkiLCIkaGFzSXRlbXMiLCJjaGlsZHJlbiIsIiRjYW5DcmVhdGUiLCJ0eXBlIiwib25DbGljayIsInNpemUiLCJyb3V0aW5lIiwiX3JvdXRpbmUkYWdlbnRfbmFtZSIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwiYWdlbnRfZW1vamkiLCJhZ2VudF9uYW1lIiwiJHN0YXR1cyIsImNyZWF0ZVBvcnRhbCIsInpJbmRleCIsInJlZiIsIm9wZW4iLCJhZ2VudEFjY2VudCIsInRleHRNdXRlZCIsImFnZW50IiwiaXNTZWxlY3RlZCIsIm9uTW91c2VEb3duIiwiYWdlbnRFeHRlcm5hbElkIiwiaW5pdGlhbEZvcm0iLCJvblN1Y2Nlc3MiLCJvblZhbGlkaXR5Q2hhbmdlIiwic3RhbmRhbG9uZUNyZWF0ZU9ubHkiLCJhY3Rpb24iLCJvbkNsb3NlIiwiaGFuZGxlcnMiLCJoYW5kbGVDb25maXJtQWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU15Um91dGluZXMvQ2hhdEFJTXlSb3V0aW5lcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zcydcbmltcG9ydCB7IEFibVRyaWdnZXJzU2VjdGlvbiB9IGZyb20gJy4uL0FibVNlY3Rpb24vQWJtVHJpZ2dlcnNTZWN0aW9uL0FibVRyaWdnZXJzU2VjdGlvbidcbmltcG9ydCB0eXBlIHsgVHJpZ2dlckZvcm1TdGF0ZSB9IGZyb20gJy4uL0FibVNlY3Rpb24vQWJtVHJpZ2dlcnNTZWN0aW9uL0FibVRyaWdnZXJzU2VjdGlvbi5pbnRlcmZhY2UnXG5pbXBvcnQgeyBCYWNrZHJvcCB9IGZyb20gJy4uLy4uL2F0b21zL0JhY2tkcm9wJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBnZXRNeVNjaGVkdWxlcywgZGVsZXRlU2NoZWR1bGUsIHR5cGUgU2NoZWR1bGVXaXRoQWdlbnRSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2NoZWR1bGVzJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgbWFpYVNlY3Rpb25VaSBhcyB1IH0gZnJvbSAnLi4vbWFpYVNlY3Rpb25VaVRva2VucydcbmltcG9ydCB7XG4gIFNDQWdlbnRTZWxlY3RvckNvbnRhaW5lcixcbiAgU0NBZ2VudFNlbGVjdG9yTGlzdCxcbiAgU0NBZ2VudFNlbGVjdG9yTG9hZGluZ1JvdyxcbiAgU0NBZ2VudFNlbGVjdG9yT3B0aW9uLFxuICBTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyLFxuICBNQUlBX1NFQ1RJT05fTU9EQUxfWixcbiAgU0NGaWVsZFdpdGhEcm9wZG93blosXG59IGZyb20gJy4uL21haWFTZWN0aW9uTW9kYWxTdHlsZXMnXG5pbXBvcnQge1xuICBTQ01SQWN0aW9uc1JvdyxcbiAgU0NNUkJvZHksXG4gIFNDTVJDYXJkQm9keSxcbiAgU0NNUkNhcmRCdXR0b24sXG4gIFNDTVJDYXJkQ29udGVudFRleHQsXG4gIFNDTVJDYXJkRm9vdGVyLFxuICBTQ01SQ2FyZEZyZXF1ZW5jeSxcbiAgU0NNUkNhcmRIZWFkZXIsXG4gIFNDTVJDYXJkTWVudSxcbiAgU0NNUkNhcmRNZW51SXRlbSxcbiAgU0NNUkNhcmRNZW51SXRlbXMsXG4gIFNDTVJDYXJkVGl0bGVOYW1lLFxuICBTQ01SQ2FyZFRvcFJvdyxcbiAgU0NNUkNhcmRzT3V0ZXIsXG4gIFNDTVJDYXJkc1JvdyxcbiAgU0NNUkNvbnRhaW5lcixcbiAgU0NNUkNyZWF0ZUJ1dHRvbixcbiAgU0NNUkNyZWF0ZUJ1dHRvblRleHQsXG4gIFNDTVJFbXB0eVN0YXRlQnV0dG9uLFxuICBTQ01SRW1wdHlTdGF0ZUNvbHVtbixcbiAgU0NNUkVtcHR5U3RhdGVSb290LFxuICBTQ01SRW1wdHlTdGF0ZVN1YnRpdGxlLFxuICBTQ01SRW1wdHlTdGF0ZVRpdGxlQmxvY2ssXG4gIFNDTVJFbXB0eVN0YXRlVGl0bGUsXG4gIFNDTVJLZWJhYkJ1dHRvbixcbiAgU0NNUkxvYWRXcmFwcGVyLFxuICBTQ01STW9kYWxCb2R5U2Nyb2xsLFxuICBTQ01STW9kYWxDYW5jZWxCdXR0b24sXG4gIFNDTVJNb2RhbENsb3NlQnV0dG9uLFxuICBTQ01STW9kYWxDb250ZW50LFxuICBTQ01STW9kYWxGb290ZXIsXG4gIFNDTVJNb2RhbEhlYWRlcixcbiAgU0NNUk1vZGFsU2F2ZUJ1dHRvbixcbiAgU0NNUk1vZGFsVGl0bGUsXG4gIFNDTVJNb2RhbFdyYXBwZXIsXG4gIFNDTVJTdGF0dXNCYWRnZSxcbiAgU0NNUlN1YnRpdGxlLFxuICBTQ01SVGl0bGUsXG4gIFNDTVJUaXRsZUlubmVyLFxuICBTQ01SVGl0bGVXcmFwLFxufSBmcm9tICcuL0NoYXRBSU15Um91dGluZXMuc3R5bGVzJ1xuXG50eXBlIEFnZW50T3B0aW9uID0geyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGVtb2ppOiBzdHJpbmcgfVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTXlSb3V0aW5lcyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbignYWJtX2FnZW50X3NlY3Rpb24nKVxuICBjb25zdCBbcm91dGluZXMsIHNldFJvdXRpbmVzXSA9IHVzZVN0YXRlPFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2VbXT4oW10pXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd0NyZWF0ZVBhbmVsLCBzZXRTaG93Q3JlYXRlUGFuZWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt0ZW1wbGF0ZUZvcm0sIHNldFRlbXBsYXRlRm9ybV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPFRyaWdnZXJGb3JtU3RhdGU+IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2FnZW50cywgc2V0QWdlbnRzXSA9IHVzZVN0YXRlPEFnZW50T3B0aW9uW10+KFtdKVxuICBjb25zdCBbbG9hZGluZ0FnZW50cywgc2V0TG9hZGluZ0FnZW50c10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlbGVjdGVkQWdlbnQsIHNldFNlbGVjdGVkQWdlbnRdID0gdXNlU3RhdGU8QWdlbnRPcHRpb24gfCBudWxsPihudWxsKVxuICBjb25zdCBbZHJvcGRvd25PcGVuLCBzZXREcm9wZG93bk9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzdWJtaXRDb3VudCwgc2V0U3VibWl0Q291bnRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzRm9ybVZhbGlkLCBzZXRJc0Zvcm1WYWxpZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21lbnVPcGVuRm9ySWQsIHNldE1lbnVPcGVuRm9ySWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3JvdXRpbmVUb0RlbGV0ZSwgc2V0Um91dGluZVRvRGVsZXRlXSA9IHVzZVN0YXRlPFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2UgfCBudWxsPihudWxsKVxuICBjb25zdCBkcm9wZG93blJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCBmZXRjaFJvdXRpbmVzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0TXlTY2hlZHVsZXMoeyBsaW1pdDogMTAwLCBvZmZzZXQ6IDAgfSlcbiAgICAgIHNldFJvdXRpbmVzKHJlc3VsdC5kYXRhKVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2lsZW50bHkgZmFpbFxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgZmV0Y2hBZ2VudHMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0TG9hZGluZ0FnZW50cyh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgIHBhdGg6ICdhZ2VudHM/YWdlbnRfdHlwZT1jdXN0b20mbGltaXQ9MTAwJm9mZnNldD0wJyxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICBjb25zdCBhZ2VudExpc3Q6IEFnZW50T3B0aW9uW10gPSAoZGF0YS5kYXRhIHx8IFtdKS5tYXAoKGE6IGFueSkgPT4gKHtcbiAgICAgICAgaWQ6IGEuaWQsXG4gICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgZW1vamk6IGEuZW1vamkgfHwgJycsXG4gICAgICB9KSlcbiAgICAgIHNldEFnZW50cyhhZ2VudExpc3QpXG4gICAgICBpZiAoYWdlbnRMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBzZXRTZWxlY3RlZEFnZW50KGFnZW50TGlzdFswXSlcbiAgICAgICAgc2V0RHJvcGRvd25PcGVuKGZhbHNlKVxuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2lsZW50bHkgZmFpbFxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nQWdlbnRzKGZhbHNlKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFJvdXRpbmVzKClcbiAgfSwgW2ZldGNoUm91dGluZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93Q3JlYXRlUGFuZWwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgc2V0RHJvcGRvd25PcGVuKGZhbHNlKVxuICAgIGZldGNoQWdlbnRzKClcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFtzaG93Q3JlYXRlUGFuZWwsIGZldGNoQWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZHJvcGRvd25PcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IGNsb3NlSWZPdXRzaWRlID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghZHJvcGRvd25SZWYuY3VycmVudD8uY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUlmT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUlmT3V0c2lkZSlcbiAgfSwgW2Ryb3Bkb3duT3Blbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JJZCkgc2V0TWVudU9wZW5Gb3JJZChudWxsKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gIH0sIFttZW51T3BlbkZvcklkXSlcblxuICBjb25zdCBoYW5kbGVDcmVhdGVTdWNjZXNzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFN1Ym1pdENvdW50KDApXG4gICAgc2V0U2hvd0NyZWF0ZVBhbmVsKGZhbHNlKVxuICAgIHNldFNlbGVjdGVkQWdlbnQobnVsbClcbiAgICBzZXRUZW1wbGF0ZUZvcm0obnVsbClcbiAgICBzZXRJc0Zvcm1WYWxpZChmYWxzZSlcbiAgICBmZXRjaFJvdXRpbmVzKClcbiAgfSwgW2ZldGNoUm91dGluZXNdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZVNjaGVkdWxlKGNoYXQuaWQpXG4gICAgICAgIHNldFJvdXRpbmVUb0RlbGV0ZShudWxsKVxuICAgICAgICBmZXRjaFJvdXRpbmVzKClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBzaWxlbnRseSBmYWlsXG4gICAgICB9XG4gICAgfSxcbiAgICBbZmV0Y2hSb3V0aW5lc11cbiAgKVxuXG4gIGNvbnN0IGZyZXF1ZW5jeUxhYmVsID0gKHNjaGVkdWxlOiBTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlKSA9PiB7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgbWludXRlbHk6IHQoJ3RyaWdnZXJzU2VjdGlvbi5mcmVxdWVuY2llcy5taW51dGVseScpLFxuICAgICAgaG91cmx5OiB0KCd0cmlnZ2Vyc1NlY3Rpb24uZnJlcXVlbmNpZXMuaG91cmx5JyksXG4gICAgICBkYWlseTogdCgndHJpZ2dlcnNTZWN0aW9uLmZyZXF1ZW5jaWVzLmRhaWx5JyksXG4gICAgICB3ZWVrbHk6IHQoJ3RyaWdnZXJzU2VjdGlvbi5mcmVxdWVuY2llcy53ZWVrbHknKSxcbiAgICB9XG4gICAgcmV0dXJuIG1hcFtzY2hlZHVsZS5zY2hlZHVsZV90eXBlXSA/PyBzY2hlZHVsZS5zY2hlZHVsZV90eXBlXG4gIH1cblxuICBjb25zdCBzdGF0dXNMYWJlbCA9IChzdGF0dXM6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIGFjdGl2ZTogdCgndHJpZ2dlcnNTZWN0aW9uLnN0YXR1cy5hY3RpdmUnKSxcbiAgICAgIHBhdXNlZDogdCgndHJpZ2dlcnNTZWN0aW9uLnN0YXR1cy5wYXVzZWQnKSxcbiAgICAgIGRpc2FibGVkOiB0KCd0cmlnZ2Vyc1NlY3Rpb24uc3RhdHVzLmRpc2FibGVkJyksXG4gICAgfVxuICAgIHJldHVybiBtYXBbc3RhdHVzXSA/PyBzdGF0dXNcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGVkTGFiZWwgPSBzZWxlY3RlZEFnZW50XG4gICAgPyBgJHtzZWxlY3RlZEFnZW50LmVtb2ppID8gYCR7c2VsZWN0ZWRBZ2VudC5lbW9qaX0gYCA6ICcnfSR7c2VsZWN0ZWRBZ2VudC5uYW1lfWBcbiAgICA6IHQoJ3RyaWdnZXJzU2VjdGlvbi5zZWxlY3RBZ2VudCcpXG5cbiAgY29uc3QgZGVsZXRlTW9kYWxDaGF0ID0gcm91dGluZVRvRGVsZXRlXG4gICAgPyB7IHRpdGxlOiByb3V0aW5lVG9EZWxldGUubmFtZSB8fCB0KCd0cmlnZ2Vyc1NlY3Rpb24udW50aXRsZWRSb3V0aW5lJyksIGlkOiByb3V0aW5lVG9EZWxldGUuaWQgfVxuICAgIDogbnVsbFxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1yb290LWFjdGlvbnMnKSA/PyBkb2N1bWVudC5ib2R5XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNUkNvbnRhaW5lciAkaGFzSXRlbXM9eyEhcm91dGluZXMubGVuZ3RofT5cbiAgICAgIDxNQUlBSXNvbG9nbyAvPlxuXG4gICAgICA8U0NNUkJvZHkgJGNhbkNyZWF0ZT5cbiAgICAgICAge3JvdXRpbmVzLmxlbmd0aCA/IChcbiAgICAgICAgICA8U0NNUlRpdGxlV3JhcD5cbiAgICAgICAgICAgIDxTQ01SVGl0bGVJbm5lcj5cbiAgICAgICAgICAgICAgPFNDTVJUaXRsZT57dCgndHJpZ2dlcnNTZWN0aW9uLm15Um91dGluZXNUaXRsZScpfTwvU0NNUlRpdGxlPlxuICAgICAgICAgICAgICA8U0NNUlN1YnRpdGxlPnt0KCd0cmlnZ2Vyc1NlY3Rpb24ubXlSb3V0aW5lc1N1YnRpdGxlJyl9PC9TQ01SU3VidGl0bGU+XG4gICAgICAgICAgICA8L1NDTVJUaXRsZUlubmVyPlxuICAgICAgICAgICAgPFNDTVJBY3Rpb25zUm93PlxuICAgICAgICAgICAgICA8U0NNUkNyZWF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0NyZWF0ZVBhbmVsKHRydWUpfT5cbiAgICAgICAgICAgICAgICA8U0NNUkNyZWF0ZUJ1dHRvblRleHQ+e3QoJ3RyaWdnZXJzU2VjdGlvbi5uZXdSb3V0aW5lJyl9PC9TQ01SQ3JlYXRlQnV0dG9uVGV4dD5cbiAgICAgICAgICAgICAgPC9TQ01SQ3JlYXRlQnV0dG9uPlxuICAgICAgICAgICAgPC9TQ01SQWN0aW9uc1Jvdz5cbiAgICAgICAgICA8L1NDTVJUaXRsZVdyYXA+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgIDxTQ01STG9hZFdyYXBwZXI+XG4gICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgPC9TQ01STG9hZFdyYXBwZXI+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHshbG9hZGluZyAmJiByb3V0aW5lcy5sZW5ndGggPyAoXG4gICAgICAgICAgPFNDTVJDYXJkc091dGVyPlxuICAgICAgICAgICAgPFNDTVJDYXJkc1Jvdz5cbiAgICAgICAgICAgICAge3JvdXRpbmVzLm1hcChyb3V0aW5lID0+IChcbiAgICAgICAgICAgICAgICA8U0NNUkNhcmRCdXR0b24ga2V5PXtyb3V0aW5lLmlkfSB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICA8U0NNUkNhcmRIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNUkNhcmRUaXRsZU5hbWU+e3JvdXRpbmUubmFtZSB8fCB0KCd0cmlnZ2Vyc1NlY3Rpb24udW50aXRsZWRSb3V0aW5lJyl9PC9TQ01SQ2FyZFRpdGxlTmFtZT5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNUktlYmFiQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ3RyaWdnZXJzU2VjdGlvbi5kZWxldGVSb3V0aW5lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWVudU9wZW5Gb3JJZChwcmV2ID0+IChwcmV2ID09PSByb3V0aW5lLmlkID8gbnVsbCA6IHJvdXRpbmUuaWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVudURvdHMgY29sb3I9XCIjOTk5XCIgd2lkdGg9ezE1fSBoZWlnaHQ9ezE1fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNUktlYmFiQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgPC9TQ01SQ2FyZEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZENvbnRlbnRUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtyb3V0aW5lLmFnZW50X2Vtb2ppIHx8IHJvdXRpbmUuYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtyb3V0aW5lLmFnZW50X2Vtb2ppID8gYCR7cm91dGluZS5hZ2VudF9lbW9qaX0gYCA6ICcnfSR7cm91dGluZS5hZ2VudF9uYW1lID8/ICcnfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyd9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRDb250ZW50VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZEZyZXF1ZW5jeT57ZnJlcXVlbmN5TGFiZWwocm91dGluZSl9PC9TQ01SQ2FyZEZyZXF1ZW5jeT5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNUlN0YXR1c0JhZGdlICRzdGF0dXM9e3JvdXRpbmUuc3RhdHVzfT57c3RhdHVzTGFiZWwocm91dGluZS5zdGF0dXMpfTwvU0NNUlN0YXR1c0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgPC9TQ01SQ2FyZEJvZHk+XG4gICAgICAgICAgICAgICAgICB7bWVudU9wZW5Gb3JJZCA9PT0gcm91dGluZS5pZCA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkTWVudVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZE1lbnVJdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Um91dGluZVRvRGVsZXRlKHJvdXRpbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWVudU9wZW5Gb3JJZChudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgndHJpZ2dlcnNTZWN0aW9uLmRlbGV0ZVJvdXRpbmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkTWVudUl0ZW1zPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkTWVudT5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRCdXR0b24+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TQ01SQ2FyZHNSb3c+XG4gICAgICAgICAgPC9TQ01SQ2FyZHNPdXRlcj5cbiAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgeyFsb2FkaW5nICYmICFyb3V0aW5lcy5sZW5ndGggPyAoXG4gICAgICAgICAgPFNDTVJFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgICAgIDxTQ01SRW1wdHlTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgICAgPFNDTVJFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgICAgICA8U0NNUkVtcHR5U3RhdGVUaXRsZT57dCgndHJpZ2dlcnNTZWN0aW9uLm15Um91dGluZXNFbXB0eVRpdGxlJyl9PC9TQ01SRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ01SRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCd0cmlnZ2Vyc1NlY3Rpb24ubXlSb3V0aW5lc0VtcHR5RGVzY3JpcHRpb24nKX08L1NDTVJFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvU0NNUkVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgICAgPC9TQ01SRW1wdHlTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgIDxTQ01SRW1wdHlTdGF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0NyZWF0ZVBhbmVsKHRydWUpfT5cbiAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5uZXdSb3V0aW5lJyl9XG4gICAgICAgICAgICA8L1NDTVJFbXB0eVN0YXRlQnV0dG9uPlxuICAgICAgICAgIDwvU0NNUkVtcHR5U3RhdGVSb290PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NNUkJvZHk+XG5cbiAgICAgIHtzaG93Q3JlYXRlUGFuZWwgJiZcbiAgICAgICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxCYWNrZHJvcFxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBzZXRTaG93Q3JlYXRlUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICAgIHNldFRlbXBsYXRlRm9ybShudWxsKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHpJbmRleD17TUFJQV9TRUNUSU9OX01PREFMX1p9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNDTVJNb2RhbFdyYXBwZXIgb25DbGljaz17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfT5cbiAgICAgICAgICAgICAgPFNDTVJNb2RhbEhlYWRlcj5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsVGl0bGU+e3QoJ3RyaWdnZXJzU2VjdGlvbi5uZXdSb3V0aW5lJyl9PC9TQ01STW9kYWxUaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsQ2xvc2VCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgndHJpZ2dlcnNTZWN0aW9uLmJhY2snKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0NyZWF0ZVBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBzZXRUZW1wbGF0ZUZvcm0obnVsbClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICA8L1NDTVJNb2RhbENsb3NlQnV0dG9uPlxuICAgICAgICAgICAgICA8L1NDTVJNb2RhbEhlYWRlcj5cbiAgICAgICAgICAgICAgPFNDTVJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPFNDRmllbGRXaXRoRHJvcGRvd25aPlxuICAgICAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5hZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgPFNDQWdlbnRTZWxlY3RvckNvbnRhaW5lciByZWY9e2Ryb3Bkb3duUmVmIGFzIGFueX0+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgb3Blbj17ZHJvcGRvd25PcGVufVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldERyb3Bkb3duT3BlbihwcmV2ID0+ICFwcmV2KX1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPntsb2FkaW5nQWdlbnRzID8gdCgndHJpZ2dlcnNTZWN0aW9uLmxvYWRpbmdBZ2VudHMnKSA6IHNlbGVjdGVkTGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uRG93biB3aWR0aD1cIjE0cHhcIiBoZWlnaHQ9XCIxNHB4XCIgY29sb3I9e2Ryb3Bkb3duT3BlbiA/IHUuYWdlbnRBY2NlbnQgOiB1LnRleHRNdXRlZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICB7ZHJvcGRvd25PcGVuICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtsb2FkaW5nQWdlbnRzID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yTG9hZGluZ1Jvdz57dCgndHJpZ2dlcnNTZWN0aW9uLmxvYWRpbmdBZ2VudHMnKX08L1NDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHMubWFwKGFnZW50ID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2FnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEFnZW50KGFnZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREcm9wZG93bk9wZW4oZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthZ2VudC5lbW9qaSA/IGAke2FnZW50LmVtb2ppfSBgIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWdlbnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDQWdlbnRTZWxlY3Rvck9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JMaXN0PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JDb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9TQ0ZpZWxkV2l0aERyb3Bkb3duWj5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsQm9keVNjcm9sbD5cbiAgICAgICAgICAgICAgICAgIDxBYm1UcmlnZ2Vyc1NlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRFeHRlcm5hbElkPXtzZWxlY3RlZEFnZW50Py5pZCA/PyBudWxsfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsRm9ybT17dGVtcGxhdGVGb3JtID8/IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgc3VibWl0Q291bnQ9e3N1Ym1pdENvdW50fVxuICAgICAgICAgICAgICAgICAgICBvblN1Y2Nlc3M9e2hhbmRsZUNyZWF0ZVN1Y2Nlc3N9XG4gICAgICAgICAgICAgICAgICAgIG9uVmFsaWRpdHlDaGFuZ2U9e3NldElzRm9ybVZhbGlkfVxuICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lQ3JlYXRlT25seVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1NDTVJNb2RhbEJvZHlTY3JvbGw+XG4gICAgICAgICAgICAgIDwvU0NNUk1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAgPFNDTVJNb2RhbEZvb3Rlcj5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsQ2FuY2VsQnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0NyZWF0ZVBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBzZXRUZW1wbGF0ZUZvcm0obnVsbClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5iYWNrJyl9XG4gICAgICAgICAgICAgICAgPC9TQ01STW9kYWxDYW5jZWxCdXR0b24+XG4gICAgICAgICAgICAgICAgPFNDTVJNb2RhbFNhdmVCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc0Zvcm1WYWxpZH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFN1Ym1pdENvdW50KHByZXYgPT4gcHJldiArIDEpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KCd0cmlnZ2Vyc1NlY3Rpb24uc2F2ZScpfVxuICAgICAgICAgICAgICAgIDwvU0NNUk1vZGFsU2F2ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9TQ01STW9kYWxGb290ZXI+XG4gICAgICAgICAgICA8L1NDTVJNb2RhbFdyYXBwZXI+XG4gICAgICAgICAgPC9CYWNrZHJvcD4sXG4gICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICl9XG5cbiAgICAgIHtkZWxldGVNb2RhbENoYXQgPyAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgYWN0aW9uPVwicm91dGluZVwiXG4gICAgICAgICAgY2hhdD17ZGVsZXRlTW9kYWxDaGF0fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFJvdXRpbmVUb0RlbGV0ZShudWxsKX1cbiAgICAgICAgICBoYW5kbGVycz17eyBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlIH19XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L1NDTVJDb250YWluZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQSxPQUFPQSxRQUFRLE1BQU0sV0FBVztBQUNoQyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNo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
|