@projectcor/maia-components 2.37.0 → 2.38.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/components/atoms/ActionableButton.js +6 -1
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +14 -4
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +12 -3
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +20 -4
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +18 -7
- package/lib/components/atoms/MAIAInput/MAIAInput.js +26 -10
- package/lib/components/atoms/MAIAInput/styles.js +34 -27
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +36 -19
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +23 -2
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +33 -5
- package/lib/components/molecules/ChatAIHome/styles.js +11 -2
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +31 -20
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +7 -2
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +4 -4
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +8 -1
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +15 -9
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +18 -3
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +13 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +14 -5
- package/lib/components/molecules/ChatAIModal/layout.js +2 -2
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +12 -2
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +3 -3
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +34 -10
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +14 -6
- package/lib/components/molecules/ChatFooter/ChatFooter.js +66 -45
- package/lib/components/molecules/ChatFooter/styles.js +12 -6
- package/lib/components/molecules/MessageFeedback/MessageFeedback.js +15 -5
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
- package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.js +30 -0
- package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.styles.js +47 -0
- package/lib/components/molecules/UsageBlockedBanner/index.js +2 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +30 -11
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +31 -18
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +40 -19
- package/lib/components/organisms/ChatAI/ChatAI.js +6 -1
- package/lib/hooks/useChatManager/useChatManager.js +55 -34
- package/lib/lang/__mocks__/index.js +9 -0
- package/lib/lang/br/index.js +5 -1
- package/lib/lang/en/index.js +5 -1
- package/lib/lang/es/index.js +5 -1
- package/lib/lang/fr/index.js +6 -2
- package/lib/services/maia/Usage/getUsage.js +45 -0
- package/lib/services/maia/Usage/index.js +6 -0
- package/lib/services/maia/index.js +4 -2
- package/lib/services/utils/MaiaApiError.js +34 -0
- package/lib/services/utils/fetchCOR.js +106 -57
- package/lib/services/utils/index.js +2 -1
- package/lib/store/index.js +2 -1
- package/lib/store/sessions/sessionStreamManager.js +70 -35
- package/lib/store/sessions/sessions.types.js +1 -1
- package/lib/store/useUsageStore.js +115 -0
- package/lib/types/usage.js +16 -0
- package/lib/utils/usageBlockedMessage.js +11 -0
- package/package.json +1 -1
- package/README.md +0 -2
|
@@ -25,6 +25,7 @@ import { useFrequentlyUsedActions } from '../../../hooks/useFrequentlyUsedAction
|
|
|
25
25
|
import { sortManagerHoursHomeFuas } from '../../../utils/sortManagerHoursHomeFuas';
|
|
26
26
|
import { useFrequentlyAskedQuestions } from '../../../hooks/useFrequentlyAskedQuestions';
|
|
27
27
|
import { useRecentContexts } from '../../../hooks/useRecentContexts';
|
|
28
|
+
import { useUsageStore } from '../../../store/useUsageStore';
|
|
28
29
|
import { MAIAIsologo } from '../../atoms/icons/MAIAIsologo';
|
|
29
30
|
import { TemplateGradientIcon } from '../../atoms/icons/TemplateGradientIcon';
|
|
30
31
|
import { ChatAIHomeMaiaker } from './ChatAIHomeMaiaker';
|
|
@@ -43,14 +44,18 @@ var RecentContextPill = function RecentContextPill(_ref) {
|
|
|
43
44
|
label = _ref.label,
|
|
44
45
|
onClick = _ref.onClick,
|
|
45
46
|
_ref$fullWidth = _ref.fullWidth,
|
|
46
|
-
fullWidth = _ref$fullWidth === void 0 ? false : _ref$fullWidth
|
|
47
|
+
fullWidth = _ref$fullWidth === void 0 ? false : _ref$fullWidth,
|
|
48
|
+
_ref$disabled = _ref.disabled,
|
|
49
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
47
50
|
var textRef = useRef(null);
|
|
48
51
|
var _useResizeListener = useResizeListener(textRef, [label]),
|
|
49
52
|
showTooltip = _useResizeListener.showTooltip;
|
|
50
53
|
return /*#__PURE__*/_jsxs(SCCAIHomeRecentContextPill, {
|
|
51
54
|
type: "button",
|
|
52
|
-
onClick: onClick,
|
|
55
|
+
onClick: disabled ? undefined : onClick,
|
|
53
56
|
$fullWidth: fullWidth,
|
|
57
|
+
$disabled: disabled,
|
|
58
|
+
"aria-disabled": disabled,
|
|
54
59
|
children: [/*#__PURE__*/_jsx(SCCAIHomeRecentContextPillIcon, {
|
|
55
60
|
children: context.type === 'task' ? /*#__PURE__*/_jsx(ListChecklist, {
|
|
56
61
|
color: RECENT_CONTEXT_ICON_COLOR,
|
|
@@ -104,6 +109,9 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
104
109
|
setProject = _useGlobalContext.setProject,
|
|
105
110
|
setTask = _useGlobalContext.setTask,
|
|
106
111
|
setChipsProject = _useGlobalContext.setChipsProject;
|
|
112
|
+
var usageBlocked = useUsageStore(function (state) {
|
|
113
|
+
return state.blocked;
|
|
114
|
+
});
|
|
107
115
|
var isMAIA = validateIsMaia(agent);
|
|
108
116
|
var floatingCustomCenter = !!(floating && (agent === null || agent === void 0 ? void 0 : agent.type) === 'custom');
|
|
109
117
|
var lang = i18n.language === 'br' ? 'pt' : i18n.language;
|
|
@@ -203,13 +211,17 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
203
211
|
return undefined;
|
|
204
212
|
}, [task === null || task === void 0 ? void 0 : task.id, chipsProject === null || chipsProject === void 0 ? void 0 : chipsProject.projectId, project === null || project === void 0 ? void 0 : project.id, client === null || client === void 0 ? void 0 : client.id]);
|
|
205
213
|
|
|
206
|
-
//
|
|
207
|
-
//
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
214
|
+
// FAQs solo con contexto cliente pineado (header paso 2 o sección client).
|
|
215
|
+
// Proyecto, tarea y planner muestran solo FUAs.
|
|
216
|
+
var faqsContextEntityType = useMemo(function () {
|
|
217
|
+
if (isPlannerHome || isRecentContextsStep) return undefined;
|
|
218
|
+
if (isHeaderHome) {
|
|
219
|
+
var _activeContext$type;
|
|
220
|
+
return isContextHomeStep ? (_activeContext$type = activeContext === null || activeContext === void 0 ? void 0 : activeContext.type) !== null && _activeContext$type !== void 0 ? _activeContext$type : pinnedEntityType : undefined;
|
|
221
|
+
}
|
|
222
|
+
return pinnedEntityType;
|
|
223
|
+
}, [isPlannerHome, isRecentContextsStep, isHeaderHome, isContextHomeStep, activeContext === null || activeContext === void 0 ? void 0 : activeContext.type, pinnedEntityType]);
|
|
224
|
+
var isClientContextForFaqs = faqsContextEntityType === 'client';
|
|
213
225
|
// `section` que se consulta para las FUAs: en no-header sigue el tipo de contexto pineado.
|
|
214
226
|
// En planner se fuerza la section API `planner`.
|
|
215
227
|
var fuasSection = function () {
|
|
@@ -229,10 +241,10 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
229
241
|
if (isHeaderHome) return isContextHomeStep ? agent === null || agent === void 0 ? void 0 : agent.id : undefined;
|
|
230
242
|
return agent === null || agent === void 0 ? void 0 : agent.id;
|
|
231
243
|
}();
|
|
232
|
-
var realListsEntityType = function (_activeContext$
|
|
244
|
+
var realListsEntityType = function (_activeContext$type2) {
|
|
233
245
|
if (isPlannerHome) return 'planner';
|
|
234
246
|
if (!isHeaderHome) return pinnedEntityType;
|
|
235
|
-
return isContextHomeStep ? (_activeContext$
|
|
247
|
+
return isContextHomeStep ? (_activeContext$type2 = activeContext === null || activeContext === void 0 ? void 0 : activeContext.type) !== null && _activeContext$type2 !== void 0 ? _activeContext$type2 : pinnedEntityType : undefined;
|
|
236
248
|
}();
|
|
237
249
|
var _useFrequentlyUsedAct = useFrequentlyUsedActions(realListsAgentId, fuasSection, realListsEntityType),
|
|
238
250
|
agentFuas = _useFrequentlyUsedAct.actions,
|
|
@@ -248,15 +260,17 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
248
260
|
return collaboratorPlannerFuas;
|
|
249
261
|
}, [isHeaderManagerHoursHome, managerHomeFuas, collaboratorPlannerFuas]);
|
|
250
262
|
var headerHoursFuasLoading = isHeaderManagerHoursHome ? managerHomeFuasLoading : collaboratorPlannerFuasLoading;
|
|
251
|
-
var
|
|
263
|
+
var faqsListAgentId = isClientContextForFaqs ? realListsAgentId : undefined;
|
|
264
|
+
var faqsListEntityType = isClientContextForFaqs ? realListsEntityType : undefined;
|
|
265
|
+
var _useFrequentlyAskedQu = useFrequentlyAskedQuestions(faqsListAgentId, lang, faqsListEntityType),
|
|
252
266
|
agentFaqs = _useFrequentlyAskedQu.faqs,
|
|
253
267
|
faqsLoading = _useFrequentlyAskedQu.loading,
|
|
254
268
|
handleGetFrequentlyAskedQuestions = _useFrequentlyAskedQu.handleGetFrequentlyAskedQuestions;
|
|
255
269
|
var faqsFetchRef = useRef(null);
|
|
256
270
|
useEffect(function () {
|
|
257
271
|
var _faqsFetchRef$current;
|
|
258
|
-
//
|
|
259
|
-
if (!realListsAgentId ||
|
|
272
|
+
// FAQs solo para contexto cliente; el resto muestra solo FUAs.
|
|
273
|
+
if (!realListsAgentId || !isClientContextForFaqs) return;
|
|
260
274
|
var currentKey = "".concat(realListsAgentId, "-").concat(lang, "-").concat(realListsEntityType !== null && realListsEntityType !== void 0 ? realListsEntityType : 'all');
|
|
261
275
|
var lastKey = faqsFetchRef.current ? "".concat(faqsFetchRef.current.agentId, "-").concat(faqsFetchRef.current.lang, "-").concat((_faqsFetchRef$current = faqsFetchRef.current.entityType) !== null && _faqsFetchRef$current !== void 0 ? _faqsFetchRef$current : 'all') : null;
|
|
262
276
|
if (currentKey !== lastKey) {
|
|
@@ -271,13 +285,13 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
271
285
|
entityType: realListsEntityType
|
|
272
286
|
});
|
|
273
287
|
}
|
|
274
|
-
}, [realListsAgentId, realListsEntityType,
|
|
288
|
+
}, [realListsAgentId, realListsEntityType, isClientContextForFaqs, lang, handleGetFrequentlyAskedQuestions]);
|
|
275
289
|
var faqs = agentFaqs;
|
|
276
290
|
var fuas = agentFuas;
|
|
277
291
|
var faqsAreLoading = faqsLoading;
|
|
278
292
|
var fuasAreLoading = fuasLoading;
|
|
279
293
|
var showRecentContextsBlock = isRecentContextsStep && (recentContextsLoading || recentContexts.length > 0);
|
|
280
|
-
var shouldShowFaqs =
|
|
294
|
+
var shouldShowFaqs = isMAIA && isClientContextForFaqs && !isRecentContextsStep && (isContextHomeStep || !isHeaderHome && faqsAccess) && !isMaiaker && (faqs.length > 0 || faqsAreLoading);
|
|
281
295
|
var shouldShowFuas = !isRecentContextsStep && !isMaiaker && (isContextHomeStep || !isHeaderHome) && (fuas.length > 0 || fuasAreLoading);
|
|
282
296
|
var shouldShowPlannerFuasLoading = isHeaderHoursAgentHome && headerHoursFuasLoading && headerHoursFuas.length === 0;
|
|
283
297
|
var shouldShowPlannerFuasContent = isHeaderHoursAgentHome && headerHoursFuas.length > 0;
|
|
@@ -319,6 +333,8 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
319
333
|
}, [agent === null || agent === void 0 ? void 0 : agent.id, agent === null || agent === void 0 ? void 0 : agent.introduction, isMaiaker, isPlannerHome, isMAIA, pinnedEntityType, isRecentContextsStep, t]);
|
|
320
334
|
var handleSelectRecentContext = useCallback(function (context, order) {
|
|
321
335
|
var _context$parents, _context$parents2, _context$parents3, _context$parents4;
|
|
336
|
+
// Misma fuente de verdad que el composer: sin pool no se puede avanzar de contexto.
|
|
337
|
+
if (usageBlocked) return;
|
|
322
338
|
event(EVENTS.aiChatContextSelected, {
|
|
323
339
|
order: order,
|
|
324
340
|
type: context.type
|
|
@@ -394,7 +410,7 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
394
410
|
requestAnimationFrame(function () {
|
|
395
411
|
document.dispatchEvent(new CustomEvent('maia-input-refocus'));
|
|
396
412
|
});
|
|
397
|
-
}, [event, setChipsProject, setClient, setProject, setTask, t]);
|
|
413
|
+
}, [event, setChipsProject, setClient, setProject, setTask, t, usageBlocked]);
|
|
398
414
|
var handleHomeStartChat = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions, fuaId) {
|
|
399
415
|
if (isHeaderManagerHoursHome && fuaId) {
|
|
400
416
|
flushSync(function () {
|
|
@@ -428,7 +444,8 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
428
444
|
onClick: function onClick() {
|
|
429
445
|
return handleSelectRecentContext(context, index + 1);
|
|
430
446
|
},
|
|
431
|
-
fullWidth: isHeaderTaskContextHome
|
|
447
|
+
fullWidth: isHeaderTaskContextHome,
|
|
448
|
+
disabled: usageBlocked
|
|
432
449
|
}, "".concat(context.type, "-").concat(context.id));
|
|
433
450
|
})]
|
|
434
451
|
})]
|
|
@@ -646,4 +663,4 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
|
|
|
646
663
|
})]
|
|
647
664
|
});
|
|
648
665
|
};
|
|
649
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsImZsdXNoU3luYyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbiIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24iLCJNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJDT1JVc2VyUm9sZSIsImlzQ29sbGFib3JhdG9yUm9sZSIsImlzTWFuYWdlclJvbGUiLCJ1c2VSZXNpemVMaXN0ZW5lciIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFpYWtlckFnZW50IiwiRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwidXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwic29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzIiwidXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwidXNlUmVjZW50Q29udGV4dHMiLCJNQUlBSXNvbG9nbyIsIlRlbXBsYXRlR3JhZGllbnRJY29uIiwiQ2hhdEFJSG9tZU1haWFrZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJGcmVxdWVudFF1ZXN0aW9ucyIsIlJFQ0VOVF9DT05URVhUU19MSU1JVCIsIlJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IiLCJSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFgiLCJSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTIiwiUmVjZW50Q29udGV4dFBpbGwiLCJfcmVmIiwiY29udGV4dCIsImxhYmVsIiwib25DbGljayIsIl9yZWYkZnVsbFdpZHRoIiwiZnVsbFdpZHRoIiwidGV4dFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsInNob3dUb29sdGlwIiwidHlwZSIsIiRmdWxsV2lkdGgiLCJjaGlsZHJlbiIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJ1bmRlZmluZWQiLCJyZWYiLCJ0aXRsZSIsInBhcnNlTnVtZXJpY0lkIiwidmFsdWUiLCJwYXJzZWQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJyb2xlSWQiLCJub3JtYWxpemVkUm9sZUlkIiwiQ0xFVkVMIiwiRElSRUNUT1IiLCJQUk9KRUNUX01BTkFHRVIiLCJTZXQiLCJDaGF0QUlIb21lIiwiX3JlZjIiLCJoYW5kbGVycyIsIm9uU3RhcnRDaGF0IiwiZXhwYW5kZWQiLCJmbG9hdGluZyIsIl91c2VUIiwidCIsImkxOG4iLCJldmVudCIsInVzZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50Iiwic2VjdGlvbiIsImNsaWVudCIsInByb2plY3QiLCJ0YXNrIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsInNldFRhc2siLCJzZXRDaGlwc1Byb2plY3QiLCJpc01BSUEiLCJmbG9hdGluZ0N1c3RvbUNlbnRlciIsImxhbmciLCJsYW5ndWFnZSIsInN1bW1hcnlQcm9qZWN0QWNjZXNzIiwid2luZG93IiwiU3RyaW5nIiwiTUFJQV9QUk9KRUNUX1NVTU1BUllfRkVBVFVSRV9BQ0NFU1MiLCJ0b0xvd2VyQ2FzZSIsIm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcyIsImZhcXNBY2Nlc3MiLCJzaG93UHJvamVjdFN1bW1hcnkiLCJpc01haWFrZXIiLCJpc0hlYWRlckhvbWUiLCJpc09yY2hlc3RyYXRvciIsImlzUGxhbm5lckhvbWUiLCJpc1NlY3Rpb25PcmNoZXN0cmF0b3JIb21lIiwiaGFzSG91cnNTdWJhZ2VudCIsImhhc1Bpbm5lZENvbnRleHQiLCJpZCIsInByb2plY3RJZCIsImlzUmVjZW50Q29udGV4dHNTdGVwIiwiaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUiLCJyb2xlX2lkIiwiaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSIsImlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSIsImhlYWRlclRhc2tDb250ZXh0U3VidGl0bGVLZXkiLCJpc0NvbnRleHRIb21lU3RlcCIsImlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lIiwiYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyIsIl91c2VSZWNlbnRDb250ZXh0cyIsImVuYWJsZWQiLCJsaW1pdCIsImZldGNoZWRSZWNlbnRDb250ZXh0cyIsImNvbnRleHRzIiwicmVjZW50Q29udGV4dHNMb2FkaW5nIiwibG9hZGluZyIsInJlY2VudENvbnRleHRzIiwiZmlsdGVyIiwiaGFzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRDb250ZXh0Iiwic2V0U2VsZWN0ZWRDb250ZXh0IiwiYWN0aXZlQ29udGV4dCIsIm5hbWUiLCJwcm9qZWN0TmFtZSIsInBpbm5lZEVudGl0eVR5cGUiLCJpc1Rhc2tDb250ZXh0IiwiaXNGdWFzT25seUhvbWUiLCJmdWFzU2VjdGlvbiIsInJlYWxMaXN0c0FnZW50SWQiLCJyZWFsTGlzdHNFbnRpdHlUeXBlIiwiX2FjdGl2ZUNvbnRleHQkdHlwZSIsIl91c2VGcmVxdWVudGx5VXNlZEFjdCIsImFnZW50RnVhcyIsImFjdGlvbnMiLCJmdWFzTG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDIiLCJjb2xsYWJvcmF0b3JQbGFubmVyRnVhcyIsImNvbGxhYm9yYXRvclBsYW5uZXJGdWFzTG9hZGluZyIsIl91c2VGcmVxdWVudGx5VXNlZEFjdDMiLCJtYW5hZ2VySG9tZUZ1YXMiLCJtYW5hZ2VySG9tZUZ1YXNMb2FkaW5nIiwiaGVhZGVySG91cnNGdWFzIiwiaGVhZGVySG91cnNGdWFzTG9hZGluZyIsIl91c2VGcmVxdWVudGx5QXNrZWRRdSIsImFnZW50RmFxcyIsImZhcXMiLCJmYXFzTG9hZGluZyIsImhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsImZhcXNGZXRjaFJlZiIsIl9mYXFzRmV0Y2hSZWYkY3VycmVudCIsImN1cnJlbnRLZXkiLCJjb25jYXQiLCJsYXN0S2V5IiwiY3VycmVudCIsImFnZW50SWQiLCJlbnRpdHlUeXBlIiwiZnVhcyIsImZhcXNBcmVMb2FkaW5nIiwiZnVhc0FyZUxvYWRpbmciLCJzaG93UmVjZW50Q29udGV4dHNCbG9jayIsImxlbmd0aCIsInNob3VsZFNob3dGYXFzIiwic2hvdWxkU2hvd0Z1YXMiLCJzaG91bGRTaG93UGxhbm5lckZ1YXNMb2FkaW5nIiwic2hvdWxkU2hvd1BsYW5uZXJGdWFzQ29udGVudCIsInNob3VsZFNob3dQbGFubmVyRnVhcyIsInNob3dQcm9qZWN0U3VtbWFyeUNhcmQiLCJlbnRpdHkiLCJzaG93RkFRcyIsImhvbWVTY3JvbGxhYmxlTGF5b3V0Iiwic2hvd0R5bmFtaWNTZWN0aW9uIiwiY29udGVudENvbnRhaW5lclJlZiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2hvd1RvcEdyYWRpZW50Iiwic2V0U2hvd1RvcEdyYWRpZW50IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93Qm90dG9tR3JhZGllbnQiLCJzZXRTaG93Qm90dG9tR3JhZGllbnQiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzU2Nyb2xsaW5nIiwic2V0SXNTY3JvbGxpbmciLCJzY3JvbGxUaW1lb3V0UmVmIiwiZ3JlZXRpbmciLCJpbnRybyIsImludHJvZHVjdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQiLCJvcmRlciIsIl9jb250ZXh0JHBhcmVudHMiLCJfY29udGV4dCRwYXJlbnRzMiIsIl9jb250ZXh0JHBhcmVudHMzIiwiX2NvbnRleHQkcGFyZW50czQiLCJhaUNoYXRDb250ZXh0U2VsZWN0ZWQiLCJjb250ZXh0SWQiLCJjbGllbnRJZCIsInBhcmVudHMiLCJjbGllbnRfaWQiLCJwcm9qZWN0X2lkIiwiY2xpZW50TmFtZSIsImNsaWVudF9uYW1lIiwicHJvamVjdF9uYW1lIiwiX29iamVjdFNwcmVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlSG9tZVN0YXJ0Q2hhdCIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwicmVuZGVyUmVjZW50Q29udGV4dHMiLCIkZml4ZWRDb250ZW50V2lkdGgiLCIkZmx1c2hQaWxscyIsIm1hcCIsImtleSIsImluZGV4IiwidHJpbSIsImNoZWNrU2Nyb2xsIiwiY29udGFpbmVyIiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaXNTY3JvbGxhYmxlIiwiaXNBdFRvcCIsImlzQXRCb3R0b20iLCJoYW5kbGVTY3JvbGwiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0Iiwic2NoZWR1bGVDaGVja1Njcm9sbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwib2JzZXJ2ZSIsInNjcm9sbENvbnRlbnQiLCJmaXJzdEVsZW1lbnRDaGlsZCIsIkVsZW1lbnQiLCJ0aW1lb3V0SWQiLCJsYXRlVGltZW91dElkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRpc2Nvbm5lY3QiLCJyZW5kZXJIZWFkZXJDb250ZW50IiwiX2FnZW50JGNyZWF0ZWRfYnkiLCJfYWdlbnQkY3JlYXRlZF9ieTIiLCJlbW9qaSIsImNyZWF0ZWRfYnkiLCJpc19kZWxldGVkIiwiY29udGVudEFsaWduU3RhcnQiLCJtYWlhSGVhZGVyU3RhY2tOZWVkc0dhcCIsIiRub0dhcCIsIiRhbGlnbiIsIiRzaXplIiwiZmlyc3ROYW1lIiwiJGNvbGxhYm9yYXRvckhvbWUiLCJmaXhlZEhvbWVDb250ZW50V2lkdGgiLCJzaG93QWdlbnRJbnRyb2R1Y3Rpb24iLCIkYWxpZ25TdGFydCIsIiRzaG93IiwiJGlzQWdlbnRWaWV3IiwiJGZsb2F0aW5nQ3VzdG9tQ2VudGVyIiwiJGNlbnRlclZlcnRpY2FsbHkiLCIkaGVhZGVyQ29sbGFib3JhdG9ySG9tZSIsIiRzZWN0aW9uT3JjaGVzdHJhdG9ySG9tZSIsIiRnYXAiLCIkbWF4V2lkdGgiLCJwcm9qZWN0U3VtbWFyeSIsIiRncm93IiwidmFyaWFudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlIb21lL0NoYXRBSUhvbWUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgZmx1c2hTeW5jIH0gZnJvbSAncmVhY3QtZG9tJ1xuXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBMaXN0Q2hlY2tsaXN0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTGlzdENoZWNrbGlzdCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuXG5pbXBvcnQgeyBvcHRpb25zIH0gZnJvbSAnLi4vQ2hhdEFJTW9kYWwvY29uc3RhbnRzJ1xuXG5pbXBvcnQge1xuICBTQ0NBSUhvbWVDb250YWluZXIsXG4gIFNDQ0FJSG9tZUNvbnRlbnQsXG4gIFNDQ0FJSG9tZUNvbnRlbnRJbm5lcixcbiAgU0NDQUlIb21lR3JhZGllbnRUb3AsXG4gIFNDQ0FJSG9tZUdyYWRpZW50Qm90dG9tLFxuICBTQ0NBSUhvbWVIZWFkZXIsXG4gIFNDQ0FJSG9tZUdyZWV0aW5nLFxuICBTQ0NBSUhvbWVBZ2VudEluZm9Db250YWluZXIsXG4gIFNDQ0FJSG9tZUFnZW50SW5mbyxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnksXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5Q29udGVudCxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSxcbiAgU0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbixcbiAgU0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3QsXG4gIFNDQ0FJSG9tZUludHJvZHVjdGlvbixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyLFxuICBTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0LFxuICBTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSxcbiAgU0NDQUlIb21lSWNvbkNvbnRhaW5lcixcbiAgU0NDQUlIb21lTG9nb1dyYXBwZXIsXG4gIFNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayxcbiAgU0NDQUlIb21lVGl0bGUsXG4gIFNDQ0FJSG9tZVRpdGxlQmxvY2ssXG4gIFNDQ0FJSG9tZVN1YnRpdGxlLFxuICBTQ0NBSUhvbWVEeW5hbWljU2VjdGlvbixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHMsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uSGVhZGVyLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZSxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxTa2VsZXRvbixcbiAgTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCxcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0LCB0eXBlIFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlclJvbGUsIGlzQ29sbGFib3JhdG9yUm9sZSwgaXNNYW5hZ2VyUm9sZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IGdldENvbnRleHRNZW50aW9uSWNvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBvcmNoZXN0cmF0b3JIYXNIb3Vyc1N1YmFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb3JjaGVzdHJhdG9yU3ViYWdlbnRzJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IGlzTWFpYWtlckFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9IGZyb20gJy4uLy4uL2F0b21zL0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucydcbmltcG9ydCB7IEZyZXF1ZW50bHlVc2VkQWN0aW9ucyB9IGZyb20gJy4uLy4uL2F0b21zL0ZyZXF1ZW50bHlVc2VkQWN0aW9ucydcbmltcG9ydCB7IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucydcbmltcG9ydCB7IHNvcnRNYW5hZ2VySG91cnNIb21lRnVhcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3NvcnRNYW5hZ2VySG91cnNIb21lRnVhcydcbmltcG9ydCB7IHVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucydcbmltcG9ydCB7IHVzZVJlY2VudENvbnRleHRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgdHlwZSB7IFJlY2VudENvbnRleHRJdGVtLCBSZWNlbnRDb250ZXh0VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL01BSUFJc29sb2dvJ1xuaW1wb3J0IHsgVGVtcGxhdGVHcmFkaWVudEljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9UZW1wbGF0ZUdyYWRpZW50SWNvbidcbmltcG9ydCB7IENoYXRBSUhvbWVNYWlha2VyIH0gZnJvbSAnLi9DaGF0QUlIb21lTWFpYWtlcidcblxudHlwZSBDaGF0QUlIb21lUHJvcHMgPSB7XG4gIG9uU3RhcnRDaGF0OiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgbWVudGlvbnM/OiBudWxsLFxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBoYW5kbGVyczogUmVjb3JkPG9wdGlvbnMsICgpID0+IHZvaWQ+XG4gIGV4cGFuZGVkPzogYm9vbGVhblxuICBmbG9hdGluZz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGVudW0gRnJlcXVlbnRRdWVzdGlvbnMge1xuICByZW50YWJpbGlkYWRfcHJveWVjdG8gPSAncmVudGFiaWxpZGFkX3Byb3llY3RvJyxcbiAgYXZhbmNlX3Byb3llY3RvID0gJ2F2YW5jZV9wcm95ZWN0bycsXG59XG5cbmNvbnN0IFJFQ0VOVF9DT05URVhUU19MSU1JVCA9IDlcbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IgPSAnIzRENEQ0RCdcbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fU0laRV9QWCA9IDE1XG5jb25zdCBSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTID0gW1xuICAncmVjZW50LWNvbnRleHQtc2tlbGV0b24tMScsXG4gICdyZWNlbnQtY29udGV4dC1za2VsZXRvbi0yJyxcbiAgJ3JlY2VudC1jb250ZXh0LXNrZWxldG9uLTMnLFxuXVxuXG5jb25zdCBSZWNlbnRDb250ZXh0UGlsbCA9ICh7XG4gIGNvbnRleHQsXG4gIGxhYmVsLFxuICBvbkNsaWNrLFxuICBmdWxsV2lkdGggPSBmYWxzZSxcbn06IHtcbiAgY29udGV4dDogUmVjZW50Q29udGV4dEl0ZW1cbiAgbGFiZWw6IHN0cmluZ1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkXG4gIGZ1bGxXaWR0aD86IGJvb2xlYW5cbn0pID0+IHtcbiAgY29uc3QgdGV4dFJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtsYWJlbF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGwgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQ2xpY2t9ICRmdWxsV2lkdGg9e2Z1bGxXaWR0aH0+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uPlxuICAgICAgICB7Y29udGV4dC50eXBlID09PSAndGFzaycgPyAoXG4gICAgICAgICAgPExpc3RDaGVja2xpc3QgY29sb3I9e1JFQ0VOVF9DT05URVhUX0lDT05fQ09MT1J9IHdpZHRoPVwiMTVweFwiIGhlaWdodD1cIjE1cHhcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGdldENvbnRleHRNZW50aW9uSWNvbihjb250ZXh0LnR5cGUsIFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IsIHVuZGVmaW5lZCwgUkVDRU5UX0NPTlRFWFRfSUNPTl9TSVpFX1BYKVxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0IHJlZj17dGV4dFJlZn0+XG4gICAgICAgIHtzaG93VG9vbHRpcCA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17bGFiZWx9PlxuICAgICAgICAgICAgPHNwYW4+e2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0PlxuICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGw+XG4gIClcbn1cblxuY29uc3QgcGFyc2VOdW1lcmljSWQgPSAodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKVxuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG59XG5cbmNvbnN0IGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSAocm9sZUlkPzogQ09SVXNlclJvbGUgfCBudW1iZXIgfCBzdHJpbmcpOiBTZXQ8UmVjZW50Q29udGV4dFR5cGU+ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFJvbGVJZCA9IE51bWJlcihyb2xlSWQpXG4gIGlmIChcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5DTEVWRUwgfHxcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5ESVJFQ1RPUiB8fFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLlBST0pFQ1RfTUFOQUdFUlxuICApIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snXSlcbiAgfVxuICBpZiAoaXNDb2xsYWJvcmF0b3JSb2xlKHJvbGVJZCkpIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ3Rhc2snXSlcbiAgfVxuICByZXR1cm4gbmV3IFNldCgpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlIb21lID0gKHsgaGFuZGxlcnMsIG9uU3RhcnRDaGF0LCBleHBhbmRlZCwgZmxvYXRpbmcgfTogQ2hhdEFJSG9tZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQsIHNlY3Rpb24sIGNsaWVudCwgcHJvamVjdCwgdGFzaywgY2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCB9ID1cbiAgICB1c2VHbG9iYWxDb250ZXh0KClcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcbiAgY29uc3QgZmxvYXRpbmdDdXN0b21DZW50ZXIgPSAhIShmbG9hdGluZyAmJiBhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbScpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0JyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBjb25zdCBzdW1tYXJ5UHJvamVjdEFjY2VzcyA9XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAoU3RyaW5nKHdpbmRvdy5NQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnIHx8XG4gICAgICBTdHJpbmcod2luZG93Lm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKVxuICBjb25zdCBmYXFzQWNjZXNzID0gdHJ1ZVxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnkgPSAhIShpc01BSUEgJiYgc3VtbWFyeVByb2plY3RBY2Nlc3MpXG4gIC8vIEVsIG9yY2hlc3RyYXRvciAodHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIG11ZXN0cmEgRkFRcy9GVUFzIGFncmVnYWRhcyBkZSBzdXMgc3ViYWdlbnRlcyxcbiAgLy8gYXPDrSBxdWUgTk8gc2UgdHJhdGEgY29tbyBtYWlha2VyIGFjw6EuXG4gIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICBjb25zdCBpc0hlYWRlckhvbWUgPSBpc01BSUEgJiYgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG4gIC8vIEVsIG9yY2hlc3RyYXRvciB1c2EgZWwgaG9tZSBlbiAyIHBhc29zIChjb250ZXh0b3MgcmVjaWVudGVzIOKGlCBGQVFzL0ZVQXMpIGVuIGhlYWRlci9wcm9qZWN0L2NsaWVudC90YXNrLlxuICAvLyBFbiBwcm9qZWN0L2NsaWVudC90YXNrLCBhbCBsaW1waWFyIGVsIGNvbnRleHRvIChwLiBlai4gYWwgcmVzZWxlY2Npb25hciBNQUlBXG4gIC8vIGRlc2RlIGVsIGxpc3RhZG8gZGUgYWdlbnRlcykgc2UgbXVlc3RyYSBlbCBzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzIGVuIGx1Z2FyIGRlIHVuIGhvbWUgdmFjw61vLlxuICBjb25zdCBpc09yY2hlc3RyYXRvciA9IGlzTUFJQSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgLy8gUGxhbm5lcjogaG9tZSBkZSBGVUFzIGRlbCBvcmNoZXN0cmF0b3IgKHNpbiBzZWxlY3RvciBkZSBjb250ZXh0b3MpLlxuICAvLyBTaSBlbCB1c3VhcmlvIG5hdmVnYSBhIE1haWFrZXIgdSBvdHJvIGFnZW50ZSwgc2VjdGlvbiBzaWd1ZSBzaWVuZG8gYHBsYW5uZXJgIHBlcm8geWEgbm8gZXMgZXN0ZSBob21lLlxuICBjb25zdCBpc1BsYW5uZXJIb21lID0gc2VjdGlvbiA9PT0gJ3BsYW5uZXInICYmIGlzT3JjaGVzdHJhdG9yXG4gIC8vIEhvbWVzIGRlIHNlY2Npw7NuIChwcm9qZWN0L2NsaWVudC90YXNrKTogc2luIGlzb2xvZ28sIGNvbnRlbmlkbyB0b3AtbGVmdCwgY29sdW1uYSA0NDhweCBjZW50cmFkYS5cbiAgY29uc3QgaXNTZWN0aW9uT3JjaGVzdHJhdG9ySG9tZSA9IGlzT3JjaGVzdHJhdG9yICYmICFpc0hlYWRlckhvbWUgJiYgIWlzUGxhbm5lckhvbWVcbiAgY29uc3QgaGFzSG91cnNTdWJhZ2VudCA9IG9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQoYWdlbnQpXG5cbiAgLy8gSG9tZSBkZWwgb3JjaGVzdHJhdG9yIGVuIDIgcGFzb3M6XG4gIC8vICAtIFBhc28gMSAoc2luIGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBzb2xvIGxvcyBjb250ZXh0b3MgcmVjaWVudGVzLlxuICAvLyAgLSBQYXNvIDIgKGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBsYXMgRkFRcy9hY2Npb25lcyBxdWUgcmVmZXJlbmNpYW4gZXNlIGNvbnRleHRvLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNSZWNlbnRDb250ZXh0c1N0ZXAgPSBpc09yY2hlc3RyYXRvciAmJiAhaGFzUGlubmVkQ29udGV4dCAmJiAhaXNQbGFubmVySG9tZVxuICAvLyBIZWFkZXIgcGFzbyAxIGNvbXBhY3RvIChzaW4gaXNvbG9nbywgcGlsbHMgZnVsbC13aWR0aCk6IGNvbGFib3JhZG9yIHkgbWFuYWdlcnMgKEMtTGV2ZWwvRGlyZWN0b3IvUE0pLlxuICBjb25zdCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSA9XG4gICAgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgKGlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpIHx8IGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSlcbiAgLy8gQmxvcXVlIEZVQXMgcGxhbm5lciArIHNlY2Npw7NuIGRlIGNvbnRleHRvcyByZWNpZW50ZXMgY29uIHTDrXR1bG9zIChjb2xhYm9yYWRvciBvIG1hbmFnZXIgY29uIGhvdXIpLlxuICBjb25zdCBpc0hlYWRlckhvdXJzQWdlbnRIb21lID0gaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiYgaGFzSG91cnNTdWJhZ2VudFxuICBjb25zdCBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPSBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmIGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKVxuICBjb25zdCBoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzSGVhZGVySG91cnNBZ2VudEhvbWUpIHtcbiAgICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUpIHJldHVybiAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVNYW5hZ2VyV2l0aEhvdXJzJ1xuICAgICAgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZUNvbGxhYm9yYXRvcldpdGhIb3VycydcbiAgICB9XG4gICAgaWYgKGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSkgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICByZXR1cm4gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlQ29sbGFib3JhdG9yJ1xuICB9LCBbaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSwgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCB1c2VyLnJvbGVfaWRdKVxuICBjb25zdCBpc0NvbnRleHRIb21lU3RlcCA9IGlzSGVhZGVySG9tZSAmJiBoYXNQaW5uZWRDb250ZXh0XG4gIC8vIEhlYWRlciBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8pIHkgaG9tZXMgZGUgc2VjY2nDs24gY29tcGFydGVuIGxheW91dDogc2luIGlzb2xvZ28sIHRleHRvIGEgbGEgaXpxdWllcmRhLlxuICBjb25zdCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA9IGlzU2VjdGlvbk9yY2hlc3RyYXRvckhvbWUgfHwgaXNDb250ZXh0SG9tZVN0ZXBcblxuICBjb25zdCBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSkgcmV0dXJuIGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXModXNlci5yb2xlX2lkKVxuICAgIGlmIChpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiBpc01hbmFnZXJSb2xlKHVzZXIucm9sZV9pZCkpIHJldHVybiBnZXRBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzKHVzZXIucm9sZV9pZClcbiAgICBpZiAoaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUpIHJldHVybiBuZXcgU2V0PFJlY2VudENvbnRleHRUeXBlPihbJ3Rhc2snXSlcbiAgICByZXR1cm4gZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyh1c2VyLnJvbGVfaWQpXG4gIH0sIFt1c2VyLnJvbGVfaWQsIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSwgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWVdKVxuICBjb25zdCB7IGNvbnRleHRzOiBmZXRjaGVkUmVjZW50Q29udGV4dHMsIGxvYWRpbmc6IHJlY2VudENvbnRleHRzTG9hZGluZyB9ID0gdXNlUmVjZW50Q29udGV4dHMoe1xuICAgIGVuYWJsZWQ6IGlzT3JjaGVzdHJhdG9yICYmICFpc1BsYW5uZXJIb21lLFxuICAgIGxpbWl0OiBSRUNFTlRfQ09OVEVYVFNfTElNSVQsXG4gIH0pXG4gIGNvbnN0IHJlY2VudENvbnRleHRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBmZXRjaGVkUmVjZW50Q29udGV4dHMuZmlsdGVyKGNvbnRleHQgPT4gYWxsb3dlZFJlY2VudENvbnRleHRUeXBlcy5oYXMoY29udGV4dC50eXBlKSksXG4gICAgW2ZldGNoZWRSZWNlbnRDb250ZXh0cywgYWxsb3dlZFJlY2VudENvbnRleHRUeXBlc11cbiAgKVxuXG4gIC8vIENvbnRleHRvIGFjdGl2byBwYXJhIGRlcml2YXIgRkFRcy9hY2Npb25lcyAocGFzbyAyKS4gUHJlZmVyaW1vcyBlbCBwaWxsIGNsaWNrZWFkbztcbiAgLy8gc2kgbm8sIGxvIHJlY29uc3RydWltb3MgZGVzZGUgZWwgY29udGV4dG8gZ2xvYmFsLlxuICBjb25zdCBbc2VsZWN0ZWRDb250ZXh0LCBzZXRTZWxlY3RlZENvbnRleHRdID0gdXNlU3RhdGU8UmVjZW50Q29udGV4dEl0ZW0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaGFzUGlubmVkQ29udGV4dCkgc2V0U2VsZWN0ZWRDb250ZXh0KG51bGwpXG4gIH0sIFtoYXNQaW5uZWRDb250ZXh0XSlcblxuICBjb25zdCBhY3RpdmVDb250ZXh0ID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWRDb250ZXh0KSByZXR1cm4gc2VsZWN0ZWRDb250ZXh0XG4gICAgaWYgKCFpc0NvbnRleHRIb21lU3RlcCkgcmV0dXJuIG51bGxcbiAgICBpZiAodGFzaz8uaWQpIHJldHVybiB7IHR5cGU6ICd0YXNrJywgaWQ6IHRhc2suaWQsIG5hbWU6IHRhc2submFtZSB9XG4gICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdElkKSByZXR1cm4geyB0eXBlOiAncHJvamVjdCcsIGlkOiBjaGlwc1Byb2plY3QucHJvamVjdElkLCBuYW1lOiBjaGlwc1Byb2plY3QucHJvamVjdE5hbWUgfVxuICAgIGlmIChjbGllbnQ/LmlkKSByZXR1cm4geyB0eXBlOiAnY2xpZW50JywgaWQ6IGNsaWVudC5pZCwgbmFtZTogY2xpZW50Lm5hbWUgfVxuICAgIHJldHVybiBudWxsXG4gIH0sIFtcbiAgICBzZWxlY3RlZENvbnRleHQsXG4gICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgdGFzaz8uaWQsXG4gICAgdGFzaz8ubmFtZSxcbiAgICBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICBjaGlwc1Byb2plY3Q/LnByb2plY3ROYW1lLFxuICAgIGNsaWVudD8uaWQsXG4gICAgY2xpZW50Py5uYW1lLFxuICBdKVxuXG4gIC8vIGVudGl0eV90eXBlIGRlbCBjb250ZXh0byBwaW5lYWRvIChwcm9qZWN0L2NsaWVudC90YXNrKSwgdG9tYWRvIGRlbCBjb250ZXh0byBnbG9iYWwuXG4gIC8vIEFwbGljYSB0YW50byBhbCBhYnJpciBNQUlBIGRlc2RlIHVuYSBzZWNjacOzbiBlc3BlY8OtZmljYSBjb21vIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbi5cbiAgY29uc3QgcGlubmVkRW50aXR5VHlwZSA9IHVzZU1lbW88UmVjZW50Q29udGV4dFR5cGUgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBpZiAodGFzaz8uaWQpIHJldHVybiAndGFzaydcbiAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgcHJvamVjdD8uaWQpIHJldHVybiAncHJvamVjdCdcbiAgICBpZiAoY2xpZW50Py5pZCkgcmV0dXJuICdjbGllbnQnXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBwcm9qZWN0Py5pZCwgY2xpZW50Py5pZF0pXG5cbiAgLy8gRW4gcHJvamVjdC9jbGllbnQvdGFzaywgY29uIGVsIHJlaW5pY2lvIGRlIGNvbnRleHRvIGVsIHVzdWFyaW8gcHVlZGUgcGluZWFyIHVuIGNvbnRleHRvIGRlIHVuXG4gIC8vIHRpcG8gZGlzdGludG8gYWwgZGUgbGEgc2VjY2nDs24gZGUgYXBlcnR1cmEgKHAuIGVqLiB1biBwcm9qZWN0IGFicmllbmRvIGRlc2RlIHVuYSB0YXJlYSwgb1xuICAvLyB2aWNldmVyc2EpLiBMYXMgRkFRcy9GVUFzIGRlYmVuIGRlcGVuZGVyIGRlbCBjb250ZXh0byByZWFsbWVudGUgcGluZWFkbywgbm8gZGUgbGEgc2VjY2nDs24gZmlqYS5cbiAgLy8gRW4gZWwgaGVhZGVyIHNlIG1hbnRpZW5lIGxhIGzDs2dpY2EgZXhpc3RlbnRlIChiYXNhZGEgZW4gZWwgY29udGV4dG8gc2VsZWNjaW9uYWRvIC8gYWN0aXZlQ29udGV4dCkuXG4gIGNvbnN0IGlzVGFza0NvbnRleHQgPSAhaXNIZWFkZXJIb21lICYmIHBpbm5lZEVudGl0eVR5cGUgPT09ICd0YXNrJ1xuICAvLyBTb2xvIEZVQXMgKHNpbiBGQVFzKTogdGFzayBwYW5lbCBvIHBsYW5uZXIuXG4gIGNvbnN0IGlzRnVhc09ubHlIb21lID0gaXNQbGFubmVySG9tZSB8fCBpc1Rhc2tDb250ZXh0XG4gIC8vIGBzZWN0aW9uYCBxdWUgc2UgY29uc3VsdGEgcGFyYSBsYXMgRlVBczogZW4gbm8taGVhZGVyIHNpZ3VlIGVsIHRpcG8gZGUgY29udGV4dG8gcGluZWFkby5cbiAgLy8gRW4gcGxhbm5lciBzZSBmdWVyemEgbGEgc2VjdGlvbiBBUEkgYHBsYW5uZXJgLlxuICBjb25zdCBmdWFzU2VjdGlvbjogU2VjdGlvbiA9ICgoKSA9PiB7XG4gICAgaWYgKGlzUGxhbm5lckhvbWUpIHJldHVybiAncGxhbm5lcidcbiAgICBpZiAoIWlzSGVhZGVySG9tZSAmJiBwaW5uZWRFbnRpdHlUeXBlKSByZXR1cm4gcGlubmVkRW50aXR5VHlwZVxuICAgIHJldHVybiBzZWN0aW9uXG4gIH0pKClcblxuICAvLyBGQVFzL2FjY2lvbmVzOlxuICAvLyAgLSBoZWFkZXItaG9tZSAob3JjaGVzdHJhdG9yKSwgcGFzbyAyOiBmaWx0cmFkYXMgcG9yIGBlbnRpdHlfdHlwZWAgZGVsIGNvbnRleHRvIHNlbGVjY2lvbmFkby5cbiAgLy8gIC0gaG9tZXMgZGUgcHJveWVjdG8vY2xpZW50ZS90YXJlYSAoc2VjY2nDs24pOiBmaWx0cmFkYXMgcG9yIGVsIGBlbnRpdHlfdHlwZWAgZGVsIGNvbnRleHRvIHNldGVhZG8uXG4gIC8vICAtIHBsYW5uZXI6IEZVQXMgY29uIHNlY3Rpb249cGxhbm5lciwgc2luIGVudGl0eV90eXBlIG5pIEZBUXMuXG4gIGNvbnN0IHJlYWxMaXN0c0FnZW50SWQgPSAoKCkgPT4ge1xuICAgIGlmICghaXNNQUlBIHx8IGlzTWFpYWtlcikgcmV0dXJuIHVuZGVmaW5lZFxuICAgIC8vIFBhc28gMSAoY29udGV4dG9zIHJlY2llbnRlcywgc2luIGNvbnRleHRvKTogbm8gc2UgcGlkZW4gRkFRcy9GVUFzLlxuICAgIGlmIChpc1JlY2VudENvbnRleHRzU3RlcCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGlmIChpc0hlYWRlckhvbWUpIHJldHVybiBpc0NvbnRleHRIb21lU3RlcCA/IGFnZW50Py5pZCA6IHVuZGVmaW5lZFxuICAgIHJldHVybiBhZ2VudD8uaWRcbiAgfSkoKVxuICBjb25zdCByZWFsTGlzdHNFbnRpdHlUeXBlID0gKCgpID0+IHtcbiAgICBpZiAoaXNQbGFubmVySG9tZSkgcmV0dXJuICdwbGFubmVyJ1xuICAgIGlmICghaXNIZWFkZXJIb21lKSByZXR1cm4gcGlubmVkRW50aXR5VHlwZVxuICAgIHJldHVybiBpc0NvbnRleHRIb21lU3RlcCA/IChhY3RpdmVDb250ZXh0Py50eXBlID8/IHBpbm5lZEVudGl0eVR5cGUpIDogdW5kZWZpbmVkXG4gIH0pKClcbiAgY29uc3QgeyBhY3Rpb25zOiBhZ2VudEZ1YXMsIGxvYWRpbmc6IGZ1YXNMb2FkaW5nIH0gPSB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMoXG4gICAgcmVhbExpc3RzQWdlbnRJZCxcbiAgICBmdWFzU2VjdGlvbixcbiAgICByZWFsTGlzdHNFbnRpdHlUeXBlXG4gIClcbiAgY29uc3QgeyBhY3Rpb25zOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhcywgbG9hZGluZzogY29sbGFib3JhdG9yUGxhbm5lckZ1YXNMb2FkaW5nIH0gPSB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMoXG4gICAgaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSAmJiAhaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkLFxuICAgICdwbGFubmVyJ1xuICApXG4gIGNvbnN0IHsgYWN0aW9uczogbWFuYWdlckhvbWVGdWFzLCBsb2FkaW5nOiBtYW5hZ2VySG9tZUZ1YXNMb2FkaW5nIH0gPSB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMoXG4gICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkLFxuICAgICdob21lX3dpdGhfaG91cnMnXG4gIClcbiAgY29uc3QgaGVhZGVySG91cnNGdWFzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSkgcmV0dXJuIHNvcnRNYW5hZ2VySG91cnNIb21lRnVhcyhtYW5hZ2VySG9tZUZ1YXMpXG4gICAgcmV0dXJuIGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzXG4gIH0sIFtpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUsIG1hbmFnZXJIb21lRnVhcywgY29sbGFib3JhdG9yUGxhbm5lckZ1YXNdKVxuICBjb25zdCBoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nID0gaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lID8gbWFuYWdlckhvbWVGdWFzTG9hZGluZyA6IGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzTG9hZGluZ1xuICBjb25zdCB7XG4gICAgZmFxczogYWdlbnRGYXFzLFxuICAgIGxvYWRpbmc6IGZhcXNMb2FkaW5nLFxuICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyxcbiAgfSA9IHVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyhyZWFsTGlzdHNBZ2VudElkLCBsYW5nLCByZWFsTGlzdHNFbnRpdHlUeXBlKVxuICBjb25zdCBmYXFzRmV0Y2hSZWYgPSB1c2VSZWY8eyBhZ2VudElkOiBzdHJpbmc7IGxhbmc6IHN0cmluZzsgZW50aXR5VHlwZT86IHN0cmluZyB9IHwgbnVsbD4obnVsbClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUYXNrIC8gcGxhbm5lcjogc29sbyBGVUFzLCBzaW4gRkFRcy5cbiAgICBpZiAoIXJlYWxMaXN0c0FnZW50SWQgfHwgaXNGdWFzT25seUhvbWUpIHJldHVyblxuICAgIGNvbnN0IGN1cnJlbnRLZXkgPSBgJHtyZWFsTGlzdHNBZ2VudElkfS0ke2xhbmd9LSR7cmVhbExpc3RzRW50aXR5VHlwZSA/PyAnYWxsJ31gXG4gICAgY29uc3QgbGFzdEtleSA9IGZhcXNGZXRjaFJlZi5jdXJyZW50XG4gICAgICA/IGAke2ZhcXNGZXRjaFJlZi5jdXJyZW50LmFnZW50SWR9LSR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQubGFuZ30tJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5lbnRpdHlUeXBlID8/ICdhbGwnfWBcbiAgICAgIDogbnVsbFxuICAgIGlmIChjdXJyZW50S2V5ICE9PSBsYXN0S2V5KSB7XG4gICAgICBmYXFzRmV0Y2hSZWYuY3VycmVudCA9IHsgYWdlbnRJZDogcmVhbExpc3RzQWdlbnRJZCwgbGFuZywgZW50aXR5VHlwZTogcmVhbExpc3RzRW50aXR5VHlwZSB9XG4gICAgICBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoeyBhZ2VudElkOiByZWFsTGlzdHNBZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlOiByZWFsTGlzdHNFbnRpdHlUeXBlIH0pXG4gICAgfVxuICB9LCBbcmVhbExpc3RzQWdlbnRJZCwgcmVhbExpc3RzRW50aXR5VHlwZSwgaXNGdWFzT25seUhvbWUsIGxhbmcsIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc10pXG5cbiAgY29uc3QgZmFxcyA9IGFnZW50RmFxc1xuICBjb25zdCBmdWFzID0gYWdlbnRGdWFzXG4gIGNvbnN0IGZhcXNBcmVMb2FkaW5nID0gZmFxc0xvYWRpbmdcbiAgY29uc3QgZnVhc0FyZUxvYWRpbmcgPSBmdWFzTG9hZGluZ1xuXG4gIGNvbnN0IHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrID0gaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgKHJlY2VudENvbnRleHRzTG9hZGluZyB8fCByZWNlbnRDb250ZXh0cy5sZW5ndGggPiAwKVxuICBjb25zdCBzaG91bGRTaG93RmFxcyA9XG4gICAgIWlzUmVjZW50Q29udGV4dHNTdGVwICYmXG4gICAgIWlzRnVhc09ubHlIb21lICYmXG4gICAgKGlzQ29udGV4dEhvbWVTdGVwIHx8ICghaXNIZWFkZXJIb21lICYmIGZhcXNBY2Nlc3MpKSAmJlxuICAgICFpc01haWFrZXIgJiZcbiAgICAoZmFxcy5sZW5ndGggPiAwIHx8IGZhcXNBcmVMb2FkaW5nKVxuICBjb25zdCBzaG91bGRTaG93RnVhcyA9XG4gICAgIWlzUmVjZW50Q29udGV4dHNTdGVwICYmICFpc01haWFrZXIgJiYgKGlzQ29udGV4dEhvbWVTdGVwIHx8ICFpc0hlYWRlckhvbWUpICYmIChmdWFzLmxlbmd0aCA+IDAgfHwgZnVhc0FyZUxvYWRpbmcpXG4gIGNvbnN0IHNob3VsZFNob3dQbGFubmVyRnVhc0xvYWRpbmcgPSBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmIGhlYWRlckhvdXJzRnVhc0xvYWRpbmcgJiYgaGVhZGVySG91cnNGdWFzLmxlbmd0aCA9PT0gMFxuICBjb25zdCBzaG91bGRTaG93UGxhbm5lckZ1YXNDb250ZW50ID0gaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSAmJiBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoID4gMFxuICBjb25zdCBzaG91bGRTaG93UGxhbm5lckZ1YXMgPSBzaG91bGRTaG93UGxhbm5lckZ1YXNMb2FkaW5nIHx8IHNob3VsZFNob3dQbGFubmVyRnVhc0NvbnRlbnRcblxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnlDYXJkID0gc2hvd1Byb2plY3RTdW1tYXJ5ICYmIGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0J1xuICBjb25zdCBzaG93RkFRcyA9ICEhKFxuICAgIHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrIHx8XG4gICAgc2hvdWxkU2hvd0ZhcXMgfHxcbiAgICBzaG91bGRTaG93RnVhcyB8fFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhcyB8fFxuICAgIHNob3dQcm9qZWN0U3VtbWFyeUNhcmQgfHxcbiAgICBpc01haWFrZXJcbiAgKVxuICBjb25zdCBob21lU2Nyb2xsYWJsZUxheW91dCA9IHNob3dGQVFzXG4gIGNvbnN0IHNob3dEeW5hbWljU2VjdGlvbiA9XG4gICAgc2hvd1JlY2VudENvbnRleHRzQmxvY2sgfHwgc2hvdWxkU2hvd0ZhcXMgfHwgc2hvdWxkU2hvd0Z1YXMgfHwgc2hvdWxkU2hvd1BsYW5uZXJGdWFzIHx8IGlzTWFpYWtlclxuXG4gIC8vIEzDs2dpY2EgZGVsIHNjcm9sbCBjb24gZ3JhZGllbnRlc1xuICBjb25zdCBjb250ZW50Q29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbc2hvd1RvcEdyYWRpZW50LCBzZXRTaG93VG9wR3JhZGllbnRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93Qm90dG9tR3JhZGllbnQsIHNldFNob3dCb3R0b21HcmFkaWVudF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzU2Nyb2xsaW5nLCBzZXRJc1Njcm9sbGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsVGltZW91dFJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG5cbiAgLy8gU2FsdWRvIGZpam8gcG9yIHRpcG8gZGUgY29udGV4dG8gKGkxOG4pLiBDdXN0b20gYWdlbnRzIHNpZ3VlbiB1c2FuZG8gYWdlbnQuaW50cm9kdWN0aW9uLlxuICAvLyBQbGFubmVyIHVzYSB0w610dWxvICsgYmFqYWRhIHByb3Bpb3MgKGBwbGFubmVySG9tZWApLCBubyBlc3RlIGdyZWV0aW5nLlxuICBjb25zdCBncmVldGluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc01haWFrZXIgfHwgaXNQbGFubmVySG9tZSB8fCBpc1JlY2VudENvbnRleHRzU3RlcCkgcmV0dXJuICcnXG5cbiAgICBpZiAoaXNNQUlBICYmIHBpbm5lZEVudGl0eVR5cGUpIHtcbiAgICAgIHJldHVybiB0KGBob21lTWVudS5jb250ZXh0SG9tZS5jb250ZXh0R3JlZXRpbmcuJHtwaW5uZWRFbnRpdHlUeXBlfWApXG4gICAgfVxuXG4gICAgY29uc3QgaW50cm8gPSBhZ2VudD8uaW50cm9kdWN0aW9uXG4gICAgaWYgKCFpbnRybykgcmV0dXJuICcnXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW50cm8pICYmIGludHJvLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBpbnRyb1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBpbnRyby5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGludHJvID09PSAnc3RyaW5nJyA/IGludHJvIDogJydcbiAgfSwgW2FnZW50Py5pZCwgYWdlbnQ/LmludHJvZHVjdGlvbiwgaXNNYWlha2VyLCBpc1BsYW5uZXJIb21lLCBpc01BSUEsIHBpbm5lZEVudGl0eVR5cGUsIGlzUmVjZW50Q29udGV4dHNTdGVwLCB0XSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRleHQ6IFJlY2VudENvbnRleHRJdGVtLCBvcmRlcjogbnVtYmVyKSA9PiB7XG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0Q29udGV4dFNlbGVjdGVkLCB7IG9yZGVyLCB0eXBlOiBjb250ZXh0LnR5cGUgfSlcblxuICAgICAgY29uc3QgY29udGV4dElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5pZClcbiAgICAgIGNvbnN0IGNsaWVudElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5wYXJlbnRzPy5jbGllbnRfaWQpXG4gICAgICBjb25zdCBwcm9qZWN0SWQgPSBwYXJzZU51bWVyaWNJZChjb250ZXh0LnBhcmVudHM/LnByb2plY3RfaWQpXG4gICAgICBjb25zdCBjbGllbnROYW1lID0gY29udGV4dC5wYXJlbnRzPy5jbGllbnRfbmFtZSB8fCAnJ1xuICAgICAgY29uc3QgcHJvamVjdE5hbWUgPSBjb250ZXh0LnBhcmVudHM/LnByb2plY3RfbmFtZSB8fCAnJ1xuXG4gICAgICBzZXRTZWxlY3RlZENvbnRleHQoY29udGV4dClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgaWYgKGNvbnRleHRJZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgc2V0Q2xpZW50Py4oeyBpZDogY29udGV4dElkLCBuYW1lOiBjb250ZXh0Lm5hbWUgfSlcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC50eXBlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgaWYgKGNvbnRleHRJZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgaWQ6IGNvbnRleHRJZCxcbiAgICAgICAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudDogeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGNvbnRleHRJZCksXG4gICAgICAgICAgcHJvamVjdE5hbWU6IGNvbnRleHQubmFtZSxcbiAgICAgICAgICBjbGllbnROYW1lLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChjb250ZXh0LnR5cGUgPT09ICd0YXNrJykge1xuICAgICAgICBzZXRUYXNrKHtcbiAgICAgICAgICBpZDogY29udGV4dC5pZCxcbiAgICAgICAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCAhPSBudWxsID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGNsaWVudElkICE9IG51bGwpIHtcbiAgICAgICAgICBzZXRDbGllbnQ/Lih7IGlkOiBjbGllbnRJZCwgbmFtZTogY2xpZW50TmFtZSB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgICAgaWQ6IHByb2plY3RJZCxcbiAgICAgICAgICAgIG5hbWU6IHByb2plY3ROYW1lIHx8IGAke3QoJ2hvbWVNZW51LnJlY2VudENvbnRleHRzLnR5cGVzLnByb2plY3QnKX0gJHtwcm9qZWN0SWR9YCxcbiAgICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZCB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudDogeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZCksXG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWUgfHwgYCR7dCgnaG9tZU1lbnUucmVjZW50Q29udGV4dHMudHlwZXMucHJvamVjdCcpfSAke3Byb2plY3RJZH1gLFxuICAgICAgICAgICAgY2xpZW50TmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdtYWlhLWlucHV0LXJlZm9jdXMnKSlcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZXZlbnQsIHNldENoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlSG9tZVN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBudWxsLFxuICAgICAgZnVhSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgJiYgZnVhSWQpIHtcbiAgICAgICAgZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgICBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgICAgICAgICBzZXRUYXNrKG51bGwpXG4gICAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBvblN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQpXG4gICAgfSxcbiAgICBbaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBvblN0YXJ0Q2hhdCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdXG4gIClcblxuICBjb25zdCByZW5kZXJSZWNlbnRDb250ZXh0cyA9ICgpID0+IHtcbiAgICBpZiAoIWlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1xuICAgICAgICAkZml4ZWRDb250ZW50V2lkdGg9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCA6IHVuZGVmaW5lZH1cbiAgICAgID5cbiAgICAgICAge2lzSGVhZGVySG91cnNBZ2VudEhvbWUgPyAoXG4gICAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRDb250ZXh0c1NlY3Rpb25NYW5hZ2VyLnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnRpdGxlJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRDb250ZXh0c1NlY3Rpb25NYW5hZ2VyLnN1YnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnN1YnRpdGxlJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QgJGZsdXNoUGlsbHM9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lfT5cbiAgICAgICAgICB7cmVjZW50Q29udGV4dHNMb2FkaW5nICYmXG4gICAgICAgICAgICBSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTLm1hcChrZXkgPT4gPFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24ga2V5PXtrZXl9IC8+KX1cbiAgICAgICAgICB7IXJlY2VudENvbnRleHRzTG9hZGluZyAmJlxuICAgICAgICAgICAgcmVjZW50Q29udGV4dHMubWFwKChjb250ZXh0LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8UmVjZW50Q29udGV4dFBpbGxcbiAgICAgICAgICAgICAgICBrZXk9e2Ake2NvbnRleHQudHlwZX0tJHtjb250ZXh0LmlkfWB9XG4gICAgICAgICAgICAgICAgY29udGV4dD17Y29udGV4dH1cbiAgICAgICAgICAgICAgICBsYWJlbD17Y29udGV4dC5uYW1lLnRyaW0oKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0KGNvbnRleHQsIGluZGV4ICsgMSl9XG4gICAgICAgICAgICAgICAgZnVsbFdpZHRoPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdD5cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHM+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgY2hlY2tTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSByZXR1cm5cblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgY29uc3QgaXNTY3JvbGxhYmxlID0gc2Nyb2xsSGVpZ2h0ID4gY2xpZW50SGVpZ2h0XG4gICAgY29uc3QgaXNBdFRvcCA9IHNjcm9sbFRvcCA9PT0gMFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMVxuXG4gICAgc2V0U2hvd1RvcEdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdFRvcClcbiAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoaXNTY3JvbGxhYmxlICYmICFpc0F0Qm90dG9tKVxuICB9LCBbaG9tZVNjcm9sbGFibGVMYXlvdXRdKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjaGVja1Njcm9sbCgpXG4gICAgc2V0SXNTY3JvbGxpbmcodHJ1ZSlcblxuICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRJc1Njcm9sbGluZyhmYWxzZSlcbiAgICB9LCAxNTApXG4gIH0sIFtjaGVja1Njcm9sbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSB7XG4gICAgICBzZXRTaG93VG9wR3JhZGllbnQoZmFsc2UpXG4gICAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoZmFsc2UpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlZHVsZUNoZWNrU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2hlY2tTY3JvbGwoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzY2hlZHVsZUNoZWNrU2Nyb2xsKClcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoc2NoZWR1bGVDaGVja1Njcm9sbClcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcilcbiAgICBjb25zdCBzY3JvbGxDb250ZW50ID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkXG4gICAgaWYgKHNjcm9sbENvbnRlbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHNjcm9sbENvbnRlbnQpXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoc2NoZWR1bGVDaGVja1Njcm9sbCwgMTAwKVxuICAgIGNvbnN0IGxhdGVUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChzY2hlZHVsZUNoZWNrU2Nyb2xsLCA0MDApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgIGNsZWFyVGltZW91dChsYXRlVGltZW91dElkKVxuICAgICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0LCBjaGVja1Njcm9sbCwgaGFuZGxlU2Nyb2xsXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaG9tZVNjcm9sbGFibGVMYXlvdXQpIHJldHVyblxuICAgIGNoZWNrU2Nyb2xsKClcbiAgfSwgW1xuICAgIGhvbWVTY3JvbGxhYmxlTGF5b3V0LFxuICAgIGNoZWNrU2Nyb2xsLFxuICAgIHJlY2VudENvbnRleHRzTG9hZGluZyxcbiAgICByZWNlbnRDb250ZXh0cy5sZW5ndGgsXG4gICAgaGVhZGVySG91cnNGdWFzTG9hZGluZyxcbiAgICBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoLFxuICAgIGZ1YXNMb2FkaW5nLFxuICAgIGZ1YXMubGVuZ3RoLFxuICAgIGZhcXNBcmVMb2FkaW5nLFxuICAgIGZhcXMubGVuZ3RoLFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhcyxcbiAgICBpc01haWFrZXIsXG4gIF0pXG5cbiAgY29uc3QgcmVuZGVySGVhZGVyQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzTUFJQSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgICAgICA8U0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgICAge2FnZW50Py5lbW9qaX0ge2FnZW50Py5uYW1lfVxuICAgICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgIHthZ2VudD8uY3JlYXRlZF9ieSAmJiAhaXNNQUlBICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgYWdlbnQ/LmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWQgPyB0KCdob21lTWVudS5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpIDogdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT57YWdlbnQ/LmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRBbGlnblN0YXJ0ID0gaXNQbGFubmVySG9tZSB8fCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZVxuXG4gICAgY29uc3QgbWFpYUhlYWRlclN0YWNrTmVlZHNHYXAgPVxuICAgICAgKGlzUmVjZW50Q29udGV4dHNTdGVwICYmICFpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiAhaXNQbGFubmVySG9tZSkgfHxcbiAgICAgICghaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiZcbiAgICAgICAgISFncmVldGluZyAmJlxuICAgICAgICAhaXNQbGFubmVySG9tZSAmJlxuICAgICAgICAhaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiZcbiAgICAgICAgIWlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2sgJG5vR2FwPXshbWFpYUhlYWRlclN0YWNrTmVlZHNHYXB9ICRhbGlnbj17Y29udGVudEFsaWduU3RhcnQgPyAnc3RhcnQnIDogJ2NlbnRlcid9PlxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmICFpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICAgICA8U0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgICAgICAgIDxNQUlBSXNvbG9nbyAvPlxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICA8L1NDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1BsYW5uZXJIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRzaXplPVwibWRcIiAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUucGxhbm5lckhvbWUudGl0bGUnKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPVwic3RhcnRcIj57dCgnaG9tZU1lbnUucGxhbm5lckhvbWUuc3VidGl0bGUnKX08L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGVCbG9jaz5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmIGlzUmVjZW50Q29udGV4dHNTdGVwICYmIGlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiICRmdWxsV2lkdGg+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJHNpemU9XCJjb250ZXh0XCIgJGFsaWduPVwic3RhcnRcIiAkZnVsbFdpZHRoPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUuZ3JlZXRpbmcnLCB7IG5hbWU6IHVzZXIuZmlyc3ROYW1lIH0pfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249XCJzdGFydFwiICRjb2xsYWJvcmF0b3JIb21lPlxuICAgICAgICAgICAgICB7dChoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZUJsb2NrPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRhbGlnbj17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnc3RhcnQnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNvbnRleHRIb21lLmdyZWV0aW5nJywgeyBuYW1lOiB1c2VyLmZpcnN0TmFtZSB9KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAgICB7dChcbiAgICAgICAgICAgICAgICBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVDb2xsYWJvcmF0b3InXG4gICAgICAgICAgICAgICAgICA6ICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgZ3JlZXRpbmcgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVHcmVldGluZ1xuICAgICAgICAgICAgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAkc2l6ZT17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnbWQnIDogJ2xnJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Z3JlZXRpbmd9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVHcmVldGluZz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lTWFpYUhlYWRlclN0YWNrPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGZpeGVkSG9tZUNvbnRlbnRXaWR0aCA9XG4gICAgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgfHwgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWVcbiAgICAgID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWFxuICAgICAgOiB1bmRlZmluZWRcbiAgY29uc3QgY29udGVudEFsaWduU3RhcnQgPSBpc1BsYW5uZXJIb21lIHx8IGlzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lXG4gIGNvbnN0IHNob3dBZ2VudEludHJvZHVjdGlvbiA9IHNlY3Rpb24gIT09ICdwcm9qZWN0JyAmJiAhaXNNQUlBICYmICEhYWdlbnQ/LmludHJvZHVjdGlvblxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJSG9tZUNvbnRhaW5lciBzaG93RkFRcz17c2hvd0ZBUXN9ICRhbGlnblN0YXJ0PXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX0+XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50VG9wICRzaG93PXtzaG93VG9wR3JhZGllbnR9IC8+fVxuICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRcbiAgICAgICAgcmVmPXtjb250ZW50Q29udGFpbmVyUmVmfVxuICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICRhbGlnblN0YXJ0PXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX1cbiAgICAgICAgJGZpeGVkQ29udGVudFdpZHRoPXtmaXhlZEhvbWVDb250ZW50V2lkdGh9XG4gICAgICA+XG4gICAgICAgIDxTQ0NBSUhvbWVDb250ZW50SW5uZXJcbiAgICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAgICRmbG9hdGluZ0N1c3RvbUNlbnRlcj17ZmxvYXRpbmdDdXN0b21DZW50ZXJ9XG4gICAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICAgJGFsaWduU3RhcnQ9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAgICRoZWFkZXJDb2xsYWJvcmF0b3JIb21lPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX1cbiAgICAgICAgICAkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWU9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICA+XG4gICAgICAgICAgPFNDQ0FJSG9tZUhlYWRlclxuICAgICAgICAgICAgJGdhcD17c2hvd0FnZW50SW50cm9kdWN0aW9uID8gJzIwcHgnIDogJzAnfVxuICAgICAgICAgICAgJG1heFdpZHRoPXtpc01BSUEgPyAnMTAwJScgOiAnMzgwcHgnfVxuICAgICAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAgICAgJGFsaWduPXtjb250ZW50QWxpZ25TdGFydCA/ICdzdGFydCcgOiAnY2VudGVyJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmVuZGVySGVhZGVyQ29udGVudCgpfVxuXG4gICAgICAgICAgICB7c2hvd0FnZW50SW50cm9kdWN0aW9uID8gKFxuICAgICAgICAgICAgICA8U0NDQUlIb21lSW50cm9kdWN0aW9uIGV4cGFuZGVkPXtleHBhbmRlZH0+e2FnZW50LmludHJvZHVjdGlvbn08L1NDQ0FJSG9tZUludHJvZHVjdGlvbj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NDQUlIb21lSGVhZGVyPlxuICAgICAgICAgIHtzaG93UHJvamVjdFN1bW1hcnlDYXJkICYmIChcbiAgICAgICAgICAgIDxTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCBvbkNsaWNrPXtoYW5kbGVycy5wcm9qZWN0U3VtbWFyeX0+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeT5cbiAgICAgICAgICAgICAgICA8VGVtcGxhdGVHcmFkaWVudEljb24gaGVpZ2h0PXsyNH0gd2lkdGg9ezI0fSAvPlxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5PlxuICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlPnt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS50aXRsZScpfTwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgIHt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS5kZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQ+XG4gICAgICAgICAgICA8L1NDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3Nob3dEeW5hbWljU2VjdGlvbiAmJiAoXG4gICAgICAgICAgICA8U0NDQUlIb21lRHluYW1pY1NlY3Rpb25cbiAgICAgICAgICAgICAgJGdyb3c9e2lzTWFpYWtlcn1cbiAgICAgICAgICAgICAgJGFsaWduU3RhcnQ9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7c2hvdWxkU2hvd1BsYW5uZXJGdWFzID8gKFxuICAgICAgICAgICAgICAgIDxGcmVxdWVudGx5VXNlZEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwbGFubmVyXCJcbiAgICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtoYW5kbGVIb21lU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17aGVhZGVySG91cnNGdWFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17aGVhZGVySG91cnNGdWFzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3JlbmRlclJlY2VudENvbnRleHRzKCl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RmFxcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgc2hvd0ZBUXM9e3Nob3dGQVFzfVxuICAgICAgICAgICAgICAgICAgc2hvd1Byb2plY3RTdW1tYXJ5PXtzaG93UHJvamVjdFN1bW1hcnl9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBsYW5nPXtsYW5nfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgZmFxcz17ZmFxc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2ZhcXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RnVhcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlVc2VkQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17ZnVhc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2Z1YXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpc01haWFrZXIgPyA8Q2hhdEFJSG9tZU1haWFrZXIgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fSAvPiA6IG51bGx9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQ29udGVudElubmVyPlxuICAgICAgPC9TQ0NBSUhvbWVDb250ZW50PlxuICAgICAge2hvbWVTY3JvbGxhYmxlTGF5b3V0ICYmIDxTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSAkc2hvdz17c2hvd0JvdHRvbUdyYWRpZW50fSAvPn1cbiAgICA8L1NDQ0FJSG9tZUNvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBQzFGLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBRXJDLFNBQVNDLE9BQU8sUUFBUSw4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
|
|
666
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsImZsdXNoU3luYyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbiIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24iLCJNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJDT1JVc2VyUm9sZSIsImlzQ29sbGFib3JhdG9yUm9sZSIsImlzTWFuYWdlclJvbGUiLCJ1c2VSZXNpemVMaXN0ZW5lciIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFpYWtlckFnZW50IiwiRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwidXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwic29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzIiwidXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwidXNlUmVjZW50Q29udGV4dHMiLCJ1c2VVc2FnZVN0b3JlIiwiTUFJQUlzb2xvZ28iLCJUZW1wbGF0ZUdyYWRpZW50SWNvbiIsIkNoYXRBSUhvbWVNYWlha2VyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiRnJlcXVlbnRRdWVzdGlvbnMiLCJSRUNFTlRfQ09OVEVYVFNfTElNSVQiLCJSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SIiwiUkVDRU5UX0NPTlRFWFRfSUNPTl9TSVpFX1BYIiwiUkVDRU5UX0NPTlRFWFRfU0tFTEVUT05fS0VZUyIsIlJlY2VudENvbnRleHRQaWxsIiwiX3JlZiIsImNvbnRleHQiLCJsYWJlbCIsIm9uQ2xpY2siLCJfcmVmJGZ1bGxXaWR0aCIsImZ1bGxXaWR0aCIsIl9yZWYkZGlzYWJsZWQiLCJkaXNhYmxlZCIsInRleHRSZWYiLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJzaG93VG9vbHRpcCIsInR5cGUiLCJ1bmRlZmluZWQiLCIkZnVsbFdpZHRoIiwiJGRpc2FibGVkIiwiY2hpbGRyZW4iLCJjb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwicmVmIiwidGl0bGUiLCJwYXJzZU51bWVyaWNJZCIsInZhbHVlIiwicGFyc2VkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzIiwicm9sZUlkIiwibm9ybWFsaXplZFJvbGVJZCIsIkNMRVZFTCIsIkRJUkVDVE9SIiwiUFJPSkVDVF9NQU5BR0VSIiwiU2V0IiwiQ2hhdEFJSG9tZSIsIl9yZWYyIiwiaGFuZGxlcnMiLCJvblN0YXJ0Q2hhdCIsImV4cGFuZGVkIiwiZmxvYXRpbmciLCJfdXNlVCIsInQiLCJpMThuIiwiZXZlbnQiLCJ1c2VyIiwiX3VzZUdsb2JhbENvbnRleHQiLCJhZ2VudCIsInNlY3Rpb24iLCJjbGllbnQiLCJwcm9qZWN0IiwidGFzayIsImNoaXBzUHJvamVjdCIsInNldENsaWVudCIsInNldFByb2plY3QiLCJzZXRUYXNrIiwic2V0Q2hpcHNQcm9qZWN0IiwidXNhZ2VCbG9ja2VkIiwic3RhdGUiLCJibG9ja2VkIiwiaXNNQUlBIiwiZmxvYXRpbmdDdXN0b21DZW50ZXIiLCJsYW5nIiwibGFuZ3VhZ2UiLCJzdW1tYXJ5UHJvamVjdEFjY2VzcyIsIndpbmRvdyIsIlN0cmluZyIsIk1BSUFfUFJPSkVDVF9TVU1NQVJZX0ZFQVRVUkVfQUNDRVNTIiwidG9Mb3dlckNhc2UiLCJtYWlhUHJvamVjdFN1bW1hcnlBY2Nlc3MiLCJmYXFzQWNjZXNzIiwic2hvd1Byb2plY3RTdW1tYXJ5IiwiaXNNYWlha2VyIiwiaXNIZWFkZXJIb21lIiwiaXNPcmNoZXN0cmF0b3IiLCJpc1BsYW5uZXJIb21lIiwiaXNTZWN0aW9uT3JjaGVzdHJhdG9ySG9tZSIsImhhc0hvdXJzU3ViYWdlbnQiLCJoYXNQaW5uZWRDb250ZXh0IiwiaWQiLCJwcm9qZWN0SWQiLCJpc1JlY2VudENvbnRleHRzU3RlcCIsImlzSGVhZGVyVGFza0NvbnRleHRIb21lIiwicm9sZV9pZCIsImlzSGVhZGVySG91cnNBZ2VudEhvbWUiLCJpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUiLCJoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5IiwiaXNDb250ZXh0SG9tZVN0ZXAiLCJpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSIsImFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMiLCJfdXNlUmVjZW50Q29udGV4dHMiLCJlbmFibGVkIiwibGltaXQiLCJmZXRjaGVkUmVjZW50Q29udGV4dHMiLCJjb250ZXh0cyIsInJlY2VudENvbnRleHRzTG9hZGluZyIsImxvYWRpbmciLCJyZWNlbnRDb250ZXh0cyIsImZpbHRlciIsImhhcyIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlbGVjdGVkQ29udGV4dCIsInNldFNlbGVjdGVkQ29udGV4dCIsImFjdGl2ZUNvbnRleHQiLCJuYW1lIiwicHJvamVjdE5hbWUiLCJwaW5uZWRFbnRpdHlUeXBlIiwiZmFxc0NvbnRleHRFbnRpdHlUeXBlIiwiX2FjdGl2ZUNvbnRleHQkdHlwZSIsImlzQ2xpZW50Q29udGV4dEZvckZhcXMiLCJmdWFzU2VjdGlvbiIsInJlYWxMaXN0c0FnZW50SWQiLCJyZWFsTGlzdHNFbnRpdHlUeXBlIiwiX2FjdGl2ZUNvbnRleHQkdHlwZTIiLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QiLCJhZ2VudEZ1YXMiLCJhY3Rpb25zIiwiZnVhc0xvYWRpbmciLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QyIiwiY29sbGFib3JhdG9yUGxhbm5lckZ1YXMiLCJjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmciLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QzIiwibWFuYWdlckhvbWVGdWFzIiwibWFuYWdlckhvbWVGdWFzTG9hZGluZyIsImhlYWRlckhvdXJzRnVhcyIsImhlYWRlckhvdXJzRnVhc0xvYWRpbmciLCJmYXFzTGlzdEFnZW50SWQiLCJmYXFzTGlzdEVudGl0eVR5cGUiLCJfdXNlRnJlcXVlbnRseUFza2VkUXUiLCJhZ2VudEZhcXMiLCJmYXFzIiwiZmFxc0xvYWRpbmciLCJoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJmYXFzRmV0Y2hSZWYiLCJfZmFxc0ZldGNoUmVmJGN1cnJlbnQiLCJjdXJyZW50S2V5IiwiY29uY2F0IiwibGFzdEtleSIsImN1cnJlbnQiLCJhZ2VudElkIiwiZW50aXR5VHlwZSIsImZ1YXMiLCJmYXFzQXJlTG9hZGluZyIsImZ1YXNBcmVMb2FkaW5nIiwic2hvd1JlY2VudENvbnRleHRzQmxvY2siLCJsZW5ndGgiLCJzaG91bGRTaG93RmFxcyIsInNob3VsZFNob3dGdWFzIiwic2hvdWxkU2hvd1BsYW5uZXJGdWFzTG9hZGluZyIsInNob3VsZFNob3dQbGFubmVyRnVhc0NvbnRlbnQiLCJzaG91bGRTaG93UGxhbm5lckZ1YXMiLCJzaG93UHJvamVjdFN1bW1hcnlDYXJkIiwiZW50aXR5Iiwic2hvd0ZBUXMiLCJob21lU2Nyb2xsYWJsZUxheW91dCIsInNob3dEeW5hbWljU2VjdGlvbiIsImNvbnRlbnRDb250YWluZXJSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNob3dUb3BHcmFkaWVudCIsInNldFNob3dUb3BHcmFkaWVudCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd0JvdHRvbUdyYWRpZW50Iiwic2V0U2hvd0JvdHRvbUdyYWRpZW50IiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc1Njcm9sbGluZyIsInNldElzU2Nyb2xsaW5nIiwic2Nyb2xsVGltZW91dFJlZiIsImdyZWV0aW5nIiwiaW50cm8iLCJpbnRyb2R1Y3Rpb24iLCJBcnJheSIsImlzQXJyYXkiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0Iiwib3JkZXIiLCJfY29udGV4dCRwYXJlbnRzIiwiX2NvbnRleHQkcGFyZW50czIiLCJfY29udGV4dCRwYXJlbnRzMyIsIl9jb250ZXh0JHBhcmVudHM0IiwiYWlDaGF0Q29udGV4dFNlbGVjdGVkIiwiY29udGV4dElkIiwiY2xpZW50SWQiLCJwYXJlbnRzIiwiY2xpZW50X2lkIiwicHJvamVjdF9pZCIsImNsaWVudE5hbWUiLCJjbGllbnRfbmFtZSIsInByb2plY3RfbmFtZSIsIl9vYmplY3RTcHJlYWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZUhvbWVTdGFydENoYXQiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInJlbmRlclJlY2VudENvbnRleHRzIiwiJGZpeGVkQ29udGVudFdpZHRoIiwiJGZsdXNoUGlsbHMiLCJtYXAiLCJrZXkiLCJpbmRleCIsInRyaW0iLCJjaGVja1Njcm9sbCIsImNvbnRhaW5lciIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzU2Nyb2xsYWJsZSIsImlzQXRUb3AiLCJpc0F0Qm90dG9tIiwiaGFuZGxlU2Nyb2xsIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInNjaGVkdWxlQ2hlY2tTY3JvbGwiLCJhZGRFdmVudExpc3RlbmVyIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJzY3JvbGxDb250ZW50IiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJFbGVtZW50IiwidGltZW91dElkIiwibGF0ZVRpbWVvdXRJZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkaXNjb25uZWN0IiwicmVuZGVySGVhZGVyQ29udGVudCIsIl9hZ2VudCRjcmVhdGVkX2J5IiwiX2FnZW50JGNyZWF0ZWRfYnkyIiwiZW1vamkiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbnRlbnRBbGlnblN0YXJ0IiwibWFpYUhlYWRlclN0YWNrTmVlZHNHYXAiLCIkbm9HYXAiLCIkYWxpZ24iLCIkc2l6ZSIsImZpcnN0TmFtZSIsIiRjb2xsYWJvcmF0b3JIb21lIiwiZml4ZWRIb21lQ29udGVudFdpZHRoIiwic2hvd0FnZW50SW50cm9kdWN0aW9uIiwiJGFsaWduU3RhcnQiLCIkc2hvdyIsIiRpc0FnZW50VmlldyIsIiRmbG9hdGluZ0N1c3RvbUNlbnRlciIsIiRjZW50ZXJWZXJ0aWNhbGx5IiwiJGhlYWRlckNvbGxhYm9yYXRvckhvbWUiLCIkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWUiLCIkZ2FwIiwiJG1heFdpZHRoIiwicHJvamVjdFN1bW1hcnkiLCIkZ3JvdyIsInZhcmlhbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJSG9tZS9DaGF0QUlIb21lLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGZsdXNoU3luYyB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTGlzdENoZWNrbGlzdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0xpc3RDaGVja2xpc3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxuaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJy4uL0NoYXRBSU1vZGFsL2NvbnN0YW50cydcblxuaW1wb3J0IHtcbiAgU0NDQUlIb21lQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVDb250ZW50LFxuICBTQ0NBSUhvbWVDb250ZW50SW5uZXIsXG4gIFNDQ0FJSG9tZUdyYWRpZW50VG9wLFxuICBTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSxcbiAgU0NDQUlIb21lSGVhZGVyLFxuICBTQ0NBSUhvbWVHcmVldGluZyxcbiAgU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVBZ2VudEluZm8sXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5LFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGUsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24sXG4gIFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0LFxuICBTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24sXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dCxcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWUsXG4gIFNDQ0FJSG9tZUljb25Db250YWluZXIsXG4gIFNDQ0FJSG9tZUxvZ29XcmFwcGVyLFxuICBTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2ssXG4gIFNDQ0FJSG9tZVRpdGxlLFxuICBTQ0NBSUhvbWVUaXRsZUJsb2NrLFxuICBTQ0NBSUhvbWVTdWJ0aXRsZSxcbiAgU0NDQUlIb21lRHluYW1pY1NlY3Rpb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24sXG4gIE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFgsXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXJSb2xlLCBpc0NvbGxhYm9yYXRvclJvbGUsIGlzTWFuYWdlclJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkljb25zJ1xuaW1wb3J0IHsgb3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29yY2hlc3RyYXRvclN1YmFnZW50cydcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01haWFrZXJBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyBGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyBzb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyB1c2VSZWNlbnRDb250ZXh0cyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlY2VudENvbnRleHRzJ1xuaW1wb3J0IHsgdXNlVXNhZ2VTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZVVzYWdlU3RvcmUnXG5pbXBvcnQgdHlwZSB7IFJlY2VudENvbnRleHRJdGVtLCBSZWNlbnRDb250ZXh0VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL01BSUFJc29sb2dvJ1xuaW1wb3J0IHsgVGVtcGxhdGVHcmFkaWVudEljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9UZW1wbGF0ZUdyYWRpZW50SWNvbidcbmltcG9ydCB7IENoYXRBSUhvbWVNYWlha2VyIH0gZnJvbSAnLi9DaGF0QUlIb21lTWFpYWtlcidcblxudHlwZSBDaGF0QUlIb21lUHJvcHMgPSB7XG4gIG9uU3RhcnRDaGF0OiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgbWVudGlvbnM/OiBudWxsLFxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBoYW5kbGVyczogUmVjb3JkPG9wdGlvbnMsICgpID0+IHZvaWQ+XG4gIGV4cGFuZGVkPzogYm9vbGVhblxuICBmbG9hdGluZz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGVudW0gRnJlcXVlbnRRdWVzdGlvbnMge1xuICByZW50YWJpbGlkYWRfcHJveWVjdG8gPSAncmVudGFiaWxpZGFkX3Byb3llY3RvJyxcbiAgYXZhbmNlX3Byb3llY3RvID0gJ2F2YW5jZV9wcm95ZWN0bycsXG59XG5cbmNvbnN0IFJFQ0VOVF9DT05URVhUU19MSU1JVCA9IDlcbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IgPSAnIzRENEQ0RCdcbmNvbnN0IFJFQ0VOVF9DT05URVhUX0lDT05fU0laRV9QWCA9IDE1XG5jb25zdCBSRUNFTlRfQ09OVEVYVF9TS0VMRVRPTl9LRVlTID0gW1xuICAncmVjZW50LWNvbnRleHQtc2tlbGV0b24tMScsXG4gICdyZWNlbnQtY29udGV4dC1za2VsZXRvbi0yJyxcbiAgJ3JlY2VudC1jb250ZXh0LXNrZWxldG9uLTMnLFxuXVxuXG5jb25zdCBSZWNlbnRDb250ZXh0UGlsbCA9ICh7XG4gIGNvbnRleHQsXG4gIGxhYmVsLFxuICBvbkNsaWNrLFxuICBmdWxsV2lkdGggPSBmYWxzZSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbn06IHtcbiAgY29udGV4dDogUmVjZW50Q29udGV4dEl0ZW1cbiAgbGFiZWw6IHN0cmluZ1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkXG4gIGZ1bGxXaWR0aD86IGJvb2xlYW5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG59KSA9PiB7XG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbbGFiZWxdKVxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIG9uQ2xpY2s9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogb25DbGlja31cbiAgICAgICRmdWxsV2lkdGg9e2Z1bGxXaWR0aH1cbiAgICAgICRkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBhcmlhLWRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uPlxuICAgICAgICB7Y29udGV4dC50eXBlID09PSAndGFzaycgPyAoXG4gICAgICAgICAgPExpc3RDaGVja2xpc3QgY29sb3I9e1JFQ0VOVF9DT05URVhUX0lDT05fQ09MT1J9IHdpZHRoPVwiMTVweFwiIGhlaWdodD1cIjE1cHhcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGdldENvbnRleHRNZW50aW9uSWNvbihjb250ZXh0LnR5cGUsIFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IsIHVuZGVmaW5lZCwgUkVDRU5UX0NPTlRFWFRfSUNPTl9TSVpFX1BYKVxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0IHJlZj17dGV4dFJlZn0+XG4gICAgICAgIHtzaG93VG9vbHRpcCA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17bGFiZWx9PlxuICAgICAgICAgICAgPHNwYW4+e2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0PlxuICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGw+XG4gIClcbn1cblxuY29uc3QgcGFyc2VOdW1lcmljSWQgPSAodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKVxuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG59XG5cbmNvbnN0IGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSAocm9sZUlkPzogQ09SVXNlclJvbGUgfCBudW1iZXIgfCBzdHJpbmcpOiBTZXQ8UmVjZW50Q29udGV4dFR5cGU+ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFJvbGVJZCA9IE51bWJlcihyb2xlSWQpXG4gIGlmIChcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5DTEVWRUwgfHxcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5ESVJFQ1RPUiB8fFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLlBST0pFQ1RfTUFOQUdFUlxuICApIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snXSlcbiAgfVxuICBpZiAoaXNDb2xsYWJvcmF0b3JSb2xlKHJvbGVJZCkpIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ3Rhc2snXSlcbiAgfVxuICByZXR1cm4gbmV3IFNldCgpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlIb21lID0gKHsgaGFuZGxlcnMsIG9uU3RhcnRDaGF0LCBleHBhbmRlZCwgZmxvYXRpbmcgfTogQ2hhdEFJSG9tZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQsIHNlY3Rpb24sIGNsaWVudCwgcHJvamVjdCwgdGFzaywgY2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCB9ID1cbiAgICB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgdXNhZ2VCbG9ja2VkID0gdXNlVXNhZ2VTdG9yZShzdGF0ZSA9PiBzdGF0ZS5ibG9ja2VkKVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuICBjb25zdCBmbG9hdGluZ0N1c3RvbUNlbnRlciA9ICEhKGZsb2F0aW5nICYmIGFnZW50Py50eXBlID09PSAnY3VzdG9tJylcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQnIDogaTE4bi5sYW5ndWFnZVxuXG4gIGNvbnN0IHN1bW1hcnlQcm9qZWN0QWNjZXNzID1cbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIChTdHJpbmcod2luZG93Lk1BSUFfUFJPSkVDVF9TVU1NQVJZX0ZFQVRVUkVfQUNDRVNTKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgfHxcbiAgICAgIFN0cmluZyh3aW5kb3cubWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpXG4gIGNvbnN0IGZhcXNBY2Nlc3MgPSB0cnVlXG4gIGNvbnN0IHNob3dQcm9qZWN0U3VtbWFyeSA9ICEhKGlzTUFJQSAmJiBzdW1tYXJ5UHJvamVjdEFjY2VzcylcbiAgLy8gRWwgb3JjaGVzdHJhdG9yICh0eXBlID09PSAnb3JjaGVzdHJhdG9yJykgbXVlc3RyYSBGQVFzL0ZVQXMgYWdyZWdhZGFzIGRlIHN1cyBzdWJhZ2VudGVzLFxuICAvLyBhc8OtIHF1ZSBOTyBzZSB0cmF0YSBjb21vIG1haWFrZXIgYWPDoS5cbiAgY29uc3QgaXNNYWlha2VyID0gaXNNYWlha2VyQWdlbnQoYWdlbnQpXG4gIGNvbnN0IGlzSGVhZGVySG9tZSA9IGlzTUFJQSAmJiBzZWN0aW9uID09PSAnaGVhZGVyJyAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgLy8gRWwgb3JjaGVzdHJhdG9yIHVzYSBlbCBob21lIGVuIDIgcGFzb3MgKGNvbnRleHRvcyByZWNpZW50ZXMg4oaUIEZBUXMvRlVBcykgZW4gaGVhZGVyL3Byb2plY3QvY2xpZW50L3Rhc2suXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2ssIGFsIGxpbXBpYXIgZWwgY29udGV4dG8gKHAuIGVqLiBhbCByZXNlbGVjY2lvbmFyIE1BSUFcbiAgLy8gZGVzZGUgZWwgbGlzdGFkbyBkZSBhZ2VudGVzKSBzZSBtdWVzdHJhIGVsIHNlbGVjdG9yIGRlIGNvbnRleHRvcyByZWNpZW50ZXMgZW4gbHVnYXIgZGUgdW4gaG9tZSB2YWPDrW8uXG4gIGNvbnN0IGlzT3JjaGVzdHJhdG9yID0gaXNNQUlBICYmIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJ1xuICAvLyBQbGFubmVyOiBob21lIGRlIEZVQXMgZGVsIG9yY2hlc3RyYXRvciAoc2luIHNlbGVjdG9yIGRlIGNvbnRleHRvcykuXG4gIC8vIFNpIGVsIHVzdWFyaW8gbmF2ZWdhIGEgTWFpYWtlciB1IG90cm8gYWdlbnRlLCBzZWN0aW9uIHNpZ3VlIHNpZW5kbyBgcGxhbm5lcmAgcGVybyB5YSBubyBlcyBlc3RlIGhvbWUuXG4gIGNvbnN0IGlzUGxhbm5lckhvbWUgPSBzZWN0aW9uID09PSAncGxhbm5lcicgJiYgaXNPcmNoZXN0cmF0b3JcbiAgLy8gSG9tZXMgZGUgc2VjY2nDs24gKHByb2plY3QvY2xpZW50L3Rhc2spOiBzaW4gaXNvbG9nbywgY29udGVuaWRvIHRvcC1sZWZ0LCBjb2x1bW5hIDQ0OHB4IGNlbnRyYWRhLlxuICBjb25zdCBpc1NlY3Rpb25PcmNoZXN0cmF0b3JIb21lID0gaXNPcmNoZXN0cmF0b3IgJiYgIWlzSGVhZGVySG9tZSAmJiAhaXNQbGFubmVySG9tZVxuICBjb25zdCBoYXNIb3Vyc1N1YmFnZW50ID0gb3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudChhZ2VudClcblxuICAvLyBIb21lIGRlbCBvcmNoZXN0cmF0b3IgZW4gMiBwYXNvczpcbiAgLy8gIC0gUGFzbyAxIChzaW4gY29udGV4dG8gcGluZWFkbyk6IHNlIG11ZXN0cmFuIHNvbG8gbG9zIGNvbnRleHRvcyByZWNpZW50ZXMuXG4gIC8vICAtIFBhc28gMiAoY29udGV4dG8gcGluZWFkbyk6IHNlIG11ZXN0cmFuIGxhcyBGQVFzL2FjY2lvbmVzIHF1ZSByZWZlcmVuY2lhbiBlc2UgY29udGV4dG8uXG4gIGNvbnN0IGhhc1Bpbm5lZENvbnRleHQgPSAhISh0YXNrPy5pZCB8fCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBjbGllbnQ/LmlkIHx8IHByb2plY3Q/LmlkKVxuICBjb25zdCBpc1JlY2VudENvbnRleHRzU3RlcCA9IGlzT3JjaGVzdHJhdG9yICYmICFoYXNQaW5uZWRDb250ZXh0ICYmICFpc1BsYW5uZXJIb21lXG4gIC8vIEhlYWRlciBwYXNvIDEgY29tcGFjdG8gKHNpbiBpc29sb2dvLCBwaWxscyBmdWxsLXdpZHRoKTogY29sYWJvcmFkb3IgeSBtYW5hZ2VycyAoQy1MZXZlbC9EaXJlY3Rvci9QTSkuXG4gIGNvbnN0IGlzSGVhZGVyVGFza0NvbnRleHRIb21lID1cbiAgICBzZWN0aW9uID09PSAnaGVhZGVyJyAmJiBpc1JlY2VudENvbnRleHRzU3RlcCAmJiAoaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZCkgfHwgaXNNYW5hZ2VyUm9sZSh1c2VyLnJvbGVfaWQpKVxuICAvLyBCbG9xdWUgRlVBcyBwbGFubmVyICsgc2VjY2nDs24gZGUgY29udGV4dG9zIHJlY2llbnRlcyBjb24gdMOtdHVsb3MgKGNvbGFib3JhZG9yIG8gbWFuYWdlciBjb24gaG91cikuXG4gIGNvbnN0IGlzSGVhZGVySG91cnNBZ2VudEhvbWUgPSBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiBoYXNIb3Vyc1N1YmFnZW50XG4gIGNvbnN0IGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA9IGlzSGVhZGVySG91cnNBZ2VudEhvbWUgJiYgaXNNYW5hZ2VyUm9sZSh1c2VyLnJvbGVfaWQpXG4gIGNvbnN0IGhlYWRlclRhc2tDb250ZXh0U3VidGl0bGVLZXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSkge1xuICAgICAgaWYgKGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSkgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZU1hbmFnZXJXaXRoSG91cnMnXG4gICAgICByZXR1cm4gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlQ29sbGFib3JhdG9yV2l0aEhvdXJzJ1xuICAgIH1cbiAgICBpZiAoaXNNYW5hZ2VyUm9sZSh1c2VyLnJvbGVfaWQpKSByZXR1cm4gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlJ1xuICAgIHJldHVybiAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVDb2xsYWJvcmF0b3InXG4gIH0sIFtpc0hlYWRlckhvdXJzQWdlbnRIb21lLCBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUsIHVzZXIucm9sZV9pZF0pXG4gIGNvbnN0IGlzQ29udGV4dEhvbWVTdGVwID0gaXNIZWFkZXJIb21lICYmIGhhc1Bpbm5lZENvbnRleHRcbiAgLy8gSGVhZGVyIHBhc28gMiAoRkFRcy9GVUFzIGNvbiBjb250ZXh0bykgeSBob21lcyBkZSBzZWNjacOzbiBjb21wYXJ0ZW4gbGF5b3V0OiBzaW4gaXNvbG9nbywgdGV4dG8gYSBsYSBpenF1aWVyZGEuXG4gIGNvbnN0IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lID0gaXNTZWN0aW9uT3JjaGVzdHJhdG9ySG9tZSB8fCBpc0NvbnRleHRIb21lU3RlcFxuXG4gIGNvbnN0IGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lKSByZXR1cm4gZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyh1c2VyLnJvbGVfaWQpXG4gICAgaWYgKGlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSkgcmV0dXJuIGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXModXNlci5yb2xlX2lkKVxuICAgIGlmIChpc0hlYWRlclRhc2tDb250ZXh0SG9tZSkgcmV0dXJuIG5ldyBTZXQ8UmVjZW50Q29udGV4dFR5cGU+KFsndGFzayddKVxuICAgIHJldHVybiBnZXRBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzKHVzZXIucm9sZV9pZClcbiAgfSwgW3VzZXIucm9sZV9pZCwgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZV0pXG4gIGNvbnN0IHsgY29udGV4dHM6IGZldGNoZWRSZWNlbnRDb250ZXh0cywgbG9hZGluZzogcmVjZW50Q29udGV4dHNMb2FkaW5nIH0gPSB1c2VSZWNlbnRDb250ZXh0cyh7XG4gICAgZW5hYmxlZDogaXNPcmNoZXN0cmF0b3IgJiYgIWlzUGxhbm5lckhvbWUsXG4gICAgbGltaXQ6IFJFQ0VOVF9DT05URVhUU19MSU1JVCxcbiAgfSlcbiAgY29uc3QgcmVjZW50Q29udGV4dHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGZldGNoZWRSZWNlbnRDb250ZXh0cy5maWx0ZXIoY29udGV4dCA9PiBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzLmhhcyhjb250ZXh0LnR5cGUpKSxcbiAgICBbZmV0Y2hlZFJlY2VudENvbnRleHRzLCBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzXVxuICApXG5cbiAgLy8gQ29udGV4dG8gYWN0aXZvIHBhcmEgZGVyaXZhciBGQVFzL2FjY2lvbmVzIChwYXNvIDIpLiBQcmVmZXJpbW9zIGVsIHBpbGwgY2xpY2tlYWRvO1xuICAvLyBzaSBubywgbG8gcmVjb25zdHJ1aW1vcyBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwuXG4gIGNvbnN0IFtzZWxlY3RlZENvbnRleHQsIHNldFNlbGVjdGVkQ29udGV4dF0gPSB1c2VTdGF0ZTxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KG51bGwpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFoYXNQaW5uZWRDb250ZXh0KSBzZXRTZWxlY3RlZENvbnRleHQobnVsbClcbiAgfSwgW2hhc1Bpbm5lZENvbnRleHRdKVxuXG4gIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSB1c2VNZW1vPFJlY2VudENvbnRleHRJdGVtIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZENvbnRleHQpIHJldHVybiBzZWxlY3RlZENvbnRleHRcbiAgICBpZiAoIWlzQ29udGV4dEhvbWVTdGVwKSByZXR1cm4gbnVsbFxuICAgIGlmICh0YXNrPy5pZCkgcmV0dXJuIHsgdHlwZTogJ3Rhc2snLCBpZDogdGFzay5pZCwgbmFtZTogdGFzay5uYW1lIH1cbiAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQpIHJldHVybiB7IHR5cGU6ICdwcm9qZWN0JywgaWQ6IGNoaXBzUHJvamVjdC5wcm9qZWN0SWQsIG5hbWU6IGNoaXBzUHJvamVjdC5wcm9qZWN0TmFtZSB9XG4gICAgaWYgKGNsaWVudD8uaWQpIHJldHVybiB7IHR5cGU6ICdjbGllbnQnLCBpZDogY2xpZW50LmlkLCBuYW1lOiBjbGllbnQubmFtZSB9XG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW1xuICAgIHNlbGVjdGVkQ29udGV4dCxcbiAgICBpc0NvbnRleHRIb21lU3RlcCxcbiAgICB0YXNrPy5pZCxcbiAgICB0YXNrPy5uYW1lLFxuICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLFxuICAgIGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUsXG4gICAgY2xpZW50Py5pZCxcbiAgICBjbGllbnQ/Lm5hbWUsXG4gIF0pXG5cbiAgLy8gZW50aXR5X3R5cGUgZGVsIGNvbnRleHRvIHBpbmVhZG8gKHByb2plY3QvY2xpZW50L3Rhc2spLCB0b21hZG8gZGVsIGNvbnRleHRvIGdsb2JhbC5cbiAgLy8gQXBsaWNhIHRhbnRvIGFsIGFicmlyIE1BSUEgZGVzZGUgdW5hIHNlY2Npw7NuIGVzcGVjw61maWNhIGNvbW8gYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuLlxuICBjb25zdCBwaW5uZWRFbnRpdHlUeXBlID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGlmICh0YXNrPy5pZCkgcmV0dXJuICd0YXNrJ1xuICAgIGlmIChjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBwcm9qZWN0Py5pZCkgcmV0dXJuICdwcm9qZWN0J1xuICAgIGlmIChjbGllbnQ/LmlkKSByZXR1cm4gJ2NsaWVudCdcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFt0YXNrPy5pZCwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQsIHByb2plY3Q/LmlkLCBjbGllbnQ/LmlkXSlcblxuICAvLyBGQVFzIHNvbG8gY29uIGNvbnRleHRvIGNsaWVudGUgcGluZWFkbyAoaGVhZGVyIHBhc28gMiBvIHNlY2Npw7NuIGNsaWVudCkuXG4gIC8vIFByb3llY3RvLCB0YXJlYSB5IHBsYW5uZXIgbXVlc3RyYW4gc29sbyBGVUFzLlxuICBjb25zdCBmYXFzQ29udGV4dEVudGl0eVR5cGUgPSB1c2VNZW1vPFJlY2VudENvbnRleHRUeXBlIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgaWYgKGlzUGxhbm5lckhvbWUgfHwgaXNSZWNlbnRDb250ZXh0c1N0ZXApIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAoaXNIZWFkZXJIb21lKSB7XG4gICAgICByZXR1cm4gaXNDb250ZXh0SG9tZVN0ZXAgPyAoYWN0aXZlQ29udGV4dD8udHlwZSA/PyBwaW5uZWRFbnRpdHlUeXBlKSA6IHVuZGVmaW5lZFxuICAgIH1cbiAgICByZXR1cm4gcGlubmVkRW50aXR5VHlwZVxuICB9LCBbaXNQbGFubmVySG9tZSwgaXNSZWNlbnRDb250ZXh0c1N0ZXAsIGlzSGVhZGVySG9tZSwgaXNDb250ZXh0SG9tZVN0ZXAsIGFjdGl2ZUNvbnRleHQ/LnR5cGUsIHBpbm5lZEVudGl0eVR5cGVdKVxuICBjb25zdCBpc0NsaWVudENvbnRleHRGb3JGYXFzID0gZmFxc0NvbnRleHRFbnRpdHlUeXBlID09PSAnY2xpZW50J1xuICAvLyBgc2VjdGlvbmAgcXVlIHNlIGNvbnN1bHRhIHBhcmEgbGFzIEZVQXM6IGVuIG5vLWhlYWRlciBzaWd1ZSBlbCB0aXBvIGRlIGNvbnRleHRvIHBpbmVhZG8uXG4gIC8vIEVuIHBsYW5uZXIgc2UgZnVlcnphIGxhIHNlY3Rpb24gQVBJIGBwbGFubmVyYC5cbiAgY29uc3QgZnVhc1NlY3Rpb246IFNlY3Rpb24gPSAoKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lKSByZXR1cm4gJ3BsYW5uZXInXG4gICAgaWYgKCFpc0hlYWRlckhvbWUgJiYgcGlubmVkRW50aXR5VHlwZSkgcmV0dXJuIHBpbm5lZEVudGl0eVR5cGVcbiAgICByZXR1cm4gc2VjdGlvblxuICB9KSgpXG5cbiAgLy8gRkFRcy9hY2Npb25lczpcbiAgLy8gIC0gaGVhZGVyLWhvbWUgKG9yY2hlc3RyYXRvciksIHBhc28gMjogZmlsdHJhZGFzIHBvciBgZW50aXR5X3R5cGVgIGRlbCBjb250ZXh0byBzZWxlY2Npb25hZG8uXG4gIC8vICAtIGhvbWVzIGRlIHByb3llY3RvL2NsaWVudGUvdGFyZWEgKHNlY2Npw7NuKTogZmlsdHJhZGFzIHBvciBlbCBgZW50aXR5X3R5cGVgIGRlbCBjb250ZXh0byBzZXRlYWRvLlxuICAvLyAgLSBwbGFubmVyOiBGVUFzIGNvbiBzZWN0aW9uPXBsYW5uZXIsIHNpbiBlbnRpdHlfdHlwZSBuaSBGQVFzLlxuICBjb25zdCByZWFsTGlzdHNBZ2VudElkID0gKCgpID0+IHtcbiAgICBpZiAoIWlzTUFJQSB8fCBpc01haWFrZXIpIHJldHVybiB1bmRlZmluZWRcbiAgICAvLyBQYXNvIDEgKGNvbnRleHRvcyByZWNpZW50ZXMsIHNpbiBjb250ZXh0byk6IG5vIHNlIHBpZGVuIEZBUXMvRlVBcy5cbiAgICBpZiAoaXNSZWNlbnRDb250ZXh0c1N0ZXApIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAoaXNIZWFkZXJIb21lKSByZXR1cm4gaXNDb250ZXh0SG9tZVN0ZXAgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWRcbiAgICByZXR1cm4gYWdlbnQ/LmlkXG4gIH0pKClcbiAgY29uc3QgcmVhbExpc3RzRW50aXR5VHlwZSA9ICgoKSA9PiB7XG4gICAgaWYgKGlzUGxhbm5lckhvbWUpIHJldHVybiAncGxhbm5lcidcbiAgICBpZiAoIWlzSGVhZGVySG9tZSkgcmV0dXJuIHBpbm5lZEVudGl0eVR5cGVcbiAgICByZXR1cm4gaXNDb250ZXh0SG9tZVN0ZXAgPyAoYWN0aXZlQ29udGV4dD8udHlwZSA/PyBwaW5uZWRFbnRpdHlUeXBlKSA6IHVuZGVmaW5lZFxuICB9KSgpXG4gIGNvbnN0IHsgYWN0aW9uczogYWdlbnRGdWFzLCBsb2FkaW5nOiBmdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIHJlYWxMaXN0c0FnZW50SWQsXG4gICAgZnVhc1NlY3Rpb24sXG4gICAgcmVhbExpc3RzRW50aXR5VHlwZVxuICApXG4gIGNvbnN0IHsgYWN0aW9uczogY29sbGFib3JhdG9yUGxhbm5lckZ1YXMsIGxvYWRpbmc6IGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIGlzSGVhZGVySG91cnNBZ2VudEhvbWUgJiYgIWlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA/IGFnZW50Py5pZCA6IHVuZGVmaW5lZCxcbiAgICAncGxhbm5lcidcbiAgKVxuICBjb25zdCB7IGFjdGlvbnM6IG1hbmFnZXJIb21lRnVhcywgbG9hZGluZzogbWFuYWdlckhvbWVGdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA/IGFnZW50Py5pZCA6IHVuZGVmaW5lZCxcbiAgICAnaG9tZV93aXRoX2hvdXJzJ1xuICApXG4gIGNvbnN0IGhlYWRlckhvdXJzRnVhcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUpIHJldHVybiBzb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMobWFuYWdlckhvbWVGdWFzKVxuICAgIHJldHVybiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc1xuICB9LCBbaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBtYW5hZ2VySG9tZUZ1YXMsIGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzXSlcbiAgY29uc3QgaGVhZGVySG91cnNGdWFzTG9hZGluZyA9IGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA/IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmdcbiAgY29uc3QgZmFxc0xpc3RBZ2VudElkID0gaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA/IHJlYWxMaXN0c0FnZW50SWQgOiB1bmRlZmluZWRcbiAgY29uc3QgZmFxc0xpc3RFbnRpdHlUeXBlID0gaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA/IHJlYWxMaXN0c0VudGl0eVR5cGUgOiB1bmRlZmluZWRcbiAgY29uc3Qge1xuICAgIGZhcXM6IGFnZW50RmFxcyxcbiAgICBsb2FkaW5nOiBmYXFzTG9hZGluZyxcbiAgICBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMsXG4gIH0gPSB1c2VGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMoZmFxc0xpc3RBZ2VudElkLCBsYW5nLCBmYXFzTGlzdEVudGl0eVR5cGUpXG4gIGNvbnN0IGZhcXNGZXRjaFJlZiA9IHVzZVJlZjx7IGFnZW50SWQ6IHN0cmluZzsgbGFuZzogc3RyaW5nOyBlbnRpdHlUeXBlPzogc3RyaW5nIH0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEZBUXMgc29sbyBwYXJhIGNvbnRleHRvIGNsaWVudGU7IGVsIHJlc3RvIG11ZXN0cmEgc29sbyBGVUFzLlxuICAgIGlmICghcmVhbExpc3RzQWdlbnRJZCB8fCAhaXNDbGllbnRDb250ZXh0Rm9yRmFxcykgcmV0dXJuXG4gICAgY29uc3QgY3VycmVudEtleSA9IGAke3JlYWxMaXN0c0FnZW50SWR9LSR7bGFuZ30tJHtyZWFsTGlzdHNFbnRpdHlUeXBlID8/ICdhbGwnfWBcbiAgICBjb25zdCBsYXN0S2V5ID0gZmFxc0ZldGNoUmVmLmN1cnJlbnRcbiAgICAgID8gYCR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQuYWdlbnRJZH0tJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5sYW5nfS0ke2ZhcXNGZXRjaFJlZi5jdXJyZW50LmVudGl0eVR5cGUgPz8gJ2FsbCd9YFxuICAgICAgOiBudWxsXG4gICAgaWYgKGN1cnJlbnRLZXkgIT09IGxhc3RLZXkpIHtcbiAgICAgIGZhcXNGZXRjaFJlZi5jdXJyZW50ID0geyBhZ2VudElkOiByZWFsTGlzdHNBZ2VudElkLCBsYW5nLCBlbnRpdHlUeXBlOiByZWFsTGlzdHNFbnRpdHlUeXBlIH1cbiAgICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyh7IGFnZW50SWQ6IHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIGVudGl0eVR5cGU6IHJlYWxMaXN0c0VudGl0eVR5cGUgfSlcbiAgICB9XG4gIH0sIFtyZWFsTGlzdHNBZ2VudElkLCByZWFsTGlzdHNFbnRpdHlUeXBlLCBpc0NsaWVudENvbnRleHRGb3JGYXFzLCBsYW5nLCBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNdKVxuXG4gIGNvbnN0IGZhcXMgPSBhZ2VudEZhcXNcbiAgY29uc3QgZnVhcyA9IGFnZW50RnVhc1xuICBjb25zdCBmYXFzQXJlTG9hZGluZyA9IGZhcXNMb2FkaW5nXG4gIGNvbnN0IGZ1YXNBcmVMb2FkaW5nID0gZnVhc0xvYWRpbmdcblxuICBjb25zdCBzaG93UmVjZW50Q29udGV4dHNCbG9jayA9IGlzUmVjZW50Q29udGV4dHNTdGVwICYmIChyZWNlbnRDb250ZXh0c0xvYWRpbmcgfHwgcmVjZW50Q29udGV4dHMubGVuZ3RoID4gMClcbiAgY29uc3Qgc2hvdWxkU2hvd0ZhcXMgPVxuICAgIGlzTUFJQSAmJlxuICAgIGlzQ2xpZW50Q29udGV4dEZvckZhcXMgJiZcbiAgICAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiZcbiAgICAoaXNDb250ZXh0SG9tZVN0ZXAgfHwgKCFpc0hlYWRlckhvbWUgJiYgZmFxc0FjY2VzcykpICYmXG4gICAgIWlzTWFpYWtlciAmJlxuICAgIChmYXFzLmxlbmd0aCA+IDAgfHwgZmFxc0FyZUxvYWRpbmcpXG4gIGNvbnN0IHNob3VsZFNob3dGdWFzID1cbiAgICAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzTWFpYWtlciAmJiAoaXNDb250ZXh0SG9tZVN0ZXAgfHwgIWlzSGVhZGVySG9tZSkgJiYgKGZ1YXMubGVuZ3RoID4gMCB8fCBmdWFzQXJlTG9hZGluZylcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzTG9hZGluZyA9IGlzSGVhZGVySG91cnNBZ2VudEhvbWUgJiYgaGVhZGVySG91cnNGdWFzTG9hZGluZyAmJiBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoID09PSAwXG4gIGNvbnN0IHNob3VsZFNob3dQbGFubmVyRnVhc0NvbnRlbnQgPSBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmIGhlYWRlckhvdXJzRnVhcy5sZW5ndGggPiAwXG4gIGNvbnN0IHNob3VsZFNob3dQbGFubmVyRnVhcyA9IHNob3VsZFNob3dQbGFubmVyRnVhc0xvYWRpbmcgfHwgc2hvdWxkU2hvd1BsYW5uZXJGdWFzQ29udGVudFxuXG4gIGNvbnN0IHNob3dQcm9qZWN0U3VtbWFyeUNhcmQgPSBzaG93UHJvamVjdFN1bW1hcnkgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IHNob3dGQVFzID0gISEoXG4gICAgc2hvd1JlY2VudENvbnRleHRzQmxvY2sgfHxcbiAgICBzaG91bGRTaG93RmFxcyB8fFxuICAgIHNob3VsZFNob3dGdWFzIHx8XG4gICAgc2hvdWxkU2hvd1BsYW5uZXJGdWFzIHx8XG4gICAgc2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCB8fFxuICAgIGlzTWFpYWtlclxuICApXG4gIGNvbnN0IGhvbWVTY3JvbGxhYmxlTGF5b3V0ID0gc2hvd0ZBUXNcbiAgY29uc3Qgc2hvd0R5bmFtaWNTZWN0aW9uID1cbiAgICBzaG93UmVjZW50Q29udGV4dHNCbG9jayB8fCBzaG91bGRTaG93RmFxcyB8fCBzaG91bGRTaG93RnVhcyB8fCBzaG91bGRTaG93UGxhbm5lckZ1YXMgfHwgaXNNYWlha2VyXG5cbiAgLy8gTMOzZ2ljYSBkZWwgc2Nyb2xsIGNvbiBncmFkaWVudGVzXG4gIGNvbnN0IGNvbnRlbnRDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzaG93VG9wR3JhZGllbnQsIHNldFNob3dUb3BHcmFkaWVudF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dCb3R0b21HcmFkaWVudCwgc2V0U2hvd0JvdHRvbUdyYWRpZW50XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNTY3JvbGxpbmcsIHNldElzU2Nyb2xsaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBzY3JvbGxUaW1lb3V0UmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcblxuICAvLyBTYWx1ZG8gZmlqbyBwb3IgdGlwbyBkZSBjb250ZXh0byAoaTE4bikuIEN1c3RvbSBhZ2VudHMgc2lndWVuIHVzYW5kbyBhZ2VudC5pbnRyb2R1Y3Rpb24uXG4gIC8vIFBsYW5uZXIgdXNhIHTDrXR1bG8gKyBiYWphZGEgcHJvcGlvcyAoYHBsYW5uZXJIb21lYCksIG5vIGVzdGUgZ3JlZXRpbmcuXG4gIGNvbnN0IGdyZWV0aW5nID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzTWFpYWtlciB8fCBpc1BsYW5uZXJIb21lIHx8IGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gJydcblxuICAgIGlmIChpc01BSUEgJiYgcGlubmVkRW50aXR5VHlwZSkge1xuICAgICAgcmV0dXJuIHQoYGhvbWVNZW51LmNvbnRleHRIb21lLmNvbnRleHRHcmVldGluZy4ke3Bpbm5lZEVudGl0eVR5cGV9YClcbiAgICB9XG5cbiAgICBjb25zdCBpbnRybyA9IGFnZW50Py5pbnRyb2R1Y3Rpb25cbiAgICBpZiAoIWludHJvKSByZXR1cm4gJydcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbnRybykgJiYgaW50cm8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludHJvW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGludHJvLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaW50cm8gPT09ICdzdHJpbmcnID8gaW50cm8gOiAnJ1xuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8uaW50cm9kdWN0aW9uLCBpc01haWFrZXIsIGlzUGxhbm5lckhvbWUsIGlzTUFJQSwgcGlubmVkRW50aXR5VHlwZSwgaXNSZWNlbnRDb250ZXh0c1N0ZXAsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGV4dDogUmVjZW50Q29udGV4dEl0ZW0sIG9yZGVyOiBudW1iZXIpID0+IHtcbiAgICAgIC8vIE1pc21hIGZ1ZW50ZSBkZSB2ZXJkYWQgcXVlIGVsIGNvbXBvc2VyOiBzaW4gcG9vbCBubyBzZSBwdWVkZSBhdmFuemFyIGRlIGNvbnRleHRvLlxuICAgICAgaWYgKHVzYWdlQmxvY2tlZCkgcmV0dXJuXG5cbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRDb250ZXh0U2VsZWN0ZWQsIHsgb3JkZXIsIHR5cGU6IGNvbnRleHQudHlwZSB9KVxuXG4gICAgICBjb25zdCBjb250ZXh0SWQgPSBwYXJzZU51bWVyaWNJZChjb250ZXh0LmlkKVxuICAgICAgY29uc3QgY2xpZW50SWQgPSBwYXJzZU51bWVyaWNJZChjb250ZXh0LnBhcmVudHM/LmNsaWVudF9pZClcbiAgICAgIGNvbnN0IHByb2plY3RJZCA9IHBhcnNlTnVtZXJpY0lkKGNvbnRleHQucGFyZW50cz8ucHJvamVjdF9pZClcbiAgICAgIGNvbnN0IGNsaWVudE5hbWUgPSBjb250ZXh0LnBhcmVudHM/LmNsaWVudF9uYW1lIHx8ICcnXG4gICAgICBjb25zdCBwcm9qZWN0TmFtZSA9IGNvbnRleHQucGFyZW50cz8ucHJvamVjdF9uYW1lIHx8ICcnXG5cbiAgICAgIHNldFNlbGVjdGVkQ29udGV4dChjb250ZXh0KVxuICAgICAgc2V0VGFzayhudWxsKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuXG4gICAgICBpZiAoY29udGV4dC50eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgICBpZiAoY29udGV4dElkID09IG51bGwpIHJldHVyblxuICAgICAgICBzZXRDbGllbnQ/Lih7IGlkOiBjb250ZXh0SWQsIG5hbWU6IGNvbnRleHQubmFtZSB9KVxuICAgICAgfSBlbHNlIGlmIChjb250ZXh0LnR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBpZiAoY29udGV4dElkID09IG51bGwpIHJldHVyblxuICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICBpZDogY29udGV4dElkLFxuICAgICAgICAgIG5hbWU6IGNvbnRleHQubmFtZSxcbiAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50OiB7IGlkOiBjbGllbnRJZCwgbmFtZTogY2xpZW50TmFtZSB9IH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoY29udGV4dElkKSxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHQudHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFRhc2soe1xuICAgICAgICAgIGlkOiBjb250ZXh0LmlkLFxuICAgICAgICAgIG5hbWU6IGNvbnRleHQubmFtZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkICE9IG51bGwgPyB7IHByb2plY3RJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZCB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBpZiAoY2xpZW50SWQgIT0gbnVsbCkge1xuICAgICAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNsaWVudElkLCBuYW1lOiBjbGllbnROYW1lIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgICBpZDogcHJvamVjdElkLFxuICAgICAgICAgICAgbmFtZTogcHJvamVjdE5hbWUgfHwgYCR7dCgnaG9tZU1lbnUucmVjZW50Q29udGV4dHMudHlwZXMucHJvamVjdCcpfSAke3Byb2plY3RJZH1gLFxuICAgICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50OiB7IGlkOiBjbGllbnRJZCwgbmFtZTogY2xpZW50TmFtZSB9IH0gOiB7fSksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZSB8fCBgJHt0KCdob21lTWVudS5yZWNlbnRDb250ZXh0cy50eXBlcy5wcm9qZWN0Jyl9ICR7cHJvamVjdElkfWAsXG4gICAgICAgICAgICBjbGllbnROYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ21haWEtaW5wdXQtcmVmb2N1cycpKVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtldmVudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHQsIHVzYWdlQmxvY2tlZF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUhvbWVTdGFydENoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10gfCBudWxsLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogbnVsbCxcbiAgICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lICYmIGZ1YUlkKSB7XG4gICAgICAgIGZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgc2V0U2VsZWN0ZWRDb250ZXh0KG51bGwpXG4gICAgICAgICAgc2V0VGFzayhudWxsKVxuICAgICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgb25TdGFydENoYXQobWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkKVxuICAgIH0sXG4gICAgW2lzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSwgb25TdGFydENoYXQsIHNldENoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXVxuICApXG5cbiAgY29uc3QgcmVuZGVyUmVjZW50Q29udGV4dHMgPSAoKSA9PiB7XG4gICAgaWYgKCFpc1JlY2VudENvbnRleHRzU3RlcCkgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNcbiAgICAgICAgJGZpeGVkQ29udGVudFdpZHRoPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZSA/IE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFggOiB1bmRlZmluZWR9XG4gICAgICA+XG4gICAgICAgIHtpc0hlYWRlckhvdXJzQWdlbnRIb21lID8gKFxuICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgIHt0KFxuICAgICAgICAgICAgICAgIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50Q29udGV4dHNTZWN0aW9uTWFuYWdlci50aXRsZSdcbiAgICAgICAgICAgICAgICAgIDogJ2hvbWVNZW51LmNvbnRleHRIb21lLnJlY2VudFRhc2tzU2VjdGlvbi50aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgICAgIHt0KFxuICAgICAgICAgICAgICAgIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50Q29udGV4dHNTZWN0aW9uTWFuYWdlci5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgIDogJ2hvbWVNZW51LmNvbnRleHRIb21lLnJlY2VudFRhc2tzU2VjdGlvbi5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dHNMaXN0ICRmbHVzaFBpbGxzPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX0+XG4gICAgICAgICAge3JlY2VudENvbnRleHRzTG9hZGluZyAmJlxuICAgICAgICAgICAgUkVDRU5UX0NPTlRFWFRfU0tFTEVUT05fS0VZUy5tYXAoa2V5ID0+IDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFNrZWxldG9uIGtleT17a2V5fSAvPil9XG4gICAgICAgICAgeyFyZWNlbnRDb250ZXh0c0xvYWRpbmcgJiZcbiAgICAgICAgICAgIHJlY2VudENvbnRleHRzLm1hcCgoY29udGV4dCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPFJlY2VudENvbnRleHRQaWxsXG4gICAgICAgICAgICAgICAga2V5PXtgJHtjb250ZXh0LnR5cGV9LSR7Y29udGV4dC5pZH1gfVxuICAgICAgICAgICAgICAgIGNvbnRleHQ9e2NvbnRleHR9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2NvbnRleHQubmFtZS50cmltKCl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dChjb250ZXh0LCBpbmRleCArIDEpfVxuICAgICAgICAgICAgICAgIGZ1bGxXaWR0aD17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3VzYWdlQmxvY2tlZH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdD5cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHM+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgY2hlY2tTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSByZXR1cm5cblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgY29uc3QgaXNTY3JvbGxhYmxlID0gc2Nyb2xsSGVpZ2h0ID4gY2xpZW50SGVpZ2h0XG4gICAgY29uc3QgaXNBdFRvcCA9IHNjcm9sbFRvcCA9PT0gMFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMVxuXG4gICAgc2V0U2hvd1RvcEdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdFRvcClcbiAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoaXNTY3JvbGxhYmxlICYmICFpc0F0Qm90dG9tKVxuICB9LCBbaG9tZVNjcm9sbGFibGVMYXlvdXRdKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjaGVja1Njcm9sbCgpXG4gICAgc2V0SXNTY3JvbGxpbmcodHJ1ZSlcblxuICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRJc1Njcm9sbGluZyhmYWxzZSlcbiAgICB9LCAxNTApXG4gIH0sIFtjaGVja1Njcm9sbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSB7XG4gICAgICBzZXRTaG93VG9wR3JhZGllbnQoZmFsc2UpXG4gICAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoZmFsc2UpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlZHVsZUNoZWNrU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2hlY2tTY3JvbGwoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzY2hlZHVsZUNoZWNrU2Nyb2xsKClcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoc2NoZWR1bGVDaGVja1Njcm9sbClcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcilcbiAgICBjb25zdCBzY3JvbGxDb250ZW50ID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkXG4gICAgaWYgKHNjcm9sbENvbnRlbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHNjcm9sbENvbnRlbnQpXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoc2NoZWR1bGVDaGVja1Njcm9sbCwgMTAwKVxuICAgIGNvbnN0IGxhdGVUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChzY2hlZHVsZUNoZWNrU2Nyb2xsLCA0MDApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgIGNsZWFyVGltZW91dChsYXRlVGltZW91dElkKVxuICAgICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0LCBjaGVja1Njcm9sbCwgaGFuZGxlU2Nyb2xsXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaG9tZVNjcm9sbGFibGVMYXlvdXQpIHJldHVyblxuICAgIGNoZWNrU2Nyb2xsKClcbiAgfSwgW1xuICAgIGhvbWVTY3JvbGxhYmxlTGF5b3V0LFxuICAgIGNoZWNrU2Nyb2xsLFxuICAgIHJlY2VudENvbnRleHRzTG9hZGluZyxcbiAgICByZWNlbnRDb250ZXh0cy5sZW5ndGgsXG4gICAgaGVhZGVySG91cnNGdWFzTG9hZGluZyxcbiAgICBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoLFxuICAgIGZ1YXNMb2FkaW5nLFxuICAgIGZ1YXMubGVuZ3RoLFxuICAgIGZhcXNBcmVMb2FkaW5nLFxuICAgIGZhcXMubGVuZ3RoLFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhcyxcbiAgICBpc01haWFrZXIsXG4gIF0pXG5cbiAgY29uc3QgcmVuZGVySGVhZGVyQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzTUFJQSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgICAgICA8U0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgICAge2FnZW50Py5lbW9qaX0ge2FnZW50Py5uYW1lfVxuICAgICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgIHthZ2VudD8uY3JlYXRlZF9ieSAmJiAhaXNNQUlBICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgYWdlbnQ/LmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWQgPyB0KCdob21lTWVudS5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpIDogdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT57YWdlbnQ/LmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRBbGlnblN0YXJ0ID0gaXNQbGFubmVySG9tZSB8fCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZVxuXG4gICAgY29uc3QgbWFpYUhlYWRlclN0YWNrTmVlZHNHYXAgPVxuICAgICAgKGlzUmVjZW50Q29udGV4dHNTdGVwICYmICFpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiAhaXNQbGFubmVySG9tZSkgfHxcbiAgICAgICghaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiZcbiAgICAgICAgISFncmVldGluZyAmJlxuICAgICAgICAhaXNQbGFubmVySG9tZSAmJlxuICAgICAgICAhaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiZcbiAgICAgICAgIWlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2sgJG5vR2FwPXshbWFpYUhlYWRlclN0YWNrTmVlZHNHYXB9ICRhbGlnbj17Y29udGVudEFsaWduU3RhcnQgPyAnc3RhcnQnIDogJ2NlbnRlcid9PlxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmICFpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICAgICA8U0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgICAgICAgIDxNQUlBSXNvbG9nbyAvPlxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICA8L1NDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1BsYW5uZXJIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRzaXplPVwibWRcIiAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUucGxhbm5lckhvbWUudGl0bGUnKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPVwic3RhcnRcIj57dCgnaG9tZU1lbnUucGxhbm5lckhvbWUuc3VidGl0bGUnKX08L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGVCbG9jaz5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmIGlzUmVjZW50Q29udGV4dHNTdGVwICYmIGlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiICRmdWxsV2lkdGg+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJHNpemU9XCJjb250ZXh0XCIgJGFsaWduPVwic3RhcnRcIiAkZnVsbFdpZHRoPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUuZ3JlZXRpbmcnLCB7IG5hbWU6IHVzZXIuZmlyc3ROYW1lIH0pfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249XCJzdGFydFwiICRjb2xsYWJvcmF0b3JIb21lPlxuICAgICAgICAgICAgICB7dChoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZUJsb2NrPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRhbGlnbj17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnc3RhcnQnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNvbnRleHRIb21lLmdyZWV0aW5nJywgeyBuYW1lOiB1c2VyLmZpcnN0TmFtZSB9KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAgICB7dChcbiAgICAgICAgICAgICAgICBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVDb2xsYWJvcmF0b3InXG4gICAgICAgICAgICAgICAgICA6ICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgZ3JlZXRpbmcgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVHcmVldGluZ1xuICAgICAgICAgICAgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAkc2l6ZT17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnbWQnIDogJ2xnJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Z3JlZXRpbmd9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVHcmVldGluZz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lTWFpYUhlYWRlclN0YWNrPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGZpeGVkSG9tZUNvbnRlbnRXaWR0aCA9XG4gICAgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgfHwgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWVcbiAgICAgID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWFxuICAgICAgOiB1bmRlZmluZWRcbiAgY29uc3QgY29udGVudEFsaWduU3RhcnQgPSBpc1BsYW5uZXJIb21lIHx8IGlzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lXG4gIGNvbnN0IHNob3dBZ2VudEludHJvZHVjdGlvbiA9IHNlY3Rpb24gIT09ICdwcm9qZWN0JyAmJiAhaXNNQUlBICYmICEhYWdlbnQ/LmludHJvZHVjdGlvblxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJSG9tZUNvbnRhaW5lciBzaG93RkFRcz17c2hvd0ZBUXN9ICRhbGlnblN0YXJ0PXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX0+XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50VG9wICRzaG93PXtzaG93VG9wR3JhZGllbnR9IC8+fVxuICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRcbiAgICAgICAgcmVmPXtjb250ZW50Q29udGFpbmVyUmVmfVxuICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICRhbGlnblN0YXJ0PXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX1cbiAgICAgICAgJGZpeGVkQ29udGVudFdpZHRoPXtmaXhlZEhvbWVDb250ZW50V2lkdGh9XG4gICAgICA+XG4gICAgICAgIDxTQ0NBSUhvbWVDb250ZW50SW5uZXJcbiAgICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAgICRmbG9hdGluZ0N1c3RvbUNlbnRlcj17ZmxvYXRpbmdDdXN0b21DZW50ZXJ9XG4gICAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICAgJGFsaWduU3RhcnQ9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAgICRoZWFkZXJDb2xsYWJvcmF0b3JIb21lPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX1cbiAgICAgICAgICAkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWU9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICA+XG4gICAgICAgICAgPFNDQ0FJSG9tZUhlYWRlclxuICAgICAgICAgICAgJGdhcD17c2hvd0FnZW50SW50cm9kdWN0aW9uID8gJzIwcHgnIDogJzAnfVxuICAgICAgICAgICAgJG1heFdpZHRoPXtpc01BSUEgPyAnMTAwJScgOiAnMzgwcHgnfVxuICAgICAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAgICAgJGFsaWduPXtjb250ZW50QWxpZ25TdGFydCA/ICdzdGFydCcgOiAnY2VudGVyJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmVuZGVySGVhZGVyQ29udGVudCgpfVxuXG4gICAgICAgICAgICB7c2hvd0FnZW50SW50cm9kdWN0aW9uID8gKFxuICAgICAgICAgICAgICA8U0NDQUlIb21lSW50cm9kdWN0aW9uIGV4cGFuZGVkPXtleHBhbmRlZH0+e2FnZW50LmludHJvZHVjdGlvbn08L1NDQ0FJSG9tZUludHJvZHVjdGlvbj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NDQUlIb21lSGVhZGVyPlxuICAgICAgICAgIHtzaG93UHJvamVjdFN1bW1hcnlDYXJkICYmIChcbiAgICAgICAgICAgIDxTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCBvbkNsaWNrPXtoYW5kbGVycy5wcm9qZWN0U3VtbWFyeX0+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeT5cbiAgICAgICAgICAgICAgICA8VGVtcGxhdGVHcmFkaWVudEljb24gaGVpZ2h0PXsyNH0gd2lkdGg9ezI0fSAvPlxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5PlxuICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlPnt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS50aXRsZScpfTwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgIHt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS5kZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQ+XG4gICAgICAgICAgICA8L1NDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3Nob3dEeW5hbWljU2VjdGlvbiAmJiAoXG4gICAgICAgICAgICA8U0NDQUlIb21lRHluYW1pY1NlY3Rpb25cbiAgICAgICAgICAgICAgJGdyb3c9e2lzTWFpYWtlcn1cbiAgICAgICAgICAgICAgJGFsaWduU3RhcnQ9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7c2hvdWxkU2hvd1BsYW5uZXJGdWFzID8gKFxuICAgICAgICAgICAgICAgIDxGcmVxdWVudGx5VXNlZEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwbGFubmVyXCJcbiAgICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtoYW5kbGVIb21lU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17aGVhZGVySG91cnNGdWFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17aGVhZGVySG91cnNGdWFzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3JlbmRlclJlY2VudENvbnRleHRzKCl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RmFxcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgc2hvd0ZBUXM9e3Nob3dGQVFzfVxuICAgICAgICAgICAgICAgICAgc2hvd1Byb2plY3RTdW1tYXJ5PXtzaG93UHJvamVjdFN1bW1hcnl9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBsYW5nPXtsYW5nfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgZmFxcz17ZmFxc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2ZhcXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RnVhcyAmJiAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlVc2VkQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17ZnVhc31cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2Z1YXNBcmVMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpc01haWFrZXIgPyA8Q2hhdEFJSG9tZU1haWFrZXIgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fSAvPiA6IG51bGx9XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZUR5bmFtaWNTZWN0aW9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQ29udGVudElubmVyPlxuICAgICAgPC9TQ0NBSUhvbWVDb250ZW50PlxuICAgICAge2hvbWVTY3JvbGxhYmxlTGF5b3V0ICYmIDxTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSAkc2hvdz17c2hvd0JvdHRvbUdyYWRpZW50fSAvPn1cbiAgICA8L1NDQ0FJSG9tZUNvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBQzFGLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBRXJDLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0Ms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
|