@projectcor/maia-components 2.11.48 → 2.11.49-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/ContextMentionEditor/ContextMentionEditor.js +40 -3
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +11 -6
- package/lib/components/atoms/ContextMentionPopover/index.js +2 -2
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +38 -69
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +9 -9
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +94 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +49 -0
- package/lib/components/atoms/FrequentlyUsedActions/index.js +2 -0
- package/lib/components/atoms/IconButton.js +12 -5
- package/lib/components/atoms/MAIAInput/MAIAInput.js +86 -11
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.js +16 -0
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.styles.js +24 -0
- package/lib/components/atoms/SlashCommandChip/buildSlashChipElement.js +18 -0
- package/lib/components/atoms/SlashCommandChip/index.js +4 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +195 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +41 -0
- package/lib/components/atoms/SlashCommandDropdown/index.js +2 -0
- package/lib/components/atoms/icons/ActionChargeHoursIcon.js +111 -0
- package/lib/components/atoms/icons/ActionCreateReworkIcon.js +37 -0
- package/lib/components/atoms/icons/ActionCreateSubtaskIcon.js +37 -0
- package/lib/components/atoms/icons/ActionSummaryMessagesIcon.js +88 -0
- package/lib/components/atoms/icons/ActionSummaryTaskIcon.js +37 -0
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -2
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +44 -4
- package/lib/components/molecules/ChatAIHome/styles.js +2 -2
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -6
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +41 -26
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +19 -16
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +28 -8
- package/lib/components/molecules/ChatFooter/ChatFooter.js +8 -5
- package/lib/components/organisms/ChatAI/ChatAI.js +5 -6
- package/lib/constants/maiaTaskPanelAccess.js +73 -0
- package/lib/constants/permissions/utils.js +2 -2
- package/lib/context/global-context.js +1 -1
- package/lib/dev/DevChatAI.js +89 -17
- package/lib/dev/DevContextMentionInput.js +3 -1
- package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.js +121 -22
- package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
- package/lib/hooks/useChatMessages/useChatMessages.js +10 -3
- package/lib/hooks/useContextMentions.js +153 -9
- package/lib/hooks/useEvent.js +3 -1
- package/lib/hooks/useFrequentlyUsedActions.js +81 -0
- package/lib/hooks/useMentionPopover.js +7 -3
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +12 -4
- package/lib/hooks/useProjectSummaryConfig.js +24 -6
- package/lib/hooks/useSlashCommands.js +81 -0
- package/lib/lang/br/index.js +16 -1
- package/lib/lang/en/index.js +16 -1
- package/lib/lang/es/index.js +16 -1
- package/lib/lang/fr/index.js +16 -1
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +39 -0
- package/lib/services/maia/Actions/getSlashCommands.js +39 -0
- package/lib/services/maia/Actions/index.js +7 -0
- package/lib/services/maia/Agents/getAgents.js +24 -12
- package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
- package/lib/services/maia/Orchestrator/orchestrator.js +14 -4
- package/lib/services/maia/index.js +3 -1
- package/lib/store/chatsStore.types.js +1 -1
- package/lib/types/Action.js +2 -0
- package/lib/types/Task.js +2 -0
- package/lib/types/contextMention.js +2 -2
- package/lib/types/global.d.js +1 -1
- package/lib/utils/actionCategoryMap.js +33 -0
- package/lib/utils/actionIconMap.js +49 -0
- package/lib/utils/formatQuickActionMessage.js +16 -0
- package/lib/utils/mapBackendLang.js +8 -0
- package/lib/utils/renderContextMentions.js +70 -27
- package/lib/utils/slashCommandMarker.js +23 -0
- package/package.json +1 -1
|
@@ -39,17 +39,9 @@ import { useFaqsStore } from '../../../store/useFaqsStore';
|
|
|
39
39
|
import { fetchMaia } from '../../../services/maia/client';
|
|
40
40
|
import { mapCORLang } from '../../../lang/utils';
|
|
41
41
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
42
|
+
import { logMaiaAccessDebug, validateMaiaFeatureAccess } from '../../../constants/maiaTaskPanelAccess';
|
|
42
43
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
43
44
|
export var ID_MODAL_CHAT_AGENT = 'modals-portal-maia-chat-agent';
|
|
44
|
-
var validateAccessByFeature = function validateAccessByFeature(section) {
|
|
45
|
-
if (section === 'header' && (window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS || window.MAIA_CHAT_AI_FEATURE_ACCESS)) {
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
if ((section === 'project' || section === 'client') && window.MAIA_CHAT_AI_FEATURE_ACCESS) {
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
return false;
|
|
52
|
-
};
|
|
53
45
|
export var ChatAIModal = function ChatAIModal(_ref) {
|
|
54
46
|
var _user$permissions, _user$permissions2, _user$permissions3, _agents$data;
|
|
55
47
|
var handleClose = _ref.handleClose;
|
|
@@ -125,7 +117,14 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
125
117
|
setChipsProject = _useGlobalContext.setChipsProject,
|
|
126
118
|
setClient = _useGlobalContext.setClient,
|
|
127
119
|
setProject = _useGlobalContext.setProject,
|
|
128
|
-
bannerEntryFaq = _useGlobalContext.bannerEntryFaq
|
|
120
|
+
bannerEntryFaq = _useGlobalContext.bannerEntryFaq,
|
|
121
|
+
setTask = _useGlobalContext.setTask;
|
|
122
|
+
useEffect(function () {
|
|
123
|
+
var featureAccessGranted = validateMaiaFeatureAccess(section);
|
|
124
|
+
logMaiaAccessDebug('ChatAIModal mount', user, section, {
|
|
125
|
+
feature_access_granted: featureAccessGranted
|
|
126
|
+
});
|
|
127
|
+
}, [section, user]);
|
|
129
128
|
var _useGetAgents = useGetAgents({
|
|
130
129
|
selectAgent: selectAgent,
|
|
131
130
|
section: section,
|
|
@@ -187,7 +186,10 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
187
186
|
|
|
188
187
|
var agentsFetchedRef = useRef(false);
|
|
189
188
|
var selector = document.querySelector("#".concat(ID_MODAL_CHAT_AGENT));
|
|
190
|
-
|
|
189
|
+
|
|
190
|
+
// En section 'task' Maia abre en modo flotante por default (se abre desde el task panel,
|
|
191
|
+
// no queremos taparlo entero). El usuario puede cambiar a sidebar/fullscreen desde los controles del modal.
|
|
192
|
+
var _useState21 = useState(section === 'task' ? 'floating' : 'sidebar'),
|
|
191
193
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
192
194
|
layoutMode = _useState22[0],
|
|
193
195
|
setLayoutMode = _useState22[1];
|
|
@@ -301,7 +303,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
301
303
|
amplitudEvent(EVENTS.aiChatDraggable);
|
|
302
304
|
startPointerTracking(event.clientX, event.clientY);
|
|
303
305
|
}, [clampDragPosition, isFloating, resolvedDragPosition, startPointerTracking]);
|
|
304
|
-
var startChat = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions) {
|
|
306
|
+
var startChat = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions, fuaId, scId) {
|
|
305
307
|
if (sidebarHasError) {
|
|
306
308
|
setSidebarHasError(false);
|
|
307
309
|
}
|
|
@@ -309,7 +311,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
309
311
|
setNewChatKey(function (prev) {
|
|
310
312
|
return prev + 1;
|
|
311
313
|
});
|
|
312
|
-
setUserInitialMessage(_objectSpread(_objectSpread(_objectSpread({
|
|
314
|
+
setUserInitialMessage(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
313
315
|
message: message || '',
|
|
314
316
|
attachments: attachments || []
|
|
315
317
|
}, faqId ? {
|
|
@@ -318,6 +320,10 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
318
320
|
agentSuggestionId: agentSuggestionId
|
|
319
321
|
} : {}), mentions && mentions.length > 0 ? {
|
|
320
322
|
mentions: mentions
|
|
323
|
+
} : {}), fuaId ? {
|
|
324
|
+
fuaId: fuaId
|
|
325
|
+
} : {}), scId ? {
|
|
326
|
+
scId: scId
|
|
321
327
|
} : {}));
|
|
322
328
|
handlers.chat();
|
|
323
329
|
}, [handlers, sidebarHasError]);
|
|
@@ -357,14 +363,14 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
357
363
|
setIsStreaming(streaming);
|
|
358
364
|
setIsWriting(writing);
|
|
359
365
|
}, []);
|
|
360
|
-
var handleSendMessage = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions) {
|
|
366
|
+
var handleSendMessage = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions, fuaId, scId) {
|
|
361
367
|
if (sidebarHasError) {
|
|
362
368
|
setSidebarHasError(false);
|
|
363
369
|
}
|
|
364
370
|
if (sendMessageFunction && computedCurrentOption === options.chat) {
|
|
365
|
-
sendMessageFunction(message, attachments, faqId, agentSuggestionId, mentions);
|
|
371
|
+
sendMessageFunction(message, attachments, faqId, agentSuggestionId, mentions, fuaId, scId);
|
|
366
372
|
} else {
|
|
367
|
-
startChat(message, attachments, faqId, agentSuggestionId, mentions);
|
|
373
|
+
startChat(message, attachments, faqId, agentSuggestionId, mentions, fuaId, scId);
|
|
368
374
|
}
|
|
369
375
|
}, [sendMessageFunction, startChat, computedCurrentOption, sidebarHasError]);
|
|
370
376
|
var handleGoHome = useCallback(function () {
|
|
@@ -464,14 +470,22 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
464
470
|
};
|
|
465
471
|
}, []);
|
|
466
472
|
|
|
467
|
-
/** Mismo flujo que ChatAIMyAgents.handleUseAgent + onBack (handlers.home).
|
|
473
|
+
/** Mismo flujo que ChatAIMyAgents.handleUseAgent + onBack (handlers.home).
|
|
474
|
+
* El detail puede traer opcionalmente `project`, `client`, `task` para flows que
|
|
475
|
+
* necesitan preservar contexto (ej. selector de agentes desde una tarea). Si no vienen,
|
|
476
|
+
* se mantiene el comportamiento original de limpiar project/client. */
|
|
468
477
|
useEffect(function () {
|
|
469
478
|
var openNewChatWithAgent = function openNewChatWithAgent(event) {
|
|
470
|
-
var _detail;
|
|
471
|
-
var
|
|
479
|
+
var _detail$project, _detail$client;
|
|
480
|
+
var _ref5 = event,
|
|
481
|
+
detail = _ref5.detail;
|
|
482
|
+
var nextAgent = detail === null || detail === void 0 ? void 0 : detail.agent;
|
|
472
483
|
if (!nextAgent) return;
|
|
473
|
-
setProject(null);
|
|
474
|
-
setClient === null || setClient === void 0 || setClient(null);
|
|
484
|
+
setProject((_detail$project = detail === null || detail === void 0 ? void 0 : detail.project) !== null && _detail$project !== void 0 ? _detail$project : null);
|
|
485
|
+
setClient === null || setClient === void 0 || setClient((_detail$client = detail === null || detail === void 0 ? void 0 : detail.client) !== null && _detail$client !== void 0 ? _detail$client : null);
|
|
486
|
+
if ((detail === null || detail === void 0 ? void 0 : detail.task) !== undefined) {
|
|
487
|
+
setTask === null || setTask === void 0 || setTask(detail.task);
|
|
488
|
+
}
|
|
475
489
|
selectAgent(nextAgent);
|
|
476
490
|
setHasError(false);
|
|
477
491
|
setCurrentOption(options.home);
|
|
@@ -480,7 +494,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
480
494
|
return function () {
|
|
481
495
|
document.removeEventListener('maia-open-new-chat-with-agent', openNewChatWithAgent);
|
|
482
496
|
};
|
|
483
|
-
}, [selectAgent, setClient, setProject]);
|
|
497
|
+
}, [selectAgent, setClient, setProject, setTask]);
|
|
484
498
|
var showNewChat = computedCurrentOption !== options.chat;
|
|
485
499
|
var hideHeaderAgentSelector = computedCurrentOption === options.myAgents;
|
|
486
500
|
var handleOpenMarketplace = useCallback(function () {
|
|
@@ -548,7 +562,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
548
562
|
}, [agent === null || agent === void 0 ? void 0 : agent.id, removeAgent, selectFirstAgent]);
|
|
549
563
|
var hideFooterOnMaiakerMarketplaceHome = computedCurrentOption === options.home && isMaiakerAgentSelected;
|
|
550
564
|
var modalPanel = /*#__PURE__*/_jsxs(_Fragment, {
|
|
551
|
-
children: [
|
|
565
|
+
children: [validateMaiaFeatureAccess(section) ? /*#__PURE__*/_jsx("div", {
|
|
552
566
|
style: {
|
|
553
567
|
display: isFloating ? 'none' : 'contents'
|
|
554
568
|
},
|
|
@@ -589,7 +603,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
589
603
|
loadMoreAgents: loadMoreAgents,
|
|
590
604
|
sortAgentsList: sortAgentsList,
|
|
591
605
|
hideAgentSelector: hideHeaderAgentSelector
|
|
592
|
-
}), hasError ? /*#__PURE__*/_jsx(MAIAError, {}) :
|
|
606
|
+
}), hasError ? /*#__PURE__*/_jsx(MAIAError, {}) : validateMaiaFeatureAccess(section) ? /*#__PURE__*/_jsx(ChatAIContent, {
|
|
593
607
|
currentOption: computedCurrentOption,
|
|
594
608
|
handlers: _objectSpread(_objectSpread({}, handlers), {}, {
|
|
595
609
|
chat: startChat,
|
|
@@ -615,7 +629,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
615
629
|
onGoToMaiaker: handleGoToMaiaker
|
|
616
630
|
}) : /*#__PURE__*/_jsx(ProjectSummaryContent, {
|
|
617
631
|
onRestartSummary: handlers.home
|
|
618
|
-
}), (computedCurrentOption === options.home && !!(agents !== null && agents !== void 0 && (_agents$data = agents.data) !== null && _agents$data !== void 0 && _agents$data.length) || computedCurrentOption === options.chat) && !hideFooterOnMaiakerMarketplaceHome && !hasError && !loading &&
|
|
632
|
+
}), (computedCurrentOption === options.home && !!(agents !== null && agents !== void 0 && (_agents$data = agents.data) !== null && _agents$data !== void 0 && _agents$data.length) || computedCurrentOption === options.chat) && !hideFooterOnMaiakerMarketplaceHome && !hasError && !loading && validateMaiaFeatureAccess(section) && /*#__PURE__*/_jsx(ChatAiModalFooter, {
|
|
619
633
|
agent: agent,
|
|
620
634
|
handleSendMessage: handleSendMessage,
|
|
621
635
|
handleStopGeneration: stopGenerationFunction,
|
|
@@ -637,6 +651,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
637
651
|
expanded: expanded,
|
|
638
652
|
layoutMode: layoutMode,
|
|
639
653
|
dragPosition: resolvedDragPosition,
|
|
654
|
+
elevated: section === 'task',
|
|
640
655
|
children: [/*#__PURE__*/_jsx(FloatingPanelMotion, {
|
|
641
656
|
tilt: tiltMotion,
|
|
642
657
|
expanded: expanded,
|
|
@@ -650,4 +665,4 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
650
665
|
}), /*#__PURE__*/_jsx(Snackbar, {})]
|
|
651
666
|
}), selector);
|
|
652
667
|
};
|
|
653
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIlNFQ1RJT05TIiwiU0NDQUlNQ29udGVudCIsIlNDQ0FJTUNvbnRlbnRXcmFwcGVyIiwiU0NDQUlNV3JhcHBlciIsImdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCIsIkZsb2F0aW5nUGFuZWxNb3Rpb24iLCJ1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQiLCJDaGF0QWlNb2RhbEZvb3RlciIsInZhbGlkYXRlSXNNYWlhIiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiSURfTU9EQUxfQ0hBVF9BR0VOVCIsInZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlIiwic2VjdGlvbiIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJDaGF0QUlNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl91c2VyJHBlcm1pc3Npb25zMiIsIl91c2VyJHBlcm1pc3Npb25zMyIsIl9hZ2VudHMkZGF0YSIsImhhbmRsZUNsb3NlIiwidXNlciIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJoYW5kbGVDbG9zZU1vZGFsIiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJfdXNlU3RhdGUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNldFNlbmRNZXNzYWdlRnVuY3Rpb24iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiaXNTdHJlYW1pbmciLCJzZXRJc1N0cmVhbWluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJpc1dyaXRpbmciLCJzZXRJc1dyaXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwicmVmZXRjaENoYXRzIiwic2V0UmVmZXRjaENoYXRzIiwiX3VzZVN0YXRlMTUiLCJob21lIiwiX3VzZVN0YXRlMTYiLCJjdXJyZW50T3B0aW9uIiwic2V0Q3VycmVudE9wdGlvbiIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiaGFuZGxlcnMiLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwic2lkZWJhckhhc0Vycm9yIiwic2V0U2lkZWJhckhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJsYW5nIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50IiwiYWdlbnQiLCJwcm9qZWN0IiwiY2xpZW50IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0IiwiYmFubmVyRW50cnlGYXEiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJhZGRBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInNvcnRBZ2VudHNMaXN0IiwiaXNNQUlBIiwidXNlckhhc1Blcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjcmVhdGUiLCJlZGl0IiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInRlc3QiLCJuYW1lIiwibXlBZ2VudHMiLCJjaGF0Iiwic2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciIsInNob3VsZFNob3dDbGllbnRTZWxlY3RvciIsInByb2plY3RTZWxlY3RvciIsImNsaWVudFNlbGVjdG9yIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInR5cGUiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjEiLCJfdXNlU3RhdGUyMiIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiZHJhZ1Bvc2l0aW9uIiwic2V0RHJhZ1Bvc2l0aW9uIiwiX3VzZUZsb2F0aW5nUGFuZWxEcmFnIiwidGlsdE1vdGlvbiIsInN0YXJ0UG9pbnRlclRyYWNraW5nIiwic2FtcGxlUG9pbnRlck1vdmUiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJkcmFnU3RhdGVSZWYiLCJjbGFtcERyYWdQb3NpdGlvbiIsIngiLCJ5IiwiY29udGVudFdyYXBwZXIiLCJjdXJyZW50IiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsInJlY3QiLCJpbml0aWFsUG9zaXRpb24iLCJsZWZ0IiwidG9wIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJCb29sZWFuIiwiaWQiLCJmYXFUaXRsZSIsInRyaW0iLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJmaW5kIiwiYWdlbnRJdGVtIiwiYWdlbnRJZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsImhhbmRsZVJlc2V0Q2hhdCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsInN0b3AiLCJvbk1lcmdlQ3JlYXRlZEFnZW50IiwiZXZ0IiwiX3JlZjMiLCJkZXRhaWwiLCJuZXh0QWdlbnQiLCJuYXZpZ2F0ZUhvbWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uU3luY0VkaXRlZEFnZW50IiwiX3JlZjQiLCJvcGVuQ2hhdFZpZXciLCJvcGVuTmV3Q2hhdFdpdGhBZ2VudCIsIl9kZXRhaWwiLCJzaG93TmV3Q2hhdCIsImhpZGVIZWFkZXJBZ2VudFNlbGVjdG9yIiwiaGFuZGxlT3Blbk1hcmtldHBsYWNlIiwiaGFuZGxlR29Ub01haWFrZXIiLCJfY2FsbGVlMiIsIm1haWFrZXJBZ2VudCIsInJlc3BvbnNlIiwiX3QiLCJfY29udGV4dDIiLCJhIiwicGF0aCIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiYWJydXB0IiwiaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMiLCJoaWRlRm9vdGVyT25NYWlha2VyTWFya2V0cGxhY2VIb21lIiwibW9kYWxQYW5lbCIsImNoaWxkcmVuIiwiZGlzcGxheSIsIm9uR29Ub0NoYXQiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJhZ2VudHNOYXZBY3RpdmUiLCJmbG9hdGluZyIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm9uQWdlbnRVcGRhdGUiLCJoaWRlQWdlbnRTZWxlY3RvciIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJvbkRlbGV0ZUFnZW50Iiwib25GYXZvcml0ZUFnZW50VXBkYXRlIiwiaGFzTW9yZUFnZW50cyIsImxvYWRpbmdNb3JlQWdlbnRzIiwib25Mb2FkTW9yZUFnZW50cyIsIm9uR29Ub01haWFrZXIiLCJvblJlc3RhcnRTdW1tYXJ5IiwiaGFuZGxlU3RvcEdlbmVyYXRpb24iLCJjaGF0SWQiLCJzaG93RmFxcyIsInJlZiIsImNyZWF0ZVBvcnRhbCIsInRpbHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7XG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5cbmltcG9ydCB7IENoYXRBSUNvbnRlbnQgfSBmcm9tICcuLi9DaGF0QUlDb250ZW50J1xuaW1wb3J0IHsgYnVpbGRIYW5kbGVycywgb3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gJy4uL1NpZGViYXInXG5pbXBvcnQgeyB1c2VHZXRBZ2VudHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IENoYXRBSU1vZGFsSGVhZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyJ1xuaW1wb3J0IHsgU25hY2tiYXIgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvU25hY2tCYXIvU25hY2tiYXInXG5pbXBvcnQgeyBQcm9qZWN0U3VtbWFyeUNvbnRlbnQgfSBmcm9tICcuLi9Qcm9qZWN0U3VtbWFyeUNvbnRlbnQnXG5pbXBvcnQgeyBBYm1BZ2VudE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgsIE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlIH0gZnJvbSAnLi9sYXlvdXQnXG5pbXBvcnQgeyBGbG9hdGluZ1BhbmVsTW90aW9uLCB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQgfSBmcm9tICcuL2Zsb2F0aW5nUGFuZWxNb3Rpb24nXG5pbXBvcnQgeyBDaGF0QWlNb2RhbEZvb3RlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEZvb3RlcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmNvbnN0IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlID0gKHNlY3Rpb246IHN0cmluZykgPT4ge1xuICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8IHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAoKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50JykgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICh7IGhhbmRsZUNsb3NlIH06IENoYXRBSU1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2VdKVxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICB9Pih7XG4gICAgbWVzc2FnZTogJycsXG4gICAgYXR0YWNobWVudHM6IFtdLFxuICB9KVxuICBjb25zdCBbaW5pdGlhbENoYXRJZCwgc2V0SW5pdGlhbENoYXRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbbmV3Q2hhdEtleSwgc2V0TmV3Q2hhdEtleV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbl0gPSB1c2VTdGF0ZTxcbiAgICB8ICgoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBbcmVmZXRjaENoYXRzLCBzZXRSZWZldGNoQ2hhdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50T3B0aW9uLCBzZXRDdXJyZW50T3B0aW9uXSA9IHVzZVN0YXRlKG9wdGlvbnMuaG9tZSlcbiAgY29uc3QgW2hhc0Vycm9yLCBzZXRIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZWN0aW9uLFxuICAgIGFnZW50LFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgYmFubmVyRW50cnlGYXEsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICBjb25zdCB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3I6IGFnZW50RXJyb3IsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfSA9IHVzZUdldEFnZW50cyh7IHNlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgaGFuZGxlR29Ib21lOiBoYW5kbGVycy5ob21lIH0pXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID1cbiAgICAodXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5lZGl0IHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5kZWxldGUpICYmXG4gICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICBjb25zdCBjb21wdXRlZEN1cnJlbnRPcHRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpc0dsb2JhbFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCdcbiAgICBjb25zdCBpc1Byb2plY3RTcGVjaWFsaXN0ID0gaXNNQUlBICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PSBudWxsKVxuICAgIGNvbnN0IGlzQ2xpZW50U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50J1xuICAgIGNvbnN0IGlzTWFpYWtlciA9IGlzR2xvYmFsU3BlY2lhbGlzdCAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJylcblxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5teUFnZW50c1xuICAgIH1cblxuICAgIGlmIChpc0dsb2JhbFNwZWNpYWxpc3QgJiYgIWlzTWFpYWtlciAmJiBjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNoYXRcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzUHJvamVjdFNwZWNpYWxpc3QgJiYgIXByb2plY3RcbiAgICBjb25zdCBzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNDbGllbnRTcGVjaWFsaXN0ICYmICFjbGllbnRcblxuICAgIGlmIChzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5wcm9qZWN0U2VsZWN0b3JcbiAgICB9XG4gICAgaWYgKHNob3VsZFNob3dDbGllbnRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2xpZW50U2VsZWN0b3JcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRPcHRpb25cbiAgfSwgW2N1cnJlbnRPcHRpb24sIHByb2plY3QsIGNsaWVudCwgaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8ubmFtZV0pXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGlzTUFJQSAmJlxuICAgICAgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcgJiZcbiAgICAgIGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmXG4gICAgICAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJyksXG4gICAgW2lzTUFJQSwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/LnR5cGUsIGFnZW50Py5uYW1lXVxuICApXG5cbiAgY29uc3Qgc2lkZWJhckFnZW50c05hdkFjdGl2ZSA9IHVzZU1lbW8oKCk6ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCBudWxsID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzKSByZXR1cm4gJ215QWdlbnRzJ1xuICAgIGlmIChpc01haWFrZXJBZ2VudFNlbGVjdGVkKSByZXR1cm4gJ21haWFrZXInXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZF0pXG5cbiAgLyogUmVhY3RpdmFyIGNvbiBsYSBmaWxhIOKAnE1pcyBhZ2VudGVz4oCdIGVuIFNpZGViYXI6IG15QWdlbnRzQ291bnQgcHJvcFxuICBjb25zdCBzaWRlYmFyTXlBZ2VudHNDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBhZ2VudHMuZGF0YS5maWx0ZXIoXG4gICAgICBhID0+ICEoYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhLm5hbWUgfHwgJycpKVxuICAgIClcbiAgICAgIC5sZW5ndGhcbiAgfSwgW2FnZW50cy5kYXRhXSlcbiAgKi9cblxuICBjb25zdCBhZ2VudHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IHNlbGVjdG9yID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7SURfTU9EQUxfQ0hBVF9BR0VOVH1gKVxuXG4gIGNvbnN0IFtsYXlvdXRNb2RlLCBzZXRMYXlvdXRNb2RlXSA9IHVzZVN0YXRlPE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlPignc2lkZWJhcicpXG4gIGNvbnN0IGV4cGFuZGVkID0gbGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXG4gIGNvbnN0IGlzRmxvYXRpbmcgPSBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbZHJhZ1Bvc2l0aW9uLCBzZXREcmFnUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcbiAgICB9LFxuICAgIFtlbmRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBkcmFnU3RhdGUgPSBkcmFnU3RhdGVSZWYuY3VycmVudFxuICAgICAgaWYgKCFkcmFnU3RhdGUgfHwgZHJhZ1N0YXRlLnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzYW1wbGVQb2ludGVyTW92ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuXG4gICAgICBjb25zdCBuZXh0UG9zaXRpb24gPSBjbGFtcERyYWdQb3NpdGlvbihldmVudC5jbGllbnRYIC0gZHJhZ1N0YXRlLm9mZnNldFgsIGV2ZW50LmNsaWVudFkgLSBkcmFnU3RhdGUub2Zmc2V0WSlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnggPT09IG5leHRQb3NpdGlvbi54ICYmIHByZXYueSA9PT0gbmV4dFBvc2l0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0UG9zaXRpb25cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIHNhbXBsZVBvaW50ZXJNb3ZlXVxuICApXG5cbiAgY29uc3QgcmVzb2x2ZWREcmFnUG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBpZiAoZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgY29uc3QgeCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZCA6IHBhZFxuICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkcmFnUG9zaXRpb24sIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Zsb2F0aW5nIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtyb2xlPVwiYnV0dG9uXCJdLCBbZGF0YS1uby1kcmFnPVwidHJ1ZVwiXScpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgaW5pdGlhbFBvc2l0aW9uID0gcmVzb2x2ZWREcmFnUG9zaXRpb24gPz8gY2xhbXBEcmFnUG9zaXRpb24ocmVjdC5sZWZ0LCByZWN0LnRvcClcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIGluaXRpYWxQb3NpdGlvbi54XG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WSA9IGV2ZW50LmNsaWVudFkgLSBpbml0aWFsUG9zaXRpb24ueVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24oaW5pdGlhbFBvc2l0aW9uKVxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIHBvaW50ZXJJZDogZXZlbnQucG9pbnRlcklkLFxuICAgICAgICBvZmZzZXRYOiBwb2ludGVyT2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogcG9pbnRlck9mZnNldFksXG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJ1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0RHJhZ2dhYmxlKVxuICAgICAgc3RhcnRQb2ludGVyVHJhY2tpbmcoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgaXNGbG9hdGluZywgcmVzb2x2ZWREcmFnUG9zaXRpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3Qgc3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCAnJyxcbiAgICAgICAgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKG1lbnRpb25zICYmIG1lbnRpb25zLmxlbmd0aCA+IDAgPyB7IG1lbnRpb25zIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZW50aXR5UmVhZHkgPSBzZWN0aW9uID09PSAncHJvamVjdCcgPyBCb29sZWFuKHByb2plY3Q/LmlkKSA6IHNlY3Rpb24gPT09ICdjbGllbnQnID8gQm9vbGVhbihjbGllbnQ/LmlkKSA6IHRydWVcblxuICAgIGlmICghYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlPy50cmltKCkgfHwgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCB8fCBsb2FkaW5nIHx8ICFhZ2VudD8uaWQgfHwgIWVudGl0eVJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHN0YXJ0Q2hhdChiYW5uZXJFbnRyeUZhcS5mYXFUaXRsZSwgW10sIGJhbm5lckVudHJ5RmFxLmZhcUlkKVxuICB9LCBbXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcUlkLFxuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZSxcbiAgICBsb2FkaW5nLFxuICAgIGFnZW50Py5pZCxcbiAgICBhZ2VudD8uZW50aXR5LFxuICAgIHByb2plY3Q/LmlkLFxuICAgIGNsaWVudD8uaWQsXG4gICAgc2VjdGlvbixcbiAgICBzdGFydENoYXQsXG4gIF0pXG5cbiAgY29uc3QgZ29Ub0NoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hhdDogYW55KSA9PiB7XG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmlkID09PSBjaGF0LmFnZW50SWQpXG4gICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgfVxuICAgICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBhZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHN0YXJ0Q2hhdCwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBoYW5kbGVHb0hvbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2kgZXN0YW1vcyBlbiB1bmEgY29udmVyc2FjacOzbiB5IHZhbW9zIGEgaG9tZSwgcmVzZXRlYXIgaW5pdGlhbENoYXRJZCB5IGluY3JlbWVudGFyIG5ld0NoYXRLZXlcbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICAvLyBObyBib3JyYXIgZWwgY2xpZW50ZSBzaSBlcyBhZ2VudGUgZGUgY2xpZW50ZXMgKGlndWFsIHF1ZSBlbCBwcm95ZWN0byBzZSBtYW50aWVuZSlcbiAgICAgIGlmIChhZ2VudD8uZW50aXR5ICE9PSAnY2xpZW50Jykge1xuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAoIWFnZW50IHx8IGFnZW50Py5pc19kZWxldGVkIHx8IGFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8IGFnZW50Py5oYXNfbm90X2FjY2VzcyB8fCBhZ2VudD8ucHJvamVjdF9kZWxldGVkKSAmJlxuICAgICAgYWdlbnRzLmRhdGEubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRzLmRhdGFbMF0pXG4gICAgfVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW1xuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBvcHRpb25zLmNoYXQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgYWdlbnQsXG4gICAgYWdlbnRzLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldENsaWVudCxcbiAgXSlcblxuICBjb25zdCBoYW5kbGVSZXNldENoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbaGFuZGxlR29Ib21lXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBoYW5kbGVHZXRBZ2VudHMoKVxuICAgIH1cbiAgfSwgW2hhbmRsZUdldEFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbk1lcmdlQ3JlYXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAobmV4dEFnZW50Py5pZCkge1xuICAgICAgICBhZGRBZ2VudChuZXh0QWdlbnQsIHsgbmF2aWdhdGVIb21lOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbYWRkQWdlbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TeW5jRWRpdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghbmV4dEFnZW50Py5pZCkgcmV0dXJuXG4gICAgICB1cGRhdGVBZ2VudChuZXh0QWdlbnQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBuZXh0QWdlbnQuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW3VwZGF0ZUFnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnQ/LmlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5DaGF0VmlldyA9ICgpID0+IHtcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmNoYXQpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKiBNaXNtbyBmbHVqbyBxdWUgQ2hhdEFJTXlBZ2VudHMuaGFuZGxlVXNlQWdlbnQgKyBvbkJhY2sgKGhhbmRsZXJzLmhvbWUpLiAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5OZXdDaGF0V2l0aEFnZW50ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgbmV4dEFnZW50ID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWw/LmFnZW50XG4gICAgICBpZiAoIW5leHRBZ2VudCkgcmV0dXJuXG5cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdF0pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuICBjb25zdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGE6IEFnZW50KSA9PiBhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3RdKVxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgPyAoXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogaXNGbG9hdGluZyA/ICdub25lJyA6ICdjb250ZW50cycgfX0gYXJpYS1oaWRkZW49e2lzRmxvYXRpbmd9PlxuICAgICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgICBvbkdvVG9DaGF0PXtnb1RvQ2hhdH1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldFNpZGViYXJIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2U9e2hhbmRsZU9wZW5NYXJrZXRwbGFjZX1cbiAgICAgICAgICAgIHNob3dOZXdDaGF0PXtzaG93TmV3Q2hhdH1cbiAgICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzPXtzZXRSZWZldGNoQ2hhdHN9XG4gICAgICAgICAgICBoYXNFcnJvcj17c2lkZWJhckhhc0Vycm9yfVxuICAgICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgICAgYWdlbnRzTmF2QWN0aXZlPXtzaWRlYmFyQWdlbnRzTmF2QWN0aXZlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U0NDQUlNQ29udGVudCBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgPENoYXRBSU1vZGFsSGVhZGVyXG4gICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICBvbkxheW91dE1vZGVDaGFuZ2U9e3NldExheW91dE1vZGV9XG4gICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgIGRyYWdnYWJsZT17aXNGbG9hdGluZ31cbiAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgIG9uRHJhZ01vdmU9e2hhbmRsZURyYWdNb3ZlfVxuICAgICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgIGhhc0Vycm9yPXshIWFnZW50RXJyb3J9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBsb2FkaW5nTW9yZT17bG9hZGluZ01vcmV9XG4gICAgICAgICAgaGFzTW9yZT17YWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgIGhhbmRsZVJlc2V0Q2hhdD17aGFuZGxlUmVzZXRDaGF0fVxuICAgICAgICAgIG9uQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgbG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgIHNvcnRBZ2VudHNMaXN0PXtzb3J0QWdlbnRzTGlzdH1cbiAgICAgICAgICBoaWRlQWdlbnRTZWxlY3Rvcj17aGlkZUhlYWRlckFnZW50U2VsZWN0b3J9XG4gICAgICAgIC8+XG4gICAgICAgIHtoYXNFcnJvciA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBvbkRlbGV0ZUFnZW50PXtoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50c31cbiAgICAgICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIGhhc01vcmVBZ2VudHM9eyEhYWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgICAgbG9hZGluZ01vcmVBZ2VudHM9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgICAgb25Mb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgICBvbkdvVG9NYWlha2VyPXtoYW5kbGVHb1RvTWFpYWtlcn1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxQcm9qZWN0U3VtbWFyeUNvbnRlbnQgb25SZXN0YXJ0U3VtbWFyeT17aGFuZGxlcnMuaG9tZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgeygoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgISFhZ2VudHM/LmRhdGE/Lmxlbmd0aCkgfHxcbiAgICAgICAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkgJiZcbiAgICAgICAgICAhaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSAmJlxuICAgICAgICAgICFoYXNFcnJvciAmJlxuICAgICAgICAgICFsb2FkaW5nICYmXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgKFxuICAgICAgICAgICAgPENoYXRBaU1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICBoYW5kbGVTdG9wR2VuZXJhdGlvbj17c3RvcEdlbmVyYXRpb25GdW5jdGlvbn1cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgICAgY2hhdElkPXtpbml0aWFsQ2hhdElkfVxuICAgICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgICBzaG93RmFxcz17Y29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8L1NDQ0FJTUNvbnRlbnQ+XG4gICAgPC8+XG4gIClcblxuICBjb25zdCBjb250ZW50V3JhcHBlciA9IChcbiAgICA8U0NDQUlNQ29udGVudFdyYXBwZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30gcmVmPXtjb250ZW50V3JhcHBlclJlZn0+XG4gICAgICB7bW9kYWxQYW5lbH1cbiAgICA8L1NDQ0FJTUNvbnRlbnRXcmFwcGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICBzZWxlY3RvciAmJlxuICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0NBSU1XcmFwcGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gbGF5b3V0TW9kZT17bGF5b3V0TW9kZX0gZHJhZ1Bvc2l0aW9uPXtyZXNvbHZlZERyYWdQb3NpdGlvbn0+XG4gICAgICAgIDxGbG9hdGluZ1BhbmVsTW90aW9uIHRpbHQ9e3RpbHRNb3Rpb259IGV4cGFuZGVkPXtleHBhbmRlZH0+XG4gICAgICAgICAge2NvbnRlbnRXcmFwcGVyfVxuICAgICAgICA8L0Zsb2F0aW5nUGFuZWxNb3Rpb24+XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1BZ2VudE1vZGFsXG4gICAgICAgICAgICBhZGRBZ2VudD17YWRkQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudD17dXBkYXRlQWdlbnR9XG4gICAgICAgICAgICByZW1vdmVBZ2VudD17cmVtb3ZlQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudD17c2VsZWN0Rmlyc3RBZ2VudH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8U25hY2tiYXIgLz5cbiAgICAgIDwvU0NDQUlNV3JhcHBlcj4sXG4gICAgICBzZWxlY3RvclxuICAgIClcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBRUVBLFdBQVcsRUFDWEMsT0FBTyxFQUNQQyxRQUFRLEVBQ1JDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxlQUFlLFFBRVYsT0FBTztBQUNkLE9BQU9DLFFBQVEsTUFBTSxXQUFXO0FBQ2hDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsU0FBUyxRQUFRLHVCQUF1QjtBQUVqRCxTQUFTQyxhQUFhLFFBQVEsa0JBQWtCO0FBQ2hELFNBQVNDLGFBQWEsRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDcEQsU0FBU0MsT0FBTyxRQUFRLFlBQVk7QUFDcEMsU0FBU0MsWUFBWSxRQUFRLHlDQUF5QztBQUN0RSxTQUFTQyxnQkFBZ0IsUUFBUSxpQ0FBaUM7QUFHbEUsU0FBU0MsaUJBQWlCLFFBQVEsa0RBQWtEO0FBQ3BGLFNBQVNDLFFBQVEsUUFBUSxtQ0FBbUM7QUFDNUQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLGFBQWEsUUFBUSw2Q0FBNkM7QUFDM0UsU0FBU0MsUUFBUSxRQUFRLDJCQUEyQjtBQUNwRCxTQUFTQyxhQUFhLEVBQUVDLG9CQUFvQixFQUFFQyxh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
|
|
668
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIlNFQ1RJT05TIiwiU0NDQUlNQ29udGVudCIsIlNDQ0FJTUNvbnRlbnRXcmFwcGVyIiwiU0NDQUlNV3JhcHBlciIsImdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCIsIkZsb2F0aW5nUGFuZWxNb3Rpb24iLCJ1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQiLCJDaGF0QWlNb2RhbEZvb3RlciIsInZhbGlkYXRlSXNNYWlhIiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwibG9nTWFpYUFjY2Vzc0RlYnVnIiwidmFsaWRhdGVNYWlhRmVhdHVyZUFjY2VzcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJDaGF0QUlNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl91c2VyJHBlcm1pc3Npb25zMiIsIl91c2VyJHBlcm1pc3Npb25zMyIsIl9hZ2VudHMkZGF0YSIsImhhbmRsZUNsb3NlIiwidXNlciIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJoYW5kbGVDbG9zZU1vZGFsIiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJfdXNlU3RhdGUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNldFNlbmRNZXNzYWdlRnVuY3Rpb24iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiaXNTdHJlYW1pbmciLCJzZXRJc1N0cmVhbWluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJpc1dyaXRpbmciLCJzZXRJc1dyaXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwicmVmZXRjaENoYXRzIiwic2V0UmVmZXRjaENoYXRzIiwiX3VzZVN0YXRlMTUiLCJob21lIiwiX3VzZVN0YXRlMTYiLCJjdXJyZW50T3B0aW9uIiwic2V0Q3VycmVudE9wdGlvbiIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiaGFuZGxlcnMiLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwic2lkZWJhckhhc0Vycm9yIiwic2V0U2lkZWJhckhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJsYW5nIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50Iiwic2VjdGlvbiIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsImZlYXR1cmVBY2Nlc3NHcmFudGVkIiwiZmVhdHVyZV9hY2Nlc3NfZ3JhbnRlZCIsIl91c2VHZXRBZ2VudHMiLCJoYW5kbGVHb0hvbWUiLCJhZ2VudHMiLCJsb2FkaW5nIiwibG9hZGluZ01vcmUiLCJhZ2VudEVycm9yIiwiZXJyb3IiLCJoYW5kbGVHZXRBZ2VudHMiLCJsb2FkTW9yZUFnZW50cyIsImFkZEFnZW50IiwicmVtb3ZlQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzZWxlY3RGaXJzdEFnZW50Iiwic29ydEFnZW50c0xpc3QiLCJpc01BSUEiLCJ1c2VySGFzUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNyZWF0ZSIsImVkaXQiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInRlc3QiLCJuYW1lIiwibXlBZ2VudHMiLCJjaGF0Iiwic2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciIsInNob3VsZFNob3dDbGllbnRTZWxlY3RvciIsInByb2plY3RTZWxlY3RvciIsImNsaWVudFNlbGVjdG9yIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInR5cGUiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjEiLCJfdXNlU3RhdGUyMiIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiZHJhZ1Bvc2l0aW9uIiwic2V0RHJhZ1Bvc2l0aW9uIiwiX3VzZUZsb2F0aW5nUGFuZWxEcmFnIiwidGlsdE1vdGlvbiIsInN0YXJ0UG9pbnRlclRyYWNraW5nIiwic2FtcGxlUG9pbnRlck1vdmUiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJkcmFnU3RhdGVSZWYiLCJjbGFtcERyYWdQb3NpdGlvbiIsIngiLCJ5IiwiY29udGVudFdyYXBwZXIiLCJjdXJyZW50IiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsInJlY3QiLCJpbml0aWFsUG9zaXRpb24iLCJsZWZ0IiwidG9wIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJCb29sZWFuIiwiaWQiLCJmYXFUaXRsZSIsInRyaW0iLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJmaW5kIiwiYWdlbnRJdGVtIiwiYWdlbnRJZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsImhhbmRsZVJlc2V0Q2hhdCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsInN0b3AiLCJvbk1lcmdlQ3JlYXRlZEFnZW50IiwiZXZ0IiwiX3JlZjMiLCJkZXRhaWwiLCJuZXh0QWdlbnQiLCJuYXZpZ2F0ZUhvbWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uU3luY0VkaXRlZEFnZW50IiwiX3JlZjQiLCJvcGVuQ2hhdFZpZXciLCJvcGVuTmV3Q2hhdFdpdGhBZ2VudCIsIl9kZXRhaWwkcHJvamVjdCIsIl9kZXRhaWwkY2xpZW50IiwiX3JlZjUiLCJ0YXNrIiwidW5kZWZpbmVkIiwic2hvd05ld0NoYXQiLCJoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwiYSIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImFicnVwdCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsImRpc3BsYXkiLCJvbkdvVG9DaGF0Iiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiYWdlbnRzTmF2QWN0aXZlIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJyZWZzIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwic2hvd0ZhcXMiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsInRpbHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7XG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5cbmltcG9ydCB7IENoYXRBSUNvbnRlbnQgfSBmcm9tICcuLi9DaGF0QUlDb250ZW50J1xuaW1wb3J0IHsgYnVpbGRIYW5kbGVycywgb3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gJy4uL1NpZGViYXInXG5pbXBvcnQgeyB1c2VHZXRBZ2VudHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IENoYXRBSU1vZGFsSGVhZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyJ1xuaW1wb3J0IHsgU25hY2tiYXIgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvU25hY2tCYXIvU25hY2tiYXInXG5pbXBvcnQgeyBQcm9qZWN0U3VtbWFyeUNvbnRlbnQgfSBmcm9tICcuLi9Qcm9qZWN0U3VtbWFyeUNvbnRlbnQnXG5pbXBvcnQgeyBBYm1BZ2VudE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgsIE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlIH0gZnJvbSAnLi9sYXlvdXQnXG5pbXBvcnQgeyBGbG9hdGluZ1BhbmVsTW90aW9uLCB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQgfSBmcm9tICcuL2Zsb2F0aW5nUGFuZWxNb3Rpb24nXG5pbXBvcnQgeyBDaGF0QWlNb2RhbEZvb3RlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEZvb3RlcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvVGFzaydcbmltcG9ydCB7IHVzZUZhcXNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUZhcXNTdG9yZSdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBsb2dNYWlhQWNjZXNzRGVidWcsIHZhbGlkYXRlTWFpYUZlYXR1cmVBY2Nlc3MgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvbWFpYVRhc2tQYW5lbEFjY2VzcydcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICh7IGhhbmRsZUNsb3NlIH06IENoYXRBSU1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2VdKVxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICB9Pih7XG4gICAgbWVzc2FnZTogJycsXG4gICAgYXR0YWNobWVudHM6IFtdLFxuICB9KVxuICBjb25zdCBbaW5pdGlhbENoYXRJZCwgc2V0SW5pdGlhbENoYXRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbbmV3Q2hhdEtleSwgc2V0TmV3Q2hhdEtleV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbl0gPSB1c2VTdGF0ZTxcbiAgICB8ICgoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZClcbiAgICB8IG51bGxcbiAgPihudWxsKVxuICBjb25zdCBbc3RvcEdlbmVyYXRpb25GdW5jdGlvbiwgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbl0gPSB1c2VTdGF0ZTwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNTdHJlYW1pbmcsIHNldElzU3RyZWFtaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZShvcHRpb25zLmhvbWUpXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGhhbmRsZXJzID0gdXNlTWVtbygoKSA9PiBidWlsZEhhbmRsZXJzKHNldEN1cnJlbnRPcHRpb24sIHNldEhhc0Vycm9yKSwgW10pXG4gIGNvbnN0IFtzaWRlYmFySGFzRXJyb3IsIHNldFNpZGViYXJIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcmVzZXRTZWxlY3RlZENoYXRSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQtYnInIDogaTE4bi5sYW5ndWFnZVxuXG4gIG1vbWVudC5sb2NhbGUobGFuZylcblxuICBjb25zdCB7XG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2VjdGlvbixcbiAgICBhZ2VudCxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGJhbm5lckVudHJ5RmFxLFxuICAgIHNldFRhc2ssXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZlYXR1cmVBY2Nlc3NHcmFudGVkID0gdmFsaWRhdGVNYWlhRmVhdHVyZUFjY2VzcyhzZWN0aW9uKVxuICAgIGxvZ01haWFBY2Nlc3NEZWJ1ZygnQ2hhdEFJTW9kYWwgbW91bnQnLCB1c2VyLCBzZWN0aW9uLCB7XG4gICAgICBmZWF0dXJlX2FjY2Vzc19ncmFudGVkOiBmZWF0dXJlQWNjZXNzR3JhbnRlZCxcbiAgICB9KVxuICB9LCBbc2VjdGlvbiwgdXNlcl0pXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuXG4gIGNvbnN0IHVzZXJIYXNQZXJtaXNzaW9ucyA9XG4gICAgKHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmNyZWF0ZSB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZWRpdCB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZGVsZXRlKSAmJlxuICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgY29uc3QgY29tcHV0ZWRDdXJyZW50T3B0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaXNHbG9iYWxTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnXG4gICAgY29uc3QgaXNQcm9qZWN0U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT0gbnVsbClcbiAgICBjb25zdCBpc0NsaWVudFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCdcbiAgICBjb25zdCBpc01haWFrZXIgPSBpc0dsb2JhbFNwZWNpYWxpc3QgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG5cbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICB9XG5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jaGF0XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc1Byb2plY3RTcGVjaWFsaXN0ICYmICFwcm9qZWN0XG4gICAgY29uc3Qgc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzQ2xpZW50U3BlY2lhbGlzdCAmJiAhY2xpZW50XG5cbiAgICBpZiAoc2hvdWxkU2hvd1Byb2plY3RTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucHJvamVjdFNlbGVjdG9yXG4gICAgfVxuICAgIGlmIChzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNsaWVudFNlbGVjdG9yXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50T3B0aW9uXG4gIH0sIFtjdXJyZW50T3B0aW9uLCBwcm9qZWN0LCBjbGllbnQsIGlzTUFJQSwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/Lm5hbWVdKVxuXG4gIGNvbnN0IGlzTWFpYWtlckFnZW50U2VsZWN0ZWQgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBpc01BSUEgJiZcbiAgICAgIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnICYmXG4gICAgICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJlxuICAgICAgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpLFxuICAgIFtpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py50eXBlLCBhZ2VudD8ubmFtZV1cbiAgKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKCgpOiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykgcmV0dXJuICdteUFnZW50cydcbiAgICBpZiAoaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkgcmV0dXJuICdtYWlha2VyJ1xuICAgIHJldHVybiBudWxsXG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRdKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSlcbiAgICApXG4gICAgICAubGVuZ3RoXG4gIH0sIFthZ2VudHMuZGF0YV0pXG4gICovXG5cbiAgY29uc3QgYWdlbnRzRmV0Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCBzZWxlY3RvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke0lEX01PREFMX0NIQVRfQUdFTlR9YClcblxuICAvLyBFbiBzZWN0aW9uICd0YXNrJyBNYWlhIGFicmUgZW4gbW9kbyBmbG90YW50ZSBwb3IgZGVmYXVsdCAoc2UgYWJyZSBkZXNkZSBlbCB0YXNrIHBhbmVsLFxuICAvLyBubyBxdWVyZW1vcyB0YXBhcmxvIGVudGVybykuIEVsIHVzdWFyaW8gcHVlZGUgY2FtYmlhciBhIHNpZGViYXIvZnVsbHNjcmVlbiBkZXNkZSBsb3MgY29udHJvbGVzIGRlbCBtb2RhbC5cbiAgY29uc3QgW2xheW91dE1vZGUsIHNldExheW91dE1vZGVdID0gdXNlU3RhdGU8TWFpYUNoYXRNb2RhbExheW91dE1vZGU+KHNlY3Rpb24gPT09ICd0YXNrJyA/ICdmbG9hdGluZycgOiAnc2lkZWJhcicpXG4gIGNvbnN0IGV4cGFuZGVkID0gbGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXG4gIGNvbnN0IGlzRmxvYXRpbmcgPSBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbZHJhZ1Bvc2l0aW9uLCBzZXREcmFnUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcbiAgICB9LFxuICAgIFtlbmRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBkcmFnU3RhdGUgPSBkcmFnU3RhdGVSZWYuY3VycmVudFxuICAgICAgaWYgKCFkcmFnU3RhdGUgfHwgZHJhZ1N0YXRlLnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzYW1wbGVQb2ludGVyTW92ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuXG4gICAgICBjb25zdCBuZXh0UG9zaXRpb24gPSBjbGFtcERyYWdQb3NpdGlvbihldmVudC5jbGllbnRYIC0gZHJhZ1N0YXRlLm9mZnNldFgsIGV2ZW50LmNsaWVudFkgLSBkcmFnU3RhdGUub2Zmc2V0WSlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnggPT09IG5leHRQb3NpdGlvbi54ICYmIHByZXYueSA9PT0gbmV4dFBvc2l0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0UG9zaXRpb25cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIHNhbXBsZVBvaW50ZXJNb3ZlXVxuICApXG5cbiAgY29uc3QgcmVzb2x2ZWREcmFnUG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBpZiAoZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgY29uc3QgeCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZCA6IHBhZFxuICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkcmFnUG9zaXRpb24sIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Zsb2F0aW5nIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtyb2xlPVwiYnV0dG9uXCJdLCBbZGF0YS1uby1kcmFnPVwidHJ1ZVwiXScpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgaW5pdGlhbFBvc2l0aW9uID0gcmVzb2x2ZWREcmFnUG9zaXRpb24gPz8gY2xhbXBEcmFnUG9zaXRpb24ocmVjdC5sZWZ0LCByZWN0LnRvcClcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIGluaXRpYWxQb3NpdGlvbi54XG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WSA9IGV2ZW50LmNsaWVudFkgLSBpbml0aWFsUG9zaXRpb24ueVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24oaW5pdGlhbFBvc2l0aW9uKVxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIHBvaW50ZXJJZDogZXZlbnQucG9pbnRlcklkLFxuICAgICAgICBvZmZzZXRYOiBwb2ludGVyT2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogcG9pbnRlck9mZnNldFksXG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJ1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0RHJhZ2dhYmxlKVxuICAgICAgc3RhcnRQb2ludGVyVHJhY2tpbmcoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgaXNGbG9hdGluZywgcmVzb2x2ZWREcmFnUG9zaXRpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3Qgc3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCAnJyxcbiAgICAgICAgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKG1lbnRpb25zICYmIG1lbnRpb25zLmxlbmd0aCA+IDAgPyB7IG1lbnRpb25zIH0gOiB7fSksXG4gICAgICAgIC4uLihmdWFJZCA/IHsgZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgYmFubmVyRmFxQXV0b1NlbnRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbnRpdHlSZWFkeSA9IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/IEJvb2xlYW4ocHJvamVjdD8uaWQpIDogc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyBCb29sZWFuKGNsaWVudD8uaWQpIDogdHJ1ZVxuXG4gICAgaWYgKCFiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSB8fCBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50IHx8IGxvYWRpbmcgfHwgIWFnZW50Py5pZCB8fCAhZW50aXR5UmVhZHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgc3RhcnRDaGF0KGJhbm5lckVudHJ5RmFxLmZhcVRpdGxlLCBbXSwgYmFubmVyRW50cnlGYXEuZmFxSWQpXG4gIH0sIFtcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxSWQsXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlLFxuICAgIGxvYWRpbmcsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGFnZW50Py5lbnRpdHksXG4gICAgcHJvamVjdD8uaWQsXG4gICAgY2xpZW50Py5pZCxcbiAgICBzZWN0aW9uLFxuICAgIHN0YXJ0Q2hhdCxcbiAgXSlcblxuICBjb25zdCBnb1RvQ2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChjaGF0OiBhbnkpID0+IHtcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICAgIGNvbnN0IHNlbGVjdGVkQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKGFnZW50SXRlbSA9PiBhZ2VudEl0ZW0uaWQgPT09IGNoYXQuYWdlbnRJZClcbiAgICAgIGlmIChzZWxlY3RlZEFnZW50KSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHNlbGVjdGVkQWdlbnQpXG4gICAgICB9XG4gICAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIGFnZW50cywgc2VsZWN0QWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZVJlYWR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgc2VuZE1lc3NhZ2U6IChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc3RhcnRDaGF0LCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdvSG9tZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBTaSBlc3RhbW9zIGVuIHVuYSBjb252ZXJzYWNpw7NuIHkgdmFtb3MgYSBob21lLCByZXNldGVhciBpbml0aWFsQ2hhdElkIHkgaW5jcmVtZW50YXIgbmV3Q2hhdEtleVxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIC8vIE5vIGJvcnJhciBlbCBjbGllbnRlIHNpIGVzIGFnZW50ZSBkZSBjbGllbnRlcyAoaWd1YWwgcXVlIGVsIHByb3llY3RvIHNlIG1hbnRpZW5lKVxuICAgICAgaWYgKGFnZW50Py5lbnRpdHkgIT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0Q2xpZW50LFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGhhbmRsZUdldEFnZW50cygpXG4gICAgfVxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuICBjb25zdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGE6IEFnZW50KSA9PiBhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3RdKVxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVNYWlhRmVhdHVyZUFjY2VzcyhzZWN0aW9uKSA/IChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBpc0Zsb2F0aW5nID8gJ25vbmUnIDogJ2NvbnRlbnRzJyB9fSBhcmlhLWhpZGRlbj17aXNGbG9hdGluZ30+XG4gICAgICAgICAgPFNpZGViYXJcbiAgICAgICAgICAgIG9uR29Ub0NoYXQ9e2dvVG9DaGF0fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgaGFuZGxlR29Ub0hvbWU9e2hhbmRsZUdvSG9tZX1cbiAgICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZT17aGFuZGxlT3Blbk1hcmtldHBsYWNlfVxuICAgICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgICAgcmVmZXRjaENoYXRzPXtyZWZldGNoQ2hhdHN9XG4gICAgICAgICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHM9e3NldFJlZmV0Y2hDaGF0c31cbiAgICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZj17cmVzZXRTZWxlY3RlZENoYXRSZWZ9XG4gICAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU9e3NpZGViYXJBZ2VudHNOYXZBY3RpdmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTQ0NBSU1Db250ZW50IGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9PlxuICAgICAgICA8Q2hhdEFJTW9kYWxIZWFkZXJcbiAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZT17c2V0TGF5b3V0TW9kZX1cbiAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgZHJhZ2dhYmxlPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgb25EcmFnTW92ZT17aGFuZGxlRHJhZ01vdmV9XG4gICAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgaGFzRXJyb3I9eyEhYWdlbnRFcnJvcn1cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGxvYWRpbmdNb3JlPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXthZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgaGFuZGxlUmVzZXRDaGF0PXtoYW5kbGVSZXNldENoYXR9XG4gICAgICAgICAgb25BZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICBsb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgc29ydEFnZW50c0xpc3Q9e3NvcnRBZ2VudHNMaXN0fVxuICAgICAgICAgIGhpZGVBZ2VudFNlbGVjdG9yPXtoaWRlSGVhZGVyQWdlbnRTZWxlY3Rvcn1cbiAgICAgICAgLz5cbiAgICAgICAge2hhc0Vycm9yID8gKFxuICAgICAgICAgIDxNQUlBRXJyb3IgLz5cbiAgICAgICAgKSA6IHZhbGlkYXRlTWFpYUZlYXR1cmVBY2Nlc3Moc2VjdGlvbikgPyAoXG4gICAgICAgICAgPENoYXRBSUNvbnRlbnRcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb249e2NvbXB1dGVkQ3VycmVudE9wdGlvbn1cbiAgICAgICAgICAgIGhhbmRsZXJzPXt7IC4uLmhhbmRsZXJzLCBjaGF0OiBzdGFydENoYXQsIGhvbWU6IGhhbmRsZXJzLmhvbWUsIGhhbmRsZUdvSG9tZSB9fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICByZWZzPXt7IHVzZXJJbml0aWFsTWVzc2FnZSwgaW5pdGlhbENoYXRJZCB9fVxuICAgICAgICAgICAgb25TZW5kTWVzc2FnZVJlYWR5PXtoYW5kbGVTZW5kTWVzc2FnZVJlYWR5fVxuICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgZmxvYXRpbmc9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UHJvamVjdFN1bW1hcnlDb250ZW50IG9uUmVzdGFydFN1bW1hcnk9e2hhbmRsZXJzLmhvbWV9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHsoKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmICEhYWdlbnRzPy5kYXRhPy5sZW5ndGgpIHx8XG4gICAgICAgICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpICYmXG4gICAgICAgICAgIWhpZGVGb290ZXJPbk1haWFrZXJNYXJrZXRwbGFjZUhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlTWFpYUZlYXR1cmVBY2Nlc3Moc2VjdGlvbikgJiYgKFxuICAgICAgICAgICAgPENoYXRBaU1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICBoYW5kbGVTdG9wR2VuZXJhdGlvbj17c3RvcEdlbmVyYXRpb25GdW5jdGlvbn1cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgICAgY2hhdElkPXtpbml0aWFsQ2hhdElkfVxuICAgICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgICBzaG93RmFxcz17Y29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8L1NDQ0FJTUNvbnRlbnQ+XG4gICAgPC8+XG4gIClcblxuICBjb25zdCBjb250ZW50V3JhcHBlciA9IChcbiAgICA8U0NDQUlNQ29udGVudFdyYXBwZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30gcmVmPXtjb250ZW50V3JhcHBlclJlZn0+XG4gICAgICB7bW9kYWxQYW5lbH1cbiAgICA8L1NDQ0FJTUNvbnRlbnRXcmFwcGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICBzZWxlY3RvciAmJlxuICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0NBSU1XcmFwcGVyXG4gICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgZHJhZ1Bvc2l0aW9uPXtyZXNvbHZlZERyYWdQb3NpdGlvbn1cbiAgICAgICAgZWxldmF0ZWQ9e3NlY3Rpb24gPT09ICd0YXNrJ31cbiAgICAgID5cbiAgICAgICAgPEZsb2F0aW5nUGFuZWxNb3Rpb24gdGlsdD17dGlsdE1vdGlvbn0gZXhwYW5kZWQ9e2V4cGFuZGVkfT5cbiAgICAgICAgICB7Y29udGVudFdyYXBwZXJ9XG4gICAgICAgIDwvRmxvYXRpbmdQYW5lbE1vdGlvbj5cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiAoXG4gICAgICAgICAgPEFibUFnZW50TW9kYWxcbiAgICAgICAgICAgIGFkZEFnZW50PXthZGRBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50PXt1cGRhdGVBZ2VudH1cbiAgICAgICAgICAgIHJlbW92ZUFnZW50PXtyZW1vdmVBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBzZWxlY3RGaXJzdEFnZW50PXtzZWxlY3RGaXJzdEFnZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxTbmFja2JhciAvPlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyPixcbiAgICAgIHNlbGVjdG9yXG4gICAgKVxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FFRUEs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
|
|
@@ -3,33 +3,36 @@ import { MAIA_FLOATING_BREAKPOINT_LARGE, MAIA_FLOATING_BREAKPOINT_XXL, MAIA_FLOA
|
|
|
3
3
|
export var SCCAIMWrapper = styled.div.withConfig({
|
|
4
4
|
displayName: "ChatAIModalstyles__SCCAIMWrapper",
|
|
5
5
|
componentId: "sc-7bgzxb-0"
|
|
6
|
-
})(["box-sizing:border-box;z-index:
|
|
7
|
-
var
|
|
8
|
-
return
|
|
6
|
+
})(["box-sizing:border-box;z-index:", ";height:100vh;display:flex;justify-content:flex-end;align-items:center;position:fixed;padding:16px;top:0;right:0;transition:width 0.1s ease-out-in;", " ", ""], function (_ref) {
|
|
7
|
+
var elevated = _ref.elevated;
|
|
8
|
+
return elevated ? 9800001 : 1099;
|
|
9
9
|
}, function (_ref2) {
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
var expanded = _ref2.expanded;
|
|
11
|
+
return expanded && css(["left:0;right:0;width:100%;max-width:100vw;"]);
|
|
12
|
+
}, function (_ref3) {
|
|
13
|
+
var layoutMode = _ref3.layoutMode,
|
|
14
|
+
dragPosition = _ref3.dragPosition,
|
|
15
|
+
expanded = _ref3.expanded;
|
|
13
16
|
return layoutMode === 'floating' && dragPosition && !expanded && css(["top:", "px;left:", "px;right:auto;padding:0;width:auto;height:auto;max-height:none;align-items:flex-start;justify-content:flex-start;transition:none;"], dragPosition.y, dragPosition.x);
|
|
14
17
|
});
|
|
15
18
|
export var SCCAIMContentWrapper = styled.div.withConfig({
|
|
16
19
|
displayName: "ChatAIModalstyles__SCCAIMContentWrapper",
|
|
17
20
|
componentId: "sc-7bgzxb-1"
|
|
18
|
-
})(["height:100%;display:flex;border-radius:8px;box-shadow:0px 4px 16px rgba(18,18,18,0.24);font-family:Work Sans;transition:width 0.1s ease-out-in;", " ", ""], function (
|
|
19
|
-
var expanded =
|
|
21
|
+
})(["height:100%;display:flex;border-radius:8px;box-shadow:0px 4px 16px rgba(18,18,18,0.24);font-family:Work Sans;transition:width 0.1s ease-out-in;", " ", ""], function (_ref4) {
|
|
22
|
+
var expanded = _ref4.expanded;
|
|
20
23
|
return expanded ? {
|
|
21
24
|
width: '100%'
|
|
22
25
|
} : {};
|
|
23
|
-
}, function (
|
|
24
|
-
var floating =
|
|
26
|
+
}, function (_ref5) {
|
|
27
|
+
var floating = _ref5.floating;
|
|
25
28
|
return floating && css(["height:", "px;max-height:85vh;@media (min-width:", "px){height:", "px;}@media (min-width:", "px){height:", "px;}"], MAIA_FLOATING_PANEL_HEIGHT_PX["default"], MAIA_FLOATING_BREAKPOINT_LARGE, MAIA_FLOATING_PANEL_HEIGHT_PX.large, MAIA_FLOATING_BREAKPOINT_XXL, MAIA_FLOATING_PANEL_HEIGHT_PX.xxl);
|
|
26
29
|
});
|
|
27
30
|
export var SCCAIMContent = styled.div.withConfig({
|
|
28
31
|
displayName: "ChatAIModalstyles__SCCAIMContent",
|
|
29
32
|
componentId: "sc-7bgzxb-2"
|
|
30
|
-
})(["background:white;border-radius:inherit;border-top-left-radius:0;border-bottom-left-radius:0;display:flex;flex-direction:column;height:100%;overflow:hidden;overscroll-behavior:contain;transition:all 0.3s ease-out-in;", " ", ""], function (
|
|
31
|
-
var expanded =
|
|
32
|
-
floating =
|
|
33
|
+
})(["background:white;border-radius:inherit;border-top-left-radius:0;border-bottom-left-radius:0;display:flex;flex-direction:column;height:100%;overflow:hidden;overscroll-behavior:contain;transition:all 0.3s ease-out-in;", " ", ""], function (_ref6) {
|
|
34
|
+
var expanded = _ref6.expanded,
|
|
35
|
+
floating = _ref6.floating;
|
|
33
36
|
if (expanded) {
|
|
34
37
|
return css(["flex:1;"]);
|
|
35
38
|
}
|
|
@@ -37,8 +40,8 @@ export var SCCAIMContent = styled.div.withConfig({
|
|
|
37
40
|
return css(["width:", "px;@media (min-width:", "px){width:", "px;}@media (min-width:", "px){width:", "px;}"], MAIA_FLOATING_PANEL_WIDTH_PX["default"], MAIA_FLOATING_BREAKPOINT_LARGE, MAIA_FLOATING_PANEL_WIDTH_PX.large, MAIA_FLOATING_BREAKPOINT_XXL, MAIA_FLOATING_PANEL_WIDTH_PX.xxl);
|
|
38
41
|
}
|
|
39
42
|
return css(["width:480px;"]);
|
|
40
|
-
}, function (
|
|
41
|
-
var floating =
|
|
43
|
+
}, function (_ref7) {
|
|
44
|
+
var floating = _ref7.floating;
|
|
42
45
|
return floating && css(["border-radius:8px;border-top-left-radius:8px;border-bottom-left-radius:8px;"]);
|
|
43
46
|
});
|
|
44
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJNQUlBX0ZMT0FUSU5HX0JSRUFLUE9JTlRfTEFSR0UiLCJNQUlBX0ZMT0FUSU5HX0JSRUFLUE9JTlRfWFhMIiwiTUFJQV9GTE9BVElOR19QQU5FTF9IRUlHSFRfUFgiLCJNQUlBX0ZMT0FUSU5HX1BBTkVMX1dJRFRIX1BYIiwiU0NDQUlNV3JhcHBlciIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiX3JlZiIsImVsZXZhdGVkIiwiX3JlZjIiLCJleHBhbmRlZCIsIl9yZWYzIiwibGF5b3V0TW9kZSIsImRyYWdQb3NpdGlvbiIsInkiLCJ4IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJfcmVmNCIsIndpZHRoIiwiX3JlZjUiLCJmbG9hdGluZyIsImxhcmdlIiwieHhsIiwiU0NDQUlNQ29udGVudCIsIl9yZWY2IiwiX3JlZjciXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwuc3R5bGVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkLCB7IGNzcyB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJ1xuaW1wb3J0IHR5cGUgeyBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSB9IGZyb20gJy4vbGF5b3V0J1xuaW1wb3J0IHtcbiAgTUFJQV9GTE9BVElOR19CUkVBS1BPSU5UX0xBUkdFLFxuICBNQUlBX0ZMT0FUSU5HX0JSRUFLUE9JTlRfWFhMLFxuICBNQUlBX0ZMT0FUSU5HX1BBTkVMX0hFSUdIVF9QWCxcbiAgTUFJQV9GTE9BVElOR19QQU5FTF9XSURUSF9QWCxcbn0gZnJvbSAnLi9sYXlvdXQnXG5cbmV4cG9ydCBjb25zdCBTQ0NBSU1XcmFwcGVyID0gc3R5bGVkLmRpdjx7XG4gIGV4cGFuZGVkOiBib29sZWFuXG4gIGxheW91dE1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlXG4gIGRyYWdQb3NpdGlvbj86IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGxcbiAgZWxldmF0ZWQ/OiBib29sZWFuXG59PmBcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogei1pbmRleCBhbHRvIGN1YW5kbyBzZSBhYnJlIGRlc2RlIGVsIHRhc2sgcGFuZWwgKHotaW5kZXggOTgwMDAwMCk7IGVsIGRlZmF1bHRcbiAgICAgY3VicmUgbG9zIGZsdWpvcyByZXN0YW50ZXMgZGUgTWFpYS4gKi9cbiAgei1pbmRleDogJHsoeyBlbGV2YXRlZCB9KSA9PiAoZWxldmF0ZWQgPyA5ODAwMDAxIDogMTA5OSl9O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHBhZGRpbmc6IDE2cHg7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHRyYW5zaXRpb246IHdpZHRoIDAuMXMgZWFzZS1vdXQtaW47XG4gICR7KHsgZXhwYW5kZWQgfSkgPT5cbiAgICBleHBhbmRlZCAmJlxuICAgIGNzc2BcbiAgICAgIGxlZnQ6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWF4LXdpZHRoOiAxMDB2dztcbiAgICBgfVxuICAkeyh7IGxheW91dE1vZGUsIGRyYWdQb3NpdGlvbiwgZXhwYW5kZWQgfSkgPT5cbiAgICBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnICYmXG4gICAgZHJhZ1Bvc2l0aW9uICYmXG4gICAgIWV4cGFuZGVkICYmXG4gICAgY3NzYFxuICAgICAgdG9wOiAke2RyYWdQb3NpdGlvbi55fXB4O1xuICAgICAgbGVmdDogJHtkcmFnUG9zaXRpb24ueH1weDtcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICBgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NDQUlNQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2PHtcbiAgZXhwYW5kZWQ6IGJvb2xlYW5cbiAgZmxvYXRpbmc/OiBib29sZWFuXG59PmBcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJveC1zaGFkb3c6IDBweCA0cHggMTZweCByZ2JhKDE4LCAxOCwgMTgsIDAuMjQpO1xuICBmb250LWZhbWlseTogV29yayBTYW5zO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjFzIGVhc2Utb3V0LWluO1xuICAkeyh7IGV4cGFuZGVkIH0pID0+IChleHBhbmRlZCA/IHsgd2lkdGg6ICcxMDAlJyB9IDoge30pfVxuICAkeyh7IGZsb2F0aW5nIH0pID0+XG4gICAgZmxvYXRpbmcgJiZcbiAgICBjc3NgXG4gICAgICBoZWlnaHQ6ICR7TUFJQV9GTE9BVElOR19QQU5FTF9IRUlHSFRfUFguZGVmYXVsdH1weDtcbiAgICAgIG1heC1oZWlnaHQ6IDg1dmg7XG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJHtNQUlBX0ZMT0FUSU5HX0JSRUFLUE9JTlRfTEFSR0V9cHgpIHtcbiAgICAgICAgaGVpZ2h0OiAke01BSUFfRkxPQVRJTkdfUEFORUxfSEVJR0hUX1BYLmxhcmdlfXB4O1xuICAgICAgfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICR7TUFJQV9GTE9BVElOR19CUkVBS1BPSU5UX1hYTH1weCkge1xuICAgICAgICBoZWlnaHQ6ICR7TUFJQV9GTE9BVElOR19QQU5FTF9IRUlHSFRfUFgueHhsfXB4O1xuICAgICAgfVxuICAgIGB9XG5gXG5cbmV4cG9ydCBjb25zdCBTQ0NBSU1Db250ZW50ID0gc3R5bGVkLmRpdjx7XG4gIGV4cGFuZGVkOiBib29sZWFuXG4gIGZsb2F0aW5nPzogYm9vbGVhblxufT5gXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0LWluO1xuICAkeyh7IGV4cGFuZGVkLCBmbG9hdGluZyB9KSA9PiB7XG4gICAgaWYgKGV4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gY3NzYFxuICAgICAgICBmbGV4OiAxO1xuICAgICAgYFxuICAgIH1cbiAgICBpZiAoZmxvYXRpbmcpIHtcbiAgICAgIHJldHVybiBjc3NgXG4gICAgICAgIHdpZHRoOiAke01BSUFfRkxPQVRJTkdfUEFORUxfV0lEVEhfUFguZGVmYXVsdH1weDtcbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICR7TUFJQV9GTE9BVElOR19CUkVBS1BPSU5UX0xBUkdFfXB4KSB7XG4gICAgICAgICAgd2lkdGg6ICR7TUFJQV9GTE9BVElOR19QQU5FTF9XSURUSF9QWC5sYXJnZX1weDtcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogJHtNQUlBX0ZMT0FUSU5HX0JSRUFLUE9JTlRfWFhMfXB4KSB7XG4gICAgICAgICAgd2lkdGg6ICR7TUFJQV9GTE9BVElOR19QQU5FTF9XSURUSF9QWC54eGx9cHg7XG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgIHdpZHRoOiA0ODBweDtcbiAgICBgXG4gIH19XG4gICR7KHsgZmxvYXRpbmcgfSkgPT5cbiAgICBmbG9hdGluZyAmJlxuICAgIGNzc2BcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDtcbiAgICBgfVxuYFxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFNLElBQUlDLEdBQUcsUUFBUSxtQkFBbUI7QUFFL0MsU0FDRUMsOEJBQThCLEVBQzlCQyw0QkFBNEIsRUFDNUJDLDZCQUE2QixFQUM3QkMsNEJBQTRCLFFBQ3ZCLFVBQVU7QUFFakIsT0FBTyxJQUFNQyxhQUFhLEdBQUdOLE1BQU0sQ0FBQ08sR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLHVNQVMxQixVQUFBQyxJQUFBO0VBQUEsSUFBR0MsUUFBUSxHQUFBRCxJQUFBLENBQVJDLFFBQVE7RUFBQSxPQUFRQSxRQUFRLEdBQUcsT0FBTyxHQUFHLElBQUk7QUFBQSxDQUFDLEVBVXRELFVBQUFDLEtBQUE7RUFBQSxJQUFHQyxRQUFRLEdBQUFELEtBQUEsQ0FBUkMsUUFBUTtFQUFBLE9BQ1hBLFFBQVEsSUFDUmIsR0FBRyxnREFLRjtBQUFBLEdBQ0QsVUFBQWMsS0FBQTtFQUFBLElBQUdDLFVBQVUsR0FBQUQsS0FBQSxDQUFWQyxVQUFVO0lBQUVDLFlBQVksR0FBQUYsS0FBQSxDQUFaRSxZQUFZO0lBQUVILFFBQVEsR0FBQUMsS0FBQSxDQUFSRCxRQUFRO0VBQUEsT0FDckNFLFVBQVUsS0FBSyxVQUFVLElBQ3pCQyxZQUFZLElBQ1osQ0FBQ0gsUUFBUSxJQUNUYixHQUFHLDRKQUNNZ0IsWUFBWSxDQUFDQyxDQUFDLEVBQ2JELFlBQVksQ0FBQ0UsQ0FBQyxDQVN2QjtBQUFBLEVBQ0o7QUFFRCxPQUFPLElBQU1DLG9CQUFvQixHQUFHcEIsTUFBTSxDQUFDTyxHQUFHLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsaUtBVTFDLFVBQUFXLEtBQUE7RUFBQSxJQUFHUCxRQUFRLEdBQUFPLEtBQUEsQ0FBUlAsUUFBUTtFQUFBLE9BQVFBLFFBQVEsR0FBRztJQUFFUSxLQUFLLEVBQUU7RUFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQUEsQ0FBQyxFQUNyRCxVQUFBQyxLQUFBO0VBQUEsSUFBR0MsUUFBUSxHQUFBRCxLQUFBLENBQVJDLFFBQVE7RUFBQSxPQUNYQSxRQUFRLElBQ1J2QixHQUFHLHVIQUNTRyw2QkFBNkIsV0FBUSxFQUUxQkYsOEJBQThCLEVBQ3ZDRSw2QkFBNkIsQ0FBQ3FCLEtBQUssRUFFMUJ0Qiw0QkFBNEIsRUFDckNDLDZCQUE2QixDQUFDc0IsR0FBRyxDQUU5QztBQUFBLEVBQ0o7QUFFRCxPQUFPLElBQU1DLGFBQWEsR0FBRzNCLE1BQU0sQ0FBQ08sR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLHlPQWNuQyxVQUFBa0IsS0FBQSxFQUE0QjtFQUFBLElBQXpCZCxRQUFRLEdBQUFjLEtBQUEsQ0FBUmQsUUFBUTtJQUFFVSxRQUFRLEdBQUFJLEtBQUEsQ0FBUkosUUFBUTtFQUNyQixJQUFJVixRQUFRLEVBQUU7SUFDWixPQUFPYixHQUFHO0VBR1o7RUFDQSxJQUFJdUIsUUFBUSxFQUFFO0lBQ1osT0FBT3ZCLEdBQUcsb0dBQ0NJLDRCQUE0QixXQUFRLEVBQ3hCSCw4QkFBOEIsRUFDeENHLDRCQUE0QixDQUFDb0IsS0FBSyxFQUV4QnRCLDRCQUE0QixFQUN0Q0UsNEJBQTRCLENBQUNxQixHQUFHO0VBRy9DO0VBQ0EsT0FBT3pCLEdBQUc7QUFHWixDQUFDLEVBQ0MsVUFBQTRCLEtBQUE7RUFBQSxJQUFHTCxRQUFRLEdBQUFLLEtBQUEsQ0FBUkwsUUFBUTtFQUFBLE9BQ1hBLFFBQVEsSUFDUnZCLEdBQUcsaUZBSUY7QUFBQSxFQUNKIiwiaWdub3JlTGlzdCI6W119
|