@projectcor/maia-components 2.11.68 → 2.11.69-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 (51) hide show
  1. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +7 -3
  2. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +4 -2
  3. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
  4. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
  5. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +26 -6
  6. package/lib/components/atoms/icons/SkillIcon.js +30 -0
  7. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  8. package/lib/components/atoms/icons/index.js +3 -1
  9. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +14 -1
  10. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +35 -3
  11. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -3
  12. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  13. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  14. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  15. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  16. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
  17. package/lib/components/molecules/Sidebar/Sidebar.js +16 -4
  18. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
  19. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  20. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  21. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
  22. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  23. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  24. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
  25. package/lib/constants/config.js +4 -1
  26. package/lib/constants/permissions/index.js +2 -2
  27. package/lib/constants/permissions/utils.js +4 -1
  28. package/lib/hooks/useChatMessages/useChatMessages.js +4 -2
  29. package/lib/hooks/useContextMentions.js +60 -15
  30. package/lib/hooks/useEntitySearch.js +294 -108
  31. package/lib/hooks/useMentionAllowedTypes.js +45 -10
  32. package/lib/hooks/useMentionPopover.js +54 -48
  33. package/lib/lang/br/index.js +54 -3
  34. package/lib/lang/en/index.js +54 -3
  35. package/lib/lang/es/index.js +54 -3
  36. package/lib/lang/fr/index.js +54 -3
  37. package/lib/services/maia/Agents/getAgents.js +10 -8
  38. package/lib/services/maia/Chats/getChatMessages.js +4 -22
  39. package/lib/services/maia/Skills/createSkill.js +39 -0
  40. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  41. package/lib/services/maia/Skills/generateSkill.js +41 -0
  42. package/lib/services/maia/Skills/getSkills.js +90 -0
  43. package/lib/services/maia/Skills/updateSkill.js +39 -0
  44. package/lib/types/contextMention.js +1 -1
  45. package/lib/types/skill.js +2 -0
  46. package/lib/utils/contextMentionIcons.js +29 -1
  47. package/lib/utils/contextMentionTriggers.js +53 -0
  48. package/lib/utils/corConnectorMentionTypes.js +37 -0
  49. package/lib/utils/normalizeAgentConnectors.js +32 -0
  50. package/lib/utils/renderContextMentions.js +9 -4
  51. 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';
@@ -153,6 +156,13 @@ export var ChatAIModal = function ChatAIModal(_ref) {
153
156
  updateAgentFavorite = _useGetAgents.updateAgentFavorite,
154
157
  selectFirstAgent = _useGetAgents.selectFirstAgent,
155
158
  sortAgentsList = _useGetAgents.sortAgentsList;
159
+ var _useGetSkills = useGetSkills(),
160
+ skills = _useGetSkills.skills,
161
+ loadingSkills = _useGetSkills.loading,
162
+ handleGetSkills = _useGetSkills.handleGetSkills,
163
+ addSkill = _useGetSkills.addSkill,
164
+ updateSkillInList = _useGetSkills.updateSkillInList,
165
+ removeSkill = _useGetSkills.removeSkill;
156
166
  var isMAIA = validateIsMaia(agent);
157
167
  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;
158
168
  var computedCurrentOption = useMemo(function () {
@@ -163,6 +173,9 @@ export var ChatAIModal = function ChatAIModal(_ref) {
163
173
  if (currentOption === options.myAgents && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
164
174
  return options.myAgents;
165
175
  }
176
+ if (currentOption === options.mySkills && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
177
+ return options.mySkills;
178
+ }
166
179
  if (isGlobalSpecialist && !isMaiaker && currentOption === options.home) {
167
180
  return options.chat;
168
181
  }
@@ -180,6 +193,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
180
193
  return isMAIA && (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' && isMaiakerAgent(agent);
181
194
  }, [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]);
182
195
  var sidebarAgentsNavActive = useMemo(function () {
196
+ if (computedCurrentOption === options.mySkills) return 'mySkills';
183
197
  if (computedCurrentOption === options.myAgents) return 'myAgents';
184
198
  if (isMaiakerAgentSelected) return 'maiaker';
185
199
  return null;
@@ -534,6 +548,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
534
548
  };
535
549
  }, [selectAgent, setClient, setProject, setTask]);
536
550
  var showNewChat = computedCurrentOption !== options.chat;
551
+ var hideHeaderAgentSelector = computedCurrentOption === options.myAgents || computedCurrentOption === options.mySkills;
537
552
  var isMyAgentsSection = computedCurrentOption === options.myAgents;
538
553
  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');
539
554
  var handleOpenMarketplace = useCallback(function () {
@@ -543,6 +558,14 @@ export var ChatAIModal = function ChatAIModal(_ref) {
543
558
  clearAgent();
544
559
  setCurrentOption(options.myAgents);
545
560
  }, [clearAgent]);
561
+ var handleOpenSkills = useCallback(function () {
562
+ if (!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
563
+ return;
564
+ }
565
+ setHasError(false);
566
+ setCurrentOption(options.mySkills);
567
+ handleGetSkills();
568
+ }, [handleGetSkills]);
546
569
  var handleGoToMaiaker = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
547
570
  var maiakerAgent, response, data, _t;
548
571
  return _regeneratorRuntime.wrap(function (_context2) {
@@ -618,7 +641,8 @@ export var ChatAIModal = function ChatAIModal(_ref) {
618
641
  handleSetRefetchChats: setRefetchChats,
619
642
  hasError: sidebarHasError,
620
643
  resetSelectedChatRef: resetSelectedChatRef,
621
- agentsNavActive: sidebarAgentsNavActive
644
+ agentsNavActive: sidebarAgentsNavActive,
645
+ handleOpenSkills: handleOpenSkills
622
646
  }) : null, /*#__PURE__*/_jsxs(SCCAIMContent, {
623
647
  expanded: expanded,
624
648
  floating: isFloating,
@@ -640,6 +664,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
640
664
  onAgentUpdate: updateAgentFavorite,
641
665
  loadMoreAgents: loadMoreAgents,
642
666
  sortAgentsList: sortAgentsList,
667
+ hideAgentSelector: hideHeaderAgentSelector,
643
668
  isMyAgentsSection: isMyAgentsSection,
644
669
  isMaiakerSection: isMaiakerCreatorHome,
645
670
  showBackButton: showBackButton,
@@ -669,6 +694,9 @@ export var ChatAIModal = function ChatAIModal(_ref) {
669
694
  loadingMoreAgents: loadingMore,
670
695
  onLoadMoreAgents: loadMoreAgents,
671
696
  onGoToMaiaker: handleGoToMaiaker,
697
+ skills: skills,
698
+ loadingSkills: loadingSkills,
699
+ onDeleteSkill: removeSkill,
672
700
  onSearchAgents: searchCustomAgents,
673
701
  searchLoadingAgents: searchLoading,
674
702
  agentError: agentError
@@ -709,7 +737,11 @@ export var ChatAIModal = function ChatAIModal(_ref) {
709
737
  removeAgent: removeAgent,
710
738
  updateAgentFavorite: updateAgentFavorite,
711
739
  selectFirstAgent: selectFirstAgent
712
- }), /*#__PURE__*/_jsx(Snackbar, {})]
740
+ }), userHasPermissions && /*#__PURE__*/_jsx(AbmSkillModal, {
741
+ addSkill: addSkill,
742
+ updateSkillInList: updateSkillInList,
743
+ removeSkill: removeSkill
744
+ }), userHasPermissions && /*#__PURE__*/_jsx(AbmSkillGenerateModal, {}), /*#__PURE__*/_jsx(Snackbar, {})]
713
745
  }), selector);
714
746
  };
715
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkNoYXRBSUNvbnRlbnQiLCJidWlsZEhhbmRsZXJzIiwib3B0aW9ucyIsIlNpZGViYXIiLCJ1c2VHZXRBZ2VudHMiLCJ1c2VHbG9iYWxDb250ZXh0IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJTbmFja2JhciIsIlByb2plY3RTdW1tYXJ5Q29udGVudCIsIkFibUFnZW50TW9kYWwiLCJTRUNUSU9OUyIsIlNDQ0FJTUNvbnRlbnQiLCJTQ0NBSU1Db250ZW50V3JhcHBlciIsIlNDQ0FJTVdyYXBwZXIiLCJnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFpYWtlckFnZW50IiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiSURfTU9EQUxfQ0hBVF9BR0VOVCIsInZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlIiwic2VjdGlvbiIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJDaGF0QUlNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl91c2VyJHBlcm1pc3Npb25zMiIsIl91c2VyJHBlcm1pc3Npb25zMyIsIl9hZ2VudHMkZGF0YSIsImhhbmRsZUNsb3NlIiwidXNlciIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJoYW5kbGVDbG9zZU1vZGFsIiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJfdXNlU3RhdGUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNldFNlbmRNZXNzYWdlRnVuY3Rpb24iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiaXNTdHJlYW1pbmciLCJzZXRJc1N0cmVhbWluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJpc1dyaXRpbmciLCJzZXRJc1dyaXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwicmVmZXRjaENoYXRzIiwic2V0UmVmZXRjaENoYXRzIiwiX3VzZVN0YXRlMTUiLCJob21lIiwiX3VzZVN0YXRlMTYiLCJjdXJyZW50T3B0aW9uIiwic2V0Q3VycmVudE9wdGlvbiIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiaGFuZGxlcnMiLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwic2lkZWJhckhhc0Vycm9yIiwic2V0U2lkZWJhckhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJsYW5nIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50IiwiY2xlYXJBZ2VudCIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJzZWFyY2hMb2FkaW5nIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsImlzTUFJQSIsInVzZXJIYXNQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY3JlYXRlIiwiZWRpdCIsImNvbXB1dGVkQ3VycmVudE9wdGlvbiIsImlzR2xvYmFsU3BlY2lhbGlzdCIsImVudGl0eSIsImlzUHJvamVjdFNwZWNpYWxpc3QiLCJpc0NsaWVudFNwZWNpYWxpc3QiLCJpc01haWFrZXIiLCJteUFnZW50cyIsImNoYXQiLCJzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yIiwic2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yIiwicHJvamVjdFNlbGVjdG9yIiwiY2xpZW50U2VsZWN0b3IiLCJuYW1lIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInR5cGUiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjEiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkiLCJmYXFUaXRsZSIsInRyaW0iLCJfdXNlU3RhdGUyMiIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiZHJhZ1Bvc2l0aW9uIiwic2V0RHJhZ1Bvc2l0aW9uIiwiX3VzZUZsb2F0aW5nUGFuZWxEcmFnIiwidGlsdE1vdGlvbiIsInN0YXJ0UG9pbnRlclRyYWNraW5nIiwic2FtcGxlUG9pbnRlck1vdmUiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJkcmFnU3RhdGVSZWYiLCJjbGFtcERyYWdQb3NpdGlvbiIsIngiLCJ5IiwiY29udGVudFdyYXBwZXIiLCJjdXJyZW50IiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsInJlY3QiLCJpbml0aWFsUG9zaXRpb24iLCJsZWZ0IiwidG9wIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiY29udGV4dERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibGVuZ3RoIiwiYmFubmVyRmFxQXV0b1NlbnRSZWYiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkyIiwiZW50aXR5UmVhZHkiLCJCb29sZWFuIiwiaWQiLCJ1bmRlZmluZWQiLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJmaW5kIiwiYWdlbnRJdGVtIiwiYWdlbnRJZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsImhhbmRsZVJlc2V0Q2hhdCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsInN0b3AiLCJoYW5kbGVCYWNrIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwiZGV0YWlsIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblN5bmNFZGl0ZWRBZ2VudCIsIl9yZWY0Iiwib3BlbkNoYXRWaWV3Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9yZWY1IiwidGFzayIsInNob3dOZXdDaGF0IiwiaXNNeUFnZW50c1NlY3Rpb24iLCJzaG93QmFja0J1dHRvbiIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwiYSIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImFicnVwdCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaXNNYWlha2VyQ3JlYXRvckhvbWUiLCJtb2RhbFBhbmVsIiwiY2hpbGRyZW4iLCJvbkdvVG9DaGF0Iiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiYWdlbnRzTmF2QWN0aXZlIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaXNNYWlha2VyU2VjdGlvbiIsIm9uQmFjayIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25TZWFyY2hBZ2VudHMiLCJzZWFyY2hMb2FkaW5nQWdlbnRzIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwic2hvd0ZhcXMiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsInRpbHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7XG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgQ2hhdEFJTW9kYWxIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXInXG5pbXBvcnQgeyBTbmFja2JhciB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9TbmFja0Jhci9TbmFja2JhcidcbmltcG9ydCB7IFByb2plY3RTdW1tYXJ5Q29udGVudCB9IGZyb20gJy4uL1Byb2plY3RTdW1tYXJ5Q29udGVudCdcbmltcG9ydCB7IEFibUFnZW50TW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7IGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCwgTWFpYUNoYXRNb2RhbExheW91dE1vZGUgfSBmcm9tICcuL2xheW91dCdcbmltcG9ydCB7IEZsb2F0aW5nUGFuZWxNb3Rpb24sIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCB9IGZyb20gJy4vZmxvYXRpbmdQYW5lbE1vdGlvbidcbmltcG9ydCB7IENoYXRBaU1vZGFsRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsRm9vdGVyJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IGlzTWFpYWtlckFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmNvbnN0IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlID0gKHNlY3Rpb246IHN0cmluZykgPT4ge1xuICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8IHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAoKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50JyB8fCBzZWN0aW9uID09PSAndGFzaycpICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoeyBoYW5kbGVDbG9zZSB9OiBDaGF0QUlNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXNlRmFxc1N0b3JlLmdldFN0YXRlKCkuY2xlYXJGYXFzKClcbiAgICBoYW5kbGVDbG9zZT8uKClcbiAgfSwgW2hhbmRsZUNsb3NlXSlcbiAgY29uc3QgW3VzZXJJbml0aWFsTWVzc2FnZSwgc2V0VXNlckluaXRpYWxNZXNzYWdlXSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBbcmVmZXRjaENoYXRzLCBzZXRSZWZldGNoQ2hhdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50T3B0aW9uLCBzZXRDdXJyZW50T3B0aW9uXSA9IHVzZVN0YXRlKG9wdGlvbnMuaG9tZSlcbiAgY29uc3QgW2hhc0Vycm9yLCBzZXRIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuXG4gIGNvbnN0IHVzZXJIYXNQZXJtaXNzaW9ucyA9XG4gICAgKHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmNyZWF0ZSB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZWRpdCB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZGVsZXRlKSAmJlxuICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgY29uc3QgY29tcHV0ZWRDdXJyZW50T3B0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaXNHbG9iYWxTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnXG4gICAgY29uc3QgaXNQcm9qZWN0U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT0gbnVsbClcbiAgICBjb25zdCBpc0NsaWVudFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCdcbiAgICBjb25zdCBpc01haWFrZXIgPSBpc01BSUEgJiYgaXNNYWlha2VyQWdlbnQoYWdlbnQpXG5cbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICB9XG5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jaGF0XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc1Byb2plY3RTcGVjaWFsaXN0ICYmICFwcm9qZWN0XG4gICAgY29uc3Qgc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzQ2xpZW50U3BlY2lhbGlzdCAmJiAhY2xpZW50XG5cbiAgICBpZiAoc2hvdWxkU2hvd1Byb2plY3RTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucHJvamVjdFNlbGVjdG9yXG4gICAgfVxuICAgIGlmIChzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNsaWVudFNlbGVjdG9yXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50T3B0aW9uXG4gIH0sIFtjdXJyZW50T3B0aW9uLCBwcm9qZWN0LCBjbGllbnQsIGlzTUFJQSwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/Lm5hbWVdKVxuXG4gIGNvbnN0IGlzTWFpYWtlckFnZW50U2VsZWN0ZWQgPSB1c2VNZW1vKFxuICAgICgpID0+IGlzTUFJQSAmJiBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJiBpc01haWFrZXJBZ2VudChhZ2VudCksXG4gICAgW2lzTUFJQSwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/LnR5cGUsIGFnZW50Py5uYW1lXVxuICApXG5cbiAgY29uc3Qgc2lkZWJhckFnZW50c05hdkFjdGl2ZSA9IHVzZU1lbW8oKCk6ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCBudWxsID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzKSByZXR1cm4gJ215QWdlbnRzJ1xuICAgIGlmIChpc01haWFrZXJBZ2VudFNlbGVjdGVkKSByZXR1cm4gJ21haWFrZXInXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZF0pXG5cbiAgLyogUmVhY3RpdmFyIGNvbiBsYSBmaWxhIOKAnE1pcyBhZ2VudGVz4oCdIGVuIFNpZGViYXI6IG15QWdlbnRzQ291bnQgcHJvcFxuICBjb25zdCBzaWRlYmFyTXlBZ2VudHNDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBhZ2VudHMuZGF0YS5maWx0ZXIoXG4gICAgICBhID0+ICEoYS50eXBlID09PSAnY2xvbmUnICYmIGlzTWFpYWtlckFnZW50KGEpKVxuICAgIClcbiAgICAgIC5sZW5ndGhcbiAgfSwgW2FnZW50cy5kYXRhXSlcbiAgKi9cblxuICBjb25zdCBhZ2VudHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IHNlbGVjdG9yID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7SURfTU9EQUxfQ0hBVF9BR0VOVH1gKVxuXG4gIC8vIFRhc2sgcGFuZWwgeSBiYW5uZXIgZGUgcHJveWVjdG8gYWJyZW4gZW4gZmxvdGFudGUgcG9yIGRlZmF1bHQgKG5vIHRhcGFyIGVsIGNvbnRleHRvIGRldHLDoXMpLlxuICAvLyBFbCB1c3VhcmlvIHB1ZWRlIGNhbWJpYXIgYSBzaWRlYmFyL2Z1bGxzY3JlZW4gZGVzZGUgbG9zIGNvbnRyb2xlcyBkZWwgbW9kYWwuXG4gIGNvbnN0IFtsYXlvdXRNb2RlLCBzZXRMYXlvdXRNb2RlXSA9IHVzZVN0YXRlPE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlPigoKSA9PiB7XG4gICAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykgcmV0dXJuICdmbG9hdGluZydcbiAgICBpZiAoYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlPy50cmltKCkpIHJldHVybiAnZmxvYXRpbmcnXG4gICAgcmV0dXJuICdzaWRlYmFyJ1xuICB9KVxuICBjb25zdCBleHBhbmRlZCA9IGxheW91dE1vZGUgPT09ICdmdWxsc2NyZWVuJ1xuICBjb25zdCBpc0Zsb2F0aW5nID0gbGF5b3V0TW9kZSA9PT0gJ2Zsb2F0aW5nJ1xuICBjb25zdCBjb250ZW50V3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2RyYWdQb3NpdGlvbiwgc2V0RHJhZ1Bvc2l0aW9uXSA9IHVzZVN0YXRlPHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgdGlsdE1vdGlvbiwgc3RhcnRQb2ludGVyVHJhY2tpbmcsIHNhbXBsZVBvaW50ZXJNb3ZlLCBlbmRQb2ludGVyVHJhY2tpbmcgfSA9XG4gICAgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0KGlzRmxvYXRpbmcpXG4gIGNvbnN0IGRyYWdTdGF0ZVJlZiA9IHVzZVJlZjx7XG4gICAgcG9pbnRlcklkOiBudW1iZXJcbiAgICBvZmZzZXRYOiBudW1iZXJcbiAgICBvZmZzZXRZOiBudW1iZXJcbiAgfSB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgY2xhbXBEcmFnUG9zaXRpb24gPSB1c2VDYWxsYmFjaygoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICByZXR1cm4geyB4LCB5IH1cbiAgICB9XG5cbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGNvbnRlbnRXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3Qgb2Zmc2V0ID0gMTZcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJXaWR0aCAtIHdpZHRoIC0gb2Zmc2V0KVxuICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lckhlaWdodCAtIGhlaWdodCAtIG9mZnNldClcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBNYXRoLm1pbihNYXRoLm1heCh4LCBvZmZzZXQpLCBtYXhYKSxcbiAgICAgIHk6IE1hdGgubWluKE1hdGgubWF4KHksIG9mZnNldCksIG1heFkpLFxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiB7XG4gICAgICBpZiAocHJldikge1xuICAgICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24ocHJldi54LCBwcmV2LnkpXG4gICAgICB9XG4gICAgICBjb25zdCBwYWQgPSAxNlxuICAgICAgY29uc3QgeCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWRcbiAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gICAgfSlcbiAgfSwgW2xheW91dE1vZGUsIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnRW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGVuZFBvaW50ZXJUcmFja2luZygpXG4gICAgICBpZiAoZHJhZ1N0YXRlUmVmLmN1cnJlbnQ/LnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBkcmFnU3RhdGVSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICcnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICcnXG4gICAgfSxcbiAgICBbZW5kUG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRHJhZ01vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgZHJhZ1N0YXRlID0gZHJhZ1N0YXRlUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZHJhZ1N0YXRlIHx8IGRyYWdTdGF0ZS5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2FtcGxlUG9pbnRlck1vdmUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcblxuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uID0gY2xhbXBEcmFnUG9zaXRpb24oZXZlbnQuY2xpZW50WCAtIGRyYWdTdGF0ZS5vZmZzZXRYLCBldmVudC5jbGllbnRZIC0gZHJhZ1N0YXRlLm9mZnNldFkpXG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgICAgaWYgKHByZXYgJiYgcHJldi54ID09PSBuZXh0UG9zaXRpb24ueCAmJiBwcmV2LnkgPT09IG5leHRQb3NpdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dFBvc2l0aW9uXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBzYW1wbGVQb2ludGVyTW92ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgaWYgKGRyYWdQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBjb25zdCBwYWQgPSAxNlxuICAgIGNvbnN0IHggPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWQgOiBwYWRcbiAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICB9LCBbbGF5b3V0TW9kZSwgZHJhZ1Bvc2l0aW9uLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNGbG9hdGluZyB8fCBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgaWYgKHRhcmdldC5jbG9zZXN0KCdidXR0b24sIGEsIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbcm9sZT1cImJ1dHRvblwiXSwgW2RhdGEtbm8tZHJhZz1cInRydWVcIl0nKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID8/IGNsYW1wRHJhZ1Bvc2l0aW9uKHJlY3QubGVmdCwgcmVjdC50b3ApXG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WCA9IGV2ZW50LmNsaWVudFggLSBpbml0aWFsUG9zaXRpb24ueFxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gaW5pdGlhbFBvc2l0aW9uLnlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKGluaXRpYWxQb3NpdGlvbilcbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0ge1xuICAgICAgICBwb2ludGVySWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgb2Zmc2V0WDogcG9pbnRlck9mZnNldFgsXG4gICAgICAgIG9mZnNldFk6IHBvaW50ZXJPZmZzZXRZLFxuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZydcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdERyYWdnYWJsZSlcbiAgICAgIHN0YXJ0UG9pbnRlclRyYWNraW5nKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIGlzRmxvYXRpbmcsIHJlc29sdmVkRHJhZ1Bvc2l0aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IHN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2Uoe1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMgfHwgW10sXG4gICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4obWVudGlvbnMgJiYgbWVudGlvbnMubGVuZ3RoID4gMCA/IHsgbWVudGlvbnMgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4oc2NJZCA/IHsgc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZW50aXR5UmVhZHkgPSBzZWN0aW9uID09PSAncHJvamVjdCcgPyBCb29sZWFuKHByb2plY3Q/LmlkKSA6IHNlY3Rpb24gPT09ICdjbGllbnQnID8gQm9vbGVhbihjbGllbnQ/LmlkKSA6IHRydWVcblxuICAgIGlmICghYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlPy50cmltKCkgfHwgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCB8fCBsb2FkaW5nIHx8ICFhZ2VudD8uaWQgfHwgIWVudGl0eVJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHN0YXJ0Q2hhdChcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcVRpdGxlLFxuICAgICAgW10sXG4gICAgICBiYW5uZXJFbnRyeUZhcS5mYXFJZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmNvbnRleHREYXRhXG4gICAgKVxuICB9LCBbXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcUlkLFxuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZSxcbiAgICBiYW5uZXJFbnRyeUZhcT8uY29udGV4dERhdGEsXG4gICAgbG9hZGluZyxcbiAgICBhZ2VudD8uaWQsXG4gICAgYWdlbnQ/LmVudGl0eSxcbiAgICBwcm9qZWN0Py5pZCxcbiAgICBjbGllbnQ/LmlkLFxuICAgIHNlY3Rpb24sXG4gICAgc3RhcnRDaGF0LFxuICBdKVxuXG4gIGNvbnN0IGdvVG9DaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgICAgY29uc3Qgc2VsZWN0ZWRBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5pZCA9PT0gY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlUmVhZHkgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQsXG4gICAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICAgIHN0cmVhbWluZzogYm9vbGVhbixcbiAgICAgIHdyaXRpbmc6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIHNldFNlbmRNZXNzYWdlRnVuY3Rpb24oKCkgPT4gc2VuZE1lc3NhZ2UpXG4gICAgICBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uKCgpID0+IHN0b3BHZW5lcmF0aW9uKVxuICAgICAgc2V0SXNTdHJlYW1pbmcoc3RyZWFtaW5nKVxuICAgICAgc2V0SXNXcml0aW5nKHdyaXRpbmcpXG4gICAgfSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChzZW5kTWVzc2FnZUZ1bmN0aW9uICYmIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICAgIHNlbmRNZXNzYWdlRnVuY3Rpb24obWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzdGFydENoYXQsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgaGFuZGxlR29Ib21lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFNpIGVzdGFtb3MgZW4gdW5hIGNvbnZlcnNhY2nDs24geSB2YW1vcyBhIGhvbWUsIHJlc2V0ZWFyIGluaXRpYWxDaGF0SWQgeSBpbmNyZW1lbnRhciBuZXdDaGF0S2V5XG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbj8uKClcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIC8vIE5vIGJvcnJhciBlbCBjbGllbnRlIHNpIGVzIGFnZW50ZSBkZSBjbGllbnRlcyAoaWd1YWwgcXVlIGVsIHByb3llY3RvIHNlIG1hbnRpZW5lKVxuICAgICAgaWYgKGFnZW50Py5lbnRpdHkgIT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgICBpZiAoc2VjdGlvbiAhPT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAoIWFnZW50IHx8IGFnZW50Py5pc19kZWxldGVkIHx8IGFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8IGFnZW50Py5oYXNfbm90X2FjY2VzcyB8fCBhZ2VudD8ucHJvamVjdF9kZWxldGVkKSAmJlxuICAgICAgYWdlbnRzLmRhdGEubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRzLmRhdGFbMF0pXG4gICAgfVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW1xuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBvcHRpb25zLmNoYXQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgYWdlbnQsXG4gICAgYWdlbnRzLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRUYXNrLFxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24sXG4gICAgc2VjdGlvbixcbiAgXSlcblxuICBjb25zdCBoYW5kbGVSZXNldENoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbaGFuZGxlR29Ib21lXSlcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIiBkZWwgaGVhZGVyIChzb2xvIGFnZW50ZXMgY2xvbmUpOlxuICAvLyAtIENvbiBjb252ZXJzYWNpw7NuIGluaWNpYWRhOiBpbmljaWEgdW5hIG51ZXZhIGNvbnZlcnNhY2nDs24geSB2dWVsdmUgYWwgaG9tZSAodG9kYXMgbGFzIHNlY2Npb25lcykuXG4gIC8vIC0gRW4gZWwgaG9tZSAoRkFRcy9GVUEpOiB2dWVsdmUgYWwgc2VsZWN0b3IgZGUgcHJveWVjdG9zL2NsaWVudGVzIGxpbXBpYW5kbyBsYSBlbnRpdHkgc2VsZWNjaW9uYWRhLlxuICBjb25zdCBoYW5kbGVCYWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgaGFuZGxlUmVzZXRDaGF0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyBFbiBzZWN0aW9uICd0YXNrJyBwcmVzZXJ2YXIgcHJvamVjdC9jbGllbnQ7IGVuIG90cmFzIHNlY2Npb25lcywgaXIgYWwgc2VsZWN0b3IgbGltcGlhbmRvIHByb2plY3QvY2xpZW50XG4gICAgaWYgKHNlY3Rpb24gIT09ICd0YXNrJykge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgIH1cbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2VjdGlvbiwgaGFuZGxlUmVzZXRDaGF0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2tdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGhhbmRsZUdldEFnZW50cygpXG4gICAgfVxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBpc015QWdlbnRzU2VjdGlvbiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuICBjb25zdCBzaG93QmFja0J1dHRvbiA9XG4gICAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiZcbiAgICBhZ2VudD8uZW50aXR5ICE9PSAnZ2xvYmFsJyAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nICYmXG4gICAgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0IHx8IChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiBzZWN0aW9uICE9PSAndGFzaycpKVxuICBjb25zdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNsZWFyQWdlbnQoKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teUFnZW50cylcbiAgfSwgW2NsZWFyQWdlbnRdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJylcbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0VGFzaz8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFthZ2VudHMuZGF0YSwgaTE4bi5sYW5ndWFnZSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmVtb3ZlQWdlbnQoYWdlbnRJZClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IGFnZW50SWQpIHtcbiAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudChhZ2VudElkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50Py5pZCwgcmVtb3ZlQWdlbnQsIHNlbGVjdEZpcnN0QWdlbnRdXG4gIClcblxuICBjb25zdCBpc01haWFrZXJDcmVhdG9ySG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgIWlzRmxvYXRpbmcgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgIGFnZW50c05hdkFjdGl2ZT17c2lkZWJhckFnZW50c05hdkFjdGl2ZX1cbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFNDQ0FJTUNvbnRlbnQgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30+XG4gICAgICAgIDxDaGF0QUlNb2RhbEhlYWRlclxuICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgb25MYXlvdXRNb2RlQ2hhbmdlPXtzZXRMYXlvdXRNb2RlfVxuICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICBkcmFnZ2FibGU9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgICBvbkRyYWdFbmQ9e2hhbmRsZURyYWdFbmR9XG4gICAgICAgICAgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICBoYXNFcnJvcj17ISFhZ2VudEVycm9yfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgbG9hZGluZ01vcmU9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgIGhhc01vcmU9e2FnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICBoYW5kbGVSZXNldENoYXQ9e2hhbmRsZVJlc2V0Q2hhdH1cbiAgICAgICAgICBvbkFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgIGxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICBzb3J0QWdlbnRzTGlzdD17c29ydEFnZW50c0xpc3R9XG4gICAgICAgICAgaXNNeUFnZW50c1NlY3Rpb249e2lzTXlBZ2VudHNTZWN0aW9ufVxuICAgICAgICAgIGlzTWFpYWtlclNlY3Rpb249e2lzTWFpYWtlckNyZWF0b3JIb21lfVxuICAgICAgICAgIHNob3dCYWNrQnV0dG9uPXtzaG93QmFja0J1dHRvbn1cbiAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XG4gICAgICAgIC8+XG4gICAgICAgIHtoYXNFcnJvciA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBsb2FkaW5nQWdlbnRzPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgICBvblNlYXJjaEFnZW50cz17c2VhcmNoQ3VzdG9tQWdlbnRzfVxuICAgICAgICAgICAgc2VhcmNoTG9hZGluZ0FnZW50cz17c2VhcmNoTG9hZGluZ31cbiAgICAgICAgICAgIGFnZW50RXJyb3I9e2FnZW50RXJyb3J9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UHJvamVjdFN1bW1hcnlDb250ZW50IG9uUmVzdGFydFN1bW1hcnk9e2hhbmRsZXJzLmhvbWV9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHsoKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmICEhYWdlbnRzPy5kYXRhPy5sZW5ndGgpIHx8XG4gICAgICAgICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpICYmXG4gICAgICAgICAgIWlzTWFpYWtlckNyZWF0b3JIb21lICYmXG4gICAgICAgICAgIWhhc0Vycm9yICYmXG4gICAgICAgICAgIWxvYWRpbmcgJiZcbiAgICAgICAgICB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSAmJiAoXG4gICAgICAgICAgICA8Q2hhdEFpTW9kYWxGb290ZXJcbiAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZT17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGhhbmRsZVN0b3BHZW5lcmF0aW9uPXtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9ufVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIGlzV3JpdGluZz17aXNXcml0aW5nfVxuICAgICAgICAgICAgICBjaGF0SWQ9e2luaXRpYWxDaGF0SWR9XG4gICAgICAgICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgICAgICAgIHNob3dGYXFzPXtjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdH1cbiAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNQ29udGVudD5cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gKFxuICAgIDxTQ0NBSU1Db250ZW50V3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfSByZWY9e2NvbnRlbnRXcmFwcGVyUmVmfT5cbiAgICAgIHttb2RhbFBhbmVsfVxuICAgIDwvU0NDQUlNQ29udGVudFdyYXBwZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIHNlbGVjdG9yICYmXG4gICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgPFNDQ0FJTVdyYXBwZXJcbiAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICBkcmFnUG9zaXRpb249e3Jlc29sdmVkRHJhZ1Bvc2l0aW9ufVxuICAgICAgICBlbGV2YXRlZD17c2VjdGlvbiA9PT0gJ3Rhc2snfVxuICAgICAgPlxuICAgICAgICA8RmxvYXRpbmdQYW5lbE1vdGlvbiB0aWx0PXt0aWx0TW90aW9ufSBleHBhbmRlZD17ZXhwYW5kZWR9PlxuICAgICAgICAgIHtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgPC9GbG9hdGluZ1BhbmVsTW90aW9uPlxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtQWdlbnRNb2RhbFxuICAgICAgICAgICAgYWRkQWdlbnQ9e2FkZEFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnQ9e3VwZGF0ZUFnZW50fVxuICAgICAgICAgICAgcmVtb3ZlQWdlbnQ9e3JlbW92ZUFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIHNlbGVjdEZpcnN0QWdlbnQ9e3NlbGVjdEZpcnN0QWdlbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPFNuYWNrYmFyIC8+XG4gICAgICA8L1NDQ0FJTVdyYXBwZXI+LFxuICAgICAgc2VsZWN0b3JcbiAgICApXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUVFQSxXQUFXLEVBQ1hDLE9BQU8sRUFDUEMsUUFBUSxFQUNSQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsZUFBZSxRQUVWLE9BQU87QUFDZCxPQUFPQyxRQUFRLE1BQU0sV0FBVztBQUNoQyxPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLFNBQVMsUUFBUSx1QkFBdUI7QUFDakQsU0FBU0Msc0JBQXNCLFFBQVEsdUNBQXVDO0FBRTlFLFNBQVNDLGFBQWEsUUFBUSxrQkFBa0I7QUFDaEQsU0FBU0MsYUFBYSxFQUFFQyxPQUFPLFFBQVEsYUFBYTtBQUNwRCxTQUFTQyxPQUFPLFFBQVEsWUFBWTtBQUNwQyxTQUFTQyxZQUFZLFFBQVEseUNBQXlDO0FBQ3RFLFNBQVNDLGdCQUFnQixRQUFRLGlDQUFpQztBQUdsRSxTQUFTQyxpQkFBaUIsUUFBUSxrREFBa0Q7QUFDcEYsU0FBU0MsUUFBUSxRQUFRLG1DQUFtQztBQUM1RCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsYUFBYSxRQUFRLDZDQUE2QztBQUMzRSxTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNBQVNDLGFBQWEsRUFBRUMsb0JBQW9CLEVBQUVDLGFBQWEsUUFBUSxzQkFBc0I7QUFDekYsU0FBU0MsMkJBQTJCLFFBQWlDLFVBQVU7QUFDL0UsU0FBU0MsbUJBQW1CLEVBQUVDLHdCQUF3QixRQUFRLHVCQUF1QjtBQUNyRixTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsU0FBU0MsY0FBYyxRQUFRLHdDQUF3QztBQUN2RSxTQUFTQyxjQUFjLFFBQVEsaUNBQWlDO0FBS2hFLFNBQVNDLFlBQVksUUFBUSw2QkFBNkI7QUFDMUQsU0FBU0MsU0FBUyxRQUFRLCtCQUErQjtBQUN6RCxTQUFTQyxVQUFVLFFBQVEscUJBQXFCO0FBQ2hELFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUEsRUFBQUMsUUFBQSxJQUFBQyxTQUFBO0FBUTFELE9BQU8sSUFBTUMsbUJBQW1CLEdBQUcsK0JBQStCO0FBRWxFLElBQU1DLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQUlDLE9BQWUsRUFBSztFQUNuRCxJQUFJQSxPQUFPLEtBQUssUUFBUSxLQUFLQyxNQUFNLENBQUNDLHdDQUF3QyxJQUFJRCxNQUFNLENBQUNFLDJCQUEyQixDQUFDLEVBQUU7SUFDbkgsT0FBTyxJQUFJO0VBQ2I7RUFDQSxJQUFJLENBQUNILE9BQU8sS0FBSyxTQUFTLElBQUlBLE9BQU8sS0FBSyxRQUFRLElBQUlBLE9BQU8sS0FBSyxNQUFNLEtBQUtDLE1BQU0sQ0FBQ0UsMkJBQTJCLEVBQUU7SUFDL0csT0FBTyxJQUFJO0VBQ2I7RUFDQSxPQUFPLEtBQUs7QUFDZCxDQUFDO0FBRUQsT0FBTyxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQUMsSUFBQSxFQUEwQztFQUFBLElBQUFDLGlCQUFBLEVBQUFDLGtCQUFBLEVBQUFDLGtCQUFBLEVBQUFDLFlBQUE7RUFBQSxJQUFwQ0MsV0FBVyxHQUFBTCxJQUFBLENBQVhLLFdBQVc7RUFDdkMsSUFBTUMsSUFBSSxHQUFHL0MsT0FBTyxDQUFDLENBQUM7RUFDdEIsSUFBQWdELGVBQUEsR0FBaUJqRCxjQUFjLENBQUMsQ0FBQ2MsUUFBUSxDQUFDb0MsUUFBUSxDQUFDLENBQUM7SUFBNUNDLElBQUksR0FBQUYsZUFBQSxDQUFKRSxJQUFJO0VBQ1osSUFBTUMsYUFBYSxHQUFHeEIsUUFBUSxDQUFDLENBQUM7RUFFaEMsSUFBTXlCLGdCQUFnQixHQUFHN0QsV0FBVyxDQUFDLFlBQU07SUFDekNnQyxZQUFZLENBQUM4QixRQUFRLENBQUMsQ0FBQyxDQUFDQyxTQUFTLENBQUMsQ0FBQztJQUNuQ1IsV0FBVyxhQUFYQSxXQUFXLGVBQVhBLFdBQVcsQ0FBRyxDQUFDO0VBQ2pCLENBQUMsRUFBRSxDQUFDQSxXQUFXLENBQUMsQ0FBQztFQUNqQixJQUFBUyxTQUFBLEdBQW9EOUQsUUFBUSxDQVN6RDtNQUNEK0QsT0FBTyxFQUFFLEVBQUU7TUFDWEMsV0FBVyxFQUFFO0lBQ2YsQ0FBQyxDQUFDO0lBQUFDLFVBQUEsR0FBQUMsY0FBQSxDQUFBSixTQUFBO0lBWktLLGtCQUFrQixHQUFBRixVQUFBO0lBQUVHLHFCQUFxQixHQUFBSCxVQUFBO0VBYWhELElBQUFJLFVBQUEsR0FBMENyRSxRQUFRLENBQWdCLElBQUksQ0FBQztJQUFBc0UsVUFBQSxHQUFBSixjQUFBLENBQUFHLFVBQUE7SUFBaEVFLGFBQWEsR0FBQUQsVUFBQTtJQUFFRSxnQkFBZ0IsR0FBQUYsVUFBQTtFQUN0QyxJQUFBRyxVQUFBLEdBQW9DekUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUFBMEUsVUFBQSxHQUFBUixjQUFBLENBQUFPLFVBQUE7SUFBeENFLFVBQVUsR0FBQUQsVUFBQTtJQUFFRSxhQUFhLEdBQUFGLFVBQUE7RUFDaEMsSUFBQUcsVUFBQSxHQUFzRDdFLFFBQVEsQ0FXNUQsSUFBSSxDQUFDO0lBQUE4RSxVQUFBLEdBQUFaLGNBQUEsQ0FBQVcsVUFBQTtJQVhBRSxtQkFBbUIsR0FBQUQsVUFBQTtJQUFFRSxzQkFBc0IsR0FBQUYsVUFBQTtFQVlsRCxJQUFBRyxVQUFBLEdBQTREakYsUUFBUSxDQUFzQixJQUFJLENBQUM7SUFBQWtGLFVBQUEsR0FBQWhCLGNBQUEsQ0FBQWUsVUFBQTtJQUF4RkUsc0JBQXNCLEdBQUFELFVBQUE7SUFBRUUseUJBQXlCLEdBQUFGLFVBQUE7RUFDeEQsSUFBQUcsVUFBQSxHQUFzQ3JGLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXNGLFdBQUEsR0FBQXBCLGNBQUEsQ0FBQW1CLFVBQUE7SUFBOUNFLFdBQVcsR0FBQUQsV0FBQTtJQUFFRSxjQUFjLEdBQUFGLFdBQUE7RUFDbEMsSUFBQUcsV0FBQSxHQUFrQ3pGLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQTBGLFdBQUEsR0FBQXhCLGNBQUEsQ0FBQXVCLFdBQUE7SUFBMUNFLFNBQVMsR0FBQUQsV0FBQTtJQUFFRSxZQUFZLEdBQUFGLFdBQUE7RUFFOUIsSUFBQUcsV0FBQSxHQUF3QzdGLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQThGLFdBQUEsR0FBQTVCLGNBQUEsQ0FBQTJCLFdBQUE7SUFBaERFLFlBQVksR0FBQUQsV0FBQTtJQUFFRSxlQUFlLEdBQUFGLFdBQUE7RUFDcEMsSUFBQUcsV0FBQSxHQUEwQ2pHLFFBQVEsQ0FBQ1ksT0FBTyxDQUFDc0YsSUFBSSxDQUFDO0lBQUFDLFdBQUEsR0FBQWpDLGNBQUEsQ0FBQStCLFdBQUE7SUFBekRHLGFBQWEsR0FBQUQsV0FBQTtJQUFFRSxnQkFBZ0IsR0FBQUYsV0FBQTtFQUN0QyxJQUFBRyxXQUFBLEdBQWdDdEcsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBdUcsV0FBQSxHQUFBckMsY0FBQSxDQUFBb0MsV0FBQTtJQUF4Q0UsUUFBUSxHQUFBRCxXQUFBO0lBQUVFLFdBQVcsR0FBQUYsV0FBQTtFQUM1QixJQUFNRyxRQUFRLEdBQUczRyxPQUFPLENBQUM7SUFBQSxPQUFNWSxhQUFhLENBQUMwRixnQkFBZ0IsRUFBRUksV0FBVyxDQUFDO0VBQUEsR0FBRSxFQUFFLENBQUM7RUFDaEYsSUFBQUUsV0FBQSxHQUE4QzNHLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQTRHLFdBQUEsR0FBQTFDLGNBQUEsQ0FBQXlDLFdBQUE7SUFBdERFLGVBQWUsR0FBQUQsV0FBQTtJQUFFRSxrQkFBa0IsR0FBQUYsV0FBQTtFQUMxQyxJQUFNRyxvQkFBb0IsR0FBRzlHLE1BQU0sQ0FBc0IsSUFBSSxDQUFDO0VBQzlELElBQU0rRyxJQUFJLEdBQUd2RCxJQUFJLENBQUN3RCxRQUFRLEtBQUssSUFBSSxHQUFHLE9BQU8sR0FBR3hELElBQUksQ0FBQ3dELFFBQVE7RUFFN0Q1RyxNQUFNLENBQUM2RyxNQUFNLENBQUNGLElBQUksQ0FBQztFQUVuQixJQUFBRyxpQkFBQSxHQWNJcEcsZ0JBQWdCLENBQUMsQ0FBQztJQWJwQnFHLFdBQVcsR0FBQUQsaUJBQUEsQ0FBWEMsV0FBVztJQUNYQyxVQUFVLEdBQUFGLGlCQUFBLENBQVZFLFVBQVU7SUFDVjFFLE9BQU8sR0FBQXdFLGlCQUFBLENBQVB4RSxPQUFPO0lBQ1AyRSxLQUFLLEdBQUFILGlCQUFBLENBQUxHLEtBQUs7SUFDTEMsT0FBTyxHQUFBSixpQkFBQSxDQUFQSSxPQUFPO0lBQ1BDLE1BQU0sR0FBQUwsaUJBQUEsQ0FBTkssTUFBTTtJQUNOQyxlQUFlLEdBQUFOLGlCQUFBLENBQWZNLGVBQWU7SUFDZkMsaUJBQWlCLEdBQUFQLGlCQUFBLENBQWpCTyxpQkFBaUI7SUFDakJDLGVBQWUsR0FBQVIsaUJBQUEsQ0FBZlEsZUFBZTtJQUNmQyxTQUFTLEdBQUFULGlCQUFBLENBQVRTLFNBQVM7SUFDVEMsVUFBVSxHQUFBVixpQkFBQSxDQUFWVSxVQUFVO0lBQ1ZDLGNBQWMsR0FBQVgsaUJBQUEsQ0FBZFcsY0FBYztJQUNkQyxPQUFPLEdBQUFaLGlCQUFBLENBQVBZLE9BQU87O0VBR1Q7RUFDQSxJQUFNQyxhQUFhLEdBQUd2SCxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0VBRTdELElBQUF3SCxhQUFBLEdBZUluSCxZQUFZLENBQUM7TUFBRXNHLFdBQVcsRUFBWEEsV0FBVztNQUFFekUsT0FBTyxFQUFQQSxPQUFPO01BQUUyRSxLQUFLLEVBQUxBLEtBQUs7TUFBRVksWUFBWSxFQUFFeEIsUUFBUSxDQUFDUjtJQUFLLENBQUMsQ0FBQztJQWQ1RWlDLE1BQU0sR0FBQUYsYUFBQSxDQUFORSxNQUFNO0lBQ05DLE9BQU8sR0FBQUgsYUFBQSxDQUFQRyxPQUFPO0lBQ1BDLFdBQVcsR0FBQUosYUFBQSxDQUFYSSxXQUFXO0lBQ0pDLFVBQVUsR0FBQUwsYUFBQSxDQUFqQk0sS0FBSztJQUNMQyxlQUFlLEdBQUFQLGFBQUEsQ0FBZk8sZUFBZTtJQUNmQyxjQUFjLEdBQUFSLGFBQUEsQ0FBZFEsY0FBYztJQUNkQyxrQkFBa0IsR0FBQVQsYUFBQSxDQUFsQlMsa0JBQWtCO0lBQ2xCQyxhQUFhLEdBQUFWLGFBQUEsQ0FBYlUsYUFBYTtJQUNiQyxRQUFRLEdBQUFYLGFBQUEsQ0FBUlcsUUFBUTtJQUNSQyxXQUFXLEdBQUFaLGFBQUEsQ0FBWFksV0FBVztJQUNYQyxXQUFXLEdBQUFiLGFBQUEsQ0FBWGEsV0FBVztJQUNYQyxtQkFBbUIsR0FBQWQsYUFBQSxDQUFuQmMsbUJBQW1CO0lBQ25CQyxnQkFBZ0IsR0FBQWYsYUFBQSxDQUFoQmUsZ0JBQWdCO0lBQ2hCQyxjQUFjLEdBQUFoQixhQUFBLENBQWRnQixjQUFjO0VBR2hCLElBQU1DLE1BQU0sR0FBR3RILGNBQWMsQ0FBQzBGLEtBQWMsQ0FBQztFQUU3QyxJQUFNNkIsa0JBQWtCLEdBQ3RCLENBQUMsQ0FBQTdGLElBQUksYUFBSkEsSUFBSSxnQkFBQUwsaUJBQUEsR0FBSkssSUFBSSxDQUFFOEYsV0FBVyxjQUFBbkcsaUJBQUEsZ0JBQUFBLGlCQUFBLEdBQWpCQSxpQkFBQSxDQUFtQm9HLFNBQVMsY0FBQXBHLGlCQUFBLHVCQUE1QkEsaUJBQUEsQ0FBOEJxRyxNQUFNLE1BQ25DaEcsSUFBSSxhQUFKQSxJQUFJLGdCQUFBSixrQkFBQSxHQUFKSSxJQUFJLENBQUU4RixXQUFXLGNBQUFsRyxrQkFBQSxnQkFBQUEsa0JBQUEsR0FBakJBLGtCQUFBLENBQW1CbUcsU0FBUyxjQUFBbkcsa0JBQUEsdUJBQTVCQSxrQkFBQSxDQUE4QnFHLElBQUksTUFDbENqRyxJQUFJLGFBQUpBLElBQUksZ0JBQUFILGtCQUFBLEdBQUpHLElBQUksQ0FBRThGLFdBQVcsY0FBQWpHLGtCQUFBLGdCQUFBQSxrQkFBQSxHQUFqQkEsa0JBQUEsQ0FBbUJrRyxTQUFTLGNBQUFsRyxrQkFBQSx1QkFBNUJBLGtCQUFBLFVBQW9DLE1BQ3RDUCxNQUFNLENBQUNDLHdDQUF3QztFQUVqRCxJQUFNMkcscUJBQXFCLEdBQUd6SixPQUFPLENBQUMsWUFBTTtJQUMxQyxJQUFNMEosa0JBQWtCLEdBQUdQLE1BQU0sSUFBSSxDQUFBNUIsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVvQyxNQUFNLE1BQUssUUFBUTtJQUMvRCxJQUFNQyxtQkFBbUIsR0FBR1QsTUFBTSxLQUFLLENBQUE1QixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW9DLE1BQU0sTUFBSyxTQUFTLElBQUksQ0FBQXBDLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFb0MsTUFBTSxLQUFJLElBQUksQ0FBQztJQUM1RixJQUFNRSxrQkFBa0IsR0FBR1YsTUFBTSxJQUFJLENBQUE1QixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW9DLE1BQU0sTUFBSyxRQUFRO0lBQy9ELElBQU1HLFNBQVMsR0FBR1gsTUFBTSxJQUFJckgsY0FBYyxDQUFDeUYsS0FBSyxDQUFDO0lBRWpELElBQUlsQixhQUFhLEtBQUt4RixPQUFPLENBQUNrSixRQUFRLElBQUlsSCxNQUFNLENBQUNDLHdDQUF3QyxFQUFFO01BQ3pGLE9BQU9qQyxPQUFPLENBQUNrSixRQUFRO0lBQ3pCO0lBRUEsSUFBSUwsa0JBQWtCLElBQUksQ0FBQ0ksU0FBUyxJQUFJekQsYUFBYSxLQUFLeEYsT0FBTyxDQUFDc0YsSUFBSSxFQUFFO01BQ3RFLE9BQU90RixPQUFPLENBQUNtSixJQUFJO0lBQ3JCO0lBRUEsSUFBTUMseUJBQXlCLEdBQUc1RCxhQUFhLEtBQUt4RixPQUFPLENBQUNtSixJQUFJLElBQUlKLG1CQUFtQixJQUFJLENBQUNwQyxPQUFPO0lBQ25HLElBQU0wQyx3QkFBd0IsR0FBRzdELGFBQWEsS0FBS3hGLE9BQU8sQ0FBQ21KLElBQUksSUFBSUgsa0JBQWtCLElBQUksQ0FBQ3BDLE1BQU07SUFFaEcsSUFBSXdDLHlCQUF5QixFQUFFO01BQzdCLE9BQU9wSixPQUFPLENBQUNzSixlQUFlO0lBQ2hDO0lBQ0EsSUFBSUQsd0JBQXdCLEVBQUU7TUFDNUIsT0FBT3JKLE9BQU8sQ0FBQ3VKLGNBQWM7SUFDL0I7SUFDQSxPQUFPL0QsYUFBYTtFQUN0QixDQUFDLEVBQUUsQ0FBQ0EsYUFBYSxFQUFFbUIsT0FBTyxFQUFFQyxNQUFNLEVBQUUwQixNQUFNLEVBQUU1QixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW9DLE1BQU0sRUFBRXBDLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFOEMsSUFBSSxDQUFDLENBQUM7RUFFeEUsSUFBTUMsc0JBQXNCLEdBQUd0SyxPQUFPLENBQ3BDO0lBQUEsT0FBTW1KLE1BQU0sSUFBSSxDQUFBNUIsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVnRCxJQUFJLE1BQUssT0FBTyxJQUFJekksY0FBYyxDQUFDeUYsS0FBSyxDQUFDO0VBQUEsR0FDaEUsQ0FBQzRCLE1BQU0sRUFBRTVCLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFb0MsTUFBTSxFQUFFcEMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVnRCxJQUFJLEVBQUVoRCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRThDLElBQUksQ0FDbEQsQ0FBQztFQUVELElBQU1HLHNCQUFzQixHQUFHeEssT0FBTyxDQUFDLFlBQXFDO0lBQzFFLElBQUl5SixxQkFBcUIsS0FBSzVJLE9BQU8sQ0FBQ2tKLFFBQVEsRUFBRSxPQUFPLFVBQVU7SUFDakUsSUFBSU8sc0JBQXNCLEVBQUUsT0FBTyxTQUFTO0lBQzVDLE9BQU8sSUFBSTtFQUNiLENBQUMsRUFBRSxDQUFDYixxQkFBcUIsRUFBRWEsc0JBQXNCLENBQUMsQ0FBQzs7RUFFbkQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFFRSxJQUFNRyxnQkFBZ0IsR0FBR3ZLLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFFdEMsSUFBTXdLLFFBQVEsR0FBR0MsUUFBUSxDQUFDQyxhQUFhLEtBQUFDLE1BQUEsQ0FBS25JLG1CQUFtQixDQUFFLENBQUM7O0VBRWxFO0VBQ0E7RUFDQSxJQUFBb0ksV0FBQSxHQUFvQzdLLFFBQVEsQ0FBMEIsWUFBTTtNQUFBLElBQUE4SyxxQkFBQTtNQUMxRSxJQUFJbkksT0FBTyxLQUFLLE1BQU0sRUFBRSxPQUFPLFVBQVU7TUFDekMsSUFBSW1GLGNBQWMsYUFBZEEsY0FBYyxnQkFBQWdELHFCQUFBLEdBQWRoRCxjQUFjLENBQUVpRCxRQUFRLGNBQUFELHFCQUFBLGVBQXhCQSxxQkFBQSxDQUEwQkUsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLFVBQVU7TUFDdkQsT0FBTyxTQUFTO0lBQ2xCLENBQUMsQ0FBQztJQUFBQyxXQUFBLEdBQUEvRyxjQUFBLENBQUEyRyxXQUFBO0lBSktLLFVBQVUsR0FBQUQsV0FBQTtJQUFFRSxhQUFhLEdBQUFGLFdBQUE7RUFLaEMsSUFBTUcsUUFBUSxHQUFHRixVQUFVLEtBQUssWUFBWTtFQUM1QyxJQUFNRyxVQUFVLEdBQUdILFVBQVUsS0FBSyxVQUFVO0VBQzVDLElBQU1JLGlCQUFpQixHQUFHckwsTUFBTSxDQUFpQixJQUFJLENBQUM7RUFDdEQsSUFBQXNMLFdBQUEsR0FBd0N2TCxRQUFRLENBQWtDLElBQUksQ0FBQztJQUFBd0wsV0FBQSxHQUFBdEgsY0FBQSxDQUFBcUgsV0FBQTtJQUFoRkUsWUFBWSxHQUFBRCxXQUFBO0lBQUVFLGVBQWUsR0FBQUYsV0FBQTtFQUNwQyxJQUFBRyxxQkFBQSxHQUNFakssd0JBQXdCLENBQUMySixVQUFVLENBQUM7SUFEOUJPLFVBQVUsR0FBQUQscUJBQUEsQ0FBVkMsVUFBVTtJQUFFQyxvQkFBb0IsR0FBQUYscUJBQUEsQ0FBcEJFLG9CQUFvQjtJQUFFQyxpQkFBaUIsR0FBQUgscUJBQUEsQ0FBakJHLGlCQUFpQjtJQUFFQyxrQkFBa0IsR0FBQUoscUJBQUEsQ0FBbEJJLGtCQUFrQjtFQUUvRSxJQUFNQyxZQUFZLEdBQUcvTCxNQUFNLENBSWpCLElBQUksQ0FBQztFQUVmLElBQU1nTSxpQkFBaUIsR0FBR25NLFdBQVcsQ0FBQyxVQUFDb00sQ0FBUyxFQUFFQyxDQUFTLEVBQUs7SUFDOUQsSUFBTUMsY0FBYyxHQUFHZCxpQkFBaUIsQ0FBQ2UsT0FBTztJQUNoRCxJQUFJLENBQUNELGNBQWMsRUFBRTtNQUNuQixPQUFPO1FBQUVGLENBQUMsRUFBREEsQ0FBQztRQUFFQyxDQUFDLEVBQURBO01BQUUsQ0FBQztJQUNqQjtJQUVBLElBQUFHLHFCQUFBLEdBQTBCRixjQUFjLENBQUNHLHFCQUFxQixDQUFDLENBQUM7TUFBeERDLEtBQUssR0FBQUYscUJBQUEsQ0FBTEUsS0FBSztNQUFFQyxNQUFNLEdBQUFILHFCQUFBLENBQU5HLE1BQU07SUFDckIsSUFBTUMsTUFBTSxHQUFHLEVBQUU7SUFDakIsSUFBTUMsSUFBSSxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQ0gsTUFBTSxFQUFFOUosTUFBTSxDQUFDa0ssVUFBVSxHQUFHTixLQUFLLEdBQUdFLE1BQU0sQ0FBQztJQUNqRSxJQUFNSyxJQUFJLEdBQUdILElBQUksQ0FBQ0MsR0FBRyxDQUFDSCxNQUFNLEVBQUU5SixNQUFNLENBQUNvSyxXQUFXLEdBQUdQLE1BQU0sR0FBR0MsTUFBTSxDQUFDO0lBRW5FLE9BQU87TUFDTFIsQ0FBQyxFQUFFVSxJQUFJLENBQUNLLEdBQUcsQ0FBQ0wsSUFBSSxDQUFDQyxHQUFHLENBQUNYLENBQUMsRUFBRVEsTUFBTSxDQUFDLEVBQUVDLElBQUksQ0FBQztNQUN0Q1IsQ0FBQyxFQUFFUyxJQUFJLENBQUNLLEdBQUcsQ0FBQ0wsSUFBSSxDQUFDQyxHQUFHLENBQUNWLENBQUMsRUFBRU8sTUFBTSxDQUFDLEVBQUVLLElBQUk7SUFDdkMsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTjVNLGVBQWUsQ0FBQyxZQUFNO0lBQ3BCLElBQUkrSyxVQUFVLEtBQUssVUFBVSxFQUFFO01BQzdCUSxlQUFlLENBQUMsSUFBSSxDQUFDO01BQ3JCO0lBQ0Y7SUFFQUEsZUFBZSxDQUFDLFVBQUF3QixJQUFJLEVBQUk7TUFDdEIsSUFBSUEsSUFBSSxFQUFFO1FBQ1IsT0FBT2pCLGlCQUFpQixDQUFDaUIsSUFBSSxDQUFDaEIsQ0FBQyxFQUFFZ0IsSUFBSSxDQUFDZixDQUFDLENBQUM7TUFDMUM7TUFDQSxJQUFNZ0IsR0FBRyxHQUFHLEVBQUU7TUFDZCxJQUFNakIsQ0FBQyxHQUFHdEosTUFBTSxDQUFDa0ssVUFBVSxHQUFHdEwsMkJBQTJCLENBQUMsQ0FBQyxHQUFHMkwsR0FBRztNQUNqRSxPQUFPbEIsaUJBQWlCLENBQUNDLENBQUMsRUFBRWlCLEdBQUcsQ0FBQztJQUNsQyxDQUFDLENBQUM7RUFDSixDQUFDLEVBQUUsQ0FBQ2pDLFVBQVUsRUFBRWUsaUJBQWlCLENBQUMsQ0FBQztFQUVuQyxJQUFNbUIsYUFBYSxHQUFHdE4sV0FBVyxDQUMvQixVQUFDdU4sS0FBd0MsRUFBSztJQUFBLElBQUFDLHFCQUFBO0lBQzVDdkIsa0JBQWtCLENBQUMsQ0FBQztJQUNwQixJQUFJLEVBQUF1QixxQkFBQSxHQUFBdEIsWUFBWSxDQUFDSyxPQUFPLGNBQUFpQixxQkFBQSx1QkFBcEJBLHFCQUFBLENBQXNCQyxTQUFTLE1BQUtGLEtBQUssQ0FBQ0UsU0FBUyxFQUFFO01BQ3ZEO0lBQ0Y7SUFFQXZCLFlBQVksQ0FBQ0ssT0FBTyxHQUFHLElBQUk7SUFDM0IzQixRQUFRLENBQUM4QyxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsVUFBVSxHQUFHLEVBQUU7SUFDbkNoRCxRQUFRLENBQUM4QyxJQUFJLENBQUNDLEtBQUssQ0FBQ0UsTUFBTSxHQUFHLEVBQUU7RUFDakMsQ0FBQyxFQUNELENBQUM1QixrQkFBa0IsQ0FDckIsQ0FBQztFQUVELElBQU02QixjQUFjLEdBQUc5TixXQUFXLENBQ2hDLFVBQUN1TixLQUF3QyxFQUFLO0lBQzVDLElBQU1RLFNBQVMsR0FBRzdCLFlBQVksQ0FBQ0ssT0FBTztJQUN0QyxJQUFJLENBQUN3QixTQUFTLElBQUlBLFNBQVMsQ0FBQ04sU0FBUyxLQUFLRixLQUFLLENBQUNFLFNBQVMsRUFBRTtNQUN6RDtJQUNGO0lBRUF6QixpQkFBaUIsQ0FBQ3VCLEtBQUssQ0FBQ1MsT0FBTyxFQUFFVCxLQUFLLENBQUNVLE9BQU8sQ0FBQztJQUUvQyxJQUFNQyxZQUFZLEdBQUcvQixpQkFBaUIsQ0FBQ29CLEtBQUssQ0FBQ1MsT0FBTyxHQUFHRCxTQUFTLENBQUNJLE9BQU8sRUFBRVosS0FBSyxDQUFDVSxPQUFPLEdBQUdGLFNBQVMsQ0FBQ0ssT0FBTyxDQUFDO0lBRTVHeEMsZUFBZSxDQUFDLFVBQUF3QixJQUFJLEVBQUk7TUFDdEIsSUFBSUEsSUFBSSxJQUFJQSxJQUFJLENBQUNoQixDQUFDLEtBQUs4QixZQUFZLENBQUM5QixDQUFDLElBQUlnQixJQUFJLENBQUNmLENBQUMsS0FBSzZCLFlBQVksQ0FBQzdCLENBQUMsRUFBRTtRQUNsRSxPQUFPZSxJQUFJO01BQ2I7TUFDQSxPQUFPYyxZQUFZO0lBQ3JCLENBQUMsQ0FBQztFQUNKLENBQUMsRUFDRCxDQUFDL0IsaUJBQWlCLEVBQUVILGlCQUFpQixDQUN2QyxDQUFDO0VBRUQsSUFBTXFDLG9CQUFvQixHQUFHcE8sT0FBTyxDQUFDLFlBQU07SUFDekMsSUFBSW1MLFVBQVUsS0FBSyxVQUFVLEVBQUU7TUFDN0IsT0FBT08sWUFBWTtJQUNyQjtJQUNBLElBQUlBLFlBQVksRUFBRTtNQUNoQixPQUFPQSxZQUFZO0lBQ3JCO0lBQ0EsSUFBTTBCLEdBQUcsR0FBRyxFQUFFO0lBQ2QsSUFBTWpCLENBQUMsR0FBRyxPQUFPdEosTUFBTSxLQUFLLFdBQVcsR0FBR0EsTUFBTSxDQUFDa0ssVUFBVSxHQUFHdEwsMkJBQTJCLENBQUMsQ0FBQyxHQUFHMkwsR0FBRyxHQUFHQSxHQUFHO0lBQ3ZHLE9BQU9sQixpQkFBaUIsQ0FBQ0MsQ0FBQyxFQUFFaUIsR0FBRyxDQUFDO0VBQ2xDLENBQUMsRUFBRSxDQUFDakMsVUFBVSxFQUFFTyxZQUFZLEVBQUVRLGlCQUFpQixDQUFDLENBQUM7RUFFakQsSUFBTW1DLGVBQWUsR0FBR3RPLFdBQVcsQ0FDakMsVUFBQ3VOLEtBQXdDLEVBQUs7SUFDNUMsSUFBSSxDQUFDaEMsVUFBVSxJQUFJZ0MsS0FBSyxDQUFDZ0IsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUNyQztJQUNGO0lBRUEsSUFBTUMsTUFBTSxHQUFHakIsS0FBSyxDQUFDaUIsTUFBcUI7SUFDMUMsSUFBSUEsTUFBTSxDQUFDQyxPQUFPLENBQUMsNEVBQTRFLENBQUMsRUFBRTtNQUNoRztJQUNGO0lBRUEsSUFBTW5DLGNBQWMsR0FBR2QsaUJBQWlCLENBQUNlLE9BQU87SUFDaEQsSUFBSSxDQUFDRCxjQUFjLEVBQUU7TUFDbkI7SUFDRjtJQUVBLElBQU1vQyxJQUFJLEdBQUdwQyxjQUFjLENBQUNHLHFCQUFxQixDQUFDLENBQUM7SUFDbkQsSUFBTWtDLGVBQWUsR0FBR04sb0JBQW9CLGFBQXBCQSxvQkFBb0IsY0FBcEJBLG9CQUFvQixHQUFJbEMsaUJBQWlCLENBQUN1QyxJQUFJLENBQUNFLElBQUksRUFBRUYsSUFBSSxDQUFDRyxHQUFHLENBQUM7SUFDdEYsSUFBTUMsY0FBYyxHQUFHdkIsS0FBSyxDQUFDUyxPQUFPLEdBQUdXLGVBQWUsQ0FBQ3ZDLENBQUM7SUFDeEQsSUFBTTJDLGNBQWMsR0FBR3hCLEtBQUssQ0FBQ1UsT0FBTyxHQUFHVSxlQUFlLENBQUN0QyxDQUFDO0lBRXhEVCxlQUFlLENBQUMrQyxlQUFlLENBQUM7SUFDaEN6QyxZQUFZLENBQUNLLE9BQU8sR0FBRztNQUNyQmtCLFNBQVMsRUFBRUYsS0FBSyxDQUFDRSxTQUFTO01BQzFCVSxPQUFPLEVBQUVXLGNBQWM7TUFDdkJWLE9BQU8sRUFBRVc7SUFDWCxDQUFDO0lBRUR4QixLQUFLLENBQUN5QixhQUFhLENBQUNDLGlCQUFpQixDQUFDMUIsS0FBSyxDQUFDRSxTQUFTLENBQUM7SUFDdERGLEtBQUssQ0FBQzJCLGNBQWMsQ0FBQyxDQUFDO0lBRXRCdEUsUUFBUSxDQUFDOEMsSUFBSSxDQUFDQyxLQUFLLENBQUNDLFVBQVUsR0FBRyxNQUFNO0lBQ3ZDaEQsUUFBUSxDQUFDOEMsSUFBSSxDQUFDQyxLQUFLLENBQUNFLE1BQU0sR0FBRyxVQUFVO0lBQ3ZDakssYUFBYSxDQUFDekIsTUFBTSxDQUFDZ04sZUFBZSxDQUFDO0lBQ3JDcEQsb0JBQW9CLENBQUN3QixLQUFLLENBQUNTLE9BQU8sRUFBRVQsS0FBSyxDQUFDVSxPQUFPLENBQUM7RUFDcEQsQ0FBQyxFQUNELENBQUM5QixpQkFBaUIsRUFBRVosVUFBVSxFQUFFOEMsb0JBQW9CLEVBQUV0QyxvQkFBb0IsQ0FDNUUsQ0FBQztFQUVELElBQU1xRCxTQUFTLEdBQUdwUCxXQUFXLENBQzNCLFVBQ0VpRSxPQUFnQixFQUNoQkMsV0FBOEIsRUFDOUJtTCxLQUFjLEVBQ2RDLGlCQUEwQixFQUMxQkMsUUFBMkIsRUFDM0JDLEtBQWMsRUFDZEMsSUFBYSxFQUNiQyxXQUFxQyxFQUNsQztJQUNILElBQUkzSSxlQUFlLEVBQUU7TUFDbkJDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztJQUMzQjtJQUNBdEMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0lBQ3RCSSxhQUFhLENBQUMsVUFBQXNJLElBQUk7TUFBQSxPQUFJQSxJQUFJLEdBQUcsQ0FBQztJQUFBLEVBQUM7SUFDL0I5SSxxQkFBcUIsQ0FBQXFMLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBO01BQ25CMUwsT0FBTyxFQUFFQSxPQUFPLElBQUksRUFBRTtNQUN0QkMsV0FBVyxFQUFFQSxXQUFXLElBQUk7SUFBRSxHQUMxQm1MLEtBQUssR0FBRztNQUFFQSxLQUFLLEVBQUxBO0lBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUN0QkMsaUJBQWlCLEdBQUc7TUFBRUEsaUJBQWlCLEVBQWpCQTtJQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQzlDQyxRQUFRLElBQUlBLFFBQVEsQ0FBQ0ssTUFBTSxHQUFHLENBQUMsR0FBRztNQUFFTCxRQUFRLEVBQVJBO0lBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNuREMsS0FBSyxHQUFHO01BQUVBLEtBQUssRUFBTEE7SUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3RCQyxJQUFJLEdBQUc7TUFBRUEsSUFBSSxFQUFKQTtJQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDcEJDLFdBQVcsR0FBRztNQUFFQSxXQUFXLEVBQVhBO0lBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUN2QyxDQUFDO0lBQ0Y5SSxRQUFRLENBQUNxRCxJQUFJLENBQUMsQ0FBQztFQUNqQixDQUFDLEVBQ0QsQ0FBQ3JELFFBQVEsRUFBRUcsZUFBZSxDQUM1QixDQUFDO0VBRUQsSUFBTThJLG9CQUFvQixHQUFHMVAsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUUxQ0MsU0FBUyxDQUFDLFlBQU07SUFBQSxJQUFBMFAsc0JBQUE7SUFDZCxJQUFNQyxXQUFXLEdBQUdsTixPQUFPLEtBQUssU0FBUyxHQUFHbU4sT0FBTyxDQUFDdkksT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV3SSxFQUFFLENBQUMsR0FBR3BOLE9BQU8sS0FBSyxRQUFRLEdBQUdtTixPQUFPLENBQUN0SSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXVJLEVBQUUsQ0FBQyxHQUFHLElBQUk7SUFFcEgsSUFBSSxFQUFDakksY0FBYyxhQUFkQSxjQUFjLGdCQUFBOEgsc0JBQUEsR0FBZDlILGNBQWMsQ0FBRWlELFFBQVEsY0FBQTZFLHNCQUFBLGVBQXhCQSxzQkFBQSxDQUEwQjVFLElBQUksQ0FBQyxDQUFDLEtBQUkyRSxvQkFBb0IsQ0FBQ3RELE9BQU8sSUFBSWpFLE9BQU8sSUFBSSxFQUFDZCxLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFeUksRUFBRSxLQUFJLENBQUNGLFdBQVcsRUFBRTtNQUM5RztJQUNGO0lBRUFGLG9CQUFvQixDQUFDdEQsT0FBTyxHQUFHLElBQUk7SUFDbkM2QyxTQUFTLENBQ1BwSCxjQUFjLENBQUNpRCxRQUFRLEVBQ3ZCLEVBQUUsRUFDRmpELGNBQWMsQ0FBQ3FILEtBQUssRUFDcEJhLFNBQVMsRUFDVEEsU0FBUyxFQUNUQSxTQUFTLEVBQ1RBLFNBQVMsRUFDVGxJLGNBQWMsQ0FBQzBILFdBQ2pCLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FDRDFILGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFcUgsS0FBSyxFQUNyQnJILGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFaUQsUUFBUSxFQUN4QmpELGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFMEgsV0FBVyxFQUMzQnBILE9BQU8sRUFDUGQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUV5SSxFQUFFLEVBQ1R6SSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW9DLE1BQU0sRUFDYm5DLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFd0ksRUFBRSxFQUNYdkksTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUV1SSxFQUFFLEVBQ1ZwTixPQUFPLEVBQ1B1TSxTQUFTLENBQ1YsQ0FBQztFQUVGLElBQU1lLFFBQVEsR0FBR25RLFdBQVcsQ0FDMUIsVUFBQ2lLLElBQVMsRUFBSztJQUNiM0YscUJBQXFCLENBQUM7TUFBRUwsT0FBTyxFQUFFLEVBQUU7TUFBRUMsV0FBVyxFQUFFO0lBQUcsQ0FBQyxDQUFDO0lBQ3ZEUSxnQkFBZ0IsQ0FBQ3VGLElBQUksQ0FBQ21HLGlCQUFpQixDQUFDO0lBQ3hDLElBQU1DLGFBQWEsR0FBR2hJLE1BQU0sQ0FBQ2lJLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFVBQUFDLFNBQVM7TUFBQSxPQUFJQSxTQUFTLENBQUNQLEVBQUUsS0FBS2hHLElBQUksQ0FBQ3dHLE9BQU87SUFBQSxFQUFDO0lBQ2xGLElBQUlKLGFBQWEsRUFBRTtNQUNqQi9JLFdBQVcsQ0FBQytJLGFBQWEsQ0FBQztJQUM1QjtJQUNBO0lBQ0F6RixRQUFRLENBQUM4RixhQUFhLENBQUMsSUFBSUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDL0QvSixRQUFRLENBQUNxRCxJQUFJLENBQUMsQ0FBQztFQUNqQixDQUFDLEVBQ0QsQ0FBQ3JELFFBQVEsRUFBRXlCLE1BQU0sRUFBRWYsV0FBVyxDQUNoQyxDQUFDO0VBRUQsSUFBTXNKLHNCQUFzQixHQUFHNVEsV0FBVyxDQUN4QyxVQUNFNlEsV0FRUyxFQUNUQyxjQUEwQixFQUMxQkMsU0FBa0IsRUFDbEJDLE9BQWdCLEVBQ2I7SUFDSDlMLHNCQUFzQixDQUFDO01BQUEsT0FBTTJMLFdBQVc7SUFBQSxFQUFDO0lBQ3pDdkwseUJBQXlCLENBQUM7TUFBQSxPQUFNd0wsY0FBYztJQUFBLEVBQUM7SUFDL0NwTCxjQUFjLENBQUNxTCxTQUFTLENBQUM7SUFDekJqTCxZQUFZLENBQUNrTCxPQUFPLENBQUM7RUFDdkIsQ0FBQyxFQUNELEVBQ0YsQ0FBQztFQUVELElBQU1DLGlCQUFpQixHQUFHalIsV0FBVyxDQUNuQyxVQUNFaUUsT0FBZSxFQUNmQyxXQUE4QixFQUM5Qm1MLEtBQWMsRUFDZEMsaUJBQTBCLEVBQzFCQyxRQUEyQixFQUMzQkMsS0FBYyxFQUNkQyxJQUFhLEVBQ1Y7SUFDSCxJQUFJMUksZUFBZSxFQUFFO01BQ25CQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7SUFDM0I7SUFDQSxJQUFJL0IsbUJBQW1CLElBQUl5RSxxQkFBcUIsS0FBSzVJLE9BQU8sQ0FBQ21KLElBQUksRUFBRTtNQUNqRWhGLG1CQUFtQixDQUFDaEIsT0FBTyxFQUFFQyxXQUFXLEVBQUVtTCxLQUFLLEVBQUVDLGlCQUFpQixFQUFFQyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxDQUFDO0lBQzVGLENBQUMsTUFBTTtNQUNMTCxTQUFTLENBQUNuTCxPQUFPLEVBQUVDLFdBQVcsRUFBRW1MLEtBQUssRUFBRUMsaUJBQWlCLEVBQUVDLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLENBQUM7SUFDbEY7RUFDRixDQUFDLEVBQ0QsQ0FBQ3hLLG1CQUFtQixFQUFFbUssU0FBUyxFQUFFMUYscUJBQXFCLEVBQUUzQyxlQUFlLENBQ3pFLENBQUM7RUFFRCxJQUFNcUIsWUFBWSxHQUFHcEksV0FBVyxDQUFDLFlBQU07SUFDckM7SUFDQSxJQUFJc0csYUFBYSxLQUFLeEYsT0FBTyxDQUFDbUosSUFBSSxFQUFFO01BQ2xDNUUsc0JBQXNCLGFBQXRCQSxzQkFBc0IsZUFBdEJBLHNCQUFzQixDQUFHLENBQUM7TUFDMUJYLGdCQUFnQixDQUFDLElBQUksQ0FBQztNQUN0QkksYUFBYSxDQUFDLFVBQUFzSSxJQUFJO1FBQUEsT0FBSUEsSUFBSSxHQUFHLENBQUM7TUFBQSxFQUFDO01BQy9CdEgsWUFBWSxDQUFDLEtBQUssQ0FBQztNQUNuQjtNQUNBLElBQUksQ0FBQTBCLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFb0MsTUFBTSxNQUFLLFFBQVEsRUFBRTtRQUM5QjlCLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO01BQ25CO01BQ0EsSUFBSWpGLE9BQU8sS0FBSyxNQUFNLEVBQUU7UUFDdEJvRixPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHLElBQUksQ0FBQztNQUNqQjtJQUNGO0lBQ0EsSUFDRSxDQUFDLENBQUNULEtBQUssSUFBSUEsS0FBSyxhQUFMQSxLQUFLLGVBQUxBLEtBQUssQ0FBRTBKLFVBQVUsSUFBSTFKLEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUUySixtQkFBbUIsSUFBSTNKLEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUU0SixjQUFjLElBQUk1SixLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFNkosZUFBZSxLQUM3R2hKLE1BQU0sQ0FBQ2lJLElBQUksQ0FBQ1YsTUFBTSxHQUFHLENBQUMsRUFDdEI7TUFDQXRJLFdBQVcsQ0FBQ2UsTUFBTSxDQUFDaUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCO0lBQ0EvSixnQkFBZ0IsQ0FBQ3pGLE9BQU8sQ0FBQ3NGLElBQUksQ0FBQztJQUM5QnlCLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDckJsQixXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ2xCaUIsaUJBQWlCLElBQUlELGVBQWUsQ0FBQyxDQUFDO0lBQ3RDLElBQUlWLG9CQUFvQixDQUFDc0YsT0FBTyxFQUFFO01BQ2hDdEYsb0JBQW9CLENBQUNzRixPQUFPLENBQUMsQ0FBQztJQUNoQztFQUNGLENBQUMsRUFBRSxDQUNEekwsT0FBTyxDQUFDc0YsSUFBSSxFQUNadEYsT0FBTyxDQUFDbUosSUFBSSxFQUNaM0QsYUFBYSxFQUNic0IsaUJBQWlCLEVBQ2pCRCxlQUFlLEVBQ2ZILEtBQUssRUFDTGEsTUFBTSxFQUNOZixXQUFXLEVBQ1hRLFNBQVMsRUFDVEcsT0FBTyxFQUNQNUMsc0JBQXNCLEVBQ3RCeEMsT0FBTyxDQUNSLENBQUM7RUFFRixJQUFNeU8sZUFBZSxHQUFHdFIsV0FBVyxjQUFBdVIsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFDLFNBQUFDLFFBQUE7SUFBQSxPQUFBRixtQkFBQSxDQUFBRyxJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBeEUsSUFBQSxHQUFBd0UsUUFBQSxDQUFBQyxJQUFBO1FBQUE7VUFDbEN2TixxQkFBcUIsQ0FBQztZQUFFTCxPQUFPLEVBQUUsRUFBRTtZQUFFQyxXQUFXLEVBQUU7VUFBRyxDQUFDLENBQUM7VUFDdkRRLGdCQUFnQixDQUFDLElBQUksQ0FBQztVQUN0QjtVQUNBa0csUUFBUSxDQUFDOEYsYUFBYSxDQUFDLElBQUlDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1VBQy9EdkksWUFBWSxDQUFDLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQXdKLFFBQUEsQ0FBQUUsSUFBQTtNQUFBO0lBQUEsR0FBQUosT0FBQTtFQUFBLENBQ2YsSUFBRSxDQUFDdEosWUFBWSxDQUFDLENBQUM7O0VBRWxCO0VBQ0E7RUFDQTtFQUNBLElBQU0ySixVQUFVLEdBQUcvUixXQUFXLENBQUMsWUFBTTtJQUNuQyxJQUFJMEoscUJBQXFCLEtBQUs1SSxPQUFPLENBQUNtSixJQUFJLEVBQUU7TUFDMUNxSCxlQUFlLENBQUMsQ0FBQztNQUNqQjtJQUNGO0lBQ0E7SUFDQSxJQUFJek8sT0FBTyxLQUFLLE1BQU0sRUFBRTtNQUN0QmtGLFVBQVUsQ0FBQyxJQUFJLENBQUM7TUFDaEJELFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO01BQ2pCRyxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHLElBQUksQ0FBQztJQUNqQjtFQUNGLENBQUMsRUFBRSxDQUFDeUIscUJBQXFCLEVBQUU3RyxPQUFPLEVBQUV5TyxlQUFlLEVBQUV2SixVQUFVLEVBQUVELFNBQVMsRUFBRUcsT0FBTyxDQUFDLENBQUM7RUFFckY3SCxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ3NLLGdCQUFnQixDQUFDNkIsT0FBTyxFQUFFO01BQzdCN0IsZ0JBQWdCLENBQUM2QixPQUFPLEdBQUcsSUFBSTtNQUMvQjdELGVBQWUsQ0FBQyxDQUFDO0lBQ25CO0VBQ0YsQ0FBQyxFQUFFLENBQUNBLGVBQWUsQ0FBQyxDQUFDO0VBRXJCdEksU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNNFIsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBSUMsR0FBVSxFQUFLO01BQzFDLElBQUFDLEtBQUEsR0FBOEJELEdBQUcsQ0FBbUNFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFBakVDLFNBQVMsR0FBQUYsS0FBQSxDQUFoQjFLLEtBQUs7TUFDYixJQUFJNEssU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRW5DLEVBQUUsRUFBRTtRQUNqQm5ILFFBQVEsQ0FBQ3NKLFNBQVMsRUFBRTtVQUFFQyxZQUFZLEVBQUU7UUFBTSxDQUFDLENBQUM7TUFDOUM7SUFDRixDQUFDO0lBQ0R6SCxRQUFRLENBQUMwSCxnQkFBZ0IsQ0FBQyxvQ0FBb0MsRUFBRU4sbUJBQW1CLENBQUM7SUFDcEYsT0FBTyxZQUFNO01BQ1hwSCxRQUFRLENBQUMySCxtQkFBbUIsQ0FBQyxvQ0FBb0MsRUFBRVAsbUJBQW1CLENBQUM7SUFDekYsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDbEosUUFBUSxDQUFDLENBQUM7RUFFZDFJLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTW9TLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUlQLEdBQVUsRUFBSztNQUN4QyxJQUFBUSxLQUFBLEdBQThCUixHQUFHLENBQW1DRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQWpFQyxTQUFTLEdBQUFLLEtBQUEsQ0FBaEJqTCxLQUFLO01BQ2IsSUFBSSxFQUFDNEssU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRW5DLEVBQUUsR0FBRTtNQUNwQmpILFdBQVcsQ0FBQ29KLFNBQVMsQ0FBQztNQUN0QixJQUFJLENBQUE1SyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXlJLEVBQUUsTUFBS21DLFNBQVMsQ0FBQ25DLEVBQUUsRUFBRTtRQUM5QjNJLFdBQVcsQ0FBQzhLLFNBQVMsQ0FBQztNQUN4QjtJQUNGLENBQUM7SUFDRHhILFFBQVEsQ0FBQzBILGdCQUFnQixDQUFDLGtDQUFrQyxFQUFFRSxpQkFBaUIsQ0FBQztJQUNoRixPQUFPLFlBQU07TUFDWDVILFFBQVEsQ0FBQzJILG1CQUFtQixDQUFDLGtDQUFrQyxFQUFFQyxpQkFBaUIsQ0FBQztJQUNyRixDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUN4SixXQUFXLEVBQUUxQixXQUFXLEVBQUVFLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFeUksRUFBRSxDQUFDLENBQUM7RUFFekM3UCxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU1zUyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBQSxFQUFTO01BQ3pCL0wsV0FBVyxDQUFDLEtBQUssQ0FBQztNQUNsQmpDLGdCQUFnQixDQUFDLElBQUksQ0FBQztNQUN0QkksYUFBYSxDQUFDLFVBQUFzSSxJQUFJO1FBQUEsT0FBSUEsSUFBSSxHQUFHLENBQUM7TUFBQSxFQUFDO01BQy9COUkscUJBQXFCLENBQUM7UUFBRUwsT0FBTyxFQUFFLEVBQUU7UUFBRUMsV0FBVyxFQUFFO01BQUcsQ0FBQyxDQUFDO01BQ3ZEcUMsZ0JBQWdCLENBQUN6RixPQUFPLENBQUNtSixJQUFJLENBQUM7TUFDOUJXLFFBQVEsQ0FBQzhGLGFBQWEsQ0FBQyxJQUFJQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0QvRixRQUFRLENBQUMwSCxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRUksWUFBWSxDQUFDO0lBQzlELE9BQU8sWUFBTTtNQUNYOUgsUUFBUSxDQUFDMkgsbUJBQW1CLENBQUMscUJBQXFCLEVBQUVHLFlBQVksQ0FBQztJQUNuRSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7RUFFTjtBQUNGO0FBQ0E7QUFDQTtFQUNFdFMsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNdVMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSXBGLEtBQVksRUFBSztNQUFBLElBQUFxRixlQUFBLEVBQUFDLGNBQUE7TUFDN0MsSUFBQUMsS0FBQSxHQUFtQnZGLEtBQUs7UUFBaEI0RSxNQUFNLEdBQUFXLEtBQUEsQ0FBTlgsTUFBTTtNQU1kLElBQU1DLFNBQVMsR0FBR0QsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUUzSyxLQUFLO01BQy9CLElBQUksQ0FBQzRLLFNBQVMsRUFBRTtNQUVoQnJLLFVBQVUsRUFBQTZLLGVBQUEsR0FBQ1QsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUUxSyxPQUFPLGNBQUFtTCxlQUFBLGNBQUFBLGVBQUEsR0FBSSxJQUFJLENBQUM7TUFDbkM5SyxTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxFQUFBK0ssY0FBQSxHQUFHVixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXpLLE1BQU0sY0FBQW1MLGNBQUEsY0FBQUEsY0FBQSxHQUFJLElBQUksQ0FBQztNQUNuQyxJQUFJLENBQUFWLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFWSxJQUFJLE1BQUs3QyxTQUFTLEVBQUU7UUFDOUJqSSxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHa0ssTUFBTSxDQUFDWSxJQUFJLENBQUM7TUFDeEI7TUFDQXpMLFdBQVcsQ0FBQzhLLFNBQVMsQ0FBQztNQUN0QnpMLFdBQVcsQ0FBQyxLQUFLLENBQUM7TUFDbEJKLGdCQUFnQixDQUFDekYsT0FBTyxDQUFDc0YsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRHdFLFFBQVEsQ0FBQzBILGdCQUFnQixDQUFDLCtCQUErQixFQUFFSyxvQkFBb0IsQ0FBQztJQUNoRixPQUFPLFlBQU07TUFDWC9ILFFBQVEsQ0FBQzJILG1CQUFtQixDQUFDLCtCQUErQixFQUFFSSxvQkFBb0IsQ0FBQztJQUNyRixDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNyTCxXQUFXLEVBQUVRLFNBQVMsRUFBRUMsVUFBVSxFQUFFRSxPQUFPLENBQUMsQ0FBQztFQUVqRCxJQUFNK0ssV0FBVyxHQUFHdEoscUJBQXFCLEtBQUs1SSxPQUFPLENBQUNtSixJQUFJO0VBQzFELElBQU1nSixpQkFBaUIsR0FBR3ZKLHFCQUFxQixLQUFLNUksT0FBTyxDQUFDa0osUUFBUTtFQUNwRSxJQUFNa0osY0FBYyxHQUNsQixDQUFBMUwsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVnRCxJQUFJLE1BQUssT0FBTyxJQUN2QixDQUFBaEQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVvQyxNQUFNLE1BQUssUUFBUSxJQUMxQixDQUFDbEQsUUFBUSxJQUNULENBQUM0QixPQUFPLEtBQ1BvQixxQkFBcUIsS0FBSzVJLE9BQU8sQ0FBQ21KLElBQUksSUFBS1AscUJBQXFCLEtBQUs1SSxPQUFPLENBQUNzRixJQUFJLElBQUl2RCxPQUFPLEtBQUssTUFBTyxDQUFDO0VBQzVHLElBQU1zUSxxQkFBcUIsR0FBR25ULFdBQVcsQ0FBQyxZQUFNO0lBQzlDLElBQUksQ0FBQzhDLE1BQU0sQ0FBQ0Msd0NBQXdDLEVBQUU7TUFDcEQ7SUFDRjtJQUNBd0UsVUFBVSxDQUFDLENBQUM7SUFDWmhCLGdCQUFnQixDQUFDekYsT0FBTyxDQUFDa0osUUFBUSxDQUFDO0VBQ3BDLENBQUMsRUFBRSxDQUFDekMsVUFBVSxDQUFDLENBQUM7RUFFaEIsSUFBTTZMLGlCQUFpQixHQUFHcFQsV0FBVyxjQUFBdVIsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFDLFNBQUE0QixTQUFBO0lBQUEsSUFBQUMsWUFBQSxFQUFBQyxRQUFBLEVBQUFqRCxJQUFBLEVBQUFrRCxFQUFBO0lBQUEsT0FBQWhDLG1CQUFBLENBQUFHLElBQUEsV0FBQThCLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBckcsSUFBQSxHQUFBcUcsU0FBQSxDQUFBNUIsSUFBQTtRQUFBO1VBQ3BDbEwsV0FBVyxDQUFDLEtBQUssQ0FBQztVQUNkMk0sWUFBWSxHQUFHakwsTUFBTSxDQUFDaUksSUFBSSxDQUFDQyxJQUFJLENBQUMsVUFBQ21ELENBQVE7WUFBQSxPQUFLQSxDQUFDLENBQUNsSixJQUFJLEtBQUssT0FBTyxJQUFJa0osQ0FBQyxDQUFDOUosTUFBTSxLQUFLLFFBQVE7VUFBQSxFQUFDO1VBQUEsSUFDekYwSixZQUFZO1lBQUFHLFNBQUEsQ0FBQTVCLElBQUE7WUFBQTtVQUFBO1VBQUE0QixTQUFBLENBQUFyRyxJQUFBO1VBQUFxRyxTQUFBLENBQUE1QixJQUFBO1VBQUEsT0FFVTVQLFNBQVMsQ0FBQztZQUMvQjBSLElBQUksa0NBQUE3SSxNQUFBLENBQWtDNUksVUFBVSxDQUFDeUIsSUFBSSxDQUFDd0QsUUFBUSxDQUFDLENBQUU7WUFDakV5TSxNQUFNLEVBQUU7VUFDVixDQUFDLENBQUM7UUFBQTtVQUhJTCxRQUFRLEdBQUFFLFNBQUEsQ0FBQUksSUFBQTtVQUFBSixTQUFBLENBQUE1QixJQUFBO1VBQUEsT0FJSzBCLFFBQVEsQ0FBQ08sSUFBSSxDQUFDLENBQUM7UUFBQTtVQUE1QnhELElBQUksR0FBQW1ELFNBQUEsQ0FBQUksSUFBQTtVQUNWUCxZQUFZLEdBQUcsQ0FBQ2hELElBQUksQ0FBQ0EsSUFBSSxJQUFJLEVBQUUsRUFBRUMsSUFBSSxDQUFDLFVBQUNtRCxDQUFRO1lBQUEsT0FBS0EsQ0FBQyxDQUFDbEosSUFBSSxLQUFLLE9BQU8sSUFBSWtKLENBQUMsQ0FBQzlKLE1BQU0sS0FBSyxRQUFRO1VBQUEsRUFBQztVQUFBNkosU0FBQSxDQUFBNUIsSUFBQTtVQUFBO1FBQUE7VUFBQTRCLFNBQUEsQ0FBQXJHLElBQUE7VUFBQW9HLEVBQUEsR0FBQUMsU0FBQTtVQUFBLE9BQUFBLFNBQUEsQ0FBQU0sTUFBQTtRQUFBO1VBQUEsSUFLL0ZULFlBQVk7WUFBQUcsU0FBQSxDQUFBNUIsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBNEIsU0FBQSxDQUFBTSxNQUFBO1FBQUE7VUFHakJoTSxVQUFVLENBQUMsSUFBSSxDQUFDO1VBQ2hCRCxTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFHLElBQUksQ0FBQztVQUNqQkcsT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBRyxJQUFJLENBQUM7VUFDZlgsV0FBVyxDQUFDZ00sWUFBWSxDQUFDO1VBQ3pCL00sZ0JBQWdCLENBQUN6RixPQUFPLENBQUNzRixJQUFJLENBQUM7VUFDOUIsSUFBSWEsb0JBQW9CLENBQUNzRixPQUFPLEVBQUU7WUFDaEN0RixvQkFBb0IsQ0FBQ3NGLE9BQU8sQ0FBQyxDQUFDO1VBQ2hDO1FBQUM7UUFBQTtVQUFBLE9BQUFrSCxTQUFBLENBQUEzQixJQUFBO01BQUE7SUFBQSxHQUFBdUIsUUFBQTtFQUFBLENBQ0YsSUFBRSxDQUFDaEwsTUFBTSxDQUFDaUksSUFBSSxFQUFFM00sSUFBSSxDQUFDd0QsUUFBUSxFQUFFRyxXQUFXLEVBQUVRLFNBQVMsRUFBRUMsVUFBVSxFQUFFRSxPQUFPLENBQUMsQ0FBQztFQUM3RSxJQUFNK0wsNkJBQTZCLEdBQUdoVSxXQUFXLENBQy9DLFVBQUN5USxPQUFlLEVBQUs7SUFDbkIxSCxXQUFXLENBQUMwSCxPQUFPLENBQUM7SUFDcEIsSUFBSSxDQUFBakosS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUV5SSxFQUFFLE1BQUtRLE9BQU8sRUFBRTtNQUN6QnZILGdCQUFnQixDQUFDdUgsT0FBTyxDQUFDO0lBQzNCO0VBQ0YsQ0FBQyxFQUNELENBQUNqSixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXlJLEVBQUUsRUFBRWxILFdBQVcsRUFBRUcsZ0JBQWdCLENBQzNDLENBQUM7RUFFRCxJQUFNK0ssb0JBQW9CLEdBQUd2SyxxQkFBcUIsS0FBSzVJLE9BQU8sQ0FBQ3NGLElBQUksSUFBSW1FLHNCQUFzQjtFQUU3RixJQUFNMkosVUFBVSxnQkFDZDFSLEtBQUEsQ0FBQUUsU0FBQTtJQUFBeVIsUUFBQSxHQUNHdlIsdUJBQXVCLENBQUNDLE9BQU8sQ0FBQyxJQUFJLENBQUMwSSxVQUFVLGdCQUM5Q2pKLElBQUEsQ0FBQ3ZCLE9BQU87TUFDTnFULFVBQVUsRUFBRWpFLFFBQVM7TUFDckJrRSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtRQUFBLE9BQVFyTixrQkFBa0IsQ0FBQyxJQUFJLENBQUM7TUFBQSxDQUFDO01BQ3hDc04sY0FBYyxFQUFFbE0sWUFBYTtNQUM3QitLLHFCQUFxQixFQUFFQSxxQkFBc0I7TUFDN0NILFdBQVcsRUFBRUEsV0FBWTtNQUN6Qi9NLFlBQVksRUFBRUEsWUFBYTtNQUMzQnNPLHFCQUFxQixFQUFFck8sZUFBZ0I7TUFDdkNRLFFBQVEsRUFBRUssZUFBZ0I7TUFDMUJFLG9CQUFvQixFQUFFQSxvQkFBcUI7TUFDM0N1TixlQUFlLEVBQUUvSjtJQUF1QixDQUN6QyxDQUFDLEdBQ0EsSUFBSSxlQUNSakksS0FBQSxDQUFDakIsYUFBYTtNQUFDK0osUUFBUSxFQUFFQSxRQUFTO01BQUNtSixRQUFRLEVBQUVsSixVQUFXO01BQUE0SSxRQUFBLGdCQUN0RDdSLElBQUEsQ0FBQ3BCLGlCQUFpQjtRQUNoQmtLLFVBQVUsRUFBRUEsVUFBVztRQUN2QnNKLGtCQUFrQixFQUFFckosYUFBYztRQUNsQ0MsUUFBUSxFQUFFQSxRQUFTO1FBQ25CcUosU0FBUyxFQUFFcEosVUFBVztRQUN0QnFKLFdBQVcsRUFBRXRHLGVBQWdCO1FBQzdCdUcsVUFBVSxFQUFFL0csY0FBZTtRQUMzQmdILFNBQVMsRUFBRXhILGFBQWM7UUFDekIvSixXQUFXLEVBQUVNLGdCQUFpQjtRQUM5QndFLE1BQU0sRUFBRUEsTUFBTSxDQUFDaUksSUFBSztRQUNwQjVKLFFBQVEsRUFBRSxDQUFDLENBQUM4QixVQUFXO1FBQ3ZCRixPQUFPLEVBQUVBLE9BQVE7UUFDakJDLFdBQVcsRUFBRUEsV0FBWTtRQUN6QndNLE9BQU8sRUFBRTFNLE1BQU0sQ0FBQzJNLFFBQVM7UUFDekIxRCxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDMkQsYUFBYSxFQUFFaE0sbUJBQW9CO1FBQ25DTixjQUFjLEVBQUVBLGNBQWU7UUFDL0JRLGNBQWMsRUFBRUEsY0FBZTtRQUMvQjhKLGlCQUFpQixFQUFFQSxpQkFBa0I7UUFDckNpQyxnQkFBZ0IsRUFBRWpCLG9CQUFxQjtRQUN2Q2YsY0FBYyxFQUFFQSxjQUFlO1FBQy9CaUMsTUFBTSxFQUFFcEQ7TUFBVyxDQUNwQixDQUFDLEVBQ0RyTCxRQUFRLGdCQUNQcEUsSUFBQSxDQUFDNUIsU0FBUyxJQUFFLENBQUMsR0FDWGtDLHVCQUF1QixDQUFDQyxPQUFPLENBQUMsZ0JBQ2xDUCxJQUFBLENBQUMxQixhQUFhO1FBQ1owRixhQUFhLEVBQUVvRCxxQkFBc0I7UUFDckM5QyxRQUFRLEVBQUErSSxhQUFBLENBQUFBLGFBQUEsS0FBTy9JLFFBQVE7VUFBRXFELElBQUksRUFBRW1GLFNBQVM7VUFBRWhKLElBQUksRUFBRVEsUUFBUSxDQUFDUixJQUFJO1VBQUVnQyxZQUFZLEVBQVpBO1FBQVksRUFBRztRQUM5RWlNLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO1VBQUEsT0FBUTFOLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFBQSxDQUFDO1FBQ2pDeU8sSUFBSSxFQUFFO1VBQUUvUSxrQkFBa0IsRUFBbEJBLGtCQUFrQjtVQUFFSSxhQUFhLEVBQWJBO1FBQWMsQ0FBRTtRQUM1QzRRLGtCQUFrQixFQUFFekUsc0JBQXVCO1FBQzNDdEYsUUFBUSxFQUFFQSxRQUFTO1FBQ25CbUosUUFBUSxFQUFFbEosVUFBVztRQUNyQmxELE1BQU0sRUFBRUEsTUFBTSxDQUFDaUksSUFBSztRQUNwQmdGLGFBQWEsRUFBRWhOLE9BQVE7UUFDdkJpTixhQUFhLEVBQUV2Qiw2QkFBOEI7UUFDN0N3QixxQkFBcUIsRUFBRXZNLG1CQUFvQjtRQUMzQ3dNLGFBQWEsRUFBRSxDQUFDLENBQUNwTixNQUFNLENBQUMyTSxRQUFTO1FBQ2pDVSxpQkFBaUIsRUFBRW5OLFdBQVk7UUFDL0JvTixnQkFBZ0IsRUFBRWhOLGNBQWU7UUFDakNpTixhQUFhLEVBQUV4QyxpQkFBa0I7UUFDakN5QyxjQUFjLEVBQUVqTixrQkFBbUI7UUFDbkNrTixtQkFBbUIsRUFBRWpOLGFBQWM7UUFDbkNMLFVBQVUsRUFBRUE7TUFBVyxDQUN4QixDQUFDLGdCQUVGbEcsSUFBQSxDQUFDbEIscUJBQXFCO1FBQUMyVSxnQkFBZ0IsRUFBRW5QLFFBQVEsQ0FBQ1I7TUFBSyxDQUFFLENBQzFELEVBQ0EsQ0FBRXNELHFCQUFxQixLQUFLNUksT0FBTyxDQUFDc0YsSUFBSSxJQUFJLENBQUMsRUFBQ2lDLE1BQU0sYUFBTkEsTUFBTSxnQkFBQS9FLFlBQUEsR0FBTitFLE1BQU0sQ0FBRWlJLElBQUksY0FBQWhOLFlBQUEsZUFBWkEsWUFBQSxDQUFjc00sTUFBTSxLQUNqRWxHLHFCQUFxQixLQUFLNUksT0FBTyxDQUFDbUosSUFBSSxLQUN0QyxDQUFDZ0ssb0JBQW9CLElBQ3JCLENBQUN2TixRQUFRLElBQ1QsQ0FBQzRCLE9BQU8sSUFDUjFGLHVCQUF1QixDQUFDQyxPQUFPLENBQUMsaUJBQzlCUCxJQUFBLENBQUNULGlCQUFpQjtRQUNoQjJGLEtBQUssRUFBRUEsS0FBTTtRQUNieUosaUJBQWlCLEVBQUVBLGlCQUFrQjtRQUNyQytFLG9CQUFvQixFQUFFM1Esc0JBQXVCO1FBQzdDSSxXQUFXLEVBQUVBLFdBQVk7UUFDekJJLFNBQVMsRUFBRUEsU0FBVTtRQUNyQm9RLE1BQU0sRUFBRXhSLGFBQWM7UUFDdEJJLFVBQVUsRUFBRUEsVUFBVztRQUN2QnFSLFFBQVEsRUFBRXhNLHFCQUFxQixLQUFLNUksT0FBTyxDQUFDbUosSUFBSztRQUNqRC9CLGFBQWEsRUFBRUEsYUFBYztRQUM3QmtELFVBQVUsRUFBRUE7TUFBVyxDQUN4QixDQUNGO0lBQUEsQ0FDVSxDQUFDO0VBQUEsQ0FDaEIsQ0FDSDtFQUVELElBQU1rQixjQUFjLGdCQUNsQmhLLElBQUEsQ0FBQ2Qsb0JBQW9CO0lBQUM4SixRQUFRLEVBQUVBLFFBQVM7SUFBQ21KLFFBQVEsRUFBRWxKLFVBQVc7SUFBQzRLLEdBQUcsRUFBRTNLLGlCQUFrQjtJQUFBMkksUUFBQSxFQUNwRkQ7RUFBVSxDQUNTLENBQ3ZCO0VBRUQsT0FDRXZKLFFBQVEsaUJBQ1JySyxRQUFRLENBQUM4VixZQUFZLGNBQ25CNVQsS0FBQSxDQUFDZixhQUFhO0lBQ1o2SixRQUFRLEVBQUVBLFFBQVM7SUFDbkJGLFVBQVUsRUFBRUEsVUFBVztJQUN2Qk8sWUFBWSxFQUFFMEMsb0JBQXFCO0lBQ25DZ0ksUUFBUSxFQUFFeFQsT0FBTyxLQUFLLE1BQU87SUFBQXNSLFFBQUEsZ0JBRTdCN1IsSUFBQSxDQUFDWCxtQkFBbUI7TUFBQzJVLElBQUksRUFBRXhLLFVBQVc7TUFBQ1IsUUFBUSxFQUFFQSxRQUFTO01BQUE2SSxRQUFBLEVBQ3ZEN0g7SUFBYyxDQUNJLENBQUMsRUFDckJqRCxrQkFBa0IsaUJBQ2pCL0csSUFBQSxDQUFDakIsYUFBYTtNQUNaeUgsUUFBUSxFQUFFQSxRQUFTO01BQ25CRSxXQUFXLEVBQUVBLFdBQVk7TUFDekJELFdBQVcsRUFBRUEsV0FBWTtNQUN6QkUsbUJBQW1CLEVBQUVBLG1CQUFvQjtNQUN6Q0MsZ0JBQWdCLEVBQUVBO0lBQWlCLENBQ3BDLENBQ0YsZUFDRDVHLElBQUEsQ0FBQ25CLFFBQVEsSUFBRSxDQUFDO0VBQUEsQ0FDQyxDQUFDLEVBQ2hCd0osUUFDRixDQUFDO0FBRUwsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
747
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIkNoYXRBSUNvbnRlbnQiLCJidWlsZEhhbmRsZXJzIiwib3B0aW9ucyIsIlNpZGViYXIiLCJ1c2VHZXRBZ2VudHMiLCJ1c2VHZXRTa2lsbHMiLCJ1c2VHbG9iYWxDb250ZXh0IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJTbmFja2JhciIsIlByb2plY3RTdW1tYXJ5Q29udGVudCIsIkFibUFnZW50TW9kYWwiLCJBYm1Ta2lsbE1vZGFsIiwiQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1XcmFwcGVyIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwiRmxvYXRpbmdQYW5lbE1vdGlvbiIsInVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCIsIkNoYXRBaU1vZGFsRm9vdGVyIiwidmFsaWRhdGVJc01haWEiLCJpc01haWFrZXJBZ2VudCIsInVzZUZhcXNTdG9yZSIsImZldGNoTWFpYSIsIm1hcENPUkxhbmciLCJFVkVOVFMiLCJ1c2VFdmVudCIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInNlY3Rpb24iLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiQ2hhdEFJTW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfYWdlbnRzJGRhdGEiLCJoYW5kbGVDbG9zZSIsInVzZXIiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsImkxOG4iLCJhbXBsaXR1ZEV2ZW50IiwiaGFuZGxlQ2xvc2VNb2RhbCIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwiX3VzZVN0YXRlIiwibWVzc2FnZSIsImF0dGFjaG1lbnRzIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwic2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTE1IiwiaG9tZSIsIl91c2VTdGF0ZTE2IiwiY3VycmVudE9wdGlvbiIsInNldEN1cnJlbnRPcHRpb24iLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsImhhbmRsZXJzIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInNpZGViYXJIYXNFcnJvciIsInNldFNpZGViYXJIYXNFcnJvciIsInJlc2V0U2VsZWN0ZWRDaGF0UmVmIiwibGFuZyIsImxhbmd1YWdlIiwibG9jYWxlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsImNsZWFyQWdlbnQiLCJhZ2VudCIsInByb2plY3QiLCJjbGllbnQiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsInNldENsaWVudCIsInNldFByb2plY3QiLCJiYW5uZXJFbnRyeUZhcSIsInNldFRhc2siLCJ0b29sdGlwWkluZGV4IiwiX3VzZUdldEFnZW50cyIsImhhbmRsZUdvSG9tZSIsImFnZW50cyIsImxvYWRpbmciLCJsb2FkaW5nTW9yZSIsImFnZW50RXJyb3IiLCJlcnJvciIsImhhbmRsZUdldEFnZW50cyIsImxvYWRNb3JlQWdlbnRzIiwic2VhcmNoQ3VzdG9tQWdlbnRzIiwic2VhcmNoTG9hZGluZyIsImFkZEFnZW50IiwicmVtb3ZlQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzZWxlY3RGaXJzdEFnZW50Iiwic29ydEFnZW50c0xpc3QiLCJfdXNlR2V0U2tpbGxzIiwic2tpbGxzIiwibG9hZGluZ1NraWxscyIsImhhbmRsZUdldFNraWxscyIsImFkZFNraWxsIiwidXBkYXRlU2tpbGxJbkxpc3QiLCJyZW1vdmVTa2lsbCIsImlzTUFJQSIsInVzZXJIYXNQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY3JlYXRlIiwiZWRpdCIsImNvbXB1dGVkQ3VycmVudE9wdGlvbiIsImlzR2xvYmFsU3BlY2lhbGlzdCIsImVudGl0eSIsImlzUHJvamVjdFNwZWNpYWxpc3QiLCJpc0NsaWVudFNwZWNpYWxpc3QiLCJpc01haWFrZXIiLCJteUFnZW50cyIsIm15U2tpbGxzIiwiY2hhdCIsInNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IiLCJzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IiLCJwcm9qZWN0U2VsZWN0b3IiLCJjbGllbnRTZWxlY3RvciIsIm5hbWUiLCJpc01haWFrZXJBZ2VudFNlbGVjdGVkIiwidHlwZSIsInNpZGViYXJBZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNGZXRjaGVkUmVmIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjb25jYXQiLCJfdXNlU3RhdGUyMSIsIl9iYW5uZXJFbnRyeUZhcSRmYXFUaSIsImZhcVRpdGxlIiwidHJpbSIsIl91c2VTdGF0ZTIyIiwibGF5b3V0TW9kZSIsInNldExheW91dE1vZGUiLCJleHBhbmRlZCIsImlzRmxvYXRpbmciLCJjb250ZW50V3JhcHBlclJlZiIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJkcmFnUG9zaXRpb24iLCJzZXREcmFnUG9zaXRpb24iLCJfdXNlRmxvYXRpbmdQYW5lbERyYWciLCJ0aWx0TW90aW9uIiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJzYW1wbGVQb2ludGVyTW92ZSIsImVuZFBvaW50ZXJUcmFja2luZyIsImRyYWdTdGF0ZVJlZiIsImNsYW1wRHJhZ1Bvc2l0aW9uIiwieCIsInkiLCJjb250ZW50V3JhcHBlciIsImN1cnJlbnQiLCJfY29udGVudFdyYXBwZXIkZ2V0Qm8iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsImhlaWdodCIsIm9mZnNldCIsIm1heFgiLCJNYXRoIiwibWF4IiwiaW5uZXJXaWR0aCIsIm1heFkiLCJpbm5lckhlaWdodCIsIm1pbiIsInByZXYiLCJwYWQiLCJoYW5kbGVEcmFnRW5kIiwiZXZlbnQiLCJfZHJhZ1N0YXRlUmVmJGN1cnJlbnQiLCJwb2ludGVySWQiLCJib2R5Iiwic3R5bGUiLCJ1c2VyU2VsZWN0IiwiY3Vyc29yIiwiaGFuZGxlRHJhZ01vdmUiLCJkcmFnU3RhdGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm5leHRQb3NpdGlvbiIsIm9mZnNldFgiLCJvZmZzZXRZIiwicmVzb2x2ZWREcmFnUG9zaXRpb24iLCJoYW5kbGVEcmFnU3RhcnQiLCJidXR0b24iLCJ0YXJnZXQiLCJjbG9zZXN0IiwicmVjdCIsImluaXRpYWxQb3NpdGlvbiIsImxlZnQiLCJ0b3AiLCJwb2ludGVyT2Zmc2V0WCIsInBvaW50ZXJPZmZzZXRZIiwiY3VycmVudFRhcmdldCIsInNldFBvaW50ZXJDYXB0dXJlIiwicHJldmVudERlZmF1bHQiLCJhaUNoYXREcmFnZ2FibGUiLCJzdGFydENoYXQiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJjb250ZXh0RGF0YSIsIl9vYmplY3RTcHJlYWQiLCJsZW5ndGgiLCJiYW5uZXJGYXFBdXRvU2VudFJlZiIsIl9iYW5uZXJFbnRyeUZhcSRmYXFUaTIiLCJlbnRpdHlSZWFkeSIsIkJvb2xlYW4iLCJpZCIsInVuZGVmaW5lZCIsImdvVG9DaGF0Iiwic2Vzc2lvbkV4dGVybmFsSWQiLCJzZWxlY3RlZEFnZW50IiwiZGF0YSIsImZpbmQiLCJhZ2VudEl0ZW0iLCJhZ2VudElkIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSIsInNlbmRNZXNzYWdlIiwic3RvcEdlbmVyYXRpb24iLCJzdHJlYW1pbmciLCJ3cml0aW5nIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwicHJvamVjdF9kZWxldGVkIiwiaGFuZGxlUmVzZXRDaGF0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0Iiwic3RvcCIsImhhbmRsZUJhY2siLCJvbk1lcmdlQ3JlYXRlZEFnZW50IiwiZXZ0IiwiX3JlZjMiLCJkZXRhaWwiLCJuZXh0QWdlbnQiLCJuYXZpZ2F0ZUhvbWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uU3luY0VkaXRlZEFnZW50IiwiX3JlZjQiLCJvcGVuQ2hhdFZpZXciLCJvcGVuTmV3Q2hhdFdpdGhBZ2VudCIsIl9kZXRhaWwkcHJvamVjdCIsIl9kZXRhaWwkY2xpZW50IiwiX3JlZjUiLCJ0YXNrIiwic2hvd05ld0NoYXQiLCJoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciIsImlzTXlBZ2VudHNTZWN0aW9uIiwic2hvd0JhY2tCdXR0b24iLCJoYW5kbGVPcGVuTWFya2V0cGxhY2UiLCJoYW5kbGVPcGVuU2tpbGxzIiwiaGFuZGxlR29Ub01haWFrZXIiLCJfY2FsbGVlMiIsIm1haWFrZXJBZ2VudCIsInJlc3BvbnNlIiwiX3QiLCJfY29udGV4dDIiLCJhIiwicGF0aCIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiYWJydXB0IiwiaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMiLCJpc01haWFrZXJDcmVhdG9ySG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsIm9uR29Ub0NoYXQiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJhZ2VudHNOYXZBY3RpdmUiLCJmbG9hdGluZyIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm9uQWdlbnRVcGRhdGUiLCJoaWRlQWdlbnRTZWxlY3RvciIsImlzTWFpYWtlclNlY3Rpb24iLCJvbkJhY2siLCJyZWZzIiwib25TZW5kTWVzc2FnZVJlYWR5IiwibG9hZGluZ0FnZW50cyIsIm9uRGVsZXRlQWdlbnQiLCJvbkZhdm9yaXRlQWdlbnRVcGRhdGUiLCJoYXNNb3JlQWdlbnRzIiwibG9hZGluZ01vcmVBZ2VudHMiLCJvbkxvYWRNb3JlQWdlbnRzIiwib25Hb1RvTWFpYWtlciIsIm9uRGVsZXRlU2tpbGwiLCJvblNlYXJjaEFnZW50cyIsInNlYXJjaExvYWRpbmdBZ2VudHMiLCJvblJlc3RhcnRTdW1tYXJ5IiwiaGFuZGxlU3RvcEdlbmVyYXRpb24iLCJjaGF0SWQiLCJzaG93RmFxcyIsInJlZiIsImNyZWF0ZVBvcnRhbCIsImVsZXZhdGVkIiwidGlsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9DaGF0QUlNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtcbiAgUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IE1BSUFFcnJvciB9IGZyb20gJy4uLy4uL2F0b21zL01BSUFFcnJvcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuXG5pbXBvcnQgeyBDaGF0QUlDb250ZW50IH0gZnJvbSAnLi4vQ2hhdEFJQ29udGVudCdcbmltcG9ydCB7IGJ1aWxkSGFuZGxlcnMsIG9wdGlvbnMgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICcuLi9TaWRlYmFyJ1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzJ1xuaW1wb3J0IHsgdXNlR2V0U2tpbGxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZ2V0U2tpbGxzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBDaGF0QUlNb2RhbEhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlcidcbmltcG9ydCB7IFNuYWNrYmFyIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL1NuYWNrQmFyL1NuYWNrYmFyJ1xuaW1wb3J0IHsgUHJvamVjdFN1bW1hcnlDb250ZW50IH0gZnJvbSAnLi4vUHJvamVjdFN1bW1hcnlDb250ZW50J1xuaW1wb3J0IHsgQWJtQWdlbnRNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbCdcbmltcG9ydCB7IEFibVNraWxsR2VuZXJhdGVNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwvQWJtU2tpbGxHZW5lcmF0ZU1vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7IGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCwgTWFpYUNoYXRNb2RhbExheW91dE1vZGUgfSBmcm9tICcuL2xheW91dCdcbmltcG9ydCB7IEZsb2F0aW5nUGFuZWxNb3Rpb24sIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCB9IGZyb20gJy4vZmxvYXRpbmdQYW5lbE1vdGlvbidcbmltcG9ydCB7IENoYXRBaU1vZGFsRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsRm9vdGVyJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IGlzTWFpYWtlckFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmNvbnN0IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlID0gKHNlY3Rpb246IHN0cmluZykgPT4ge1xuICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8IHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBpZiAoKHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBzZWN0aW9uID09PSAnY2xpZW50JyB8fCBzZWN0aW9uID09PSAndGFzaycpICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoeyBoYW5kbGVDbG9zZSB9OiBDaGF0QUlNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXNlRmFxc1N0b3JlLmdldFN0YXRlKCkuY2xlYXJGYXFzKClcbiAgICBoYW5kbGVDbG9zZT8uKClcbiAgfSwgW2hhbmRsZUNsb3NlXSlcbiAgY29uc3QgW3VzZXJJbml0aWFsTWVzc2FnZSwgc2V0VXNlckluaXRpYWxNZXNzYWdlXSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBbcmVmZXRjaENoYXRzLCBzZXRSZWZldGNoQ2hhdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50T3B0aW9uLCBzZXRDdXJyZW50T3B0aW9uXSA9IHVzZVN0YXRlKG9wdGlvbnMuaG9tZSlcbiAgY29uc3QgW2hhc0Vycm9yLCBzZXRIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IHsgc2tpbGxzLCBsb2FkaW5nOiBsb2FkaW5nU2tpbGxzLCBoYW5kbGVHZXRTa2lsbHMsIGFkZFNraWxsLCB1cGRhdGVTa2lsbEluTGlzdCwgcmVtb3ZlU2tpbGwgfSA9IHVzZUdldFNraWxscygpXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID1cbiAgICAodXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5lZGl0IHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5kZWxldGUpICYmXG4gICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICBjb25zdCBjb21wdXRlZEN1cnJlbnRPcHRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpc0dsb2JhbFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCdcbiAgICBjb25zdCBpc1Byb2plY3RTcGVjaWFsaXN0ID0gaXNNQUlBICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PSBudWxsKVxuICAgIGNvbnN0IGlzQ2xpZW50U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50J1xuICAgIGNvbnN0IGlzTWFpYWtlciA9IGlzTUFJQSAmJiBpc01haWFrZXJBZ2VudChhZ2VudClcblxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5teUFnZW50c1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5teVNraWxsc1xuICAgIH1cblxuICAgIGlmIChpc0dsb2JhbFNwZWNpYWxpc3QgJiYgIWlzTWFpYWtlciAmJiBjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNoYXRcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzUHJvamVjdFNwZWNpYWxpc3QgJiYgIXByb2plY3RcbiAgICBjb25zdCBzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNDbGllbnRTcGVjaWFsaXN0ICYmICFjbGllbnRcblxuICAgIGlmIChzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5wcm9qZWN0U2VsZWN0b3JcbiAgICB9XG4gICAgaWYgKHNob3VsZFNob3dDbGllbnRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2xpZW50U2VsZWN0b3JcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRPcHRpb25cbiAgfSwgW2N1cnJlbnRPcHRpb24sIHByb2plY3QsIGNsaWVudCwgaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8ubmFtZV0pXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gaXNNQUlBICYmIGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmIGlzTWFpYWtlckFnZW50KGFnZW50KSxcbiAgICBbaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8udHlwZSwgYWdlbnQ/Lm5hbWVdXG4gIClcblxuICBjb25zdCBzaWRlYmFyQWdlbnRzTmF2QWN0aXZlID0gdXNlTWVtbygoKTogJ21haWFrZXInIHwgJ215QWdlbnRzJyB8ICdteVNraWxscycgfCBudWxsID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzKSByZXR1cm4gJ215U2tpbGxzJ1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMpIHJldHVybiAnbXlBZ2VudHMnXG4gICAgaWYgKGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpIHJldHVybiAnbWFpYWtlcidcbiAgICByZXR1cm4gbnVsbFxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkXSlcblxuICAvKiBSZWFjdGl2YXIgY29uIGxhIGZpbGEg4oCcTWlzIGFnZW50ZXPigJ0gZW4gU2lkZWJhcjogbXlBZ2VudHNDb3VudCBwcm9wXG4gIGNvbnN0IHNpZGViYXJNeUFnZW50c0NvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGFnZW50cy5kYXRhLmZpbHRlcihcbiAgICAgIGEgPT4gIShhLnR5cGUgPT09ICdjbG9uZScgJiYgaXNNYWlha2VyQWdlbnQoYSkpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEVsIHVzdWFyaW8gcHVlZGUgY2FtYmlhciBhIHNpZGViYXIvZnVsbHNjcmVlbiBkZXNkZSBsb3MgY29udHJvbGVzIGRlbCBtb2RhbC5cbiAgY29uc3QgW2xheW91dE1vZGUsIHNldExheW91dE1vZGVdID0gdXNlU3RhdGU8TWFpYUNoYXRNb2RhbExheW91dE1vZGU+KCgpID0+IHtcbiAgICBpZiAoc2VjdGlvbiA9PT0gJ3Rhc2snKSByZXR1cm4gJ2Zsb2F0aW5nJ1xuICAgIGlmIChiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSkgcmV0dXJuICdmbG9hdGluZydcbiAgICByZXR1cm4gJ3NpZGViYXInXG4gIH0pXG4gIGNvbnN0IGV4cGFuZGVkID0gbGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXG4gIGNvbnN0IGlzRmxvYXRpbmcgPSBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbZHJhZ1Bvc2l0aW9uLCBzZXREcmFnUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcbiAgICB9LFxuICAgIFtlbmRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBkcmFnU3RhdGUgPSBkcmFnU3RhdGVSZWYuY3VycmVudFxuICAgICAgaWYgKCFkcmFnU3RhdGUgfHwgZHJhZ1N0YXRlLnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzYW1wbGVQb2ludGVyTW92ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuXG4gICAgICBjb25zdCBuZXh0UG9zaXRpb24gPSBjbGFtcERyYWdQb3NpdGlvbihldmVudC5jbGllbnRYIC0gZHJhZ1N0YXRlLm9mZnNldFgsIGV2ZW50LmNsaWVudFkgLSBkcmFnU3RhdGUub2Zmc2V0WSlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnggPT09IG5leHRQb3NpdGlvbi54ICYmIHByZXYueSA9PT0gbmV4dFBvc2l0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0UG9zaXRpb25cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIHNhbXBsZVBvaW50ZXJNb3ZlXVxuICApXG5cbiAgY29uc3QgcmVzb2x2ZWREcmFnUG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBpZiAoZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgY29uc3QgeCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZCA6IHBhZFxuICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkcmFnUG9zaXRpb24sIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Zsb2F0aW5nIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtyb2xlPVwiYnV0dG9uXCJdLCBbZGF0YS1uby1kcmFnPVwidHJ1ZVwiXScpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgaW5pdGlhbFBvc2l0aW9uID0gcmVzb2x2ZWREcmFnUG9zaXRpb24gPz8gY2xhbXBEcmFnUG9zaXRpb24ocmVjdC5sZWZ0LCByZWN0LnRvcClcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIGluaXRpYWxQb3NpdGlvbi54XG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WSA9IGV2ZW50LmNsaWVudFkgLSBpbml0aWFsUG9zaXRpb24ueVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24oaW5pdGlhbFBvc2l0aW9uKVxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIHBvaW50ZXJJZDogZXZlbnQucG9pbnRlcklkLFxuICAgICAgICBvZmZzZXRYOiBwb2ludGVyT2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogcG9pbnRlck9mZnNldFksXG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJ1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0RHJhZ2dhYmxlKVxuICAgICAgc3RhcnRQb2ludGVyVHJhY2tpbmcoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgaXNGbG9hdGluZywgcmVzb2x2ZWREcmFnUG9zaXRpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3Qgc3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmcsXG4gICAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgJycsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyB8fCBbXSxcbiAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihtZW50aW9ucyAmJiBtZW50aW9ucy5sZW5ndGggPiAwID8geyBtZW50aW9ucyB9IDoge30pLFxuICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgYmFubmVyRmFxQXV0b1NlbnRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbnRpdHlSZWFkeSA9IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/IEJvb2xlYW4ocHJvamVjdD8uaWQpIDogc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyBCb29sZWFuKGNsaWVudD8uaWQpIDogdHJ1ZVxuXG4gICAgaWYgKCFiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSB8fCBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50IHx8IGxvYWRpbmcgfHwgIWFnZW50Py5pZCB8fCAhZW50aXR5UmVhZHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgc3RhcnRDaGF0KFxuICAgICAgYmFubmVyRW50cnlGYXEuZmFxVGl0bGUsXG4gICAgICBbXSxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcUlkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYmFubmVyRW50cnlGYXEuY29udGV4dERhdGFcbiAgICApXG4gIH0sIFtcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxSWQsXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlLFxuICAgIGJhbm5lckVudHJ5RmFxPy5jb250ZXh0RGF0YSxcbiAgICBsb2FkaW5nLFxuICAgIGFnZW50Py5pZCxcbiAgICBhZ2VudD8uZW50aXR5LFxuICAgIHByb2plY3Q/LmlkLFxuICAgIGNsaWVudD8uaWQsXG4gICAgc2VjdGlvbixcbiAgICBzdGFydENoYXQsXG4gIF0pXG5cbiAgY29uc3QgZ29Ub0NoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hhdDogYW55KSA9PiB7XG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmlkID09PSBjaGF0LmFnZW50SWQpXG4gICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgfVxuICAgICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBhZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZCxcbiAgICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgICAgc3RyZWFtaW5nOiBib29sZWFuLFxuICAgICAgd3JpdGluZzogYm9vbGVhblxuICAgICkgPT4ge1xuICAgICAgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbigoKSA9PiBzZW5kTWVzc2FnZSlcbiAgICAgIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24oKCkgPT4gc3RvcEdlbmVyYXRpb24pXG4gICAgICBzZXRJc1N0cmVhbWluZyhzdHJlYW1pbmcpXG4gICAgICBzZXRJc1dyaXRpbmcod3JpdGluZylcbiAgICB9LFxuICAgIFtdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgaWYgKHNlbmRNZXNzYWdlRnVuY3Rpb24gJiYgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgICAgc2VuZE1lc3NhZ2VGdW5jdGlvbihtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydENoYXQobWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHN0YXJ0Q2hhdCwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBoYW5kbGVHb0hvbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2kgZXN0YW1vcyBlbiB1bmEgY29udmVyc2FjacOzbiB5IHZhbW9zIGEgaG9tZSwgcmVzZXRlYXIgaW5pdGlhbENoYXRJZCB5IGluY3JlbWVudGFyIG5ld0NoYXRLZXlcbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uPy4oKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChzZWN0aW9uICE9PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBzZWN0aW9uLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiIGRlbCBoZWFkZXIgKHNvbG8gYWdlbnRlcyBjbG9uZSk6XG4gIC8vIC0gQ29uIGNvbnZlcnNhY2nDs24gaW5pY2lhZGE6IGluaWNpYSB1bmEgbnVldmEgY29udmVyc2FjacOzbiB5IHZ1ZWx2ZSBhbCBob21lICh0b2RhcyBsYXMgc2VjY2lvbmVzKS5cbiAgLy8gLSBFbiBlbCBob21lIChGQVFzL0ZVQSk6IHZ1ZWx2ZSBhbCBzZWxlY3RvciBkZSBwcm95ZWN0b3MvY2xpZW50ZXMgbGltcGlhbmRvIGxhIGVudGl0eSBzZWxlY2Npb25hZGEuXG4gIGNvbnN0IGhhbmRsZUJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBoYW5kbGVSZXNldENoYXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIEVuIHNlY3Rpb24gJ3Rhc2snIHByZXNlcnZhciBwcm9qZWN0L2NsaWVudDsgZW4gb3RyYXMgc2VjY2lvbmVzLCBpciBhbCBzZWxlY3RvciBsaW1waWFuZG8gcHJvamVjdC9jbGllbnRcbiAgICBpZiAoc2VjdGlvbiAhPT0gJ3Rhc2snKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgfVxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzZWN0aW9uLCBoYW5kbGVSZXNldENoYXQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFza10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaGFuZGxlR2V0QWdlbnRzKClcbiAgICB9XG4gIH0sIFtoYW5kbGVHZXRBZ2VudHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25NZXJnZUNyZWF0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKG5leHRBZ2VudD8uaWQpIHtcbiAgICAgICAgYWRkQWdlbnQobmV4dEFnZW50LCB7IG5hdmlnYXRlSG9tZTogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW2FkZEFnZW50XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU3luY0VkaXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAoIW5leHRBZ2VudD8uaWQpIHJldHVyblxuICAgICAgdXBkYXRlQWdlbnQobmV4dEFnZW50KVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gbmV4dEFnZW50LmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFt1cGRhdGVBZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50Py5pZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuQ2hhdFZpZXcgPSAoKSA9PiB7XG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5jaGF0KVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIENoYXRBSU15QWdlbnRzLmhhbmRsZVVzZUFnZW50ICsgb25CYWNrIChoYW5kbGVycy5ob21lKS5cbiAgICogIEVsIGRldGFpbCBwdWVkZSB0cmFlciBvcGNpb25hbG1lbnRlIGBwcm9qZWN0YCwgYGNsaWVudGAsIGB0YXNrYCBwYXJhIGZsb3dzIHF1ZVxuICAgKiAgbmVjZXNpdGFuIHByZXNlcnZhciBjb250ZXh0byAoZWouIHNlbGVjdG9yIGRlIGFnZW50ZXMgZGVzZGUgdW5hIHRhcmVhKS4gU2kgbm8gdmllbmVuLFxuICAgKiAgc2UgbWFudGllbmUgZWwgY29tcG9ydGFtaWVudG8gb3JpZ2luYWwgZGUgbGltcGlhciBwcm9qZWN0L2NsaWVudC4gKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuTmV3Q2hhdFdpdGhBZ2VudCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDx7XG4gICAgICAgIGFnZW50OiBBZ2VudFxuICAgICAgICBwcm9qZWN0PzogUHJvamVjdCB8IG51bGxcbiAgICAgICAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICAgICAgICB0YXNrPzogVGFzayB8IG51bGxcbiAgICAgIH0+XG4gICAgICBjb25zdCBuZXh0QWdlbnQgPSBkZXRhaWw/LmFnZW50XG4gICAgICBpZiAoIW5leHRBZ2VudCkgcmV0dXJuXG5cbiAgICAgIHNldFByb2plY3QoZGV0YWlsPy5wcm9qZWN0ID8/IG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihkZXRhaWw/LmNsaWVudCA/PyBudWxsKVxuICAgICAgaWYgKGRldGFpbD8udGFzayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNldFRhc2s/LihkZXRhaWwudGFzaylcbiAgICAgIH1cbiAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICB9XG4gIH0sIFtzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXSlcblxuICBjb25zdCBzaG93TmV3Q2hhdCA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGhpZGVIZWFkZXJBZ2VudFNlbGVjdG9yID1cbiAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMgfHwgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzXG4gIGNvbnN0IGlzTXlBZ2VudHNTZWN0aW9uID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzXG4gIGNvbnN0IHNob3dCYWNrQnV0dG9uID1cbiAgICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJlxuICAgIGFnZW50Py5lbnRpdHkgIT09ICdnbG9iYWwnICYmXG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmcgJiZcbiAgICAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQgfHwgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIHNlY3Rpb24gIT09ICd0YXNrJykpXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2xlYXJBZ2VudCgpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbY2xlYXJBZ2VudF0pXG5cbiAgY29uc3QgaGFuZGxlT3BlblNraWxscyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15U2tpbGxzKVxuICAgIGhhbmRsZUdldFNraWxscygpXG4gIH0sIFtoYW5kbGVHZXRTa2lsbHNdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJylcbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0VGFzaz8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFthZ2VudHMuZGF0YSwgaTE4bi5sYW5ndWFnZSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmVtb3ZlQWdlbnQoYWdlbnRJZClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IGFnZW50SWQpIHtcbiAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudChhZ2VudElkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50Py5pZCwgcmVtb3ZlQWdlbnQsIHNlbGVjdEZpcnN0QWdlbnRdXG4gIClcblxuICBjb25zdCBpc01haWFrZXJDcmVhdG9ySG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgIWlzRmxvYXRpbmcgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgIGFnZW50c05hdkFjdGl2ZT17c2lkZWJhckFnZW50c05hdkFjdGl2ZX1cbiAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzPXtoYW5kbGVPcGVuU2tpbGxzfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U0NDQUlNQ29udGVudCBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgPENoYXRBSU1vZGFsSGVhZGVyXG4gICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICBvbkxheW91dE1vZGVDaGFuZ2U9e3NldExheW91dE1vZGV9XG4gICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgIGRyYWdnYWJsZT17aXNGbG9hdGluZ31cbiAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgIG9uRHJhZ01vdmU9e2hhbmRsZURyYWdNb3ZlfVxuICAgICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgIGhhc0Vycm9yPXshIWFnZW50RXJyb3J9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBsb2FkaW5nTW9yZT17bG9hZGluZ01vcmV9XG4gICAgICAgICAgaGFzTW9yZT17YWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgIGhhbmRsZVJlc2V0Q2hhdD17aGFuZGxlUmVzZXRDaGF0fVxuICAgICAgICAgIG9uQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgbG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgIHNvcnRBZ2VudHNMaXN0PXtzb3J0QWdlbnRzTGlzdH1cbiAgICAgICAgICBoaWRlQWdlbnRTZWxlY3Rvcj17aGlkZUhlYWRlckFnZW50U2VsZWN0b3J9XG4gICAgICAgICAgaXNNeUFnZW50c1NlY3Rpb249e2lzTXlBZ2VudHNTZWN0aW9ufVxuICAgICAgICAgIGlzTWFpYWtlclNlY3Rpb249e2lzTWFpYWtlckNyZWF0b3JIb21lfVxuICAgICAgICAgIHNob3dCYWNrQnV0dG9uPXtzaG93QmFja0J1dHRvbn1cbiAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XG4gICAgICAgIC8+XG4gICAgICAgIHtoYXNFcnJvciA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBsb2FkaW5nQWdlbnRzPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgICBza2lsbHM9e3NraWxsc31cbiAgICAgICAgICAgIGxvYWRpbmdTa2lsbHM9e2xvYWRpbmdTa2lsbHN9XG4gICAgICAgICAgICBvbkRlbGV0ZVNraWxsPXtyZW1vdmVTa2lsbH1cbiAgICAgICAgICAgIG9uU2VhcmNoQWdlbnRzPXtzZWFyY2hDdXN0b21BZ2VudHN9XG4gICAgICAgICAgICBzZWFyY2hMb2FkaW5nQWdlbnRzPXtzZWFyY2hMb2FkaW5nfVxuICAgICAgICAgICAgYWdlbnRFcnJvcj17YWdlbnRFcnJvcn1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxQcm9qZWN0U3VtbWFyeUNvbnRlbnQgb25SZXN0YXJ0U3VtbWFyeT17aGFuZGxlcnMuaG9tZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgeygoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgISFhZ2VudHM/LmRhdGE/Lmxlbmd0aCkgfHxcbiAgICAgICAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkgJiZcbiAgICAgICAgICAhaXNNYWlha2VyQ3JlYXRvckhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24pICYmIChcbiAgICAgICAgICAgIDxDaGF0QWlNb2RhbEZvb3RlclxuICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgaGFuZGxlU3RvcEdlbmVyYXRpb249e3N0b3BHZW5lcmF0aW9uRnVuY3Rpb259XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgICAgICAgIGNoYXRJZD17aW5pdGlhbENoYXRJZH1cbiAgICAgICAgICAgICAgbmV3Q2hhdEtleT17bmV3Q2hhdEtleX1cbiAgICAgICAgICAgICAgc2hvd0ZhcXM9e2NvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0fVxuICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC9TQ0NBSU1Db250ZW50PlxuICAgIDwvPlxuICApXG5cbiAgY29uc3QgY29udGVudFdyYXBwZXIgPSAoXG4gICAgPFNDQ0FJTUNvbnRlbnRXcmFwcGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9IHJlZj17Y29udGVudFdyYXBwZXJSZWZ9PlxuICAgICAge21vZGFsUGFuZWx9XG4gICAgPC9TQ0NBSU1Db250ZW50V3JhcHBlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgc2VsZWN0b3IgJiZcbiAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICA8U0NDQUlNV3JhcHBlclxuICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgIGRyYWdQb3NpdGlvbj17cmVzb2x2ZWREcmFnUG9zaXRpb259XG4gICAgICAgIGVsZXZhdGVkPXtzZWN0aW9uID09PSAndGFzayd9XG4gICAgICA+XG4gICAgICAgIDxGbG9hdGluZ1BhbmVsTW90aW9uIHRpbHQ9e3RpbHRNb3Rpb259IGV4cGFuZGVkPXtleHBhbmRlZH0+XG4gICAgICAgICAge2NvbnRlbnRXcmFwcGVyfVxuICAgICAgICA8L0Zsb2F0aW5nUGFuZWxNb3Rpb24+XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1BZ2VudE1vZGFsXG4gICAgICAgICAgICBhZGRBZ2VudD17YWRkQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudD17dXBkYXRlQWdlbnR9XG4gICAgICAgICAgICByZW1vdmVBZ2VudD17cmVtb3ZlQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudD17c2VsZWN0Rmlyc3RBZ2VudH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtU2tpbGxNb2RhbCBhZGRTa2lsbD17YWRkU2tpbGx9IHVwZGF0ZVNraWxsSW5MaXN0PXt1cGRhdGVTa2lsbEluTGlzdH0gcmVtb3ZlU2tpbGw9e3JlbW92ZVNraWxsfSAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIDxBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgLz59XG4gICAgICAgIDxTbmFja2JhciAvPlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyPixcbiAgICAgIHNlbGVjdG9yXG4gICAgKVxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FFRUEsV0FBVyxFQUNYQyxPQUFPLEVBQ1BDLFFBQVEsRUFDUkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLGVBQWUsUUFFVixPQUFPO0FBQ2QsT0FBT0MsUUFBUSxNQUFNLFdBQVc7QUFDaEMsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsT0FBTyxRQUFRLDJCQUEyQjtBQUNuRCxTQUFTQyxTQUFTLFFBQVEsdUJBQXVCO0FBQ2pELFNBQVNDLHNCQUFzQixRQUFRLHVDQUF1QztBQUU5RSxTQUFTQyxhQUFhLFFBQVEsa0JBQWtCO0FBQ2hELFNBQVNDLGFBQWEsRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDcEQsU0FBU0MsT0FBTyxRQUFRLFlBQVk7QUFDcEMsU0FBU0MsWUFBWSxRQUFRLHlDQUF5QztBQUN0RSxTQUFTQyxZQUFZLFFBQVEseUNBQXlDO0FBQ3RFLFNBQVNDLGdCQUFnQixRQUFRLGlDQUFpQztBQUdsRSxTQUFTQyxpQkFBaUIsUUFBUSxrREFBa0Q7QUFDcEYsU0FBU0MsUUFBUSxRQUFRLG1DQUFtQztBQUM1RCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsYUFBYSxRQUFRLDZDQUE2QztBQUMzRSxTQUFTQyxhQUFh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