@projectcor/maia-components 2.51.0 → 2.51.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -52,6 +52,7 @@ import { fetchAgentDetail } from '../../../services/maia/Agents/fetchAgentDetail
52
52
  import { mapCORLang } from '../../../lang/utils';
53
53
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
54
54
  import { MAIA_OPEN_FROM_HOST_EVENT } from '../../../utils/maiaHostOpen';
55
+ import { useIsMaiaPageRoute } from '../../../hooks/useIsMaiaPageRoute';
55
56
  import { clampFloatingPanelPosition, hasAnyActiveSessionInMeta, hasBannerFaqTitle, isBannerFaqReadyToAutoSend, resolveAiChatBackDestination, resolveComputedCurrentOption, resolveInitialCurrentOption, resolveLegacyContextSession, resolveSidebarAgentsNavActive, shouldRestoreExpandedPanel, shouldSkipFloatingDragTarget, validateAccessByFeature, resolveHostTakeoverEntityState, buildHostTakeoverPersistContext, buildMaiaPanelSessionPatch, dispatchSkillMentionInsert, ensureAgentsBeforeSkillUse, resolveFloatingPanelDragPosition, resolveHostTakeoverAgentId, resolveMaiaModalI18nLang, resolveMinimizedRestoreTarget, resolveNextDragPosition, resolveUserHasAgentManagementPermissions, shouldBackClearPinnedContext, shouldBackStartNewChatPreservingContext, shouldMarkOrchestratorContextReset, shouldStartNewChatFromCatalog, resolveHasPinnedContext, resolveOrchestratorHomeNavFlags, shouldShowOrchestratorBackButton, shouldClearClientOnGoHomeFromChat, shouldClearTaskOnGoHomeFromChat, shouldResetAgentToFirstOnGoHome, shouldClearOrchestratorGlobalContextOnGoHome, shouldUseActiveChatSendHandler, shouldPrefetchAgentsForCatalogNewChat, canOpenMaiaMarketplace, shouldMarkAgentAsLegacyContext, buildLegacyContextAgent, buildLegacyContextMigrationPatch, findOrchestratorAgent, shouldSetChatViewHiddenOnMount, shouldPersistLastActiveChatId, shouldSyncPanelSessionOnPageHide, resolveCachedAgentsIfAvailable, shouldAttemptInitialAgentsFetch, findAgentForChatItem, shouldApplyClientOnHostTakeover, shouldSelectFirstAgentOnHostTakeover, shouldResetChatStateOnGoHome, shouldClearContextForCatalogOrSkillAgent, resolveOpenNewChatWithAgentContext, canContinueLegacyContextInNewChat, resolveSessionRestoreNavRoute, shouldSkipAgentsLoadOnSessionRestore, shouldFetchAgentDetailOnSessionRestore, shouldPassAgentToGetAgentsOnRestore, shouldSelectFetchedAgentAfterRestore, resolveSnapshotChipsProject, resolveChatModalSectionFlags, shouldRenderChatSidebar, resolveChatModalMainContentView, shouldShowChatModalFooter, shouldUseElevatedMaiaPanel, shouldReselectAgentAfterDelete, shouldClearDragPositionOnLayoutChange, shouldStartFloatingPanelDrag, isActiveFloatingDragPointer, shouldOpenSkillsCatalog, shouldUseDragClampFallback, resolveLayoutDragPositionUpdate, resolvePersistedDragPositionOnEnd, buildUserInitialMessageFromStartChat, shouldResetSidebarErrorOnStartChat } from './ChatAIModal.helpers';
56
57
 
57
58
  /** Metadata de la session abierta (emitida por useChatMessages al cargar una conversación). */
@@ -82,6 +83,8 @@ export var ChatAIModal = function ChatAIModal() {
82
83
  _useState4 = _slicedToArray(_useState3, 2),
83
84
  isMinimized = _useState4[0],
84
85
  setIsMinimized = _useState4[1];
86
+ var isMaiaPageRoute = useIsMaiaPageRoute();
87
+ var initialChatsRefetchDoneRef = useRef(false);
85
88
  var setChatViewVisible = useChatsStore(function (state) {
86
89
  return state.setChatViewVisible;
87
90
  });
@@ -530,6 +533,12 @@ export var ChatAIModal = function ChatAIModal() {
530
533
  }
531
534
  }, _callee);
532
535
  })), [handleGetAgents]);
536
+ useEffect(function () {
537
+ if (isMinimized || loading || initialChatsRefetchDoneRef.current) return;
538
+ if (!agents.data.length) return;
539
+ initialChatsRefetchDoneRef.current = true;
540
+ setRefetchChats(true);
541
+ }, [isMinimized, loading, agents.data.length]);
533
542
  useEffect(function () {
534
543
  if (isMinimized) {
535
544
  return undefined;
@@ -569,6 +578,8 @@ export var ChatAIModal = function ChatAIModal() {
569
578
  }
570
579
  setIsMinimized(false);
571
580
  setChatViewVisible(true);
581
+ // List may be stale while minimized (header stayed mounted with cached store).
582
+ setRefetchChats(true);
572
583
  amplitudEvent(EVENTS.aiChatOpen, {
573
584
  option: 'minimize'
574
585
  });
@@ -583,7 +594,7 @@ export var ChatAIModal = function ChatAIModal() {
583
594
  })["catch"](function () {
584
595
  return undefined;
585
596
  });
586
- }, [amplitudEvent, ensureAgentsLoaded, focusChatInput, selectAgent, setChatViewVisible, user.id]);
597
+ }, [amplitudEvent, ensureAgentsLoaded, focusChatInput, selectAgent, setChatViewVisible, setRefetchChats, user.id]);
587
598
 
588
599
  /**
589
600
  * Toma control desde un host (header, proyecto, cliente…): abre el panel, descarta la
@@ -1099,7 +1110,7 @@ export var ChatAIModal = function ChatAIModal() {
1099
1110
  loading: loading,
1100
1111
  hasAccess: hasChatAccess
1101
1112
  });
1102
- var showSidebar = shouldRenderChatSidebar(hasChatAccess, isFloating);
1113
+ var showSidebar = shouldRenderChatSidebar(hasChatAccess, isFloating, isMaiaPageRoute);
1103
1114
 
1104
1115
  // Botón "volver": solo para el orchestrator.
1105
1116
  // - En el chat: disponible en todas las secciones (header y project/client/task).
@@ -1368,6 +1379,7 @@ export var ChatAIModal = function ChatAIModal() {
1368
1379
  case 2:
1369
1380
  _context9.prev = 2;
1370
1381
  setIsRestoringSession(false);
1382
+ setRefetchChats(true);
1371
1383
  return _context9.finish(2);
1372
1384
  case 3:
1373
1385
  case "end":
@@ -1520,4 +1532,4 @@ export var ChatAIModal = function ChatAIModal() {
1520
1532
  }), userHasSkillsAccess && /*#__PURE__*/_jsx(AbmSkillGenerateModal, {}), /*#__PURE__*/_jsx(Snackbar, {})]
1521
1533
  }), selector);
1522
1534
  };
1523
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJNQUlBRXJyb3IiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdldFNraWxscyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIkFibVNraWxsTW9kYWwiLCJTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCIsIkFibVNraWxsR2VuZXJhdGVNb2RhbCIsIlNFQ1RJT05TIiwiU0NDQUlNQ29udGVudCIsIlNDQ0FJTUNvbnRlbnRXcmFwcGVyIiwiU0NDQUlNTWluaW1pemVkSGlkZSIsIlNDQ0FJTVdyYXBwZXIiLCJNYWlhTWluaW1pemVkUGlsbCIsInVzZU1pbmltaXplZFBpbGxOb3ZlbHR5RG90IiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudCIsInVzZUZhcXNTdG9yZSIsImdldENoYXRzU3RvcmVTdGF0ZSIsInVzZUNoYXRzU3RvcmUiLCJyZWFkTGFzdEFjdGl2ZUNoYXRJZCIsIndyaXRlTGFzdEFjdGl2ZUNoYXRJZCIsImNsZWFyTWFpYVBhbmVsU2Vzc2lvbiIsInBhdGNoTWFpYVBhbmVsU2Vzc2lvbiIsInJlYWRNYWlhUGFuZWxTZXNzaW9uIiwid3JpdGVNYWlhUGFuZWxTZXNzaW9uIiwidXNlU2Vzc2lvbnNTdG9yZSIsImZldGNoTWFpYSIsImZldGNoQWdlbnREZXRhaWwiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UIiwiY2xhbXBGbG9hdGluZ1BhbmVsUG9zaXRpb24iLCJoYXNBbnlBY3RpdmVTZXNzaW9uSW5NZXRhIiwiaGFzQmFubmVyRmFxVGl0bGUiLCJpc0Jhbm5lckZhcVJlYWR5VG9BdXRvU2VuZCIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJyZXNvbHZlQ29tcHV0ZWRDdXJyZW50T3B0aW9uIiwicmVzb2x2ZUluaXRpYWxDdXJyZW50T3B0aW9uIiwicmVzb2x2ZUxlZ2FjeUNvbnRleHRTZXNzaW9uIiwicmVzb2x2ZVNpZGViYXJBZ2VudHNOYXZBY3RpdmUiLCJzaG91bGRSZXN0b3JlRXhwYW5kZWRQYW5lbCIsInNob3VsZFNraXBGbG9hdGluZ0RyYWdUYXJnZXQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInJlc29sdmVIb3N0VGFrZW92ZXJFbnRpdHlTdGF0ZSIsImJ1aWxkSG9zdFRha2VvdmVyUGVyc2lzdENvbnRleHQiLCJidWlsZE1haWFQYW5lbFNlc3Npb25QYXRjaCIsImRpc3BhdGNoU2tpbGxNZW50aW9uSW5zZXJ0IiwiZW5zdXJlQWdlbnRzQmVmb3JlU2tpbGxVc2UiLCJyZXNvbHZlRmxvYXRpbmdQYW5lbERyYWdQb3NpdGlvbiIsInJlc29sdmVIb3N0VGFrZW92ZXJBZ2VudElkIiwicmVzb2x2ZU1haWFNb2RhbEkxOG5MYW5nIiwicmVzb2x2ZU1pbmltaXplZFJlc3RvcmVUYXJnZXQiLCJyZXNvbHZlTmV4dERyYWdQb3NpdGlvbiIsInJlc29sdmVVc2VySGFzQWdlbnRNYW5hZ2VtZW50UGVybWlzc2lvbnMiLCJzaG91bGRCYWNrQ2xlYXJQaW5uZWRDb250ZXh0Iiwic2hvdWxkQmFja1N0YXJ0TmV3Q2hhdFByZXNlcnZpbmdDb250ZXh0Iiwic2hvdWxkTWFya09yY2hlc3RyYXRvckNvbnRleHRSZXNldCIsInNob3VsZFN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nIiwicmVzb2x2ZUhhc1Bpbm5lZENvbnRleHQiLCJyZXNvbHZlT3JjaGVzdHJhdG9ySG9tZU5hdkZsYWdzIiwic2hvdWxkU2hvd09yY2hlc3RyYXRvckJhY2tCdXR0b24iLCJzaG91bGRDbGVhckNsaWVudE9uR29Ib21lRnJvbUNoYXQiLCJzaG91bGRDbGVhclRhc2tPbkdvSG9tZUZyb21DaGF0Iiwic2hvdWxkUmVzZXRBZ2VudFRvRmlyc3RPbkdvSG9tZSIsInNob3VsZENsZWFyT3JjaGVzdHJhdG9yR2xvYmFsQ29udGV4dE9uR29Ib21lIiwic2hvdWxkVXNlQWN0aXZlQ2hhdFNlbmRIYW5kbGVyIiwic2hvdWxkUHJlZmV0Y2hBZ2VudHNGb3JDYXRhbG9nTmV3Q2hhdCIsImNhbk9wZW5NYWlhTWFya2V0cGxhY2UiLCJzaG91bGRNYXJrQWdlbnRBc0xlZ2FjeUNvbnRleHQiLCJidWlsZExlZ2FjeUNvbnRleHRBZ2VudCIsImJ1aWxkTGVnYWN5Q29udGV4dE1pZ3JhdGlvblBhdGNoIiwiZmluZE9yY2hlc3RyYXRvckFnZW50Iiwic2hvdWxkU2V0Q2hhdFZpZXdIaWRkZW5Pbk1vdW50Iiwic2hvdWxkUGVyc2lzdExhc3RBY3RpdmVDaGF0SWQiLCJzaG91bGRTeW5jUGFuZWxTZXNzaW9uT25QYWdlSGlkZSIsInJlc29sdmVDYWNoZWRBZ2VudHNJZkF2YWlsYWJsZSIsInNob3VsZEF0dGVtcHRJbml0aWFsQWdlbnRzRmV0Y2giLCJmaW5kQWdlbnRGb3JDaGF0SXRlbSIsInNob3VsZEFwcGx5Q2xpZW50T25Ib3N0VGFrZW92ZXIiLCJzaG91bGRTZWxlY3RGaXJzdEFnZW50T25Ib3N0VGFrZW92ZXIiLCJzaG91bGRSZXNldENoYXRTdGF0ZU9uR29Ib21lIiwic2hvdWxkQ2xlYXJDb250ZXh0Rm9yQ2F0YWxvZ09yU2tpbGxBZ2VudCIsInJlc29sdmVPcGVuTmV3Q2hhdFdpdGhBZ2VudENvbnRleHQiLCJjYW5Db250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQiLCJyZXNvbHZlU2Vzc2lvblJlc3RvcmVOYXZSb3V0ZSIsInNob3VsZFNraXBBZ2VudHNMb2FkT25TZXNzaW9uUmVzdG9yZSIsInNob3VsZEZldGNoQWdlbnREZXRhaWxPblNlc3Npb25SZXN0b3JlIiwic2hvdWxkUGFzc0FnZW50VG9HZXRBZ2VudHNPblJlc3RvcmUiLCJzaG91bGRTZWxlY3RGZXRjaGVkQWdlbnRBZnRlclJlc3RvcmUiLCJyZXNvbHZlU25hcHNob3RDaGlwc1Byb2plY3QiLCJyZXNvbHZlQ2hhdE1vZGFsU2VjdGlvbkZsYWdzIiwic2hvdWxkUmVuZGVyQ2hhdFNpZGViYXIiLCJyZXNvbHZlQ2hhdE1vZGFsTWFpbkNvbnRlbnRWaWV3Iiwic2hvdWxkU2hvd0NoYXRNb2RhbEZvb3RlciIsInNob3VsZFVzZUVsZXZhdGVkTWFpYVBhbmVsIiwic2hvdWxkUmVzZWxlY3RBZ2VudEFmdGVyRGVsZXRlIiwic2hvdWxkQ2xlYXJEcmFnUG9zaXRpb25PbkxheW91dENoYW5nZSIsInNob3VsZFN0YXJ0RmxvYXRpbmdQYW5lbERyYWciLCJpc0FjdGl2ZUZsb2F0aW5nRHJhZ1BvaW50ZXIiLCJzaG91bGRPcGVuU2tpbGxzQ2F0YWxvZyIsInNob3VsZFVzZURyYWdDbGFtcEZhbGxiYWNrIiwicmVzb2x2ZUxheW91dERyYWdQb3NpdGlvblVwZGF0ZSIsInJlc29sdmVQZXJzaXN0ZWREcmFnUG9zaXRpb25PbkVuZCIsImJ1aWxkVXNlckluaXRpYWxNZXNzYWdlRnJvbVN0YXJ0Q2hhdCIsInNob3VsZFJlc2V0U2lkZWJhckVycm9yT25TdGFydENoYXQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJJRF9NT0RBTF9DSEFUX0FHRU5UIiwiQ2hhdEFJTW9kYWwiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFIiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFIyIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSNSIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjYiLCJ1c2VyIiwiX3VzZVRyYW5zbGF0aW9uIiwiYWJtQWdlbnQiLCJpMThuIiwiYW1wbGl0dWRFdmVudCIsInNhdmVkU2Vzc2lvbk9uTW91bnRSZWYiLCJpZCIsInNob3VsZFJlc3RvcmVFeHBhbmRlZCIsImN1cnJlbnQiLCJwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYiLCJzZXNzaW9uUmVzdG9yZVN0YXJ0ZWRSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc1Jlc3RvcmluZ1Nlc3Npb24iLCJzZXRJc1Jlc3RvcmluZ1Nlc3Npb24iLCJzaWRlYmFyT3BlblJlZiIsInNpZGViYXJPcGVuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc01pbmltaXplZCIsInNldElzTWluaW1pemVkIiwic2V0Q2hhdFZpZXdWaXNpYmxlIiwic3RhdGUiLCJ1bnJlYWRDb3VudCIsInNob3dNaW5pbWl6ZWROb3ZlbHR5RG90IiwiYWN0aXZlQ2hhdElkIiwiaGFzQWN0aXZlU3RyZWFtIiwibWV0YSIsImdvVG9DaGF0UmVmIiwiZ29Ib21lUmVmIiwiaGFuZGxlTWluaW1pemUiLCJhaUNoYXRNaW5pbWl6ZSIsImlzRXhwYW5kZWQiLCJmb2N1c0NoYXRJbnB1dCIsIndpbmRvdyIsInNldFRpbWVvdXQiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsIl91c2VTdGF0ZTUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGU2IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJzZXNzaW9uTWV0YSIsInNldFNlc3Npb25NZXRhIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTIxIiwic2F2ZWQiLCJhZ2VudHNOYXZBY3RpdmUiLCJjdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMjIiLCJzZXRDdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2IiwiZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwic2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwicHJldkhhc1Bpbm5lZENvbnRleHRSZWYiLCJoYW5kbGVycyIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJzaWRlYmFySGFzRXJyb3IiLCJzZXRTaWRlYmFySGFzRXJyb3IiLCJsYW5nIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50IiwiY2xlYXJBZ2VudCIsInNlY3Rpb24iLCJhZ2VudCIsInByb2plY3QiLCJjbGllbnQiLCJ0YXNrIiwiY2hpcHNQcm9qZWN0IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0IiwiYmFubmVyRW50cnlGYXEiLCJzZXRUYXNrIiwidG9vbHRpcFpJbmRleCIsIl91c2VHZXRBZ2VudHMiLCJoYW5kbGVHb0hvbWUiLCJob21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJzZWFyY2hMb2FkaW5nIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsImFnZW50c0RhdGFSZWYiLCJkYXRhIiwiX3VzZUdldFNraWxscyIsIm15U2tpbGxzIiwic2hhcmVkU2tpbGxzIiwibG9hZGluZ1NraWxscyIsImhhbmRsZUdldFNraWxscyIsImFkZFNraWxsIiwidXBkYXRlU2tpbGxJbkxpc3QiLCJyZW1vdmVTa2lsbCIsInVzZXJIYXNQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiQm9vbGVhbiIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJ1c2VySGFzU2tpbGxzQWNjZXNzIiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwibXVsdGlBZ2VudHNBY2Nlc3MiLCJpc01haWFrZXJBZ2VudFNlbGVjdGVkIiwic2lkZWJhckFnZW50c05hdkFjdGl2ZSIsImFnZW50c0ZldGNoZWRSZWYiLCJzZWxlY3RvciIsInF1ZXJ5U2VsZWN0b3IiLCJjb25jYXQiLCJfdXNlU3RhdGUyOSIsIl91c2VTdGF0ZTMwIiwibGF5b3V0TW9kZSIsInNldExheW91dE1vZGUiLCJoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlIiwibW9kZSIsImV4cGFuZGVkIiwiaXNGbG9hdGluZyIsImNvbnRlbnRXcmFwcGVyUmVmIiwiX3VzZVN0YXRlMzEiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFIzIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSNCIsImRyYWdQb3NpdGlvbiIsIl91c2VTdGF0ZTMyIiwic2V0RHJhZ1Bvc2l0aW9uIiwiX3VzZUZsb2F0aW5nUGFuZWxEcmFnIiwidGlsdE1vdGlvbiIsInN0YXJ0UG9pbnRlclRyYWNraW5nIiwic2FtcGxlUG9pbnRlck1vdmUiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJkcmFnU3RhdGVSZWYiLCJjbGFtcERyYWdQb3NpdGlvbiIsIngiLCJ5IiwiY29udGVudFdyYXBwZXIiLCJfZ2V0Qm91bmRpbmdDbGllbnRSZWMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsImhlaWdodCIsImlubmVyV2lkdGgiLCJpbm5lckhlaWdodCIsInByZXYiLCJwYW5lbFdpZHRoIiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsInJlY3QiLCJsZWZ0IiwidG9wIiwiaGFuZGxlRHJhZ01vdmUiLCJkcmFnU3RhdGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm5leHRQb3NpdGlvbiIsIm9mZnNldFgiLCJvZmZzZXRZIiwicmVzb2x2ZWREcmFnUG9zaXRpb24iLCJ2aWV3cG9ydFdpZHRoIiwiY2xhbXAiLCJoYW5kbGVEcmFnU3RhcnQiLCJidXR0b24iLCJ0YXJnZXQiLCJpbml0aWFsUG9zaXRpb24iLCJwb2ludGVyT2Zmc2V0WCIsInBvaW50ZXJPZmZzZXRZIiwiY3VycmVudFRhcmdldCIsInNldFBvaW50ZXJDYXB0dXJlIiwicHJldmVudERlZmF1bHQiLCJhaUNoYXREcmFnZ2FibGUiLCJzdGFydENoYXQiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJjb250ZXh0RGF0YSIsImNoYXQiLCJiYW5uZXJGYXFBdXRvU2VudFJlZiIsImJhbm5lckZhcSIsImZhcVRpdGxlIiwiYWxyZWFkeVNlbnQiLCJhZ2VudElkIiwicHJvamVjdElkIiwiY2xpZW50SWQiLCJ1bmRlZmluZWQiLCJlbnRpdHkiLCJnb1RvQ2hhdCIsInNlc3Npb25JZCIsInNlc3Npb25FeHRlcm5hbElkIiwic2V0QWN0aXZlQ2hhdElkIiwiZGV0YWlsIiwic2VsZWN0ZWRBZ2VudCIsImhhbmRsZVNpZGViYXJPcGVuQ2hhbmdlIiwib3BlbiIsInN5bmNQYW5lbFNlc3Npb24iLCJfYWdlbnQkaWQiLCJwYXRjaCIsImhvc3RDb250ZXh0IiwiZW5zdXJlQWdlbnRzTG9hZGVkIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJjYWNoZWRBZ2VudHMiLCJsb2FkZWRBZ2VudHMiLCJsb2FkZWRGcm9tRmV0Y2giLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiYWJydXB0IiwibGVuZ3RoIiwic2VudCIsInN0b3AiLCJ0aW1lciIsImNsZWFyVGltZW91dCIsIm9uUGFnZUhpZGUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVJlc3RvcmVGcm9tTWluaW1pemVkIiwiX2dldENoYXRzU3RvcmVTdGF0ZSIsImNoYXRzIiwibGFzdEFjdGl2ZUNoYXRJZCIsIl9nb1RvQ2hhdFJlZiRjdXJyZW50IiwiY2FsbCIsIl9nb0hvbWVSZWYkY3VycmVudCIsImFpQ2hhdE9wZW4iLCJvcHRpb24iLCJ0aGVuIiwiYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3ZlciIsImVudGl0eVN0YXRlIiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJjbGVhckdsb2JhbFBpbm5lZENvbnRleHQiLCJuZXh0TGF5b3V0IiwiZmFxIiwiX2FnZW50JGlkMiIsInJlc29sdmVkQWdlbnRJZCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwidHlwZSIsInN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nIiwiX2NhbGxlZTIiLCJhZ2VudHNMaXN0IiwiZmlyc3RBZ2VudCIsIl90IiwiX2NvbnRleHQyIiwibXlBZ2VudHMiLCJoYW5kbGVTdGFydE5ld0NoYXQiLCJoYW5kbGVSZXNldENoYXQiLCJfY2FsbGVlMyIsIl9jb250ZXh0MyIsImhhbmRsZUJhY2siLCJ0byIsImFpQ2hhdEJhY2siLCJwaW5uZWQiLCJ0YXNrSWQiLCJjaGlwc1Byb2plY3RJZCIsIndhc1Bpbm5lZCIsIm9uTWVyZ2VDcmVhdGVkQWdlbnQiLCJldnQiLCJfcmVmNCIsIm5leHRBZ2VudCIsIm5hdmlnYXRlSG9tZSIsIm9uU3luY0VkaXRlZEFnZW50IiwiX3JlZjUiLCJvcGVuQ2hhdFZpZXciLCJvcGVuSG9tZSIsIm9wZW5Gcm9tSG9zdCIsIl9yZWY2Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfcmVmNyIsImNvbnRleHRQYXRjaCIsInNob3VsZFNldFRhc2siLCJfY29udGV4dFBhdGNoJHRhc2siLCJhcHBseVNraWxsVXNlRmxvdyIsIl9yZWY4IiwiX2NhbGxlZTQiLCJza2lsbCIsInVzZUZpcnN0QWdlbnQiLCJfY29udGV4dDQiLCJfeCIsIl94MiIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUiLCJfcmVmOSIsIl9yZWY5JHVzZUZpcnN0QWdlbnQiLCJvblNlc3Npb25NZXRhIiwiX3JlZjAiLCJsZWdhY3lDb250ZXh0U2Vzc2lvbiIsImhhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCIsIl9idWlsZExlZ2FjeUNvbnRleHRNaSIsIm9yY2hlc3RyYXRvciIsImFnZW50RW50aXR5IiwicElkIiwicE5hbWUiLCJwcm9qZWN0TmFtZSIsImNJZCIsImNOYW1lIiwiY2xpZW50TmFtZSIsInRJZCIsInROYW1lIiwidGFza05hbWUiLCJtaWdyYXRpb25QYXRjaCIsIl91c2VNZW1vIiwic2hvd05ld0NoYXQiLCJpc015QWdlbnRzU2VjdGlvbiIsImlzTXlTa2lsbHNTZWN0aW9uIiwiaXNNYWlha2VyQ3JlYXRvckhvbWUiLCJoYXNDaGF0QWNjZXNzIiwibWFpbkNvbnRlbnRWaWV3Iiwic2hvd01vZGFsRm9vdGVyIiwiaG9tZU9wdGlvbiIsImNoYXRPcHRpb24iLCJhZ2VudHNDb3VudCIsImhhc0FjY2VzcyIsInNob3dTaWRlYmFyIiwiaGFzUGlubmVkQ29udGV4dCIsIl9yZXNvbHZlT3JjaGVzdHJhdG9ySCIsImlzQ2hhdFZpZXciLCJpc0hlYWRlckhvbWVTdGVwMiIsImlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyIiwic2hvd0JhY2tCdXR0b24iLCJhZ2VudFR5cGUiLCJoYW5kbGVPcGVuTWFya2V0cGxhY2UiLCJfY2FsbGVlNSIsIl9jb250ZXh0NSIsImhhbmRsZU9wZW5Ta2lsbHMiLCJoYW5kbGVHb1RvTWFpYWtlciIsIl9jYWxsZWU2IiwibWFpYWtlckFnZW50IiwicmVzcG9uc2UiLCJfdDIiLCJfY29udGV4dDYiLCJmaW5kIiwiYSIsInBhdGgiLCJtZXRob2QiLCJqc29uIiwibG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlIiwiX3JlZjExIiwiX2NhbGxlZTciLCJzbmFwc2hvdCIsImFnZW50VG9TZWxlY3QiLCJfdDMiLCJfY29udGV4dDciLCJfeDMiLCJhcHBseVNlc3Npb25SZXN0b3JlIiwiX3JlZjEyIiwiX2NhbGxlZTgiLCJjaGlwc1Byb2plY3RGcm9tU25hcHNob3QiLCJyZXN0b3JlUm91dGUiLCJfc25hcHNob3QkYWN0aXZlQ2hhdEkiLCJfc25hcHNob3QkYWN0aXZlQ2hhdEkyIiwiX2NvbnRleHQ4IiwiX3g0IiwicnVuUmVzdG9yZSIsIl9yZWYxMyIsIl9jYWxsZWU5IiwiX2NvbnRleHQ5IiwiZmluaXNoIiwiaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMiLCJtb2RhbFBhbmVsIiwiY2hpbGRyZW4iLCJvbkdvVG9DaGF0Iiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwib25PcGVuTWFpYWtlckNyZWF0b3IiLCJpc0xlZ2FjeUNvbnRleHRTZXNzaW9uIiwiaW5pdGlhbE9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJmbG9hdGluZyIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm9uQWdlbnRVcGRhdGUiLCJpc01haWFrZXJTZWN0aW9uIiwib25CYWNrIiwiX29iamVjdFNwcmVhZCIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25EZWxldGVTa2lsbCIsIm9uU2VhcmNoQWdlbnRzIiwic2VhcmNoTG9hZGluZ0FnZW50cyIsIm9uUmVzdGFydFN1bW1hcnkiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsIm9uQ29udGludWVJbk5ld0NoYXQiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsIiRtaW5pbWl6ZWQiLCIkaGlkZGVuIiwidGlsdCIsInNob3dOb3ZlbHR5RG90Iiwib25SZXN0b3JlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL0NoYXRBSU1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IGNhbkFjY2Vzc1RvU2tpbGxzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zJ1xuaW1wb3J0IHsgTUFJQUVycm9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQUVycm9yJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5cbmltcG9ydCB7IENoYXRBSUNvbnRlbnQgfSBmcm9tICcuLi9DaGF0QUlDb250ZW50J1xuaW1wb3J0IHsgYnVpbGRIYW5kbGVycywgb3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gJy4uL1NpZGViYXInXG5pbXBvcnQgeyB1c2VHZXRBZ2VudHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMnXG5pbXBvcnQgeyB1c2VHZXRTa2lsbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9nZXRTa2lsbHMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0LCB0eXBlIFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgQ2hhdEFJTW9kYWxIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXInXG5pbXBvcnQgeyBTbmFja2JhciB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9TbmFja0Jhci9TbmFja2JhcidcbmltcG9ydCB7IFByb2plY3RTdW1tYXJ5Q29udGVudCB9IGZyb20gJy4uL1Byb2plY3RTdW1tYXJ5Q29udGVudCdcbmltcG9ydCB7IEFibUFnZW50TW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQWJtU2tpbGxNb2RhbCwgU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtU2tpbGxNb2RhbC9BYm1Ta2lsbE1vZGFsJ1xuaW1wb3J0IHsgQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsR2VuZXJhdGVNb2RhbC9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBTQ0NBSU1Db250ZW50LCBTQ0NBSU1Db250ZW50V3JhcHBlciwgU0NDQUlNTWluaW1pemVkSGlkZSwgU0NDQUlNV3JhcHBlciB9IGZyb20gJy4vQ2hhdEFJTW9kYWwuc3R5bGVzJ1xuaW1wb3J0IHsgTWFpYU1pbmltaXplZFBpbGwgfSBmcm9tICcuL2NvbXBvbmVudHMvTWFpYU1pbmltaXplZFBpbGwnXG5pbXBvcnQgeyB1c2VNaW5pbWl6ZWRQaWxsTm92ZWx0eURvdCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1pbmltaXplZFBpbGxOb3ZlbHR5RG90J1xuaW1wb3J0IHtcbiAgZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4LFxuICBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSxcbiAgcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUsXG4gIHNldFN0b3JlZE1haWFDaGF0TGF5b3V0TW9kZSxcbn0gZnJvbSAnLi9sYXlvdXQnXG5pbXBvcnQgeyBGbG9hdGluZ1BhbmVsTW90aW9uLCB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQgfSBmcm9tICcuL2Zsb2F0aW5nUGFuZWxNb3Rpb24nXG5pbXBvcnQgeyBDaGF0QWlNb2RhbEZvb3RlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEZvb3RlcidcbmltcG9ydCB7IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvVGFzaydcbmltcG9ydCB7IHVzZUZhcXNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUZhcXNTdG9yZSdcbmltcG9ydCB7IGdldENoYXRzU3RvcmVTdGF0ZSwgdXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUNoYXRzU3RvcmUnXG5pbXBvcnQgdHlwZSB7IENoYXRMaXN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2NoYXRzU3RvcmUudHlwZXMnXG5pbXBvcnQgeyByZWFkTGFzdEFjdGl2ZUNoYXRJZCwgd3JpdGVMYXN0QWN0aXZlQ2hhdElkIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvbWFpYUxhc3RDaGF0UGVyc2lzdGVuY2UnXG5pbXBvcnQge1xuICBjbGVhck1haWFQYW5lbFNlc3Npb24sXG4gIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbixcbiAgcmVhZE1haWFQYW5lbFNlc3Npb24sXG4gIHR5cGUgTWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90LFxuICB3cml0ZU1haWFQYW5lbFNlc3Npb24sXG59IGZyb20gJy4uLy4uLy4uL3N0b3JlL21haWFQYW5lbFNlc3Npb25QZXJzaXN0ZW5jZSdcbmltcG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uc1N0b3JlJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBmZXRjaEFnZW50RGV0YWlsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZmV0Y2hBZ2VudERldGFpbCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgdHlwZSBNYWlhSG9zdE9wZW5EZXRhaWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYWlhSG9zdE9wZW4nXG5pbXBvcnQge1xuICBjbGFtcEZsb2F0aW5nUGFuZWxQb3NpdGlvbixcbiAgaGFzQW55QWN0aXZlU2Vzc2lvbkluTWV0YSxcbiAgaGFzQmFubmVyRmFxVGl0bGUsXG4gIGlzQmFubmVyRmFxUmVhZHlUb0F1dG9TZW5kLFxuICByZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uLFxuICByZXNvbHZlQ29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICByZXNvbHZlSW5pdGlhbEN1cnJlbnRPcHRpb24sXG4gIHJlc29sdmVMZWdhY3lDb250ZXh0U2Vzc2lvbixcbiAgcmVzb2x2ZVNpZGViYXJBZ2VudHNOYXZBY3RpdmUsXG4gIHNob3VsZFJlc3RvcmVFeHBhbmRlZFBhbmVsLFxuICBzaG91bGRTa2lwRmxvYXRpbmdEcmFnVGFyZ2V0LFxuICB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSxcbiAgcmVzb2x2ZUhvc3RUYWtlb3ZlckVudGl0eVN0YXRlLFxuICBidWlsZEhvc3RUYWtlb3ZlclBlcnNpc3RDb250ZXh0LFxuICBidWlsZE1haWFQYW5lbFNlc3Npb25QYXRjaCxcbiAgZGlzcGF0Y2hTa2lsbE1lbnRpb25JbnNlcnQsXG4gIGVuc3VyZUFnZW50c0JlZm9yZVNraWxsVXNlLFxuICByZXNvbHZlRmxvYXRpbmdQYW5lbERyYWdQb3NpdGlvbixcbiAgcmVzb2x2ZUhvc3RUYWtlb3ZlckFnZW50SWQsXG4gIHJlc29sdmVNYWlhTW9kYWxJMThuTGFuZyxcbiAgcmVzb2x2ZU1pbmltaXplZFJlc3RvcmVUYXJnZXQsXG4gIHJlc29sdmVOZXh0RHJhZ1Bvc2l0aW9uLFxuICByZXNvbHZlVXNlckhhc0FnZW50TWFuYWdlbWVudFBlcm1pc3Npb25zLFxuICBzaG91bGRCYWNrQ2xlYXJQaW5uZWRDb250ZXh0LFxuICBzaG91bGRCYWNrU3RhcnROZXdDaGF0UHJlc2VydmluZ0NvbnRleHQsXG4gIHNob3VsZE1hcmtPcmNoZXN0cmF0b3JDb250ZXh0UmVzZXQsXG4gIHNob3VsZFN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nLFxuICByZXNvbHZlSGFzUGlubmVkQ29udGV4dCxcbiAgcmVzb2x2ZU9yY2hlc3RyYXRvckhvbWVOYXZGbGFncyxcbiAgc2hvdWxkU2hvd09yY2hlc3RyYXRvckJhY2tCdXR0b24sXG4gIHNob3VsZENsZWFyQ2xpZW50T25Hb0hvbWVGcm9tQ2hhdCxcbiAgc2hvdWxkQ2xlYXJUYXNrT25Hb0hvbWVGcm9tQ2hhdCxcbiAgc2hvdWxkUmVzZXRBZ2VudFRvRmlyc3RPbkdvSG9tZSxcbiAgc2hvdWxkQ2xlYXJPcmNoZXN0cmF0b3JHbG9iYWxDb250ZXh0T25Hb0hvbWUsXG4gIHNob3VsZFVzZUFjdGl2ZUNoYXRTZW5kSGFuZGxlcixcbiAgc2hvdWxkUHJlZmV0Y2hBZ2VudHNGb3JDYXRhbG9nTmV3Q2hhdCxcbiAgY2FuT3Blbk1haWFNYXJrZXRwbGFjZSxcbiAgc2hvdWxkTWFya0FnZW50QXNMZWdhY3lDb250ZXh0LFxuICBidWlsZExlZ2FjeUNvbnRleHRBZ2VudCxcbiAgYnVpbGRMZWdhY3lDb250ZXh0TWlncmF0aW9uUGF0Y2gsXG4gIGZpbmRPcmNoZXN0cmF0b3JBZ2VudCxcbiAgc2hvdWxkU2V0Q2hhdFZpZXdIaWRkZW5Pbk1vdW50LFxuICBzaG91bGRQZXJzaXN0TGFzdEFjdGl2ZUNoYXRJZCxcbiAgc2hvdWxkU3luY1BhbmVsU2Vzc2lvbk9uUGFnZUhpZGUsXG4gIHJlc29sdmVDYWNoZWRBZ2VudHNJZkF2YWlsYWJsZSxcbiAgc2hvdWxkQXR0ZW1wdEluaXRpYWxBZ2VudHNGZXRjaCxcbiAgZmluZEFnZW50Rm9yQ2hhdEl0ZW0sXG4gIHNob3VsZEFwcGx5Q2xpZW50T25Ib3N0VGFrZW92ZXIsXG4gIHNob3VsZFNlbGVjdEZpcnN0QWdlbnRPbkhvc3RUYWtlb3ZlcixcbiAgc2hvdWxkUmVzZXRDaGF0U3RhdGVPbkdvSG9tZSxcbiAgc2hvdWxkQ2xlYXJDb250ZXh0Rm9yQ2F0YWxvZ09yU2tpbGxBZ2VudCxcbiAgcmVzb2x2ZU9wZW5OZXdDaGF0V2l0aEFnZW50Q29udGV4dCxcbiAgY2FuQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0LFxuICByZXNvbHZlU2Vzc2lvblJlc3RvcmVOYXZSb3V0ZSxcbiAgc2hvdWxkU2tpcEFnZW50c0xvYWRPblNlc3Npb25SZXN0b3JlLFxuICBzaG91bGRGZXRjaEFnZW50RGV0YWlsT25TZXNzaW9uUmVzdG9yZSxcbiAgc2hvdWxkUGFzc0FnZW50VG9HZXRBZ2VudHNPblJlc3RvcmUsXG4gIHNob3VsZFNlbGVjdEZldGNoZWRBZ2VudEFmdGVyUmVzdG9yZSxcbiAgcmVzb2x2ZVNuYXBzaG90Q2hpcHNQcm9qZWN0LFxuICByZXNvbHZlQ2hhdE1vZGFsU2VjdGlvbkZsYWdzLFxuICBzaG91bGRSZW5kZXJDaGF0U2lkZWJhcixcbiAgcmVzb2x2ZUNoYXRNb2RhbE1haW5Db250ZW50VmlldyxcbiAgc2hvdWxkU2hvd0NoYXRNb2RhbEZvb3RlcixcbiAgc2hvdWxkVXNlRWxldmF0ZWRNYWlhUGFuZWwsXG4gIHNob3VsZFJlc2VsZWN0QWdlbnRBZnRlckRlbGV0ZSxcbiAgc2hvdWxkQ2xlYXJEcmFnUG9zaXRpb25PbkxheW91dENoYW5nZSxcbiAgc2hvdWxkU3RhcnRGbG9hdGluZ1BhbmVsRHJhZyxcbiAgaXNBY3RpdmVGbG9hdGluZ0RyYWdQb2ludGVyLFxuICBzaG91bGRPcGVuU2tpbGxzQ2F0YWxvZyxcbiAgc2hvdWxkVXNlRHJhZ0NsYW1wRmFsbGJhY2ssXG4gIHJlc29sdmVMYXlvdXREcmFnUG9zaXRpb25VcGRhdGUsXG4gIHJlc29sdmVQZXJzaXN0ZWREcmFnUG9zaXRpb25PbkVuZCxcbiAgYnVpbGRVc2VySW5pdGlhbE1lc3NhZ2VGcm9tU3RhcnRDaGF0LFxuICBzaG91bGRSZXNldFNpZGViYXJFcnJvck9uU3RhcnRDaGF0LFxuICB0eXBlIExlZ2FjeVNlc3Npb25NZXRhLFxufSBmcm9tICcuL0NoYXRBSU1vZGFsLmhlbHBlcnMnXG5cbi8qKiBNZXRhZGF0YSBkZSBsYSBzZXNzaW9uIGFiaWVydGEgKGVtaXRpZGEgcG9yIHVzZUNoYXRNZXNzYWdlcyBhbCBjYXJnYXIgdW5hIGNvbnZlcnNhY2nDs24pLiAqL1xudHlwZSBTZXNzaW9uTWV0YSA9IExlZ2FjeVNlc3Npb25NZXRhICYge1xuICBjaGF0SWQ6IHN0cmluZ1xuICBwcm9qZWN0SWQ/OiBudW1iZXJcbiAgY2xpZW50SWQ/OiBudW1iZXJcbiAgdGFza0lkPzogbnVtYmVyXG59XG5cbmV4cG9ydCBjb25zdCBJRF9NT0RBTF9DSEFUX0FHRU5UID0gJ21vZGFscy1wb3J0YWwtbWFpYS1jaGF0LWFnZW50J1xuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYgPSB1c2VSZWY8TWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90IHwgbnVsbD4ocmVhZE1haWFQYW5lbFNlc3Npb24odXNlci5pZCkpXG4gIGNvbnN0IHNob3VsZFJlc3RvcmVFeHBhbmRlZCA9IHNob3VsZFJlc3RvcmVFeHBhbmRlZFBhbmVsKHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudClcbiAgY29uc3QgcGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmID0gdXNlUmVmPE1haWFQYW5lbFNlc3Npb25TbmFwc2hvdCB8IG51bGw+KFxuICAgIHNob3VsZFJlc3RvcmVFeHBhbmRlZCA/IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudCA6IG51bGxcbiAgKVxuICBjb25zdCBzZXNzaW9uUmVzdG9yZVN0YXJ0ZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IFtpc1Jlc3RvcmluZ1Nlc3Npb24sIHNldElzUmVzdG9yaW5nU2Vzc2lvbl0gPSB1c2VTdGF0ZSgoKSA9PiBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudCAhPSBudWxsKVxuICBjb25zdCBzaWRlYmFyT3BlblJlZiA9IHVzZVJlZihzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnQ/LnNpZGViYXJPcGVuID8/IGZhbHNlKVxuXG4gIC8vIFRyYXMgbmF2ZWdhciBlbiBlbCBob3N0IChmdWxsIHBhZ2UgcmVsb2FkKSwgcmVzdGF1cmFtb3MgZWwgcGFuZWwgc2kgZXN0YWJhIGFiaWVydG8uXG4gIGNvbnN0IFtpc01pbmltaXplZCwgc2V0SXNNaW5pbWl6ZWRdID0gdXNlU3RhdGUoKCkgPT4gIXNob3VsZFJlc3RvcmVFeHBhbmRlZClcbiAgY29uc3Qgc2V0Q2hhdFZpZXdWaXNpYmxlID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5zZXRDaGF0Vmlld1Zpc2libGUpXG4gIGNvbnN0IHVucmVhZENvdW50ID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS51bnJlYWRDb3VudClcbiAgY29uc3Qgc2hvd01pbmltaXplZE5vdmVsdHlEb3QgPSB1c2VNaW5pbWl6ZWRQaWxsTm92ZWx0eURvdChpc01pbmltaXplZCwgdW5yZWFkQ291bnQpXG4gIGNvbnN0IGFjdGl2ZUNoYXRJZCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuYWN0aXZlQ2hhdElkKVxuICAvLyBMb3MgXCIuLi5cIiBkZWwgcGlsbCBzYWxlbiBkZWwgbW90b3IsIG5vIGRlIGlzU3RyZWFtaW5nL2lzV3JpdGluZzogZXNvcyByZWZsZWphblxuICAvLyBsYSBzZXNpw7NuIGFjdGl2YSB5IHF1ZWRhbiBzdGFsZSBjdWFuZG8gdW5hIHJlc3B1ZXN0YSB0ZXJtaW5hIGVuIGJhY2tncm91bmQuXG4gIGNvbnN0IGhhc0FjdGl2ZVN0cmVhbSA9IHVzZVNlc3Npb25zU3RvcmUoc3RhdGUgPT4gaGFzQW55QWN0aXZlU2Vzc2lvbkluTWV0YShzdGF0ZS5tZXRhKSlcblxuICAvKiogZ29Ub0NoYXQgLyBoYW5kbGVHb0hvbWUgc2UgZGVmaW5lbiBtw6FzIGFiYWpvOyBsb3MgcmVmcyBldml0YW4gZGVwZW5kZXIgZGVsIG9yZGVuIGRlIGRlY2xhcmFjacOzbi4gKi9cbiAgY29uc3QgZ29Ub0NoYXRSZWYgPSB1c2VSZWY8KChjaGF0OiBDaGF0TGlzdEl0ZW0pID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgZ29Ib21lUmVmID0gdXNlUmVmPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG5cbiAgLy8gTW9udGEgY2VycmFkYSBzYWx2byByZXN0YXVyYWNpw7NuIGRlIHNlc2nDs246IHNpIGVsIHBhbmVsIG5vIGVzdMOhIHZpc2libGUsIGxhcyByZXNwdWVzdGFzXG4gIC8vIG51ZXZhcyBxdWVkYW4gY29tbyBubyBsZcOtZGFzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRTZXRDaGF0Vmlld0hpZGRlbk9uTW91bnQocGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmLmN1cnJlbnQgIT0gbnVsbCkpIHtcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZShmYWxzZSlcbiAgICB9XG4gIH0sIFtzZXRDaGF0Vmlld1Zpc2libGVdKVxuXG4gIC8vIFBlcnNpc3RpbW9zIGxhIGNvbnZlcnNhY2nDs24gYWJpZXJ0YSBwYXJhIHBvZGVyIHZvbHZlciBhIGVsbGEgZGVzZGUgZWwgcGlsbCBkZXNwdcOpc1xuICAvLyBkZSBuYXZlZ2FyIG8gcmVmcmVzY2FyLiBFbCB0YWtlb3ZlciBkZXNkZSB1biBob3N0IGxhIGxpbXBpYSAodmEgYWwgSG9tZSkuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZFBlcnNpc3RMYXN0QWN0aXZlQ2hhdElkKGFjdGl2ZUNoYXRJZCkpIHtcbiAgICAgIHdyaXRlTGFzdEFjdGl2ZUNoYXRJZCh1c2VyLmlkLCBhY3RpdmVDaGF0SWQpXG4gICAgfVxuICB9LCBbYWN0aXZlQ2hhdElkLCB1c2VyLmlkXSlcblxuICBjb25zdCBoYW5kbGVNaW5pbWl6ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRNaW5pbWl6ZSlcbiAgICBzZXRJc01pbmltaXplZCh0cnVlKVxuICAgIHNldENoYXRWaWV3VmlzaWJsZShmYWxzZSlcbiAgICB3cml0ZU1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBpc0V4cGFuZGVkOiBmYWxzZSB9KVxuICB9LCBbYW1wbGl0dWRFdmVudCwgc2V0Q2hhdFZpZXdWaXNpYmxlLCB1c2VyLmlkXSlcblxuICBjb25zdCBmb2N1c0NoYXRJbnB1dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgfSwgMTAwKVxuICB9LCBbXSlcblxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfT4oe1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIGF0dGFjaG1lbnRzOiBbXSxcbiAgfSlcbiAgY29uc3QgW2luaXRpYWxDaGF0SWQsIHNldEluaXRpYWxDaGF0SWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW25ld0NoYXRLZXksIHNldE5ld0NoYXRLZXldID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3Nlc3Npb25NZXRhLCBzZXRTZXNzaW9uTWV0YV0gPSB1c2VTdGF0ZTxTZXNzaW9uTWV0YSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBbcmVmZXRjaENoYXRzLCBzZXRSZWZldGNoQ2hhdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50T3B0aW9uLCBzZXRDdXJyZW50T3B0aW9uXSA9IHVzZVN0YXRlPG9wdGlvbnM+KCgpID0+IHtcbiAgICBjb25zdCBzYXZlZCA9IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudFxuICAgIHJldHVybiByZXNvbHZlSW5pdGlhbEN1cnJlbnRPcHRpb24oc2F2ZWQ/LmFnZW50c05hdkFjdGl2ZSwgc2F2ZWQ/LmN1cnJlbnRPcHRpb24sIHVzZXIpXG4gIH0pXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIGRlbCBvcmNoZXN0cmF0b3IgKGxvIGxpbXBpw7MgeSBwYXPDsyBwb3JcbiAgLy8gZWwgc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEhhYmlsaXRhIGVsIGJvdMOzbiBcInZvbHZlclwiIGVuIGVsIGhvbWUgcGFzbyAyIGRlIGVzYXNcbiAgLy8gc2VjY2lvbmVzLiBTZSByZXNldGVhIGFsIGNlcnJhci9yZWFicmlyIGVsIG1vZGFsIChlbCBjb21wb25lbnRlIHNlIGRlc21vbnRhKS5cbiAgY29uc3QgW2RpZFJlc2V0Q29udGV4dEluU2VjdGlvbiwgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBwcmV2SGFzUGlubmVkQ29udGV4dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBsYW5nID0gcmVzb2x2ZU1haWFNb2RhbEkxOG5MYW5nKGkxOG4ubGFuZ3VhZ2UpXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGFnZW50c0RhdGFSZWYgPSB1c2VSZWYoYWdlbnRzLmRhdGEpXG4gIGFnZW50c0RhdGFSZWYuY3VycmVudCA9IGFnZW50cy5kYXRhXG5cbiAgY29uc3Qge1xuICAgIG15U2tpbGxzLFxuICAgIHNoYXJlZFNraWxscyxcbiAgICBsb2FkaW5nOiBsb2FkaW5nU2tpbGxzLFxuICAgIGhhbmRsZUdldFNraWxscyxcbiAgICBhZGRTa2lsbCxcbiAgICB1cGRhdGVTa2lsbEluTGlzdCxcbiAgICByZW1vdmVTa2lsbCxcbiAgfSA9IHVzZUdldFNraWxscygpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID0gcmVzb2x2ZVVzZXJIYXNBZ2VudE1hbmFnZW1lbnRQZXJtaXNzaW9ucyhcbiAgICB1c2VyPy5wZXJtaXNzaW9ucyxcbiAgICBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKVxuICApXG5cbiAgY29uc3QgdXNlckhhc1NraWxsc0FjY2VzcyA9IGNhbkFjY2Vzc1RvU2tpbGxzKHVzZXIpXG5cbiAgY29uc3QgY29tcHV0ZWRDdXJyZW50T3B0aW9uID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgcmVzb2x2ZUNvbXB1dGVkQ3VycmVudE9wdGlvbih7XG4gICAgICAgIGN1cnJlbnRPcHRpb24sXG4gICAgICAgIGFnZW50LFxuICAgICAgICBwcm9qZWN0LFxuICAgICAgICBjbGllbnQsXG4gICAgICAgIHVzZXIsXG4gICAgICAgIG11bHRpQWdlbnRzQWNjZXNzOiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSxcbiAgICAgIH0pLFxuICAgIFtjdXJyZW50T3B0aW9uLCBwcm9qZWN0LCBjbGllbnQsIGFnZW50LCB1c2VyXVxuICApXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oKCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpLCBbYWdlbnRdKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKFxuICAgICgpID0+IHJlc29sdmVTaWRlYmFyQWdlbnRzTmF2QWN0aXZlKGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCksXG4gICAgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZF1cbiAgKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSkpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCwgcGxhbm5lciB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEZ1ZXJhIGRlIGVzb3MgY29udGV4dG9zIHNlIHJlc3BldGEgbGEgcHJlZmVyZW5jaWEgZ3VhcmRhZGEgZW4gbG9jYWxTdG9yYWdlLlxuICBjb25zdCBbbGF5b3V0TW9kZSwgc2V0TGF5b3V0TW9kZV0gPSB1c2VTdGF0ZTxNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZT4oKCkgPT5cbiAgICByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSh7IHNlY3Rpb24sIGJhbm5lckVudHJ5RmFxIH0pXG4gIClcblxuICBjb25zdCBoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgc2V0U3RvcmVkTWFpYUNoYXRMYXlvdXRNb2RlKG1vZGUpXG4gICAgc2V0TGF5b3V0TW9kZShtb2RlKVxuICB9LCBbXSlcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihcbiAgICAoKSA9PiBzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnQ/LmRyYWdQb3NpdGlvbiA/PyBudWxsXG4gIClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmIChzaG91bGRVc2VEcmFnQ2xhbXBGYWxsYmFjayhjb250ZW50V3JhcHBlcikpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgcmV0dXJuIGNsYW1wRmxvYXRpbmdQYW5lbFBvc2l0aW9uKHgsIHksIHdpZHRoLCBoZWlnaHQsIHdpbmRvdy5pbm5lcldpZHRoLCB3aW5kb3cuaW5uZXJIZWlnaHQpXG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZENsZWFyRHJhZ1Bvc2l0aW9uT25MYXlvdXRDaGFuZ2UobGF5b3V0TW9kZSkpIHtcbiAgICAgIHNldERyYWdQb3NpdGlvbihudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT5cbiAgICAgIHJlc29sdmVMYXlvdXREcmFnUG9zaXRpb25VcGRhdGUobGF5b3V0TW9kZSwgcHJldiwgY2xhbXBEcmFnUG9zaXRpb24sIHtcbiAgICAgICAgaW5uZXJXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgIHBhbmVsV2lkdGg6IGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpLFxuICAgICAgICBwYWQ6IDE2LFxuICAgICAgfSkhXG4gICAgKVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmICghaXNBY3RpdmVGbG9hdGluZ0RyYWdQb2ludGVyKGRyYWdTdGF0ZVJlZi5jdXJyZW50Py5wb2ludGVySWQsIGV2ZW50LnBvaW50ZXJJZCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoY29udGVudFdyYXBwZXIgJiYgcmVzb2x2ZVBlcnNpc3RlZERyYWdQb3NpdGlvbk9uRW5kKGxheW91dE1vZGUsIGNvbnRlbnRXcmFwcGVyKSkge1xuICAgICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHsgZHJhZ1Bvc2l0aW9uOiB7IHg6IHJlY3QubGVmdCwgeTogcmVjdC50b3AgfSB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2VuZFBvaW50ZXJUcmFja2luZywgbGF5b3V0TW9kZSwgdXNlci5pZF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdTdGF0ZSA9IGRyYWdTdGF0ZVJlZi5jdXJyZW50XG4gICAgICBpZiAoIWRyYWdTdGF0ZSB8fCAhaXNBY3RpdmVGbG9hdGluZ0RyYWdQb2ludGVyKGRyYWdTdGF0ZS5wb2ludGVySWQsIGV2ZW50LnBvaW50ZXJJZCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNhbXBsZVBvaW50ZXJNb3ZlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG5cbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IGNsYW1wRHJhZ1Bvc2l0aW9uKGV2ZW50LmNsaWVudFggLSBkcmFnU3RhdGUub2Zmc2V0WCwgZXZlbnQuY2xpZW50WSAtIGRyYWdTdGF0ZS5vZmZzZXRZKVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiByZXNvbHZlTmV4dERyYWdQb3NpdGlvbihwcmV2LCBuZXh0UG9zaXRpb24pKVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBzYW1wbGVQb2ludGVyTW92ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgcmVzb2x2ZUZsb2F0aW5nUGFuZWxEcmFnUG9zaXRpb24oe1xuICAgICAgICBsYXlvdXRNb2RlLFxuICAgICAgICBkcmFnUG9zaXRpb24sXG4gICAgICAgIHZpZXdwb3J0V2lkdGg6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggOiAwLFxuICAgICAgICBwYW5lbFdpZHRoOiBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSxcbiAgICAgICAgY2xhbXA6IGNsYW1wRHJhZ1Bvc2l0aW9uLFxuICAgICAgfSksXG4gICAgW2xheW91dE1vZGUsIGRyYWdQb3NpdGlvbiwgY2xhbXBEcmFnUG9zaXRpb25dXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFzaG91bGRTdGFydEZsb2F0aW5nUGFuZWxEcmFnKGlzRmxvYXRpbmcsIGV2ZW50LmJ1dHRvbikpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgaWYgKHNob3VsZFNraXBGbG9hdGluZ0RyYWdUYXJnZXQodGFyZ2V0KSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID8/IGNsYW1wRHJhZ1Bvc2l0aW9uKHJlY3QubGVmdCwgcmVjdC50b3ApXG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WCA9IGV2ZW50LmNsaWVudFggLSBpbml0aWFsUG9zaXRpb24ueFxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gaW5pdGlhbFBvc2l0aW9uLnlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKGluaXRpYWxQb3NpdGlvbilcbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0ge1xuICAgICAgICBwb2ludGVySWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgb2Zmc2V0WDogcG9pbnRlck9mZnNldFgsXG4gICAgICAgIG9mZnNldFk6IHBvaW50ZXJPZmZzZXRZLFxuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZydcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdERyYWdnYWJsZSlcbiAgICAgIHN0YXJ0UG9pbnRlclRyYWNraW5nKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIGlzRmxvYXRpbmcsIHJlc29sdmVkRHJhZ1Bvc2l0aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IHN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKHNob3VsZFJlc2V0U2lkZWJhckVycm9yT25TdGFydENoYXQoc2lkZWJhckhhc0Vycm9yKSkge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoXG4gICAgICAgIGJ1aWxkVXNlckluaXRpYWxNZXNzYWdlRnJvbVN0YXJ0Q2hhdCh7XG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICBhdHRhY2htZW50cyxcbiAgICAgICAgICBmYXFJZCxcbiAgICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZCxcbiAgICAgICAgICBtZW50aW9ucyxcbiAgICAgICAgICBmdWFJZCxcbiAgICAgICAgICBzY0lkLFxuICAgICAgICAgIGNvbnRleHREYXRhLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYmFubmVyRmFxID0gYmFubmVyRW50cnlGYXFcbiAgICBpZiAoIWJhbm5lckZhcSB8fCAhaGFzQmFubmVyRmFxVGl0bGUoYmFubmVyRmFxLmZhcVRpdGxlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWlzQmFubmVyRmFxUmVhZHlUb0F1dG9TZW5kKHtcbiAgICAgICAgZmFxVGl0bGU6IGJhbm5lckZhcS5mYXFUaXRsZSxcbiAgICAgICAgYWxyZWFkeVNlbnQ6IGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQsXG4gICAgICAgIGxvYWRpbmcsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCxcbiAgICAgICAgc2VjdGlvbixcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0Py5pZCxcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudD8uaWQsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IHRydWVcbiAgICBzdGFydENoYXQoXG4gICAgICBiYW5uZXJGYXEuZmFxVGl0bGUsXG4gICAgICBbXSxcbiAgICAgIGJhbm5lckZhcS5mYXFJZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGJhbm5lckZhcS5jb250ZXh0RGF0YVxuICAgIClcbiAgfSwgW1xuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFJZCxcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGUsXG4gICAgYmFubmVyRW50cnlGYXE/LmNvbnRleHREYXRhLFxuICAgIGxvYWRpbmcsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGFnZW50Py5lbnRpdHksXG4gICAgcHJvamVjdD8uaWQsXG4gICAgY2xpZW50Py5pZCxcbiAgICBzZWN0aW9uLFxuICAgIHN0YXJ0Q2hhdCxcbiAgXSlcblxuICBjb25zdCBnb1RvQ2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChjaGF0OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQgYXMgc3RyaW5nXG5cbiAgICAgIGdldENoYXRzU3RvcmVTdGF0ZSgpLnNldEFjdGl2ZUNoYXRJZChzZXNzaW9uSWQpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnc2lkZWJhci1zZWxlY3Qtc2Vzc2lvbicsIHsgZGV0YWlsOiB7IHNlc3Npb25JZCB9IH0pKVxuXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKHNlc3Npb25JZClcbiAgICAgIGNvbnN0IHNlbGVjdGVkQWdlbnQgPSBmaW5kQWdlbnRGb3JDaGF0SXRlbShhZ2VudHMuZGF0YSwgY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGdvVG9DaGF0UmVmLmN1cnJlbnQgPSBnb1RvQ2hhdFxuXG4gIGNvbnN0IGhhbmRsZVNpZGViYXJPcGVuQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgIHNpZGViYXJPcGVuUmVmLmN1cnJlbnQgPSBvcGVuXG4gICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBzaWRlYmFyT3Blbjogb3BlbiB9KVxuICAgIH0sXG4gICAgW3VzZXIuaWRdXG4gIClcblxuICBjb25zdCBzeW5jUGFuZWxTZXNzaW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHBhdGNoID0gYnVpbGRNYWlhUGFuZWxTZXNzaW9uUGF0Y2goe1xuICAgICAgaXNNaW5pbWl6ZWQsXG4gICAgICBjdXJyZW50T3B0aW9uLFxuICAgICAgYWdlbnRzTmF2QWN0aXZlOiBzaWRlYmFyQWdlbnRzTmF2QWN0aXZlLFxuICAgICAgYWN0aXZlQ2hhdElkLFxuICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkID8/IG51bGwsXG4gICAgICBzaWRlYmFyT3Blbjogc2lkZWJhck9wZW5SZWYuY3VycmVudCxcbiAgICAgIGxheW91dE1vZGUsXG4gICAgICBkcmFnUG9zaXRpb24sXG4gICAgICBob3N0Q29udGV4dDoge1xuICAgICAgICBzZWN0aW9uLFxuICAgICAgICBwcm9qZWN0LFxuICAgICAgICBjbGllbnQsXG4gICAgICAgIHRhc2ssXG4gICAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIH0sXG4gICAgfSlcbiAgICBpZiAoIXBhdGNoKSByZXR1cm5cbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgcGF0Y2gpXG4gIH0sIFtcbiAgICBhY3RpdmVDaGF0SWQsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBkcmFnUG9zaXRpb24sXG4gICAgaXNNaW5pbWl6ZWQsXG4gICAgbGF5b3V0TW9kZSxcbiAgICBwcm9qZWN0LFxuICAgIHNlY3Rpb24sXG4gICAgc2lkZWJhckFnZW50c05hdkFjdGl2ZSxcbiAgICB0YXNrLFxuICAgIHVzZXIuaWQsXG4gIF0pXG5cbiAgLyoqIExvcyBhZ2VudGVzIHNlIHBpZGVuIHJlY2nDqW4gYWwgYWJyaXIgZWwgcGFuZWw6IGVuIG1vZG8gcGlsbCBubyBoYWNlIGZhbHRhIG5pbmd1bmEgcmVxdWVzdC4gKi9cbiAgY29uc3QgZW5zdXJlQWdlbnRzTG9hZGVkID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk6IFByb21pc2U8QWdlbnRbXT4gPT4ge1xuICAgIGNvbnN0IGNhY2hlZEFnZW50cyA9IHJlc29sdmVDYWNoZWRBZ2VudHNJZkF2YWlsYWJsZShhZ2VudHNEYXRhUmVmLmN1cnJlbnQpXG4gICAgaWYgKGNhY2hlZEFnZW50cykge1xuICAgICAgcmV0dXJuIGNhY2hlZEFnZW50c1xuICAgIH1cblxuICAgIGlmIChzaG91bGRBdHRlbXB0SW5pdGlhbEFnZW50c0ZldGNoKGFnZW50c0RhdGFSZWYuY3VycmVudC5sZW5ndGgsIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGNvbnN0IGxvYWRlZEFnZW50cyA9IGF3YWl0IGhhbmRsZUdldEFnZW50cygpXG4gICAgICBjb25zdCBsb2FkZWRGcm9tRmV0Y2ggPSByZXNvbHZlQ2FjaGVkQWdlbnRzSWZBdmFpbGFibGUobG9hZGVkQWdlbnRzKVxuICAgICAgaWYgKGxvYWRlZEZyb21GZXRjaCkge1xuICAgICAgICByZXR1cm4gbG9hZGVkRnJvbUZldGNoXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFnZW50c0RhdGFSZWYuY3VycmVudFxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01pbmltaXplZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gc3luY1BhbmVsU2Vzc2lvbigpLCAxNTApXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXIpXG4gIH0sIFtpc01pbmltaXplZCwgc3luY1BhbmVsU2Vzc2lvbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblBhZ2VIaWRlID0gKCkgPT4ge1xuICAgICAgaWYgKHNob3VsZFN5bmNQYW5lbFNlc3Npb25PblBhZ2VIaWRlKGlzTWluaW1pemVkKSkge1xuICAgICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICAgIH1cbiAgICB9XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VoaWRlJywgb25QYWdlSGlkZSlcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhZ2VoaWRlJywgb25QYWdlSGlkZSlcbiAgfSwgW2lzTWluaW1pemVkLCBzeW5jUGFuZWxTZXNzaW9uXSlcblxuICBjb25zdCBoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBQcmlvcmlkYWQgYWwgcmVhYnJpcjogcHJpbWVyIGNoYXQgc2luIGxlZXIg4oaSIMO6bHRpbWEgY29udmVyc2FjacOzbiBhYmllcnRhIOKGkiBIb21lLlxuICAgIGNvbnN0IHsgY2hhdHMgfSA9IGdldENoYXRzU3RvcmVTdGF0ZSgpXG4gICAgY29uc3QgbGFzdEFjdGl2ZUNoYXRJZCA9IHJlYWRMYXN0QWN0aXZlQ2hhdElkKHVzZXIuaWQpXG4gICAgY29uc3QgdGFyZ2V0ID0gcmVzb2x2ZU1pbmltaXplZFJlc3RvcmVUYXJnZXQoY2hhdHMsIGxhc3RBY3RpdmVDaGF0SWQpXG5cbiAgICAvLyBOYXZlZ2FyIGFudGVzIGRlIGV4cGFuZGlyOiBzaSBlc3BlcmFtb3MgYWdlbnRlcywgZWwgcGFuZWwgbW9udGEgY29uIGxhIHNlc2nDs24gdmllamEgeSBlbCBzaWRlYmFyIHF1ZWRhIGRlc2Zhc2Fkby5cbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICBnb1RvQ2hhdFJlZi5jdXJyZW50Py4odGFyZ2V0KVxuICAgIH0gZWxzZSB7XG4gICAgICBnb0hvbWVSZWYuY3VycmVudD8uKClcbiAgICB9XG5cbiAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICBzZXRDaGF0Vmlld1Zpc2libGUodHJ1ZSlcbiAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRPcGVuLCB7IG9wdGlvbjogJ21pbmltaXplJyB9KVxuXG4gICAgZW5zdXJlQWdlbnRzTG9hZGVkKClcbiAgICAgIC50aGVuKGxvYWRlZEFnZW50cyA9PiB7XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gZmluZEFnZW50Rm9yQ2hhdEl0ZW0obG9hZGVkQWdlbnRzLCB0YXJnZXQuYWdlbnRJZClcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gIH0sIFthbXBsaXR1ZEV2ZW50LCBlbnN1cmVBZ2VudHNMb2FkZWQsIGZvY3VzQ2hhdElucHV0LCBzZWxlY3RBZ2VudCwgc2V0Q2hhdFZpZXdWaXNpYmxlLCB1c2VyLmlkXSlcblxuICAvKipcbiAgICogVG9tYSBjb250cm9sIGRlc2RlIHVuIGhvc3QgKGhlYWRlciwgcHJveWVjdG8sIGNsaWVudGXigKYpOiBhYnJlIGVsIHBhbmVsLCBkZXNjYXJ0YSBsYVxuICAgKiBjb252ZXJzYWNpw7NuIGFiaWVydGEgeSBhcGxpY2EgZWwgY29udGV4dG8gZGVsIGhvc3QuIE5PIHZ1ZWx2ZSBhIGxhIMO6bHRpbWEgY29udmVyc2FjacOzblxuICAgKiDigJQgZXNvIHPDs2xvIGxvIGhhY2UgZWwgcGlsbCAoYGhhbmRsZVJlc3RvcmVGcm9tTWluaW1pemVkYCkuXG4gICAqL1xuICBjb25zdCBhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGRldGFpbDogTWFpYUhvc3RPcGVuRGV0YWlsKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHlTdGF0ZSA9IHJlc29sdmVIb3N0VGFrZW92ZXJFbnRpdHlTdGF0ZShkZXRhaWwpXG5cbiAgICAgIGNsZWFyTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkKVxuICAgICAgcGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRJc1Jlc3RvcmluZ1Nlc3Npb24oZmFsc2UpXG4gICAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSh0cnVlKVxuICAgICAgd3JpdGVMYXN0QWN0aXZlQ2hhdElkKHVzZXIuaWQsIG51bGwpXG5cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKGZhbHNlKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBnZXRDaGF0c1N0b3JlU3RhdGUoKS5zZXRBY3RpdmVDaGF0SWQobnVsbClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuXG4gICAgICBzZXRQcm9qZWN0Py4oZW50aXR5U3RhdGUucHJvamVjdClcbiAgICAgIGlmIChzaG91bGRBcHBseUNsaWVudE9uSG9zdFRha2VvdmVyKGVudGl0eVN0YXRlLmNsaWVudCkpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4oZW50aXR5U3RhdGUuY2xpZW50KVxuICAgICAgfVxuICAgICAgc2V0VGFzaz8uKGVudGl0eVN0YXRlLnRhc2spXG5cbiAgICAgIGlmIChlbnRpdHlTdGF0ZS5jbGVhckdsb2JhbFBpbm5lZENvbnRleHQpIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIGNsZWFyQWdlbnQoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0TGF5b3V0ID0gcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUoe1xuICAgICAgICBzZWN0aW9uOiBkZXRhaWwuc2VjdGlvbiBhcyBTZWN0aW9uLFxuICAgICAgICBiYW5uZXJFbnRyeUZhcTogZGV0YWlsLmZhcSxcbiAgICAgIH0pXG4gICAgICBzZXRMYXlvdXRNb2RlKG5leHRMYXlvdXQpXG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcblxuICAgICAgY29uc3QgaG9zdENvbnRleHQgPSBidWlsZEhvc3RUYWtlb3ZlclBlcnNpc3RDb250ZXh0KGRldGFpbClcblxuICAgICAgZW5zdXJlQWdlbnRzTG9hZGVkKClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkQWdlbnRJZCA9IHJlc29sdmVIb3N0VGFrZW92ZXJBZ2VudElkKFxuICAgICAgICAgICAgZW50aXR5U3RhdGUuY2xlYXJHbG9iYWxQaW5uZWRDb250ZXh0LFxuICAgICAgICAgICAgYWdlbnRzRGF0YVJlZi5jdXJyZW50LFxuICAgICAgICAgICAgYWdlbnQ/LmlkID8/IG51bGxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKHNob3VsZFNlbGVjdEZpcnN0QWdlbnRPbkhvc3RUYWtlb3ZlcihlbnRpdHlTdGF0ZS5jbGVhckdsb2JhbFBpbm5lZENvbnRleHQsIGFnZW50c0RhdGFSZWYuY3VycmVudFswXSkpIHtcbiAgICAgICAgICAgIHNlbGVjdEFnZW50KGFnZW50c0RhdGFSZWYuY3VycmVudFswXSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgICAgICAgaXNFeHBhbmRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb246IG9wdGlvbnMuaG9tZSxcbiAgICAgICAgICAgIGFnZW50c05hdkFjdGl2ZTogbnVsbCxcbiAgICAgICAgICAgIGFjdGl2ZUNoYXRJZDogbnVsbCxcbiAgICAgICAgICAgIGFnZW50SWQ6IHJlc29sdmVkQWdlbnRJZCxcbiAgICAgICAgICAgIHNpZGViYXJPcGVuOiBzaWRlYmFyT3BlblJlZi5jdXJyZW50LFxuICAgICAgICAgICAgZHJhZ1Bvc2l0aW9uOiBudWxsLFxuICAgICAgICAgICAgaG9zdENvbnRleHQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbiAgICB9LFxuICAgIFtcbiAgICAgIGFnZW50Py5pZCxcbiAgICAgIGNsZWFyQWdlbnQsXG4gICAgICBlbnN1cmVBZ2VudHNMb2FkZWQsXG4gICAgICBmb2N1c0NoYXRJbnB1dCxcbiAgICAgIHNlbGVjdEFnZW50LFxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlLFxuICAgICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgICAgc2V0Q2xpZW50LFxuICAgICAgc2V0UHJvamVjdCxcbiAgICAgIHNldFRhc2ssXG4gICAgICB1c2VyLmlkLFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlUmVhZHkgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQsXG4gICAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICAgIHN0cmVhbWluZzogYm9vbGVhbixcbiAgICAgIHdyaXRpbmc6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIHNldFNlbmRNZXNzYWdlRnVuY3Rpb24oKCkgPT4gc2VuZE1lc3NhZ2UpXG4gICAgICBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uKCgpID0+IHN0b3BHZW5lcmF0aW9uKVxuICAgICAgc2V0SXNTdHJlYW1pbmcoc3RyZWFtaW5nKVxuICAgICAgc2V0SXNXcml0aW5nKHdyaXRpbmcpXG4gICAgfSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChzaG91bGRVc2VBY3RpdmVDaGF0U2VuZEhhbmRsZXIoY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBvcHRpb25zLmNoYXQsIEJvb2xlYW4oc2VuZE1lc3NhZ2VGdW5jdGlvbikpKSB7XG4gICAgICAgIHNlbmRNZXNzYWdlRnVuY3Rpb24/LihtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydENoYXQobWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHN0YXJ0Q2hhdCwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBoYW5kbGVHb0hvbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2kgZXN0YW1vcyBlbiB1bmEgY29udmVyc2FjacOzbiB5IHZhbW9zIGEgaG9tZSwgcmVzZXRlYXIgaW5pdGlhbENoYXRJZCB5IGluY3JlbWVudGFyIG5ld0NoYXRLZXlcbiAgICBpZiAoc2hvdWxkUmVzZXRDaGF0U3RhdGVPbkdvSG9tZShjdXJyZW50T3B0aW9uLCBvcHRpb25zLmNoYXQpKSB7XG4gICAgICAvLyBObyBjb3J0YW1vcyBsYSBnZW5lcmFjacOzbjogbGEgc2VzacOzbiBzaWd1ZSByZXNwb25kaWVuZG8gZW4gYmFja2dyb3VuZC5cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIGlmIChzaG91bGRDbGVhckNsaWVudE9uR29Ib21lRnJvbUNoYXQoYWdlbnQ/LmVudGl0eSkpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChzaG91bGRDbGVhclRhc2tPbkdvSG9tZUZyb21DaGF0KHNlY3Rpb24pKSB7XG4gICAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2hvdWxkUmVzZXRBZ2VudFRvRmlyc3RPbkdvSG9tZShhZ2VudCwgYWdlbnRzLmRhdGEubGVuZ3RoKSkge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRzLmRhdGFbMF0pXG4gICAgfVxuICAgIGlmIChzaG91bGRDbGVhck9yY2hlc3RyYXRvckdsb2JhbENvbnRleHRPbkdvSG9tZShzZWN0aW9uLCBhZ2VudD8udHlwZSkpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgfSwgW1xuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBvcHRpb25zLmNoYXQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgYWdlbnQsXG4gICAgYWdlbnRzLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBzZWN0aW9uLFxuICBdKVxuXG4gIGdvSG9tZVJlZi5jdXJyZW50ID0gaGFuZGxlR29Ib21lXG5cbiAgY29uc3Qgc3RhcnROZXdDaGF0RnJvbUNhdGFsb2cgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYWdlbnRzTGlzdCA9IHNob3VsZFByZWZldGNoQWdlbnRzRm9yQ2F0YWxvZ05ld0NoYXQoY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBvcHRpb25zLm15QWdlbnRzLCBvcHRpb25zLm15U2tpbGxzKVxuICAgICAgPyBhd2FpdCBlbnN1cmVBZ2VudHNMb2FkZWQoKVxuICAgICAgOiBhZ2VudHMuZGF0YVxuICAgIGNvbnN0IGZpcnN0QWdlbnQgPSBhZ2VudHNMaXN0WzBdXG5cbiAgICBpZiAoc2hvdWxkQ2xlYXJDb250ZXh0Rm9yQ2F0YWxvZ09yU2tpbGxBZ2VudChmaXJzdEFnZW50KSkge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBZ2VudClcbiAgICB9XG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gIH0sIFtcbiAgICBhZ2VudHMuZGF0YSxcbiAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24sXG4gICAgZW5zdXJlQWdlbnRzTG9hZGVkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldFRhc2ssXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVN0YXJ0TmV3Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2hvdWxkU3RhcnROZXdDaGF0RnJvbUNhdGFsb2coY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkKSkge1xuICAgICAgc3RhcnROZXdDaGF0RnJvbUNhdGFsb2coKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBoYW5kbGVHb0hvbWUsIGlzTWFpYWtlckFnZW50U2VsZWN0ZWQsIHN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nXSlcblxuICBjb25zdCBoYW5kbGVSZXNldENoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbaGFuZGxlR29Ib21lXSlcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIiBkZWwgaGVhZGVyIChzb2xvIG9yY2hlc3RyYXRvcik6XG4gIC8vIC0gRGVzZGUgZWwgY2hhdCAoaGVhZGVyIG8gcHJvamVjdC9jbGllbnQvdGFzayk6IGluaWNpYSB1bmEgY29udmVyc2FjacOzbiBudWV2YSBjb25zZXJ2YW5kbyBlbFxuICAvLyAgIGNvbnRleHRvIHBpbmVhZG8geSB2dWVsdmUgYWwgaG9tZSAocGFzbyAyIGNvbiBGQVFzL0ZVQXMpLlxuICAvLyAtIEVuIGVsIGhvbWUgcGFzbyAyIChGQVFzL0ZVQXMgY29uIGNvbnRleHRvKTogbGltcGlhIGVsIGNvbnRleHRvIHBpbmVhZG8geSB2dWVsdmUgYWwgcGFzbyAxXG4gIC8vICAgKHNlbGVjdG9yIGRlIGNvbnRleHRvcyByZWNpZW50ZXMpLiBFbiBoZWFkZXIgc2llbXByZTsgZW4gcHJvamVjdC9jbGllbnQvdGFzayBzb2xvIHNpIGVsXG4gIC8vICAgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gKGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbikuXG4gIGNvbnN0IGhhbmRsZUJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgdG8gPSByZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uKHNlY3Rpb24sIGFnZW50Py50eXBlLCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIG9wdGlvbnMuaG9tZSlcbiAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRCYWNrLCB7IHRvIH0pXG5cbiAgICAvLyBEZXNkZSBlbCBjaGF0IOKGkiBudWV2YSBjb252ZXJzYWNpw7NuIFNJTiBib3JyYXIgZWwgY29udGV4dG8gcGluZWFkbywgdm9sdmllbmRvIGFsIGhvbWUuXG4gICAgaWYgKHNob3VsZEJhY2tTdGFydE5ld0NoYXRQcmVzZXJ2aW5nQ29udGV4dChjb21wdXRlZEN1cnJlbnRPcHRpb24sIG9wdGlvbnMuY2hhdCkpIHtcbiAgICAgIC8vIE5vIGNvcnRhbW9zIGxhIGdlbmVyYWNpw7NuOiBsYSBzZXNpw7NuIHNpZ3VlIHJlc3BvbmRpZW5kbyBlbiBiYWNrZ3JvdW5kLlxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEhvbWUgcGFzbyAyIChjb250ZXh0byBwaW5lYWRvKSDihpIgbGltcGlhciBlbCBjb250ZXh0byB5IHZvbHZlciBhbCBwYXNvIDEgKGNvbnRleHRvcyByZWNpZW50ZXMpLlxuICAgIGlmIChzaG91bGRCYWNrQ2xlYXJQaW5uZWRDb250ZXh0KGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgb3B0aW9ucy5ob21lLCBzZWN0aW9uLCBkaWRSZXNldENvbnRleHRJblNlY3Rpb24pKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICB9XG4gIH0sIFtcbiAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24sXG4gICAgc2VjdGlvbixcbiAgICBhZ2VudD8udHlwZSxcbiAgICBhbXBsaXR1ZEV2ZW50LFxuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBkaWRSZXNldENvbnRleHRJblNlY3Rpb24sXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0VGFzayxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gIF0pXG5cbiAgLy8gRGV0ZWN0YSBlbCByZWluaWNpbyBkZSBjb250ZXh0byBlbiBwcm9qZWN0L2NsaWVudC90YXNrOiBjb250ZXh0byBwaW5lYWRvIOKGkiB2YWPDrW8gY29uIGVsXG4gIC8vIG9yY2hlc3RyYXRvciAocC4gZWouIGFsIHJlc2VsZWNjaW9uYXIgTUFJQSBlbiBlbCBsaXN0YWRvKS4gU29sbyBsYSB0cmFuc2ljacOzbiBjdWVudGEsIGFzw60gdW5hXG4gIC8vIGFwZXJ0dXJhIGZyZXNjYSAoY29udGV4dG8gcGluZWFkbyBkZXNkZSBsYSBzZWNjacOzbikgbm8gbG8gYWN0aXZhLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHBpbm5lZCA9IHJlc29sdmVIYXNQaW5uZWRDb250ZXh0KHtcbiAgICAgIHRhc2tJZDogdGFzaz8uaWQsXG4gICAgICBjaGlwc1Byb2plY3RJZDogY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQsXG4gICAgICBjbGllbnRJZDogY2xpZW50Py5pZCxcbiAgICAgIHByb2plY3RJZDogcHJvamVjdD8uaWQsXG4gICAgfSlcbiAgICBjb25zdCB3YXNQaW5uZWQgPSBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50XG4gICAgcHJldkhhc1Bpbm5lZENvbnRleHRSZWYuY3VycmVudCA9IHBpbm5lZFxuICAgIGlmIChzaG91bGRNYXJrT3JjaGVzdHJhdG9yQ29udGV4dFJlc2V0KHNlY3Rpb24sIGFnZW50Py50eXBlLCB3YXNQaW5uZWQsIHBpbm5lZCkpIHtcbiAgICAgIHNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbih0cnVlKVxuICAgIH1cbiAgfSwgW3Rhc2s/LmlkLCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCwgY2xpZW50Py5pZCwgcHJvamVjdD8uaWQsIHNlY3Rpb24sIGFnZW50Py50eXBlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIEVsIMOtY29ubyBkZSBNQUlBIGRlbCBoZWFkZXIgbGxldmEgc2llbXByZSBhbCBIb21lLiBTaSBNQUlBIHlhIGVzdMOhIG1vbnRhZGEgcGVyb1xuICAgKiBtaW5pbWl6YWRhLCBlbCBob3N0IG5vIHB1ZWRlIHJlc29sdmVybG8gY2FtYmlhbmRvIGBpc09wZW5gICh5YSBlc3TDoSBlbiB0cnVlKSxcbiAgICogYXPDrSBxdWUgYXZpc2EgcG9yIGV2ZW50byB5IGFjw6EgcmVzdGF1cmFtb3MgeSB2YW1vcyBhbCBIb21lLlxuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuSG9tZSA9ICgpID0+IHtcbiAgICAgIGFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIoe1xuICAgICAgICBzZWN0aW9uOiAnaGVhZGVyJyxcbiAgICAgICAgZW50aXR5OiB7IHByb2plY3RJZDogbnVsbCwgY2xpZW50SWQ6IG51bGwgfSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1ob21lJywgb3BlbkhvbWUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1ob21lJywgb3BlbkhvbWUpXG4gICAgfVxuICB9LCBbYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3Zlcl0pXG5cbiAgLyoqXG4gICAqIE90cm8gaG9zdCAocHJveWVjdG8sIGNsaWVudGUsIGJhbm5lciwgaGVhZGVy4oCmKSBwaWRlIGFicmlyIE1BSUEgbWllbnRyYXMgeWEgaGF5IHVuYVxuICAgKiBpbnN0YW5jaWEgbW9udGFkYS4gRXhwYW5kZSBzaSBlc3RhYmEgbWluaW1pemFkbywgYXBsaWNhIGVsIGNvbnRleHRvIGRlbCBob3N0IG51ZXZvXG4gICAqIHkgdmEgYWwgaG9tZSDigJQgc2luIHJlc3RhdXJhciBsYSBjb252ZXJzYWNpw7NuIHByZXZpYSAoZXNvIGxvIGhhY2UgZWwgcGlsbCkuXG4gICAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5Gcm9tSG9zdCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDxNYWlhSG9zdE9wZW5EZXRhaWw+XG4gICAgICBpZiAoIWRldGFpbCkgcmV0dXJuXG4gICAgICBhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyKGRldGFpbClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIG9wZW5Gcm9tSG9zdClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvcGVuRnJvbUhvc3QpXG4gICAgfVxuICB9LCBbYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3Zlcl0pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBjb25zdCBjb250ZXh0UGF0Y2ggPSByZXNvbHZlT3Blbk5ld0NoYXRXaXRoQWdlbnRDb250ZXh0KGRldGFpbCA/PyB7fSlcbiAgICAgIHNldFByb2plY3QoY29udGV4dFBhdGNoLnByb2plY3QpXG4gICAgICBzZXRDbGllbnQ/Lihjb250ZXh0UGF0Y2guY2xpZW50KVxuICAgICAgaWYgKGNvbnRleHRQYXRjaC5zaG91bGRTZXRUYXNrKSB7XG4gICAgICAgIHNldFRhc2s/Lihjb250ZXh0UGF0Y2gudGFzayA/PyBudWxsKVxuICAgICAgfVxuICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIH1cbiAgfSwgW3NlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdKVxuXG4gIGNvbnN0IGFwcGx5U2tpbGxVc2VGbG93ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHNraWxsOiBTa2lsbCwgdXNlRmlyc3RBZ2VudDogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3QgZmlyc3RBZ2VudCA9IGF3YWl0IGVuc3VyZUFnZW50c0JlZm9yZVNraWxsVXNlKHtcbiAgICAgICAgdXNlRmlyc3RBZ2VudCxcbiAgICAgICAgYWdlbnRzOiBhZ2VudHNEYXRhUmVmLmN1cnJlbnQsXG4gICAgICAgIGVuc3VyZUFnZW50c0xvYWRlZCxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChzaG91bGRDbGVhckNvbnRleHRGb3JDYXRhbG9nT3JTa2lsbEFnZW50KGZpcnN0QWdlbnQpKSB7XG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QWdlbnQpXG4gICAgICB9XG5cbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGRpc3BhdGNoU2tpbGxNZW50aW9uSW5zZXJ0KHNraWxsKVxuICAgIH0sXG4gICAgW2Vuc3VyZUFnZW50c0xvYWRlZCwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza11cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IHNraWxsLCB1c2VGaXJzdEFnZW50ID0gZmFsc2UgfSA9XG4gICAgICAgIChldmVudCBhcyBDdXN0b21FdmVudDx7IHNraWxsOiBTa2lsbDsgdXNlRmlyc3RBZ2VudD86IGJvb2xlYW4gfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbCkgcmV0dXJuXG5cbiAgICAgIGFwcGx5U2tpbGxVc2VGbG93KHNraWxsLCB1c2VGaXJzdEFnZW50KS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwgaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIGhhbmRsZVVzZVNraWxsQWZ0ZXJTYXZlKVxuICAgIH1cbiAgfSwgW2FwcGx5U2tpbGxVc2VGbG93XSlcblxuICAvLyBNZXRhZGF0YSBkZSBsYSBzZXNzaW9uIGFiaWVydGEgKGFnZW50X3R5cGUvYWdlbnRfZW50aXR5ICsgY29udGV4dG8pLCBlbWl0aWRhIHBvciB1c2VDaGF0TWVzc2FnZXMuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TZXNzaW9uTWV0YSA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZ0IGFzIEN1c3RvbUV2ZW50PFNlc3Npb25NZXRhPlxuICAgICAgaWYgKGRldGFpbCkgc2V0U2Vzc2lvbk1ldGEoZGV0YWlsKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWNoYXQtc2Vzc2lvbi1tZXRhJywgb25TZXNzaW9uTWV0YSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIG9uU2Vzc2lvbk1ldGEpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBBbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24gbGltcGlhbW9zIGxhIG1ldGFkYXRhOyBlbCBsb2FkIGRlIGxhIG51ZXZhIHNlc3Npb24gbGEgdnVlbHZlIGEgZW1pdGlyLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFNlc3Npb25NZXRhKG51bGwpXG4gIH0sIFtpbml0aWFsQ2hhdElkXSlcblxuICAvLyBDYXJ0ZWwgXCJjb250aW51YXIgZW4gdW4gY2hhdCBudWV2b1wiOiBzZSBtdWVzdHJhIGFsIGFicmlyIHVuYSBjb252ZXJzYWNpw7NuIGRlIHVuIGNsb25lIGxlZ2FjeVxuICAvLyAoYWdlbnRfdHlwZSA9PT0gJ2Nsb25lJyBjb24gZW50aXR5IHByb2plY3QvdGFzay9jbGllbnQpLiBFbCBpbnB1dCBzZSByZWVtcGxhemEgcG9yIGVsIGNhcnRlbC5cbiAgY29uc3QgbGVnYWN5Q29udGV4dFNlc3Npb24gPSB1c2VNZW1vKFxuICAgICgpID0+IHJlc29sdmVMZWdhY3lDb250ZXh0U2Vzc2lvbihjb21wdXRlZEN1cnJlbnRPcHRpb24sIG9wdGlvbnMuY2hhdCwgc2Vzc2lvbk1ldGEpLFxuICAgIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNlc3Npb25NZXRhXVxuICApXG5cbiAgLy8gTWFyY2EgZWwgYWdlbnRlIGRlIGxhIGNvbnZlcnNhY2nDs24gbGVnYWN5IHBhcmEgcXVlIGhlYWRlciwgc2VsZWN0b3IgeSBhdmF0YXIgbXVlc3RyZW4gZWwgbG9nb1xuICAvLyBNQUlBIHkgZWwgbm9tYnJlIHRhY2hhZG8gKGFnZW50ZSBvYnNvbGV0byksIHNpbiBkZXBlbmRlciBkZWwgYHR5cGVgIHJlc3VlbHRvIGRlIGxhIHNlc2nDs24gdmllamEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZE1hcmtBZ2VudEFzTGVnYWN5Q29udGV4dChsZWdhY3lDb250ZXh0U2Vzc2lvbiwgYWdlbnQpKSB7XG4gICAgICBzZWxlY3RBZ2VudChidWlsZExlZ2FjeUNvbnRleHRBZ2VudChhZ2VudCkpXG4gICAgfVxuICB9LCBbbGVnYWN5Q29udGV4dFNlc3Npb24sIGFnZW50LCBzZWxlY3RBZ2VudF0pXG5cbiAgLy8gQWJyZSB1biBjaGF0IG51ZXZvIGNvbiBlbCBvcmNoZXN0cmF0b3Igc2V0ZWFuZG8gZWwgY29udGV4dG8gZGVsIGNsb25lIGxlZ2FjeSAobWlzbW8gY3JpdGVyaW9cbiAgLy8gcXVlIGNsaWNrZWFyIHVuIGNvbnRleHRvIHJlY2llbnRlIGVuIGVsIGhvbWUg4oaSIHBhc28gMiBjb24gRkFRcy9hY2Npb25lcyBkZSBlc2UgY29udGV4dG8pLlxuICBjb25zdCBoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgb3JjaGVzdHJhdG9yID0gZmluZE9yY2hlc3RyYXRvckFnZW50KGFnZW50cy5kYXRhKVxuICAgIGlmICghY2FuQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0KHNlc3Npb25NZXRhLCBvcmNoZXN0cmF0b3IpIHx8ICFzZXNzaW9uTWV0YSB8fCAhb3JjaGVzdHJhdG9yKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qge1xuICAgICAgYWdlbnRFbnRpdHksXG4gICAgICBwcm9qZWN0SWQ6IHBJZCxcbiAgICAgIHByb2plY3ROYW1lOiBwTmFtZSxcbiAgICAgIGNsaWVudElkOiBjSWQsXG4gICAgICBjbGllbnROYW1lOiBjTmFtZSxcbiAgICAgIHRhc2tJZDogdElkLFxuICAgICAgdGFza05hbWU6IHROYW1lLFxuICAgIH0gPSBzZXNzaW9uTWV0YVxuXG4gICAgY29uc3QgbWlncmF0aW9uUGF0Y2ggPSBidWlsZExlZ2FjeUNvbnRleHRNaWdyYXRpb25QYXRjaCh7XG4gICAgICBhZ2VudEVudGl0eSxcbiAgICAgIHByb2plY3RJZDogcElkLFxuICAgICAgcHJvamVjdE5hbWU6IHBOYW1lLFxuICAgICAgY2xpZW50SWQ6IGNJZCxcbiAgICAgIGNsaWVudE5hbWU6IGNOYW1lLFxuICAgICAgdGFza0lkOiB0SWQsXG4gICAgICB0YXNrTmFtZTogdE5hbWUsXG4gICAgfSkgPz8geyB0YXNrOiBudWxsLCBwcm9qZWN0OiBudWxsLCBjbGllbnQ6IG51bGwsIGNoaXBzUHJvamVjdDogbnVsbCB9XG5cbiAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG5cbiAgICBzZXRUYXNrPy4obWlncmF0aW9uUGF0Y2gudGFzaylcbiAgICBzZXRQcm9qZWN0KG1pZ3JhdGlvblBhdGNoLnByb2plY3QpXG4gICAgc2V0Q2xpZW50Py4obWlncmF0aW9uUGF0Y2guY2xpZW50KVxuICAgIHNldENoaXBzUHJvamVjdChtaWdyYXRpb25QYXRjaC5jaGlwc1Byb2plY3QpXG5cbiAgICBzZWxlY3RBZ2VudChvcmNoZXN0cmF0b3IpXG4gICAgc2V0U2Vzc2lvbk1ldGEobnVsbClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgfSwgW3Nlc3Npb25NZXRhLCBhZ2VudHMuZGF0YSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFzaywgc2V0Q2hpcHNQcm9qZWN0LCBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSlcblxuICBjb25zdCB7IHNob3dOZXdDaGF0LCBpc015QWdlbnRzU2VjdGlvbiwgaXNNeVNraWxsc1NlY3Rpb24sIGlzTWFpYWtlckNyZWF0b3JIb21lIH0gPSB1c2VNZW1vKFxuICAgICgpID0+IHJlc29sdmVDaGF0TW9kYWxTZWN0aW9uRmxhZ3MoY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkKSxcbiAgICBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkXVxuICApXG5cbiAgY29uc3QgaGFzQ2hhdEFjY2VzcyA9IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpXG4gIGNvbnN0IG1haW5Db250ZW50VmlldyA9IHJlc29sdmVDaGF0TW9kYWxNYWluQ29udGVudFZpZXcoaGFzRXJyb3IsIGhhc0NoYXRBY2Nlc3MpXG4gIGNvbnN0IHNob3dNb2RhbEZvb3RlciA9IHNob3VsZFNob3dDaGF0TW9kYWxGb290ZXIoe1xuICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbixcbiAgICBob21lT3B0aW9uOiBvcHRpb25zLmhvbWUsXG4gICAgY2hhdE9wdGlvbjogb3B0aW9ucy5jaGF0LFxuICAgIGFnZW50c0NvdW50OiBhZ2VudHMuZGF0YS5sZW5ndGgsXG4gICAgaXNNYWlha2VyQ3JlYXRvckhvbWUsXG4gICAgaGFzRXJyb3IsXG4gICAgbG9hZGluZyxcbiAgICBoYXNBY2Nlc3M6IGhhc0NoYXRBY2Nlc3MsXG4gIH0pXG4gIGNvbnN0IHNob3dTaWRlYmFyID0gc2hvdWxkUmVuZGVyQ2hhdFNpZGViYXIoaGFzQ2hhdEFjY2VzcywgaXNGbG9hdGluZylcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIjogc29sbyBwYXJhIGVsIG9yY2hlc3RyYXRvci5cbiAgLy8gLSBFbiBlbCBjaGF0OiBkaXNwb25pYmxlIGVuIHRvZGFzIGxhcyBzZWNjaW9uZXMgKGhlYWRlciB5IHByb2plY3QvY2xpZW50L3Rhc2spLlxuICAvLyAtIEVuIGVsIGhvbWUgcGFzbyAyIChGQVFzL0ZVQXMgY29uIGNvbnRleHRvIHBpbmVhZG8pOiBlbiBlbCBoZWFkZXIgc2llbXByZTsgZW5cbiAgLy8gICBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWwgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gKHBhc8OzIHBvciBlbCBzZWxlY3RvciBkZVxuICAvLyAgIGNvbnRleHRvcyByZWNpZW50ZXMpLiBFbiBlbCBwYXNvIDEgKHNpbiBjb250ZXh0bykgTk8gc2UgbXVlc3RyYS5cbiAgY29uc3QgaGFzUGlubmVkQ29udGV4dCA9IHJlc29sdmVIYXNQaW5uZWRDb250ZXh0KHtcbiAgICB0YXNrSWQ6IHRhc2s/LmlkLFxuICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICBjbGllbnRJZDogY2xpZW50Py5pZCxcbiAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkLFxuICB9KVxuICBjb25zdCB7IGlzQ2hhdFZpZXcsIGlzSGVhZGVySG9tZVN0ZXAyLCBpc1NlY3Rpb25SZXNldEhvbWVTdGVwMiB9ID0gcmVzb2x2ZU9yY2hlc3RyYXRvckhvbWVOYXZGbGFncyh7XG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIGhvbWVPcHRpb246IG9wdGlvbnMuaG9tZSxcbiAgICBjaGF0T3B0aW9uOiBvcHRpb25zLmNoYXQsXG4gICAgaGFzUGlubmVkQ29udGV4dCxcbiAgICBzZWN0aW9uLFxuICAgIGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbixcbiAgfSlcbiAgY29uc3Qgc2hvd0JhY2tCdXR0b24gPSBzaG91bGRTaG93T3JjaGVzdHJhdG9yQmFja0J1dHRvbih7XG4gICAgYWdlbnRUeXBlOiBhZ2VudD8udHlwZSxcbiAgICBoYXNFcnJvcixcbiAgICBsb2FkaW5nLFxuICAgIGlzQ2hhdFZpZXcsXG4gICAgaXNIZWFkZXJIb21lU3RlcDIsXG4gICAgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIsXG4gIH0pXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWNhbk9wZW5NYWlhTWFya2V0cGxhY2UoQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgYXdhaXQgZW5zdXJlQWdlbnRzTG9hZGVkKClcbiAgICBjbGVhckFnZW50KClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlBZ2VudHMpXG4gICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHtcbiAgICAgIGFnZW50c05hdkFjdGl2ZTogJ215QWdlbnRzJyxcbiAgICAgIGN1cnJlbnRPcHRpb246IG9wdGlvbnMubXlBZ2VudHMsXG4gICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgICBhZ2VudElkOiBudWxsLFxuICAgIH0pXG4gIH0sIFtjbGVhckFnZW50LCBlbnN1cmVBZ2VudHNMb2FkZWQsIHVzZXIuaWRdKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Ta2lsbHMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRPcGVuU2tpbGxzQ2F0YWxvZyh1c2VySGFzU2tpbGxzQWNjZXNzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNsZWFyQWdlbnQoKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teVNraWxscylcbiAgICBoYW5kbGVHZXRTa2lsbHMoKVxuICAgIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkLCB7XG4gICAgICBhZ2VudHNOYXZBY3RpdmU6ICdteVNraWxscycsXG4gICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLm15U2tpbGxzLFxuICAgIH0pXG4gIH0sIFtjbGVhckFnZW50LCBoYW5kbGVHZXRTa2lsbHMsIHVzZXIuaWQsIHVzZXJIYXNTa2lsbHNBY2Nlc3NdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYSkpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGEpKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldFRhc2s/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgYWdlbnRzTmF2QWN0aXZlOiAnbWFpYWtlcicsXG4gICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLmhvbWUsXG4gICAgICBhZ2VudElkOiBtYWlha2VyQWdlbnQuaWQsXG4gICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgfSlcbiAgfSwgW2FnZW50cy5kYXRhLCBpMThuLmxhbmd1YWdlLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB1c2VyLmlkXSlcblxuICBjb25zdCBsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoc25hcHNob3Q6IE1haWFQYW5lbFNlc3Npb25TbmFwc2hvdCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaWYgKHNob3VsZFNraXBBZ2VudHNMb2FkT25TZXNzaW9uUmVzdG9yZShzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgYWdlbnRUb1NlbGVjdDogQWdlbnQgfCB1bmRlZmluZWRcbiAgICAgIGlmIChzaG91bGRGZXRjaEFnZW50RGV0YWlsT25TZXNzaW9uUmVzdG9yZShzbmFwc2hvdC5hZ2VudElkLCBzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYWdlbnRUb1NlbGVjdCA9IGF3YWl0IGZldGNoQWdlbnREZXRhaWwoc25hcHNob3QuYWdlbnRJZCBhcyBzdHJpbmcpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGFnZW50VG9TZWxlY3QgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIGF3YWl0IGhhbmRsZUdldEFnZW50cyhzaG91bGRQYXNzQWdlbnRUb0dldEFnZW50c09uUmVzdG9yZShzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUpID8gYWdlbnRUb1NlbGVjdCA6IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzaG91bGRTZWxlY3RGZXRjaGVkQWdlbnRBZnRlclJlc3RvcmUoYWdlbnRUb1NlbGVjdCwgc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlKSkge1xuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFRvU2VsZWN0IGFzIEFnZW50KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUdldEFnZW50cywgc2VsZWN0QWdlbnRdXG4gIClcblxuICBjb25zdCBhcHBseVNlc3Npb25SZXN0b3JlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHNuYXBzaG90OiBNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QpID0+IHtcbiAgICAgIHNldElzTWluaW1pemVkKGZhbHNlKVxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG5cbiAgICAgIGNvbnN0IGNoaXBzUHJvamVjdEZyb21TbmFwc2hvdCA9IHJlc29sdmVTbmFwc2hvdENoaXBzUHJvamVjdChzbmFwc2hvdC5ob3N0Q29udGV4dClcbiAgICAgIGlmIChjaGlwc1Byb2plY3RGcm9tU25hcHNob3QpIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KGNoaXBzUHJvamVjdEZyb21TbmFwc2hvdClcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdG9yZVJvdXRlID0gcmVzb2x2ZVNlc3Npb25SZXN0b3JlTmF2Um91dGUoc25hcHNob3QpXG5cbiAgICAgIGlmIChyZXN0b3JlUm91dGUgPT09ICdteUFnZW50cycpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlT3Blbk1hcmtldHBsYWNlKClcbiAgICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN0b3JlUm91dGUgPT09ICdteVNraWxscycpIHtcbiAgICAgICAgaGFuZGxlT3BlblNraWxscygpXG4gICAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAocmVzdG9yZVJvdXRlID09PSAnbWFpYWtlcicpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlR29Ub01haWFrZXIoKVxuICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIHN5bmNQYW5lbFNlc3Npb24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3RvcmVSb3V0ZSA9PT0gJ2NoYXQnKSB7XG4gICAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgICAgc2V0SW5pdGlhbENoYXRJZChzbmFwc2hvdC5hY3RpdmVDaGF0SWQgPz8gbnVsbClcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKHNuYXBzaG90LmFjdGl2ZUNoYXRJZCA/PyBudWxsKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgICB9IGVsc2UgaWYgKHJlc3RvcmVSb3V0ZSA9PT0gJ3NhdmVkT3B0aW9uJyAmJiBzbmFwc2hvdC5jdXJyZW50T3B0aW9uKSB7XG4gICAgICAgIHNldEN1cnJlbnRPcHRpb24oc25hcHNob3QuY3VycmVudE9wdGlvbiBhcyBvcHRpb25zKVxuICAgICAgfVxuXG4gICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICB9LFxuICAgIFtcbiAgICAgIGZvY3VzQ2hhdElucHV0LFxuICAgICAgaGFuZGxlR29Ub01haWFrZXIsXG4gICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gICAgICBoYW5kbGVPcGVuU2tpbGxzLFxuICAgICAgaGFuZGxlcnMsXG4gICAgICBzZXRDaGF0Vmlld1Zpc2libGUsXG4gICAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgICBzeW5jUGFuZWxTZXNzaW9uLFxuICAgIF1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc25hcHNob3QgPSBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudFxuICAgIGlmICghc25hcHNob3QgfHwgc2Vzc2lvblJlc3RvcmVTdGFydGVkUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIHNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuXG4gICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG5cbiAgICBjb25zdCBydW5SZXN0b3JlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlKHNuYXBzaG90KVxuICAgICAgICBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgYXdhaXQgYXBwbHlTZXNzaW9uUmVzdG9yZShzbmFwc2hvdClcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldElzUmVzdG9yaW5nU2Vzc2lvbihmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBydW5SZXN0b3JlKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKVxuICB9LCBbYXBwbHlTZXNzaW9uUmVzdG9yZSwgbG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlLCBzZXRDaGF0Vmlld1Zpc2libGVdKVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmVtb3ZlQWdlbnQoYWdlbnRJZClcbiAgICAgIGlmIChzaG91bGRSZXNlbGVjdEFnZW50QWZ0ZXJEZWxldGUoYWdlbnQ/LmlkLCBhZ2VudElkKSkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGFnZW50SWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQ/LmlkLCByZW1vdmVBZ2VudCwgc2VsZWN0Rmlyc3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IG1vZGFsUGFuZWwgPSAoXG4gICAgPD5cbiAgICAgIHtzaG93U2lkZWJhciA/IChcbiAgICAgICAgPFNpZGViYXJcbiAgICAgICAgICBvbkdvVG9DaGF0PXtnb1RvQ2hhdH1cbiAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRTaWRlYmFySGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgaGFuZGxlR29Ub0hvbWU9e2hhbmRsZUdvSG9tZX1cbiAgICAgICAgICBoYW5kbGVTdGFydE5ld0NoYXQ9e2hhbmRsZVN0YXJ0TmV3Q2hhdH1cbiAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2U9e2hhbmRsZU9wZW5NYXJrZXRwbGFjZX1cbiAgICAgICAgICBzaG93TmV3Q2hhdD17c2hvd05ld0NoYXR9XG4gICAgICAgICAgcmVmZXRjaENoYXRzPXtyZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzPXtzZXRSZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFzRXJyb3I9e3NpZGViYXJIYXNFcnJvcn1cbiAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU9e3NpZGViYXJBZ2VudHNOYXZBY3RpdmV9XG4gICAgICAgICAgaGFuZGxlT3BlblNraWxscz17aGFuZGxlT3BlblNraWxsc31cbiAgICAgICAgICBvbk9wZW5NYWlha2VyQ3JlYXRvcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgaXNMZWdhY3lDb250ZXh0U2Vzc2lvbj17ISFsZWdhY3lDb250ZXh0U2Vzc2lvbn1cbiAgICAgICAgICBpbml0aWFsT3Blbj17c2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50Py5zaWRlYmFyT3BlbiA/PyBmYWxzZX1cbiAgICAgICAgICBvbk9wZW5DaGFuZ2U9e2hhbmRsZVNpZGViYXJPcGVuQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U0NDQUlNQ29udGVudCBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgPENoYXRBSU1vZGFsSGVhZGVyXG4gICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICBvbkxheW91dE1vZGVDaGFuZ2U9e2hhbmRsZUxheW91dE1vZGVDaGFuZ2V9XG4gICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgIGRyYWdnYWJsZT17aXNGbG9hdGluZ31cbiAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgIG9uRHJhZ01vdmU9e2hhbmRsZURyYWdNb3ZlfVxuICAgICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgICBoYW5kbGVNaW5pbWl6ZT17aGFuZGxlTWluaW1pemV9XG4gICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICBoYXNFcnJvcj17ISFhZ2VudEVycm9yfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgbG9hZGluZ01vcmU9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgIGhhc01vcmU9e2FnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICBoYW5kbGVSZXNldENoYXQ9e2hhbmRsZVJlc2V0Q2hhdH1cbiAgICAgICAgICBvbkFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgIGxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICBzb3J0QWdlbnRzTGlzdD17c29ydEFnZW50c0xpc3R9XG4gICAgICAgICAgaXNNeUFnZW50c1NlY3Rpb249e2lzTXlBZ2VudHNTZWN0aW9ufVxuICAgICAgICAgIGlzTXlTa2lsbHNTZWN0aW9uPXtpc015U2tpbGxzU2VjdGlvbn1cbiAgICAgICAgICBpc01haWFrZXJTZWN0aW9uPXtpc01haWFrZXJDcmVhdG9ySG9tZX1cbiAgICAgICAgICBzaG93QmFja0J1dHRvbj17c2hvd0JhY2tCdXR0b259XG4gICAgICAgICAgb25CYWNrPXtoYW5kbGVCYWNrfVxuICAgICAgICAvPlxuICAgICAgICB7bWFpbkNvbnRlbnRWaWV3ID09PSAnZXJyb3InID8gKFxuICAgICAgICAgIDxNQUlBRXJyb3IgLz5cbiAgICAgICAgKSA6IG1haW5Db250ZW50VmlldyA9PT0gJ2NoYXQnID8gKFxuICAgICAgICAgIDxDaGF0QUlDb250ZW50XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uPXtjb21wdXRlZEN1cnJlbnRPcHRpb259XG4gICAgICAgICAgICBoYW5kbGVycz17eyAuLi5oYW5kbGVycywgY2hhdDogc3RhcnRDaGF0LCBob21lOiBoYW5kbGVycy5ob21lLCBoYW5kbGVHb0hvbWUgfX1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldEhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgcmVmcz17eyB1c2VySW5pdGlhbE1lc3NhZ2UsIGluaXRpYWxDaGF0SWQgfX1cbiAgICAgICAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeT17aGFuZGxlU2VuZE1lc3NhZ2VSZWFkeX1cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIGZsb2F0aW5nPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICAgIGxvYWRpbmdBZ2VudHM9e2xvYWRpbmd9XG4gICAgICAgICAgICBvbkRlbGV0ZUFnZW50PXtoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50c31cbiAgICAgICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIGhhc01vcmVBZ2VudHM9eyEhYWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgICAgbG9hZGluZ01vcmVBZ2VudHM9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgICAgb25Mb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgICBvbkdvVG9NYWlha2VyPXtoYW5kbGVHb1RvTWFpYWtlcn1cbiAgICAgICAgICAgIG15U2tpbGxzPXtteVNraWxsc31cbiAgICAgICAgICAgIHNoYXJlZFNraWxscz17c2hhcmVkU2tpbGxzfVxuICAgICAgICAgICAgbG9hZGluZ1NraWxscz17bG9hZGluZ1NraWxsc31cbiAgICAgICAgICAgIG9uRGVsZXRlU2tpbGw9e3JlbW92ZVNraWxsfVxuICAgICAgICAgICAgb25TZWFyY2hBZ2VudHM9e3NlYXJjaEN1c3RvbUFnZW50c31cbiAgICAgICAgICAgIHNlYXJjaExvYWRpbmdBZ2VudHM9e3NlYXJjaExvYWRpbmd9XG4gICAgICAgICAgICBhZ2VudEVycm9yPXthZ2VudEVycm9yfVxuICAgICAgICAgICAgaXNSZXN0b3JpbmdTZXNzaW9uPXtpc1Jlc3RvcmluZ1Nlc3Npb259XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UHJvamVjdFN1bW1hcnlDb250ZW50IG9uUmVzdGFydFN1bW1hcnk9e2hhbmRsZXJzLmhvbWV9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHtzaG93TW9kYWxGb290ZXIgJiYgKFxuICAgICAgICAgIDxDaGF0QWlNb2RhbEZvb3RlclxuICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgaGFuZGxlU3RvcEdlbmVyYXRpb249e3N0b3BHZW5lcmF0aW9uRnVuY3Rpb259XG4gICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgIGNoYXRJZD17aW5pdGlhbENoYXRJZH1cbiAgICAgICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgbGVnYWN5Q29udGV4dFNlc3Npb249e2xlZ2FjeUNvbnRleHRTZXNzaW9ufVxuICAgICAgICAgICAgb25Db250aW51ZUluTmV3Q2hhdD17aGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0fVxuICAgICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSU1Db250ZW50PlxuICAgIDwvPlxuICApXG5cbiAgY29uc3QgY29udGVudFdyYXBwZXIgPSAoXG4gICAgPFNDQ0FJTUNvbnRlbnRXcmFwcGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9IHJlZj17Y29udGVudFdyYXBwZXJSZWZ9PlxuICAgICAge21vZGFsUGFuZWx9XG4gICAgPC9TQ0NBSU1Db250ZW50V3JhcHBlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgc2VsZWN0b3IgJiZcbiAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICA8U0NDQUlNV3JhcHBlclxuICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgIGRyYWdQb3NpdGlvbj17cmVzb2x2ZWREcmFnUG9zaXRpb259XG4gICAgICAgIGVsZXZhdGVkPXtzaG91bGRVc2VFbGV2YXRlZE1haWFQYW5lbChzZWN0aW9uKX1cbiAgICAgICAgJG1pbmltaXplZD17aXNNaW5pbWl6ZWR9XG4gICAgICA+XG4gICAgICAgIDxTQ0NBSU1NaW5pbWl6ZWRIaWRlICRoaWRkZW49e2lzTWluaW1pemVkfT5cbiAgICAgICAgICA8RmxvYXRpbmdQYW5lbE1vdGlvbiB0aWx0PXt0aWx0TW90aW9ufSBleHBhbmRlZD17ZXhwYW5kZWR9PlxuICAgICAgICAgICAge2NvbnRlbnRXcmFwcGVyfVxuICAgICAgICAgIDwvRmxvYXRpbmdQYW5lbE1vdGlvbj5cbiAgICAgICAgPC9TQ0NBSU1NaW5pbWl6ZWRIaWRlPlxuICAgICAgICB7aXNNaW5pbWl6ZWQgJiYgKFxuICAgICAgICAgIDxNYWlhTWluaW1pemVkUGlsbFxuICAgICAgICAgICAgc2hvd05vdmVsdHlEb3Q9e3Nob3dNaW5pbWl6ZWROb3ZlbHR5RG90fVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2hhc0FjdGl2ZVN0cmVhbX1cbiAgICAgICAgICAgIG9uUmVzdG9yZT17aGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiAoXG4gICAgICAgICAgPEFibUFnZW50TW9kYWxcbiAgICAgICAgICAgIGFkZEFnZW50PXthZGRBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50PXt1cGRhdGVBZ2VudH1cbiAgICAgICAgICAgIHJlbW92ZUFnZW50PXtyZW1vdmVBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBzZWxlY3RGaXJzdEFnZW50PXtzZWxlY3RGaXJzdEFnZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzU2tpbGxzQWNjZXNzICYmIChcbiAgICAgICAgICA8QWJtU2tpbGxNb2RhbCBhZGRTa2lsbD17YWRkU2tpbGx9IHVwZGF0ZVNraWxsSW5MaXN0PXt1cGRhdGVTa2lsbEluTGlzdH0gcmVtb3ZlU2tpbGw9e3JlbW92ZVNraWxsfSAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1NraWxsc0FjY2VzcyAmJiA8QWJtU2tpbGxHZW5lcmF0ZU1vZGFsIC8+fVxuICAgICAgICA8U25hY2tiYXIgLz5cbiAgICAgIDwvU0NDQUlNV3JhcHBlcj4sXG4gICAgICBzZWxlY3RvclxuICAgIClcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQ0VBLFdBQVcsRUFDWEMsT0FBTyxFQUNQQyxRQUFRLEVBQ1JDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxlQUFlLFFBRVYsT0FBTztBQUNkLE9BQU9DLFFBQVEsTUFBTSxXQUFXO0FBQ2hDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsaUJBQWlCLFFBQVEsZ0NBQWdDO0FBQ2xFLFNBQVNDLFNBQVMsUUFBUSx1QkFBdUI7QUFDakQsU0FBU0Msc0JB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QUN1UixRQUFRLEVBQUVBLFFBQVM7SUFBQzBRLFFBQVEsRUFBRXpRLFVBQVc7SUFBQ3FTLEdBQUcsRUFBRXBTLGlCQUFrQjtJQUFBK1AsUUFBQSxFQUNwRkQ7RUFBVSxDQUNTLENBQ3ZCO0VBRUQsT0FDRXpRLFFBQVEsaUJBQ1JyUyxRQUFRLENBQUNxbEIsWUFBWSxjQUNuQnJkLEtBQUEsQ0FBQ3ZHLGFBQWE7SUFDWnFSLFFBQVEsRUFBRUEsUUFBUztJQUNuQkosVUFBVSxFQUFFQSxVQUFXO0lBQ3ZCVSxZQUFZLEVBQUV3QyxvQkFBcUI7SUFDbkMwUCxRQUFRLEVBQUVwZSwwQkFBMEIsQ0FBQytILE9BQU8sQ0FBRTtJQUM5Q3NXLFVBQVUsRUFBRTFiLFdBQVk7SUFBQWtaLFFBQUEsZ0JBRXhCamIsSUFBQSxDQUFDdEcsbUJBQW1CO01BQUNna0IsT0FBTyxFQUFFM2IsV0FBWTtNQUFBa1osUUFBQSxlQUN4Q2piLElBQUEsQ0FBQy9GLG1CQUFtQjtRQUFDMGpCLElBQUksRUFBRWpTLFVBQVc7UUFBQ1YsUUFBUSxFQUFFQSxRQUFTO1FBQUFpUSxRQUFBLEVBQ3ZEL087TUFBYyxDQUNJO0lBQUMsQ0FDSCxDQUFDLEVBQ3JCbkssV0FBVyxpQkFDVi9CLElBQUEsQ0FBQ3BHLGlCQUFpQjtNQUNoQmdrQixjQUFjLEVBQUV4Yix1QkFBd0I7TUFDeEMyQyxXQUFXLEVBQUV6QyxlQUFnQjtNQUM3QnViLFNBQVMsRUFBRWpNO0lBQTJCLENBQ3ZDLENBQ0YsRUFDQS9ILGtCQUFrQixpQkFDakI3SixJQUFBLENBQUM3RyxhQUFhO01BQ1owUCxRQUFRLEVBQUVBLFFBQVM7TUFDbkJFLFdBQVcsRUFBRUEsV0FBWTtNQUN6QkQsV0FBVyxFQUFFQSxXQUFZO01BQ3pCRSxtQkFBbUIsRUFBRUEsbUJBQW9CO01BQ3pDQyxnQkFBZ0IsRUFBRUE7SUFBaUIsQ0FDcEMsQ0FDRixFQUNBZ0IsbUJBQW1CLGlCQUNsQmpLLElBQUEsQ0FBQzVHLGFBQWE7TUFBQ3NRLFFBQVEsRUFBRUEsUUFBUztNQUFDQyxpQkFBaUIsRUFBRUEsaUJBQWtCO01BQUNDLFdBQVcsRUFBRUE7SUFBWSxDQUFFLENBQ3JHLEVBQ0FLLG1CQUFtQixpQkFBSWpLLElBQUEsQ0FBQzFHLHFCQUFxQixJQUFFLENBQUMsZUFDakQwRyxJQUFBLENBQUMvRyxRQUFRLElBQUUsQ0FBQztFQUFBLENBQ0MsQ0FBQyxFQUNoQnNSLFFBQ0YsQ0FBQztBQUVMLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
1535
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJNQUlBRXJyb3IiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdldFNraWxscyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIkFibVNraWxsTW9kYWwiLCJTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCIsIkFibVNraWxsR2VuZXJhdGVNb2RhbCIsIlNFQ1RJT05TIiwiU0NDQUlNQ29udGVudCIsIlNDQ0FJTUNvbnRlbnRXcmFwcGVyIiwiU0NDQUlNTWluaW1pemVkSGlkZSIsIlNDQ0FJTVdyYXBwZXIiLCJNYWlhTWluaW1pemVkUGlsbCIsInVzZU1pbmltaXplZFBpbGxOb3ZlbHR5RG90IiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudCIsInVzZUZhcXNTdG9yZSIsImdldENoYXRzU3RvcmVTdGF0ZSIsInVzZUNoYXRzU3RvcmUiLCJyZWFkTGFzdEFjdGl2ZUNoYXRJZCIsIndyaXRlTGFzdEFjdGl2ZUNoYXRJZCIsImNsZWFyTWFpYVBhbmVsU2Vzc2lvbiIsInBhdGNoTWFpYVBhbmVsU2Vzc2lvbiIsInJlYWRNYWlhUGFuZWxTZXNzaW9uIiwid3JpdGVNYWlhUGFuZWxTZXNzaW9uIiwidXNlU2Vzc2lvbnNTdG9yZSIsImZldGNoTWFpYSIsImZldGNoQWdlbnREZXRhaWwiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UIiwidXNlSXNNYWlhUGFnZVJvdXRlIiwiY2xhbXBGbG9hdGluZ1BhbmVsUG9zaXRpb24iLCJoYXNBbnlBY3RpdmVTZXNzaW9uSW5NZXRhIiwiaGFzQmFubmVyRmFxVGl0bGUiLCJpc0Jhbm5lckZhcVJlYWR5VG9BdXRvU2VuZCIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJyZXNvbHZlQ29tcHV0ZWRDdXJyZW50T3B0aW9uIiwicmVzb2x2ZUluaXRpYWxDdXJyZW50T3B0aW9uIiwicmVzb2x2ZUxlZ2FjeUNvbnRleHRTZXNzaW9uIiwicmVzb2x2ZVNpZGViYXJBZ2VudHNOYXZBY3RpdmUiLCJzaG91bGRSZXN0b3JlRXhwYW5kZWRQYW5lbCIsInNob3VsZFNraXBGbG9hdGluZ0RyYWdUYXJnZXQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInJlc29sdmVIb3N0VGFrZW92ZXJFbnRpdHlTdGF0ZSIsImJ1aWxkSG9zdFRha2VvdmVyUGVyc2lzdENvbnRleHQiLCJidWlsZE1haWFQYW5lbFNlc3Npb25QYXRjaCIsImRpc3BhdGNoU2tpbGxNZW50aW9uSW5zZXJ0IiwiZW5zdXJlQWdlbnRzQmVmb3JlU2tpbGxVc2UiLCJyZXNvbHZlRmxvYXRpbmdQYW5lbERyYWdQb3NpdGlvbiIsInJlc29sdmVIb3N0VGFrZW92ZXJBZ2VudElkIiwicmVzb2x2ZU1haWFNb2RhbEkxOG5MYW5nIiwicmVzb2x2ZU1pbmltaXplZFJlc3RvcmVUYXJnZXQiLCJyZXNvbHZlTmV4dERyYWdQb3NpdGlvbiIsInJlc29sdmVVc2VySGFzQWdlbnRNYW5hZ2VtZW50UGVybWlzc2lvbnMiLCJzaG91bGRCYWNrQ2xlYXJQaW5uZWRDb250ZXh0Iiwic2hvdWxkQmFja1N0YXJ0TmV3Q2hhdFByZXNlcnZpbmdDb250ZXh0Iiwic2hvdWxkTWFya09yY2hlc3RyYXRvckNvbnRleHRSZXNldCIsInNob3VsZFN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nIiwicmVzb2x2ZUhhc1Bpbm5lZENvbnRleHQiLCJyZXNvbHZlT3JjaGVzdHJhdG9ySG9tZU5hdkZsYWdzIiwic2hvdWxkU2hvd09yY2hlc3RyYXRvckJhY2tCdXR0b24iLCJzaG91bGRDbGVhckNsaWVudE9uR29Ib21lRnJvbUNoYXQiLCJzaG91bGRDbGVhclRhc2tPbkdvSG9tZUZyb21DaGF0Iiwic2hvdWxkUmVzZXRBZ2VudFRvRmlyc3RPbkdvSG9tZSIsInNob3VsZENsZWFyT3JjaGVzdHJhdG9yR2xvYmFsQ29udGV4dE9uR29Ib21lIiwic2hvdWxkVXNlQWN0aXZlQ2hhdFNlbmRIYW5kbGVyIiwic2hvdWxkUHJlZmV0Y2hBZ2VudHNGb3JDYXRhbG9nTmV3Q2hhdCIsImNhbk9wZW5NYWlhTWFya2V0cGxhY2UiLCJzaG91bGRNYXJrQWdlbnRBc0xlZ2FjeUNvbnRleHQiLCJidWlsZExlZ2FjeUNvbnRleHRBZ2VudCIsImJ1aWxkTGVnYWN5Q29udGV4dE1pZ3JhdGlvblBhdGNoIiwiZmluZE9yY2hlc3RyYXRvckFnZW50Iiwic2hvdWxkU2V0Q2hhdFZpZXdIaWRkZW5Pbk1vdW50Iiwic2hvdWxkUGVyc2lzdExhc3RBY3RpdmVDaGF0SWQiLCJzaG91bGRTeW5jUGFuZWxTZXNzaW9uT25QYWdlSGlkZSIsInJlc29sdmVDYWNoZWRBZ2VudHNJZkF2YWlsYWJsZSIsInNob3VsZEF0dGVtcHRJbml0aWFsQWdlbnRzRmV0Y2giLCJmaW5kQWdlbnRGb3JDaGF0SXRlbSIsInNob3VsZEFwcGx5Q2xpZW50T25Ib3N0VGFrZW92ZXIiLCJzaG91bGRTZWxlY3RGaXJzdEFnZW50T25Ib3N0VGFrZW92ZXIiLCJzaG91bGRSZXNldENoYXRTdGF0ZU9uR29Ib21lIiwic2hvdWxkQ2xlYXJDb250ZXh0Rm9yQ2F0YWxvZ09yU2tpbGxBZ2VudCIsInJlc29sdmVPcGVuTmV3Q2hhdFdpdGhBZ2VudENvbnRleHQiLCJjYW5Db250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQiLCJyZXNvbHZlU2Vzc2lvblJlc3RvcmVOYXZSb3V0ZSIsInNob3VsZFNraXBBZ2VudHNMb2FkT25TZXNzaW9uUmVzdG9yZSIsInNob3VsZEZldGNoQWdlbnREZXRhaWxPblNlc3Npb25SZXN0b3JlIiwic2hvdWxkUGFzc0FnZW50VG9HZXRBZ2VudHNPblJlc3RvcmUiLCJzaG91bGRTZWxlY3RGZXRjaGVkQWdlbnRBZnRlclJlc3RvcmUiLCJyZXNvbHZlU25hcHNob3RDaGlwc1Byb2plY3QiLCJyZXNvbHZlQ2hhdE1vZGFsU2VjdGlvbkZsYWdzIiwic2hvdWxkUmVuZGVyQ2hhdFNpZGViYXIiLCJyZXNvbHZlQ2hhdE1vZGFsTWFpbkNvbnRlbnRWaWV3Iiwic2hvdWxkU2hvd0NoYXRNb2RhbEZvb3RlciIsInNob3VsZFVzZUVsZXZhdGVkTWFpYVBhbmVsIiwic2hvdWxkUmVzZWxlY3RBZ2VudEFmdGVyRGVsZXRlIiwic2hvdWxkQ2xlYXJEcmFnUG9zaXRpb25PbkxheW91dENoYW5nZSIsInNob3VsZFN0YXJ0RmxvYXRpbmdQYW5lbERyYWciLCJpc0FjdGl2ZUZsb2F0aW5nRHJhZ1BvaW50ZXIiLCJzaG91bGRPcGVuU2tpbGxzQ2F0YWxvZyIsInNob3VsZFVzZURyYWdDbGFtcEZhbGxiYWNrIiwicmVzb2x2ZUxheW91dERyYWdQb3NpdGlvblVwZGF0ZSIsInJlc29sdmVQZXJzaXN0ZWREcmFnUG9zaXRpb25PbkVuZCIsImJ1aWxkVXNlckluaXRpYWxNZXNzYWdlRnJvbVN0YXJ0Q2hhdCIsInNob3VsZFJlc2V0U2lkZWJhckVycm9yT25TdGFydENoYXQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJJRF9NT0RBTF9DSEFUX0FHRU5UIiwiQ2hhdEFJTW9kYWwiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFIiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFIyIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSNSIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjYiLCJ1c2VyIiwiX3VzZVRyYW5zbGF0aW9uIiwiYWJtQWdlbnQiLCJpMThuIiwiYW1wbGl0dWRFdmVudCIsInNhdmVkU2Vzc2lvbk9uTW91bnRSZWYiLCJpZCIsInNob3VsZFJlc3RvcmVFeHBhbmRlZCIsImN1cnJlbnQiLCJwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYiLCJzZXNzaW9uUmVzdG9yZVN0YXJ0ZWRSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc1Jlc3RvcmluZ1Nlc3Npb24iLCJzZXRJc1Jlc3RvcmluZ1Nlc3Npb24iLCJzaWRlYmFyT3BlblJlZiIsInNpZGViYXJPcGVuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc01pbmltaXplZCIsInNldElzTWluaW1pemVkIiwiaXNNYWlhUGFnZVJvdXRlIiwiaW5pdGlhbENoYXRzUmVmZXRjaERvbmVSZWYiLCJzZXRDaGF0Vmlld1Zpc2libGUiLCJzdGF0ZSIsInVucmVhZENvdW50Iiwic2hvd01pbmltaXplZE5vdmVsdHlEb3QiLCJhY3RpdmVDaGF0SWQiLCJoYXNBY3RpdmVTdHJlYW0iLCJtZXRhIiwiZ29Ub0NoYXRSZWYiLCJnb0hvbWVSZWYiLCJoYW5kbGVNaW5pbWl6ZSIsImFpQ2hhdE1pbmltaXplIiwiaXNFeHBhbmRlZCIsImZvY3VzQ2hhdElucHV0Iiwid2luZG93Iiwic2V0VGltZW91dCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiX3VzZVN0YXRlNSIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsIl91c2VTdGF0ZTYiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNlc3Npb25NZXRhIiwic2V0U2Vzc2lvbk1ldGEiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwic2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNldFNlbmRNZXNzYWdlRnVuY3Rpb24iLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwic3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsInNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiaXNTdHJlYW1pbmciLCJzZXRJc1N0cmVhbWluZyIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJpc1dyaXRpbmciLCJzZXRJc1dyaXRpbmciLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwicmVmZXRjaENoYXRzIiwic2V0UmVmZXRjaENoYXRzIiwiX3VzZVN0YXRlMjEiLCJzYXZlZCIsImFnZW50c05hdkFjdGl2ZSIsImN1cnJlbnRPcHRpb24iLCJfdXNlU3RhdGUyMiIsInNldEN1cnJlbnRPcHRpb24iLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsIl91c2VTdGF0ZTI1IiwiX3VzZVN0YXRlMjYiLCJkaWRSZXNldENvbnRleHRJblNlY3Rpb24iLCJzZXREaWRSZXNldENvbnRleHRJblNlY3Rpb24iLCJwcmV2SGFzUGlubmVkQ29udGV4dFJlZiIsImhhbmRsZXJzIiwiX3VzZVN0YXRlMjciLCJfdXNlU3RhdGUyOCIsInNpZGViYXJIYXNFcnJvciIsInNldFNpZGViYXJIYXNFcnJvciIsImxhbmciLCJsYW5ndWFnZSIsImxvY2FsZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJjbGVhckFnZW50Iiwic2VjdGlvbiIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsInRhc2siLCJjaGlwc1Byb2plY3QiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsInNldENsaWVudCIsInNldFByb2plY3QiLCJiYW5uZXJFbnRyeUZhcSIsInNldFRhc2siLCJ0b29sdGlwWkluZGV4IiwiX3VzZUdldEFnZW50cyIsImhhbmRsZUdvSG9tZSIsImhvbWUiLCJhZ2VudHMiLCJsb2FkaW5nIiwibG9hZGluZ01vcmUiLCJhZ2VudEVycm9yIiwiZXJyb3IiLCJoYW5kbGVHZXRBZ2VudHMiLCJsb2FkTW9yZUFnZW50cyIsInNlYXJjaEN1c3RvbUFnZW50cyIsInNlYXJjaExvYWRpbmciLCJhZGRBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInNvcnRBZ2VudHNMaXN0IiwiYWdlbnRzRGF0YVJlZiIsImRhdGEiLCJfdXNlR2V0U2tpbGxzIiwibXlTa2lsbHMiLCJzaGFyZWRTa2lsbHMiLCJsb2FkaW5nU2tpbGxzIiwiaGFuZGxlR2V0U2tpbGxzIiwiYWRkU2tpbGwiLCJ1cGRhdGVTa2lsbEluTGlzdCIsInJlbW92ZVNraWxsIiwidXNlckhhc1Blcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJCb29sZWFuIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsInVzZXJIYXNTa2lsbHNBY2Nlc3MiLCJjb21wdXRlZEN1cnJlbnRPcHRpb24iLCJtdWx0aUFnZW50c0FjY2VzcyIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwicXVlcnlTZWxlY3RvciIsImNvbmNhdCIsIl91c2VTdGF0ZTI5IiwiX3VzZVN0YXRlMzAiLCJsYXlvdXRNb2RlIiwic2V0TGF5b3V0TW9kZSIsImhhbmRsZUxheW91dE1vZGVDaGFuZ2UiLCJtb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUzMSIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjMiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI0IiwiZHJhZ1Bvc2l0aW9uIiwiX3VzZVN0YXRlMzIiLCJzZXREcmFnUG9zaXRpb24iLCJfdXNlRmxvYXRpbmdQYW5lbERyYWciLCJ0aWx0TW90aW9uIiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJzYW1wbGVQb2ludGVyTW92ZSIsImVuZFBvaW50ZXJUcmFja2luZyIsImRyYWdTdGF0ZVJlZiIsImNsYW1wRHJhZ1Bvc2l0aW9uIiwieCIsInkiLCJjb250ZW50V3JhcHBlciIsIl9nZXRCb3VuZGluZ0NsaWVudFJlYyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwiaW5uZXJXaWR0aCIsImlubmVySGVpZ2h0IiwicHJldiIsInBhbmVsV2lkdGgiLCJwYWQiLCJoYW5kbGVEcmFnRW5kIiwiZXZlbnQiLCJfZHJhZ1N0YXRlUmVmJGN1cnJlbnQiLCJwb2ludGVySWQiLCJib2R5Iiwic3R5bGUiLCJ1c2VyU2VsZWN0IiwiY3Vyc29yIiwicmVjdCIsImxlZnQiLCJ0b3AiLCJoYW5kbGVEcmFnTW92ZSIsImRyYWdTdGF0ZSIsImNsaWVudFgiLCJjbGllbnRZIiwibmV4dFBvc2l0aW9uIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJyZXNvbHZlZERyYWdQb3NpdGlvbiIsInZpZXdwb3J0V2lkdGgiLCJjbGFtcCIsImhhbmRsZURyYWdTdGFydCIsImJ1dHRvbiIsInRhcmdldCIsImluaXRpYWxQb3NpdGlvbiIsInBvaW50ZXJPZmZzZXRYIiwicG9pbnRlck9mZnNldFkiLCJjdXJyZW50VGFyZ2V0Iiwic2V0UG9pbnRlckNhcHR1cmUiLCJwcmV2ZW50RGVmYXVsdCIsImFpQ2hhdERyYWdnYWJsZSIsInN0YXJ0Q2hhdCIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwiY2hhdCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiYmFubmVyRmFxIiwiZmFxVGl0bGUiLCJhbHJlYWR5U2VudCIsImFnZW50SWQiLCJwcm9qZWN0SWQiLCJjbGllbnRJZCIsInVuZGVmaW5lZCIsImVudGl0eSIsImdvVG9DaGF0Iiwic2Vzc2lvbklkIiwic2Vzc2lvbkV4dGVybmFsSWQiLCJzZXRBY3RpdmVDaGF0SWQiLCJkZXRhaWwiLCJzZWxlY3RlZEFnZW50IiwiaGFuZGxlU2lkZWJhck9wZW5DaGFuZ2UiLCJvcGVuIiwic3luY1BhbmVsU2Vzc2lvbiIsIl9hZ2VudCRpZCIsInBhdGNoIiwiaG9zdENvbnRleHQiLCJlbnN1cmVBZ2VudHNMb2FkZWQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNhY2hlZEFnZW50cyIsImxvYWRlZEFnZW50cyIsImxvYWRlZEZyb21GZXRjaCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJhYnJ1cHQiLCJsZW5ndGgiLCJzZW50Iiwic3RvcCIsInRpbWVyIiwiY2xlYXJUaW1lb3V0Iiwib25QYWdlSGlkZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWQiLCJfZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiY2hhdHMiLCJsYXN0QWN0aXZlQ2hhdElkIiwiX2dvVG9DaGF0UmVmJGN1cnJlbnQiLCJjYWxsIiwiX2dvSG9tZVJlZiRjdXJyZW50IiwiYWlDaGF0T3BlbiIsIm9wdGlvbiIsInRoZW4iLCJhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyIiwiZW50aXR5U3RhdGUiLCJnZXRTdGF0ZSIsImNsZWFyRmFxcyIsImNsZWFyR2xvYmFsUGlubmVkQ29udGV4dCIsIm5leHRMYXlvdXQiLCJmYXEiLCJfYWdlbnQkaWQyIiwicmVzb2x2ZWRBZ2VudElkIiwiaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSIsInNlbmRNZXNzYWdlIiwic3RvcEdlbmVyYXRpb24iLCJzdHJlYW1pbmciLCJ3cml0aW5nIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJ0eXBlIiwic3RhcnROZXdDaGF0RnJvbUNhdGFsb2ciLCJfY2FsbGVlMiIsImFnZW50c0xpc3QiLCJmaXJzdEFnZW50IiwiX3QiLCJfY29udGV4dDIiLCJteUFnZW50cyIsImhhbmRsZVN0YXJ0TmV3Q2hhdCIsImhhbmRsZVJlc2V0Q2hhdCIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwiaGFuZGxlQmFjayIsInRvIiwiYWlDaGF0QmFjayIsInBpbm5lZCIsInRhc2tJZCIsImNoaXBzUHJvamVjdElkIiwid2FzUGlubmVkIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWY0IiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwib25TeW5jRWRpdGVkQWdlbnQiLCJfcmVmNSIsIm9wZW5DaGF0VmlldyIsIm9wZW5Ib21lIiwib3BlbkZyb21Ib3N0IiwiX3JlZjYiLCJvcGVuTmV3Q2hhdFdpdGhBZ2VudCIsIl9yZWY3IiwiY29udGV4dFBhdGNoIiwic2hvdWxkU2V0VGFzayIsIl9jb250ZXh0UGF0Y2gkdGFzayIsImFwcGx5U2tpbGxVc2VGbG93IiwiX3JlZjgiLCJfY2FsbGVlNCIsInNraWxsIiwidXNlRmlyc3RBZ2VudCIsIl9jb250ZXh0NCIsIl94IiwiX3gyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVVc2VTa2lsbEFmdGVyU2F2ZSIsIl9yZWY5IiwiX3JlZjkkdXNlRmlyc3RBZ2VudCIsIm9uU2Vzc2lvbk1ldGEiLCJfcmVmMCIsImxlZ2FjeUNvbnRleHRTZXNzaW9uIiwiaGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0IiwiX2J1aWxkTGVnYWN5Q29udGV4dE1pIiwib3JjaGVzdHJhdG9yIiwiYWdlbnRFbnRpdHkiLCJwSWQiLCJwTmFtZSIsInByb2plY3ROYW1lIiwiY0lkIiwiY05hbWUiLCJjbGllbnROYW1lIiwidElkIiwidE5hbWUiLCJ0YXNrTmFtZSIsIm1pZ3JhdGlvblBhdGNoIiwiX3VzZU1lbW8iLCJzaG93TmV3Q2hhdCIsImlzTXlBZ2VudHNTZWN0aW9uIiwiaXNNeVNraWxsc1NlY3Rpb24iLCJpc01haWFrZXJDcmVhdG9ySG9tZSIsImhhc0NoYXRBY2Nlc3MiLCJtYWluQ29udGVudFZpZXciLCJzaG93TW9kYWxGb290ZXIiLCJob21lT3B0aW9uIiwiY2hhdE9wdGlvbiIsImFnZW50c0NvdW50IiwiaGFzQWNjZXNzIiwic2hvd1NpZGViYXIiLCJoYXNQaW5uZWRDb250ZXh0IiwiX3Jlc29sdmVPcmNoZXN0cmF0b3JIIiwiaXNDaGF0VmlldyIsImlzSGVhZGVySG9tZVN0ZXAyIiwiaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIiLCJzaG93QmFja0J1dHRvbiIsImFnZW50VHlwZSIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsIl9jYWxsZWU1IiwiX2NvbnRleHQ1IiwiaGFuZGxlT3BlblNraWxscyIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTYiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90MiIsIl9jb250ZXh0NiIsImZpbmQiLCJhIiwicGF0aCIsIm1ldGhvZCIsImpzb24iLCJsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUiLCJfcmVmMTEiLCJfY2FsbGVlNyIsInNuYXBzaG90IiwiYWdlbnRUb1NlbGVjdCIsIl90MyIsIl9jb250ZXh0NyIsIl94MyIsImFwcGx5U2Vzc2lvblJlc3RvcmUiLCJfcmVmMTIiLCJfY2FsbGVlOCIsImNoaXBzUHJvamVjdEZyb21TbmFwc2hvdCIsInJlc3RvcmVSb3V0ZSIsIl9zbmFwc2hvdCRhY3RpdmVDaGF0SSIsIl9zbmFwc2hvdCRhY3RpdmVDaGF0STIiLCJfY29udGV4dDgiLCJfeDQiLCJydW5SZXN0b3JlIiwiX3JlZjEzIiwiX2NhbGxlZTkiLCJfY29udGV4dDkiLCJmaW5pc2giLCJoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsIm9uR29Ub0NoYXQiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJvbk9wZW5NYWlha2VyQ3JlYXRvciIsImlzTGVnYWN5Q29udGV4dFNlc3Npb24iLCJpbml0aWFsT3BlbiIsIm9uT3BlbkNoYW5nZSIsImZsb2F0aW5nIiwib25MYXlvdXRNb2RlQ2hhbmdlIiwiZHJhZ2dhYmxlIiwib25EcmFnU3RhcnQiLCJvbkRyYWdNb3ZlIiwib25EcmFnRW5kIiwiaGFzTW9yZSIsImhhc19tb3JlIiwib25BZ2VudFVwZGF0ZSIsImlzTWFpYWtlclNlY3Rpb24iLCJvbkJhY2siLCJfb2JqZWN0U3ByZWFkIiwicmVmcyIsIm9uU2VuZE1lc3NhZ2VSZWFkeSIsImxvYWRpbmdBZ2VudHMiLCJvbkRlbGV0ZUFnZW50Iiwib25GYXZvcml0ZUFnZW50VXBkYXRlIiwiaGFzTW9yZUFnZW50cyIsImxvYWRpbmdNb3JlQWdlbnRzIiwib25Mb2FkTW9yZUFnZW50cyIsIm9uR29Ub01haWFrZXIiLCJvbkRlbGV0ZVNraWxsIiwib25TZWFyY2hBZ2VudHMiLCJzZWFyY2hMb2FkaW5nQWdlbnRzIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwib25Db250aW51ZUluTmV3Q2hhdCIsInJlZiIsImNyZWF0ZVBvcnRhbCIsImVsZXZhdGVkIiwiJG1pbmltaXplZCIsIiRoaWRkZW4iLCJ0aWx0Iiwic2hvd05vdmVsdHlEb3QiLCJvblJlc3RvcmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgY2FuQWNjZXNzVG9Ta2lsbHMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdldFNraWxscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2dldFNraWxscydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQsIHR5cGUgU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBDaGF0QUlNb2RhbEhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlcidcbmltcG9ydCB7IFNuYWNrYmFyIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL1NuYWNrQmFyL1NuYWNrYmFyJ1xuaW1wb3J0IHsgUHJvamVjdFN1bW1hcnlDb250ZW50IH0gZnJvbSAnLi4vUHJvamVjdFN1bW1hcnlDb250ZW50J1xuaW1wb3J0IHsgQWJtQWdlbnRNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbE1vZGFsLCBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtU2tpbGxHZW5lcmF0ZU1vZGFsL0FibVNraWxsR2VuZXJhdGVNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1NaW5pbWl6ZWRIaWRlLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBNYWlhTWluaW1pemVkUGlsbCB9IGZyb20gJy4vY29tcG9uZW50cy9NYWlhTWluaW1pemVkUGlsbCdcbmltcG9ydCB7IHVzZU1pbmltaXplZFBpbGxOb3ZlbHR5RG90IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWluaW1pemVkUGlsbE5vdmVsdHlEb3QnXG5pbXBvcnQge1xuICBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgsXG4gIE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlLFxuICByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSxcbiAgc2V0U3RvcmVkTWFpYUNoYXRMYXlvdXRNb2RlLFxufSBmcm9tICcuL2xheW91dCdcbmltcG9ydCB7IEZsb2F0aW5nUGFuZWxNb3Rpb24sIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCB9IGZyb20gJy4vZmxvYXRpbmdQYW5lbE1vdGlvbidcbmltcG9ydCB7IENoYXRBaU1vZGFsRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsRm9vdGVyJ1xuaW1wb3J0IHsgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlLCB1c2VDaGF0c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB0eXBlIHsgQ2hhdExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvY2hhdHNTdG9yZS50eXBlcydcbmltcG9ydCB7IHJlYWRMYXN0QWN0aXZlQ2hhdElkLCB3cml0ZUxhc3RBY3RpdmVDaGF0SWQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9tYWlhTGFzdENoYXRQZXJzaXN0ZW5jZSdcbmltcG9ydCB7XG4gIGNsZWFyTWFpYVBhbmVsU2Vzc2lvbixcbiAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uLFxuICByZWFkTWFpYVBhbmVsU2Vzc2lvbixcbiAgdHlwZSBNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QsXG4gIHdyaXRlTWFpYVBhbmVsU2Vzc2lvbixcbn0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvbWFpYVBhbmVsU2Vzc2lvblBlcnNpc3RlbmNlJ1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IGZldGNoQWdlbnREZXRhaWwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9mZXRjaEFnZW50RGV0YWlsJ1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCB0eXBlIE1haWFIb3N0T3BlbkRldGFpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL21haWFIb3N0T3BlbidcbmltcG9ydCB7IHVzZUlzTWFpYVBhZ2VSb3V0ZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUlzTWFpYVBhZ2VSb3V0ZSdcbmltcG9ydCB7XG4gIGNsYW1wRmxvYXRpbmdQYW5lbFBvc2l0aW9uLFxuICBoYXNBbnlBY3RpdmVTZXNzaW9uSW5NZXRhLFxuICBoYXNCYW5uZXJGYXFUaXRsZSxcbiAgaXNCYW5uZXJGYXFSZWFkeVRvQXV0b1NlbmQsXG4gIHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24sXG4gIHJlc29sdmVDb21wdXRlZEN1cnJlbnRPcHRpb24sXG4gIHJlc29sdmVJbml0aWFsQ3VycmVudE9wdGlvbixcbiAgcmVzb2x2ZUxlZ2FjeUNvbnRleHRTZXNzaW9uLFxuICByZXNvbHZlU2lkZWJhckFnZW50c05hdkFjdGl2ZSxcbiAgc2hvdWxkUmVzdG9yZUV4cGFuZGVkUGFuZWwsXG4gIHNob3VsZFNraXBGbG9hdGluZ0RyYWdUYXJnZXQsXG4gIHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlLFxuICByZXNvbHZlSG9zdFRha2VvdmVyRW50aXR5U3RhdGUsXG4gIGJ1aWxkSG9zdFRha2VvdmVyUGVyc2lzdENvbnRleHQsXG4gIGJ1aWxkTWFpYVBhbmVsU2Vzc2lvblBhdGNoLFxuICBkaXNwYXRjaFNraWxsTWVudGlvbkluc2VydCxcbiAgZW5zdXJlQWdlbnRzQmVmb3JlU2tpbGxVc2UsXG4gIHJlc29sdmVGbG9hdGluZ1BhbmVsRHJhZ1Bvc2l0aW9uLFxuICByZXNvbHZlSG9zdFRha2VvdmVyQWdlbnRJZCxcbiAgcmVzb2x2ZU1haWFNb2RhbEkxOG5MYW5nLFxuICByZXNvbHZlTWluaW1pemVkUmVzdG9yZVRhcmdldCxcbiAgcmVzb2x2ZU5leHREcmFnUG9zaXRpb24sXG4gIHJlc29sdmVVc2VySGFzQWdlbnRNYW5hZ2VtZW50UGVybWlzc2lvbnMsXG4gIHNob3VsZEJhY2tDbGVhclBpbm5lZENvbnRleHQsXG4gIHNob3VsZEJhY2tTdGFydE5ld0NoYXRQcmVzZXJ2aW5nQ29udGV4dCxcbiAgc2hvdWxkTWFya09yY2hlc3RyYXRvckNvbnRleHRSZXNldCxcbiAgc2hvdWxkU3RhcnROZXdDaGF0RnJvbUNhdGFsb2csXG4gIHJlc29sdmVIYXNQaW5uZWRDb250ZXh0LFxuICByZXNvbHZlT3JjaGVzdHJhdG9ySG9tZU5hdkZsYWdzLFxuICBzaG91bGRTaG93T3JjaGVzdHJhdG9yQmFja0J1dHRvbixcbiAgc2hvdWxkQ2xlYXJDbGllbnRPbkdvSG9tZUZyb21DaGF0LFxuICBzaG91bGRDbGVhclRhc2tPbkdvSG9tZUZyb21DaGF0LFxuICBzaG91bGRSZXNldEFnZW50VG9GaXJzdE9uR29Ib21lLFxuICBzaG91bGRDbGVhck9yY2hlc3RyYXRvckdsb2JhbENvbnRleHRPbkdvSG9tZSxcbiAgc2hvdWxkVXNlQWN0aXZlQ2hhdFNlbmRIYW5kbGVyLFxuICBzaG91bGRQcmVmZXRjaEFnZW50c0ZvckNhdGFsb2dOZXdDaGF0LFxuICBjYW5PcGVuTWFpYU1hcmtldHBsYWNlLFxuICBzaG91bGRNYXJrQWdlbnRBc0xlZ2FjeUNvbnRleHQsXG4gIGJ1aWxkTGVnYWN5Q29udGV4dEFnZW50LFxuICBidWlsZExlZ2FjeUNvbnRleHRNaWdyYXRpb25QYXRjaCxcbiAgZmluZE9yY2hlc3RyYXRvckFnZW50LFxuICBzaG91bGRTZXRDaGF0Vmlld0hpZGRlbk9uTW91bnQsXG4gIHNob3VsZFBlcnNpc3RMYXN0QWN0aXZlQ2hhdElkLFxuICBzaG91bGRTeW5jUGFuZWxTZXNzaW9uT25QYWdlSGlkZSxcbiAgcmVzb2x2ZUNhY2hlZEFnZW50c0lmQXZhaWxhYmxlLFxuICBzaG91bGRBdHRlbXB0SW5pdGlhbEFnZW50c0ZldGNoLFxuICBmaW5kQWdlbnRGb3JDaGF0SXRlbSxcbiAgc2hvdWxkQXBwbHlDbGllbnRPbkhvc3RUYWtlb3ZlcixcbiAgc2hvdWxkU2VsZWN0Rmlyc3RBZ2VudE9uSG9zdFRha2VvdmVyLFxuICBzaG91bGRSZXNldENoYXRTdGF0ZU9uR29Ib21lLFxuICBzaG91bGRDbGVhckNvbnRleHRGb3JDYXRhbG9nT3JTa2lsbEFnZW50LFxuICByZXNvbHZlT3Blbk5ld0NoYXRXaXRoQWdlbnRDb250ZXh0LFxuICBjYW5Db250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQsXG4gIHJlc29sdmVTZXNzaW9uUmVzdG9yZU5hdlJvdXRlLFxuICBzaG91bGRTa2lwQWdlbnRzTG9hZE9uU2Vzc2lvblJlc3RvcmUsXG4gIHNob3VsZEZldGNoQWdlbnREZXRhaWxPblNlc3Npb25SZXN0b3JlLFxuICBzaG91bGRQYXNzQWdlbnRUb0dldEFnZW50c09uUmVzdG9yZSxcbiAgc2hvdWxkU2VsZWN0RmV0Y2hlZEFnZW50QWZ0ZXJSZXN0b3JlLFxuICByZXNvbHZlU25hcHNob3RDaGlwc1Byb2plY3QsXG4gIHJlc29sdmVDaGF0TW9kYWxTZWN0aW9uRmxhZ3MsXG4gIHNob3VsZFJlbmRlckNoYXRTaWRlYmFyLFxuICByZXNvbHZlQ2hhdE1vZGFsTWFpbkNvbnRlbnRWaWV3LFxuICBzaG91bGRTaG93Q2hhdE1vZGFsRm9vdGVyLFxuICBzaG91bGRVc2VFbGV2YXRlZE1haWFQYW5lbCxcbiAgc2hvdWxkUmVzZWxlY3RBZ2VudEFmdGVyRGVsZXRlLFxuICBzaG91bGRDbGVhckRyYWdQb3NpdGlvbk9uTGF5b3V0Q2hhbmdlLFxuICBzaG91bGRTdGFydEZsb2F0aW5nUGFuZWxEcmFnLFxuICBpc0FjdGl2ZUZsb2F0aW5nRHJhZ1BvaW50ZXIsXG4gIHNob3VsZE9wZW5Ta2lsbHNDYXRhbG9nLFxuICBzaG91bGRVc2VEcmFnQ2xhbXBGYWxsYmFjayxcbiAgcmVzb2x2ZUxheW91dERyYWdQb3NpdGlvblVwZGF0ZSxcbiAgcmVzb2x2ZVBlcnNpc3RlZERyYWdQb3NpdGlvbk9uRW5kLFxuICBidWlsZFVzZXJJbml0aWFsTWVzc2FnZUZyb21TdGFydENoYXQsXG4gIHNob3VsZFJlc2V0U2lkZWJhckVycm9yT25TdGFydENoYXQsXG4gIHR5cGUgTGVnYWN5U2Vzc2lvbk1ldGEsXG59IGZyb20gJy4vQ2hhdEFJTW9kYWwuaGVscGVycydcblxuLyoqIE1ldGFkYXRhIGRlIGxhIHNlc3Npb24gYWJpZXJ0YSAoZW1pdGlkYSBwb3IgdXNlQ2hhdE1lc3NhZ2VzIGFsIGNhcmdhciB1bmEgY29udmVyc2FjacOzbikuICovXG50eXBlIFNlc3Npb25NZXRhID0gTGVnYWN5U2Vzc2lvbk1ldGEgJiB7XG4gIGNoYXRJZDogc3RyaW5nXG4gIHByb2plY3RJZD86IG51bWJlclxuICBjbGllbnRJZD86IG51bWJlclxuICB0YXNrSWQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICgpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3Qgc2F2ZWRTZXNzaW9uT25Nb3VudFJlZiA9IHVzZVJlZjxNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QgfCBudWxsPihyZWFkTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkKSlcbiAgY29uc3Qgc2hvdWxkUmVzdG9yZUV4cGFuZGVkID0gc2hvdWxkUmVzdG9yZUV4cGFuZGVkUGFuZWwoc2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50KVxuICBjb25zdCBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYgPSB1c2VSZWY8TWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90IHwgbnVsbD4oXG4gICAgc2hvdWxkUmVzdG9yZUV4cGFuZGVkID8gc2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50IDogbnVsbFxuICApXG4gIGNvbnN0IHNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2lzUmVzdG9yaW5nU2Vzc2lvbiwgc2V0SXNSZXN0b3JpbmdTZXNzaW9uXSA9IHVzZVN0YXRlKCgpID0+IHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50ICE9IG51bGwpXG4gIGNvbnN0IHNpZGViYXJPcGVuUmVmID0gdXNlUmVmKHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uc2lkZWJhck9wZW4gPz8gZmFsc2UpXG5cbiAgLy8gVHJhcyBuYXZlZ2FyIGVuIGVsIGhvc3QgKGZ1bGwgcGFnZSByZWxvYWQpLCByZXN0YXVyYW1vcyBlbCBwYW5lbCBzaSBlc3RhYmEgYWJpZXJ0by5cbiAgY29uc3QgW2lzTWluaW1pemVkLCBzZXRJc01pbmltaXplZF0gPSB1c2VTdGF0ZSgoKSA9PiAhc2hvdWxkUmVzdG9yZUV4cGFuZGVkKVxuICBjb25zdCBpc01haWFQYWdlUm91dGUgPSB1c2VJc01haWFQYWdlUm91dGUoKVxuICBjb25zdCBpbml0aWFsQ2hhdHNSZWZldGNoRG9uZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2V0Q2hhdFZpZXdWaXNpYmxlID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5zZXRDaGF0Vmlld1Zpc2libGUpXG4gIGNvbnN0IHVucmVhZENvdW50ID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS51bnJlYWRDb3VudClcbiAgY29uc3Qgc2hvd01pbmltaXplZE5vdmVsdHlEb3QgPSB1c2VNaW5pbWl6ZWRQaWxsTm92ZWx0eURvdChpc01pbmltaXplZCwgdW5yZWFkQ291bnQpXG4gIGNvbnN0IGFjdGl2ZUNoYXRJZCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuYWN0aXZlQ2hhdElkKVxuICAvLyBMb3MgXCIuLi5cIiBkZWwgcGlsbCBzYWxlbiBkZWwgbW90b3IsIG5vIGRlIGlzU3RyZWFtaW5nL2lzV3JpdGluZzogZXNvcyByZWZsZWphblxuICAvLyBsYSBzZXNpw7NuIGFjdGl2YSB5IHF1ZWRhbiBzdGFsZSBjdWFuZG8gdW5hIHJlc3B1ZXN0YSB0ZXJtaW5hIGVuIGJhY2tncm91bmQuXG4gIGNvbnN0IGhhc0FjdGl2ZVN0cmVhbSA9IHVzZVNlc3Npb25zU3RvcmUoc3RhdGUgPT4gaGFzQW55QWN0aXZlU2Vzc2lvbkluTWV0YShzdGF0ZS5tZXRhKSlcblxuICAvKiogZ29Ub0NoYXQgLyBoYW5kbGVHb0hvbWUgc2UgZGVmaW5lbiBtw6FzIGFiYWpvOyBsb3MgcmVmcyBldml0YW4gZGVwZW5kZXIgZGVsIG9yZGVuIGRlIGRlY2xhcmFjacOzbi4gKi9cbiAgY29uc3QgZ29Ub0NoYXRSZWYgPSB1c2VSZWY8KChjaGF0OiBDaGF0TGlzdEl0ZW0pID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgZ29Ib21lUmVmID0gdXNlUmVmPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG5cbiAgLy8gTW9udGEgY2VycmFkYSBzYWx2byByZXN0YXVyYWNpw7NuIGRlIHNlc2nDs246IHNpIGVsIHBhbmVsIG5vIGVzdMOhIHZpc2libGUsIGxhcyByZXNwdWVzdGFzXG4gIC8vIG51ZXZhcyBxdWVkYW4gY29tbyBubyBsZcOtZGFzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRTZXRDaGF0Vmlld0hpZGRlbk9uTW91bnQocGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmLmN1cnJlbnQgIT0gbnVsbCkpIHtcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZShmYWxzZSlcbiAgICB9XG4gIH0sIFtzZXRDaGF0Vmlld1Zpc2libGVdKVxuXG4gIC8vIFBlcnNpc3RpbW9zIGxhIGNvbnZlcnNhY2nDs24gYWJpZXJ0YSBwYXJhIHBvZGVyIHZvbHZlciBhIGVsbGEgZGVzZGUgZWwgcGlsbCBkZXNwdcOpc1xuICAvLyBkZSBuYXZlZ2FyIG8gcmVmcmVzY2FyLiBFbCB0YWtlb3ZlciBkZXNkZSB1biBob3N0IGxhIGxpbXBpYSAodmEgYWwgSG9tZSkuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZFBlcnNpc3RMYXN0QWN0aXZlQ2hhdElkKGFjdGl2ZUNoYXRJZCkpIHtcbiAgICAgIHdyaXRlTGFzdEFjdGl2ZUNoYXRJZCh1c2VyLmlkLCBhY3RpdmVDaGF0SWQpXG4gICAgfVxuICB9LCBbYWN0aXZlQ2hhdElkLCB1c2VyLmlkXSlcblxuICBjb25zdCBoYW5kbGVNaW5pbWl6ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRNaW5pbWl6ZSlcbiAgICBzZXRJc01pbmltaXplZCh0cnVlKVxuICAgIHNldENoYXRWaWV3VmlzaWJsZShmYWxzZSlcbiAgICB3cml0ZU1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBpc0V4cGFuZGVkOiBmYWxzZSB9KVxuICB9LCBbYW1wbGl0dWRFdmVudCwgc2V0Q2hhdFZpZXdWaXNpYmxlLCB1c2VyLmlkXSlcblxuICBjb25zdCBmb2N1c0NoYXRJbnB1dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgfSwgMTAwKVxuICB9LCBbXSlcblxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfT4oe1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIGF0dGFjaG1lbnRzOiBbXSxcbiAgfSlcbiAgY29uc3QgW2luaXRpYWxDaGF0SWQsIHNldEluaXRpYWxDaGF0SWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW25ld0NoYXRLZXksIHNldE5ld0NoYXRLZXldID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3Nlc3Npb25NZXRhLCBzZXRTZXNzaW9uTWV0YV0gPSB1c2VTdGF0ZTxTZXNzaW9uTWV0YSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBbcmVmZXRjaENoYXRzLCBzZXRSZWZldGNoQ2hhdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50T3B0aW9uLCBzZXRDdXJyZW50T3B0aW9uXSA9IHVzZVN0YXRlPG9wdGlvbnM+KCgpID0+IHtcbiAgICBjb25zdCBzYXZlZCA9IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudFxuICAgIHJldHVybiByZXNvbHZlSW5pdGlhbEN1cnJlbnRPcHRpb24oc2F2ZWQ/LmFnZW50c05hdkFjdGl2ZSwgc2F2ZWQ/LmN1cnJlbnRPcHRpb24sIHVzZXIpXG4gIH0pXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIGRlbCBvcmNoZXN0cmF0b3IgKGxvIGxpbXBpw7MgeSBwYXPDsyBwb3JcbiAgLy8gZWwgc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEhhYmlsaXRhIGVsIGJvdMOzbiBcInZvbHZlclwiIGVuIGVsIGhvbWUgcGFzbyAyIGRlIGVzYXNcbiAgLy8gc2VjY2lvbmVzLiBTZSByZXNldGVhIGFsIGNlcnJhci9yZWFicmlyIGVsIG1vZGFsIChlbCBjb21wb25lbnRlIHNlIGRlc21vbnRhKS5cbiAgY29uc3QgW2RpZFJlc2V0Q29udGV4dEluU2VjdGlvbiwgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBwcmV2SGFzUGlubmVkQ29udGV4dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBsYW5nID0gcmVzb2x2ZU1haWFNb2RhbEkxOG5MYW5nKGkxOG4ubGFuZ3VhZ2UpXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGFnZW50c0RhdGFSZWYgPSB1c2VSZWYoYWdlbnRzLmRhdGEpXG4gIGFnZW50c0RhdGFSZWYuY3VycmVudCA9IGFnZW50cy5kYXRhXG5cbiAgY29uc3Qge1xuICAgIG15U2tpbGxzLFxuICAgIHNoYXJlZFNraWxscyxcbiAgICBsb2FkaW5nOiBsb2FkaW5nU2tpbGxzLFxuICAgIGhhbmRsZUdldFNraWxscyxcbiAgICBhZGRTa2lsbCxcbiAgICB1cGRhdGVTa2lsbEluTGlzdCxcbiAgICByZW1vdmVTa2lsbCxcbiAgfSA9IHVzZUdldFNraWxscygpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID0gcmVzb2x2ZVVzZXJIYXNBZ2VudE1hbmFnZW1lbnRQZXJtaXNzaW9ucyhcbiAgICB1c2VyPy5wZXJtaXNzaW9ucyxcbiAgICBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKVxuICApXG5cbiAgY29uc3QgdXNlckhhc1NraWxsc0FjY2VzcyA9IGNhbkFjY2Vzc1RvU2tpbGxzKHVzZXIpXG5cbiAgY29uc3QgY29tcHV0ZWRDdXJyZW50T3B0aW9uID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgcmVzb2x2ZUNvbXB1dGVkQ3VycmVudE9wdGlvbih7XG4gICAgICAgIGN1cnJlbnRPcHRpb24sXG4gICAgICAgIGFnZW50LFxuICAgICAgICBwcm9qZWN0LFxuICAgICAgICBjbGllbnQsXG4gICAgICAgIHVzZXIsXG4gICAgICAgIG11bHRpQWdlbnRzQWNjZXNzOiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSxcbiAgICAgIH0pLFxuICAgIFtjdXJyZW50T3B0aW9uLCBwcm9qZWN0LCBjbGllbnQsIGFnZW50LCB1c2VyXVxuICApXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oKCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpLCBbYWdlbnRdKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKFxuICAgICgpID0+IHJlc29sdmVTaWRlYmFyQWdlbnRzTmF2QWN0aXZlKGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCksXG4gICAgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZF1cbiAgKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSkpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCwgcGxhbm5lciB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEZ1ZXJhIGRlIGVzb3MgY29udGV4dG9zIHNlIHJlc3BldGEgbGEgcHJlZmVyZW5jaWEgZ3VhcmRhZGEgZW4gbG9jYWxTdG9yYWdlLlxuICBjb25zdCBbbGF5b3V0TW9kZSwgc2V0TGF5b3V0TW9kZV0gPSB1c2VTdGF0ZTxNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZT4oKCkgPT5cbiAgICByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSh7IHNlY3Rpb24sIGJhbm5lckVudHJ5RmFxIH0pXG4gIClcblxuICBjb25zdCBoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgc2V0U3RvcmVkTWFpYUNoYXRMYXlvdXRNb2RlKG1vZGUpXG4gICAgc2V0TGF5b3V0TW9kZShtb2RlKVxuICB9LCBbXSlcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihcbiAgICAoKSA9PiBzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnQ/LmRyYWdQb3NpdGlvbiA/PyBudWxsXG4gIClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmIChzaG91bGRVc2VEcmFnQ2xhbXBGYWxsYmFjayhjb250ZW50V3JhcHBlcikpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgcmV0dXJuIGNsYW1wRmxvYXRpbmdQYW5lbFBvc2l0aW9uKHgsIHksIHdpZHRoLCBoZWlnaHQsIHdpbmRvdy5pbm5lcldpZHRoLCB3aW5kb3cuaW5uZXJIZWlnaHQpXG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3VsZENsZWFyRHJhZ1Bvc2l0aW9uT25MYXlvdXRDaGFuZ2UobGF5b3V0TW9kZSkpIHtcbiAgICAgIHNldERyYWdQb3NpdGlvbihudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT5cbiAgICAgIHJlc29sdmVMYXlvdXREcmFnUG9zaXRpb25VcGRhdGUobGF5b3V0TW9kZSwgcHJldiwgY2xhbXBEcmFnUG9zaXRpb24sIHtcbiAgICAgICAgaW5uZXJXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgIHBhbmVsV2lkdGg6IGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpLFxuICAgICAgICBwYWQ6IDE2LFxuICAgICAgfSkhXG4gICAgKVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmICghaXNBY3RpdmVGbG9hdGluZ0RyYWdQb2ludGVyKGRyYWdTdGF0ZVJlZi5jdXJyZW50Py5wb2ludGVySWQsIGV2ZW50LnBvaW50ZXJJZCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoY29udGVudFdyYXBwZXIgJiYgcmVzb2x2ZVBlcnNpc3RlZERyYWdQb3NpdGlvbk9uRW5kKGxheW91dE1vZGUsIGNvbnRlbnRXcmFwcGVyKSkge1xuICAgICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHsgZHJhZ1Bvc2l0aW9uOiB7IHg6IHJlY3QubGVmdCwgeTogcmVjdC50b3AgfSB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2VuZFBvaW50ZXJUcmFja2luZywgbGF5b3V0TW9kZSwgdXNlci5pZF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdTdGF0ZSA9IGRyYWdTdGF0ZVJlZi5jdXJyZW50XG4gICAgICBpZiAoIWRyYWdTdGF0ZSB8fCAhaXNBY3RpdmVGbG9hdGluZ0RyYWdQb2ludGVyKGRyYWdTdGF0ZS5wb2ludGVySWQsIGV2ZW50LnBvaW50ZXJJZCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNhbXBsZVBvaW50ZXJNb3ZlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG5cbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IGNsYW1wRHJhZ1Bvc2l0aW9uKGV2ZW50LmNsaWVudFggLSBkcmFnU3RhdGUub2Zmc2V0WCwgZXZlbnQuY2xpZW50WSAtIGRyYWdTdGF0ZS5vZmZzZXRZKVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiByZXNvbHZlTmV4dERyYWdQb3NpdGlvbihwcmV2LCBuZXh0UG9zaXRpb24pKVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBzYW1wbGVQb2ludGVyTW92ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgcmVzb2x2ZUZsb2F0aW5nUGFuZWxEcmFnUG9zaXRpb24oe1xuICAgICAgICBsYXlvdXRNb2RlLFxuICAgICAgICBkcmFnUG9zaXRpb24sXG4gICAgICAgIHZpZXdwb3J0V2lkdGg6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggOiAwLFxuICAgICAgICBwYW5lbFdpZHRoOiBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSxcbiAgICAgICAgY2xhbXA6IGNsYW1wRHJhZ1Bvc2l0aW9uLFxuICAgICAgfSksXG4gICAgW2xheW91dE1vZGUsIGRyYWdQb3NpdGlvbiwgY2xhbXBEcmFnUG9zaXRpb25dXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFzaG91bGRTdGFydEZsb2F0aW5nUGFuZWxEcmFnKGlzRmxvYXRpbmcsIGV2ZW50LmJ1dHRvbikpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgaWYgKHNob3VsZFNraXBGbG9hdGluZ0RyYWdUYXJnZXQodGFyZ2V0KSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID8/IGNsYW1wRHJhZ1Bvc2l0aW9uKHJlY3QubGVmdCwgcmVjdC50b3ApXG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WCA9IGV2ZW50LmNsaWVudFggLSBpbml0aWFsUG9zaXRpb24ueFxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gaW5pdGlhbFBvc2l0aW9uLnlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKGluaXRpYWxQb3NpdGlvbilcbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0ge1xuICAgICAgICBwb2ludGVySWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgb2Zmc2V0WDogcG9pbnRlck9mZnNldFgsXG4gICAgICAgIG9mZnNldFk6IHBvaW50ZXJPZmZzZXRZLFxuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZydcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdERyYWdnYWJsZSlcbiAgICAgIHN0YXJ0UG9pbnRlclRyYWNraW5nKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIGlzRmxvYXRpbmcsIHJlc29sdmVkRHJhZ1Bvc2l0aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IHN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKHNob3VsZFJlc2V0U2lkZWJhckVycm9yT25TdGFydENoYXQoc2lkZWJhckhhc0Vycm9yKSkge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoXG4gICAgICAgIGJ1aWxkVXNlckluaXRpYWxNZXNzYWdlRnJvbVN0YXJ0Q2hhdCh7XG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICBhdHRhY2htZW50cyxcbiAgICAgICAgICBmYXFJZCxcbiAgICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZCxcbiAgICAgICAgICBtZW50aW9ucyxcbiAgICAgICAgICBmdWFJZCxcbiAgICAgICAgICBzY0lkLFxuICAgICAgICAgIGNvbnRleHREYXRhLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYmFubmVyRmFxID0gYmFubmVyRW50cnlGYXFcbiAgICBpZiAoIWJhbm5lckZhcSB8fCAhaGFzQmFubmVyRmFxVGl0bGUoYmFubmVyRmFxLmZhcVRpdGxlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWlzQmFubmVyRmFxUmVhZHlUb0F1dG9TZW5kKHtcbiAgICAgICAgZmFxVGl0bGU6IGJhbm5lckZhcS5mYXFUaXRsZSxcbiAgICAgICAgYWxyZWFkeVNlbnQ6IGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQsXG4gICAgICAgIGxvYWRpbmcsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCxcbiAgICAgICAgc2VjdGlvbixcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0Py5pZCxcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudD8uaWQsXG4gICAgICB9KVxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IHRydWVcbiAgICBzdGFydENoYXQoXG4gICAgICBiYW5uZXJGYXEuZmFxVGl0bGUsXG4gICAgICBbXSxcbiAgICAgIGJhbm5lckZhcS5mYXFJZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGJhbm5lckZhcS5jb250ZXh0RGF0YVxuICAgIClcbiAgfSwgW1xuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFJZCxcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGUsXG4gICAgYmFubmVyRW50cnlGYXE/LmNvbnRleHREYXRhLFxuICAgIGxvYWRpbmcsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGFnZW50Py5lbnRpdHksXG4gICAgcHJvamVjdD8uaWQsXG4gICAgY2xpZW50Py5pZCxcbiAgICBzZWN0aW9uLFxuICAgIHN0YXJ0Q2hhdCxcbiAgXSlcblxuICBjb25zdCBnb1RvQ2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChjaGF0OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQgYXMgc3RyaW5nXG5cbiAgICAgIGdldENoYXRzU3RvcmVTdGF0ZSgpLnNldEFjdGl2ZUNoYXRJZChzZXNzaW9uSWQpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnc2lkZWJhci1zZWxlY3Qtc2Vzc2lvbicsIHsgZGV0YWlsOiB7IHNlc3Npb25JZCB9IH0pKVxuXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKHNlc3Npb25JZClcbiAgICAgIGNvbnN0IHNlbGVjdGVkQWdlbnQgPSBmaW5kQWdlbnRGb3JDaGF0SXRlbShhZ2VudHMuZGF0YSwgY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGdvVG9DaGF0UmVmLmN1cnJlbnQgPSBnb1RvQ2hhdFxuXG4gIGNvbnN0IGhhbmRsZVNpZGViYXJPcGVuQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgIHNpZGViYXJPcGVuUmVmLmN1cnJlbnQgPSBvcGVuXG4gICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBzaWRlYmFyT3Blbjogb3BlbiB9KVxuICAgIH0sXG4gICAgW3VzZXIuaWRdXG4gIClcblxuICBjb25zdCBzeW5jUGFuZWxTZXNzaW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHBhdGNoID0gYnVpbGRNYWlhUGFuZWxTZXNzaW9uUGF0Y2goe1xuICAgICAgaXNNaW5pbWl6ZWQsXG4gICAgICBjdXJyZW50T3B0aW9uLFxuICAgICAgYWdlbnRzTmF2QWN0aXZlOiBzaWRlYmFyQWdlbnRzTmF2QWN0aXZlLFxuICAgICAgYWN0aXZlQ2hhdElkLFxuICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkID8/IG51bGwsXG4gICAgICBzaWRlYmFyT3Blbjogc2lkZWJhck9wZW5SZWYuY3VycmVudCxcbiAgICAgIGxheW91dE1vZGUsXG4gICAgICBkcmFnUG9zaXRpb24sXG4gICAgICBob3N0Q29udGV4dDoge1xuICAgICAgICBzZWN0aW9uLFxuICAgICAgICBwcm9qZWN0LFxuICAgICAgICBjbGllbnQsXG4gICAgICAgIHRhc2ssXG4gICAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIH0sXG4gICAgfSlcbiAgICBpZiAoIXBhdGNoKSByZXR1cm5cbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgcGF0Y2gpXG4gIH0sIFtcbiAgICBhY3RpdmVDaGF0SWQsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBkcmFnUG9zaXRpb24sXG4gICAgaXNNaW5pbWl6ZWQsXG4gICAgbGF5b3V0TW9kZSxcbiAgICBwcm9qZWN0LFxuICAgIHNlY3Rpb24sXG4gICAgc2lkZWJhckFnZW50c05hdkFjdGl2ZSxcbiAgICB0YXNrLFxuICAgIHVzZXIuaWQsXG4gIF0pXG5cbiAgLyoqIExvcyBhZ2VudGVzIHNlIHBpZGVuIHJlY2nDqW4gYWwgYWJyaXIgZWwgcGFuZWw6IGVuIG1vZG8gcGlsbCBubyBoYWNlIGZhbHRhIG5pbmd1bmEgcmVxdWVzdC4gKi9cbiAgY29uc3QgZW5zdXJlQWdlbnRzTG9hZGVkID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk6IFByb21pc2U8QWdlbnRbXT4gPT4ge1xuICAgIGNvbnN0IGNhY2hlZEFnZW50cyA9IHJlc29sdmVDYWNoZWRBZ2VudHNJZkF2YWlsYWJsZShhZ2VudHNEYXRhUmVmLmN1cnJlbnQpXG4gICAgaWYgKGNhY2hlZEFnZW50cykge1xuICAgICAgcmV0dXJuIGNhY2hlZEFnZW50c1xuICAgIH1cblxuICAgIGlmIChzaG91bGRBdHRlbXB0SW5pdGlhbEFnZW50c0ZldGNoKGFnZW50c0RhdGFSZWYuY3VycmVudC5sZW5ndGgsIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGNvbnN0IGxvYWRlZEFnZW50cyA9IGF3YWl0IGhhbmRsZUdldEFnZW50cygpXG4gICAgICBjb25zdCBsb2FkZWRGcm9tRmV0Y2ggPSByZXNvbHZlQ2FjaGVkQWdlbnRzSWZBdmFpbGFibGUobG9hZGVkQWdlbnRzKVxuICAgICAgaWYgKGxvYWRlZEZyb21GZXRjaCkge1xuICAgICAgICByZXR1cm4gbG9hZGVkRnJvbUZldGNoXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFnZW50c0RhdGFSZWYuY3VycmVudFxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01pbmltaXplZCB8fCBsb2FkaW5nIHx8IGluaXRpYWxDaGF0c1JlZmV0Y2hEb25lUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIGlmICghYWdlbnRzLmRhdGEubGVuZ3RoKSByZXR1cm5cbiAgICBpbml0aWFsQ2hhdHNSZWZldGNoRG9uZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHNldFJlZmV0Y2hDaGF0cyh0cnVlKVxuICB9LCBbaXNNaW5pbWl6ZWQsIGxvYWRpbmcsIGFnZW50cy5kYXRhLmxlbmd0aF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNaW5pbWl6ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHN5bmNQYW5lbFNlc3Npb24oKSwgMTUwKVxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKVxuICB9LCBbaXNNaW5pbWl6ZWQsIHN5bmNQYW5lbFNlc3Npb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25QYWdlSGlkZSA9ICgpID0+IHtcbiAgICAgIGlmIChzaG91bGRTeW5jUGFuZWxTZXNzaW9uT25QYWdlSGlkZShpc01pbmltaXplZCkpIHtcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICB9XG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIG9uUGFnZUhpZGUpXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIG9uUGFnZUhpZGUpXG4gIH0sIFtpc01pbmltaXplZCwgc3luY1BhbmVsU2Vzc2lvbl0pXG5cbiAgY29uc3QgaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gUHJpb3JpZGFkIGFsIHJlYWJyaXI6IHByaW1lciBjaGF0IHNpbiBsZWVyIOKGkiDDumx0aW1hIGNvbnZlcnNhY2nDs24gYWJpZXJ0YSDihpIgSG9tZS5cbiAgICBjb25zdCB7IGNoYXRzIH0gPSBnZXRDaGF0c1N0b3JlU3RhdGUoKVxuICAgIGNvbnN0IGxhc3RBY3RpdmVDaGF0SWQgPSByZWFkTGFzdEFjdGl2ZUNoYXRJZCh1c2VyLmlkKVxuICAgIGNvbnN0IHRhcmdldCA9IHJlc29sdmVNaW5pbWl6ZWRSZXN0b3JlVGFyZ2V0KGNoYXRzLCBsYXN0QWN0aXZlQ2hhdElkKVxuXG4gICAgLy8gTmF2ZWdhciBhbnRlcyBkZSBleHBhbmRpcjogc2kgZXNwZXJhbW9zIGFnZW50ZXMsIGVsIHBhbmVsIG1vbnRhIGNvbiBsYSBzZXNpw7NuIHZpZWphIHkgZWwgc2lkZWJhciBxdWVkYSBkZXNmYXNhZG8uXG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgZ29Ub0NoYXRSZWYuY3VycmVudD8uKHRhcmdldClcbiAgICB9IGVsc2Uge1xuICAgICAgZ29Ib21lUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuXG4gICAgc2V0SXNNaW5pbWl6ZWQoZmFsc2UpXG4gICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG4gICAgLy8gTGlzdCBtYXkgYmUgc3RhbGUgd2hpbGUgbWluaW1pemVkIChoZWFkZXIgc3RheWVkIG1vdW50ZWQgd2l0aCBjYWNoZWQgc3RvcmUpLlxuICAgIHNldFJlZmV0Y2hDaGF0cyh0cnVlKVxuICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW4sIHsgb3B0aW9uOiAnbWluaW1pemUnIH0pXG5cbiAgICBlbnN1cmVBZ2VudHNMb2FkZWQoKVxuICAgICAgLnRoZW4obG9hZGVkQWdlbnRzID0+IHtcbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQWdlbnQgPSBmaW5kQWdlbnRGb3JDaGF0SXRlbShsb2FkZWRBZ2VudHMsIHRhcmdldC5hZ2VudElkKVxuICAgICAgICAgIGlmIChzZWxlY3RlZEFnZW50KSB7XG4gICAgICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbiAgfSwgW2FtcGxpdHVkRXZlbnQsIGVuc3VyZUFnZW50c0xvYWRlZCwgZm9jdXNDaGF0SW5wdXQsIHNlbGVjdEFnZW50LCBzZXRDaGF0Vmlld1Zpc2libGUsIHNldFJlZmV0Y2hDaGF0cywgdXNlci5pZF0pXG5cbiAgLyoqXG4gICAqIFRvbWEgY29udHJvbCBkZXNkZSB1biBob3N0IChoZWFkZXIsIHByb3llY3RvLCBjbGllbnRl4oCmKTogYWJyZSBlbCBwYW5lbCwgZGVzY2FydGEgbGFcbiAgICogY29udmVyc2FjacOzbiBhYmllcnRhIHkgYXBsaWNhIGVsIGNvbnRleHRvIGRlbCBob3N0LiBOTyB2dWVsdmUgYSBsYSDDumx0aW1hIGNvbnZlcnNhY2nDs25cbiAgICog4oCUIGVzbyBzw7NsbyBsbyBoYWNlIGVsIHBpbGwgKGBoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZGApLlxuICAgKi9cbiAgY29uc3QgYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3ZlciA9IHVzZUNhbGxiYWNrKFxuICAgIChkZXRhaWw6IE1haWFIb3N0T3BlbkRldGFpbCkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5U3RhdGUgPSByZXNvbHZlSG9zdFRha2VvdmVyRW50aXR5U3RhdGUoZGV0YWlsKVxuXG4gICAgICBjbGVhck1haWFQYW5lbFNlc3Npb24odXNlci5pZClcbiAgICAgIHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0SXNSZXN0b3JpbmdTZXNzaW9uKGZhbHNlKVxuICAgICAgc2V0SXNNaW5pbWl6ZWQoZmFsc2UpXG4gICAgICBzZXRDaGF0Vmlld1Zpc2libGUodHJ1ZSlcbiAgICAgIHdyaXRlTGFzdEFjdGl2ZUNoYXRJZCh1c2VyLmlkLCBudWxsKVxuXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICAgIHNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbihmYWxzZSlcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgdXNlRmFxc1N0b3JlLmdldFN0YXRlKCkuY2xlYXJGYXFzKClcbiAgICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKG51bGwpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcblxuICAgICAgc2V0UHJvamVjdD8uKGVudGl0eVN0YXRlLnByb2plY3QpXG4gICAgICBpZiAoc2hvdWxkQXBwbHlDbGllbnRPbkhvc3RUYWtlb3ZlcihlbnRpdHlTdGF0ZS5jbGllbnQpKSB7XG4gICAgICAgIHNldENsaWVudD8uKGVudGl0eVN0YXRlLmNsaWVudClcbiAgICAgIH1cbiAgICAgIHNldFRhc2s/LihlbnRpdHlTdGF0ZS50YXNrKVxuXG4gICAgICBpZiAoZW50aXR5U3RhdGUuY2xlYXJHbG9iYWxQaW5uZWRDb250ZXh0KSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICBjbGVhckFnZW50KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV4dExheW91dCA9IHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlKHtcbiAgICAgICAgc2VjdGlvbjogZGV0YWlsLnNlY3Rpb24gYXMgU2VjdGlvbixcbiAgICAgICAgYmFubmVyRW50cnlGYXE6IGRldGFpbC5mYXEsXG4gICAgICB9KVxuICAgICAgc2V0TGF5b3V0TW9kZShuZXh0TGF5b3V0KVxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKG51bGwpXG5cbiAgICAgIGNvbnN0IGhvc3RDb250ZXh0ID0gYnVpbGRIb3N0VGFrZW92ZXJQZXJzaXN0Q29udGV4dChkZXRhaWwpXG5cbiAgICAgIGVuc3VyZUFnZW50c0xvYWRlZCgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZEFnZW50SWQgPSByZXNvbHZlSG9zdFRha2VvdmVyQWdlbnRJZChcbiAgICAgICAgICAgIGVudGl0eVN0YXRlLmNsZWFyR2xvYmFsUGlubmVkQ29udGV4dCxcbiAgICAgICAgICAgIGFnZW50c0RhdGFSZWYuY3VycmVudCxcbiAgICAgICAgICAgIGFnZW50Py5pZCA/PyBudWxsXG4gICAgICAgICAgKVxuICAgICAgICAgIGlmIChzaG91bGRTZWxlY3RGaXJzdEFnZW50T25Ib3N0VGFrZW92ZXIoZW50aXR5U3RhdGUuY2xlYXJHbG9iYWxQaW5uZWRDb250ZXh0LCBhZ2VudHNEYXRhUmVmLmN1cnJlbnRbMF0pKSB7XG4gICAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudHNEYXRhUmVmLmN1cnJlbnRbMF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHtcbiAgICAgICAgICAgIGlzRXhwYW5kZWQ6IHRydWUsXG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLmhvbWUsXG4gICAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU6IG51bGwsXG4gICAgICAgICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgICAgICAgICBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQsXG4gICAgICAgICAgICBzaWRlYmFyT3Blbjogc2lkZWJhck9wZW5SZWYuY3VycmVudCxcbiAgICAgICAgICAgIGRyYWdQb3NpdGlvbjogbnVsbCxcbiAgICAgICAgICAgIGhvc3RDb250ZXh0LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gICAgfSxcbiAgICBbXG4gICAgICBhZ2VudD8uaWQsXG4gICAgICBjbGVhckFnZW50LFxuICAgICAgZW5zdXJlQWdlbnRzTG9hZGVkLFxuICAgICAgZm9jdXNDaGF0SW5wdXQsXG4gICAgICBzZWxlY3RBZ2VudCxcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSxcbiAgICAgIHNldENoaXBzUHJvamVjdCxcbiAgICAgIHNldENsaWVudCxcbiAgICAgIHNldFByb2plY3QsXG4gICAgICBzZXRUYXNrLFxuICAgICAgdXNlci5pZCxcbiAgICBdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZVJlYWR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgc2VuZE1lc3NhZ2U6IChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2hvdWxkVXNlQWN0aXZlQ2hhdFNlbmRIYW5kbGVyKGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgb3B0aW9ucy5jaGF0LCBCb29sZWFuKHNlbmRNZXNzYWdlRnVuY3Rpb24pKSkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uPy4obWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzdGFydENoYXQsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgaGFuZGxlR29Ib21lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFNpIGVzdGFtb3MgZW4gdW5hIGNvbnZlcnNhY2nDs24geSB2YW1vcyBhIGhvbWUsIHJlc2V0ZWFyIGluaXRpYWxDaGF0SWQgeSBpbmNyZW1lbnRhciBuZXdDaGF0S2V5XG4gICAgaWYgKHNob3VsZFJlc2V0Q2hhdFN0YXRlT25Hb0hvbWUoY3VycmVudE9wdGlvbiwgb3B0aW9ucy5jaGF0KSkge1xuICAgICAgLy8gTm8gY29ydGFtb3MgbGEgZ2VuZXJhY2nDs246IGxhIHNlc2nDs24gc2lndWUgcmVzcG9uZGllbmRvIGVuIGJhY2tncm91bmQuXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBpZiAoc2hvdWxkQ2xlYXJDbGllbnRPbkdvSG9tZUZyb21DaGF0KGFnZW50Py5lbnRpdHkpKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgICBpZiAoc2hvdWxkQ2xlYXJUYXNrT25Hb0hvbWVGcm9tQ2hhdChzZWN0aW9uKSkge1xuICAgICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNob3VsZFJlc2V0QWdlbnRUb0ZpcnN0T25Hb0hvbWUoYWdlbnQsIGFnZW50cy5kYXRhLmxlbmd0aCkpIHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50cy5kYXRhWzBdKVxuICAgIH1cbiAgICBpZiAoc2hvdWxkQ2xlYXJPcmNoZXN0cmF0b3JHbG9iYWxDb250ZXh0T25Hb0hvbWUoc2VjdGlvbiwgYWdlbnQ/LnR5cGUpKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgfVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gIH0sIFtcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgb3B0aW9ucy5jaGF0LFxuICAgIGN1cnJlbnRPcHRpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGFnZW50LFxuICAgIGFnZW50cyxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRUYXNrLFxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24sXG4gICAgc2VjdGlvbixcbiAgXSlcblxuICBnb0hvbWVSZWYuY3VycmVudCA9IGhhbmRsZUdvSG9tZVxuXG4gIGNvbnN0IHN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGFnZW50c0xpc3QgPSBzaG91bGRQcmVmZXRjaEFnZW50c0ZvckNhdGFsb2dOZXdDaGF0KGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgb3B0aW9ucy5teUFnZW50cywgb3B0aW9ucy5teVNraWxscylcbiAgICAgID8gYXdhaXQgZW5zdXJlQWdlbnRzTG9hZGVkKClcbiAgICAgIDogYWdlbnRzLmRhdGFcbiAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzTGlzdFswXVxuXG4gICAgaWYgKHNob3VsZENsZWFyQ29udGV4dEZvckNhdGFsb2dPclNraWxsQWdlbnQoZmlyc3RBZ2VudCkpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIHNlbGVjdEFnZW50KGZpcnN0QWdlbnQpXG4gICAgfVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICB9LCBbXG4gICAgYWdlbnRzLmRhdGEsXG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIGVuc3VyZUFnZW50c0xvYWRlZCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRUYXNrLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgXSlcblxuICBjb25zdCBoYW5kbGVTdGFydE5ld0NoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNob3VsZFN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nKGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkpIHtcbiAgICAgIHN0YXJ0TmV3Q2hhdEZyb21DYXRhbG9nKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaGFuZGxlR29Ib21lKClcbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaGFuZGxlR29Ib21lLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkLCBzdGFydE5ld0NoYXRGcm9tQ2F0YWxvZ10pXG5cbiAgY29uc3QgaGFuZGxlUmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgaGFuZGxlR29Ib21lKClcbiAgfSwgW2hhbmRsZUdvSG9tZV0pXG5cbiAgLy8gQm90w7NuIFwidm9sdmVyXCIgZGVsIGhlYWRlciAoc29sbyBvcmNoZXN0cmF0b3IpOlxuICAvLyAtIERlc2RlIGVsIGNoYXQgKGhlYWRlciBvIHByb2plY3QvY2xpZW50L3Rhc2spOiBpbmljaWEgdW5hIGNvbnZlcnNhY2nDs24gbnVldmEgY29uc2VydmFuZG8gZWxcbiAgLy8gICBjb250ZXh0byBwaW5lYWRvIHkgdnVlbHZlIGFsIGhvbWUgKHBhc28gMiBjb24gRkFRcy9GVUFzKS5cbiAgLy8gLSBFbiBlbCBob21lIHBhc28gMiAoRkFRcy9GVUFzIGNvbiBjb250ZXh0byk6IGxpbXBpYSBlbCBjb250ZXh0byBwaW5lYWRvIHkgdnVlbHZlIGFsIHBhc28gMVxuICAvLyAgIChzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzKS4gRW4gaGVhZGVyIHNpZW1wcmU7IGVuIHByb2plY3QvY2xpZW50L3Rhc2sgc29sbyBzaSBlbFxuICAvLyAgIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIChkaWRSZXNldENvbnRleHRJblNlY3Rpb24pLlxuICBjb25zdCBoYW5kbGVCYWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHRvID0gcmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbihzZWN0aW9uLCBhZ2VudD8udHlwZSwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBvcHRpb25zLmhvbWUpXG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QmFjaywgeyB0byB9KVxuXG4gICAgLy8gRGVzZGUgZWwgY2hhdCDihpIgbnVldmEgY29udmVyc2FjacOzbiBTSU4gYm9ycmFyIGVsIGNvbnRleHRvIHBpbmVhZG8sIHZvbHZpZW5kbyBhbCBob21lLlxuICAgIGlmIChzaG91bGRCYWNrU3RhcnROZXdDaGF0UHJlc2VydmluZ0NvbnRleHQoY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBvcHRpb25zLmNoYXQpKSB7XG4gICAgICAvLyBObyBjb3J0YW1vcyBsYSBnZW5lcmFjacOzbjogbGEgc2VzacOzbiBzaWd1ZSByZXNwb25kaWVuZG8gZW4gYmFja2dyb3VuZC5cbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBIb21lIHBhc28gMiAoY29udGV4dG8gcGluZWFkbykg4oaSIGxpbXBpYXIgZWwgY29udGV4dG8geSB2b2x2ZXIgYWwgcGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzKS5cbiAgICBpZiAoc2hvdWxkQmFja0NsZWFyUGlubmVkQ29udGV4dChjb21wdXRlZEN1cnJlbnRPcHRpb24sIG9wdGlvbnMuaG9tZSwgc2VjdGlvbiwgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKSkge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgfVxuICB9LCBbXG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQ/LnR5cGUsXG4gICAgYW1wbGl0dWRFdmVudCxcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uLFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICBdKVxuXG4gIC8vIERldGVjdGEgZWwgcmVpbmljaW8gZGUgY29udGV4dG8gZW4gcHJvamVjdC9jbGllbnQvdGFzazogY29udGV4dG8gcGluZWFkbyDihpIgdmFjw61vIGNvbiBlbFxuICAvLyBvcmNoZXN0cmF0b3IgKHAuIGVqLiBhbCByZXNlbGVjY2lvbmFyIE1BSUEgZW4gZWwgbGlzdGFkbykuIFNvbG8gbGEgdHJhbnNpY2nDs24gY3VlbnRhLCBhc8OtIHVuYVxuICAvLyBhcGVydHVyYSBmcmVzY2EgKGNvbnRleHRvIHBpbmVhZG8gZGVzZGUgbGEgc2VjY2nDs24pIG5vIGxvIGFjdGl2YS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwaW5uZWQgPSByZXNvbHZlSGFzUGlubmVkQ29udGV4dCh7XG4gICAgICB0YXNrSWQ6IHRhc2s/LmlkLFxuICAgICAgY2hpcHNQcm9qZWN0SWQ6IGNoaXBzUHJvamVjdD8ucHJvamVjdElkLFxuICAgICAgY2xpZW50SWQ6IGNsaWVudD8uaWQsXG4gICAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkLFxuICAgIH0pXG4gICAgY29uc3Qgd2FzUGlubmVkID0gcHJldkhhc1Bpbm5lZENvbnRleHRSZWYuY3VycmVudFxuICAgIHByZXZIYXNQaW5uZWRDb250ZXh0UmVmLmN1cnJlbnQgPSBwaW5uZWRcbiAgICBpZiAoc2hvdWxkTWFya09yY2hlc3RyYXRvckNvbnRleHRSZXNldChzZWN0aW9uLCBhZ2VudD8udHlwZSwgd2FzUGlubmVkLCBwaW5uZWQpKSB7XG4gICAgICBzZXREaWRSZXNldENvbnRleHRJblNlY3Rpb24odHJ1ZSlcbiAgICB9XG4gIH0sIFt0YXNrPy5pZCwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQsIGNsaWVudD8uaWQsIHByb2plY3Q/LmlkLCBzZWN0aW9uLCBhZ2VudD8udHlwZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbk1lcmdlQ3JlYXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAobmV4dEFnZW50Py5pZCkge1xuICAgICAgICBhZGRBZ2VudChuZXh0QWdlbnQsIHsgbmF2aWdhdGVIb21lOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbYWRkQWdlbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TeW5jRWRpdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghbmV4dEFnZW50Py5pZCkgcmV0dXJuXG4gICAgICB1cGRhdGVBZ2VudChuZXh0QWdlbnQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBuZXh0QWdlbnQuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW3VwZGF0ZUFnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnQ/LmlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5DaGF0VmlldyA9ICgpID0+IHtcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmNoYXQpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBFbCDDrWNvbm8gZGUgTUFJQSBkZWwgaGVhZGVyIGxsZXZhIHNpZW1wcmUgYWwgSG9tZS4gU2kgTUFJQSB5YSBlc3TDoSBtb250YWRhIHBlcm9cbiAgICogbWluaW1pemFkYSwgZWwgaG9zdCBubyBwdWVkZSByZXNvbHZlcmxvIGNhbWJpYW5kbyBgaXNPcGVuYCAoeWEgZXN0w6EgZW4gdHJ1ZSksXG4gICAqIGFzw60gcXVlIGF2aXNhIHBvciBldmVudG8geSBhY8OhIHJlc3RhdXJhbW9zIHkgdmFtb3MgYWwgSG9tZS5cbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkhvbWUgPSAoKSA9PiB7XG4gICAgICBhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyKHtcbiAgICAgICAgc2VjdGlvbjogJ2hlYWRlcicsXG4gICAgICAgIGVudGl0eTogeyBwcm9qZWN0SWQ6IG51bGwsIGNsaWVudElkOiBudWxsIH0sXG4gICAgICB9KVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4taG9tZScsIG9wZW5Ib21lKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4taG9tZScsIG9wZW5Ib21lKVxuICAgIH1cbiAgfSwgW2FwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXJdKVxuXG4gIC8qKlxuICAgKiBPdHJvIGhvc3QgKHByb3llY3RvLCBjbGllbnRlLCBiYW5uZXIsIGhlYWRlcuKApikgcGlkZSBhYnJpciBNQUlBIG1pZW50cmFzIHlhIGhheSB1bmFcbiAgICogaW5zdGFuY2lhIG1vbnRhZGEuIEV4cGFuZGUgc2kgZXN0YWJhIG1pbmltaXphZG8sIGFwbGljYSBlbCBjb250ZXh0byBkZWwgaG9zdCBudWV2b1xuICAgKiB5IHZhIGFsIGhvbWUg4oCUIHNpbiByZXN0YXVyYXIgbGEgY29udmVyc2FjacOzbiBwcmV2aWEgKGVzbyBsbyBoYWNlIGVsIHBpbGwpLlxuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuRnJvbUhvc3QgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8TWFpYUhvc3RPcGVuRGV0YWlsPlxuICAgICAgaWYgKCFkZXRhaWwpIHJldHVyblxuICAgICAgYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3ZlcihkZXRhaWwpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvcGVuRnJvbUhvc3QpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgb3BlbkZyb21Ib3N0KVxuICAgIH1cbiAgfSwgW2FwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXJdKVxuXG4gIC8qKiBNaXNtbyBmbHVqbyBxdWUgQ2hhdEFJTXlBZ2VudHMuaGFuZGxlVXNlQWdlbnQgKyBvbkJhY2sgKGhhbmRsZXJzLmhvbWUpLlxuICAgKiAgRWwgZGV0YWlsIHB1ZWRlIHRyYWVyIG9wY2lvbmFsbWVudGUgYHByb2plY3RgLCBgY2xpZW50YCwgYHRhc2tgIHBhcmEgZmxvd3MgcXVlXG4gICAqICBuZWNlc2l0YW4gcHJlc2VydmFyIGNvbnRleHRvIChlai4gc2VsZWN0b3IgZGUgYWdlbnRlcyBkZXNkZSB1bmEgdGFyZWEpLiBTaSBubyB2aWVuZW4sXG4gICAqICBzZSBtYW50aWVuZSBlbCBjb21wb3J0YW1pZW50byBvcmlnaW5hbCBkZSBsaW1waWFyIHByb2plY3QvY2xpZW50LiAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5OZXdDaGF0V2l0aEFnZW50ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PHtcbiAgICAgICAgYWdlbnQ6IEFnZW50XG4gICAgICAgIHByb2plY3Q/OiBQcm9qZWN0IHwgbnVsbFxuICAgICAgICBjbGllbnQ/OiBDbGllbnQgfCBudWxsXG4gICAgICAgIHRhc2s/OiBUYXNrIHwgbnVsbFxuICAgICAgfT5cbiAgICAgIGNvbnN0IG5leHRBZ2VudCA9IGRldGFpbD8uYWdlbnRcbiAgICAgIGlmICghbmV4dEFnZW50KSByZXR1cm5cblxuICAgICAgY29uc3QgY29udGV4dFBhdGNoID0gcmVzb2x2ZU9wZW5OZXdDaGF0V2l0aEFnZW50Q29udGV4dChkZXRhaWwgPz8ge30pXG4gICAgICBzZXRQcm9qZWN0KGNvbnRleHRQYXRjaC5wcm9qZWN0KVxuICAgICAgc2V0Q2xpZW50Py4oY29udGV4dFBhdGNoLmNsaWVudClcbiAgICAgIGlmIChjb250ZXh0UGF0Y2guc2hvdWxkU2V0VGFzaykge1xuICAgICAgICBzZXRUYXNrPy4oY29udGV4dFBhdGNoLnRhc2sgPz8gbnVsbClcbiAgICAgIH1cbiAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICB9XG4gIH0sIFtzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXSlcblxuICBjb25zdCBhcHBseVNraWxsVXNlRmxvdyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChza2lsbDogU2tpbGwsIHVzZUZpcnN0QWdlbnQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0QWdlbnQgPSBhd2FpdCBlbnN1cmVBZ2VudHNCZWZvcmVTa2lsbFVzZSh7XG4gICAgICAgIHVzZUZpcnN0QWdlbnQsXG4gICAgICAgIGFnZW50czogYWdlbnRzRGF0YVJlZi5jdXJyZW50LFxuICAgICAgICBlbnN1cmVBZ2VudHNMb2FkZWQsXG4gICAgICB9KVxuXG4gICAgICBpZiAoc2hvdWxkQ2xlYXJDb250ZXh0Rm9yQ2F0YWxvZ09yU2tpbGxBZ2VudChmaXJzdEFnZW50KSkge1xuICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgfVxuXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBkaXNwYXRjaFNraWxsTWVudGlvbkluc2VydChza2lsbClcbiAgICB9LFxuICAgIFtlbnN1cmVBZ2VudHNMb2FkZWQsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVVzZVNraWxsQWZ0ZXJTYXZlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbCwgdXNlRmlyc3RBZ2VudCA9IGZhbHNlIH0gPVxuICAgICAgICAoZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8eyBza2lsbDogU2tpbGw7IHVzZUZpcnN0QWdlbnQ/OiBib29sZWFuIH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghc2tpbGwpIHJldHVyblxuXG4gICAgICBhcHBseVNraWxsVXNlRmxvdyhza2lsbCwgdXNlRmlyc3RBZ2VudCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIGhhbmRsZVVzZVNraWxsQWZ0ZXJTYXZlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5ULCBoYW5kbGVVc2VTa2lsbEFmdGVyU2F2ZSlcbiAgICB9XG4gIH0sIFthcHBseVNraWxsVXNlRmxvd10pXG5cbiAgLy8gTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChhZ2VudF90eXBlL2FnZW50X2VudGl0eSArIGNvbnRleHRvKSwgZW1pdGlkYSBwb3IgdXNlQ2hhdE1lc3NhZ2VzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU2Vzc2lvbk1ldGEgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2dCBhcyBDdXN0b21FdmVudDxTZXNzaW9uTWV0YT5cbiAgICAgIGlmIChkZXRhaWwpIHNldFNlc3Npb25NZXRhKGRldGFpbClcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIG9uU2Vzc2lvbk1ldGEpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCBvblNlc3Npb25NZXRhKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuIGxpbXBpYW1vcyBsYSBtZXRhZGF0YTsgZWwgbG9hZCBkZSBsYSBudWV2YSBzZXNzaW9uIGxhIHZ1ZWx2ZSBhIGVtaXRpci5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTZXNzaW9uTWV0YShudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZF0pXG5cbiAgLy8gQ2FydGVsIFwiY29udGludWFyIGVuIHVuIGNoYXQgbnVldm9cIjogc2UgbXVlc3RyYSBhbCBhYnJpciB1bmEgY29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3lcbiAgLy8gKGFnZW50X3R5cGUgPT09ICdjbG9uZScgY29uIGVudGl0eSBwcm9qZWN0L3Rhc2svY2xpZW50KS4gRWwgaW5wdXQgc2UgcmVlbXBsYXphIHBvciBlbCBjYXJ0ZWwuXG4gIGNvbnN0IGxlZ2FjeUNvbnRleHRTZXNzaW9uID0gdXNlTWVtbyhcbiAgICAoKSA9PiByZXNvbHZlTGVnYWN5Q29udGV4dFNlc3Npb24oY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBvcHRpb25zLmNoYXQsIHNlc3Npb25NZXRhKSxcbiAgICBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzZXNzaW9uTWV0YV1cbiAgKVxuXG4gIC8vIE1hcmNhIGVsIGFnZW50ZSBkZSBsYSBjb252ZXJzYWNpw7NuIGxlZ2FjeSBwYXJhIHF1ZSBoZWFkZXIsIHNlbGVjdG9yIHkgYXZhdGFyIG11ZXN0cmVuIGVsIGxvZ29cbiAgLy8gTUFJQSB5IGVsIG5vbWJyZSB0YWNoYWRvIChhZ2VudGUgb2Jzb2xldG8pLCBzaW4gZGVwZW5kZXIgZGVsIGB0eXBlYCByZXN1ZWx0byBkZSBsYSBzZXNpw7NuIHZpZWphLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRNYXJrQWdlbnRBc0xlZ2FjeUNvbnRleHQobGVnYWN5Q29udGV4dFNlc3Npb24sIGFnZW50KSkge1xuICAgICAgc2VsZWN0QWdlbnQoYnVpbGRMZWdhY3lDb250ZXh0QWdlbnQoYWdlbnQpKVxuICAgIH1cbiAgfSwgW2xlZ2FjeUNvbnRleHRTZXNzaW9uLCBhZ2VudCwgc2VsZWN0QWdlbnRdKVxuXG4gIC8vIEFicmUgdW4gY2hhdCBudWV2byBjb24gZWwgb3JjaGVzdHJhdG9yIHNldGVhbmRvIGVsIGNvbnRleHRvIGRlbCBjbG9uZSBsZWdhY3kgKG1pc21vIGNyaXRlcmlvXG4gIC8vIHF1ZSBjbGlja2VhciB1biBjb250ZXh0byByZWNpZW50ZSBlbiBlbCBob21lIOKGkiBwYXNvIDIgY29uIEZBUXMvYWNjaW9uZXMgZGUgZXNlIGNvbnRleHRvKS5cbiAgY29uc3QgaGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG9yY2hlc3RyYXRvciA9IGZpbmRPcmNoZXN0cmF0b3JBZ2VudChhZ2VudHMuZGF0YSlcbiAgICBpZiAoIWNhbkNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdChzZXNzaW9uTWV0YSwgb3JjaGVzdHJhdG9yKSB8fCAhc2Vzc2lvbk1ldGEgfHwgIW9yY2hlc3RyYXRvcikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIGFnZW50RW50aXR5LFxuICAgICAgcHJvamVjdElkOiBwSWQsXG4gICAgICBwcm9qZWN0TmFtZTogcE5hbWUsXG4gICAgICBjbGllbnRJZDogY0lkLFxuICAgICAgY2xpZW50TmFtZTogY05hbWUsXG4gICAgICB0YXNrSWQ6IHRJZCxcbiAgICAgIHRhc2tOYW1lOiB0TmFtZSxcbiAgICB9ID0gc2Vzc2lvbk1ldGFcblxuICAgIGNvbnN0IG1pZ3JhdGlvblBhdGNoID0gYnVpbGRMZWdhY3lDb250ZXh0TWlncmF0aW9uUGF0Y2goe1xuICAgICAgYWdlbnRFbnRpdHksXG4gICAgICBwcm9qZWN0SWQ6IHBJZCxcbiAgICAgIHByb2plY3ROYW1lOiBwTmFtZSxcbiAgICAgIGNsaWVudElkOiBjSWQsXG4gICAgICBjbGllbnROYW1lOiBjTmFtZSxcbiAgICAgIHRhc2tJZDogdElkLFxuICAgICAgdGFza05hbWU6IHROYW1lLFxuICAgIH0pID8/IHsgdGFzazogbnVsbCwgcHJvamVjdDogbnVsbCwgY2xpZW50OiBudWxsLCBjaGlwc1Byb2plY3Q6IG51bGwgfVxuXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuXG4gICAgc2V0VGFzaz8uKG1pZ3JhdGlvblBhdGNoLnRhc2spXG4gICAgc2V0UHJvamVjdChtaWdyYXRpb25QYXRjaC5wcm9qZWN0KVxuICAgIHNldENsaWVudD8uKG1pZ3JhdGlvblBhdGNoLmNsaWVudClcbiAgICBzZXRDaGlwc1Byb2plY3QobWlncmF0aW9uUGF0Y2guY2hpcHNQcm9qZWN0KVxuXG4gICAgc2VsZWN0QWdlbnQob3JjaGVzdHJhdG9yKVxuICAgIHNldFNlc3Npb25NZXRhKG51bGwpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gIH0sIFtzZXNzaW9uTWV0YSwgYWdlbnRzLmRhdGEsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCwgc3RvcEdlbmVyYXRpb25GdW5jdGlvbl0pXG5cbiAgY29uc3QgeyBzaG93TmV3Q2hhdCwgaXNNeUFnZW50c1NlY3Rpb24sIGlzTXlTa2lsbHNTZWN0aW9uLCBpc01haWFrZXJDcmVhdG9ySG9tZSB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiByZXNvbHZlQ2hhdE1vZGFsU2VjdGlvbkZsYWdzKGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCksXG4gICAgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZF1cbiAgKVxuXG4gIGNvbnN0IGhhc0NoYXRBY2Nlc3MgPSB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uLCB1c2VyKVxuICBjb25zdCBtYWluQ29udGVudFZpZXcgPSByZXNvbHZlQ2hhdE1vZGFsTWFpbkNvbnRlbnRWaWV3KGhhc0Vycm9yLCBoYXNDaGF0QWNjZXNzKVxuICBjb25zdCBzaG93TW9kYWxGb290ZXIgPSBzaG91bGRTaG93Q2hhdE1vZGFsRm9vdGVyKHtcbiAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24sXG4gICAgaG9tZU9wdGlvbjogb3B0aW9ucy5ob21lLFxuICAgIGNoYXRPcHRpb246IG9wdGlvbnMuY2hhdCxcbiAgICBhZ2VudHNDb3VudDogYWdlbnRzLmRhdGEubGVuZ3RoLFxuICAgIGlzTWFpYWtlckNyZWF0b3JIb21lLFxuICAgIGhhc0Vycm9yLFxuICAgIGxvYWRpbmcsXG4gICAgaGFzQWNjZXNzOiBoYXNDaGF0QWNjZXNzLFxuICB9KVxuICBjb25zdCBzaG93U2lkZWJhciA9IHNob3VsZFJlbmRlckNoYXRTaWRlYmFyKGhhc0NoYXRBY2Nlc3MsIGlzRmxvYXRpbmcsIGlzTWFpYVBhZ2VSb3V0ZSlcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIjogc29sbyBwYXJhIGVsIG9yY2hlc3RyYXRvci5cbiAgLy8gLSBFbiBlbCBjaGF0OiBkaXNwb25pYmxlIGVuIHRvZGFzIGxhcyBzZWNjaW9uZXMgKGhlYWRlciB5IHByb2plY3QvY2xpZW50L3Rhc2spLlxuICAvLyAtIEVuIGVsIGhvbWUgcGFzbyAyIChGQVFzL0ZVQXMgY29uIGNvbnRleHRvIHBpbmVhZG8pOiBlbiBlbCBoZWFkZXIgc2llbXByZTsgZW5cbiAgLy8gICBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWwgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gKHBhc8OzIHBvciBlbCBzZWxlY3RvciBkZVxuICAvLyAgIGNvbnRleHRvcyByZWNpZW50ZXMpLiBFbiBlbCBwYXNvIDEgKHNpbiBjb250ZXh0bykgTk8gc2UgbXVlc3RyYS5cbiAgY29uc3QgaGFzUGlubmVkQ29udGV4dCA9IHJlc29sdmVIYXNQaW5uZWRDb250ZXh0KHtcbiAgICB0YXNrSWQ6IHRhc2s/LmlkLFxuICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICBjbGllbnRJZDogY2xpZW50Py5pZCxcbiAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkLFxuICB9KVxuICBjb25zdCB7IGlzQ2hhdFZpZXcsIGlzSGVhZGVySG9tZVN0ZXAyLCBpc1NlY3Rpb25SZXNldEhvbWVTdGVwMiB9ID0gcmVzb2x2ZU9yY2hlc3RyYXRvckhvbWVOYXZGbGFncyh7XG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIGhvbWVPcHRpb246IG9wdGlvbnMuaG9tZSxcbiAgICBjaGF0T3B0aW9uOiBvcHRpb25zLmNoYXQsXG4gICAgaGFzUGlubmVkQ29udGV4dCxcbiAgICBzZWN0aW9uLFxuICAgIGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbixcbiAgfSlcbiAgY29uc3Qgc2hvd0JhY2tCdXR0b24gPSBzaG91bGRTaG93T3JjaGVzdHJhdG9yQmFja0J1dHRvbih7XG4gICAgYWdlbnRUeXBlOiBhZ2VudD8udHlwZSxcbiAgICBoYXNFcnJvcixcbiAgICBsb2FkaW5nLFxuICAgIGlzQ2hhdFZpZXcsXG4gICAgaXNIZWFkZXJIb21lU3RlcDIsXG4gICAgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIsXG4gIH0pXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWNhbk9wZW5NYWlhTWFya2V0cGxhY2UoQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgYXdhaXQgZW5zdXJlQWdlbnRzTG9hZGVkKClcbiAgICBjbGVhckFnZW50KClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlBZ2VudHMpXG4gICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHtcbiAgICAgIGFnZW50c05hdkFjdGl2ZTogJ215QWdlbnRzJyxcbiAgICAgIGN1cnJlbnRPcHRpb246IG9wdGlvbnMubXlBZ2VudHMsXG4gICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgICBhZ2VudElkOiBudWxsLFxuICAgIH0pXG4gIH0sIFtjbGVhckFnZW50LCBlbnN1cmVBZ2VudHNMb2FkZWQsIHVzZXIuaWRdKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Ta2lsbHMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRPcGVuU2tpbGxzQ2F0YWxvZyh1c2VySGFzU2tpbGxzQWNjZXNzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNsZWFyQWdlbnQoKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teVNraWxscylcbiAgICBoYW5kbGVHZXRTa2lsbHMoKVxuICAgIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkLCB7XG4gICAgICBhZ2VudHNOYXZBY3RpdmU6ICdteVNraWxscycsXG4gICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLm15U2tpbGxzLFxuICAgIH0pXG4gIH0sIFtjbGVhckFnZW50LCBoYW5kbGVHZXRTa2lsbHMsIHVzZXIuaWQsIHVzZXJIYXNTa2lsbHNBY2Nlc3NdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYSkpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGEpKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldFRhc2s/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgYWdlbnRzTmF2QWN0aXZlOiAnbWFpYWtlcicsXG4gICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLmhvbWUsXG4gICAgICBhZ2VudElkOiBtYWlha2VyQWdlbnQuaWQsXG4gICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgfSlcbiAgfSwgW2FnZW50cy5kYXRhLCBpMThuLmxhbmd1YWdlLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB1c2VyLmlkXSlcblxuICBjb25zdCBsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoc25hcHNob3Q6IE1haWFQYW5lbFNlc3Npb25TbmFwc2hvdCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaWYgKHNob3VsZFNraXBBZ2VudHNMb2FkT25TZXNzaW9uUmVzdG9yZShzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgYWdlbnRUb1NlbGVjdDogQWdlbnQgfCB1bmRlZmluZWRcbiAgICAgIGlmIChzaG91bGRGZXRjaEFnZW50RGV0YWlsT25TZXNzaW9uUmVzdG9yZShzbmFwc2hvdC5hZ2VudElkLCBzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYWdlbnRUb1NlbGVjdCA9IGF3YWl0IGZldGNoQWdlbnREZXRhaWwoc25hcHNob3QuYWdlbnRJZCBhcyBzdHJpbmcpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGFnZW50VG9TZWxlY3QgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIGF3YWl0IGhhbmRsZUdldEFnZW50cyhzaG91bGRQYXNzQWdlbnRUb0dldEFnZW50c09uUmVzdG9yZShzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUpID8gYWdlbnRUb1NlbGVjdCA6IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzaG91bGRTZWxlY3RGZXRjaGVkQWdlbnRBZnRlclJlc3RvcmUoYWdlbnRUb1NlbGVjdCwgc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlKSkge1xuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFRvU2VsZWN0IGFzIEFnZW50KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUdldEFnZW50cywgc2VsZWN0QWdlbnRdXG4gIClcblxuICBjb25zdCBhcHBseVNlc3Npb25SZXN0b3JlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHNuYXBzaG90OiBNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QpID0+IHtcbiAgICAgIHNldElzTWluaW1pemVkKGZhbHNlKVxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG5cbiAgICAgIGNvbnN0IGNoaXBzUHJvamVjdEZyb21TbmFwc2hvdCA9IHJlc29sdmVTbmFwc2hvdENoaXBzUHJvamVjdChzbmFwc2hvdC5ob3N0Q29udGV4dClcbiAgICAgIGlmIChjaGlwc1Byb2plY3RGcm9tU25hcHNob3QpIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KGNoaXBzUHJvamVjdEZyb21TbmFwc2hvdClcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdG9yZVJvdXRlID0gcmVzb2x2ZVNlc3Npb25SZXN0b3JlTmF2Um91dGUoc25hcHNob3QpXG5cbiAgICAgIGlmIChyZXN0b3JlUm91dGUgPT09ICdteUFnZW50cycpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlT3Blbk1hcmtldHBsYWNlKClcbiAgICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN0b3JlUm91dGUgPT09ICdteVNraWxscycpIHtcbiAgICAgICAgaGFuZGxlT3BlblNraWxscygpXG4gICAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAocmVzdG9yZVJvdXRlID09PSAnbWFpYWtlcicpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlR29Ub01haWFrZXIoKVxuICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIHN5bmNQYW5lbFNlc3Npb24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3RvcmVSb3V0ZSA9PT0gJ2NoYXQnKSB7XG4gICAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgICAgc2V0SW5pdGlhbENoYXRJZChzbmFwc2hvdC5hY3RpdmVDaGF0SWQgPz8gbnVsbClcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKHNuYXBzaG90LmFjdGl2ZUNoYXRJZCA/PyBudWxsKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgICB9IGVsc2UgaWYgKHJlc3RvcmVSb3V0ZSA9PT0gJ3NhdmVkT3B0aW9uJyAmJiBzbmFwc2hvdC5jdXJyZW50T3B0aW9uKSB7XG4gICAgICAgIHNldEN1cnJlbnRPcHRpb24oc25hcHNob3QuY3VycmVudE9wdGlvbiBhcyBvcHRpb25zKVxuICAgICAgfVxuXG4gICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICB9LFxuICAgIFtcbiAgICAgIGZvY3VzQ2hhdElucHV0LFxuICAgICAgaGFuZGxlR29Ub01haWFrZXIsXG4gICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gICAgICBoYW5kbGVPcGVuU2tpbGxzLFxuICAgICAgaGFuZGxlcnMsXG4gICAgICBzZXRDaGF0Vmlld1Zpc2libGUsXG4gICAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgICBzeW5jUGFuZWxTZXNzaW9uLFxuICAgIF1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc25hcHNob3QgPSBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudFxuICAgIGlmICghc25hcHNob3QgfHwgc2Vzc2lvblJlc3RvcmVTdGFydGVkUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIHNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuXG4gICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG5cbiAgICBjb25zdCBydW5SZXN0b3JlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlKHNuYXBzaG90KVxuICAgICAgICBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgYXdhaXQgYXBwbHlTZXNzaW9uUmVzdG9yZShzbmFwc2hvdClcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldElzUmVzdG9yaW5nU2Vzc2lvbihmYWxzZSlcbiAgICAgICAgc2V0UmVmZXRjaENoYXRzKHRydWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcnVuUmVzdG9yZSgpLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbiAgfSwgW2FwcGx5U2Vzc2lvblJlc3RvcmUsIGxvYWRBZ2VudHNGb3JTZXNzaW9uUmVzdG9yZSwgc2V0Q2hhdFZpZXdWaXNpYmxlXSlcblxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoc2hvdWxkUmVzZWxlY3RBZ2VudEFmdGVyRGVsZXRlKGFnZW50Py5pZCwgYWdlbnRJZCkpIHtcbiAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudChhZ2VudElkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50Py5pZCwgcmVtb3ZlQWdlbnQsIHNlbGVjdEZpcnN0QWdlbnRdXG4gIClcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7c2hvd1NpZGViYXIgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlU3RhcnROZXdDaGF0PXtoYW5kbGVTdGFydE5ld0NoYXR9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgYWdlbnRzTmF2QWN0aXZlPXtzaWRlYmFyQWdlbnRzTmF2QWN0aXZlfVxuICAgICAgICAgIGhhbmRsZU9wZW5Ta2lsbHM9e2hhbmRsZU9wZW5Ta2lsbHN9XG4gICAgICAgICAgb25PcGVuTWFpYWtlckNyZWF0b3I9e2hhbmRsZUdvVG9NYWlha2VyfVxuICAgICAgICAgIGlzTGVnYWN5Q29udGV4dFNlc3Npb249eyEhbGVnYWN5Q29udGV4dFNlc3Npb259XG4gICAgICAgICAgaW5pdGlhbE9wZW49e3NhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uc2lkZWJhck9wZW4gPz8gZmFsc2V9XG4gICAgICAgICAgb25PcGVuQ2hhbmdlPXtoYW5kbGVTaWRlYmFyT3BlbkNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFNDQ0FJTUNvbnRlbnQgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30+XG4gICAgICAgIDxDaGF0QUlNb2RhbEhlYWRlclxuICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgb25MYXlvdXRNb2RlQ2hhbmdlPXtoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlfVxuICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICBkcmFnZ2FibGU9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgICBvbkRyYWdFbmQ9e2hhbmRsZURyYWdFbmR9XG4gICAgICAgICAgaGFuZGxlTWluaW1pemU9e2hhbmRsZU1pbmltaXplfVxuICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgaGFzRXJyb3I9eyEhYWdlbnRFcnJvcn1cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGxvYWRpbmdNb3JlPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXthZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgaGFuZGxlUmVzZXRDaGF0PXtoYW5kbGVSZXNldENoYXR9XG4gICAgICAgICAgb25BZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICBsb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgc29ydEFnZW50c0xpc3Q9e3NvcnRBZ2VudHNMaXN0fVxuICAgICAgICAgIGlzTXlBZ2VudHNTZWN0aW9uPXtpc015QWdlbnRzU2VjdGlvbn1cbiAgICAgICAgICBpc015U2tpbGxzU2VjdGlvbj17aXNNeVNraWxsc1NlY3Rpb259XG4gICAgICAgICAgaXNNYWlha2VyU2VjdGlvbj17aXNNYWlha2VyQ3JlYXRvckhvbWV9XG4gICAgICAgICAgc2hvd0JhY2tCdXR0b249e3Nob3dCYWNrQnV0dG9ufVxuICAgICAgICAgIG9uQmFjaz17aGFuZGxlQmFja31cbiAgICAgICAgLz5cbiAgICAgICAge21haW5Db250ZW50VmlldyA9PT0gJ2Vycm9yJyA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiBtYWluQ29udGVudFZpZXcgPT09ICdjaGF0JyA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBsb2FkaW5nQWdlbnRzPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgICBteVNraWxscz17bXlTa2lsbHN9XG4gICAgICAgICAgICBzaGFyZWRTa2lsbHM9e3NoYXJlZFNraWxsc31cbiAgICAgICAgICAgIGxvYWRpbmdTa2lsbHM9e2xvYWRpbmdTa2lsbHN9XG4gICAgICAgICAgICBvbkRlbGV0ZVNraWxsPXtyZW1vdmVTa2lsbH1cbiAgICAgICAgICAgIG9uU2VhcmNoQWdlbnRzPXtzZWFyY2hDdXN0b21BZ2VudHN9XG4gICAgICAgICAgICBzZWFyY2hMb2FkaW5nQWdlbnRzPXtzZWFyY2hMb2FkaW5nfVxuICAgICAgICAgICAgYWdlbnRFcnJvcj17YWdlbnRFcnJvcn1cbiAgICAgICAgICAgIGlzUmVzdG9yaW5nU2Vzc2lvbj17aXNSZXN0b3JpbmdTZXNzaW9ufVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByb2plY3RTdW1tYXJ5Q29udGVudCBvblJlc3RhcnRTdW1tYXJ5PXtoYW5kbGVycy5ob21lfSAvPlxuICAgICAgICApfVxuICAgICAgICB7c2hvd01vZGFsRm9vdGVyICYmIChcbiAgICAgICAgICA8Q2hhdEFpTW9kYWxGb290ZXJcbiAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgIGhhbmRsZVNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgIGhhbmRsZVN0b3BHZW5lcmF0aW9uPXtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9ufVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgICAgICBjaGF0SWQ9e2luaXRpYWxDaGF0SWR9XG4gICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgIGxlZ2FjeUNvbnRleHRTZXNzaW9uPXtsZWdhY3lDb250ZXh0U2Vzc2lvbn1cbiAgICAgICAgICAgIG9uQ29udGludWVJbk5ld0NoYXQ9e2hhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdH1cbiAgICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNQ29udGVudD5cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gKFxuICAgIDxTQ0NBSU1Db250ZW50V3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfSByZWY9e2NvbnRlbnRXcmFwcGVyUmVmfT5cbiAgICAgIHttb2RhbFBhbmVsfVxuICAgIDwvU0NDQUlNQ29udGVudFdyYXBwZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIHNlbGVjdG9yICYmXG4gICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgPFNDQ0FJTVdyYXBwZXJcbiAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICBkcmFnUG9zaXRpb249e3Jlc29sdmVkRHJhZ1Bvc2l0aW9ufVxuICAgICAgICBlbGV2YXRlZD17c2hvdWxkVXNlRWxldmF0ZWRNYWlhUGFuZWwoc2VjdGlvbil9XG4gICAgICAgICRtaW5pbWl6ZWQ9e2lzTWluaW1pemVkfVxuICAgICAgPlxuICAgICAgICA8U0NDQUlNTWluaW1pemVkSGlkZSAkaGlkZGVuPXtpc01pbmltaXplZH0+XG4gICAgICAgICAgPEZsb2F0aW5nUGFuZWxNb3Rpb24gdGlsdD17dGlsdE1vdGlvbn0gZXhwYW5kZWQ9e2V4cGFuZGVkfT5cbiAgICAgICAgICAgIHtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgICA8L0Zsb2F0aW5nUGFuZWxNb3Rpb24+XG4gICAgICAgIDwvU0NDQUlNTWluaW1pemVkSGlkZT5cbiAgICAgICAge2lzTWluaW1pemVkICYmIChcbiAgICAgICAgICA8TWFpYU1pbmltaXplZFBpbGxcbiAgICAgICAgICAgIHNob3dOb3ZlbHR5RG90PXtzaG93TWluaW1pemVkTm92ZWx0eURvdH1cbiAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtoYXNBY3RpdmVTdHJlYW19XG4gICAgICAgICAgICBvblJlc3RvcmU9e2hhbmRsZVJlc3RvcmVGcm9tTWluaW1pemVkfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1BZ2VudE1vZGFsXG4gICAgICAgICAgICBhZGRBZ2VudD17YWRkQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudD17dXBkYXRlQWdlbnR9XG4gICAgICAgICAgICByZW1vdmVBZ2VudD17cmVtb3ZlQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudD17c2VsZWN0Rmlyc3RBZ2VudH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1NraWxsc0FjY2VzcyAmJiAoXG4gICAgICAgICAgPEFibVNraWxsTW9kYWwgYWRkU2tpbGw9e2FkZFNraWxsfSB1cGRhdGVTa2lsbEluTGlzdD17dXBkYXRlU2tpbGxJbkxpc3R9IHJlbW92ZVNraWxsPXtyZW1vdmVTa2lsbH0gLz5cbiAgICAgICAgKX1cbiAgICAgICAge3VzZXJIYXNTa2lsbHNBY2Nlc3MgJiYgPEFibVNraWxsR2VuZXJhdGVNb2RhbCAvPn1cbiAgICAgICAgPFNuYWNrYmFyIC8+XG4gICAgICA8L1NDQ0FJTVdyYXBwZXI+LFxuICAgICAgc2VsZWN0b3JcbiAgICApXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUNFQSxXQUFXLEVBQ1hDLE9BQU8sRUFDUEMsUUFBUSxFQUNSQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsZUFBZSxRQUVWLE9BQU87QUFDZCxPQUFPQyxRQUFRLE1BQU0sV0FBVztBQUNoQyxPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNsRSxTQUFTQyxTQUFTLFFBQVEsdUJBQXVCO0FBQ2pELFNBQVNDLHNCQUFzQixRQUFRLHVDQUF1QztBQUU5RSxTQUFTQyxhQUFhLFFBQVEsa0JBQWtCO0FBQ2hELFNBQVNDLGFBQWEsRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDcEQsU0FBU0MsT0FBTyxRQUFRLFlBQVk7QUFDcEMsU0FBU0MsWUFBWSxRQUFRLHlDQUF5QztBQUN0RSxTQUFTQyxZQUFZLFFBQVEseUNBQXlDO0FBQ3RFLFNBQVNDLGdCQUFnQixRQUFzQixpQ0FBaUM7QUFHaEYsU0FBU0MsaUJBQWlCLFFB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