@projectcor/maia-components 2.11.55-4 → 2.11.56-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +6 -12
  2. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +3 -3
  3. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.styles.js +3 -2
  4. package/lib/components/atoms/Backdrop/Backdrop.js +2 -2
  5. package/lib/components/atoms/EntitySelector/EntitySelector.js +17 -9
  6. package/lib/components/atoms/EntitySelector/EntitySelector.skeleton.js +38 -0
  7. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +6 -2
  8. package/lib/components/atoms/Fade/Fade.js +56 -0
  9. package/lib/components/atoms/Fade/index.js +2 -0
  10. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +28 -17
  11. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.skeleton.js +44 -0
  12. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +6 -2
  13. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +28 -17
  14. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.skeleton.js +43 -0
  15. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +6 -2
  16. package/lib/components/atoms/MAIAInput/MAIAInput.js +3 -4
  17. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.styles.js +3 -2
  18. package/lib/components/atoms/ModalProject/ModalProject.style.js +3 -2
  19. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +3 -2
  20. package/lib/components/atoms/Skeleton/Skeleton.js +36 -0
  21. package/lib/components/atoms/Skeleton/index.js +2 -0
  22. package/lib/components/atoms/icons/MAIAIsologo.js +51 -9
  23. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  24. package/lib/components/atoms/icons/index.js +2 -1
  25. package/lib/components/atoms/index.js +3 -1
  26. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +3 -1
  27. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +10 -3
  28. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +7 -2
  29. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +20 -10
  30. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +6 -2
  31. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +26 -19
  32. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +64 -35
  33. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +187 -0
  34. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +70 -60
  35. package/lib/components/molecules/ChatAIHistory/styles.js +6 -2
  36. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +14 -24
  37. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +10 -5
  38. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +8 -4
  39. package/lib/components/molecules/ChatAIHome/styles.js +7 -3
  40. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +6 -2
  41. package/lib/components/molecules/ChatAIMessages/newStyles.js +4 -3
  42. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +49 -23
  43. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +2 -1
  44. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +9 -5
  45. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
  46. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +4 -3
  47. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  48. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +8 -4
  49. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +14 -9
  50. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  51. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  52. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  53. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.js +24 -17
  54. package/lib/components/molecules/Sidebar/Sidebar.js +66 -22
  55. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +6 -5
  56. package/lib/components/molecules/Sidebar/Sidebar.skeleton.js +48 -0
  57. package/lib/components/molecules/Sidebar/Sidebar.styles.js +20 -13
  58. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +9 -2
  59. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +8 -3
  60. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
  61. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  62. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  63. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
  64. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  65. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  66. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.styles.js +3 -2
  67. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
  68. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.styles.js +3 -2
  69. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.styles.js +3 -2
  70. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.styles.js +3 -2
  71. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.styles.js +3 -2
  72. package/lib/hooks/useChatManager/useChatManager.js +33 -11
  73. package/lib/hooks/useChatMessages/useChatMessages.js +10 -32
  74. package/lib/hooks/useEntitySearch.js +4 -15
  75. package/lib/hooks/useMentionAllowedTypes.js +2 -10
  76. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +10 -3
  77. package/lib/lang/br/index.js +48 -1
  78. package/lib/lang/en/index.js +48 -1
  79. package/lib/lang/es/index.js +48 -1
  80. package/lib/lang/fr/index.js +48 -1
  81. package/lib/services/maia/Agents/getAgents.js +135 -155
  82. package/lib/services/maia/Chats/getChatMessages.js +4 -28
  83. package/lib/services/maia/Skills/createSkill.js +39 -0
  84. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  85. package/lib/services/maia/Skills/generateSkill.js +41 -0
  86. package/lib/services/maia/Skills/getSkills.js +90 -0
  87. package/lib/services/maia/Skills/updateSkill.js +39 -0
  88. package/lib/store/useChatsStore.js +2 -4
  89. package/lib/styles/cascade.js +14 -0
  90. package/lib/styles/transitions.js +21 -0
  91. package/lib/types/Chat.js +1 -1
  92. package/lib/types/skill.js +2 -0
  93. package/lib/utils/debugMaiaSseLog.js +27 -0
  94. package/lib/utils/streamActivityMessages.js +43 -6
  95. package/package.json +1 -1
@@ -25,11 +25,14 @@ import { ChatAIContent } from '../ChatAIContent';
25
25
  import { buildHandlers, options } from './constants';
26
26
  import { Sidebar } from '../Sidebar';
27
27
  import { useGetAgents } from '../../../services/maia/Agents/getAgents';
28
+ import { useGetSkills } from '../../../services/maia/Skills/getSkills';
28
29
  import { useGlobalContext } from '../../../context/global-context';
29
30
  import { ChatAIModalHeader } from './components/ChatAiModalHeader/ChatAiModalHeader';
30
31
  import { Snackbar } from '../../organisms/SnackBar/Snackbar';
31
32
  import { ProjectSummaryContent } from '../ProjectSummaryContent';
32
33
  import { AbmAgentModal } from '../../organisms/AbmAgentModal/AbmAgentModal';
34
+ import { AbmSkillModal } from '../../organisms/AbmSkillModal/AbmSkillModal';
35
+ import { AbmSkillGenerateModal } from '../../organisms/AbmSkillGenerateModal/AbmSkillGenerateModal';
33
36
  import { SECTIONS } from '../../../constants/config';
34
37
  import { SCCAIMContent, SCCAIMContentWrapper, SCCAIMWrapper } from './ChatAIModal.styles';
35
38
  import { getMaiaFloatingPanelWidthPx } from './layout';
@@ -149,6 +152,13 @@ export var ChatAIModal = function ChatAIModal(_ref) {
149
152
  updateAgentFavorite = _useGetAgents.updateAgentFavorite,
150
153
  selectFirstAgent = _useGetAgents.selectFirstAgent,
151
154
  sortAgentsList = _useGetAgents.sortAgentsList;
155
+ var _useGetSkills = useGetSkills(),
156
+ skills = _useGetSkills.skills,
157
+ loadingSkills = _useGetSkills.loading,
158
+ handleGetSkills = _useGetSkills.handleGetSkills,
159
+ addSkill = _useGetSkills.addSkill,
160
+ updateSkillInList = _useGetSkills.updateSkillInList,
161
+ removeSkill = _useGetSkills.removeSkill;
152
162
  var isMAIA = validateIsMaia(agent);
153
163
  var userHasPermissions = ((user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 || (_user$permissions = _user$permissions.ai_agents) === null || _user$permissions === void 0 ? void 0 : _user$permissions.create) || (user === null || user === void 0 || (_user$permissions2 = user.permissions) === null || _user$permissions2 === void 0 || (_user$permissions2 = _user$permissions2.ai_agents) === null || _user$permissions2 === void 0 ? void 0 : _user$permissions2.edit) || (user === null || user === void 0 || (_user$permissions3 = user.permissions) === null || _user$permissions3 === void 0 || (_user$permissions3 = _user$permissions3.ai_agents) === null || _user$permissions3 === void 0 ? void 0 : _user$permissions3["delete"])) && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
154
164
  var computedCurrentOption = useMemo(function () {
@@ -159,6 +169,9 @@ export var ChatAIModal = function ChatAIModal(_ref) {
159
169
  if (currentOption === options.myAgents && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
160
170
  return options.myAgents;
161
171
  }
172
+ if (currentOption === options.mySkills && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
173
+ return options.mySkills;
174
+ }
162
175
  if (isGlobalSpecialist && !isMaiaker && currentOption === options.home) {
163
176
  return options.chat;
164
177
  }
@@ -176,6 +189,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
176
189
  return isMAIA && (agent === null || agent === void 0 ? void 0 : agent.entity) === 'global' && (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' && /(maiaker|marketplace)/i.test((agent === null || agent === void 0 ? void 0 : agent.name) || '');
177
190
  }, [isMAIA, agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.type, agent === null || agent === void 0 ? void 0 : agent.name]);
178
191
  var sidebarAgentsNavActive = useMemo(function () {
192
+ if (computedCurrentOption === options.mySkills) return 'mySkills';
179
193
  if (computedCurrentOption === options.myAgents) return 'myAgents';
180
194
  if (isMaiakerAgentSelected) return 'maiaker';
181
195
  return null;
@@ -519,14 +533,22 @@ export var ChatAIModal = function ChatAIModal(_ref) {
519
533
  };
520
534
  }, [selectAgent, setClient, setProject, setTask]);
521
535
  var showNewChat = computedCurrentOption !== options.chat;
522
- var hideHeaderAgentSelector = computedCurrentOption === options.myAgents;
523
- var showBackButton = (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' && !hasError && !loading && (computedCurrentOption === options.chat || computedCurrentOption === options.home && section !== 'task');
536
+ var hideHeaderAgentSelector = computedCurrentOption === options.myAgents || computedCurrentOption === options.mySkills;
537
+ var showBackButton = (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' && (agent === null || agent === void 0 ? void 0 : agent.entity) !== 'global' && !hasError && !loading && (computedCurrentOption === options.chat || computedCurrentOption === options.home && section !== 'task');
524
538
  var handleOpenMarketplace = useCallback(function () {
525
539
  if (!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
526
540
  return;
527
541
  }
528
542
  setCurrentOption(options.myAgents);
529
543
  }, []);
544
+ var handleOpenSkills = useCallback(function () {
545
+ if (!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
546
+ return;
547
+ }
548
+ setHasError(false);
549
+ setCurrentOption(options.mySkills);
550
+ handleGetSkills();
551
+ }, [handleGetSkills]);
530
552
  var handleGoToMaiaker = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
531
553
  var maiakerAgent, response, data, _t;
532
554
  return _regeneratorRuntime.wrap(function (_context2) {
@@ -589,25 +611,20 @@ export var ChatAIModal = function ChatAIModal(_ref) {
589
611
  }, [agent === null || agent === void 0 ? void 0 : agent.id, removeAgent, selectFirstAgent]);
590
612
  var hideFooterOnMaiakerMarketplaceHome = computedCurrentOption === options.home && isMaiakerAgentSelected;
591
613
  var modalPanel = /*#__PURE__*/_jsxs(_Fragment, {
592
- children: [validateAccessByFeature(section) ? /*#__PURE__*/_jsx("div", {
593
- style: {
594
- display: isFloating ? 'none' : 'contents'
614
+ children: [validateAccessByFeature(section) && !isFloating ? /*#__PURE__*/_jsx(Sidebar, {
615
+ onGoToChat: goToChat,
616
+ onError: function onError() {
617
+ return setSidebarHasError(true);
595
618
  },
596
- "aria-hidden": isFloating,
597
- children: /*#__PURE__*/_jsx(Sidebar, {
598
- onGoToChat: goToChat,
599
- onError: function onError() {
600
- return setSidebarHasError(true);
601
- },
602
- handleGoToHome: handleGoHome,
603
- handleOpenMarketplace: handleOpenMarketplace,
604
- showNewChat: showNewChat,
605
- refetchChats: refetchChats,
606
- handleSetRefetchChats: setRefetchChats,
607
- hasError: sidebarHasError,
608
- resetSelectedChatRef: resetSelectedChatRef,
609
- agentsNavActive: sidebarAgentsNavActive
610
- })
619
+ handleGoToHome: handleGoHome,
620
+ handleOpenMarketplace: handleOpenMarketplace,
621
+ handleOpenSkills: handleOpenSkills,
622
+ showNewChat: showNewChat,
623
+ refetchChats: refetchChats,
624
+ handleSetRefetchChats: setRefetchChats,
625
+ hasError: sidebarHasError,
626
+ resetSelectedChatRef: resetSelectedChatRef,
627
+ agentsNavActive: sidebarAgentsNavActive
611
628
  }) : null, /*#__PURE__*/_jsxs(SCCAIMContent, {
612
629
  expanded: expanded,
613
630
  floating: isFloating,
@@ -650,12 +667,17 @@ export var ChatAIModal = function ChatAIModal(_ref) {
650
667
  expanded: expanded,
651
668
  floating: isFloating,
652
669
  agents: agents.data,
670
+ loadingAgents: loading,
653
671
  onDeleteAgent: handleDeleteAgentFromMyAgents,
654
672
  onFavoriteAgentUpdate: updateAgentFavorite,
655
673
  hasMoreAgents: !!agents.has_more,
656
674
  loadingMoreAgents: loadingMore,
657
675
  onLoadMoreAgents: loadMoreAgents,
658
- onGoToMaiaker: handleGoToMaiaker
676
+ onGoToMaiaker: handleGoToMaiaker,
677
+ agentError: agentError,
678
+ skills: skills,
679
+ loadingSkills: loadingSkills,
680
+ onDeleteSkill: removeSkill
659
681
  }) : /*#__PURE__*/_jsx(ProjectSummaryContent, {
660
682
  onRestartSummary: handlers.home
661
683
  }), (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 && validateAccessByFeature(section) && /*#__PURE__*/_jsx(ChatAiModalFooter, {
@@ -692,7 +714,11 @@ export var ChatAIModal = function ChatAIModal(_ref) {
692
714
  removeAgent: removeAgent,
693
715
  updateAgentFavorite: updateAgentFavorite,
694
716
  selectFirstAgent: selectFirstAgent
695
- }), /*#__PURE__*/_jsx(Snackbar, {})]
717
+ }), userHasPermissions && /*#__PURE__*/_jsx(AbmSkillModal, {
718
+ addSkill: addSkill,
719
+ updateSkillInList: updateSkillInList,
720
+ removeSkill: removeSkill
721
+ }), userHasPermissions && /*#__PURE__*/_jsx(AbmSkillGenerateModal, {}), /*#__PURE__*/_jsx(Snackbar, {})]
696
722
  }), selector);
697
723
  };
698
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkNoYXRBSUNvbnRlbnQiLCJidWlsZEhhbmRsZXJzIiwib3B0aW9ucyIsIlNpZGViYXIiLCJ1c2VHZXRBZ2VudHMiLCJ1c2VHbG9iYWxDb250ZXh0IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJTbmFja2JhciIsIlByb2plY3RTdW1tYXJ5Q29udGVudCIsIkFibUFnZW50TW9kYWwiLCJTRUNUSU9OUyIsIlNDQ0FJTUNvbnRlbnQiLCJTQ0NBSU1Db250ZW50V3JhcHBlciIsIlNDQ0FJTVdyYXBwZXIiLCJnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsInVzZUZhcXNTdG9yZSIsImZldGNoTWFpYSIsIm1hcENPUkxhbmciLCJFVkVOVFMiLCJ1c2VFdmVudCIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInNlY3Rpb24iLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiQ2hhdEFJTW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfYWdlbnRzJGRhdGEiLCJoYW5kbGVDbG9zZSIsInVzZXIiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsImkxOG4iLCJhbXBsaXR1ZEV2ZW50IiwiaGFuZGxlQ2xvc2VNb2RhbCIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwiX3VzZVN0YXRlIiwibWVzc2FnZSIsImF0dGFjaG1lbnRzIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwic2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTE1IiwiaG9tZSIsIl91c2VTdGF0ZTE2IiwiY3VycmVudE9wdGlvbiIsInNldEN1cnJlbnRPcHRpb24iLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsImhhbmRsZXJzIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInNpZGViYXJIYXNFcnJvciIsInNldFNpZGViYXJIYXNFcnJvciIsInJlc2V0U2VsZWN0ZWRDaGF0UmVmIiwibGFuZyIsImxhbmd1YWdlIiwibG9jYWxlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJhZGRBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInNvcnRBZ2VudHNMaXN0IiwiaXNNQUlBIiwidXNlckhhc1Blcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjcmVhdGUiLCJlZGl0IiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInRlc3QiLCJuYW1lIiwibXlBZ2VudHMiLCJjaGF0Iiwic2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciIsInNob3VsZFNob3dDbGllbnRTZWxlY3RvciIsInByb2plY3RTZWxlY3RvciIsImNsaWVudFNlbGVjdG9yIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInR5cGUiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjEiLCJfdXNlU3RhdGUyMiIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiZHJhZ1Bvc2l0aW9uIiwic2V0RHJhZ1Bvc2l0aW9uIiwiX3VzZUZsb2F0aW5nUGFuZWxEcmFnIiwidGlsdE1vdGlvbiIsInN0YXJ0UG9pbnRlclRyYWNraW5nIiwic2FtcGxlUG9pbnRlck1vdmUiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJkcmFnU3RhdGVSZWYiLCJjbGFtcERyYWdQb3NpdGlvbiIsIngiLCJ5IiwiY29udGVudFdyYXBwZXIiLCJjdXJyZW50IiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsInJlY3QiLCJpbml0aWFsUG9zaXRpb24iLCJsZWZ0IiwidG9wIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJCb29sZWFuIiwiaWQiLCJmYXFUaXRsZSIsInRyaW0iLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJmaW5kIiwiYWdlbnRJdGVtIiwiYWdlbnRJZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsImhhbmRsZVJlc2V0Q2hhdCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsInN0b3AiLCJoYW5kbGVCYWNrIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwiZGV0YWlsIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblN5bmNFZGl0ZWRBZ2VudCIsIl9yZWY0Iiwib3BlbkNoYXRWaWV3Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9yZWY1IiwidGFzayIsInVuZGVmaW5lZCIsInNob3dOZXdDaGF0IiwiaGlkZUhlYWRlckFnZW50U2VsZWN0b3IiLCJzaG93QmFja0J1dHRvbiIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwiYSIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImFicnVwdCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsImRpc3BsYXkiLCJvbkdvVG9DaGF0Iiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiYWdlbnRzTmF2QWN0aXZlIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJvbkJhY2siLCJyZWZzIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwic2hvd0ZhcXMiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsInRpbHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7XG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgQ2hhdEFJTW9kYWxIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXInXG5pbXBvcnQgeyBTbmFja2JhciB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9TbmFja0Jhci9TbmFja2JhcidcbmltcG9ydCB7IFByb2plY3RTdW1tYXJ5Q29udGVudCB9IGZyb20gJy4uL1Byb2plY3RTdW1tYXJ5Q29udGVudCdcbmltcG9ydCB7IEFibUFnZW50TW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7IGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCwgTWFpYUNoYXRNb2RhbExheW91dE1vZGUgfSBmcm9tICcuL2xheW91dCdcbmltcG9ydCB7IEZsb2F0aW5nUGFuZWxNb3Rpb24sIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCB9IGZyb20gJy4vZmxvYXRpbmdQYW5lbE1vdGlvbidcbmltcG9ydCB7IENoYXRBaU1vZGFsRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsRm9vdGVyJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmNvbnN0IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlID0gKHNlY3Rpb246IHN0cmluZykgPT4ge1xuICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8IHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAoKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50JyB8fCBzZWN0aW9uID09PSAndGFzaycpICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoeyBoYW5kbGVDbG9zZSB9OiBDaGF0QUlNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXNlRmFxc1N0b3JlLmdldFN0YXRlKCkuY2xlYXJGYXFzKClcbiAgICBoYW5kbGVDbG9zZT8uKClcbiAgfSwgW2hhbmRsZUNsb3NlXSlcbiAgY29uc3QgW3VzZXJJbml0aWFsTWVzc2FnZSwgc2V0VXNlckluaXRpYWxNZXNzYWdlXSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgfT4oe1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIGF0dGFjaG1lbnRzOiBbXSxcbiAgfSlcbiAgY29uc3QgW2luaXRpYWxDaGF0SWQsIHNldEluaXRpYWxDaGF0SWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW25ld0NoYXRLZXksIHNldE5ld0NoYXRLZXldID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHNldFNlbmRNZXNzYWdlRnVuY3Rpb25dID0gdXNlU3RhdGU8XG4gICAgfCAoKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQpXG4gICAgfCBudWxsXG4gID4obnVsbClcbiAgY29uc3QgW3N0b3BHZW5lcmF0aW9uRnVuY3Rpb24sIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dID0gdXNlU3RhdGU8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzU3RyZWFtaW5nLCBzZXRJc1N0cmVhbWluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IFtyZWZldGNoQ2hhdHMsIHNldFJlZmV0Y2hDaGF0c10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRPcHRpb24sIHNldEN1cnJlbnRPcHRpb25dID0gdXNlU3RhdGUob3B0aW9ucy5ob21lKVxuICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBoYW5kbGVycyA9IHVzZU1lbW8oKCkgPT4gYnVpbGRIYW5kbGVycyhzZXRDdXJyZW50T3B0aW9uLCBzZXRIYXNFcnJvciksIFtdKVxuICBjb25zdCBbc2lkZWJhckhhc0Vycm9yLCBzZXRTaWRlYmFySGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHJlc2V0U2VsZWN0ZWRDaGF0UmVmID0gdXNlUmVmPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0LWJyJyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBtb21lbnQubG9jYWxlKGxhbmcpXG5cbiAgY29uc3Qge1xuICAgIHNlbGVjdEFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuXG4gIGNvbnN0IHVzZXJIYXNQZXJtaXNzaW9ucyA9XG4gICAgKHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmNyZWF0ZSB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZWRpdCB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZGVsZXRlKSAmJlxuICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgY29uc3QgY29tcHV0ZWRDdXJyZW50T3B0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaXNHbG9iYWxTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnXG4gICAgY29uc3QgaXNQcm9qZWN0U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT0gbnVsbClcbiAgICBjb25zdCBpc0NsaWVudFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCdcbiAgICBjb25zdCBpc01haWFrZXIgPSBpc0dsb2JhbFNwZWNpYWxpc3QgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG5cbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICB9XG5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jaGF0XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc1Byb2plY3RTcGVjaWFsaXN0ICYmICFwcm9qZWN0XG4gICAgY29uc3Qgc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzQ2xpZW50U3BlY2lhbGlzdCAmJiAhY2xpZW50XG5cbiAgICBpZiAoc2hvdWxkU2hvd1Byb2plY3RTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucHJvamVjdFNlbGVjdG9yXG4gICAgfVxuICAgIGlmIChzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNsaWVudFNlbGVjdG9yXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50T3B0aW9uXG4gIH0sIFtjdXJyZW50T3B0aW9uLCBwcm9qZWN0LCBjbGllbnQsIGlzTUFJQSwgYWdlbnQ/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+IHtcbiAgICAvLyBTaSBlc3RhbW9zIGVuIHVuYSBjb252ZXJzYWNpw7NuIHkgdmFtb3MgYSBob21lLCByZXNldGVhciBpbml0aWFsQ2hhdElkIHkgaW5jcmVtZW50YXIgbmV3Q2hhdEtleVxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24/LigpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAvLyBObyBib3JyYXIgZWwgY2xpZW50ZSBzaSBlcyBhZ2VudGUgZGUgY2xpZW50ZXMgKGlndWFsIHF1ZSBlbCBwcm95ZWN0byBzZSBtYW50aWVuZSlcbiAgICAgIGlmIChhZ2VudD8uZW50aXR5ICE9PSAnY2xpZW50Jykge1xuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAoIWFnZW50IHx8IGFnZW50Py5pc19kZWxldGVkIHx8IGFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8IGFnZW50Py5oYXNfbm90X2FjY2VzcyB8fCBhZ2VudD8ucHJvamVjdF9kZWxldGVkKSAmJlxuICAgICAgYWdlbnRzLmRhdGEubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRzLmRhdGFbMF0pXG4gICAgfVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW1xuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBvcHRpb25zLmNoYXQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgYWdlbnQsXG4gICAgYWdlbnRzLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldENsaWVudCxcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiIGRlbCBoZWFkZXIgKHNvbG8gYWdlbnRlcyBjbG9uZSk6XG4gIC8vIC0gQ29uIGNvbnZlcnNhY2nDs24gaW5pY2lhZGE6IGluaWNpYSB1bmEgbnVldmEgY29udmVyc2FjacOzbiB5IHZ1ZWx2ZSBhbCBob21lICh0b2RhcyBsYXMgc2VjY2lvbmVzKS5cbiAgLy8gLSBFbiBlbCBob21lIChGQVFzL0ZVQSk6IHZ1ZWx2ZSBhbCBzZWxlY3RvciBkZSBwcm95ZWN0b3MvY2xpZW50ZXMgbGltcGlhbmRvIGxhIGVudGl0eSBzZWxlY2Npb25hZGEuXG4gIGNvbnN0IGhhbmRsZUJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBoYW5kbGVSZXNldENoYXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIEVuIHNlY3Rpb24gJ3Rhc2snIHByZXNlcnZhciBwcm9qZWN0L2NsaWVudDsgZW4gb3RyYXMgc2VjY2lvbmVzLCBpciBhbCBzZWxlY3RvciBsaW1waWFuZG8gcHJvamVjdC9jbGllbnRcbiAgICBpZiAoc2VjdGlvbiAhPT0gJ3Rhc2snKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIH1cbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2VjdGlvbiwgaGFuZGxlUmVzZXRDaGF0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGhhbmRsZUdldEFnZW50cygpXG4gICAgfVxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuICBjb25zdCBzaG93QmFja0J1dHRvbiA9XG4gICAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiZcbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCB8fCAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgc2VjdGlvbiAhPT0gJ3Rhc2snKSlcbiAgY29uc3QgaGFuZGxlT3Blbk1hcmtldHBsYWNlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlBZ2VudHMpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJylcbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFthZ2VudHMuZGF0YSwgaTE4bi5sYW5ndWFnZSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdF0pXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmVtb3ZlQWdlbnQoYWdlbnRJZClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IGFnZW50SWQpIHtcbiAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudChhZ2VudElkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50Py5pZCwgcmVtb3ZlQWdlbnQsIHNlbGVjdEZpcnN0QWdlbnRdXG4gIClcblxuICBjb25zdCBoaWRlRm9vdGVyT25NYWlha2VyTWFya2V0cGxhY2VIb21lID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaXNNYWlha2VyQWdlbnRTZWxlY3RlZFxuXG4gIGNvbnN0IG1vZGFsUGFuZWwgPSAoXG4gICAgPD5cbiAgICAgIHt2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSA/IChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBpc0Zsb2F0aW5nID8gJ25vbmUnIDogJ2NvbnRlbnRzJyB9fSBhcmlhLWhpZGRlbj17aXNGbG9hdGluZ30+XG4gICAgICAgICAgPFNpZGViYXJcbiAgICAgICAgICAgIG9uR29Ub0NoYXQ9e2dvVG9DaGF0fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgaGFuZGxlR29Ub0hvbWU9e2hhbmRsZUdvSG9tZX1cbiAgICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZT17aGFuZGxlT3Blbk1hcmtldHBsYWNlfVxuICAgICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgICAgcmVmZXRjaENoYXRzPXtyZWZldGNoQ2hhdHN9XG4gICAgICAgICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHM9e3NldFJlZmV0Y2hDaGF0c31cbiAgICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZj17cmVzZXRTZWxlY3RlZENoYXRSZWZ9XG4gICAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU9e3NpZGViYXJBZ2VudHNOYXZBY3RpdmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTQ0NBSU1Db250ZW50IGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9PlxuICAgICAgICA8Q2hhdEFJTW9kYWxIZWFkZXJcbiAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZT17c2V0TGF5b3V0TW9kZX1cbiAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgZHJhZ2dhYmxlPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgb25EcmFnTW92ZT17aGFuZGxlRHJhZ01vdmV9XG4gICAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgaGFzRXJyb3I9eyEhYWdlbnRFcnJvcn1cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGxvYWRpbmdNb3JlPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXthZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgaGFuZGxlUmVzZXRDaGF0PXtoYW5kbGVSZXNldENoYXR9XG4gICAgICAgICAgb25BZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICBsb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgc29ydEFnZW50c0xpc3Q9e3NvcnRBZ2VudHNMaXN0fVxuICAgICAgICAgIGhpZGVBZ2VudFNlbGVjdG9yPXtoaWRlSGVhZGVyQWdlbnRTZWxlY3Rvcn1cbiAgICAgICAgICBzaG93QmFja0J1dHRvbj17c2hvd0JhY2tCdXR0b259XG4gICAgICAgICAgb25CYWNrPXtoYW5kbGVCYWNrfVxuICAgICAgICAvPlxuICAgICAgICB7aGFzRXJyb3IgPyAoXG4gICAgICAgICAgPE1BSUFFcnJvciAvPlxuICAgICAgICApIDogdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgPyAoXG4gICAgICAgICAgPENoYXRBSUNvbnRlbnRcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb249e2NvbXB1dGVkQ3VycmVudE9wdGlvbn1cbiAgICAgICAgICAgIGhhbmRsZXJzPXt7IC4uLmhhbmRsZXJzLCBjaGF0OiBzdGFydENoYXQsIGhvbWU6IGhhbmRsZXJzLmhvbWUsIGhhbmRsZUdvSG9tZSB9fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICByZWZzPXt7IHVzZXJJbml0aWFsTWVzc2FnZSwgaW5pdGlhbENoYXRJZCB9fVxuICAgICAgICAgICAgb25TZW5kTWVzc2FnZVJlYWR5PXtoYW5kbGVTZW5kTWVzc2FnZVJlYWR5fVxuICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgZmxvYXRpbmc9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UHJvamVjdFN1bW1hcnlDb250ZW50IG9uUmVzdGFydFN1bW1hcnk9e2hhbmRsZXJzLmhvbWV9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHsoKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmICEhYWdlbnRzPy5kYXRhPy5sZW5ndGgpIHx8XG4gICAgICAgICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpICYmXG4gICAgICAgICAgIWhpZGVGb290ZXJPbk1haWFrZXJNYXJrZXRwbGFjZUhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24pICYmIChcbiAgICAgICAgICAgIDxDaGF0QWlNb2RhbEZvb3RlclxuICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgaGFuZGxlU3RvcEdlbmVyYXRpb249e3N0b3BHZW5lcmF0aW9uRnVuY3Rpb259XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgICAgICAgIGNoYXRJZD17aW5pdGlhbENoYXRJZH1cbiAgICAgICAgICAgICAgbmV3Q2hhdEtleT17bmV3Q2hhdEtleX1cbiAgICAgICAgICAgICAgc2hvd0ZhcXM9e2NvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0fVxuICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC9TQ0NBSU1Db250ZW50PlxuICAgIDwvPlxuICApXG5cbiAgY29uc3QgY29udGVudFdyYXBwZXIgPSAoXG4gICAgPFNDQ0FJTUNvbnRlbnRXcmFwcGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9IHJlZj17Y29udGVudFdyYXBwZXJSZWZ9PlxuICAgICAge21vZGFsUGFuZWx9XG4gICAgPC9TQ0NBSU1Db250ZW50V3JhcHBlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgc2VsZWN0b3IgJiZcbiAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICA8U0NDQUlNV3JhcHBlclxuICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgIGRyYWdQb3NpdGlvbj17cmVzb2x2ZWREcmFnUG9zaXRpb259XG4gICAgICAgIGVsZXZhdGVkPXtzZWN0aW9uID09PSAndGFzayd9XG4gICAgICA+XG4gICAgICAgIDxGbG9hdGluZ1BhbmVsTW90aW9uIHRpbHQ9e3RpbHRNb3Rpb259IGV4cGFuZGVkPXtleHBhbmRlZH0+XG4gICAgICAgICAge2NvbnRlbnRXcmFwcGVyfVxuICAgICAgICA8L0Zsb2F0aW5nUGFuZWxNb3Rpb24+XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1BZ2VudE1vZGFsXG4gICAgICAgICAgICBhZGRBZ2VudD17YWRkQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudD17dXBkYXRlQWdlbnR9XG4gICAgICAgICAgICByZW1vdmVBZ2VudD17cmVtb3ZlQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudD17c2VsZWN0Rmlyc3RBZ2VudH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8U25hY2tiYXIgLz5cbiAgICAgIDwvU0NDQUlNV3JhcHBlcj4sXG4gICAgICBzZWxlY3RvclxuICAgIClcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBRUVBLFdBQVcsRUFDWEMsT0FBTyxFQUNQQyxRQUFRLEVBQ1JDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxlQUFlLFFBRVYsT0FBTztBQUNkLE9BQU9DLFFBQVEsTUFBTSxXQUFXO0FBQ2hDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsU0FBUyxRQUFRLHVCQUF1QjtBQUNqRCxTQUFTQyxzQkFBc0IsUUFBUSx1Q0FBdUM7QUFFOUUsU0FBU0MsYUFBYSxRQUFRLGtCQUFrQjtBQUNoRCxTQUFTQyxhQUFhLEVBQUVDLE9B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
724
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkNoYXRBSUNvbnRlbnQiLCJidWlsZEhhbmRsZXJzIiwib3B0aW9ucyIsIlNpZGViYXIiLCJ1c2VHZXRBZ2VudHMiLCJ1c2VHZXRTa2lsbHMiLCJ1c2VHbG9iYWxDb250ZXh0IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJTbmFja2JhciIsIlByb2plY3RTdW1tYXJ5Q29udGVudCIsIkFibUFnZW50TW9kYWwiLCJBYm1Ta2lsbE1vZGFsIiwiQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1XcmFwcGVyIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwiRmxvYXRpbmdQYW5lbE1vdGlvbiIsInVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCIsIkNoYXRBaU1vZGFsRm9vdGVyIiwidmFsaWRhdGVJc01haWEiLCJ1c2VGYXFzU3RvcmUiLCJmZXRjaE1haWEiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJJRF9NT0RBTF9DSEFUX0FHRU5UIiwidmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUiLCJzZWN0aW9uIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIkNoYXRBSU1vZGFsIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiX3VzZXIkcGVybWlzc2lvbnMyIiwiX3VzZXIkcGVybWlzc2lvbnMzIiwiX2FnZW50cyRkYXRhIiwiaGFuZGxlQ2xvc2UiLCJ1c2VyIiwiX3VzZVRyYW5zbGF0aW9uIiwiYWJtQWdlbnQiLCJpMThuIiwiYW1wbGl0dWRFdmVudCIsImhhbmRsZUNsb3NlTW9kYWwiLCJnZXRTdGF0ZSIsImNsZWFyRmFxcyIsIl91c2VTdGF0ZSIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInVzZXJJbml0aWFsTWVzc2FnZSIsInNldFVzZXJJbml0aWFsTWVzc2FnZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaW5pdGlhbENoYXRJZCIsInNldEluaXRpYWxDaGF0SWQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsIm5ld0NoYXRLZXkiLCJzZXROZXdDaGF0S2V5IiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZW5kTWVzc2FnZUZ1bmN0aW9uIiwic2V0U2VuZE1lc3NhZ2VGdW5jdGlvbiIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsInNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJpc1N0cmVhbWluZyIsInNldElzU3RyZWFtaW5nIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJyZWZldGNoQ2hhdHMiLCJzZXRSZWZldGNoQ2hhdHMiLCJfdXNlU3RhdGUxNSIsImhvbWUiLCJfdXNlU3RhdGUxNiIsImN1cnJlbnRPcHRpb24iLCJzZXRDdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJoYW5kbGVycyIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJzaWRlYmFySGFzRXJyb3IiLCJzZXRTaWRlYmFySGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsImxhbmciLCJsYW5ndWFnZSIsImxvY2FsZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJhZ2VudCIsInByb2plY3QiLCJjbGllbnQiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsInNldENsaWVudCIsInNldFByb2plY3QiLCJiYW5uZXJFbnRyeUZhcSIsInNldFRhc2siLCJ0b29sdGlwWkluZGV4IiwiX3VzZUdldEFnZW50cyIsImhhbmRsZUdvSG9tZSIsImFnZW50cyIsImxvYWRpbmciLCJsb2FkaW5nTW9yZSIsImFnZW50RXJyb3IiLCJlcnJvciIsImhhbmRsZUdldEFnZW50cyIsImxvYWRNb3JlQWdlbnRzIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsIl91c2VHZXRTa2lsbHMiLCJza2lsbHMiLCJsb2FkaW5nU2tpbGxzIiwiaGFuZGxlR2V0U2tpbGxzIiwiYWRkU2tpbGwiLCJ1cGRhdGVTa2lsbEluTGlzdCIsInJlbW92ZVNraWxsIiwiaXNNQUlBIiwidXNlckhhc1Blcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjcmVhdGUiLCJlZGl0IiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInRlc3QiLCJuYW1lIiwibXlBZ2VudHMiLCJteVNraWxscyIsImNoYXQiLCJzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yIiwic2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yIiwicHJvamVjdFNlbGVjdG9yIiwiY2xpZW50U2VsZWN0b3IiLCJpc01haWFrZXJBZ2VudFNlbGVjdGVkIiwidHlwZSIsInNpZGViYXJBZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNGZXRjaGVkUmVmIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjb25jYXQiLCJfdXNlU3RhdGUyMSIsIl91c2VTdGF0ZTIyIiwibGF5b3V0TW9kZSIsInNldExheW91dE1vZGUiLCJleHBhbmRlZCIsImlzRmxvYXRpbmciLCJjb250ZW50V3JhcHBlclJlZiIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJkcmFnUG9zaXRpb24iLCJzZXREcmFnUG9zaXRpb24iLCJfdXNlRmxvYXRpbmdQYW5lbERyYWciLCJ0aWx0TW90aW9uIiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJzYW1wbGVQb2ludGVyTW92ZSIsImVuZFBvaW50ZXJUcmFja2luZyIsImRyYWdTdGF0ZVJlZiIsImNsYW1wRHJhZ1Bvc2l0aW9uIiwieCIsInkiLCJjb250ZW50V3JhcHBlciIsImN1cnJlbnQiLCJfY29udGVudFdyYXBwZXIkZ2V0Qm8iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsImhlaWdodCIsIm9mZnNldCIsIm1heFgiLCJNYXRoIiwibWF4IiwiaW5uZXJXaWR0aCIsIm1heFkiLCJpbm5lckhlaWdodCIsIm1pbiIsInByZXYiLCJwYWQiLCJoYW5kbGVEcmFnRW5kIiwiZXZlbnQiLCJfZHJhZ1N0YXRlUmVmJGN1cnJlbnQiLCJwb2ludGVySWQiLCJib2R5Iiwic3R5bGUiLCJ1c2VyU2VsZWN0IiwiY3Vyc29yIiwiaGFuZGxlRHJhZ01vdmUiLCJkcmFnU3RhdGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm5leHRQb3NpdGlvbiIsIm9mZnNldFgiLCJvZmZzZXRZIiwicmVzb2x2ZWREcmFnUG9zaXRpb24iLCJoYW5kbGVEcmFnU3RhcnQiLCJidXR0b24iLCJ0YXJnZXQiLCJjbG9zZXN0IiwicmVjdCIsImluaXRpYWxQb3NpdGlvbiIsImxlZnQiLCJ0b3AiLCJwb2ludGVyT2Zmc2V0WCIsInBvaW50ZXJPZmZzZXRZIiwiY3VycmVudFRhcmdldCIsInNldFBvaW50ZXJDYXB0dXJlIiwicHJldmVudERlZmF1bHQiLCJhaUNoYXREcmFnZ2FibGUiLCJzdGFydENoYXQiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJfb2JqZWN0U3ByZWFkIiwibGVuZ3RoIiwiYmFubmVyRmFxQXV0b1NlbnRSZWYiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkiLCJlbnRpdHlSZWFkeSIsIkJvb2xlYW4iLCJpZCIsImZhcVRpdGxlIiwidHJpbSIsImdvVG9DaGF0Iiwic2Vzc2lvbkV4dGVybmFsSWQiLCJzZWxlY3RlZEFnZW50IiwiZGF0YSIsImZpbmQiLCJhZ2VudEl0ZW0iLCJhZ2VudElkIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSIsInNlbmRNZXNzYWdlIiwic3RvcEdlbmVyYXRpb24iLCJzdHJlYW1pbmciLCJ3cml0aW5nIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwicHJvamVjdF9kZWxldGVkIiwiaGFuZGxlUmVzZXRDaGF0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0Iiwic3RvcCIsImhhbmRsZUJhY2siLCJvbk1lcmdlQ3JlYXRlZEFnZW50IiwiZXZ0IiwiX3JlZjMiLCJkZXRhaWwiLCJuZXh0QWdlbnQiLCJuYXZpZ2F0ZUhvbWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uU3luY0VkaXRlZEFnZW50IiwiX3JlZjQiLCJvcGVuQ2hhdFZpZXciLCJvcGVuTmV3Q2hhdFdpdGhBZ2VudCIsIl9kZXRhaWwkcHJvamVjdCIsIl9kZXRhaWwkY2xpZW50IiwiX3JlZjUiLCJ0YXNrIiwidW5kZWZpbmVkIiwic2hvd05ld0NoYXQiLCJoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciIsInNob3dCYWNrQnV0dG9uIiwiaGFuZGxlT3Blbk1hcmtldHBsYWNlIiwiaGFuZGxlT3BlblNraWxscyIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwiYSIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImFicnVwdCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsIm9uR29Ub0NoYXQiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJhZ2VudHNOYXZBY3RpdmUiLCJmbG9hdGluZyIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm9uQWdlbnRVcGRhdGUiLCJoaWRlQWdlbnRTZWxlY3RvciIsIm9uQmFjayIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25EZWxldGVTa2lsbCIsIm9uUmVzdGFydFN1bW1hcnkiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsInNob3dGYXFzIiwicmVmIiwiY3JlYXRlUG9ydGFsIiwiZWxldmF0ZWQiLCJ0aWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL0NoYXRBSU1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQge1xuICBSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgTUFJQUVycm9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQUVycm9yJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5cbmltcG9ydCB7IENoYXRBSUNvbnRlbnQgfSBmcm9tICcuLi9DaGF0QUlDb250ZW50J1xuaW1wb3J0IHsgYnVpbGRIYW5kbGVycywgb3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gJy4uL1NpZGViYXInXG5pbXBvcnQgeyB1c2VHZXRBZ2VudHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMnXG5pbXBvcnQgeyB1c2VHZXRTa2lsbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9nZXRTa2lsbHMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IENoYXRBSU1vZGFsSGVhZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyJ1xuaW1wb3J0IHsgU25hY2tiYXIgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvU25hY2tCYXIvU25hY2tiYXInXG5pbXBvcnQgeyBQcm9qZWN0U3VtbWFyeUNvbnRlbnQgfSBmcm9tICcuLi9Qcm9qZWN0U3VtbWFyeUNvbnRlbnQnXG5pbXBvcnQgeyBBYm1BZ2VudE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbCdcbmltcG9ydCB7IEFibVNraWxsTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtU2tpbGxNb2RhbC9BYm1Ta2lsbE1vZGFsJ1xuaW1wb3J0IHsgQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsR2VuZXJhdGVNb2RhbC9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBTQ0NBSU1Db250ZW50LCBTQ0NBSU1Db250ZW50V3JhcHBlciwgU0NDQUlNV3JhcHBlciB9IGZyb20gJy4vQ2hhdEFJTW9kYWwuc3R5bGVzJ1xuaW1wb3J0IHsgZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4LCBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSB9IGZyb20gJy4vbGF5b3V0J1xuaW1wb3J0IHsgRmxvYXRpbmdQYW5lbE1vdGlvbiwgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IH0gZnJvbSAnLi9mbG9hdGluZ1BhbmVsTW90aW9uJ1xuaW1wb3J0IHsgQ2hhdEFpTW9kYWxGb290ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxGb290ZXInXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgeyB1c2VGYXFzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VGYXFzU3RvcmUnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuXG50eXBlIENoYXRBSU1vZGFsUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBoYW5kbGVDbG9zZT86ICgpID0+IHZvaWRcbiAgcGFyZW50UmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PlxufVxuXG5leHBvcnQgY29uc3QgSURfTU9EQUxfQ0hBVF9BR0VOVCA9ICdtb2RhbHMtcG9ydGFsLW1haWEtY2hhdC1hZ2VudCdcblxuY29uc3QgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUgPSAoc2VjdGlvbjogc3RyaW5nKSA9PiB7XG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJyAmJiAod2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUykpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIGlmICgoc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IHNlY3Rpb24gPT09ICdjbGllbnQnIHx8IHNlY3Rpb24gPT09ICd0YXNrJykgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICh7IGhhbmRsZUNsb3NlIH06IENoYXRBSU1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2VdKVxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICB9Pih7XG4gICAgbWVzc2FnZTogJycsXG4gICAgYXR0YWNobWVudHM6IFtdLFxuICB9KVxuICBjb25zdCBbaW5pdGlhbENoYXRJZCwgc2V0SW5pdGlhbENoYXRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbbmV3Q2hhdEtleSwgc2V0TmV3Q2hhdEtleV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbl0gPSB1c2VTdGF0ZTxcbiAgICB8ICgoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZClcbiAgICB8IG51bGxcbiAgPihudWxsKVxuICBjb25zdCBbc3RvcEdlbmVyYXRpb25GdW5jdGlvbiwgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbl0gPSB1c2VTdGF0ZTwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNTdHJlYW1pbmcsIHNldElzU3RyZWFtaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZShvcHRpb25zLmhvbWUpXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGhhbmRsZXJzID0gdXNlTWVtbygoKSA9PiBidWlsZEhhbmRsZXJzKHNldEN1cnJlbnRPcHRpb24sIHNldEhhc0Vycm9yKSwgW10pXG4gIGNvbnN0IFtzaWRlYmFySGFzRXJyb3IsIHNldFNpZGViYXJIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcmVzZXRTZWxlY3RlZENoYXRSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQtYnInIDogaTE4bi5sYW5ndWFnZVxuXG4gIG1vbWVudC5sb2NhbGUobGFuZylcblxuICBjb25zdCB7XG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2VjdGlvbixcbiAgICBhZ2VudCxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGJhbm5lckVudHJ5RmFxLFxuICAgIHNldFRhc2ssXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICAvLyBaLWluZGV4IHBhcmEgdG9vbHRpcHMgZW4gc2VjdGlvbiAndGFzaycgKG1vZGFsIGZsb3RhbnRlIGVsZXZhZG8pXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICdvdmVybGF5JylcblxuICBjb25zdCB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3I6IGFnZW50RXJyb3IsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfSA9IHVzZUdldEFnZW50cyh7IHNlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgaGFuZGxlR29Ib21lOiBoYW5kbGVycy5ob21lIH0pXG5cbiAgY29uc3QgeyBza2lsbHMsIGxvYWRpbmc6IGxvYWRpbmdTa2lsbHMsIGhhbmRsZUdldFNraWxscywgYWRkU2tpbGwsIHVwZGF0ZVNraWxsSW5MaXN0LCByZW1vdmVTa2lsbCB9ID0gdXNlR2V0U2tpbGxzKClcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcblxuICBjb25zdCB1c2VySGFzUGVybWlzc2lvbnMgPVxuICAgICh1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5jcmVhdGUgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmRlbGV0ZSkgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGlzR2xvYmFsU3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJ1xuICAgIGNvbnN0IGlzUHJvamVjdFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09IG51bGwpXG4gICAgY29uc3QgaXNDbGllbnRTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnXG4gICAgY29uc3QgaXNNYWlha2VyID0gaXNHbG9iYWxTcGVjaWFsaXN0ICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15U2tpbGxzXG4gICAgfVxuXG4gICAgaWYgKGlzR2xvYmFsU3BlY2lhbGlzdCAmJiAhaXNNYWlha2VyICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lXSlcblxuICBjb25zdCBpc01haWFrZXJBZ2VudFNlbGVjdGVkID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgaXNNQUlBICYmXG4gICAgICBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJlxuICAgICAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiZcbiAgICAgIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKSxcbiAgICBbaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8udHlwZSwgYWdlbnQ/Lm5hbWVdXG4gIClcblxuICBjb25zdCBzaWRlYmFyQWdlbnRzTmF2QWN0aXZlID0gdXNlTWVtbygoKTogJ21haWFrZXInIHwgJ215QWdlbnRzJyB8ICdteVNraWxscycgfCBudWxsID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzKSByZXR1cm4gJ215U2tpbGxzJ1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMpIHJldHVybiAnbXlBZ2VudHMnXG4gICAgaWYgKGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpIHJldHVybiAnbWFpYWtlcidcbiAgICByZXR1cm4gbnVsbFxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkXSlcblxuICAvKiBSZWFjdGl2YXIgY29uIGxhIGZpbGEg4oCcTWlzIGFnZW50ZXPigJ0gZW4gU2lkZWJhcjogbXlBZ2VudHNDb3VudCBwcm9wXG4gIGNvbnN0IHNpZGViYXJNeUFnZW50c0NvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGFnZW50cy5kYXRhLmZpbHRlcihcbiAgICAgIGEgPT4gIShhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGEubmFtZSB8fCAnJykpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gRW4gc2VjdGlvbiAndGFzaycgTWFpYSBhYnJlIGVuIG1vZG8gZmxvdGFudGUgcG9yIGRlZmF1bHQgKHNlIGFicmUgZGVzZGUgZWwgdGFzayBwYW5lbCxcbiAgLy8gbm8gcXVlcmVtb3MgdGFwYXJsbyBlbnRlcm8pLiBFbCB1c3VhcmlvIHB1ZWRlIGNhbWJpYXIgYSBzaWRlYmFyL2Z1bGxzY3JlZW4gZGVzZGUgbG9zIGNvbnRyb2xlcyBkZWwgbW9kYWwuXG4gIGNvbnN0IFtsYXlvdXRNb2RlLCBzZXRMYXlvdXRNb2RlXSA9IHVzZVN0YXRlPE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlPihzZWN0aW9uID09PSAndGFzaycgPyAnZmxvYXRpbmcnIDogJ3NpZGViYXInKVxuICBjb25zdCBleHBhbmRlZCA9IGxheW91dE1vZGUgPT09ICdmdWxsc2NyZWVuJ1xuICBjb25zdCBpc0Zsb2F0aW5nID0gbGF5b3V0TW9kZSA9PT0gJ2Zsb2F0aW5nJ1xuICBjb25zdCBjb250ZW50V3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2RyYWdQb3NpdGlvbiwgc2V0RHJhZ1Bvc2l0aW9uXSA9IHVzZVN0YXRlPHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgdGlsdE1vdGlvbiwgc3RhcnRQb2ludGVyVHJhY2tpbmcsIHNhbXBsZVBvaW50ZXJNb3ZlLCBlbmRQb2ludGVyVHJhY2tpbmcgfSA9XG4gICAgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0KGlzRmxvYXRpbmcpXG4gIGNvbnN0IGRyYWdTdGF0ZVJlZiA9IHVzZVJlZjx7XG4gICAgcG9pbnRlcklkOiBudW1iZXJcbiAgICBvZmZzZXRYOiBudW1iZXJcbiAgICBvZmZzZXRZOiBudW1iZXJcbiAgfSB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgY2xhbXBEcmFnUG9zaXRpb24gPSB1c2VDYWxsYmFjaygoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICByZXR1cm4geyB4LCB5IH1cbiAgICB9XG5cbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGNvbnRlbnRXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3Qgb2Zmc2V0ID0gMTZcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJXaWR0aCAtIHdpZHRoIC0gb2Zmc2V0KVxuICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lckhlaWdodCAtIGhlaWdodCAtIG9mZnNldClcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBNYXRoLm1pbihNYXRoLm1heCh4LCBvZmZzZXQpLCBtYXhYKSxcbiAgICAgIHk6IE1hdGgubWluKE1hdGgubWF4KHksIG9mZnNldCksIG1heFkpLFxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiB7XG4gICAgICBpZiAocHJldikge1xuICAgICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24ocHJldi54LCBwcmV2LnkpXG4gICAgICB9XG4gICAgICBjb25zdCBwYWQgPSAxNlxuICAgICAgY29uc3QgeCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWRcbiAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gICAgfSlcbiAgfSwgW2xheW91dE1vZGUsIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnRW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGVuZFBvaW50ZXJUcmFja2luZygpXG4gICAgICBpZiAoZHJhZ1N0YXRlUmVmLmN1cnJlbnQ/LnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBkcmFnU3RhdGVSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICcnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICcnXG4gICAgfSxcbiAgICBbZW5kUG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRHJhZ01vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgZHJhZ1N0YXRlID0gZHJhZ1N0YXRlUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZHJhZ1N0YXRlIHx8IGRyYWdTdGF0ZS5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2FtcGxlUG9pbnRlck1vdmUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcblxuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uID0gY2xhbXBEcmFnUG9zaXRpb24oZXZlbnQuY2xpZW50WCAtIGRyYWdTdGF0ZS5vZmZzZXRYLCBldmVudC5jbGllbnRZIC0gZHJhZ1N0YXRlLm9mZnNldFkpXG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgICAgaWYgKHByZXYgJiYgcHJldi54ID09PSBuZXh0UG9zaXRpb24ueCAmJiBwcmV2LnkgPT09IG5leHRQb3NpdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dFBvc2l0aW9uXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBzYW1wbGVQb2ludGVyTW92ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgaWYgKGRyYWdQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBjb25zdCBwYWQgPSAxNlxuICAgIGNvbnN0IHggPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWQgOiBwYWRcbiAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICB9LCBbbGF5b3V0TW9kZSwgZHJhZ1Bvc2l0aW9uLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNGbG9hdGluZyB8fCBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgaWYgKHRhcmdldC5jbG9zZXN0KCdidXR0b24sIGEsIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbcm9sZT1cImJ1dHRvblwiXSwgW2RhdGEtbm8tZHJhZz1cInRydWVcIl0nKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID8/IGNsYW1wRHJhZ1Bvc2l0aW9uKHJlY3QubGVmdCwgcmVjdC50b3ApXG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WCA9IGV2ZW50LmNsaWVudFggLSBpbml0aWFsUG9zaXRpb24ueFxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gaW5pdGlhbFBvc2l0aW9uLnlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKGluaXRpYWxQb3NpdGlvbilcbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0ge1xuICAgICAgICBwb2ludGVySWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgb2Zmc2V0WDogcG9pbnRlck9mZnNldFgsXG4gICAgICAgIG9mZnNldFk6IHBvaW50ZXJPZmZzZXRZLFxuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZydcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdERyYWdnYWJsZSlcbiAgICAgIHN0YXJ0UG9pbnRlclRyYWNraW5nKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIGlzRmxvYXRpbmcsIHJlc29sdmVkRHJhZ1Bvc2l0aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IHN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgJycsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyB8fCBbXSxcbiAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihtZW50aW9ucyAmJiBtZW50aW9ucy5sZW5ndGggPiAwID8geyBtZW50aW9ucyB9IDoge30pLFxuICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZW50aXR5UmVhZHkgPSBzZWN0aW9uID09PSAncHJvamVjdCcgPyBCb29sZWFuKHByb2plY3Q/LmlkKSA6IHNlY3Rpb24gPT09ICdjbGllbnQnID8gQm9vbGVhbihjbGllbnQ/LmlkKSA6IHRydWVcblxuICAgIGlmICghYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlPy50cmltKCkgfHwgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCB8fCBsb2FkaW5nIHx8ICFhZ2VudD8uaWQgfHwgIWVudGl0eVJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHN0YXJ0Q2hhdChiYW5uZXJFbnRyeUZhcS5mYXFUaXRsZSwgW10sIGJhbm5lckVudHJ5RmFxLmZhcUlkKVxuICB9LCBbXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcUlkLFxuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZSxcbiAgICBsb2FkaW5nLFxuICAgIGFnZW50Py5pZCxcbiAgICBhZ2VudD8uZW50aXR5LFxuICAgIHByb2plY3Q/LmlkLFxuICAgIGNsaWVudD8uaWQsXG4gICAgc2VjdGlvbixcbiAgICBzdGFydENoYXQsXG4gIF0pXG5cbiAgY29uc3QgZ29Ub0NoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hhdDogYW55KSA9PiB7XG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmlkID09PSBjaGF0LmFnZW50SWQpXG4gICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgfVxuICAgICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBhZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZCxcbiAgICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgICAgc3RyZWFtaW5nOiBib29sZWFuLFxuICAgICAgd3JpdGluZzogYm9vbGVhblxuICAgICkgPT4ge1xuICAgICAgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbigoKSA9PiBzZW5kTWVzc2FnZSlcbiAgICAgIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24oKCkgPT4gc3RvcEdlbmVyYXRpb24pXG4gICAgICBzZXRJc1N0cmVhbWluZyhzdHJlYW1pbmcpXG4gICAgICBzZXRJc1dyaXRpbmcod3JpdGluZylcbiAgICB9LFxuICAgIFtdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgaWYgKHNlbmRNZXNzYWdlRnVuY3Rpb24gJiYgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgICAgc2VuZE1lc3NhZ2VGdW5jdGlvbihtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydENoYXQobWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHN0YXJ0Q2hhdCwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBoYW5kbGVHb0hvbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2kgZXN0YW1vcyBlbiB1bmEgY29udmVyc2FjacOzbiB5IHZhbW9zIGEgaG9tZSwgcmVzZXRlYXIgaW5pdGlhbENoYXRJZCB5IGluY3JlbWVudGFyIG5ld0NoYXRLZXlcbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uPy4oKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgKCFhZ2VudCB8fCBhZ2VudD8uaXNfZGVsZXRlZCB8fCBhZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fCBhZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHwgYWdlbnQ/LnByb2plY3RfZGVsZXRlZCkgJiZcbiAgICAgIGFnZW50cy5kYXRhLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50cy5kYXRhWzBdKVxuICAgIH1cbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFtcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgb3B0aW9ucy5jaGF0LFxuICAgIGN1cnJlbnRPcHRpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGFnZW50LFxuICAgIGFnZW50cyxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZXRDbGllbnQsXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgXSlcblxuICBjb25zdCBoYW5kbGVSZXNldENoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbaGFuZGxlR29Ib21lXSlcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIiBkZWwgaGVhZGVyIChzb2xvIGFnZW50ZXMgY2xvbmUpOlxuICAvLyAtIENvbiBjb252ZXJzYWNpw7NuIGluaWNpYWRhOiBpbmljaWEgdW5hIG51ZXZhIGNvbnZlcnNhY2nDs24geSB2dWVsdmUgYWwgaG9tZSAodG9kYXMgbGFzIHNlY2Npb25lcykuXG4gIC8vIC0gRW4gZWwgaG9tZSAoRkFRcy9GVUEpOiB2dWVsdmUgYWwgc2VsZWN0b3IgZGUgcHJveWVjdG9zL2NsaWVudGVzIGxpbXBpYW5kbyBsYSBlbnRpdHkgc2VsZWNjaW9uYWRhLlxuICBjb25zdCBoYW5kbGVCYWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgaGFuZGxlUmVzZXRDaGF0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyBFbiBzZWN0aW9uICd0YXNrJyBwcmVzZXJ2YXIgcHJvamVjdC9jbGllbnQ7IGVuIG90cmFzIHNlY2Npb25lcywgaXIgYWwgc2VsZWN0b3IgbGltcGlhbmRvIHByb2plY3QvY2xpZW50XG4gICAgaWYgKHNlY3Rpb24gIT09ICd0YXNrJykge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICB9XG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNlY3Rpb24sIGhhbmRsZVJlc2V0Q2hhdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBoYW5kbGVHZXRBZ2VudHMoKVxuICAgIH1cbiAgfSwgW2hhbmRsZUdldEFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbk1lcmdlQ3JlYXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAobmV4dEFnZW50Py5pZCkge1xuICAgICAgICBhZGRBZ2VudChuZXh0QWdlbnQsIHsgbmF2aWdhdGVIb21lOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbYWRkQWdlbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TeW5jRWRpdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghbmV4dEFnZW50Py5pZCkgcmV0dXJuXG4gICAgICB1cGRhdGVBZ2VudChuZXh0QWdlbnQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBuZXh0QWdlbnQuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW3VwZGF0ZUFnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnQ/LmlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5DaGF0VmlldyA9ICgpID0+IHtcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmNoYXQpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKiBNaXNtbyBmbHVqbyBxdWUgQ2hhdEFJTXlBZ2VudHMuaGFuZGxlVXNlQWdlbnQgKyBvbkJhY2sgKGhhbmRsZXJzLmhvbWUpLlxuICAgKiAgRWwgZGV0YWlsIHB1ZWRlIHRyYWVyIG9wY2lvbmFsbWVudGUgYHByb2plY3RgLCBgY2xpZW50YCwgYHRhc2tgIHBhcmEgZmxvd3MgcXVlXG4gICAqICBuZWNlc2l0YW4gcHJlc2VydmFyIGNvbnRleHRvIChlai4gc2VsZWN0b3IgZGUgYWdlbnRlcyBkZXNkZSB1bmEgdGFyZWEpLiBTaSBubyB2aWVuZW4sXG4gICAqICBzZSBtYW50aWVuZSBlbCBjb21wb3J0YW1pZW50byBvcmlnaW5hbCBkZSBsaW1waWFyIHByb2plY3QvY2xpZW50LiAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5OZXdDaGF0V2l0aEFnZW50ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PHtcbiAgICAgICAgYWdlbnQ6IEFnZW50XG4gICAgICAgIHByb2plY3Q/OiBQcm9qZWN0IHwgbnVsbFxuICAgICAgICBjbGllbnQ/OiBDbGllbnQgfCBudWxsXG4gICAgICAgIHRhc2s/OiBUYXNrIHwgbnVsbFxuICAgICAgfT5cbiAgICAgIGNvbnN0IG5leHRBZ2VudCA9IGRldGFpbD8uYWdlbnRcbiAgICAgIGlmICghbmV4dEFnZW50KSByZXR1cm5cblxuICAgICAgc2V0UHJvamVjdChkZXRhaWw/LnByb2plY3QgPz8gbnVsbClcbiAgICAgIHNldENsaWVudD8uKGRldGFpbD8uY2xpZW50ID8/IG51bGwpXG4gICAgICBpZiAoZGV0YWlsPy50YXNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0VGFzaz8uKGRldGFpbC50YXNrKVxuICAgICAgfVxuICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIH1cbiAgfSwgW3NlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdKVxuXG4gIGNvbnN0IHNob3dOZXdDaGF0ID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXRcbiAgY29uc3QgaGlkZUhlYWRlckFnZW50U2VsZWN0b3IgPVxuICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyB8fCBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHNcbiAgY29uc3Qgc2hvd0JhY2tCdXR0b24gPVxuICAgIGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmXG4gICAgYWdlbnQ/LmVudGl0eSAhPT0gJ2dsb2JhbCcgJiZcbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCB8fCAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgc2VjdGlvbiAhPT0gJ3Rhc2snKSlcbiAgY29uc3QgaGFuZGxlT3Blbk1hcmtldHBsYWNlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlBZ2VudHMpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Ta2lsbHMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teVNraWxscylcbiAgICBoYW5kbGVHZXRTa2lsbHMoKVxuICB9LCBbaGFuZGxlR2V0U2tpbGxzXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGE6IEFnZW50KSA9PiBhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3RdKVxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgIWlzRmxvYXRpbmcgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgaGFuZGxlT3BlblNraWxscz17aGFuZGxlT3BlblNraWxsc31cbiAgICAgICAgICBzaG93TmV3Q2hhdD17c2hvd05ld0NoYXR9XG4gICAgICAgICAgcmVmZXRjaENoYXRzPXtyZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzPXtzZXRSZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFzRXJyb3I9e3NpZGViYXJIYXNFcnJvcn1cbiAgICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZj17cmVzZXRTZWxlY3RlZENoYXRSZWZ9XG4gICAgICAgICAgYWdlbnRzTmF2QWN0aXZlPXtzaWRlYmFyQWdlbnRzTmF2QWN0aXZlfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U0NDQUlNQ29udGVudCBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgPENoYXRBSU1vZGFsSGVhZGVyXG4gICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICBvbkxheW91dE1vZGVDaGFuZ2U9e3NldExheW91dE1vZGV9XG4gICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgIGRyYWdnYWJsZT17aXNGbG9hdGluZ31cbiAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgIG9uRHJhZ01vdmU9e2hhbmRsZURyYWdNb3ZlfVxuICAgICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgIGhhc0Vycm9yPXshIWFnZW50RXJyb3J9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBsb2FkaW5nTW9yZT17bG9hZGluZ01vcmV9XG4gICAgICAgICAgaGFzTW9yZT17YWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgIGhhbmRsZVJlc2V0Q2hhdD17aGFuZGxlUmVzZXRDaGF0fVxuICAgICAgICAgIG9uQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgbG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgIHNvcnRBZ2VudHNMaXN0PXtzb3J0QWdlbnRzTGlzdH1cbiAgICAgICAgICBoaWRlQWdlbnRTZWxlY3Rvcj17aGlkZUhlYWRlckFnZW50U2VsZWN0b3J9XG4gICAgICAgICAgc2hvd0JhY2tCdXR0b249e3Nob3dCYWNrQnV0dG9ufVxuICAgICAgICAgIG9uQmFjaz17aGFuZGxlQmFja31cbiAgICAgICAgLz5cbiAgICAgICAge2hhc0Vycm9yID8gKFxuICAgICAgICAgIDxNQUlBRXJyb3IgLz5cbiAgICAgICAgKSA6IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24pID8gKFxuICAgICAgICAgIDxDaGF0QUlDb250ZW50XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uPXtjb21wdXRlZEN1cnJlbnRPcHRpb259XG4gICAgICAgICAgICBoYW5kbGVycz17eyAuLi5oYW5kbGVycywgY2hhdDogc3RhcnRDaGF0LCBob21lOiBoYW5kbGVycy5ob21lLCBoYW5kbGVHb0hvbWUgfX1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldEhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgcmVmcz17eyB1c2VySW5pdGlhbE1lc3NhZ2UsIGluaXRpYWxDaGF0SWQgfX1cbiAgICAgICAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeT17aGFuZGxlU2VuZE1lc3NhZ2VSZWFkeX1cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIGZsb2F0aW5nPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICAgIGxvYWRpbmdBZ2VudHM9e2xvYWRpbmd9XG4gICAgICAgICAgICBvbkRlbGV0ZUFnZW50PXtoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50c31cbiAgICAgICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIGhhc01vcmVBZ2VudHM9eyEhYWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgICAgbG9hZGluZ01vcmVBZ2VudHM9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgICAgb25Mb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgICBvbkdvVG9NYWlha2VyPXtoYW5kbGVHb1RvTWFpYWtlcn1cbiAgICAgICAgICAgIGFnZW50RXJyb3I9e2FnZW50RXJyb3J9XG4gICAgICAgICAgICBza2lsbHM9e3NraWxsc31cbiAgICAgICAgICAgIGxvYWRpbmdTa2lsbHM9e2xvYWRpbmdTa2lsbHN9XG4gICAgICAgICAgICBvbkRlbGV0ZVNraWxsPXtyZW1vdmVTa2lsbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxQcm9qZWN0U3VtbWFyeUNvbnRlbnQgb25SZXN0YXJ0U3VtbWFyeT17aGFuZGxlcnMuaG9tZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgeygoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgISFhZ2VudHM/LmRhdGE/Lmxlbmd0aCkgfHxcbiAgICAgICAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkgJiZcbiAgICAgICAgICAhaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSAmJlxuICAgICAgICAgICFoYXNFcnJvciAmJlxuICAgICAgICAgICFsb2FkaW5nICYmXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgKFxuICAgICAgICAgICAgPENoYXRBaU1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICBoYW5kbGVTdG9wR2VuZXJhdGlvbj17c3RvcEdlbmVyYXRpb25GdW5jdGlvbn1cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgICAgY2hhdElkPXtpbml0aWFsQ2hhdElkfVxuICAgICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgICBzaG93RmFxcz17Y29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXR9XG4gICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8L1NDQ0FJTUNvbnRlbnQ+XG4gICAgPC8+XG4gIClcblxuICBjb25zdCBjb250ZW50V3JhcHBlciA9IChcbiAgICA8U0NDQUlNQ29udGVudFdyYXBwZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30gcmVmPXtjb250ZW50V3JhcHBlclJlZn0+XG4gICAgICB7bW9kYWxQYW5lbH1cbiAgICA8L1NDQ0FJTUNvbnRlbnRXcmFwcGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICBzZWxlY3RvciAmJlxuICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0NBSU1XcmFwcGVyXG4gICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgZHJhZ1Bvc2l0aW9uPXtyZXNvbHZlZERyYWdQb3NpdGlvbn1cbiAgICAgICAgZWxldmF0ZWQ9e3NlY3Rpb24gPT09ICd0YXNrJ31cbiAgICAgID5cbiAgICAgICAgPEZsb2F0aW5nUGFuZWxNb3Rpb24gdGlsdD17dGlsdE1vdGlvbn0gZXhwYW5kZWQ9e2V4cGFuZGVkfT5cbiAgICAgICAgICB7Y29udGVudFdyYXBwZXJ9XG4gICAgICAgIDwvRmxvYXRpbmdQYW5lbE1vdGlvbj5cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiAoXG4gICAgICAgICAgPEFibUFnZW50TW9kYWxcbiAgICAgICAgICAgIGFkZEFnZW50PXthZGRBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50PXt1cGRhdGVBZ2VudH1cbiAgICAgICAgICAgIHJlbW92ZUFnZW50PXtyZW1vdmVBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBzZWxlY3RGaXJzdEFnZW50PXtzZWxlY3RGaXJzdEFnZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1Ta2lsbE1vZGFsIGFkZFNraWxsPXthZGRTa2lsbH0gdXBkYXRlU2tpbGxJbkxpc3Q9e3VwZGF0ZVNraWxsSW5MaXN0fSByZW1vdmVTa2lsbD17cmVtb3ZlU2tpbGx9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgPEFibVNraWxsR2VuZXJhdGVNb2RhbCAvPn1cbiAgICAgICAgPFNuYWNrYmFyIC8+XG4gICAgICA8L1NDQ0FJTVdyYXBwZXI+LFxuICAgICAgc2VsZWN0b3JcbiAgICApXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUVFQSxXQUFXLEVBQ1hDLE9BQU8sRUFDUEMsUUFBUSxFQUNSQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsZUFBZSxRQUVWLE9BQU87QUFDZCxPQUFPQyxRQUFRLE1BQU0sV0FBVztBQUNoQyxPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLFNBQVMsUUFBUSx1QkFBdUI7QUFDakQsU0FBU0Msc0JBQXNCLFFBQVEsdUNBQXVDO0FBRTlFLFNBQVNDLGFBQWEsUUFBUSxrQkFBa0I7QUFDaEQsU0FBU0MsYUFBYSxFQUFFQyxPQUFPLFFBQVEsYUFBYTtBQUNwRCxTQUFTQyxPQUFPLFFBQVEsWUFBWTtBQUNwQyxTQUFTQyxZQUFZLFFBQVEseUNBQXlDO0FBQ3RFLFNBQVNDLFlBQVksUUFBUSx5Q0FBeUM7QUFDdEUsU0FBU0MsZ0JBQWdCLFFBQVEsaUNBQWlDO0FBR2xFLFNBQVNDLGlCQUFpQixRQUFRLGtEQUFrRDtBQUNwRixTQUFTQyxRQUFRLFFBQVEsbUNBQW1DO0FBQzVELFNBQVNDLHFCQUFxQixRQUFRLDBCQUEwQjtBQUNoRSxTQUFTQyxhQUFhLFFBQVEsNkNBQTZDO0FBQzNFLFNBQVNDLGFBQWEsUUFBUSw2Q0FBNkM7QUFDM0UsU0FBU0MscUJBQXFCLFFBQVEsNkRBQTZEO0FBQ25HLFNBQVNDLFFBQVEsUUFBUSwy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
@@ -48,6 +48,7 @@ export var ChatAIAgentOption = function ChatAIAgentOption(_ref) {
48
48
  }, undefined, agent.is_favorite);
49
49
  };
50
50
  return /*#__PURE__*/_jsxs(SCCAIAOWrapper, {
51
+ $index: index,
51
52
  isSelected: isSelected,
52
53
  onClick: handleClick,
53
54
  isMaia: isMaia,
@@ -120,4 +121,4 @@ export var ChatAIAgentOption = function ChatAIAgentOption(_ref) {
120
121
  })]
121
122
  }, "agent-".concat(index));
122
123
  };
123
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJUb29sdGlwIiwiUGVuY2lsIiwiU3RhciIsInVzZVRyYW5zbGF0aW9uIiwidXNlUmVzaXplTGlzdGVuZXIiLCJTQ0NBSUFPV3JhcHBlciIsIlNDQ0FJQU9XcmFwcGVyRWRpdCIsIlNDQ0FJTUFnZW50TmFtZSIsIlNDQ0FJTVdyYXBwZXJBZ2VudE5hbWUiLCJ1c2VVc2VyIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsInVzZVRvZ2dsZUZhdm9yaXRlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkNoYXRBSUFnZW50T3B0aW9uIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiYWdlbnQiLCJpbmRleCIsImhhbmRsZVNlbGVjdEFnZW50IiwiaXNTZWxlY3RlZCIsImlzTWFpYSIsIm9uRmF2b3JpdGVUb2dnbGUiLCJzZXRJc0V4cGFuZGVkIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsInVzZXIiLCJhbXBsaXR1ZEV2ZW50IiwiYWdlbnRSZWYiLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJuYW1lIiwic2hvd1Rvb2x0aXAiLCJfdXNlVG9nZ2xlRmF2b3JpdGUiLCJ0b2dnbGVGYXZvcml0ZSIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY2FuRWRpdEN1c3RvbUFnZW50IiwiZWRpdCIsInR5cGUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiaGFuZGxlQ2xpY2siLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiaGFuZGxlVG9nZ2xlRmF2b3JpdGUiLCJpZCIsInVwZGF0ZWRBZ2VudCIsImFpQ2hhdEZhdm9yaXRlIiwib3B0aW9uIiwiaXNfZmF2b3JpdGUiLCJ1bmRlZmluZWQiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJlbW9qaSIsInRpdGxlIiwicmVmIiwiaGFzQ29ycnVwdGVkQWNjZXNzIiwiaGFzX2NvcnJ1cHRlZF9hY2Nlc3MiLCJzdHlsZSIsImRpc3BsYXkiLCJnYXAiLCJhbGlnbkl0ZW1zIiwiZSIsIm9wZW5Nb2RhbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJrbm93bGVkZ2UiLCJnZW5lcmFsIiwiaXNPcGVuIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsImNsYXNzTmFtZSIsImFsd2F5c1Zpc2libGUiLCJmaWxsIiwidmFyaWFudCIsImNvbmNhdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9jb21wb25lbnRzL0NoYXRBaUFnZW50T3B0aW9ucy9DaGF0QWlBZ2VudE9wdGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVJlZiwgTW91c2VFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgUGVuY2lsIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvUGVuY2lsJ1xuaW1wb3J0IHsgU3RhciB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXInXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQge1xuICBTQ0NBSUFPV3JhcHBlcixcbiAgU0NDQUlBT1dyYXBwZXJFZGl0LFxuICBTQ0NBSU1BZ2VudE5hbWUsXG4gIFNDQ0FJTVdyYXBwZXJBZ2VudE5hbWUsXG59IGZyb20gJy4vQ2hhdEFpQWdlbnRPcHRpb25zLnN0eWxlcydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IHVzZVRvZ2dsZUZhdm9yaXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MnXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlBZ2VudE9wdGlvbiA9ICh7XG4gIGFnZW50LFxuICBpbmRleCxcbiAgaGFuZGxlU2VsZWN0QWdlbnQsXG4gIGlzU2VsZWN0ZWQsXG4gIGlzTWFpYSxcbiAgb25GYXZvcml0ZVRvZ2dsZSxcbiAgc2V0SXNFeHBhbmRlZCxcbn06IHtcbiAgYWdlbnQ6IEFnZW50XG4gIGluZGV4OiBudW1iZXJcbiAgaGFuZGxlU2VsZWN0QWdlbnQ6IChhZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpc01haWE/OiBib29sZWFuXG4gIG9uRmF2b3JpdGVUb2dnbGU/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBzZXRJc0V4cGFuZGVkPzogKGlzRXhwYW5kZWQ6IGJvb2xlYW4pID0+IHZvaWRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2NoYXRfYWlfc2VjdGlvbiddKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIoYWdlbnRSZWYsIFthZ2VudC5uYW1lXSlcbiAgY29uc3QgeyB0b2dnbGVGYXZvcml0ZSB9ID0gdXNlVG9nZ2xlRmF2b3JpdGUoKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuRWRpdEN1c3RvbUFnZW50ID1cbiAgICB1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiZcbiAgICAhdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpICYmXG4gICAgYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGhhbmRsZVNlbGVjdEFnZW50KGFnZW50KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgIGFnZW50LmlkLFxuICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgaWYgKG9uRmF2b3JpdGVUb2dnbGUpIHtcbiAgICAgICAgICBvbkZhdm9yaXRlVG9nZ2xlKHVwZGF0ZWRBZ2VudClcbiAgICAgICAgfVxuICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScgfSlcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBhZ2VudC5pc19mYXZvcml0ZVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJQU9XcmFwcGVyIGtleT17YGFnZW50LSR7aW5kZXh9YH0gaXNTZWxlY3RlZD17aXNTZWxlY3RlZH0gb25DbGljaz17aGFuZGxlQ2xpY2t9IGlzTWFpYT17aXNNYWlhfT5cbiAgICAgIHthZ2VudC50eXBlID09PSAnY3VzdG9tJyAmJiA8c3Bhbj57YWdlbnQ/LmVtb2ppfTwvc3Bhbj59XG4gICAgICA8U0NDQUlNV3JhcHBlckFnZW50TmFtZT5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Nob3dUb29sdGlwID8gYWdlbnQ/Lm5hbWUgOiAnJ30+XG4gICAgICAgICAgPFNDQ0FJTUFnZW50TmFtZSByZWY9e2FnZW50UmVmfSBpc1NlbGVjdGVkPXtpc1NlbGVjdGVkfSBoYXNDb3JydXB0ZWRBY2Nlc3M9eyEhYWdlbnQ/Lmhhc19jb3JydXB0ZWRfYWNjZXNzfT5cbiAgICAgICAgICAgIHthZ2VudD8ubmFtZX1cbiAgICAgICAgICA8L1NDQ0FJTUFnZW50TmFtZT5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiAnNHB4JywgYWxpZ25JdGVtczogJ2NlbnRlcicgfX0+XG4gICAgICAgICAge2NhbkVkaXRDdXN0b21BZ2VudCAmJiAoXG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnYWdlbnRzLmVkaXQnKX0+XG4gICAgICAgICAgICAgIDxTQ0NBSUFPV3JhcHBlckVkaXRcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZD8uKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMub3Blbk1vZGFsLCB7IG9wdGlvbjogJ2VkaXRfYWdlbnQnIH0pXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtub3dsZWRnZTogYWdlbnQ/Lmtub3dsZWRnZSB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZ2VudC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFnZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFBlbmNpbCB3aWR0aD17MjB9IGhlaWdodD17MjB9IGNvbG9yPVwiI2E2YTZhNlwiIGNsYXNzTmFtZT1cInBlbmNpbC1pY29uXCIgLz5cbiAgICAgICAgICAgICAgPC9TQ0NBSUFPV3JhcHBlckVkaXQ+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IXZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KSAmJiAoXG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YWdlbnQ/LmlzX2Zhdm9yaXRlID8gdCgnYWdlbnRzLnJlbW92ZUZhdm9yaXRlJykgOiB0KCdhZ2VudHMuYWRkRmF2b3JpdGUnKX0+XG4gICAgICAgICAgICAgIDxTQ0NBSUFPV3JhcHBlckVkaXQgYWx3YXlzVmlzaWJsZT17YWdlbnQ/LmlzX2Zhdm9yaXRlfSBvbkNsaWNrPXtoYW5kbGVUb2dnbGVGYXZvcml0ZX0+XG4gICAgICAgICAgICAgICAgPFN0YXJcbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsyMH1cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17MjB9XG4gICAgICAgICAgICAgICAgICBjb2xvcj17YWdlbnQ/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJyNhNmE2YTYnfVxuICAgICAgICAgICAgICAgICAgZmlsbD17YWdlbnQ/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJ25vbmUnfVxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YWdlbnQ/LmlzX2Zhdm9yaXRlID8gJycgOiAnc3Rhci1mYXZvcml0ZS1pY29uJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NDQ0FJQU9XcmFwcGVyRWRpdD5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvU0NDQUlNV3JhcHBlckFnZW50TmFtZT5cbiAgICA8L1NDQ0FJQU9XcmFwcGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE1BQU0sUUFBb0IsT0FBTztBQUMxQyxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsSUFBSSxRQUFRLHVDQUF1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
124
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJUb29sdGlwIiwiUGVuY2lsIiwiU3RhciIsInVzZVRyYW5zbGF0aW9uIiwidXNlUmVzaXplTGlzdGVuZXIiLCJTQ0NBSUFPV3JhcHBlciIsIlNDQ0FJQU9XcmFwcGVyRWRpdCIsIlNDQ0FJTUFnZW50TmFtZSIsIlNDQ0FJTVdyYXBwZXJBZ2VudE5hbWUiLCJ1c2VVc2VyIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsInVzZVRvZ2dsZUZhdm9yaXRlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkNoYXRBSUFnZW50T3B0aW9uIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiYWdlbnQiLCJpbmRleCIsImhhbmRsZVNlbGVjdEFnZW50IiwiaXNTZWxlY3RlZCIsImlzTWFpYSIsIm9uRmF2b3JpdGVUb2dnbGUiLCJzZXRJc0V4cGFuZGVkIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsInVzZXIiLCJhbXBsaXR1ZEV2ZW50IiwiYWdlbnRSZWYiLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJuYW1lIiwic2hvd1Rvb2x0aXAiLCJfdXNlVG9nZ2xlRmF2b3JpdGUiLCJ0b2dnbGVGYXZvcml0ZSIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY2FuRWRpdEN1c3RvbUFnZW50IiwiZWRpdCIsInR5cGUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiaGFuZGxlQ2xpY2siLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiaGFuZGxlVG9nZ2xlRmF2b3JpdGUiLCJpZCIsInVwZGF0ZWRBZ2VudCIsImFpQ2hhdEZhdm9yaXRlIiwib3B0aW9uIiwiaXNfZmF2b3JpdGUiLCJ1bmRlZmluZWQiLCIkaW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJlbW9qaSIsInRpdGxlIiwicmVmIiwiaGFzQ29ycnVwdGVkQWNjZXNzIiwiaGFzX2NvcnJ1cHRlZF9hY2Nlc3MiLCJzdHlsZSIsImRpc3BsYXkiLCJnYXAiLCJhbGlnbkl0ZW1zIiwiZSIsIm9wZW5Nb2RhbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJrbm93bGVkZ2UiLCJnZW5lcmFsIiwiaXNPcGVuIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsImNsYXNzTmFtZSIsImFsd2F5c1Zpc2libGUiLCJmaWxsIiwidmFyaWFudCIsImNvbmNhdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9jb21wb25lbnRzL0NoYXRBaUFnZW50T3B0aW9ucy9DaGF0QWlBZ2VudE9wdGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVJlZiwgTW91c2VFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgUGVuY2lsIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvUGVuY2lsJ1xuaW1wb3J0IHsgU3RhciB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXInXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQge1xuICBTQ0NBSUFPV3JhcHBlcixcbiAgU0NDQUlBT1dyYXBwZXJFZGl0LFxuICBTQ0NBSU1BZ2VudE5hbWUsXG4gIFNDQ0FJTVdyYXBwZXJBZ2VudE5hbWUsXG59IGZyb20gJy4vQ2hhdEFpQWdlbnRPcHRpb25zLnN0eWxlcydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IHVzZVRvZ2dsZUZhdm9yaXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MnXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlBZ2VudE9wdGlvbiA9ICh7XG4gIGFnZW50LFxuICBpbmRleCxcbiAgaGFuZGxlU2VsZWN0QWdlbnQsXG4gIGlzU2VsZWN0ZWQsXG4gIGlzTWFpYSxcbiAgb25GYXZvcml0ZVRvZ2dsZSxcbiAgc2V0SXNFeHBhbmRlZCxcbn06IHtcbiAgYWdlbnQ6IEFnZW50XG4gIGluZGV4OiBudW1iZXJcbiAgaGFuZGxlU2VsZWN0QWdlbnQ6IChhZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpc01haWE/OiBib29sZWFuXG4gIG9uRmF2b3JpdGVUb2dnbGU/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBzZXRJc0V4cGFuZGVkPzogKGlzRXhwYW5kZWQ6IGJvb2xlYW4pID0+IHZvaWRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2NoYXRfYWlfc2VjdGlvbiddKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIoYWdlbnRSZWYsIFthZ2VudC5uYW1lXSlcbiAgY29uc3QgeyB0b2dnbGVGYXZvcml0ZSB9ID0gdXNlVG9nZ2xlRmF2b3JpdGUoKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuRWRpdEN1c3RvbUFnZW50ID1cbiAgICB1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiZcbiAgICAhdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpICYmXG4gICAgYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGhhbmRsZVNlbGVjdEFnZW50KGFnZW50KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgIGFnZW50LmlkLFxuICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgaWYgKG9uRmF2b3JpdGVUb2dnbGUpIHtcbiAgICAgICAgICBvbkZhdm9yaXRlVG9nZ2xlKHVwZGF0ZWRBZ2VudClcbiAgICAgICAgfVxuICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScgfSlcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBhZ2VudC5pc19mYXZvcml0ZVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJQU9XcmFwcGVyIGtleT17YGFnZW50LSR7aW5kZXh9YH0gJGluZGV4PXtpbmRleH0gaXNTZWxlY3RlZD17aXNTZWxlY3RlZH0gb25DbGljaz17aGFuZGxlQ2xpY2t9IGlzTWFpYT17aXNNYWlhfT5cbiAgICAgIHthZ2VudC50eXBlID09PSAnY3VzdG9tJyAmJiA8c3Bhbj57YWdlbnQ/LmVtb2ppfTwvc3Bhbj59XG4gICAgICA8U0NDQUlNV3JhcHBlckFnZW50TmFtZT5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Nob3dUb29sdGlwID8gYWdlbnQ/Lm5hbWUgOiAnJ30+XG4gICAgICAgICAgPFNDQ0FJTUFnZW50TmFtZSByZWY9e2FnZW50UmVmfSBpc1NlbGVjdGVkPXtpc1NlbGVjdGVkfSBoYXNDb3JydXB0ZWRBY2Nlc3M9eyEhYWdlbnQ/Lmhhc19jb3JydXB0ZWRfYWNjZXNzfT5cbiAgICAgICAgICAgIHthZ2VudD8ubmFtZX1cbiAgICAgICAgICA8L1NDQ0FJTUFnZW50TmFtZT5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiAnNHB4JywgYWxpZ25JdGVtczogJ2NlbnRlcicgfX0+XG4gICAgICAgICAge2NhbkVkaXRDdXN0b21BZ2VudCAmJiAoXG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnYWdlbnRzLmVkaXQnKX0+XG4gICAgICAgICAgICAgIDxTQ0NBSUFPV3JhcHBlckVkaXRcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZD8uKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMub3Blbk1vZGFsLCB7IG9wdGlvbjogJ2VkaXRfYWdlbnQnIH0pXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtub3dsZWRnZTogYWdlbnQ/Lmtub3dsZWRnZSB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZ2VudC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFnZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFBlbmNpbCB3aWR0aD17MjB9IGhlaWdodD17MjB9IGNvbG9yPVwiI2E2YTZhNlwiIGNsYXNzTmFtZT1cInBlbmNpbC1pY29uXCIgLz5cbiAgICAgICAgICAgICAgPC9TQ0NBSUFPV3JhcHBlckVkaXQ+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IXZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KSAmJiAoXG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YWdlbnQ/LmlzX2Zhdm9yaXRlID8gdCgnYWdlbnRzLnJlbW92ZUZhdm9yaXRlJykgOiB0KCdhZ2VudHMuYWRkRmF2b3JpdGUnKX0+XG4gICAgICAgICAgICAgIDxTQ0NBSUFPV3JhcHBlckVkaXQgYWx3YXlzVmlzaWJsZT17YWdlbnQ/LmlzX2Zhdm9yaXRlfSBvbkNsaWNrPXtoYW5kbGVUb2dnbGVGYXZvcml0ZX0+XG4gICAgICAgICAgICAgICAgPFN0YXJcbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsyMH1cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17MjB9XG4gICAgICAgICAgICAgICAgICBjb2xvcj17YWdlbnQ/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJyNhNmE2YTYnfVxuICAgICAgICAgICAgICAgICAgZmlsbD17YWdlbnQ/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJ25vbmUnfVxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YWdlbnQ/LmlzX2Zhdm9yaXRlID8gJycgOiAnc3Rhci1mYXZvcml0ZS1pY29uJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NDQ0FJQU9XcmFwcGVyRWRpdD5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvU0NDQUlNV3JhcHBlckFnZW50TmFtZT5cbiAgICA8L1NDQ0FJQU9XcmFwcGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE1BQU0sUUFBb0IsT0FBTztBQUMxQyxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFD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