@projectcor/maia-components 2.11.49-2 → 2.11.49-3

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.
@@ -39,9 +39,17 @@ import { useFaqsStore } from '../../../store/useFaqsStore';
39
39
  import { fetchMaia } from '../../../services/maia/client';
40
40
  import { mapCORLang } from '../../../lang/utils';
41
41
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
42
- import { logMaiaAccessDebug, validateMaiaFeatureAccess } from '../../../constants/maiaTaskPanelAccess';
43
42
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
44
43
  export var ID_MODAL_CHAT_AGENT = 'modals-portal-maia-chat-agent';
44
+ var validateAccessByFeature = function validateAccessByFeature(section) {
45
+ if (section === 'header' && (window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS || window.MAIA_CHAT_AI_FEATURE_ACCESS)) {
46
+ return true;
47
+ }
48
+ if ((section === 'project' || section === 'client' || section === 'task') && window.MAIA_CHAT_AI_FEATURE_ACCESS) {
49
+ return true;
50
+ }
51
+ return false;
52
+ };
45
53
  export var ChatAIModal = function ChatAIModal(_ref) {
46
54
  var _user$permissions, _user$permissions2, _user$permissions3, _agents$data;
47
55
  var handleClose = _ref.handleClose;
@@ -119,12 +127,6 @@ export var ChatAIModal = function ChatAIModal(_ref) {
119
127
  setProject = _useGlobalContext.setProject,
120
128
  bannerEntryFaq = _useGlobalContext.bannerEntryFaq,
121
129
  setTask = _useGlobalContext.setTask;
122
- useEffect(function () {
123
- var featureAccessGranted = validateMaiaFeatureAccess(section);
124
- logMaiaAccessDebug('ChatAIModal mount', user, section, {
125
- feature_access_granted: featureAccessGranted
126
- });
127
- }, [section, user]);
128
130
  var _useGetAgents = useGetAgents({
129
131
  selectAgent: selectAgent,
130
132
  section: section,
@@ -562,7 +564,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
562
564
  }, [agent === null || agent === void 0 ? void 0 : agent.id, removeAgent, selectFirstAgent]);
563
565
  var hideFooterOnMaiakerMarketplaceHome = computedCurrentOption === options.home && isMaiakerAgentSelected;
564
566
  var modalPanel = /*#__PURE__*/_jsxs(_Fragment, {
565
- children: [validateMaiaFeatureAccess(section) ? /*#__PURE__*/_jsx("div", {
567
+ children: [validateAccessByFeature(section) ? /*#__PURE__*/_jsx("div", {
566
568
  style: {
567
569
  display: isFloating ? 'none' : 'contents'
568
570
  },
@@ -603,7 +605,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
603
605
  loadMoreAgents: loadMoreAgents,
604
606
  sortAgentsList: sortAgentsList,
605
607
  hideAgentSelector: hideHeaderAgentSelector
606
- }), hasError ? /*#__PURE__*/_jsx(MAIAError, {}) : validateMaiaFeatureAccess(section) ? /*#__PURE__*/_jsx(ChatAIContent, {
608
+ }), hasError ? /*#__PURE__*/_jsx(MAIAError, {}) : validateAccessByFeature(section) ? /*#__PURE__*/_jsx(ChatAIContent, {
607
609
  currentOption: computedCurrentOption,
608
610
  handlers: _objectSpread(_objectSpread({}, handlers), {}, {
609
611
  chat: startChat,
@@ -629,7 +631,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
629
631
  onGoToMaiaker: handleGoToMaiaker
630
632
  }) : /*#__PURE__*/_jsx(ProjectSummaryContent, {
631
633
  onRestartSummary: handlers.home
632
- }), (computedCurrentOption === options.home && !!(agents !== null && agents !== void 0 && (_agents$data = agents.data) !== null && _agents$data !== void 0 && _agents$data.length) || computedCurrentOption === options.chat) && !hideFooterOnMaiakerMarketplaceHome && !hasError && !loading && validateMaiaFeatureAccess(section) && /*#__PURE__*/_jsx(ChatAiModalFooter, {
634
+ }), (computedCurrentOption === options.home && !!(agents !== null && agents !== void 0 && (_agents$data = agents.data) !== null && _agents$data !== void 0 && _agents$data.length) || computedCurrentOption === options.chat) && !hideFooterOnMaiakerMarketplaceHome && !hasError && !loading && validateAccessByFeature(section) && /*#__PURE__*/_jsx(ChatAiModalFooter, {
633
635
  agent: agent,
634
636
  handleSendMessage: handleSendMessage,
635
637
  handleStopGeneration: stopGenerationFunction,
@@ -665,4 +667,4 @@ export var ChatAIModal = function ChatAIModal(_ref) {
665
667
  }), /*#__PURE__*/_jsx(Snackbar, {})]
666
668
  }), selector);
667
669
  };
668
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIlNFQ1RJT05TIiwiU0NDQUlNQ29udGVudCIsIlNDQ0FJTUNvbnRlbnRXcmFwcGVyIiwiU0NDQUlNV3JhcHBlciIsImdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCIsIkZsb2F0aW5nUGFuZWxNb3Rpb24iLCJ1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQiLCJDaGF0QWlNb2RhbEZvb3RlciIsInZhbGlkYXRlSXNNYWlhIiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwibG9nTWFpYUFjY2Vzc0RlYnVnIiwidmFsaWRhdGVNYWlhRmVhdHVyZUFjY2VzcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJDaGF0QUlNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl91c2VyJHBlcm1pc3Npb25zMiIsIl91c2VyJHBlcm1pc3Npb25zMyIsIl9hZ2VudHMkZGF0YSIsImhhbmRsZUNsb3NlIiwidXNlciIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJoYW5kbGVDbG9zZU1vZGFsIiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJfdXNlU3RhdGUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNldFNlbmRNZXNzYWdlRnVuY3Rpb24iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiaXNTdHJlYW1pbmciLCJzZXRJc1N0cmVhbWluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJpc1dyaXRpbmciLCJzZXRJc1dyaXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwicmVmZXRjaENoYXRzIiwic2V0UmVmZXRjaENoYXRzIiwiX3VzZVN0YXRlMTUiLCJob21lIiwiX3VzZVN0YXRlMTYiLCJjdXJyZW50T3B0aW9uIiwic2V0Q3VycmVudE9wdGlvbiIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiaGFuZGxlcnMiLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwic2lkZWJhckhhc0Vycm9yIiwic2V0U2lkZWJhckhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJsYW5nIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50Iiwic2VjdGlvbiIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsImZlYXR1cmVBY2Nlc3NHcmFudGVkIiwiZmVhdHVyZV9hY2Nlc3NfZ3JhbnRlZCIsIl91c2VHZXRBZ2VudHMiLCJoYW5kbGVHb0hvbWUiLCJhZ2VudHMiLCJsb2FkaW5nIiwibG9hZGluZ01vcmUiLCJhZ2VudEVycm9yIiwiZXJyb3IiLCJoYW5kbGVHZXRBZ2VudHMiLCJsb2FkTW9yZUFnZW50cyIsImFkZEFnZW50IiwicmVtb3ZlQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzZWxlY3RGaXJzdEFnZW50Iiwic29ydEFnZW50c0xpc3QiLCJpc01BSUEiLCJ1c2VySGFzUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNyZWF0ZSIsImVkaXQiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInRlc3QiLCJuYW1lIiwibXlBZ2VudHMiLCJjaGF0Iiwic2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciIsInNob3VsZFNob3dDbGllbnRTZWxlY3RvciIsInByb2plY3RTZWxlY3RvciIsImNsaWVudFNlbGVjdG9yIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInR5cGUiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjEiLCJfdXNlU3RhdGUyMiIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiZHJhZ1Bvc2l0aW9uIiwic2V0RHJhZ1Bvc2l0aW9uIiwiX3VzZUZsb2F0aW5nUGFuZWxEcmFnIiwidGlsdE1vdGlvbiIsInN0YXJ0UG9pbnRlclRyYWNraW5nIiwic2FtcGxlUG9pbnRlck1vdmUiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJkcmFnU3RhdGVSZWYiLCJjbGFtcERyYWdQb3NpdGlvbiIsIngiLCJ5IiwiY29udGVudFdyYXBwZXIiLCJjdXJyZW50IiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsInJlY3QiLCJpbml0aWFsUG9zaXRpb24iLCJsZWZ0IiwidG9wIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJCb29sZWFuIiwiaWQiLCJmYXFUaXRsZSIsInRyaW0iLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJmaW5kIiwiYWdlbnRJdGVtIiwiYWdlbnRJZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsImhhbmRsZVJlc2V0Q2hhdCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsInN0b3AiLCJvbk1lcmdlQ3JlYXRlZEFnZW50IiwiZXZ0IiwiX3JlZjMiLCJkZXRhaWwiLCJuZXh0QWdlbnQiLCJuYXZpZ2F0ZUhvbWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uU3luY0VkaXRlZEFnZW50IiwiX3JlZjQiLCJvcGVuQ2hhdFZpZXciLCJvcGVuTmV3Q2hhdFdpdGhBZ2VudCIsIl9kZXRhaWwkcHJvamVjdCIsIl9kZXRhaWwkY2xpZW50IiwiX3JlZjUiLCJ0YXNrIiwidW5kZWZpbmVkIiwic2hvd05ld0NoYXQiLCJoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwiYSIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImFicnVwdCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsImRpc3BsYXkiLCJvbkdvVG9DaGF0Iiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiYWdlbnRzTmF2QWN0aXZlIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJyZWZzIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwic2hvd0ZhcXMiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsInRpbHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7XG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5cbmltcG9ydCB7IENoYXRBSUNvbnRlbnQgfSBmcm9tICcuLi9DaGF0QUlDb250ZW50J1xuaW1wb3J0IHsgYnVpbGRIYW5kbGVycywgb3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gJy4uL1NpZGViYXInXG5pbXBvcnQgeyB1c2VHZXRBZ2VudHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IENoYXRBSU1vZGFsSGVhZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyJ1xuaW1wb3J0IHsgU25hY2tiYXIgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvU25hY2tCYXIvU25hY2tiYXInXG5pbXBvcnQgeyBQcm9qZWN0U3VtbWFyeUNvbnRlbnQgfSBmcm9tICcuLi9Qcm9qZWN0U3VtbWFyeUNvbnRlbnQnXG5pbXBvcnQgeyBBYm1BZ2VudE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgsIE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlIH0gZnJvbSAnLi9sYXlvdXQnXG5pbXBvcnQgeyBGbG9hdGluZ1BhbmVsTW90aW9uLCB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQgfSBmcm9tICcuL2Zsb2F0aW5nUGFuZWxNb3Rpb24nXG5pbXBvcnQgeyBDaGF0QWlNb2RhbEZvb3RlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEZvb3RlcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvVGFzaydcbmltcG9ydCB7IHVzZUZhcXNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUZhcXNTdG9yZSdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBsb2dNYWlhQWNjZXNzRGVidWcsIHZhbGlkYXRlTWFpYUZlYXR1cmVBY2Nlc3MgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvbWFpYVRhc2tQYW5lbEFjY2VzcydcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICh7IGhhbmRsZUNsb3NlIH06IENoYXRBSU1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2VdKVxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICB9Pih7XG4gICAgbWVzc2FnZTogJycsXG4gICAgYXR0YWNobWVudHM6IFtdLFxuICB9KVxuICBjb25zdCBbaW5pdGlhbENoYXRJZCwgc2V0SW5pdGlhbENoYXRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbbmV3Q2hhdEtleSwgc2V0TmV3Q2hhdEtleV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbl0gPSB1c2VTdGF0ZTxcbiAgICB8ICgoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZClcbiAgICB8IG51bGxcbiAgPihudWxsKVxuICBjb25zdCBbc3RvcEdlbmVyYXRpb25GdW5jdGlvbiwgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbl0gPSB1c2VTdGF0ZTwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNTdHJlYW1pbmcsIHNldElzU3RyZWFtaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZShvcHRpb25zLmhvbWUpXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGhhbmRsZXJzID0gdXNlTWVtbygoKSA9PiBidWlsZEhhbmRsZXJzKHNldEN1cnJlbnRPcHRpb24sIHNldEhhc0Vycm9yKSwgW10pXG4gIGNvbnN0IFtzaWRlYmFySGFzRXJyb3IsIHNldFNpZGViYXJIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcmVzZXRTZWxlY3RlZENoYXRSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQtYnInIDogaTE4bi5sYW5ndWFnZVxuXG4gIG1vbWVudC5sb2NhbGUobGFuZylcblxuICBjb25zdCB7XG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2VjdGlvbixcbiAgICBhZ2VudCxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGJhbm5lckVudHJ5RmFxLFxuICAgIHNldFRhc2ssXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZlYXR1cmVBY2Nlc3NHcmFudGVkID0gdmFsaWRhdGVNYWlhRmVhdHVyZUFjY2VzcyhzZWN0aW9uKVxuICAgIGxvZ01haWFBY2Nlc3NEZWJ1ZygnQ2hhdEFJTW9kYWwgbW91bnQnLCB1c2VyLCBzZWN0aW9uLCB7XG4gICAgICBmZWF0dXJlX2FjY2Vzc19ncmFudGVkOiBmZWF0dXJlQWNjZXNzR3JhbnRlZCxcbiAgICB9KVxuICB9LCBbc2VjdGlvbiwgdXNlcl0pXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuXG4gIGNvbnN0IHVzZXJIYXNQZXJtaXNzaW9ucyA9XG4gICAgKHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmNyZWF0ZSB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZWRpdCB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZGVsZXRlKSAmJlxuICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgY29uc3QgY29tcHV0ZWRDdXJyZW50T3B0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaXNHbG9iYWxTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnXG4gICAgY29uc3QgaXNQcm9qZWN0U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT0gbnVsbClcbiAgICBjb25zdCBpc0NsaWVudFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCdcbiAgICBjb25zdCBpc01haWFrZXIgPSBpc0dsb2JhbFNwZWNpYWxpc3QgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG5cbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICB9XG5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jaGF0XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc1Byb2plY3RTcGVjaWFsaXN0ICYmICFwcm9qZWN0XG4gICAgY29uc3Qgc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzQ2xpZW50U3BlY2lhbGlzdCAmJiAhY2xpZW50XG5cbiAgICBpZiAoc2hvdWxkU2hvd1Byb2plY3RTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucHJvamVjdFNlbGVjdG9yXG4gICAgfVxuICAgIGlmIChzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNsaWVudFNlbGVjdG9yXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50T3B0aW9uXG4gIH0sIFtjdXJyZW50T3B0aW9uLCBwcm9qZWN0LCBjbGllbnQsIGlzTUFJQSwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/Lm5hbWVdKVxuXG4gIGNvbnN0IGlzTWFpYWtlckFnZW50U2VsZWN0ZWQgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBpc01BSUEgJiZcbiAgICAgIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnICYmXG4gICAgICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJlxuICAgICAgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpLFxuICAgIFtpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py50eXBlLCBhZ2VudD8ubmFtZV1cbiAgKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKCgpOiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykgcmV0dXJuICdteUFnZW50cydcbiAgICBpZiAoaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkgcmV0dXJuICdtYWlha2VyJ1xuICAgIHJldHVybiBudWxsXG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRdKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSlcbiAgICApXG4gICAgICAubGVuZ3RoXG4gIH0sIFthZ2VudHMuZGF0YV0pXG4gICovXG5cbiAgY29uc3QgYWdlbnRzRmV0Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCBzZWxlY3RvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke0lEX01PREFMX0NIQVRfQUdFTlR9YClcblxuICAvLyBFbiBzZWN0aW9uICd0YXNrJyBNYWlhIGFicmUgZW4gbW9kbyBmbG90YW50ZSBwb3IgZGVmYXVsdCAoc2UgYWJyZSBkZXNkZSBlbCB0YXNrIHBhbmVsLFxuICAvLyBubyBxdWVyZW1vcyB0YXBhcmxvIGVudGVybykuIEVsIHVzdWFyaW8gcHVlZGUgY2FtYmlhciBhIHNpZGViYXIvZnVsbHNjcmVlbiBkZXNkZSBsb3MgY29udHJvbGVzIGRlbCBtb2RhbC5cbiAgY29uc3QgW2xheW91dE1vZGUsIHNldExheW91dE1vZGVdID0gdXNlU3RhdGU8TWFpYUNoYXRNb2RhbExheW91dE1vZGU+KHNlY3Rpb24gPT09ICd0YXNrJyA/ICdmbG9hdGluZycgOiAnc2lkZWJhcicpXG4gIGNvbnN0IGV4cGFuZGVkID0gbGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXG4gIGNvbnN0IGlzRmxvYXRpbmcgPSBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbZHJhZ1Bvc2l0aW9uLCBzZXREcmFnUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcbiAgICB9LFxuICAgIFtlbmRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBkcmFnU3RhdGUgPSBkcmFnU3RhdGVSZWYuY3VycmVudFxuICAgICAgaWYgKCFkcmFnU3RhdGUgfHwgZHJhZ1N0YXRlLnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzYW1wbGVQb2ludGVyTW92ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuXG4gICAgICBjb25zdCBuZXh0UG9zaXRpb24gPSBjbGFtcERyYWdQb3NpdGlvbihldmVudC5jbGllbnRYIC0gZHJhZ1N0YXRlLm9mZnNldFgsIGV2ZW50LmNsaWVudFkgLSBkcmFnU3RhdGUub2Zmc2V0WSlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnggPT09IG5leHRQb3NpdGlvbi54ICYmIHByZXYueSA9PT0gbmV4dFBvc2l0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0UG9zaXRpb25cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIHNhbXBsZVBvaW50ZXJNb3ZlXVxuICApXG5cbiAgY29uc3QgcmVzb2x2ZWREcmFnUG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBpZiAoZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgY29uc3QgeCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZCA6IHBhZFxuICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkcmFnUG9zaXRpb24sIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Zsb2F0aW5nIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtyb2xlPVwiYnV0dG9uXCJdLCBbZGF0YS1uby1kcmFnPVwidHJ1ZVwiXScpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgaW5pdGlhbFBvc2l0aW9uID0gcmVzb2x2ZWREcmFnUG9zaXRpb24gPz8gY2xhbXBEcmFnUG9zaXRpb24ocmVjdC5sZWZ0LCByZWN0LnRvcClcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIGluaXRpYWxQb3NpdGlvbi54XG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WSA9IGV2ZW50LmNsaWVudFkgLSBpbml0aWFsUG9zaXRpb24ueVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24oaW5pdGlhbFBvc2l0aW9uKVxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIHBvaW50ZXJJZDogZXZlbnQucG9pbnRlcklkLFxuICAgICAgICBvZmZzZXRYOiBwb2ludGVyT2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogcG9pbnRlck9mZnNldFksXG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJ1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0RHJhZ2dhYmxlKVxuICAgICAgc3RhcnRQb2ludGVyVHJhY2tpbmcoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgaXNGbG9hdGluZywgcmVzb2x2ZWREcmFnUG9zaXRpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3Qgc3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCAnJyxcbiAgICAgICAgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKG1lbnRpb25zICYmIG1lbnRpb25zLmxlbmd0aCA+IDAgPyB7IG1lbnRpb25zIH0gOiB7fSksXG4gICAgICAgIC4uLihmdWFJZCA/IHsgZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgYmFubmVyRmFxQXV0b1NlbnRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbnRpdHlSZWFkeSA9IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/IEJvb2xlYW4ocHJvamVjdD8uaWQpIDogc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyBCb29sZWFuKGNsaWVudD8uaWQpIDogdHJ1ZVxuXG4gICAgaWYgKCFiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSB8fCBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50IHx8IGxvYWRpbmcgfHwgIWFnZW50Py5pZCB8fCAhZW50aXR5UmVhZHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgc3RhcnRDaGF0KGJhbm5lckVudHJ5RmFxLmZhcVRpdGxlLCBbXSwgYmFubmVyRW50cnlGYXEuZmFxSWQpXG4gIH0sIFtcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxSWQsXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlLFxuICAgIGxvYWRpbmcsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGFnZW50Py5lbnRpdHksXG4gICAgcHJvamVjdD8uaWQsXG4gICAgY2xpZW50Py5pZCxcbiAgICBzZWN0aW9uLFxuICAgIHN0YXJ0Q2hhdCxcbiAgXSlcblxuICBjb25zdCBnb1RvQ2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChjaGF0OiBhbnkpID0+IHtcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICAgIGNvbnN0IHNlbGVjdGVkQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKGFnZW50SXRlbSA9PiBhZ2VudEl0ZW0uaWQgPT09IGNoYXQuYWdlbnRJZClcbiAgICAgIGlmIChzZWxlY3RlZEFnZW50KSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHNlbGVjdGVkQWdlbnQpXG4gICAgICB9XG4gICAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIGFnZW50cywgc2VsZWN0QWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZVJlYWR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgc2VuZE1lc3NhZ2U6IChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc3RhcnRDaGF0LCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdvSG9tZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBTaSBlc3RhbW9zIGVuIHVuYSBjb252ZXJzYWNpw7NuIHkgdmFtb3MgYSBob21lLCByZXNldGVhciBpbml0aWFsQ2hhdElkIHkgaW5jcmVtZW50YXIgbmV3Q2hhdEtleVxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIC8vIE5vIGJvcnJhciBlbCBjbGllbnRlIHNpIGVzIGFnZW50ZSBkZSBjbGllbnRlcyAoaWd1YWwgcXVlIGVsIHByb3llY3RvIHNlIG1hbnRpZW5lKVxuICAgICAgaWYgKGFnZW50Py5lbnRpdHkgIT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0Q2xpZW50LFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGhhbmRsZUdldEFnZW50cygpXG4gICAgfVxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuICBjb25zdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGE6IEFnZW50KSA9PiBhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3RdKVxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVNYWlhRmVhdHVyZUFjY2VzcyhzZWN0aW9uKSA/IChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBpc0Zsb2F0aW5nID8gJ25vbmUnIDogJ2NvbnRlbnRzJyB9fSBhcmlhLWhpZGRlbj17aXNGbG9hdGluZ30+XG4gICAgICAgICAgPFNpZGViYXJcbiAgICAgICAgICAgIG9uR29Ub0NoYXQ9e2dvVG9DaGF0fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgaGFuZGxlR29Ub0hvbWU9e2hhbmRsZUdvSG9tZX1cbiAgICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZT17aGFuZGxlT3Blbk1hcmtldHBsYWNlfVxuICAgICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgICAgcmVmZXRjaENoYXRzPXtyZWZldGNoQ2hhdHN9XG4gICAgICAgICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHM9e3NldFJlZmV0Y2hDaGF0c31cbiAgICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZj17cmVzZXRTZWxlY3RlZENoYXRSZWZ9XG4gICAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU9e3NpZGViYXJBZ2VudHNOYXZBY3RpdmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTQ0NBSU1Db250ZW50IGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9PlxuICAgICAgICA8Q2hhdEFJTW9kYWxIZWFkZXJcbiAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZT17c2V0TGF5b3V0TW9kZX1cbiAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgZHJhZ2dhYmxlPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgb25EcmFnTW92ZT17aGFuZGxlRHJhZ01vdmV9XG4gICAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgaGFzRXJyb3I9eyEhYWdlbnRFcnJvcn1cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGxvYWRpbmdNb3JlPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXthZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgaGFuZGxlUmVzZXRDaGF0PXtoYW5kbGVSZXNldENoYXR9XG4gICAgICAgICAgb25BZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICBsb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgc29ydEFnZW50c0xpc3Q9e3NvcnRBZ2VudHNMaXN0fVxuICAgICAgICAgIGhpZGVBZ2VudFNlbGVjdG9yPXtoaWRlSGVhZGVyQWdlbnRTZWxlY3Rvcn1cbiAgICAgICAgLz5cbiAgICAgICAge2hhc0Vycm9yID8gKFxuICAgICAgICAgIDxNQUlBRXJyb3IgLz5cbiAgICAgICAgKSA6IHZhbGlkYXRlTWFpYUZlYXR1cmVBY2Nlc3Moc2VjdGlvbikgPyAoXG4gICAgICAgICAgPENoYXRBSUNvbnRlbnRcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb249e2NvbXB1dGVkQ3VycmVudE9wdGlvbn1cbiAgICAgICAgICAgIGhhbmRsZXJzPXt7IC4uLmhhbmRsZXJzLCBjaGF0OiBzdGFydENoYXQsIGhvbWU6IGhhbmRsZXJzLmhvbWUsIGhhbmRsZUdvSG9tZSB9fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICByZWZzPXt7IHVzZXJJbml0aWFsTWVzc2FnZSwgaW5pdGlhbENoYXRJZCB9fVxuICAgICAgICAgICAgb25TZW5kTWVzc2FnZVJlYWR5PXtoYW5kbGVTZW5kTWVzc2FnZVJlYWR5fVxuICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgZmxvYXRpbmc9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UHJvamVjdFN1bW1hcnlDb250ZW50IG9uUmVzdGFydFN1bW1hcnk9e2hhbmRsZXJzLmhvbWV9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHsoKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmICEhYWdlbnRzPy5kYXRhPy5sZW5ndGgpIHx8XG4gICAgICAgICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpICYmXG4gICAgICAgICAgIWhpZGVGb290ZXJPbk1haWFrZXJNYXJrZXRwbGFjZUhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlTWFpYUZlYXR1cmVBY2Nlc3Moc2VjdGlvbikgJiYgKFxuICAgICAgICAgICAgPENoYXRBaU1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICBoYW5kbGVTdG9wR2VuZXJhdGlvbj17c3RvcEdlbmVyYXRpb25GdW5jdGlvbn1cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgICAgY2hhdElkPXtpbml0aWFsQ2hhdElkfVxuICAgICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgICBzaG93RmFxcz17Y29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8L1NDQ0FJTUNvbnRlbnQ+XG4gICAgPC8+XG4gIClcblxuICBjb25zdCBjb250ZW50V3JhcHBlciA9IChcbiAgICA8U0NDQUlNQ29udGVudFdyYXBwZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30gcmVmPXtjb250ZW50V3JhcHBlclJlZn0+XG4gICAgICB7bW9kYWxQYW5lbH1cbiAgICA8L1NDQ0FJTUNvbnRlbnRXcmFwcGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICBzZWxlY3RvciAmJlxuICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0NBSU1XcmFwcGVyXG4gICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgZHJhZ1Bvc2l0aW9uPXtyZXNvbHZlZERyYWdQb3NpdGlvbn1cbiAgICAgICAgZWxldmF0ZWQ9e3NlY3Rpb24gPT09ICd0YXNrJ31cbiAgICAgID5cbiAgICAgICAgPEZsb2F0aW5nUGFuZWxNb3Rpb24gdGlsdD17dGlsdE1vdGlvbn0gZXhwYW5kZWQ9e2V4cGFuZGVkfT5cbiAgICAgICAgICB7Y29udGVudFdyYXBwZXJ9XG4gICAgICAgIDwvRmxvYXRpbmdQYW5lbE1vdGlvbj5cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiAoXG4gICAgICAgICAgPEFibUFnZW50TW9kYWxcbiAgICAgICAgICAgIGFkZEFnZW50PXthZGRBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50PXt1cGRhdGVBZ2VudH1cbiAgICAgICAgICAgIHJlbW92ZUFnZW50PXtyZW1vdmVBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBzZWxlY3RGaXJzdEFnZW50PXtzZWxlY3RGaXJzdEFnZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxTbmFja2JhciAvPlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyPixcbiAgICAgIHNlbGVjdG9yXG4gICAgKVxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FFRUEs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
670
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIlNFQ1RJT05TIiwiU0NDQUlNQ29udGVudCIsIlNDQ0FJTUNvbnRlbnRXcmFwcGVyIiwiU0NDQUlNV3JhcHBlciIsImdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCIsIkZsb2F0aW5nUGFuZWxNb3Rpb24iLCJ1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQiLCJDaGF0QWlNb2RhbEZvb3RlciIsInZhbGlkYXRlSXNNYWlhIiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiSURfTU9EQUxfQ0hBVF9BR0VOVCIsInZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlIiwic2VjdGlvbiIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJDaGF0QUlNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl91c2VyJHBlcm1pc3Npb25zMiIsIl91c2VyJHBlcm1pc3Npb25zMyIsIl9hZ2VudHMkZGF0YSIsImhhbmRsZUNsb3NlIiwidXNlciIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJoYW5kbGVDbG9zZU1vZGFsIiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJfdXNlU3RhdGUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNldFNlbmRNZXNzYWdlRnVuY3Rpb24iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiaXNTdHJlYW1pbmciLCJzZXRJc1N0cmVhbWluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJpc1dyaXRpbmciLCJzZXRJc1dyaXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwicmVmZXRjaENoYXRzIiwic2V0UmVmZXRjaENoYXRzIiwiX3VzZVN0YXRlMTUiLCJob21lIiwiX3VzZVN0YXRlMTYiLCJjdXJyZW50T3B0aW9uIiwic2V0Q3VycmVudE9wdGlvbiIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiaGFuZGxlcnMiLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwic2lkZWJhckhhc0Vycm9yIiwic2V0U2lkZWJhckhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJsYW5nIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50IiwiYWdlbnQiLCJwcm9qZWN0IiwiY2xpZW50IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0IiwiYmFubmVyRW50cnlGYXEiLCJzZXRUYXNrIiwiX3VzZUdldEFnZW50cyIsImhhbmRsZUdvSG9tZSIsImFnZW50cyIsImxvYWRpbmciLCJsb2FkaW5nTW9yZSIsImFnZW50RXJyb3IiLCJlcnJvciIsImhhbmRsZUdldEFnZW50cyIsImxvYWRNb3JlQWdlbnRzIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsImlzTUFJQSIsInVzZXJIYXNQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY3JlYXRlIiwiZWRpdCIsImNvbXB1dGVkQ3VycmVudE9wdGlvbiIsImlzR2xvYmFsU3BlY2lhbGlzdCIsImVudGl0eSIsImlzUHJvamVjdFNwZWNpYWxpc3QiLCJpc0NsaWVudFNwZWNpYWxpc3QiLCJpc01haWFrZXIiLCJ0ZXN0IiwibmFtZSIsIm15QWdlbnRzIiwiY2hhdCIsInNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IiLCJzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IiLCJwcm9qZWN0U2VsZWN0b3IiLCJjbGllbnRTZWxlY3RvciIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJ0eXBlIiwic2lkZWJhckFnZW50c05hdkFjdGl2ZSIsImFnZW50c0ZldGNoZWRSZWYiLCJzZWxlY3RvciIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImNvbmNhdCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJsYXlvdXRNb2RlIiwic2V0TGF5b3V0TW9kZSIsImV4cGFuZGVkIiwiaXNGbG9hdGluZyIsImNvbnRlbnRXcmFwcGVyUmVmIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsImRyYWdQb3NpdGlvbiIsInNldERyYWdQb3NpdGlvbiIsIl91c2VGbG9hdGluZ1BhbmVsRHJhZyIsInRpbHRNb3Rpb24iLCJzdGFydFBvaW50ZXJUcmFja2luZyIsInNhbXBsZVBvaW50ZXJNb3ZlIiwiZW5kUG9pbnRlclRyYWNraW5nIiwiZHJhZ1N0YXRlUmVmIiwiY2xhbXBEcmFnUG9zaXRpb24iLCJ4IiwieSIsImNvbnRlbnRXcmFwcGVyIiwiY3VycmVudCIsIl9jb250ZW50V3JhcHBlciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwibWF4WCIsIk1hdGgiLCJtYXgiLCJpbm5lcldpZHRoIiwibWF4WSIsImlubmVySGVpZ2h0IiwibWluIiwicHJldiIsInBhZCIsImhhbmRsZURyYWdFbmQiLCJldmVudCIsIl9kcmFnU3RhdGVSZWYkY3VycmVudCIsInBvaW50ZXJJZCIsImJvZHkiLCJzdHlsZSIsInVzZXJTZWxlY3QiLCJjdXJzb3IiLCJoYW5kbGVEcmFnTW92ZSIsImRyYWdTdGF0ZSIsImNsaWVudFgiLCJjbGllbnRZIiwibmV4dFBvc2l0aW9uIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJyZXNvbHZlZERyYWdQb3NpdGlvbiIsImhhbmRsZURyYWdTdGFydCIsImJ1dHRvbiIsInRhcmdldCIsImNsb3Nlc3QiLCJyZWN0IiwiaW5pdGlhbFBvc2l0aW9uIiwibGVmdCIsInRvcCIsInBvaW50ZXJPZmZzZXRYIiwicG9pbnRlck9mZnNldFkiLCJjdXJyZW50VGFyZ2V0Iiwic2V0UG9pbnRlckNhcHR1cmUiLCJwcmV2ZW50RGVmYXVsdCIsImFpQ2hhdERyYWdnYWJsZSIsInN0YXJ0Q2hhdCIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsIl9vYmplY3RTcHJlYWQiLCJsZW5ndGgiLCJiYW5uZXJGYXFBdXRvU2VudFJlZiIsIl9iYW5uZXJFbnRyeUZhcSRmYXFUaSIsImVudGl0eVJlYWR5IiwiQm9vbGVhbiIsImlkIiwiZmFxVGl0bGUiLCJ0cmltIiwiZ29Ub0NoYXQiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsInNlbGVjdGVkQWdlbnQiLCJkYXRhIiwiZmluZCIsImFnZW50SXRlbSIsImFnZW50SWQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJoYW5kbGVTZW5kTWVzc2FnZVJlYWR5Iiwic2VuZE1lc3NhZ2UiLCJzdG9wR2VuZXJhdGlvbiIsInN0cmVhbWluZyIsIndyaXRpbmciLCJoYW5kbGVTZW5kTWVzc2FnZSIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJwcm9qZWN0X2RlbGV0ZWQiLCJoYW5kbGVSZXNldENoYXQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJzdG9wIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwiZGV0YWlsIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblN5bmNFZGl0ZWRBZ2VudCIsIl9yZWY0Iiwib3BlbkNoYXRWaWV3Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9yZWY1IiwidGFzayIsInVuZGVmaW5lZCIsInNob3dOZXdDaGF0IiwiaGlkZUhlYWRlckFnZW50U2VsZWN0b3IiLCJoYW5kbGVPcGVuTWFya2V0cGxhY2UiLCJoYW5kbGVHb1RvTWFpYWtlciIsIl9jYWxsZWUyIiwibWFpYWtlckFnZW50IiwicmVzcG9uc2UiLCJfdCIsIl9jb250ZXh0MiIsImEiLCJwYXRoIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJhYnJ1cHQiLCJoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyIsImhpZGVGb290ZXJPbk1haWFrZXJNYXJrZXRwbGFjZUhvbWUiLCJtb2RhbFBhbmVsIiwiY2hpbGRyZW4iLCJkaXNwbGF5Iiwib25Hb1RvQ2hhdCIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImFnZW50c05hdkFjdGl2ZSIsImZsb2F0aW5nIiwib25MYXlvdXRNb2RlQ2hhbmdlIiwiZHJhZ2dhYmxlIiwib25EcmFnU3RhcnQiLCJvbkRyYWdNb3ZlIiwib25EcmFnRW5kIiwiaGFzTW9yZSIsImhhc19tb3JlIiwib25BZ2VudFVwZGF0ZSIsImhpZGVBZ2VudFNlbGVjdG9yIiwicmVmcyIsIm9uU2VuZE1lc3NhZ2VSZWFkeSIsIm9uRGVsZXRlQWdlbnQiLCJvbkZhdm9yaXRlQWdlbnRVcGRhdGUiLCJoYXNNb3JlQWdlbnRzIiwibG9hZGluZ01vcmVBZ2VudHMiLCJvbkxvYWRNb3JlQWdlbnRzIiwib25Hb1RvTWFpYWtlciIsIm9uUmVzdGFydFN1bW1hcnkiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsInNob3dGYXFzIiwicmVmIiwiY3JlYXRlUG9ydGFsIiwiZWxldmF0ZWQiLCJ0aWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL0NoYXRBSU1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQge1xuICBSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgTUFJQUVycm9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQUVycm9yJ1xuXG5pbXBvcnQgeyBDaGF0QUlDb250ZW50IH0gZnJvbSAnLi4vQ2hhdEFJQ29udGVudCdcbmltcG9ydCB7IGJ1aWxkSGFuZGxlcnMsIG9wdGlvbnMgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICcuLi9TaWRlYmFyJ1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBDaGF0QUlNb2RhbEhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlcidcbmltcG9ydCB7IFNuYWNrYmFyIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL1NuYWNrQmFyL1NuYWNrYmFyJ1xuaW1wb3J0IHsgUHJvamVjdFN1bW1hcnlDb250ZW50IH0gZnJvbSAnLi4vUHJvamVjdFN1bW1hcnlDb250ZW50J1xuaW1wb3J0IHsgQWJtQWdlbnRNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBTQ0NBSU1Db250ZW50LCBTQ0NBSU1Db250ZW50V3JhcHBlciwgU0NDQUlNV3JhcHBlciB9IGZyb20gJy4vQ2hhdEFJTW9kYWwuc3R5bGVzJ1xuaW1wb3J0IHsgZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4LCBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSB9IGZyb20gJy4vbGF5b3V0J1xuaW1wb3J0IHsgRmxvYXRpbmdQYW5lbE1vdGlvbiwgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IH0gZnJvbSAnLi9mbG9hdGluZ1BhbmVsTW90aW9uJ1xuaW1wb3J0IHsgQ2hhdEFpTW9kYWxGb290ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxGb290ZXInXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgeyB1c2VGYXFzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VGYXFzU3RvcmUnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuXG50eXBlIENoYXRBSU1vZGFsUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBoYW5kbGVDbG9zZT86ICgpID0+IHZvaWRcbiAgcGFyZW50UmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PlxufVxuXG5leHBvcnQgY29uc3QgSURfTU9EQUxfQ0hBVF9BR0VOVCA9ICdtb2RhbHMtcG9ydGFsLW1haWEtY2hhdC1hZ2VudCdcblxuY29uc3QgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUgPSAoc2VjdGlvbjogc3RyaW5nKSA9PiB7XG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJyAmJiAod2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUykpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIGlmICgoc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IHNlY3Rpb24gPT09ICdjbGllbnQnIHx8IHNlY3Rpb24gPT09ICd0YXNrJykgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICh7IGhhbmRsZUNsb3NlIH06IENoYXRBSU1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2VdKVxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICB9Pih7XG4gICAgbWVzc2FnZTogJycsXG4gICAgYXR0YWNobWVudHM6IFtdLFxuICB9KVxuICBjb25zdCBbaW5pdGlhbENoYXRJZCwgc2V0SW5pdGlhbENoYXRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbbmV3Q2hhdEtleSwgc2V0TmV3Q2hhdEtleV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbl0gPSB1c2VTdGF0ZTxcbiAgICB8ICgoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZClcbiAgICB8IG51bGxcbiAgPihudWxsKVxuICBjb25zdCBbc3RvcEdlbmVyYXRpb25GdW5jdGlvbiwgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbl0gPSB1c2VTdGF0ZTwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNTdHJlYW1pbmcsIHNldElzU3RyZWFtaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZShvcHRpb25zLmhvbWUpXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGhhbmRsZXJzID0gdXNlTWVtbygoKSA9PiBidWlsZEhhbmRsZXJzKHNldEN1cnJlbnRPcHRpb24sIHNldEhhc0Vycm9yKSwgW10pXG4gIGNvbnN0IFtzaWRlYmFySGFzRXJyb3IsIHNldFNpZGViYXJIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcmVzZXRTZWxlY3RlZENoYXRSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQtYnInIDogaTE4bi5sYW5ndWFnZVxuXG4gIG1vbWVudC5sb2NhbGUobGFuZylcblxuICBjb25zdCB7XG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2VjdGlvbixcbiAgICBhZ2VudCxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGJhbm5lckVudHJ5RmFxLFxuICAgIHNldFRhc2ssXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICBjb25zdCB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3I6IGFnZW50RXJyb3IsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfSA9IHVzZUdldEFnZW50cyh7IHNlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgaGFuZGxlR29Ib21lOiBoYW5kbGVycy5ob21lIH0pXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID1cbiAgICAodXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5lZGl0IHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5kZWxldGUpICYmXG4gICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICBjb25zdCBjb21wdXRlZEN1cnJlbnRPcHRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpc0dsb2JhbFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCdcbiAgICBjb25zdCBpc1Byb2plY3RTcGVjaWFsaXN0ID0gaXNNQUlBICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PSBudWxsKVxuICAgIGNvbnN0IGlzQ2xpZW50U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50J1xuICAgIGNvbnN0IGlzTWFpYWtlciA9IGlzR2xvYmFsU3BlY2lhbGlzdCAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJylcblxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5teUFnZW50c1xuICAgIH1cblxuICAgIGlmIChpc0dsb2JhbFNwZWNpYWxpc3QgJiYgIWlzTWFpYWtlciAmJiBjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNoYXRcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzUHJvamVjdFNwZWNpYWxpc3QgJiYgIXByb2plY3RcbiAgICBjb25zdCBzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNDbGllbnRTcGVjaWFsaXN0ICYmICFjbGllbnRcblxuICAgIGlmIChzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5wcm9qZWN0U2VsZWN0b3JcbiAgICB9XG4gICAgaWYgKHNob3VsZFNob3dDbGllbnRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2xpZW50U2VsZWN0b3JcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRPcHRpb25cbiAgfSwgW2N1cnJlbnRPcHRpb24sIHByb2plY3QsIGNsaWVudCwgaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8ubmFtZV0pXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGlzTUFJQSAmJlxuICAgICAgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcgJiZcbiAgICAgIGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmXG4gICAgICAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJyksXG4gICAgW2lzTUFJQSwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/LnR5cGUsIGFnZW50Py5uYW1lXVxuICApXG5cbiAgY29uc3Qgc2lkZWJhckFnZW50c05hdkFjdGl2ZSA9IHVzZU1lbW8oKCk6ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCBudWxsID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzKSByZXR1cm4gJ215QWdlbnRzJ1xuICAgIGlmIChpc01haWFrZXJBZ2VudFNlbGVjdGVkKSByZXR1cm4gJ21haWFrZXInXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZF0pXG5cbiAgLyogUmVhY3RpdmFyIGNvbiBsYSBmaWxhIOKAnE1pcyBhZ2VudGVz4oCdIGVuIFNpZGViYXI6IG15QWdlbnRzQ291bnQgcHJvcFxuICBjb25zdCBzaWRlYmFyTXlBZ2VudHNDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBhZ2VudHMuZGF0YS5maWx0ZXIoXG4gICAgICBhID0+ICEoYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhLm5hbWUgfHwgJycpKVxuICAgIClcbiAgICAgIC5sZW5ndGhcbiAgfSwgW2FnZW50cy5kYXRhXSlcbiAgKi9cblxuICBjb25zdCBhZ2VudHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IHNlbGVjdG9yID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7SURfTU9EQUxfQ0hBVF9BR0VOVH1gKVxuXG4gIC8vIEVuIHNlY3Rpb24gJ3Rhc2snIE1haWEgYWJyZSBlbiBtb2RvIGZsb3RhbnRlIHBvciBkZWZhdWx0IChzZSBhYnJlIGRlc2RlIGVsIHRhc2sgcGFuZWwsXG4gIC8vIG5vIHF1ZXJlbW9zIHRhcGFybG8gZW50ZXJvKS4gRWwgdXN1YXJpbyBwdWVkZSBjYW1iaWFyIGEgc2lkZWJhci9mdWxsc2NyZWVuIGRlc2RlIGxvcyBjb250cm9sZXMgZGVsIG1vZGFsLlxuICBjb25zdCBbbGF5b3V0TW9kZSwgc2V0TGF5b3V0TW9kZV0gPSB1c2VTdGF0ZTxNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZT4oc2VjdGlvbiA9PT0gJ3Rhc2snID8gJ2Zsb2F0aW5nJyA6ICdzaWRlYmFyJylcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihudWxsKVxuICBjb25zdCB7IHRpbHRNb3Rpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nLCBzYW1wbGVQb2ludGVyTW92ZSwgZW5kUG9pbnRlclRyYWNraW5nIH0gPVxuICAgIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdChpc0Zsb2F0aW5nKVxuICBjb25zdCBkcmFnU3RhdGVSZWYgPSB1c2VSZWY8e1xuICAgIHBvaW50ZXJJZDogbnVtYmVyXG4gICAgb2Zmc2V0WDogbnVtYmVyXG4gICAgb2Zmc2V0WTogbnVtYmVyXG4gIH0gfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGNsYW1wRHJhZ1Bvc2l0aW9uID0gdXNlQ2FsbGJhY2soKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgcmV0dXJuIHsgeCwgeSB9XG4gICAgfVxuXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IG9mZnNldCA9IDE2XG4gICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVyV2lkdGggLSB3aWR0aCAtIG9mZnNldClcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJIZWlnaHQgLSBoZWlnaHQgLSBvZmZzZXQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogTWF0aC5taW4oTWF0aC5tYXgoeCwgb2Zmc2V0KSwgbWF4WCksXG4gICAgICB5OiBNYXRoLm1pbihNYXRoLm1heCh5LCBvZmZzZXQpLCBtYXhZKSxcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHNldERyYWdQb3NpdGlvbihudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHByZXYueCwgcHJldi55KVxuICAgICAgfVxuICAgICAgY29uc3QgcGFkID0gMTZcbiAgICAgIGNvbnN0IHggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkXG4gICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICAgIH0pXG4gIH0sIFtsYXlvdXRNb2RlLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBlbmRQb2ludGVyVHJhY2tpbmcoKVxuICAgICAgaWYgKGRyYWdTdGF0ZVJlZi5jdXJyZW50Py5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnJ1xuICAgIH0sXG4gICAgW2VuZFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdTdGF0ZSA9IGRyYWdTdGF0ZVJlZi5jdXJyZW50XG4gICAgICBpZiAoIWRyYWdTdGF0ZSB8fCBkcmFnU3RhdGUucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNhbXBsZVBvaW50ZXJNb3ZlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG5cbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IGNsYW1wRHJhZ1Bvc2l0aW9uKGV2ZW50LmNsaWVudFggLSBkcmFnU3RhdGUub2Zmc2V0WCwgZXZlbnQuY2xpZW50WSAtIGRyYWdTdGF0ZS5vZmZzZXRZKVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiB7XG4gICAgICAgIGlmIChwcmV2ICYmIHByZXYueCA9PT0gbmV4dFBvc2l0aW9uLnggJiYgcHJldi55ID09PSBuZXh0UG9zaXRpb24ueSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHRQb3NpdGlvblxuICAgICAgfSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgc2FtcGxlUG9pbnRlck1vdmVdXG4gIClcblxuICBjb25zdCByZXNvbHZlZERyYWdQb3NpdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGlmIChkcmFnUG9zaXRpb24pIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgY29uc3QgcGFkID0gMTZcbiAgICBjb25zdCB4ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkIDogcGFkXG4gICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgfSwgW2xheW91dE1vZGUsIGRyYWdQb3NpdGlvbiwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoIWlzRmxvYXRpbmcgfHwgZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnRcbiAgICAgIGlmICh0YXJnZXQuY2xvc2VzdCgnYnV0dG9uLCBhLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW3JvbGU9XCJidXR0b25cIl0sIFtkYXRhLW5vLWRyYWc9XCJ0cnVlXCJdJykpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVjdCA9IGNvbnRlbnRXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBpbml0aWFsUG9zaXRpb24gPSByZXNvbHZlZERyYWdQb3NpdGlvbiA/PyBjbGFtcERyYWdQb3NpdGlvbihyZWN0LmxlZnQsIHJlY3QudG9wKVxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFggPSBldmVudC5jbGllbnRYIC0gaW5pdGlhbFBvc2l0aW9uLnhcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRZID0gZXZlbnQuY2xpZW50WSAtIGluaXRpYWxQb3NpdGlvbi55XG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihpbml0aWFsUG9zaXRpb24pXG4gICAgICBkcmFnU3RhdGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgcG9pbnRlcklkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgIG9mZnNldFg6IHBvaW50ZXJPZmZzZXRYLFxuICAgICAgICBvZmZzZXRZOiBwb2ludGVyT2Zmc2V0WSxcbiAgICAgIH1cblxuICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICdub25lJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnZ3JhYmJpbmcnXG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXREcmFnZ2FibGUpXG4gICAgICBzdGFydFBvaW50ZXJUcmFja2luZyhldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBpc0Zsb2F0aW5nLCByZXNvbHZlZERyYWdQb3NpdGlvbiwgc3RhcnRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBzdGFydENoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2Uoe1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMgfHwgW10sXG4gICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4obWVudGlvbnMgJiYgbWVudGlvbnMubGVuZ3RoID4gMCA/IHsgbWVudGlvbnMgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4oc2NJZCA/IHsgc2NJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBiYW5uZXJGYXFBdXRvU2VudFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVudGl0eVJlYWR5ID0gc2VjdGlvbiA9PT0gJ3Byb2plY3QnID8gQm9vbGVhbihwcm9qZWN0Py5pZCkgOiBzZWN0aW9uID09PSAnY2xpZW50JyA/IEJvb2xlYW4oY2xpZW50Py5pZCkgOiB0cnVlXG5cbiAgICBpZiAoIWJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZT8udHJpbSgpIHx8IGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgfHwgbG9hZGluZyB8fCAhYWdlbnQ/LmlkIHx8ICFlbnRpdHlSZWFkeSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IHRydWVcbiAgICBzdGFydENoYXQoYmFubmVyRW50cnlGYXEuZmFxVGl0bGUsIFtdLCBiYW5uZXJFbnRyeUZhcS5mYXFJZClcbiAgfSwgW1xuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFJZCxcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGUsXG4gICAgbG9hZGluZyxcbiAgICBhZ2VudD8uaWQsXG4gICAgYWdlbnQ/LmVudGl0eSxcbiAgICBwcm9qZWN0Py5pZCxcbiAgICBjbGllbnQ/LmlkLFxuICAgIHNlY3Rpb24sXG4gICAgc3RhcnRDaGF0LFxuICBdKVxuXG4gIGNvbnN0IGdvVG9DaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgICAgY29uc3Qgc2VsZWN0ZWRBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5pZCA9PT0gY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlUmVhZHkgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQsXG4gICAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICAgIHN0cmVhbWluZzogYm9vbGVhbixcbiAgICAgIHdyaXRpbmc6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIHNldFNlbmRNZXNzYWdlRnVuY3Rpb24oKCkgPT4gc2VuZE1lc3NhZ2UpXG4gICAgICBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uKCgpID0+IHN0b3BHZW5lcmF0aW9uKVxuICAgICAgc2V0SXNTdHJlYW1pbmcoc3RyZWFtaW5nKVxuICAgICAgc2V0SXNXcml0aW5nKHdyaXRpbmcpXG4gICAgfSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChzZW5kTWVzc2FnZUZ1bmN0aW9uICYmIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICAgIHNlbmRNZXNzYWdlRnVuY3Rpb24obWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzdGFydENoYXQsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgaGFuZGxlR29Ib21lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFNpIGVzdGFtb3MgZW4gdW5hIGNvbnZlcnNhY2nDs24geSB2YW1vcyBhIGhvbWUsIHJlc2V0ZWFyIGluaXRpYWxDaGF0SWQgeSBpbmNyZW1lbnRhciBuZXdDaGF0S2V5XG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgKCFhZ2VudCB8fCBhZ2VudD8uaXNfZGVsZXRlZCB8fCBhZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fCBhZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHwgYWdlbnQ/LnByb2plY3RfZGVsZXRlZCkgJiZcbiAgICAgIGFnZW50cy5kYXRhLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50cy5kYXRhWzBdKVxuICAgIH1cbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFtcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgb3B0aW9ucy5jaGF0LFxuICAgIGN1cnJlbnRPcHRpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGFnZW50LFxuICAgIGFnZW50cyxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZXRDbGllbnQsXG4gIF0pXG5cbiAgY29uc3QgaGFuZGxlUmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgaGFuZGxlR29Ib21lKClcbiAgfSwgW2hhbmRsZUdvSG9tZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaGFuZGxlR2V0QWdlbnRzKClcbiAgICB9XG4gIH0sIFtoYW5kbGVHZXRBZ2VudHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25NZXJnZUNyZWF0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKG5leHRBZ2VudD8uaWQpIHtcbiAgICAgICAgYWRkQWdlbnQobmV4dEFnZW50LCB7IG5hdmlnYXRlSG9tZTogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW2FkZEFnZW50XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU3luY0VkaXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAoIW5leHRBZ2VudD8uaWQpIHJldHVyblxuICAgICAgdXBkYXRlQWdlbnQobmV4dEFnZW50KVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gbmV4dEFnZW50LmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFt1cGRhdGVBZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50Py5pZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuQ2hhdFZpZXcgPSAoKSA9PiB7XG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5jaGF0KVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIENoYXRBSU15QWdlbnRzLmhhbmRsZVVzZUFnZW50ICsgb25CYWNrIChoYW5kbGVycy5ob21lKS5cbiAgICogIEVsIGRldGFpbCBwdWVkZSB0cmFlciBvcGNpb25hbG1lbnRlIGBwcm9qZWN0YCwgYGNsaWVudGAsIGB0YXNrYCBwYXJhIGZsb3dzIHF1ZVxuICAgKiAgbmVjZXNpdGFuIHByZXNlcnZhciBjb250ZXh0byAoZWouIHNlbGVjdG9yIGRlIGFnZW50ZXMgZGVzZGUgdW5hIHRhcmVhKS4gU2kgbm8gdmllbmVuLFxuICAgKiAgc2UgbWFudGllbmUgZWwgY29tcG9ydGFtaWVudG8gb3JpZ2luYWwgZGUgbGltcGlhciBwcm9qZWN0L2NsaWVudC4gKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuTmV3Q2hhdFdpdGhBZ2VudCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDx7XG4gICAgICAgIGFnZW50OiBBZ2VudFxuICAgICAgICBwcm9qZWN0PzogUHJvamVjdCB8IG51bGxcbiAgICAgICAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICAgICAgICB0YXNrPzogVGFzayB8IG51bGxcbiAgICAgIH0+XG4gICAgICBjb25zdCBuZXh0QWdlbnQgPSBkZXRhaWw/LmFnZW50XG4gICAgICBpZiAoIW5leHRBZ2VudCkgcmV0dXJuXG5cbiAgICAgIHNldFByb2plY3QoZGV0YWlsPy5wcm9qZWN0ID8/IG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihkZXRhaWw/LmNsaWVudCA/PyBudWxsKVxuICAgICAgaWYgKGRldGFpbD8udGFzayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNldFRhc2s/LihkZXRhaWwudGFzaylcbiAgICAgIH1cbiAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICB9XG4gIH0sIFtzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXSlcblxuICBjb25zdCBzaG93TmV3Q2hhdCA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGhpZGVIZWFkZXJBZ2VudFNlbGVjdG9yID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlBZ2VudHMpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJylcbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFthZ2VudHMuZGF0YSwgaTE4bi5sYW5ndWFnZSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdF0pXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmVtb3ZlQWdlbnQoYWdlbnRJZClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IGFnZW50SWQpIHtcbiAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudChhZ2VudElkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50Py5pZCwgcmVtb3ZlQWdlbnQsIHNlbGVjdEZpcnN0QWdlbnRdXG4gIClcblxuICBjb25zdCBoaWRlRm9vdGVyT25NYWlha2VyTWFya2V0cGxhY2VIb21lID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaXNNYWlha2VyQWdlbnRTZWxlY3RlZFxuXG4gIGNvbnN0IG1vZGFsUGFuZWwgPSAoXG4gICAgPD5cbiAgICAgIHt2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSA/IChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBpc0Zsb2F0aW5nID8gJ25vbmUnIDogJ2NvbnRlbnRzJyB9fSBhcmlhLWhpZGRlbj17aXNGbG9hdGluZ30+XG4gICAgICAgICAgPFNpZGViYXJcbiAgICAgICAgICAgIG9uR29Ub0NoYXQ9e2dvVG9DaGF0fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgaGFuZGxlR29Ub0hvbWU9e2hhbmRsZUdvSG9tZX1cbiAgICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZT17aGFuZGxlT3Blbk1hcmtldHBsYWNlfVxuICAgICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgICAgcmVmZXRjaENoYXRzPXtyZWZldGNoQ2hhdHN9XG4gICAgICAgICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHM9e3NldFJlZmV0Y2hDaGF0c31cbiAgICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZj17cmVzZXRTZWxlY3RlZENoYXRSZWZ9XG4gICAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU9e3NpZGViYXJBZ2VudHNOYXZBY3RpdmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTQ0NBSU1Db250ZW50IGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9PlxuICAgICAgICA8Q2hhdEFJTW9kYWxIZWFkZXJcbiAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZT17c2V0TGF5b3V0TW9kZX1cbiAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgZHJhZ2dhYmxlPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgb25EcmFnTW92ZT17aGFuZGxlRHJhZ01vdmV9XG4gICAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgaGFzRXJyb3I9eyEhYWdlbnRFcnJvcn1cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGxvYWRpbmdNb3JlPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXthZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgaGFuZGxlUmVzZXRDaGF0PXtoYW5kbGVSZXNldENoYXR9XG4gICAgICAgICAgb25BZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICBsb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgc29ydEFnZW50c0xpc3Q9e3NvcnRBZ2VudHNMaXN0fVxuICAgICAgICAgIGhpZGVBZ2VudFNlbGVjdG9yPXtoaWRlSGVhZGVyQWdlbnRTZWxlY3Rvcn1cbiAgICAgICAgLz5cbiAgICAgICAge2hhc0Vycm9yID8gKFxuICAgICAgICAgIDxNQUlBRXJyb3IgLz5cbiAgICAgICAgKSA6IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24pID8gKFxuICAgICAgICAgIDxDaGF0QUlDb250ZW50XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uPXtjb21wdXRlZEN1cnJlbnRPcHRpb259XG4gICAgICAgICAgICBoYW5kbGVycz17eyAuLi5oYW5kbGVycywgY2hhdDogc3RhcnRDaGF0LCBob21lOiBoYW5kbGVycy5ob21lLCBoYW5kbGVHb0hvbWUgfX1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldEhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgcmVmcz17eyB1c2VySW5pdGlhbE1lc3NhZ2UsIGluaXRpYWxDaGF0SWQgfX1cbiAgICAgICAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeT17aGFuZGxlU2VuZE1lc3NhZ2VSZWFkeX1cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIGZsb2F0aW5nPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICAgIG9uRGVsZXRlQWdlbnQ9e2hhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzfVxuICAgICAgICAgICAgb25GYXZvcml0ZUFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgaGFzTW9yZUFnZW50cz17ISFhZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgICBsb2FkaW5nTW9yZUFnZW50cz17bG9hZGluZ01vcmV9XG4gICAgICAgICAgICBvbkxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICAgIG9uR29Ub01haWFrZXI9e2hhbmRsZUdvVG9NYWlha2VyfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByb2plY3RTdW1tYXJ5Q29udGVudCBvblJlc3RhcnRTdW1tYXJ5PXtoYW5kbGVycy5ob21lfSAvPlxuICAgICAgICApfVxuICAgICAgICB7KChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiAhIWFnZW50cz8uZGF0YT8ubGVuZ3RoKSB8fFxuICAgICAgICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSAmJlxuICAgICAgICAgICFoaWRlRm9vdGVyT25NYWlha2VyTWFya2V0cGxhY2VIb21lICYmXG4gICAgICAgICAgIWhhc0Vycm9yICYmXG4gICAgICAgICAgIWxvYWRpbmcgJiZcbiAgICAgICAgICB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSAmJiAoXG4gICAgICAgICAgICA8Q2hhdEFpTW9kYWxGb290ZXJcbiAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZT17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGhhbmRsZVN0b3BHZW5lcmF0aW9uPXtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9ufVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIGlzV3JpdGluZz17aXNXcml0aW5nfVxuICAgICAgICAgICAgICBjaGF0SWQ9e2luaXRpYWxDaGF0SWR9XG4gICAgICAgICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgICAgICAgIHNob3dGYXFzPXtjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNQ29udGVudD5cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gKFxuICAgIDxTQ0NBSU1Db250ZW50V3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfSByZWY9e2NvbnRlbnRXcmFwcGVyUmVmfT5cbiAgICAgIHttb2RhbFBhbmVsfVxuICAgIDwvU0NDQUlNQ29udGVudFdyYXBwZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIHNlbGVjdG9yICYmXG4gICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgPFNDQ0FJTVdyYXBwZXJcbiAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICBkcmFnUG9zaXRpb249e3Jlc29sdmVkRHJhZ1Bvc2l0aW9ufVxuICAgICAgICBlbGV2YXRlZD17c2VjdGlvbiA9PT0gJ3Rhc2snfVxuICAgICAgPlxuICAgICAgICA8RmxvYXRpbmdQYW5lbE1vdGlvbiB0aWx0PXt0aWx0TW90aW9ufSBleHBhbmRlZD17ZXhwYW5kZWR9PlxuICAgICAgICAgIHtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgPC9GbG9hdGluZ1BhbmVsTW90aW9uPlxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtQWdlbnRNb2RhbFxuICAgICAgICAgICAgYWRkQWdlbnQ9e2FkZEFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnQ9e3VwZGF0ZUFnZW50fVxuICAgICAgICAgICAgcmVtb3ZlQWdlbnQ9e3JlbW92ZUFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIHNlbGVjdEZpcnN0QWdlbnQ9e3NlbGVjdEZpcnN0QWdlbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPFNuYWNrYmFyIC8+XG4gICAgICA8L1NDQ0FJTVdyYXBwZXI+LFxuICAgICAgc2VsZWN0b3JcbiAgICApXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUVFQSxXQUFXLEVBQ1hDLE9BQU8sRUFDUEMsUUFBUSxF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
@@ -17,8 +17,7 @@ import { MAIAIcon, MaiaChatLayoutMenuIcon } from '../../../../atoms/icons';
17
17
  import { ChatAIAgentOption } from '../ChatAiAgentOptions/ChatAiAgentOptions';
18
18
  import { SCCAIMHModal, SCCAIMHSelectedAgent, SCCAIMHSelectedAgentText, SCCAIMHWrapper, SCCAIMHWrapperButton, SCCAIMHWrapperIcon, SCCAIMHWrapperModal, SCCAIMHWrapperModalContent, SCCAIMHWrapperModalContentTitle, SCCAIMHDivider, SCCAIMHAgentsList, SCCAIMHLoaderWrapper, SCCAIWrapper, SCCAIMHLayoutMenuAnchor, SCCAIMHLayoutMenuPanel, SCCAIMHLayoutMenuRow } from './ChatAiModalHeader.styles';
19
19
  import { EVENTS, useEvent } from '../../../../../hooks/useEvent';
20
- import { useUser } from '../../../../../context/cor-user';
21
- import { isMaiaCloneAgentsRoleBlocked, logMaiaAccessDebug } from '../../../../../constants/maiaTaskPanelAccess';
20
+ import { CORUserRole, useUser } from '../../../../../context/cor-user';
22
21
  import { ChipLlm } from '../../../../atoms/ChipLlm';
23
22
  import { Loader } from '../../../../atoms/Loader';
24
23
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
@@ -193,13 +192,7 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
193
192
  onLayoutModeChange(mode);
194
193
  setLayoutMenuOpen(false);
195
194
  }, [amplitudEvent, onLayoutModeChange]);
196
- var cloneAgentsRoleBlocked = isMaiaCloneAgentsRoleBlocked(user, section);
197
- useEffect(function () {
198
- logMaiaAccessDebug('ChatAIModalHeader', user, section, {
199
- clone_agents_role_blocked: cloneAgentsRoleBlocked,
200
- show_clone_agents_in_selector: Boolean(window.MAIA_CHAT_AI_FEATURE_ACCESS && !cloneAgentsRoleBlocked)
201
- });
202
- }, [cloneAgentsRoleBlocked, section, user]);
195
+ var userRolesDisabled = [CORUserRole.COLLABORATOR, CORUserRole.FREELANCER, CORUserRole.CLIENT];
203
196
  var renderModal = function renderModal() {
204
197
  return /*#__PURE__*/_jsxs(SCCAIMHWrapper, {
205
198
  ref: dropdownRef,
@@ -241,7 +234,7 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
241
234
  })
242
235
  }), isExpanded && /*#__PURE__*/_jsx(SCCAIMHWrapperModal, {
243
236
  children: /*#__PURE__*/_jsxs(SCCAIMHWrapperModalContent, {
244
- children: [window.MAIA_CHAT_AI_FEATURE_ACCESS && !cloneAgentsRoleBlocked && /*#__PURE__*/_jsx(_Fragment, {
237
+ children: [window.MAIA_CHAT_AI_FEATURE_ACCESS && !userRolesDisabled.includes(user.role_id) && /*#__PURE__*/_jsx(_Fragment, {
245
238
  children: function () {
246
239
  var cloneAgents = agentsForSelector.filter(function (ag) {
247
240
  return ag.type === 'clone';
@@ -367,4 +360,4 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
367
360
  })]
368
361
  });
369
362
  };
370
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJDcm9zcyIsIkNoZXZyb25Eb3duIiwidXNlVHJhbnNsYXRpb24iLCJTRUNUSU9OUyIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkljb25CdXR0b24iLCJNQUlBSWNvbiIsIk1haWFDaGF0TGF5b3V0TWVudUljb24iLCJDaGF0QUlBZ2VudE9wdGlvbiIsIlNDQ0FJTUhNb2RhbCIsIlNDQ0FJTUhTZWxlY3RlZEFnZW50IiwiU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0IiwiU0NDQUlNSFdyYXBwZXIiLCJTQ0NBSU1IV3JhcHBlckJ1dHRvbiIsIlNDQ0FJTUhXcmFwcGVySWNvbiIsIlNDQ0FJTUhXcmFwcGVyTW9kYWwiLCJTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudCIsIlNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUiLCJTQ0NBSU1IRGl2aWRlciIsIlNDQ0FJTUhBZ2VudHNMaXN0IiwiU0NDQUlNSExvYWRlcldyYXBwZXIiLCJTQ0NBSVdyYXBwZXIiLCJTQ0NBSU1ITGF5b3V0TWVudUFuY2hvciIsIlNDQ0FJTUhMYXlvdXRNZW51UGFuZWwiLCJTQ0NBSU1ITGF5b3V0TWVudVJvdyIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlVXNlciIsImlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQiLCJsb2dNYWlhQWNjZXNzRGVidWciLCJDaGlwTGxtIiwiTG9hZGVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJfcmVmIiwibGF5b3V0TW9kZSIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImV4cGFuZGVkIiwiX3JlZiRkcmFnZ2FibGUiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJfcmVmJGhhbmRsZUNsb3NlIiwiaGFuZGxlQ2xvc2UiLCJfcmVmJGFnZW50cyIsImFnZW50cyIsIl9yZWYkaGFzRXJyb3IiLCJoYXNFcnJvciIsIl9yZWYkbG9hZGluZyIsImxvYWRpbmciLCJfcmVmJGxvYWRpbmdNb3JlIiwibG9hZGluZ01vcmUiLCJfcmVmJGhhc01vcmUiLCJoYXNNb3JlIiwiaGFuZGxlUmVzZXRDaGF0Iiwib25BZ2VudFVwZGF0ZSIsImxvYWRNb3JlQWdlbnRzIiwic29ydEFnZW50c0xpc3QiLCJfcmVmJGhpZGVBZ2VudFNlbGVjdG8iLCJoaWRlQWdlbnRTZWxlY3RvciIsIm9uQWdlbnRTZWxlY3RlZCIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwidCIsInVzZXIiLCJhbXBsaXR1ZEV2ZW50IiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RlZEFnZW50IiwiYWdlbnQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZWN0aW9uIiwidG9vbHRpcFpJbmRleCIsInVuZGVmaW5lZCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzRXhwYW5kZWQiLCJzZXRJc0V4cGFuZGVkIiwidGV4dFJlZkFnZW50IiwiZHJvcGRvd25SZWYiLCJsYXlvdXRNZW51UmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsYXlvdXRNZW51T3BlbiIsInNldExheW91dE1lbnVPcGVuIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwibmFtZSIsInNob3dUb29sdGlwQWdlbnQiLCJzaG93VG9vbHRpcCIsImFnZW50c1JlZiIsImFnZW50c0ZvclNlbGVjdG9yIiwiZmlsdGVyIiwiYWdlbnRJdGVtIiwiZW50aXR5IiwiaGFuZGxlU2Nyb2xsIiwiY3VycmVudCIsIl9hZ2VudHNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJzY3JvbGxFbGVtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImNsZWFyVGltZW91dCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJsb2NhbEFnZW50cyIsIl9yZWYyIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsImlzX2Zyb21fY29udmVyc2F0aW9uIiwiZnJvbUxpc3QiLCJmaW5kIiwiaWQiLCJoYW5kbGVTZWxlY3RBZ2VudCIsImFpQ2hhdEFnZW50U2VsZWN0IiwiYWdlbnRfdHlwZSIsInR5cGUiLCJuZWVkc0VudGl0eSIsImhhbmRsZUV4cGFuZE1vZGFsIiwiYWlDaGF0T3BlbkFnZW50U2VsZWN0IiwicHJldiIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImV2ZW50IiwidGFyZ2V0IiwiY29udGFpbnMiLCJkb2N1bWVudCIsImhhbmRsZVBpY2tMYXlvdXQiLCJtb2RlIiwicHJvamVjdFJlc3VtZUV4cGFuZCIsImFpQ2hhdFNlbGVjdFZpZXdPcHRpb25zIiwib3B0aW9uIiwiY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsImNsb25lX2FnZW50c19yb2xlX2Jsb2NrZWQiLCJzaG93X2Nsb25lX2FnZW50c19pbl9zZWxlY3RvciIsIkJvb2xlYW4iLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJyZW5kZXJNb2RhbCIsInJlZiIsIm9uQ2xpY2siLCJsZW5ndGgiLCJjaGlsZHJlbiIsIl9vYmplY3RTcHJlYWQiLCJ0aXRsZSIsInN0eWxlIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJnYXAiLCJlbW9qaSIsInBsYWNlbWVudCIsInpJbmRleCIsImlzQWdlbnREZWxldGVkIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsImNsb25lQWdlbnRzIiwiYWciLCJpc0Nsb25lIiwibWFwIiwiY2xvbmVBZ2VudCIsImluZGV4IiwiaXNTZWxlY3RlZCIsImlzTWFpYSIsIm9uRmF2b3JpdGVUb2dnbGUiLCJjb25jYXQiLCJzb21lIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImNvbXBhbnkiLCJhZ2VudHNDb3VudCIsInNpemUiLCJzZWxlY3RlZE1vZGVsTGxtIiwibW9kZWxfZGlzcGxheV9uYW1lIiwic2VsZWN0ZWRBZ2VudFR5cGUiLCJzaG91bGRSZW5kZXJTZWxlY3RvciIsIiRoYXNFcnJvciIsIiRsb2FkaW5nIiwiJGhhc0FnZW50cyIsIm9uUG9pbnRlckRvd24iLCJvblBvaW50ZXJNb3ZlIiwib25Qb2ludGVyVXAiLCJvblBvaW50ZXJDYW5jZWwiLCJvbkxvc3RQb2ludGVyQ2FwdHVyZSIsImN1cnNvciIsInRvdWNoQWN0aW9uIiwibW9kZWwiLCJidXR0b25JZCIsImhhbmRsZUNsaWNrIiwiYWlDaGF0T3BlblZpZXdPcHRpb25zIiwidG9vbHRpcCIsImRpc2FibGVUb29sdGlwIiwicm9sZSIsIiRhY3RpdmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zcydcbmltcG9ydCB7IENoZXZyb25Eb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvd24nXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL0ljb25CdXR0b24nXG5pbXBvcnQgeyBNQUlBSWNvbiwgTWFpYUNoYXRMYXlvdXRNZW51SWNvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgQ2hhdEFJQWdlbnRPcHRpb24gfSBmcm9tICcuLi9DaGF0QWlBZ2VudE9wdGlvbnMvQ2hhdEFpQWdlbnRPcHRpb25zJ1xuaW1wb3J0IHtcbiAgU0NDQUlNSE1vZGFsLFxuICBTQ0NBSU1IU2VsZWN0ZWRBZ2VudCxcbiAgU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0LFxuICBTQ0NBSU1IV3JhcHBlcixcbiAgU0NDQUlNSFdyYXBwZXJCdXR0b24sXG4gIFNDQ0FJTUhXcmFwcGVySWNvbixcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbCxcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQsXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUsXG4gIFNDQ0FJTUhEaXZpZGVyLFxuICBTQ0NBSU1IQWdlbnRzTGlzdCxcbiAgU0NDQUlNSExvYWRlcldyYXBwZXIsXG4gIFNDQ0FJV3JhcHBlcixcbiAgU0NDQUlNSExheW91dE1lbnVBbmNob3IsXG4gIFNDQ0FJTUhMYXlvdXRNZW51UGFuZWwsXG4gIFNDQ0FJTUhMYXlvdXRNZW51Um93LFxufSBmcm9tICcuL0NoYXRBaU1vZGFsSGVhZGVyLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgTWFpYUNoYXRNb2RhbExheW91dE1vZGUgfSBmcm9tICcuLi8uLi9sYXlvdXQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IGlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQsIGxvZ01haWFBY2Nlc3NEZWJ1ZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy9tYWlhVGFza1BhbmVsQWNjZXNzJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENoaXBMbG0gfSBmcm9tICcuLi8uLi8uLi8uLi9hdG9tcy9DaGlwTGxtJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvTG9hZGVyJ1xuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWxIZWFkZXIgPSAoe1xuICBsYXlvdXRNb2RlLFxuICBvbkxheW91dE1vZGVDaGFuZ2UsXG4gIGV4cGFuZGVkLFxuICBkcmFnZ2FibGUgPSBmYWxzZSxcbiAgb25EcmFnU3RhcnQsXG4gIG9uRHJhZ01vdmUsXG4gIG9uRHJhZ0VuZCxcbiAgaGFuZGxlQ2xvc2UgPSAoKSA9PiBudWxsLFxuICBhZ2VudHMgPSBbXSxcbiAgaGFzRXJyb3IgPSBmYWxzZSxcbiAgbG9hZGluZyA9IGZhbHNlLFxuICBsb2FkaW5nTW9yZSA9IGZhbHNlLFxuICBoYXNNb3JlID0gZmFsc2UsXG4gIGhhbmRsZVJlc2V0Q2hhdCxcbiAgb25BZ2VudFVwZGF0ZSxcbiAgbG9hZE1vcmVBZ2VudHMsXG4gIHNvcnRBZ2VudHNMaXN0LFxuICBoaWRlQWdlbnRTZWxlY3RvciA9IGZhbHNlLFxuICBvbkFnZW50U2VsZWN0ZWQsXG59OiB7XG4gIGxheW91dE1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlXG4gIG9uTGF5b3V0TW9kZUNoYW5nZTogKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB2b2lkXG4gIGV4cGFuZGVkOiBib29sZWFuXG4gIGRyYWdnYWJsZT86IGJvb2xlYW5cbiAgb25EcmFnU3RhcnQ/OiAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZFxuICBvbkRyYWdNb3ZlPzogKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgb25EcmFnRW5kPzogKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIGFnZW50czogQWdlbnRbXVxuICBoYXNFcnJvcjogYm9vbGVhblxuICBsb2FkaW5nOiBib29sZWFuXG4gIGxvYWRpbmdNb3JlPzogYm9vbGVhblxuICBoYXNNb3JlPzogYm9vbGVhblxuICBoYW5kbGVSZXNldENoYXQ6ICgpID0+IHZvaWRcbiAgb25BZ2VudFVwZGF0ZT86ICh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIGxvYWRNb3JlQWdlbnRzPzogKCkgPT4gdm9pZFxuICBzb3J0QWdlbnRzTGlzdD86ICgpID0+IHZvaWRcbiAgaGlkZUFnZW50U2VsZWN0b3I/OiBib29sZWFuXG4gIC8qKlxuICAgKiBTZSBpbnZvY2EgZGVzcHXDqXMgZGVsIHJlc2V0IGN1YW5kbyBlbCBhZ2VudGUgc2VsZWNjaW9uYWRvIE5PIHJlcXVpZXJlIHNlbGVjY2nDs25cbiAgICogZGUgZW50aXR5IChjdXN0b20gbyBjbG9uZStnbG9iYWwpLiBQZXJtaXRlIHJlc29sdmVyIGBHRVQgL3YyL3Nlc3Npb25zL2FnZW50L3tpZH1gXG4gICAqIHkgbmF2ZWdhciBhIHVuYSBjb252ZXJzYWNpw7NuIGV4aXN0ZW50ZSBzaSBsYSBoYXkuXG4gICAqL1xuICBvbkFnZW50U2VsZWN0ZWQ/OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkIHwgUHJvbWlzZTx1bmtub3duPlxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgYW1wbGl0dWRFdmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIC8vIEVuIHNlY3Rpb24gJ3Rhc2snIGVsIG1vZGFsIGRlIE1haWEgc2UgZWxldmEgcG9yIGVuY2ltYSBkZWwgdGFzayBwYW5lbCAoei1pbmRleCA5ODAwMDAxKS5cbiAgLy8gTG9zIHRvb2x0aXBzIHNlIG1vbnRhbiBlbiBwb3J0YWwgY29uIHotaW5kZXggMTUwMCBwb3IgZGVmZWN0bywgYXPDrSBxdWUgcXVlZGFyw61hbiBkZXRyw6FzLlxuICAvLyBTdWJpbW9zIHN1IHotaW5kZXggc8OzbG8gZW4gZXN0ZSBjYXNvIHBhcmEgcXVlIHNlIHZlYW4gcG9yIGVuY2ltYSBkZWwgbW9kYWwuXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSBzZWN0aW9uID09PSAndGFzaycgPyA5ODAwMDAyIDogdW5kZWZpbmVkXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0ZXh0UmVmQWdlbnQgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCBkcm9wZG93blJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgbGF5b3V0TWVudVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2xheW91dE1lbnVPcGVuLCBzZXRMYXlvdXRNZW51T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgeyBzaG93VG9vbHRpcDogc2hvd1Rvb2x0aXBBZ2VudCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZkFnZW50LCBbc2VsZWN0ZWRBZ2VudD8ubmFtZV0pXG4gIGNvbnN0IGFnZW50c1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCBhZ2VudHNGb3JTZWxlY3RvciA9IHVzZU1lbW8oKCkgPT4gYWdlbnRzLmZpbHRlcihhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmVudGl0eSAhPT0gJ2dsb2JhbCcpLCBbYWdlbnRzXSlcblxuICAvLyBNYW5lamFyIHNjcm9sbCBpbmZpbml0byBwYXJhIGNhcmdhciBtw6FzIGFnZW50c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFNvbG8gY3VhbmRvIGVsIGRyb3Bkb3duIGVzdMOpIGFiaWVydG9cbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAoIWFnZW50c1JlZi5jdXJyZW50IHx8ICFsb2FkTW9yZUFnZW50cyB8fCAhaGFzTW9yZSB8fCBsb2FkaW5nTW9yZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBhZ2VudHNSZWYuY3VycmVudFxuICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG5cbiAgICAgIC8vIENhcmdhciBtw6FzICg1MHB4IGFudGVzKVxuICAgICAgaWYgKGRpc3RhbmNlRnJvbUJvdHRvbSA8IDUwKSB7XG4gICAgICAgIGxvYWRNb3JlQWdlbnRzKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZWxheSBwYXJhIGFzZWd1cmFyIHF1ZSBlbCBET00gZXN0w6kgcmVuZGVyaXphZG9cbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSBhZ2VudHNSZWYuY3VycmVudFxuICAgICAgaWYgKHNjcm9sbEVsZW1lbnQpIHtcbiAgICAgICAgc2Nyb2xsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICB9XG4gICAgfSwgMTAwKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzY3JvbGxFbGVtZW50KSB7XG4gICAgICAgIHNjcm9sbEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzRXhwYW5kZWQsIGxvYWRNb3JlQWdlbnRzLCBoYXNNb3JlLCBsb2FkaW5nTW9yZV0pXG5cbiAgY29uc3QgbG9jYWxBZ2VudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcyB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaXNfZnJvbV9jb252ZXJzYXRpb25cbiAgICApIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZEFnZW50XG4gICAgfVxuICAgIGNvbnN0IGZyb21MaXN0ID0gYWdlbnRzLmZpbmQoXG4gICAgICBhZ2VudCA9PlxuICAgICAgICAhYWdlbnQuaXNfZGVsZXRlZCAmJiAhYWdlbnQuaGFzX25vdF9wZXJtaXNzaW9ucyAmJiAhYWdlbnQuaGFzX25vdF9hY2Nlc3MgJiYgYWdlbnQuaWQgPT09IHNlbGVjdGVkQWdlbnQ/LmlkXG4gICAgKVxuICAgIC8vIEFnZW50ZSBoaWRyYXRhZG8gcG9yIEdFVCAocC4gZWouIG51ZXZvIGNoYXQgdHJhcyBjcmVhdGVfYWdlbnQpIHB1ZWRlIG5vIGVzdGFyIGHDum4gZW4gbGEgbGlzdGEgcGFnaW5hZGFcbiAgICByZXR1cm4gZnJvbUxpc3QgPz8gc2VsZWN0ZWRBZ2VudCA/PyBudWxsXG4gIH0sIFthZ2VudHMsIHNlbGVjdGVkQWdlbnRdKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50OiBBZ2VudCkgPT4ge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnQpXG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRBZ2VudFNlbGVjdCwge1xuICAgICAgICBhZ2VudF90eXBlOiBhZ2VudD8udHlwZSxcbiAgICAgIH0pXG4gICAgICBzZXRJc0V4cGFuZGVkKGZhbHNlKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBoYW5kbGVSZXNldENoYXQoKVxuICAgICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gZGVwZW5kZSBkZSB1bmEgZW50aXR5IChjdXN0b20gbyBjbG9uZStnbG9iYWwpIHlhIHBvZGVtb3NcbiAgICAgICAgLy8gcmVzb2x2ZXIgc2kgZXhpc3RlIHVuYSBzZXNpw7NuIHByZXZpYSB5LCBlbiBlc2UgY2FzbywgbmF2ZWdhciBhIGVsbGEuXG4gICAgICAgIC8vIFBhcmEgY2xvbmUrcHJvamVjdHxjbGllbnQsIGxhIHJlc29sdWNpw7NuIG9jdXJyZSBlbiBsb3Mgc2VsZWN0b3JzIGRlIGVudGl0eS5cbiAgICAgICAgY29uc3QgbmVlZHNFbnRpdHkgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnKVxuICAgICAgICBpZiAoIW5lZWRzRW50aXR5KSB7XG4gICAgICAgICAgb25BZ2VudFNlbGVjdGVkPy4oYWdlbnQpXG4gICAgICAgIH1cbiAgICAgIH0sIDEwMClcbiAgICB9LFxuICAgIFtzZWxlY3RBZ2VudCwgYW1wbGl0dWRFdmVudCwgaGFuZGxlUmVzZXRDaGF0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIG9uQWdlbnRTZWxlY3RlZF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUV4cGFuZE1vZGFsID0gKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkge1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0T3BlbkFnZW50U2VsZWN0KVxuICAgICAgLy8gQ3VhbmRvIHNlIGFicmUgZWwgc2VsZWN0b3IsIG9yZGVuYXIgbG9zIGFnZW50ZXNcbiAgICAgIGlmIChzb3J0QWdlbnRzTGlzdCkge1xuICAgICAgICBzb3J0QWdlbnRzTGlzdCgpXG4gICAgICB9XG4gICAgfVxuICAgIHNldElzRXhwYW5kZWQocHJldiA9PiAhcHJldilcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0V4cGFuZGVkICYmICFsYXlvdXRNZW51T3Blbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIE5vZGVcbiAgICAgIGlmIChpc0V4cGFuZGVkICYmIGRyb3Bkb3duUmVmLmN1cnJlbnQgJiYgIWRyb3Bkb3duUmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICBzZXRJc0V4cGFuZGVkKGZhbHNlKVxuICAgICAgfVxuICAgICAgaWYgKGxheW91dE1lbnVPcGVuICYmIGxheW91dE1lbnVSZWYuY3VycmVudCAmJiAhbGF5b3V0TWVudVJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgc2V0TGF5b3V0TWVudU9wZW4oZmFsc2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbaXNFeHBhbmRlZCwgbGF5b3V0TWVudU9wZW5dKVxuXG4gIGNvbnN0IGhhbmRsZVBpY2tMYXlvdXQgPSB1c2VDYWxsYmFjayhcbiAgICAobW9kZTogTWFpYUNoYXRNb2RhbExheW91dE1vZGUpID0+IHtcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLnByb2plY3RSZXN1bWVFeHBhbmQsIHtcbiAgICAgICAgZXhwYW5kZWQ6IG1vZGUgPT09ICdmdWxsc2NyZWVuJyxcbiAgICAgIH0pXG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRTZWxlY3RWaWV3T3B0aW9ucywgeyBvcHRpb246IG1vZGUgfSlcbiAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZShtb2RlKVxuICAgICAgc2V0TGF5b3V0TWVudU9wZW4oZmFsc2UpXG4gICAgfSxcbiAgICBbYW1wbGl0dWRFdmVudCwgb25MYXlvdXRNb2RlQ2hhbmdlXVxuICApXG5cbiAgY29uc3QgY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCA9IGlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQodXNlciwgc2VjdGlvbilcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvZ01haWFBY2Nlc3NEZWJ1ZygnQ2hhdEFJTW9kYWxIZWFkZXInLCB1c2VyLCBzZWN0aW9uLCB7XG4gICAgICBjbG9uZV9hZ2VudHNfcm9sZV9ibG9ja2VkOiBjbG9uZUFnZW50c1JvbGVCbG9ja2VkLFxuICAgICAgc2hvd19jbG9uZV9hZ2VudHNfaW5fc2VsZWN0b3I6IEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCksXG4gICAgfSlcbiAgfSwgW2Nsb25lQWdlbnRzUm9sZUJsb2NrZWQsIHNlY3Rpb24sIHVzZXJdKVxuXG4gIGNvbnN0IHJlbmRlck1vZGFsID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlNSFdyYXBwZXJcbiAgICAgICAgcmVmPXtkcm9wZG93blJlZn1cbiAgICAgICAgZGF0YS1uby1kcmFnPVwidHJ1ZVwiXG4gICAgICAgIG9uQ2xpY2s9e2FnZW50cy5sZW5ndGggPyBoYW5kbGVFeHBhbmRNb2RhbCA6IHVuZGVmaW5lZH1cbiAgICAgICAgaWQ9XCJjaGF0LWFpLW1vZGFsLWhlYWRlci13cmFwcGVyXCJcbiAgICAgID5cbiAgICAgICAgPFNDQ0FJTUhTZWxlY3RlZEFnZW50PlxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgIHNob3dUb29sdGlwQWdlbnQgPyAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgIHtsb2NhbEFnZW50cz8udHlwZSA9PT0gJ2N1c3RvbScgPyBsb2NhbEFnZW50cz8uZW1vamkgOiA8TUFJQUljb24gLz59IHtsb2NhbEFnZW50cz8ubmFtZX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxhY2VtZW50PXtpc0V4cGFuZGVkID8gJ2xlZnQnIDogJ3RvcCd9XG4gICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dFxuICAgICAgICAgICAgICByZWY9e3RleHRSZWZBZ2VudH1cbiAgICAgICAgICAgICAgaXNBZ2VudERlbGV0ZWQ9e1xuICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCB8fCAhIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgISFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2Vzc1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzRweCcgfX0+XG4gICAgICAgICAgICAgICAge2xvY2FsQWdlbnRzPy50eXBlID09PSAnY3VzdG9tJyA/IGxvY2FsQWdlbnRzPy5lbW9qaSA6IDxNQUlBSWNvbiAvPn0ge2xvY2FsQWdlbnRzPy5uYW1lfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L1NDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvU0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgIDxTQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgICAgPENoZXZyb25Eb3duIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gY29sb3I9XCIjMjAyMDFGXCIgLz5cbiAgICAgICAgPC9TQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgIHtpc0V4cGFuZGVkICYmIChcbiAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAge3dpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgIWNsb25lQWdlbnRzUm9sZUJsb2NrZWQgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVBZ2VudHMgPSBhZ2VudHNGb3JTZWxlY3Rvci5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjbG9uZUFnZW50cy5sZW5ndGgpIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0NBSVdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNQUlBSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSBpc0Nsb25lPk1BSUEgYnkgQ09SPC9TQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSVdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSERpdmlkZXIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2Nsb25lQWdlbnRzLm1hcCgoY2xvbmVBZ2VudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENoYXRBSUFnZW50T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgYWdlbnQtJHtjbG9uZUFnZW50LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e2Nsb25lQWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gY2xvbmVBZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01haWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZhdm9yaXRlVG9nZ2xlPXtvbkFnZW50VXBkYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHthZ2VudHNGb3JTZWxlY3Rvci5zb21lKGFnZW50ID0+IGFnZW50LnR5cGUgPT09ICdjdXN0b20nKSAmJlxuICAgICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KCdhZ2VudHMnKX0gYnkge3VzZXIuY29tcGFueX1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxTQ0NBSU1IQWdlbnRzTGlzdCBoYXNNb3JlPXtoYXNNb3JlfSBhZ2VudHNDb3VudD17YWdlbnRzRm9yU2VsZWN0b3IubGVuZ3RofSByZWY9e2FnZW50c1JlZn0+XG4gICAgICAgICAgICAgICAge2FnZW50c0ZvclNlbGVjdG9yPy5tYXAoKGFnZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8uaXNfZGVsZXRlZCB8fFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgfHxcbiAgICAgICAgICAgICAgICAgICAgKGFnZW50Py50eXBlID09PSAnY3VzdG9tJyAmJiAhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke2FnZW50LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RBZ2VudD17aGFuZGxlU2VsZWN0QWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZD17c2V0SXNFeHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICB7bG9hZGluZ01vcmUgJiYgKFxuICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSEFnZW50c0xpc3Q+XG4gICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50PlxuICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNSFdyYXBwZXI+XG4gICAgKVxuICB9XG5cbiAgY29uc3Qgc2VsZWN0ZWRNb2RlbExsbSA9IHNlbGVjdGVkQWdlbnQ/Lm1vZGVsX2Rpc3BsYXlfbmFtZVxuICBjb25zdCBzZWxlY3RlZEFnZW50VHlwZSA9IHNlbGVjdGVkQWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nXG4gIGNvbnN0IHNob3VsZFJlbmRlclNlbGVjdG9yID1cbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgICFoaWRlQWdlbnRTZWxlY3RvciAmJlxuICAgICEhc2VsZWN0ZWRBZ2VudCAmJlxuICAgICghIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUylcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSU1ITW9kYWxcbiAgICAgICRoYXNFcnJvcj17aGFzRXJyb3J9XG4gICAgICAkbG9hZGluZz17bG9hZGluZ31cbiAgICAgICRoYXNBZ2VudHM9eyEhYWdlbnRzLmxlbmd0aH1cbiAgICAgIG9uUG9pbnRlckRvd249e2RyYWdnYWJsZSA/IG9uRHJhZ1N0YXJ0IDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyTW92ZT17ZHJhZ2dhYmxlID8gb25EcmFnTW92ZSA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlclVwPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBvblBvaW50ZXJDYW5jZWw9e2RyYWdnYWJsZSA/IG9uRHJhZ0VuZCA6IHVuZGVmaW5lZH1cbiAgICAgIG9uTG9zdFBvaW50ZXJDYXB0dXJlPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBzdHlsZT17eyBjdXJzb3I6IGRyYWdnYWJsZSA/ICdncmFiJyA6IHVuZGVmaW5lZCwgdG91Y2hBY3Rpb246IGRyYWdnYWJsZSA/ICdtYW5pcHVsYXRpb24nIDogdW5kZWZpbmVkIH19XG4gICAgPlxuICAgICAge3Nob3VsZFJlbmRlclNlbGVjdG9yID8gcmVuZGVyTW9kYWwoKSA6IDxkaXYgLz59XG4gICAgICA8U0NDQUlNSFdyYXBwZXJCdXR0b24gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICB7c2VsZWN0ZWRBZ2VudFR5cGUgJiYgc2VsZWN0ZWRNb2RlbExsbSAmJiA8Q2hpcExsbSBtb2RlbD17c2VsZWN0ZWRNb2RlbExsbX0gZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPn1cbiAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51QW5jaG9yIHJlZj17bGF5b3V0TWVudVJlZn0gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBidXR0b25JZD1cImJ0bi1tYWlhLWxheW91dC1tZW51XCJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghbGF5b3V0TWVudU9wZW4pIHtcbiAgICAgICAgICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRPcGVuVmlld09wdGlvbnMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2V0TGF5b3V0TWVudU9wZW4ocHJldiA9PiAhcHJldilcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB0b29sdGlwPXt0KCdsYXlvdXRNZW51VG9vbHRpcCcpfVxuICAgICAgICAgICAgZGlzYWJsZVRvb2x0aXA9e2xheW91dE1lbnVPcGVufVxuICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TWFpYUNoYXRMYXlvdXRNZW51SWNvbiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICB7bGF5b3V0TWVudU9wZW4gPyAoXG4gICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVQYW5lbCByb2xlPVwibWVudVwiPlxuICAgICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVSb3dcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtsYXlvdXRNb2RlID09PSAnc2lkZWJhcid9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnc2lkZWJhcicpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dFNpZGViYXInKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvdz5cbiAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgJGFjdGl2ZT17bGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVBpY2tMYXlvdXQoJ2Z1bGxzY3JlZW4nKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGdWxsc2NyZWVuJyl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVSb3c+XG4gICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICRhY3RpdmU9e2xheW91dE1vZGUgPT09ICdmbG9hdGluZyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnZmxvYXRpbmcnKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGbG9hdGluZycpfVxuICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93PlxuICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVBhbmVsPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51QW5jaG9yPlxuICAgICAgICA8SWNvbkJ1dHRvbiBoYW5kbGVDbGljaz17aGFuZGxlQ2xvc2V9IHRvb2x0aXA9e3QoJ2dsb2JhbHMuY2xvc2UnKX0gdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgPENyb3NzIC8+XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDwvU0NDQUlNSFdyYXBwZXJCdXR0b24+XG4gICAgPC9TQ0NBSU1ITW9kYWw+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sUUFBMkMsT0FBTztBQUM1RyxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxRQUFRLFFBQVEsaUNBQWlDO0FBQzFELFNBQVNDLGdCQUFnQixRQUFRLHVDQUF1QztBQUN4RSxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsU0FBU0MsVUFBVSxRQUFRLDhCQUE4QjtBQUN6RCxTQUFTQyxRQUFRLEVBQUVDLHNCQUFzQixRQUFRLHlC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
363
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJDcm9zcyIsIkNoZXZyb25Eb3duIiwidXNlVHJhbnNsYXRpb24iLCJTRUNUSU9OUyIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkljb25CdXR0b24iLCJNQUlBSWNvbiIsIk1haWFDaGF0TGF5b3V0TWVudUljb24iLCJDaGF0QUlBZ2VudE9wdGlvbiIsIlNDQ0FJTUhNb2RhbCIsIlNDQ0FJTUhTZWxlY3RlZEFnZW50IiwiU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0IiwiU0NDQUlNSFdyYXBwZXIiLCJTQ0NBSU1IV3JhcHBlckJ1dHRvbiIsIlNDQ0FJTUhXcmFwcGVySWNvbiIsIlNDQ0FJTUhXcmFwcGVyTW9kYWwiLCJTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudCIsIlNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUiLCJTQ0NBSU1IRGl2aWRlciIsIlNDQ0FJTUhBZ2VudHNMaXN0IiwiU0NDQUlNSExvYWRlcldyYXBwZXIiLCJTQ0NBSVdyYXBwZXIiLCJTQ0NBSU1ITGF5b3V0TWVudUFuY2hvciIsIlNDQ0FJTUhMYXlvdXRNZW51UGFuZWwiLCJTQ0NBSU1ITGF5b3V0TWVudVJvdyIsIkVWRU5UUyIsInVzZUV2ZW50IiwiQ09SVXNlclJvbGUiLCJ1c2VVc2VyIiwiQ2hpcExsbSIsIkxvYWRlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkNoYXRBSU1vZGFsSGVhZGVyIiwiX3JlZiIsImxheW91dE1vZGUiLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJleHBhbmRlZCIsIl9yZWYkZHJhZ2dhYmxlIiwiZHJhZ2dhYmxlIiwib25EcmFnU3RhcnQiLCJvbkRyYWdNb3ZlIiwib25EcmFnRW5kIiwiX3JlZiRoYW5kbGVDbG9zZSIsImhhbmRsZUNsb3NlIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfcmVmJGhhc0Vycm9yIiwiaGFzRXJyb3IiLCJfcmVmJGxvYWRpbmciLCJsb2FkaW5nIiwiX3JlZiRsb2FkaW5nTW9yZSIsImxvYWRpbmdNb3JlIiwiX3JlZiRoYXNNb3JlIiwiaGFzTW9yZSIsImhhbmRsZVJlc2V0Q2hhdCIsIm9uQWdlbnRVcGRhdGUiLCJsb2FkTW9yZUFnZW50cyIsInNvcnRBZ2VudHNMaXN0IiwiX3JlZiRoaWRlQWdlbnRTZWxlY3RvIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJvbkFnZW50U2VsZWN0ZWQiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsInQiLCJ1c2VyIiwiYW1wbGl0dWRFdmVudCIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2VjdGlvbiIsInRvb2x0aXBaSW5kZXgiLCJ1bmRlZmluZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsInRleHRSZWZBZ2VudCIsImRyb3Bkb3duUmVmIiwibGF5b3V0TWVudVJlZiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibGF5b3V0TWVudU9wZW4iLCJzZXRMYXlvdXRNZW51T3BlbiIsIl91c2VSZXNpemVMaXN0ZW5lciIsIm5hbWUiLCJzaG93VG9vbHRpcEFnZW50Iiwic2hvd1Rvb2x0aXAiLCJhZ2VudHNSZWYiLCJhZ2VudHNGb3JTZWxlY3RvciIsImZpbHRlciIsImFnZW50SXRlbSIsImVudGl0eSIsImhhbmRsZVNjcm9sbCIsImN1cnJlbnQiLCJfYWdlbnRzUmVmJGN1cnJlbnQiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJkaXN0YW5jZUZyb21Cb3R0b20iLCJ0aW1lb3V0SWQiLCJzZXRUaW1lb3V0Iiwic2Nyb2xsRWxlbWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjbGVhclRpbWVvdXQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibG9jYWxBZ2VudHMiLCJfcmVmMiIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJpc19mcm9tX2NvbnZlcnNhdGlvbiIsImZyb21MaXN0IiwiZmluZCIsImlkIiwiaGFuZGxlU2VsZWN0QWdlbnQiLCJhaUNoYXRBZ2VudFNlbGVjdCIsImFnZW50X3R5cGUiLCJ0eXBlIiwibmVlZHNFbnRpdHkiLCJoYW5kbGVFeHBhbmRNb2RhbCIsImFpQ2hhdE9wZW5BZ2VudFNlbGVjdCIsInByZXYiLCJoYW5kbGVDbGlja091dHNpZGUiLCJldmVudCIsInRhcmdldCIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJoYW5kbGVQaWNrTGF5b3V0IiwibW9kZSIsInByb2plY3RSZXN1bWVFeHBhbmQiLCJhaUNoYXRTZWxlY3RWaWV3T3B0aW9ucyIsIm9wdGlvbiIsInVzZXJSb2xlc0Rpc2FibGVkIiwiQ09MTEFCT1JBVE9SIiwiRlJFRUxBTkNFUiIsIkNMSUVOVCIsInJlbmRlck1vZGFsIiwicmVmIiwib25DbGljayIsImxlbmd0aCIsImNoaWxkcmVuIiwiX29iamVjdFNwcmVhZCIsInRpdGxlIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImdhcCIsImVtb2ppIiwicGxhY2VtZW50IiwiekluZGV4IiwiaXNBZ2VudERlbGV0ZWQiLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiaW5jbHVkZXMiLCJyb2xlX2lkIiwiY2xvbmVBZ2VudHMiLCJhZyIsImlzQ2xvbmUiLCJtYXAiLCJjbG9uZUFnZW50IiwiaW5kZXgiLCJpc1NlbGVjdGVkIiwiaXNNYWlhIiwib25GYXZvcml0ZVRvZ2dsZSIsImNvbmNhdCIsInNvbWUiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY29tcGFueSIsImFnZW50c0NvdW50Iiwic2l6ZSIsInNlbGVjdGVkTW9kZWxMbG0iLCJtb2RlbF9kaXNwbGF5X25hbWUiLCJzZWxlY3RlZEFnZW50VHlwZSIsInNob3VsZFJlbmRlclNlbGVjdG9yIiwiJGhhc0Vycm9yIiwiJGxvYWRpbmciLCIkaGFzQWdlbnRzIiwib25Qb2ludGVyRG93biIsIm9uUG9pbnRlck1vdmUiLCJvblBvaW50ZXJVcCIsIm9uUG9pbnRlckNhbmNlbCIsIm9uTG9zdFBvaW50ZXJDYXB0dXJlIiwiY3Vyc29yIiwidG91Y2hBY3Rpb24iLCJtb2RlbCIsImJ1dHRvbklkIiwiaGFuZGxlQ2xpY2siLCJhaUNoYXRPcGVuVmlld09wdGlvbnMiLCJ0b29sdGlwIiwiZGlzYWJsZVRvb2x0aXAiLCJyb2xlIiwiJGFjdGl2ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgQ2hldnJvbkRvd24gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG93bidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvSWNvbkJ1dHRvbidcbmltcG9ydCB7IE1BSUFJY29uLCBNYWlhQ2hhdExheW91dE1lbnVJY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBDaGF0QUlBZ2VudE9wdGlvbiB9IGZyb20gJy4uL0NoYXRBaUFnZW50T3B0aW9ucy9DaGF0QWlBZ2VudE9wdGlvbnMnXG5pbXBvcnQge1xuICBTQ0NBSU1ITW9kYWwsXG4gIFNDQ0FJTUhTZWxlY3RlZEFnZW50LFxuICBTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQsXG4gIFNDQ0FJTUhXcmFwcGVyLFxuICBTQ0NBSU1IV3JhcHBlckJ1dHRvbixcbiAgU0NDQUlNSFdyYXBwZXJJY29uLFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsLFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudCxcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSxcbiAgU0NDQUlNSERpdmlkZXIsXG4gIFNDQ0FJTUhBZ2VudHNMaXN0LFxuICBTQ0NBSU1ITG9hZGVyV3JhcHBlcixcbiAgU0NDQUlXcmFwcGVyLFxuICBTQ0NBSU1ITGF5b3V0TWVudUFuY2hvcixcbiAgU0NDQUlNSExheW91dE1lbnVQYW5lbCxcbiAgU0NDQUlNSExheW91dE1lbnVSb3csXG59IGZyb20gJy4vQ2hhdEFpTW9kYWxIZWFkZXIuc3R5bGVzJ1xuaW1wb3J0IHR5cGUgeyBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSB9IGZyb20gJy4uLy4uL2xheW91dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IENPUlVzZXJSb2xlLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDaGlwTGxtIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvQ2hpcExsbSdcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL0xvYWRlcidcblxuZXhwb3J0IGNvbnN0IENoYXRBSU1vZGFsSGVhZGVyID0gKHtcbiAgbGF5b3V0TW9kZSxcbiAgb25MYXlvdXRNb2RlQ2hhbmdlLFxuICBleHBhbmRlZCxcbiAgZHJhZ2dhYmxlID0gZmFsc2UsXG4gIG9uRHJhZ1N0YXJ0LFxuICBvbkRyYWdNb3ZlLFxuICBvbkRyYWdFbmQsXG4gIGhhbmRsZUNsb3NlID0gKCkgPT4gbnVsbCxcbiAgYWdlbnRzID0gW10sXG4gIGhhc0Vycm9yID0gZmFsc2UsXG4gIGxvYWRpbmcgPSBmYWxzZSxcbiAgbG9hZGluZ01vcmUgPSBmYWxzZSxcbiAgaGFzTW9yZSA9IGZhbHNlLFxuICBoYW5kbGVSZXNldENoYXQsXG4gIG9uQWdlbnRVcGRhdGUsXG4gIGxvYWRNb3JlQWdlbnRzLFxuICBzb3J0QWdlbnRzTGlzdCxcbiAgaGlkZUFnZW50U2VsZWN0b3IgPSBmYWxzZSxcbiAgb25BZ2VudFNlbGVjdGVkLFxufToge1xuICBsYXlvdXRNb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZVxuICBvbkxheW91dE1vZGVDaGFuZ2U6IChtb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSkgPT4gdm9pZFxuICBleHBhbmRlZDogYm9vbGVhblxuICBkcmFnZ2FibGU/OiBib29sZWFuXG4gIG9uRHJhZ1N0YXJ0PzogKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgb25EcmFnTW92ZT86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRHJhZ0VuZD86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIGhhbmRsZUNsb3NlPzogKCkgPT4gdm9pZFxuICBhZ2VudHM6IEFnZW50W11cbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgbG9hZGluZzogYm9vbGVhblxuICBsb2FkaW5nTW9yZT86IGJvb2xlYW5cbiAgaGFzTW9yZT86IGJvb2xlYW5cbiAgaGFuZGxlUmVzZXRDaGF0OiAoKSA9PiB2b2lkXG4gIG9uQWdlbnRVcGRhdGU/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBsb2FkTW9yZUFnZW50cz86ICgpID0+IHZvaWRcbiAgc29ydEFnZW50c0xpc3Q/OiAoKSA9PiB2b2lkXG4gIGhpZGVBZ2VudFNlbGVjdG9yPzogYm9vbGVhblxuICAvKipcbiAgICogU2UgaW52b2NhIGRlc3B1w6lzIGRlbCByZXNldCBjdWFuZG8gZWwgYWdlbnRlIHNlbGVjY2lvbmFkbyBOTyByZXF1aWVyZSBzZWxlY2Npw7NuXG4gICAqIGRlIGVudGl0eSAoY3VzdG9tIG8gY2xvbmUrZ2xvYmFsKS4gUGVybWl0ZSByZXNvbHZlciBgR0VUIC92Mi9zZXNzaW9ucy9hZ2VudC97aWR9YFxuICAgKiB5IG5hdmVnYXIgYSB1bmEgY29udmVyc2FjacOzbiBleGlzdGVudGUgc2kgbGEgaGF5LlxuICAgKi9cbiAgb25BZ2VudFNlbGVjdGVkPzogKGFnZW50OiBBZ2VudCkgPT4gdm9pZCB8IFByb21pc2U8dW5rbm93bj5cbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWdlbnQ6IHNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNlY3Rpb24gfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICAvLyBFbiBzZWN0aW9uICd0YXNrJyBlbCBtb2RhbCBkZSBNYWlhIHNlIGVsZXZhIHBvciBlbmNpbWEgZGVsIHRhc2sgcGFuZWwgKHotaW5kZXggOTgwMDAwMSkuXG4gIC8vIExvcyB0b29sdGlwcyBzZSBtb250YW4gZW4gcG9ydGFsIGNvbiB6LWluZGV4IDE1MDAgcG9yIGRlZmVjdG8sIGFzw60gcXVlIHF1ZWRhcsOtYW4gZGV0csOhcy5cbiAgLy8gU3ViaW1vcyBzdSB6LWluZGV4IHPDs2xvIGVuIGVzdGUgY2FzbyBwYXJhIHF1ZSBzZSB2ZWFuIHBvciBlbmNpbWEgZGVsIG1vZGFsLlxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gc2VjdGlvbiA9PT0gJ3Rhc2snID8gOTgwMDAwMiA6IHVuZGVmaW5lZFxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgdGV4dFJlZkFnZW50ID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGxheW91dE1lbnVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtsYXlvdXRNZW51T3Blbiwgc2V0TGF5b3V0TWVudU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXA6IHNob3dUb29sdGlwQWdlbnQgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWZBZ2VudCwgW3NlbGVjdGVkQWdlbnQ/Lm5hbWVdKVxuICBjb25zdCBhZ2VudHNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgY29uc3QgYWdlbnRzRm9yU2VsZWN0b3IgPSB1c2VNZW1vKCgpID0+IGFnZW50cy5maWx0ZXIoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5lbnRpdHkgIT09ICdnbG9iYWwnKSwgW2FnZW50c10pXG5cbiAgLy8gTWFuZWphciBzY3JvbGwgaW5maW5pdG8gcGFyYSBjYXJnYXIgbcOhcyBhZ2VudHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTb2xvIGN1YW5kbyBlbCBkcm9wZG93biBlc3TDqSBhYmllcnRvXG4gICAgaWYgKCFpc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFhZ2VudHNSZWYuY3VycmVudCB8fCAhbG9hZE1vcmVBZ2VudHMgfHwgIWhhc01vcmUgfHwgbG9hZGluZ01vcmUpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuXG4gICAgICAvLyBDYXJnYXIgbcOhcyAoNTBweCBhbnRlcylcbiAgICAgIGlmIChkaXN0YW5jZUZyb21Cb3R0b20gPCA1MCkge1xuICAgICAgICBsb2FkTW9yZUFnZW50cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGVsYXkgcGFyYSBhc2VndXJhciBxdWUgZWwgRE9NIGVzdMOpIHJlbmRlcml6YWRvXG4gICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzY3JvbGxFbGVtZW50KSB7XG4gICAgICAgIHNjcm9sbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH0sIDEwMClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IGFnZW50c1JlZi5jdXJyZW50XG4gICAgICBpZiAoc2Nyb2xsRWxlbWVudCkge1xuICAgICAgICBzY3JvbGxFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc0V4cGFuZGVkLCBsb2FkTW9yZUFnZW50cywgaGFzTW9yZSwgbG9hZGluZ01vcmVdKVxuXG4gIGNvbnN0IGxvY2FsQWdlbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/LmlzX2Zyb21fY29udmVyc2F0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRBZ2VudFxuICAgIH1cbiAgICBjb25zdCBmcm9tTGlzdCA9IGFnZW50cy5maW5kKFxuICAgICAgYWdlbnQgPT5cbiAgICAgICAgIWFnZW50LmlzX2RlbGV0ZWQgJiYgIWFnZW50Lmhhc19ub3RfcGVybWlzc2lvbnMgJiYgIWFnZW50Lmhhc19ub3RfYWNjZXNzICYmIGFnZW50LmlkID09PSBzZWxlY3RlZEFnZW50Py5pZFxuICAgIClcbiAgICAvLyBBZ2VudGUgaGlkcmF0YWRvIHBvciBHRVQgKHAuIGVqLiBudWV2byBjaGF0IHRyYXMgY3JlYXRlX2FnZW50KSBwdWVkZSBubyBlc3RhciBhw7puIGVuIGxhIGxpc3RhIHBhZ2luYWRhXG4gICAgcmV0dXJuIGZyb21MaXN0ID8/IHNlbGVjdGVkQWdlbnQgPz8gbnVsbFxuICB9LCBbYWdlbnRzLCBzZWxlY3RlZEFnZW50XSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudDogQWdlbnQpID0+IHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QWdlbnRTZWxlY3QsIHtcbiAgICAgICAgYWdlbnRfdHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaGFuZGxlUmVzZXRDaGF0KClcbiAgICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIGRlcGVuZGUgZGUgdW5hIGVudGl0eSAoY3VzdG9tIG8gY2xvbmUrZ2xvYmFsKSB5YSBwb2RlbW9zXG4gICAgICAgIC8vIHJlc29sdmVyIHNpIGV4aXN0ZSB1bmEgc2VzacOzbiBwcmV2aWEgeSwgZW4gZXNlIGNhc28sIG5hdmVnYXIgYSBlbGxhLlxuICAgICAgICAvLyBQYXJhIGNsb25lK3Byb2plY3R8Y2xpZW50LCBsYSByZXNvbHVjacOzbiBvY3VycmUgZW4gbG9zIHNlbGVjdG9ycyBkZSBlbnRpdHkuXG4gICAgICAgIGNvbnN0IG5lZWRzRW50aXR5ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcbiAgICAgICAgaWYgKCFuZWVkc0VudGl0eSkge1xuICAgICAgICAgIG9uQWdlbnRTZWxlY3RlZD8uKGFnZW50KVxuICAgICAgICB9XG4gICAgICB9LCAxMDApXG4gICAgfSxcbiAgICBbc2VsZWN0QWdlbnQsIGFtcGxpdHVkRXZlbnQsIGhhbmRsZVJlc2V0Q2hhdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBvbkFnZW50U2VsZWN0ZWRdXG4gIClcblxuICBjb25zdCBoYW5kbGVFeHBhbmRNb2RhbCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW5BZ2VudFNlbGVjdClcbiAgICAgIC8vIEN1YW5kbyBzZSBhYnJlIGVsIHNlbGVjdG9yLCBvcmRlbmFyIGxvcyBhZ2VudGVzXG4gICAgICBpZiAoc29ydEFnZW50c0xpc3QpIHtcbiAgICAgICAgc29ydEFnZW50c0xpc3QoKVxuICAgICAgfVxuICAgIH1cbiAgICBzZXRJc0V4cGFuZGVkKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCAmJiAhbGF5b3V0TWVudU9wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlXG4gICAgICBpZiAoaXNFeHBhbmRlZCAmJiBkcm9wZG93blJlZi5jdXJyZW50ICYmICFkcm9wZG93blJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChsYXlvdXRNZW51T3BlbiAmJiBsYXlvdXRNZW51UmVmLmN1cnJlbnQgJiYgIWxheW91dE1lbnVSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIHNldExheW91dE1lbnVPcGVuKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzRXhwYW5kZWQsIGxheW91dE1lbnVPcGVuXSlcblxuICBjb25zdCBoYW5kbGVQaWNrTGF5b3V0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5wcm9qZWN0UmVzdW1lRXhwYW5kLCB7XG4gICAgICAgIGV4cGFuZGVkOiBtb2RlID09PSAnZnVsbHNjcmVlbicsXG4gICAgICB9KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0U2VsZWN0Vmlld09wdGlvbnMsIHsgb3B0aW9uOiBtb2RlIH0pXG4gICAgICBvbkxheW91dE1vZGVDaGFuZ2UobW9kZSlcbiAgICAgIHNldExheW91dE1lbnVPcGVuKGZhbHNlKVxuICAgIH0sXG4gICAgW2FtcGxpdHVkRXZlbnQsIG9uTGF5b3V0TW9kZUNoYW5nZV1cbiAgKVxuXG4gIGNvbnN0IHVzZXJSb2xlc0Rpc2FibGVkID0gW0NPUlVzZXJSb2xlLkNPTExBQk9SQVRPUiwgQ09SVXNlclJvbGUuRlJFRUxBTkNFUiwgQ09SVXNlclJvbGUuQ0xJRU5UXVxuXG4gIGNvbnN0IHJlbmRlck1vZGFsID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlNSFdyYXBwZXJcbiAgICAgICAgcmVmPXtkcm9wZG93blJlZn1cbiAgICAgICAgZGF0YS1uby1kcmFnPVwidHJ1ZVwiXG4gICAgICAgIG9uQ2xpY2s9e2FnZW50cy5sZW5ndGggPyBoYW5kbGVFeHBhbmRNb2RhbCA6IHVuZGVmaW5lZH1cbiAgICAgICAgaWQ9XCJjaGF0LWFpLW1vZGFsLWhlYWRlci13cmFwcGVyXCJcbiAgICAgID5cbiAgICAgICAgPFNDQ0FJTUhTZWxlY3RlZEFnZW50PlxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgIHNob3dUb29sdGlwQWdlbnQgPyAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgIHtsb2NhbEFnZW50cz8udHlwZSA9PT0gJ2N1c3RvbScgPyBsb2NhbEFnZW50cz8uZW1vamkgOiA8TUFJQUljb24gLz59IHtsb2NhbEFnZW50cz8ubmFtZX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxhY2VtZW50PXtpc0V4cGFuZGVkID8gJ2xlZnQnIDogJ3RvcCd9XG4gICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dFxuICAgICAgICAgICAgICByZWY9e3RleHRSZWZBZ2VudH1cbiAgICAgICAgICAgICAgaXNBZ2VudERlbGV0ZWQ9e1xuICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCB8fCAhIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgISFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2Vzc1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzRweCcgfX0+XG4gICAgICAgICAgICAgICAge2xvY2FsQWdlbnRzPy50eXBlID09PSAnY3VzdG9tJyA/IGxvY2FsQWdlbnRzPy5lbW9qaSA6IDxNQUlBSWNvbiAvPn0ge2xvY2FsQWdlbnRzPy5uYW1lfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L1NDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvU0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgIDxTQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgICAgPENoZXZyb25Eb3duIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gY29sb3I9XCIjMjAyMDFGXCIgLz5cbiAgICAgICAgPC9TQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgIHtpc0V4cGFuZGVkICYmIChcbiAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAge3dpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgIXVzZXJSb2xlc0Rpc2FibGVkLmluY2x1ZGVzKHVzZXIucm9sZV9pZCkgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVBZ2VudHMgPSBhZ2VudHNGb3JTZWxlY3Rvci5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjbG9uZUFnZW50cy5sZW5ndGgpIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0NBSVdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNQUlBSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSBpc0Nsb25lPk1BSUEgYnkgQ09SPC9TQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSVdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSERpdmlkZXIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2Nsb25lQWdlbnRzLm1hcCgoY2xvbmVBZ2VudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENoYXRBSUFnZW50T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgYWdlbnQtJHtjbG9uZUFnZW50LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e2Nsb25lQWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gY2xvbmVBZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01haWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZhdm9yaXRlVG9nZ2xlPXtvbkFnZW50VXBkYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHthZ2VudHNGb3JTZWxlY3Rvci5zb21lKGFnZW50ID0+IGFnZW50LnR5cGUgPT09ICdjdXN0b20nKSAmJlxuICAgICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KCdhZ2VudHMnKX0gYnkge3VzZXIuY29tcGFueX1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxTQ0NBSU1IQWdlbnRzTGlzdCBoYXNNb3JlPXtoYXNNb3JlfSBhZ2VudHNDb3VudD17YWdlbnRzRm9yU2VsZWN0b3IubGVuZ3RofSByZWY9e2FnZW50c1JlZn0+XG4gICAgICAgICAgICAgICAge2FnZW50c0ZvclNlbGVjdG9yPy5tYXAoKGFnZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8uaXNfZGVsZXRlZCB8fFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgfHxcbiAgICAgICAgICAgICAgICAgICAgKGFnZW50Py50eXBlID09PSAnY3VzdG9tJyAmJiAhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke2FnZW50LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RBZ2VudD17aGFuZGxlU2VsZWN0QWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZD17c2V0SXNFeHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICB7bG9hZGluZ01vcmUgJiYgKFxuICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSEFnZW50c0xpc3Q+XG4gICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50PlxuICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNSFdyYXBwZXI+XG4gICAgKVxuICB9XG5cbiAgY29uc3Qgc2VsZWN0ZWRNb2RlbExsbSA9IHNlbGVjdGVkQWdlbnQ/Lm1vZGVsX2Rpc3BsYXlfbmFtZVxuICBjb25zdCBzZWxlY3RlZEFnZW50VHlwZSA9IHNlbGVjdGVkQWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nXG4gIGNvbnN0IHNob3VsZFJlbmRlclNlbGVjdG9yID1cbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgICFoaWRlQWdlbnRTZWxlY3RvciAmJlxuICAgICEhc2VsZWN0ZWRBZ2VudCAmJlxuICAgICghIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUylcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSU1ITW9kYWxcbiAgICAgICRoYXNFcnJvcj17aGFzRXJyb3J9XG4gICAgICAkbG9hZGluZz17bG9hZGluZ31cbiAgICAgICRoYXNBZ2VudHM9eyEhYWdlbnRzLmxlbmd0aH1cbiAgICAgIG9uUG9pbnRlckRvd249e2RyYWdnYWJsZSA/IG9uRHJhZ1N0YXJ0IDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyTW92ZT17ZHJhZ2dhYmxlID8gb25EcmFnTW92ZSA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlclVwPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBvblBvaW50ZXJDYW5jZWw9e2RyYWdnYWJsZSA/IG9uRHJhZ0VuZCA6IHVuZGVmaW5lZH1cbiAgICAgIG9uTG9zdFBvaW50ZXJDYXB0dXJlPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBzdHlsZT17eyBjdXJzb3I6IGRyYWdnYWJsZSA/ICdncmFiJyA6IHVuZGVmaW5lZCwgdG91Y2hBY3Rpb246IGRyYWdnYWJsZSA/ICdtYW5pcHVsYXRpb24nIDogdW5kZWZpbmVkIH19XG4gICAgPlxuICAgICAge3Nob3VsZFJlbmRlclNlbGVjdG9yID8gcmVuZGVyTW9kYWwoKSA6IDxkaXYgLz59XG4gICAgICA8U0NDQUlNSFdyYXBwZXJCdXR0b24gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICB7c2VsZWN0ZWRBZ2VudFR5cGUgJiYgc2VsZWN0ZWRNb2RlbExsbSAmJiA8Q2hpcExsbSBtb2RlbD17c2VsZWN0ZWRNb2RlbExsbX0gZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPn1cbiAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51QW5jaG9yIHJlZj17bGF5b3V0TWVudVJlZn0gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBidXR0b25JZD1cImJ0bi1tYWlhLWxheW91dC1tZW51XCJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghbGF5b3V0TWVudU9wZW4pIHtcbiAgICAgICAgICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRPcGVuVmlld09wdGlvbnMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2V0TGF5b3V0TWVudU9wZW4ocHJldiA9PiAhcHJldilcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB0b29sdGlwPXt0KCdsYXlvdXRNZW51VG9vbHRpcCcpfVxuICAgICAgICAgICAgZGlzYWJsZVRvb2x0aXA9e2xheW91dE1lbnVPcGVufVxuICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TWFpYUNoYXRMYXlvdXRNZW51SWNvbiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICB7bGF5b3V0TWVudU9wZW4gPyAoXG4gICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVQYW5lbCByb2xlPVwibWVudVwiPlxuICAgICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVSb3dcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtsYXlvdXRNb2RlID09PSAnc2lkZWJhcid9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnc2lkZWJhcicpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dFNpZGViYXInKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvdz5cbiAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgJGFjdGl2ZT17bGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVBpY2tMYXlvdXQoJ2Z1bGxzY3JlZW4nKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGdWxsc2NyZWVuJyl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVSb3c+XG4gICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICRhY3RpdmU9e2xheW91dE1vZGUgPT09ICdmbG9hdGluZyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnZmxvYXRpbmcnKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGbG9hdGluZycpfVxuICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93PlxuICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVBhbmVsPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51QW5jaG9yPlxuICAgICAgICA8SWNvbkJ1dHRvbiBoYW5kbGVDbGljaz17aGFuZGxlQ2xvc2V9IHRvb2x0aXA9e3QoJ2dsb2JhbHMuY2xvc2UnKX0gdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgPENyb3NzIC8+XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDwvU0NDQUlNSFdyYXBwZXJCdXR0b24+XG4gICAgPC9TQ0NBSU1ITW9kYWw+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sUUFBMkMsT0FBTztBQUM1RyxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxRQUFRLFFBQVEsaUNBQWlDO0FBQzFELFNBQVNDLGdCQUFnQixRQUFRLHVDQUF1QztBQUN4RSxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsU0FBU0MsVUFBVSxRQUFRLDhCQUE4QjtBQUN6RCxTQUFTQyxRQUFRLEVBQUVDLHNCQUFzQixRQUFRLHlCQUF5QjtBQUMxRSxTQUFTQyxpQkFBaUIsUUFBUSwwQ0FBMEM7QUFDNUUsU0FDRUMsWUFBWSxFQUNaQyxvQkFBb0IsRUFDcEJDLHdCQUF3QixFQUN4QkMsY0FBYyxFQUNkQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMsbUJBQW1CLEVBQ25CQywwQkFBMEIsRUFDMUJDLCtCQUErQixFQUMvQkMsY0FBYyxFQUNkQyxpQkFBaUIsRUFDakJDLG9CQUFvQixFQUNwQkMsWUFBWSxFQUNaQyx1QkFBdUIsRUFDdkJDLHNCQUFzQixFQUN0QkMsb0JBQW9CLFFBQ2YsNEJBQTRCO0FBRW5DLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLCtCQUErQjtBQUNoRSxTQUFTQyxXQUFXLEVBQUVDLE9BQU8sUUFBUSxpQ0FBaUM7QUFFdEUsU0FBU0MsT0FBTyxRQUFRLDJCQUEyQjtBQUNuRCxTQUFTQyxNQUFNLFFBQVEsMEJBQTBCO0FBQUEsU0FBQUMsR0FBQSxJQUFB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
@@ -1,5 +1,5 @@
1
1
  import { CORUserRole } from '../../context/cor-user';
2
- var DISABLED_ROLES = [CORUserRole.CLIENT, CORUserRole.FREELANCER, CORUserRole.COLLABORATOR];
2
+ var DISABLED_ROLES = [CORUserRole.CLIENT, CORUserRole.FREELANCER];
3
3
  var canAccessToFeature = function canAccessToFeature(feature) {
4
4
  var FEATURE_ACCESS = feature in window && Boolean(window[feature]);
5
5
  return FEATURE_ACCESS;
@@ -12,4 +12,4 @@ export var canAccessToChatAI = function canAccessToChatAI(user) {
12
12
  var MAIA_CHAT_AI_ENABLED = canAccessToFeature('MAIA_CHAT_AI_FEATURE_ACCESS') || canAccessToFeature('MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS') || canAccessToFeature('MAIA_PROJECT_SUMMARY_FEATURE_ACCESS');
13
13
  return MAIA_CHAT_AI_ENABLED && user.role_id && !DISABLED_ROLES.includes(user.role_id);
14
14
  };
15
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT1JVc2VyUm9sZSIsIkRJU0FCTEVEX1JPTEVTIiwiQ0xJRU5UIiwiRlJFRUxBTkNFUiIsIkNPTExBQk9SQVRPUiIsImNhbkFjY2Vzc1RvRmVhdHVyZSIsImZlYXR1cmUiLCJGRUFUVVJFX0FDQ0VTUyIsIndpbmRvdyIsIkJvb2xlYW4iLCJjYW5BY2Nlc3NUb1Byb2plY3RTdW1tYXJ5IiwidXNlciIsIk1BSUFfUFJPSkVDVF9TVU1NQVJZX0VOQUJMRUQiLCJyb2xlX2lkIiwiaW5jbHVkZXMiLCJjYW5BY2Nlc3NUb0NoYXRBSSIsIk1BSUFfQ0hBVF9BSV9FTkFCTEVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnN0YW50cy9wZXJtaXNzaW9ucy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT1JVc2VyLCBDT1JVc2VyUm9sZSB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5cbmNvbnN0IERJU0FCTEVEX1JPTEVTID0gW0NPUlVzZXJSb2xlLkNMSUVOVCwgQ09SVXNlclJvbGUuRlJFRUxBTkNFUiwgQ09SVXNlclJvbGUuQ09MTEFCT1JBVE9SXVxuXG5jb25zdCBjYW5BY2Nlc3NUb0ZlYXR1cmUgPSAoZmVhdHVyZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IEZFQVRVUkVfQUNDRVNTID0gZmVhdHVyZSBpbiB3aW5kb3cgJiYgQm9vbGVhbih3aW5kb3dbZmVhdHVyZV0pXG5cbiAgcmV0dXJuIEZFQVRVUkVfQUNDRVNTXG59XG5cbmV4cG9ydCBjb25zdCBjYW5BY2Nlc3NUb1Byb2plY3RTdW1tYXJ5ID0gKHVzZXI6IENPUlVzZXIpID0+IHtcbiAgY29uc3QgTUFJQV9QUk9KRUNUX1NVTU1BUllfRU5BQkxFRCA9XG4gICAgY2FuQWNjZXNzVG9GZWF0dXJlKCdNQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUycpIHx8XG4gICAgY2FuQWNjZXNzVG9GZWF0dXJlKCdNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTJykgfHxcbiAgICBjYW5BY2Nlc3NUb0ZlYXR1cmUoJ01BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUycpXG5cbiAgcmV0dXJuIE1BSUFfUFJPSkVDVF9TVU1NQVJZX0VOQUJMRUQgJiYgdXNlci5yb2xlX2lkICYmICFESVNBQkxFRF9ST0xFUy5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpXG59XG5cbmV4cG9ydCBjb25zdCBjYW5BY2Nlc3NUb0NoYXRBSSA9ICh1c2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IE1BSUFfQ0hBVF9BSV9FTkFCTEVEID1cbiAgICBjYW5BY2Nlc3NUb0ZlYXR1cmUoJ01BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUycpIHx8XG4gICAgY2FuQWNjZXNzVG9GZWF0dXJlKCdNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTJykgfHxcbiAgICBjYW5BY2Nlc3NUb0ZlYXR1cmUoJ01BSUFfUFJPSkVDVF9TVU1NQVJZX0ZFQVRVUkVfQUNDRVNTJylcblxuICByZXR1cm4gTUFJQV9DSEFUX0FJX0VOQUJMRUQgJiYgdXNlci5yb2xlX2lkICYmICFESVNBQkxFRF9ST0xFUy5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQWtCQSxXQUFXLFFBQVEsd0JBQXdCO0FBRTdELElBQU1DLGNBQWMsR0FBRyxDQUFDRCxXQUFXLENBQUNFLE1BQU0sRUFBRUYsV0FBVyxDQUFDRyxVQUFVLEVBQUVILFdBQVcsQ0FBQ0ksWUFBWSxDQUFDO0FBRTdGLElBQU1DLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUlDLE9BQWUsRUFBSztFQUM5QyxJQUFNQyxjQUFjLEdBQUdELE9BQU8sSUFBSUUsTUFBTSxJQUFJQyxPQUFPLENBQUNELE1BQU0sQ0FBQ0YsT0FBTyxDQUFDLENBQUM7RUFFcEUsT0FBT0MsY0FBYztBQUN2QixDQUFDO0FBRUQsT0FBTyxJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJQyxJQUFhLEVBQUs7RUFDMUQsSUFBTUMsNEJBQTRCLEdBQ2hDUCxrQkFBa0IsQ0FBQyxxQ0FBcUMsQ0FBQyxJQUN6REEsa0JBQWtCLENBQUMsMENBQTBDLENBQUMsSUFDOURBLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDO0VBRW5ELE9BQU9PLDRCQUE0QixJQUFJRCxJQUFJLENBQUNFLE9BQU8sSUFBSSxDQUFDWixjQUFjLENBQUNhLFFBQVEsQ0FBQ0gsSUFBSSxDQUFDRSxPQUFPLENBQUM7QUFDL0YsQ0FBQztBQUVELE9BQU8sSUFBTUUsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUosSUFBYSxFQUFLO0VBQ2xELElBQU1LLG9CQUFvQixHQUN4Qlgsa0JBQWtCLENBQUMsNkJBQTZCLENBQUMsSUFDakRBLGtCQUFrQixDQUFDLDBDQUEwQyxDQUFDLElBQzlEQSxrQkFBa0IsQ0FBQyxxQ0FBcUMsQ0FBQztFQUUzRCxPQUFPVyxvQkFBb0IsSUFBSUwsSUFBSSxDQUFDRSxPQUFPLElBQUksQ0FBQ1osY0FBYyxDQUFDYSxRQUFRLENBQUNILElBQUksQ0FBQ0UsT0FBTyxDQUFDO0FBQ3ZGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT1JVc2VyUm9sZSIsIkRJU0FCTEVEX1JPTEVTIiwiQ0xJRU5UIiwiRlJFRUxBTkNFUiIsImNhbkFjY2Vzc1RvRmVhdHVyZSIsImZlYXR1cmUiLCJGRUFUVVJFX0FDQ0VTUyIsIndpbmRvdyIsIkJvb2xlYW4iLCJjYW5BY2Nlc3NUb1Byb2plY3RTdW1tYXJ5IiwidXNlciIsIk1BSUFfUFJPSkVDVF9TVU1NQVJZX0VOQUJMRUQiLCJyb2xlX2lkIiwiaW5jbHVkZXMiLCJjYW5BY2Nlc3NUb0NoYXRBSSIsIk1BSUFfQ0hBVF9BSV9FTkFCTEVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnN0YW50cy9wZXJtaXNzaW9ucy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT1JVc2VyLCBDT1JVc2VyUm9sZSB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5cbmNvbnN0IERJU0FCTEVEX1JPTEVTID0gW0NPUlVzZXJSb2xlLkNMSUVOVCwgQ09SVXNlclJvbGUuRlJFRUxBTkNFUl1cblxuY29uc3QgY2FuQWNjZXNzVG9GZWF0dXJlID0gKGZlYXR1cmU6IHN0cmluZykgPT4ge1xuICBjb25zdCBGRUFUVVJFX0FDQ0VTUyA9IGZlYXR1cmUgaW4gd2luZG93ICYmIEJvb2xlYW4od2luZG93W2ZlYXR1cmVdKVxuXG4gIHJldHVybiBGRUFUVVJFX0FDQ0VTU1xufVxuXG5leHBvcnQgY29uc3QgY2FuQWNjZXNzVG9Qcm9qZWN0U3VtbWFyeSA9ICh1c2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IE1BSUFfUFJPSkVDVF9TVU1NQVJZX0VOQUJMRUQgPVxuICAgIGNhbkFjY2Vzc1RvRmVhdHVyZSgnTUFJQV9QUk9KRUNUX1NVTU1BUllfRkVBVFVSRV9BQ0NFU1MnKSB8fFxuICAgIGNhbkFjY2Vzc1RvRmVhdHVyZSgnTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUycpIHx8XG4gICAgY2FuQWNjZXNzVG9GZWF0dXJlKCdNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MnKVxuXG4gIHJldHVybiBNQUlBX1BST0pFQ1RfU1VNTUFSWV9FTkFCTEVEICYmIHVzZXIucm9sZV9pZCAmJiAhRElTQUJMRURfUk9MRVMuaW5jbHVkZXModXNlci5yb2xlX2lkKVxufVxuXG5leHBvcnQgY29uc3QgY2FuQWNjZXNzVG9DaGF0QUkgPSAodXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBNQUlBX0NIQVRfQUlfRU5BQkxFRCA9XG4gICAgY2FuQWNjZXNzVG9GZWF0dXJlKCdNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MnKSB8fFxuICAgIGNhbkFjY2Vzc1RvRmVhdHVyZSgnTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUycpIHx8XG4gICAgY2FuQWNjZXNzVG9GZWF0dXJlKCdNQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUycpXG5cbiAgcmV0dXJuIE1BSUFfQ0hBVF9BSV9FTkFCTEVEICYmIHVzZXIucm9sZV9pZCAmJiAhRElTQUJMRURfUk9MRVMuaW5jbHVkZXModXNlci5yb2xlX2lkKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFrQkEsV0FBVyxRQUFRLHdCQUF3QjtBQUU3RCxJQUFNQyxjQUFjLEdBQUcsQ0FBQ0QsV0FBVyxDQUFDRSxNQUFNLEVBQUVGLFdBQVcsQ0FBQ0csVUFBVSxDQUFDO0FBRW5FLElBQU1DLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUlDLE9BQWUsRUFBSztFQUM5QyxJQUFNQyxjQUFjLEdBQUdELE9BQU8sSUFBSUUsTUFBTSxJQUFJQyxPQUFPLENBQUNELE1BQU0sQ0FBQ0YsT0FBTyxDQUFDLENBQUM7RUFFcEUsT0FBT0MsY0FBYztBQUN2QixDQUFDO0FBRUQsT0FBTyxJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJQyxJQUFhLEVBQUs7RUFDMUQsSUFBTUMsNEJBQTRCLEdBQ2hDUCxrQkFBa0IsQ0FBQyxxQ0FBcUMsQ0FBQyxJQUN6REEsa0JBQWtCLENBQUMsMENBQTBDLENBQUMsSUFDOURBLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDO0VBRW5ELE9BQU9PLDRCQUE0QixJQUFJRCxJQUFJLENBQUNFLE9BQU8sSUFBSSxDQUFDWCxjQUFjLENBQUNZLFFBQVEsQ0FBQ0gsSUFBSSxDQUFDRSxPQUFPLENBQUM7QUFDL0YsQ0FBQztBQUVELE9BQU8sSUFBTUUsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUosSUFBYSxFQUFLO0VBQ2xELElBQU1LLG9CQUFvQixHQUN4Qlgsa0JBQWtCLENBQUMsNkJBQTZCLENBQUMsSUFDakRBLGtCQUFrQixDQUFDLDBDQUEwQyxDQUFDLElBQzlEQSxrQkFBa0IsQ0FBQyxxQ0FBcUMsQ0FBQztFQUUzRCxPQUFPVyxvQkFBb0IsSUFBSUwsSUFBSSxDQUFDRSxPQUFPLElBQUksQ0FBQ1gsY0FBYyxDQUFDWSxRQUFRLENBQUNILElBQUksQ0FBQ0UsT0FBTyxDQUFDO0FBQ3ZGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -17,8 +17,7 @@ import { useState, useCallback, useRef } from 'react';
17
17
  import { useTranslation } from 'react-i18next';
18
18
  import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
19
19
  import { fetchMaia } from '../client';
20
- import { useUser } from '../../../context/cor-user';
21
- import { isMaiaCloneAgentsRoleBlocked, logMaiaAccessDebug } from '../../../constants/maiaTaskPanelAccess';
20
+ import { useUser, CORUserRole } from '../../../context/cor-user';
22
21
  import { mapCORLang } from '../../../lang/utils';
23
22
 
24
23
  /**
@@ -80,7 +79,7 @@ export var useGetAgents = function useGetAgents(_ref) {
80
79
  var lastSelectedAgentRef = useRef(null);
81
80
  var isRefreshingRef = useRef(false);
82
81
  var lastRequestRef = useRef(null);
83
- var cloneAgentsRoleBlocked = isMaiaCloneAgentsRoleBlocked(user, section);
82
+ var userRolesDisabled = [CORUserRole.COLLABORATOR, CORUserRole.FREELANCER, CORUserRole.CLIENT];
84
83
  var addAgent = useCallback(function (newAgent, options) {
85
84
  setAgents(function (prev) {
86
85
  // Verificar si el agente ya existe para evitar duplicados
@@ -202,10 +201,6 @@ export var useGetAgents = function useGetAgents(_ref) {
202
201
  setLoading(true);
203
202
  setError(null);
204
203
  isMultiAgents = !!window.MAIA_CHAT_AI_FEATURE_ACCESS && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
205
- logMaiaAccessDebug('getAgents fetch start', user, section, {
206
- clone_agents_role_blocked: cloneAgentsRoleBlocked,
207
- is_multi_agents: isMultiAgents
208
- });
209
204
  _context.prev = 3;
210
205
  agentParsed = [];
211
206
  hasMore = false;
@@ -216,7 +211,7 @@ export var useGetAgents = function useGetAgents(_ref) {
216
211
  }
217
212
  // Query 1: Agentes clone (Maia) - Solo para roles permitidos. Pueden venir múltiples agentes tipo clone
218
213
  cloneAgents = [];
219
- if (cloneAgentsRoleBlocked) {
214
+ if (userRolesDisabled.includes(user.role_id)) {
220
215
  _context.next = 9;
221
216
  break;
222
217
  }
@@ -297,12 +292,12 @@ export var useGetAgents = function useGetAgents(_ref) {
297
292
  case 15:
298
293
  // Combinar: agentes clone primero, luego los custom (si existen)
299
294
  // Si el usuario tiene un rol deshabilitado, no incluir cloneAgents
300
- if (cloneAgentsRoleBlocked) {
301
- // Rol sin acceso a clones MAIA PM (p. ej. collaborator fuera del piloto): solo customAgents
295
+ if (userRolesDisabled.includes(user.role_id)) {
296
+ // Usuario de roles disabled: solo customAgents
302
297
  // Si customAgents está vacío (por 403), agentParsed será []
303
298
  agentParsed = customAgents;
304
299
  } else {
305
- // Rol con acceso a clones: cloneAgents + customAgents
300
+ // Usuario normal: cloneAgents + customAgents
306
301
  // Si customAgents está vacío (por 403) pero hay cloneAgents, agentParsed tendrá los clones
307
302
  // Si no hay cloneAgents ni customAgents, agentParsed será []
308
303
  agentParsed = cloneAgents.length ? [].concat(_toConsumableArray(cloneAgents), _toConsumableArray(customAgents)) : customAgents;
@@ -316,13 +311,6 @@ export var useGetAgents = function useGetAgents(_ref) {
316
311
  has_more: hasMore,
317
312
  next_offset: nextOffset
318
313
  });
319
- logMaiaAccessDebug('getAgents fetch result', user, section, {
320
- agents_count: agentParsed.length,
321
- clone_agents_count: agentParsed.filter(function (ag) {
322
- return ag.type === 'clone';
323
- }).length,
324
- clone_agents_role_blocked: cloneAgentsRoleBlocked
325
- });
326
314
 
327
315
  // Si no hay agentes después de procesar las queries, limpiar el error
328
316
  if (agentParsed.length === 0) {
@@ -404,7 +392,7 @@ export var useGetAgents = function useGetAgents(_ref) {
404
392
  } else if ((_agentParsed = agentParsed) !== null && _agentParsed !== void 0 && _agentParsed[0] && (!agent || !agentParsed.find(function (a) {
405
393
  return a.id === agent.id;
406
394
  }))) {
407
- availableAgents = window.MAIA_CHAT_AI_FEATURE_ACCESS && !cloneAgentsRoleBlocked ? agentParsed : agentParsed.filter(function (agentItem) {
395
+ availableAgents = window.MAIA_CHAT_AI_FEATURE_ACCESS && !userRolesDisabled.includes(user.role_id) ? agentParsed : agentParsed.filter(function (agentItem) {
408
396
  return agentItem.type !== 'clone';
409
397
  });
410
398
  _availableAgents = _slicedToArray(availableAgents, 1), firstAgent = _availableAgents[0];
@@ -413,7 +401,7 @@ export var useGetAgents = function useGetAgents(_ref) {
413
401
  selectAgent(firstAgent);
414
402
  }
415
403
  } else if (agentToSelect && (_agentParsed2 = agentParsed) !== null && _agentParsed2 !== void 0 && _agentParsed2.length) {
416
- _availableAgents2 = window.MAIA_CHAT_AI_FEATURE_ACCESS && !cloneAgentsRoleBlocked ? agentParsed : agentParsed.filter(function (agentItem) {
404
+ _availableAgents2 = window.MAIA_CHAT_AI_FEATURE_ACCESS && !userRolesDisabled.includes(user.role_id) ? agentParsed : agentParsed.filter(function (agentItem) {
417
405
  return agentItem.type !== 'clone';
418
406
  });
419
407
  _availableAgents3 = _slicedToArray(_availableAgents2, 1), firstAvailableAgent = _availableAgents3[0];
@@ -449,7 +437,7 @@ export var useGetAgents = function useGetAgents(_ref) {
449
437
  return function (_x) {
450
438
  return _ref5.apply(this, arguments);
451
439
  };
452
- }(), [selectAgent, section, agent, loading, cloneAgentsRoleBlocked, i18n.language]);
440
+ }(), [selectAgent, section, agent, loading]);
453
441
  var loadMoreAgents = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
454
442
  var isMultiAgents, canLoadMore, path, queryParams, response, data, _t5;
455
443
  return _regeneratorRuntime.wrap(function (_context2) {
@@ -573,4 +561,4 @@ export var useGetAgents = function useGetAgents(_ref) {
573
561
  sortAgentsList: sortAgentsList
574
562
  };
575
563
  };
576
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ1c2VVc2VyIiwiaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsImxvZ01haWFBY2Nlc3NEZWJ1ZyIsIm1hcENPUkxhbmciLCJzb3J0QWdlbnRzIiwiYWdlbnRzIiwiY2xvbmVBZ2VudHMiLCJmaWx0ZXIiLCJhZyIsInR5cGUiLCJvdGhlckFnZW50cyIsImZhdm9yaXRlcyIsImlzX2Zhdm9yaXRlIiwic29ydCIsImEiLCJiIiwibmFtZSIsImxvY2FsZUNvbXBhcmUiLCJub25GYXZvcml0ZXMiLCJsZW5ndGgiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJ1c2VHZXRBZ2VudHMiLCJfcmVmIiwic2VsZWN0QWdlbnQiLCJzZWN0aW9uIiwiYWdlbnQiLCJoYW5kbGVHb0hvbWUiLCJ1c2VyIiwiX3VzZVN0YXRlIiwiZGF0YSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldEFnZW50cyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxvYWRpbmdNb3JlIiwic2V0TG9hZGluZ01vcmUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJpMThuIiwibGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJpc1JlZnJlc2hpbmdSZWYiLCJsYXN0UmVxdWVzdFJlZiIsImNsb25lQWdlbnRzUm9sZUJsb2NrZWQiLCJhZGRBZ2VudCIsIm5ld0FnZW50Iiwib3B0aW9ucyIsInByZXYiLCJhZ2VudEV4aXN0cyIsInNvbWUiLCJleGlzdGluZ0FnZW50IiwiaWQiLCJuZXdEYXRhIiwic29ydGVkRGF0YSIsIl9vYmplY3RTcHJlYWQiLCJuYXZpZ2F0ZUhvbWUiLCJyZW1vdmVBZ2VudCIsImFnZW50SWQiLCJ0b1N0cmluZyIsInVwZGF0ZUFnZW50IiwidXBkYXRlZEFnZW50IiwidXBkYXRlZERhdGEiLCJtYXAiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2hvdWxkU29ydCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYyIiwibWVzc2FnZSIsImFnZW50RmllbGRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwibWVyZ2VkQWdlbnQiLCJmaW5hbERhdGEiLCJmaW5kIiwiX3JlZjMiLCJfZXhjbHVkZWQyIiwiX3JlZjQiLCJfZXhjbHVkZWQzIiwic29ydEFnZW50c0xpc3QiLCJzZWxlY3RGaXJzdEFnZW50IiwiZmlyc3RBZ2VudCIsImZpbmRJbmRleCIsImFnZW50RGF0YSIsImN1cnJlbnQiLCJoYW5kbGVHZXRBZ2VudHMiLCJfcmVmNSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiYWdlbnRUb1NlbGVjdCIsIl9hZ2VudFRvU2VsZWN0JGlkIiwicmVxdWVzdEtleSIsImlzTXVsdGlBZ2VudHMiLCJhZ2VudFBhcnNlZCIsImhhc01vcmUiLCJuZXh0T2Zmc2V0IiwiX21haWFEYXRhJGRhdGEiLCJvcmRlclBhcmFtIiwibWFpYVJlc3BvbnNlIiwibWFpYURhdGEiLCJfbWFpYUVycm9yJHJlc3BvbnNlIiwiX21haWFFcnJvciRtZXNzYWdlIiwiX21haWFFcnJvciRtZXNzYWdlMiIsImlzNDAzRXJyb3IiLCJjdXN0b21BZ2VudHMiLCJjdXN0b21IYXNNb3JlIiwiY3VzdG9tTmV4dE9mZnNldCIsImN1c3RvbVJlc3BvbnNlIiwiY3VzdG9tRGF0YSIsIl9jdXN0b21FcnJvciRyZXNwb25zZSIsIl9jdXN0b21FcnJvciRtZXNzYWdlIiwiX2N1c3RvbUVycm9yJG1lc3NhZ2UyIiwiX2lzNDAzRXJyb3IiLCJxdWVyeVBhcmFtcyIsInF1ZXJ5U3RyaW5nIiwicGF0aCIsInJlc3BvbnNlIiwiX3Jlc3BvbnNlRXJyb3IkcmVzcG9uIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnMiIsIl9pczQwM0Vycm9yMiIsIl9hZ2VudFBhcnNlZCIsIl9hZ2VudFBhcnNlZDIiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYyIiwiYXZhaWxhYmxlQWdlbnRzIiwiX2F2YWlsYWJsZUFnZW50cyIsIl9sYXN0U2VsZWN0ZWRBZ2VudFJlZjMiLCJfYXZhaWxhYmxlQWdlbnRzMiIsIl9hdmFpbGFibGVBZ2VudHMzIiwiZmlyc3RBdmFpbGFibGVBZ2VudCIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0Iiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsImFicnVwdCIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJjbG9uZV9hZ2VudHNfcm9sZV9ibG9ja2VkIiwiaXNfbXVsdGlfYWdlbnRzIiwibGFuZ3VhZ2UiLCJtZXRob2QiLCJzZW50IiwianNvbiIsInN0YXR1cyIsImluY2x1ZGVzIiwiaGFzX21vcmUiLCJuZXh0X29mZnNldCIsImFnZW50c19jb3VudCIsImNsb25lX2FnZW50c19jb3VudCIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsImFnZW50VG9SZXF1ZXN0IiwiYWdlbnRJdGVtIiwiRXJyb3IiLCJzZXRUaW1lb3V0IiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJsb2FkTW9yZUFnZW50cyIsIl9jYWxsZWUyIiwiY2FuTG9hZE1vcmUiLCJfdDUiLCJfY29udGV4dDIiLCJleGlzdGluZ0Nsb25lQWdlbnRzIiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJuZXdBZ2VudHMiLCJoYXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCwgbG9nTWFpYUFjY2Vzc0RlYnVnIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL21haWFUYXNrUGFuZWxBY2Nlc3MnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcblxuLyoqXG4gKiBPcmRlbmEgbG9zIGFnZW50ZXM6IGFnZW50ZXMgY2xvbmUgcHJpbWVybyAoc2kgZXhpc3RlbiksIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICovXG5jb25zdCBzb3J0QWdlbnRzID0gKGFnZW50czogQWdlbnRbXSk6IEFnZW50W10gPT4ge1xuICAvLyBTZXBhcmFyIGFnZW50ZXMgY2xvbmUgZGVsIHJlc3RvXG4gIGNvbnN0IGNsb25lQWdlbnRzID0gYWdlbnRzLmZpbHRlcihhZyA9PiBhZy50eXBlID09PSAnY2xvbmUnKVxuICBjb25zdCBvdGhlckFnZW50cyA9IGFnZW50cy5maWx0ZXIoYWcgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJylcblxuICAvLyBTZXBhcmFyIGZhdm9yaXRvcyB5IG5vIGZhdm9yaXRvc1xuICBjb25zdCBmYXZvcml0ZXMgPSBvdGhlckFnZW50cy5maWx0ZXIoYWcgPT4gYWcuaXNfZmF2b3JpdGUpLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gIGNvbnN0IG5vbkZhdm9yaXRlcyA9IG90aGVyQWdlbnRzLmZpbHRlcihhZyA9PiAhYWcuaXNfZmF2b3JpdGUpLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG5cbiAgLy8gQ29tYmluYXI6IGNsb25lcyBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MsIGx1ZWdvIG5vIGZhdm9yaXRvc1xuICByZXR1cm4gY2xvbmVBZ2VudHMubGVuZ3RoID8gWy4uLmNsb25lQWdlbnRzLCAuLi5mYXZvcml0ZXMsIC4uLm5vbkZhdm9yaXRlc10gOiBbLi4uZmF2b3JpdGVzLCAuLi5ub25GYXZvcml0ZXNdXG59XG5cbnR5cGUgVXNlR2V0QWdlbnRzUHJvcHMgPSB7XG4gIHNlbGVjdEFnZW50OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIHNlY3Rpb246ICdwcm9qZWN0JyB8ICdoZWFkZXInIHwgJ2NsaWVudCcgfCAndGFzaydcbiAgYWdlbnQ6IEFnZW50IHwgbnVsbFxuICBoYW5kbGVHb0hvbWU6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgQWRkQWdlbnRPcHRpb25zID0ge1xuICAvKiogUG9yIGRlZmVjdG8gYHRydWVgIChjb21wb3J0YW1pZW50byBBQk0pLiBQYXNhciBgZmFsc2VgIGFsIGluc2VydGFyIGFnZW50ZSBjcmVhZG8gcG9yIGNoYXQgc2luIGNhbWJpYXIgZGUgdmlzdGEuICovXG4gIG5hdmlnYXRlSG9tZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHVzZUdldEFnZW50cyA9ICh7IHNlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgaGFuZGxlR29Ib21lIH06IFVzZUdldEFnZW50c1Byb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgW2FnZW50cywgc2V0QWdlbnRzXSA9IHVzZVN0YXRlPHsgZGF0YTogQWdlbnRbXTsgaGFzX21vcmU/OiBib29sZWFuOyBuZXh0X29mZnNldD86IG51bWJlciB8IG51bGwgfT4oeyBkYXRhOiBbXSB9KVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNb3JlLCBzZXRMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oJ2NoYXRfYWlfc2VjdGlvbicpXG4gIGNvbnN0IGxhc3RTZWxlY3RlZEFnZW50UmVmID0gdXNlUmVmPEFnZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNSZWZyZXNoaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBsYXN0UmVxdWVzdFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGNsb25lQWdlbnRzUm9sZUJsb2NrZWQgPSBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkKHVzZXIsIHNlY3Rpb24pXG5cbiAgY29uc3QgYWRkQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3QWdlbnQ6IEFnZW50LCBvcHRpb25zPzogQWRkQWdlbnRPcHRpb25zKSA9PiB7XG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBhZ2VudGUgeWEgZXhpc3RlIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcbiAgICAgICAgY29uc3QgYWdlbnRFeGlzdHMgPSBwcmV2LmRhdGEuc29tZShleGlzdGluZ0FnZW50ID0+IGV4aXN0aW5nQWdlbnQuaWQgPT09IG5ld0FnZW50LmlkKVxuICAgICAgICBpZiAoYWdlbnRFeGlzdHMpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4ucHJldi5kYXRhLCBuZXdBZ2VudF1cbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBpZiAob3B0aW9ucz8ubmF2aWdhdGVIb21lICE9PSBmYWxzZSkge1xuICAgICAgICBoYW5kbGVHb0hvbWUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUdvSG9tZV1cbiAgKVxuXG4gIGNvbnN0IHJlbW92ZUFnZW50ID0gdXNlQ2FsbGJhY2soKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZGF0YTogcHJldi5kYXRhLmZpbHRlcihhID0+IGEuaWQgIT09IGFnZW50SWQudG9TdHJpbmcoKSksXG4gICAgfSkpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUFnZW50ID0gdXNlQ2FsbGJhY2soKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHByZXYuZGF0YS5tYXAoZXhpc3RpbmdBZ2VudCA9PlxuICAgICAgICBleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQgPyB1cGRhdGVkQWdlbnQgOiBleGlzdGluZ0FnZW50XG4gICAgICApXG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyh1cGRhdGVkRGF0YSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlQWdlbnRGYXZvcml0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVkQWdlbnQ6IEFnZW50LCBzaG91bGRTb3J0OiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBwcmV2LmRhdGEubWFwKGV4aXN0aW5nQWdlbnQgPT4ge1xuICAgICAgICAgIGlmIChleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZEFnZW50ID0geyAuLi5leGlzdGluZ0FnZW50LCAuLi5hZ2VudEZpZWxkcyB9XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkQWdlbnRcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQWdlbnRcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTb2xvIG9yZGVuYXIgc2kgc2hvdWxkU29ydCBlcyB0cnVlXG4gICAgICAgIGNvbnN0IGZpbmFsRGF0YSA9IHNob3VsZFNvcnQgPyBzb3J0QWdlbnRzKHVwZGF0ZWREYXRhKSA6IHVwZGF0ZWREYXRhXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IGZpbmFsRGF0YSxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gQWN0dWFsaXphciBlbCBhZ2VudGUgc2VsZWNjaW9uYWRvIHNpIGVzIGVsIHF1ZSBzZSBlc3TDoSBhY3R1YWxpemFuZG9cbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCkge1xuICAgICAgICBjb25zdCBleGlzdGluZ0FnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhID0+IGEuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZClcbiAgICAgICAgaWYgKGV4aXN0aW5nQWdlbnQpIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgY29uc3QgbWVyZ2VkQWdlbnQgPSB7IC4uLmV4aXN0aW5nQWdlbnQsIC4uLmFnZW50RmllbGRzIH1cbiAgICAgICAgICBzZWxlY3RBZ2VudChtZXJnZWRBZ2VudClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRGaWVsZHMgYXMgQWdlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50cy5kYXRhXVxuICApXG5cbiAgY29uc3Qgc29ydEFnZW50c0xpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMocHJldi5kYXRhKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBzZWxlY3RGaXJzdEFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChhZ2VudHMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmRJbmRleChhZ2VudERhdGEgPT4gYWdlbnREYXRhLmlkID09PSBhZ2VudElkKVxuICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRzLmRhdGFbZmlyc3RBZ2VudCA9PT0gMCA/IDEgOiAwXVxuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVtmaXJzdEFnZW50ID09PSAwID8gMSA6IDBdKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50cy5kYXRhLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdldEFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhZ2VudFRvU2VsZWN0PzogQWdlbnQpID0+IHtcbiAgICAgIGlmIChpc1JlZnJlc2hpbmdSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdEtleSA9IGFnZW50VG9TZWxlY3Q/LmlkPy50b1N0cmluZygpIHx8ICdkZWZhdWx0J1xuICAgICAgaWYgKGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPT09IHJlcXVlc3RLZXkgJiYgIWxvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgbGFzdFJlcXVlc3RSZWYuY3VycmVudCA9IHJlcXVlc3RLZXlcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldEVycm9yKG51bGwpXG5cbiAgICAgIGNvbnN0IGlzTXVsdGlBZ2VudHMgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gICAgICBsb2dNYWlhQWNjZXNzRGVidWcoJ2dldEFnZW50cyBmZXRjaCBzdGFydCcsIHVzZXIsIHNlY3Rpb24sIHtcbiAgICAgICAgY2xvbmVfYWdlbnRzX3JvbGVfYmxvY2tlZDogY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCxcbiAgICAgICAgaXNfbXVsdGlfYWdlbnRzOiBpc011bHRpQWdlbnRzLFxuICAgICAgfSlcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IGFnZW50UGFyc2VkOiBBZ2VudFtdID0gW11cbiAgICAgICAgbGV0IGhhc01vcmUgPSBmYWxzZVxuICAgICAgICBsZXQgbmV4dE9mZnNldDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgICAvLyBTaSB0aWVuZSBmZWF0dXJlIGFjY2VzcyBtdWx0aSBhZ2VudHMsIGhhY2VyIGRvcyBxdWVyaWVzIChNYWlhICsgY3VzdG9tKSBlbiBjdWFscXVpZXIgc2VjY2nDs25cbiAgICAgICAgaWYgKGlzTXVsdGlBZ2VudHMpIHtcbiAgICAgICAgICAvLyBRdWVyeSAxOiBBZ2VudGVzIGNsb25lIChNYWlhKSAtIFNvbG8gcGFyYSByb2xlcyBwZXJtaXRpZG9zLiBQdWVkZW4gdmVuaXIgbcO6bHRpcGxlcyBhZ2VudGVzIHRpcG8gY2xvbmVcbiAgICAgICAgICBsZXQgY2xvbmVBZ2VudHM6IEFnZW50W10gPSBbXVxuICAgICAgICAgIGlmICghY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JkZXJQYXJhbSA9XG4gICAgICAgICAgICAgICAgc2VjdGlvbiA9PT0gJ2NsaWVudCdcbiAgICAgICAgICAgICAgICAgID8gJyZvcmRlcj1jbGllbnQscHJvamVjdCdcbiAgICAgICAgICAgICAgICAgIDogc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IHNlY3Rpb24gPT09ICdoZWFkZXInIHx8IHNlY3Rpb24gPT09ICd0YXNrJ1xuICAgICAgICAgICAgICAgICAgICA/ICcmb3JkZXI9cHJvamVjdCxjbGllbnQnXG4gICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgY29uc3QgbWFpYVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9JHtvcmRlclBhcmFtfWAsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgY29uc3QgbWFpYURhdGEgPSBhd2FpdCBtYWlhUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIGNsb25lQWdlbnRzID0gbWFpYURhdGEuZGF0YT8uZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgPT09ICdjbG9uZScpIHx8IFtdXG4gICAgICAgICAgICB9IGNhdGNoIChtYWlhRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAgIC8vIGZldGNoQ09SIHB1ZWRlIGxhbnphciBkaWZlcmVudGVzIHRpcG9zIGRlIGVycm9yZXM6XG4gICAgICAgICAgICAgIC8vIDEuIEVycm9yIGNvbiBlcnJvckRhdGEuZGV0YWlsIHNpIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAgIC8vIDMuIE5lY2VzaXRhbW9zIHZlcmlmaWNhciBlbCBzdGF0dXMgY29kZSBzaSBlc3TDoSBkaXNwb25pYmxlXG4gICAgICAgICAgICAgIGNvbnN0IGlzNDAzRXJyb3IgPVxuICAgICAgICAgICAgICAgIG1haWFFcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICAgIG1haWFFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpIHx8XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnRmFpbGVkIGZldGNoaW5nIGRhdGEnKSAvLyBmZXRjaENPUiBsYW56YSBlc3RvIHBhcmEgNDAzIHNpbiAnQWNjZXNzIGRlbmllZCdcblxuICAgICAgICAgICAgICBpZiAoaXM0MDNFcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgY29udGludWFyIHNpbiBsb3MgY2xvbmVBZ2VudHNcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICAgIHRocm93IG1haWFFcnJvclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gUXVlcnkgMjogQWdlbnRlcyBjdXN0b20gY29uIHBhZ2luYWNpw7NuXG4gICAgICAgICAgbGV0IGN1c3RvbUFnZW50czogQWdlbnRbXSA9IFtdXG4gICAgICAgICAgbGV0IGN1c3RvbUhhc01vcmUgPSBmYWxzZVxuICAgICAgICAgIGxldCBjdXN0b21OZXh0T2Zmc2V0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgcGF0aDogJ2FnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD03Jm9mZnNldD0wJyxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBjb25zdCBjdXN0b21EYXRhID0gYXdhaXQgY3VzdG9tUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICBjdXN0b21BZ2VudHMgPSBjdXN0b21EYXRhLmRhdGEgfHwgW11cbiAgICAgICAgICAgIGN1c3RvbUhhc01vcmUgPSBjdXN0b21EYXRhLmhhc19tb3JlIHx8IGZhbHNlXG4gICAgICAgICAgICBjdXN0b21OZXh0T2Zmc2V0ID0gY3VzdG9tRGF0YS5uZXh0X29mZnNldCB8fCBudWxsXG4gICAgICAgICAgfSBjYXRjaCAoY3VzdG9tRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGVycm9yIGVzIDQwM1xuICAgICAgICAgICAgLy8gZmV0Y2hDT1IgcHVlZGUgbGFuemFyIGRpZmVyZW50ZXMgdGlwb3MgZGUgZXJyb3JlczpcbiAgICAgICAgICAgIC8vIDEuIEVycm9yIGNvbiBlcnJvckRhdGEuZGV0YWlsIHNpIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAyLiBFcnJvciBnZW7DqXJpY28gJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJyBzaSBlcyA0MDMgcGVybyBubyBpbmNsdXllICdBY2Nlc3MgZGVuaWVkJ1xuICAgICAgICAgICAgLy8gMy4gTmVjZXNpdGFtb3MgdmVyaWZpY2FyIGVsIHN0YXR1cyBjb2RlIHNpIGVzdMOhIGRpc3BvbmlibGVcbiAgICAgICAgICAgIGNvbnN0IGlzNDAzRXJyb3IgPVxuICAgICAgICAgICAgICBjdXN0b21FcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICBjdXN0b21FcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnRmFpbGVkIGZldGNoaW5nIGRhdGEnKSAvLyBmZXRjaENPUiBsYW56YSBlc3RvIHBhcmEgNDAzIHNpbiAnQWNjZXNzIGRlbmllZCdcblxuICAgICAgICAgICAgaWYgKGlzNDAzRXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBjb250aW51YXIgc2luIGN1c3RvbUFnZW50cyAoYXJyYXkgdmFjw61vKS4gU2Vnw7puIGNsb25lQWdlbnRzUm9sZUJsb2NrZWQ6XG4gICAgICAgICAgICAgIC8vIC0gZmFsc2U6IHB1ZWRlIHF1ZWRhciBzb2xvIGNsb25lQWdlbnRzIHNpIGxhIHF1ZXJ5IGNsb25lIGZ1ZSBleGl0b3NhLlxuICAgICAgICAgICAgICAvLyAtIHRydWU6IGVsIGxpc3RhZG8gcXVlZGEgdmFjw61vIChubyBzZSBwaWRpZXJvbiBjbG9uZXMpLlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgb3RybyBlcnJvciwgbGFuemFybG9cbiAgICAgICAgICAgICAgdGhyb3cgY3VzdG9tRXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb21iaW5hcjogYWdlbnRlcyBjbG9uZSBwcmltZXJvLCBsdWVnbyBsb3MgY3VzdG9tIChzaSBleGlzdGVuKVxuICAgICAgICAgIC8vIFNpIGVsIHVzdWFyaW8gdGllbmUgdW4gcm9sIGRlc2hhYmlsaXRhZG8sIG5vIGluY2x1aXIgY2xvbmVBZ2VudHNcbiAgICAgICAgICBpZiAoY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCkge1xuICAgICAgICAgICAgLy8gUm9sIHNpbiBhY2Nlc28gYSBjbG9uZXMgTUFJQSBQTSAocC4gZWouIGNvbGxhYm9yYXRvciBmdWVyYSBkZWwgcGlsb3RvKTogc29sbyBjdXN0b21BZ2VudHNcbiAgICAgICAgICAgIC8vIFNpIGN1c3RvbUFnZW50cyBlc3TDoSB2YWPDrW8gKHBvciA0MDMpLCBhZ2VudFBhcnNlZCBzZXLDoSBbXVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBjdXN0b21BZ2VudHNcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gUm9sIGNvbiBhY2Nlc28gYSBjbG9uZXM6IGNsb25lQWdlbnRzICsgY3VzdG9tQWdlbnRzXG4gICAgICAgICAgICAvLyBTaSBjdXN0b21BZ2VudHMgZXN0w6EgdmFjw61vIChwb3IgNDAzKSBwZXJvIGhheSBjbG9uZUFnZW50cywgYWdlbnRQYXJzZWQgdGVuZHLDoSBsb3MgY2xvbmVzXG4gICAgICAgICAgICAvLyBTaSBubyBoYXkgY2xvbmVBZ2VudHMgbmkgY3VzdG9tQWdlbnRzLCBhZ2VudFBhcnNlZCBzZXLDoSBbXVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBjbG9uZUFnZW50cy5sZW5ndGggPyBbLi4uY2xvbmVBZ2VudHMsIC4uLmN1c3RvbUFnZW50c10gOiBjdXN0b21BZ2VudHNcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICBhZ2VudFBhcnNlZCA9IHNvcnRBZ2VudHMoYWdlbnRQYXJzZWQpXG4gICAgICAgICAgaGFzTW9yZSA9IGN1c3RvbUhhc01vcmVcbiAgICAgICAgICBuZXh0T2Zmc2V0ID0gY3VzdG9tTmV4dE9mZnNldFxuXG4gICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgIGRhdGE6IGFnZW50UGFyc2VkLFxuICAgICAgICAgICAgaGFzX21vcmU6IGhhc01vcmUsXG4gICAgICAgICAgICBuZXh0X29mZnNldDogbmV4dE9mZnNldCxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgbG9nTWFpYUFjY2Vzc0RlYnVnKCdnZXRBZ2VudHMgZmV0Y2ggcmVzdWx0JywgdXNlciwgc2VjdGlvbiwge1xuICAgICAgICAgICAgYWdlbnRzX2NvdW50OiBhZ2VudFBhcnNlZC5sZW5ndGgsXG4gICAgICAgICAgICBjbG9uZV9hZ2VudHNfY291bnQ6IGFnZW50UGFyc2VkLmZpbHRlcigoYWc6IEFnZW50KSA9PiBhZy50eXBlID09PSAnY2xvbmUnKS5sZW5ndGgsXG4gICAgICAgICAgICBjbG9uZV9hZ2VudHNfcm9sZV9ibG9ja2VkOiBjbG9uZUFnZW50c1JvbGVCbG9ja2VkLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWdlbnRlcyBkZXNwdcOpcyBkZSBwcm9jZXNhciBsYXMgcXVlcmllcywgbGltcGlhciBlbCBlcnJvclxuICAgICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBwcm9qZWN0LCBjbGllbnQgbyBoZWFkZXIgc2luIG11bHRpQWdlbnRzIChtaXNtbyBjcml0ZXJpbyBkZSBvcmRlbiBwcm9qZWN0L2NsaWVudDsgaGVhZGVyIGHDsWFkZSBwYWdpbmFjacOzbilcbiAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgICAgIGlmIChzZWN0aW9uID09PSAncHJvamVjdCcgfHwgc2VjdGlvbiA9PT0gJ2NsaWVudCcgfHwgc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2FnZW50X3R5cGUnLCAnY2xvbmUnKVxuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsYW5nJywgbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSlcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb3JkZXInLCBzZWN0aW9uID09PSAnY2xpZW50JyA/ICdjbGllbnQscHJvamVjdCcgOiAncHJvamVjdCxjbGllbnQnKVxuICAgICAgICAgICAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGltaXQnLCAnNycpXG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgJzAnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcXVlcnlQYXJhbXMudG9TdHJpbmcoKVxuICAgICAgICAgIGNvbnN0IHBhdGggPSBgYWdlbnRzJHtxdWVyeVN0cmluZyA/IGA/JHtxdWVyeVN0cmluZ31gIDogJyd9YFxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgIC8vIGRhdGEuZGF0YSB5YSBjb250aWVuZSB0b2RvcyBsb3MgYWdlbnRlcyBjbG9uZSBkZSBsYSBxdWVyeSBhZ2VudF90eXBlPWNsb25lXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGRhdGEuZGF0YSB8fCBbXVxuICAgICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gc29ydEFnZW50cyhhZ2VudFBhcnNlZClcbiAgICAgICAgICAgIGhhc01vcmUgPSBkYXRhLmhhc19tb3JlXG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gZGF0YS5uZXh0X29mZnNldFxuXG4gICAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICBkYXRhOiBhZ2VudFBhcnNlZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAocmVzcG9uc2VFcnJvcjogYW55KSB7XG4gICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAvLyBmZXRjaENPUiBwdWVkZSBsYW56YXIgZGlmZXJlbnRlcyB0aXBvcyBkZSBlcnJvcmVzOlxuICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAzLiBOZWNlc2l0YW1vcyB2ZXJpZmljYXIgZWwgc3RhdHVzIGNvZGUgc2kgZXN0w6EgZGlzcG9uaWJsZVxuICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/LnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJykgLy8gZmV0Y2hDT1IgbGFuemEgZXN0byBwYXJhIDQwMyBzaW4gJ0FjY2VzcyBkZW5pZWQnXG5cbiAgICAgICAgICAgIGlmIChpczQwM0Vycm9yKSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgZXN0YWJsZWNlciBhZ2VudGVzIHZhY8Otb3MgeSBjb250aW51YXJcbiAgICAgICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICAgICAgICBoYXNfbW9yZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IG51bGwsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTMOzZ2ljYSBkZSBzZWxlY3QgYWdlbnQgLSBTb2xvIHNlbGVjY2lvbmFyIHNpIGhheSBhZ2VudGVzIGRpc3BvbmlibGVzXG4gICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKGFnZW50VG9TZWxlY3QgJiYgYWdlbnRQYXJzZWQuZmluZCgoYWdlbnRUb1JlcXVlc3Q6IEFnZW50KSA9PiBhZ2VudFRvUmVxdWVzdC5pZCA9PT0gYWdlbnRUb1NlbGVjdC5pZCkpIHtcbiAgICAgICAgICAgIGlmIChsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gYWdlbnRUb1NlbGVjdC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRUb1NlbGVjdFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFRvU2VsZWN0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoYWdlbnRQYXJzZWQ/LlswXSAmJiAoIWFnZW50IHx8ICFhZ2VudFBhcnNlZC5maW5kKChhOiBBZ2VudCkgPT4gYS5pZCA9PT0gYWdlbnQuaWQpKSkge1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlQWdlbnRzID1cbiAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhY2xvbmVBZ2VudHNSb2xlQmxvY2tlZFxuICAgICAgICAgICAgICAgID8gYWdlbnRQYXJzZWRcbiAgICAgICAgICAgICAgICA6IGFnZW50UGFyc2VkLmZpbHRlcigoYWdlbnRJdGVtOiBBZ2VudCkgPT4gYWdlbnRJdGVtLnR5cGUgIT09ICdjbG9uZScpXG5cbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdEFnZW50XSA9IGF2YWlsYWJsZUFnZW50c1xuICAgICAgICAgICAgaWYgKGZpcnN0QWdlbnQgJiYgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudD8uaWQgIT09IGZpcnN0QWdlbnQuaWQpIHtcbiAgICAgICAgICAgICAgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudCA9IGZpcnN0QWdlbnRcbiAgICAgICAgICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBZ2VudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGFnZW50VG9TZWxlY3QgJiYgYWdlbnRQYXJzZWQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlQWdlbnRzID1cbiAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhY2xvbmVBZ2VudHNSb2xlQmxvY2tlZFxuICAgICAgICAgICAgICAgID8gYWdlbnRQYXJzZWRcbiAgICAgICAgICAgICAgICA6IGFnZW50UGFyc2VkLmZpbHRlcigoYWdlbnRJdGVtOiBBZ2VudCkgPT4gYWdlbnRJdGVtLnR5cGUgIT09ICdjbG9uZScpXG5cbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdEF2YWlsYWJsZUFnZW50XSA9IGF2YWlsYWJsZUFnZW50c1xuICAgICAgICAgICAgaWYgKGZpcnN0QXZhaWxhYmxlQWdlbnQgJiYgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudD8uaWQgIT09IGZpcnN0QXZhaWxhYmxlQWdlbnQuaWQpIHtcbiAgICAgICAgICAgICAgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudCA9IGZpcnN0QXZhaWxhYmxlQWdlbnRcbiAgICAgICAgICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBdmFpbGFibGVBZ2VudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldEVycm9yKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpc1JlZnJlc2hpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBsb2FkaW5nLCBjbG9uZUFnZW50c1JvbGVCbG9ja2VkLCBpMThuLmxhbmd1YWdlXVxuICApXG5cbiAgY29uc3QgbG9hZE1vcmVBZ2VudHMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaXNNdWx0aUFnZW50cyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gICAgLy8gQ2FyZ2FyIG3DoXM6IGVuIGhlYWRlciBzaWVtcHJlOyBlbiBwcm9qZWN0IHNvbG8gc2kgaXNNdWx0aUFnZW50cyAocG9ycXVlIHNvbG8gZW50b25jZXMgaGF5IHBhZ2luYWNpw7NuIGRlIGN1c3RvbSlcbiAgICBjb25zdCBjYW5Mb2FkTW9yZSA9IHNlY3Rpb24gPT09ICdoZWFkZXInIHx8IGlzTXVsdGlBZ2VudHNcbiAgICBpZiAoIWNhbkxvYWRNb3JlIHx8ICFhZ2VudHMuaGFzX21vcmUgfHwgIWFnZW50cy5uZXh0X29mZnNldCB8fCBsb2FkaW5nTW9yZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0TG9hZGluZ01vcmUodHJ1ZSlcbiAgICBzZXRFcnJvcihudWxsKVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBwYXRoOiBzdHJpbmdcblxuICAgICAgLy8gU2kgZXMgbXVsdGlBZ2VudHMsIHNvbG8gY2FyZ2FyIGFnZW50cyBjdXN0b20gKE1haWEgeWEgZXN0w6EgY2FyZ2FkbylcbiAgICAgIGlmIChpc011bHRpQWdlbnRzKSB7XG4gICAgICAgIC8vIE1hbnRlbmVyIGNhbnRpZGFkIGltcGFyIGRlIGNhcmRzOiBwcmltZXJhIGNhcmdhIDcsIHNpZ3VpZW50ZXMgKzYgKDcsIDEzLCAxOSwgLi4uKVxuICAgICAgICBwYXRoID0gYGFnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD02Jm9mZnNldD0ke2FnZW50cy5uZXh0X29mZnNldH1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaSBubyBlcyBtdWx0aUFnZW50cywgY2FyZ2FyIG3DoXMgYWdlbnRlcyBjbG9uZSAoTWFpYSkg4oCUIG1pc21vIG9yZGVyIHF1ZSBwcm9qZWN0IHBhcmEgaGVhZGVyXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnYWdlbnRfdHlwZScsICdjbG9uZScpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSkpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb3JkZXInLCAncHJvamVjdCxjbGllbnQnKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgJzcnKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ29mZnNldCcsIGFnZW50cy5uZXh0X29mZnNldC50b1N0cmluZygpKVxuICAgICAgICBwYXRoID0gYGFnZW50cz8ke3F1ZXJ5UGFyYW1zLnRvU3RyaW5nKCl9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG5cbiAgICAgIC8vIEFjdW11bGFyIGFnZW50ZXMsIGV4Y2x1eWVuZG8gZHVwbGljYWRvc1xuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBtdWx0aUFnZW50czogc2VwYXJhciBjbG9uZSB5IGN1c3RvbVxuICAgICAgICAgIC8vIE1hbnRlbmVyIHRvZG9zIGxvcyBhZ2VudGVzIGNsb25lIGV4aXN0ZW50ZXMgYWwgaW5pY2lvXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdDbG9uZUFnZW50cyA9IHByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcblxuICAgICAgICAgIC8vIE9idGVuZXIgSURzIGV4aXN0ZW50ZXMgKGV4Y2x1eWVuZG8gY2xvbmVzKVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScpLm1hcCgoYWc6IEFnZW50KSA9PiBhZy5pZCkpXG5cbiAgICAgICAgICAvLyBGaWx0cmFyIG51ZXZvcyBhZ2VudHMgcXVlIG5vIGVzdMOpbiB5YSBlbiBsYSBsaXN0YSAoeSBxdWUgbm8gc2VhbiBjbG9uZSlcbiAgICAgICAgICBjb25zdCBuZXdBZ2VudHMgPSBkYXRhLmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScgJiYgIWV4aXN0aW5nSWRzLmhhcyhhZy5pZCkpXG5cbiAgICAgICAgICAvLyBDb25zdHJ1aXIgZWwgbnVldm8gYXJyYXk6IGNsb25lcyBwcmltZXJvLCBsdWVnbyBsb3MgYWdlbnRzIGV4aXN0ZW50ZXMgcXVlIG5vIHNlYW4gY2xvbmUsIGx1ZWdvIGxvcyBudWV2b3NcbiAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZXhpc3RpbmdDbG9uZUFnZW50cy5sZW5ndGhcbiAgICAgICAgICAgID8gWy4uLmV4aXN0aW5nQ2xvbmVBZ2VudHMsIC4uLnByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJyksIC4uLm5ld0FnZW50c11cbiAgICAgICAgICAgIDogWy4uLnByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJyksIC4uLm5ld0FnZW50c11cblxuICAgICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgaGFzX21vcmU6IGRhdGEuaGFzX21vcmUsXG4gICAgICAgICAgICBuZXh0X29mZnNldDogZGF0YS5uZXh0X29mZnNldCxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gTMOzZ2ljYSBwYXJhICFpc011bHRpQWdlbnRzOiB0b2RvcyBsb3MgYWdlbnRlcyBzb24gY2xvbmUsIHNpbXBsZW1lbnRlIGFncmVnYXIgZXZpdGFuZG8gZHVwbGljYWRvc1xuICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5kYXRhLm1hcCgoYWc6IEFnZW50KSA9PiBhZy5pZCkpXG4gICAgICAgIGNvbnN0IG5ld0FnZW50cyA9IChkYXRhLmRhdGEgfHwgW10pLmZpbHRlcigoYWc6IEFnZW50KSA9PiAhZXhpc3RpbmdJZHMuaGFzKGFnLmlkKSlcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IFsuLi5wcmV2LmRhdGEsIC4uLm5ld0FnZW50c11cblxuICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhuZXdEYXRhKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICBoYXNfbW9yZTogZGF0YS5oYXNfbW9yZSxcbiAgICAgICAgICBuZXh0X29mZnNldDogZGF0YS5uZXh0X29mZnNldCxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ3NuYWNrYmFyLmxvYWRNb3JlQWdlbnRzLmVycm9yJykpXG4gICAgICBzZXRMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9XG4gIH0sIFtzZWN0aW9uLCBhZ2VudHMuaGFzX21vcmUsIGFnZW50cy5uZXh0X29mZnNldCwgbG9hZGluZ01vcmUsIGkxOG4ubGFuZ3VhZ2VdKVxuXG4gIHJldHVybiB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3IsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3JELFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxTQUFTLFFBQVEsV0FBVztBQUVyQyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLDRCQUE0QixFQUFFQyxrQkFBa0IsUUFBUSx3Q0FBd0M7QUFDekcsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUlDLE1BQWUsRUFBYztFQUMvQztFQUNBLElBQU1DLFdBQVcsR0FBR0QsTUFBTSxDQUFDRSxNQUFNLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUlBLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLLE9BQU87RUFBQSxFQUFDO0VBQzVELElBQU1DLFdBQVcsR0FBR0wsTUFBTSxDQUFDRSxNQUFNLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUlBLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLLE9BQU87RUFBQSxFQUFDOztFQUU1RDtFQUNBLElBQU1FLFNBQVMsR0FBR0QsV0FBVyxDQUFDSCxNQUFNLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUlBLEVBQUUsQ0FBQ0ksV0FBVztFQUFBLEVBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQUNDLENBQUMsRUFBRUMsQ0FBQztJQUFBLE9BQUtELENBQUMsQ0FBQ0UsSUFBSSxDQUFDQyxhQUFhLENBQUNGLENBQUMsQ0FBQ0MsSUFBSSxDQUFDO0VBQUEsRUFBQztFQUN2RyxJQUFNRSxZQUFZLEdB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
564
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ1c2VVc2VyIiwiQ09SVXNlclJvbGUiLCJtYXBDT1JMYW5nIiwic29ydEFnZW50cyIsImFnZW50cyIsImNsb25lQWdlbnRzIiwiZmlsdGVyIiwiYWciLCJ0eXBlIiwib3RoZXJBZ2VudHMiLCJmYXZvcml0ZXMiLCJpc19mYXZvcml0ZSIsInNvcnQiLCJhIiwiYiIsIm5hbWUiLCJsb2NhbGVDb21wYXJlIiwibm9uRmF2b3JpdGVzIiwibGVuZ3RoIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwidXNlR2V0QWdlbnRzIiwiX3JlZiIsInNlbGVjdEFnZW50Iiwic2VjdGlvbiIsImFnZW50IiwiaGFuZGxlR29Ib21lIiwidXNlciIsIl91c2VTdGF0ZSIsImRhdGEiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRBZ2VudHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJsb2FkaW5nTW9yZSIsInNldExvYWRpbmdNb3JlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiaTE4biIsImxhc3RTZWxlY3RlZEFnZW50UmVmIiwiaXNSZWZyZXNoaW5nUmVmIiwibGFzdFJlcXVlc3RSZWYiLCJ1c2VyUm9sZXNEaXNhYmxlZCIsIkNPTExBQk9SQVRPUiIsIkZSRUVMQU5DRVIiLCJDTElFTlQiLCJhZGRBZ2VudCIsIm5ld0FnZW50Iiwib3B0aW9ucyIsInByZXYiLCJhZ2VudEV4aXN0cyIsInNvbWUiLCJleGlzdGluZ0FnZW50IiwiaWQiLCJuZXdEYXRhIiwic29ydGVkRGF0YSIsIl9vYmplY3RTcHJlYWQiLCJuYXZpZ2F0ZUhvbWUiLCJyZW1vdmVBZ2VudCIsImFnZW50SWQiLCJ0b1N0cmluZyIsInVwZGF0ZUFnZW50IiwidXBkYXRlZEFnZW50IiwidXBkYXRlZERhdGEiLCJtYXAiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2hvdWxkU29ydCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYyIiwibWVzc2FnZSIsImFnZW50RmllbGRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwibWVyZ2VkQWdlbnQiLCJmaW5hbERhdGEiLCJmaW5kIiwiX3JlZjMiLCJfZXhjbHVkZWQyIiwiX3JlZjQiLCJfZXhjbHVkZWQzIiwic29ydEFnZW50c0xpc3QiLCJzZWxlY3RGaXJzdEFnZW50IiwiZmlyc3RBZ2VudCIsImZpbmRJbmRleCIsImFnZW50RGF0YSIsImN1cnJlbnQiLCJoYW5kbGVHZXRBZ2VudHMiLCJfcmVmNSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiYWdlbnRUb1NlbGVjdCIsIl9hZ2VudFRvU2VsZWN0JGlkIiwicmVxdWVzdEtleSIsImlzTXVsdGlBZ2VudHMiLCJhZ2VudFBhcnNlZCIsImhhc01vcmUiLCJuZXh0T2Zmc2V0IiwiX21haWFEYXRhJGRhdGEiLCJvcmRlclBhcmFtIiwibWFpYVJlc3BvbnNlIiwibWFpYURhdGEiLCJfbWFpYUVycm9yJHJlc3BvbnNlIiwiX21haWFFcnJvciRtZXNzYWdlIiwiX21haWFFcnJvciRtZXNzYWdlMiIsImlzNDAzRXJyb3IiLCJjdXN0b21BZ2VudHMiLCJjdXN0b21IYXNNb3JlIiwiY3VzdG9tTmV4dE9mZnNldCIsImN1c3RvbVJlc3BvbnNlIiwiY3VzdG9tRGF0YSIsIl9jdXN0b21FcnJvciRyZXNwb25zZSIsIl9jdXN0b21FcnJvciRtZXNzYWdlIiwiX2N1c3RvbUVycm9yJG1lc3NhZ2UyIiwiX2lzNDAzRXJyb3IiLCJxdWVyeVBhcmFtcyIsInF1ZXJ5U3RyaW5nIiwicGF0aCIsInJlc3BvbnNlIiwiX3Jlc3BvbnNlRXJyb3IkcmVzcG9uIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnMiIsIl9pczQwM0Vycm9yMiIsIl9hZ2VudFBhcnNlZCIsIl9hZ2VudFBhcnNlZDIiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYyIiwiYXZhaWxhYmxlQWdlbnRzIiwiX2F2YWlsYWJsZUFnZW50cyIsIl9sYXN0U2VsZWN0ZWRBZ2VudFJlZjMiLCJfYXZhaWxhYmxlQWdlbnRzMiIsIl9hdmFpbGFibGVBZ2VudHMzIiwiZmlyc3RBdmFpbGFibGVBZ2VudCIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0Iiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsImFicnVwdCIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJpbmNsdWRlcyIsInJvbGVfaWQiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwic3RhdHVzIiwiaGFzX21vcmUiLCJuZXh0X29mZnNldCIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsImFnZW50VG9SZXF1ZXN0IiwiYWdlbnRJdGVtIiwiRXJyb3IiLCJzZXRUaW1lb3V0IiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJsb2FkTW9yZUFnZW50cyIsIl9jYWxsZWUyIiwiY2FuTG9hZE1vcmUiLCJfdDUiLCJfY29udGV4dDIiLCJleGlzdGluZ0Nsb25lQWdlbnRzIiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJuZXdBZ2VudHMiLCJoYXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXJSb2xlIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuXG4vKipcbiAqIE9yZGVuYSBsb3MgYWdlbnRlczogYWdlbnRlcyBjbG9uZSBwcmltZXJvIChzaSBleGlzdGVuKSwgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gKi9cbmNvbnN0IHNvcnRBZ2VudHMgPSAoYWdlbnRzOiBBZ2VudFtdKTogQWdlbnRbXSA9PiB7XG4gIC8vIFNlcGFyYXIgYWdlbnRlcyBjbG9uZSBkZWwgcmVzdG9cbiAgY29uc3QgY2xvbmVBZ2VudHMgPSBhZ2VudHMuZmlsdGVyKGFnID0+IGFnLnR5cGUgPT09ICdjbG9uZScpXG4gIGNvbnN0IG90aGVyQWdlbnRzID0gYWdlbnRzLmZpbHRlcihhZyA9PiBhZy50eXBlICE9PSAnY2xvbmUnKVxuXG4gIC8vIFNlcGFyYXIgZmF2b3JpdG9zIHkgbm8gZmF2b3JpdG9zXG4gIGNvbnN0IGZhdm9yaXRlcyA9IG90aGVyQWdlbnRzLmZpbHRlcihhZyA9PiBhZy5pc19mYXZvcml0ZSkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgY29uc3Qgbm9uRmF2b3JpdGVzID0gb3RoZXJBZ2VudHMuZmlsdGVyKGFnID0+ICFhZy5pc19mYXZvcml0ZSkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcblxuICAvLyBDb21iaW5hcjogY2xvbmVzIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcywgbHVlZ28gbm8gZmF2b3JpdG9zXG4gIHJldHVybiBjbG9uZUFnZW50cy5sZW5ndGggPyBbLi4uY2xvbmVBZ2VudHMsIC4uLmZhdm9yaXRlcywgLi4ubm9uRmF2b3JpdGVzXSA6IFsuLi5mYXZvcml0ZXMsIC4uLm5vbkZhdm9yaXRlc11cbn1cblxudHlwZSBVc2VHZXRBZ2VudHNQcm9wcyA9IHtcbiAgc2VsZWN0QWdlbnQ6IChhZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgc2VjdGlvbjogJ3Byb2plY3QnIHwgJ2hlYWRlcicgfCAnY2xpZW50JyB8ICd0YXNrJ1xuICBhZ2VudDogQWdlbnQgfCBudWxsXG4gIGhhbmRsZUdvSG9tZTogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBBZGRBZ2VudE9wdGlvbnMgPSB7XG4gIC8qKiBQb3IgZGVmZWN0byBgdHJ1ZWAgKGNvbXBvcnRhbWllbnRvIEFCTSkuIFBhc2FyIGBmYWxzZWAgYWwgaW5zZXJ0YXIgYWdlbnRlIGNyZWFkbyBwb3IgY2hhdCBzaW4gY2FtYmlhciBkZSB2aXN0YS4gKi9cbiAgbmF2aWdhdGVIb21lPzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdXNlR2V0QWdlbnRzID0gKHsgc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBoYW5kbGVHb0hvbWUgfTogVXNlR2V0QWdlbnRzUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBbYWdlbnRzLCBzZXRBZ2VudHNdID0gdXNlU3RhdGU8eyBkYXRhOiBBZ2VudFtdOyBoYXNfbW9yZT86IGJvb2xlYW47IG5leHRfb2Zmc2V0PzogbnVtYmVyIHwgbnVsbCB9Pih7IGRhdGE6IFtdIH0pXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01vcmUsIHNldExvYWRpbmdNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbignY2hhdF9haV9zZWN0aW9uJylcbiAgY29uc3QgbGFzdFNlbGVjdGVkQWdlbnRSZWYgPSB1c2VSZWY8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1JlZnJlc2hpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGxhc3RSZXF1ZXN0UmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgdXNlclJvbGVzRGlzYWJsZWQgPSBbQ09SVXNlclJvbGUuQ09MTEFCT1JBVE9SLCBDT1JVc2VyUm9sZS5GUkVFTEFOQ0VSLCBDT1JVc2VyUm9sZS5DTElFTlRdXG5cbiAgY29uc3QgYWRkQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3QWdlbnQ6IEFnZW50LCBvcHRpb25zPzogQWRkQWdlbnRPcHRpb25zKSA9PiB7XG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBhZ2VudGUgeWEgZXhpc3RlIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcbiAgICAgICAgY29uc3QgYWdlbnRFeGlzdHMgPSBwcmV2LmRhdGEuc29tZShleGlzdGluZ0FnZW50ID0+IGV4aXN0aW5nQWdlbnQuaWQgPT09IG5ld0FnZW50LmlkKVxuICAgICAgICBpZiAoYWdlbnRFeGlzdHMpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4ucHJldi5kYXRhLCBuZXdBZ2VudF1cbiAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBpZiAob3B0aW9ucz8ubmF2aWdhdGVIb21lICE9PSBmYWxzZSkge1xuICAgICAgICBoYW5kbGVHb0hvbWUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUdvSG9tZV1cbiAgKVxuXG4gIGNvbnN0IHJlbW92ZUFnZW50ID0gdXNlQ2FsbGJhY2soKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZGF0YTogcHJldi5kYXRhLmZpbHRlcihhID0+IGEuaWQgIT09IGFnZW50SWQudG9TdHJpbmcoKSksXG4gICAgfSkpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUFnZW50ID0gdXNlQ2FsbGJhY2soKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHByZXYuZGF0YS5tYXAoZXhpc3RpbmdBZ2VudCA9PlxuICAgICAgICBleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQgPyB1cGRhdGVkQWdlbnQgOiBleGlzdGluZ0FnZW50XG4gICAgICApXG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyh1cGRhdGVkRGF0YSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlQWdlbnRGYXZvcml0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVkQWdlbnQ6IEFnZW50LCBzaG91bGRTb3J0OiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBwcmV2LmRhdGEubWFwKGV4aXN0aW5nQWdlbnQgPT4ge1xuICAgICAgICAgIGlmIChleGlzdGluZ0FnZW50LmlkID09PSB1cGRhdGVkQWdlbnQuaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZEFnZW50ID0geyAuLi5leGlzdGluZ0FnZW50LCAuLi5hZ2VudEZpZWxkcyB9XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkQWdlbnRcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQWdlbnRcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTb2xvIG9yZGVuYXIgc2kgc2hvdWxkU29ydCBlcyB0cnVlXG4gICAgICAgIGNvbnN0IGZpbmFsRGF0YSA9IHNob3VsZFNvcnQgPyBzb3J0QWdlbnRzKHVwZGF0ZWREYXRhKSA6IHVwZGF0ZWREYXRhXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGRhdGE6IGZpbmFsRGF0YSxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gQWN0dWFsaXphciBlbCBhZ2VudGUgc2VsZWNjaW9uYWRvIHNpIGVzIGVsIHF1ZSBzZSBlc3TDoSBhY3R1YWxpemFuZG9cbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCkge1xuICAgICAgICBjb25zdCBleGlzdGluZ0FnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhID0+IGEuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZClcbiAgICAgICAgaWYgKGV4aXN0aW5nQWdlbnQpIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgY29uc3QgbWVyZ2VkQWdlbnQgPSB7IC4uLmV4aXN0aW5nQWdlbnQsIC4uLmFnZW50RmllbGRzIH1cbiAgICAgICAgICBzZWxlY3RBZ2VudChtZXJnZWRBZ2VudClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmFnZW50RmllbGRzIH0gPSB1cGRhdGVkQWdlbnQgYXMgYW55XG4gICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRGaWVsZHMgYXMgQWdlbnQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50cy5kYXRhXVxuICApXG5cbiAgY29uc3Qgc29ydEFnZW50c0xpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMocHJldi5kYXRhKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBzZWxlY3RGaXJzdEFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChhZ2VudHMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmRJbmRleChhZ2VudERhdGEgPT4gYWdlbnREYXRhLmlkID09PSBhZ2VudElkKVxuICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRzLmRhdGFbZmlyc3RBZ2VudCA9PT0gMCA/IDEgOiAwXVxuICAgICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVtmaXJzdEFnZW50ID09PSAwID8gMSA6IDBdKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50cy5kYXRhLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdldEFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhZ2VudFRvU2VsZWN0PzogQWdlbnQpID0+IHtcbiAgICAgIGlmIChpc1JlZnJlc2hpbmdSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdEtleSA9IGFnZW50VG9TZWxlY3Q/LmlkPy50b1N0cmluZygpIHx8ICdkZWZhdWx0J1xuICAgICAgaWYgKGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPT09IHJlcXVlc3RLZXkgJiYgIWxvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgbGFzdFJlcXVlc3RSZWYuY3VycmVudCA9IHJlcXVlc3RLZXlcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldEVycm9yKG51bGwpXG5cbiAgICAgIGNvbnN0IGlzTXVsdGlBZ2VudHMgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgYWdlbnRQYXJzZWQ6IEFnZW50W10gPSBbXVxuICAgICAgICBsZXQgaGFzTW9yZSA9IGZhbHNlXG4gICAgICAgIGxldCBuZXh0T2Zmc2V0OiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gICAgICAgIC8vIFNpIHRpZW5lIGZlYXR1cmUgYWNjZXNzIG11bHRpIGFnZW50cywgaGFjZXIgZG9zIHF1ZXJpZXMgKE1haWEgKyBjdXN0b20pIGVuIGN1YWxxdWllciBzZWNjacOzblxuICAgICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgIC8vIFF1ZXJ5IDE6IEFnZW50ZXMgY2xvbmUgKE1haWEpIC0gU29sbyBwYXJhIHJvbGVzIHBlcm1pdGlkb3MuIFB1ZWRlbiB2ZW5pciBtw7psdGlwbGVzIGFnZW50ZXMgdGlwbyBjbG9uZVxuICAgICAgICAgIGxldCBjbG9uZUFnZW50czogQWdlbnRbXSA9IFtdXG4gICAgICAgICAgaWYgKCF1c2VyUm9sZXNEaXNhYmxlZC5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBvcmRlclBhcmFtID1cbiAgICAgICAgICAgICAgICBzZWN0aW9uID09PSAnY2xpZW50J1xuICAgICAgICAgICAgICAgICAgPyAnJm9yZGVyPWNsaWVudCxwcm9qZWN0J1xuICAgICAgICAgICAgICAgICAgOiBzZWN0aW9uID09PSAncHJvamVjdCcgfHwgc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snXG4gICAgICAgICAgICAgICAgICAgID8gJyZvcmRlcj1wcm9qZWN0LGNsaWVudCdcbiAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICBjb25zdCBtYWlhUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX0ke29yZGVyUGFyYW19YCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb25zdCBtYWlhRGF0YSA9IGF3YWl0IG1haWFSZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgICAgY2xvbmVBZ2VudHMgPSBtYWlhRGF0YS5kYXRhPy5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJykgfHwgW11cbiAgICAgICAgICAgIH0gY2F0Y2ggKG1haWFFcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBlcnJvciBlcyA0MDNcbiAgICAgICAgICAgICAgLy8gZmV0Y2hDT1IgcHVlZGUgbGFuemFyIGRpZmVyZW50ZXMgdGlwb3MgZGUgZXJyb3JlczpcbiAgICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgICAgLy8gMi4gRXJyb3IgZ2Vuw6lyaWNvICdGYWlsZWQgZmV0Y2hpbmcgZGF0YScgc2kgZXMgNDAzIHBlcm8gbm8gaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgICAgLy8gMy4gTmVjZXNpdGFtb3MgdmVyaWZpY2FyIGVsIHN0YXR1cyBjb2RlIHNpIGVzdMOhIGRpc3BvbmlibGVcbiAgICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgICBtYWlhRXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgICAgbWFpYUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgICBtYWlhRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpIC8vIGZldGNoQ09SIGxhbnphIGVzdG8gcGFyYSA0MDMgc2luICdBY2Nlc3MgZGVuaWVkJ1xuXG4gICAgICAgICAgICAgIGlmIChpczQwM0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBjb250aW51YXIgc2luIGxvcyBjbG9uZUFnZW50c1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNpIGVzIG90cm8gZXJyb3IsIGxhbnphcmxvXG4gICAgICAgICAgICAgICAgdGhyb3cgbWFpYUVycm9yXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBRdWVyeSAyOiBBZ2VudGVzIGN1c3RvbSBjb24gcGFnaW5hY2nDs25cbiAgICAgICAgICBsZXQgY3VzdG9tQWdlbnRzOiBBZ2VudFtdID0gW11cbiAgICAgICAgICBsZXQgY3VzdG9tSGFzTW9yZSA9IGZhbHNlXG4gICAgICAgICAgbGV0IGN1c3RvbU5leHRPZmZzZXQ6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICBwYXRoOiAnYWdlbnRzP2FnZW50X3R5cGU9Y3VzdG9tJmxpbWl0PTcmb2Zmc2V0PTAnLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbURhdGEgPSBhd2FpdCBjdXN0b21SZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgIGN1c3RvbUFnZW50cyA9IGN1c3RvbURhdGEuZGF0YSB8fCBbXVxuICAgICAgICAgICAgY3VzdG9tSGFzTW9yZSA9IGN1c3RvbURhdGEuaGFzX21vcmUgfHwgZmFsc2VcbiAgICAgICAgICAgIGN1c3RvbU5leHRPZmZzZXQgPSBjdXN0b21EYXRhLm5leHRfb2Zmc2V0IHx8IG51bGxcbiAgICAgICAgICB9IGNhdGNoIChjdXN0b21FcnJvcjogYW55KSB7XG4gICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAvLyBmZXRjaENPUiBwdWVkZSBsYW56YXIgZGlmZXJlbnRlcyB0aXBvcyBkZSBlcnJvcmVzOlxuICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAzLiBOZWNlc2l0YW1vcyB2ZXJpZmljYXIgZWwgc3RhdHVzIGNvZGUgc2kgZXN0w6EgZGlzcG9uaWJsZVxuICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgY3VzdG9tRXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgY3VzdG9tRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpIC8vIGZldGNoQ09SIGxhbnphIGVzdG8gcGFyYSA0MDMgc2luICdBY2Nlc3MgZGVuaWVkJ1xuXG4gICAgICAgICAgICBpZiAoaXM0MDNFcnJvcikge1xuICAgICAgICAgICAgICAvLyBTaSBlcyA0MDMsIGNvbnRpbnVhciBzaW4gbG9zIGN1c3RvbUFnZW50cyAoY3VzdG9tQWdlbnRzIHF1ZWRhIGNvbW8gYXJyYXkgdmFjw61vKVxuICAgICAgICAgICAgICAvLyBFc3RvIHB1ZWRlIG9jdXJyaXIgZW4gZG9zIGVzY2VuYXJpb3M6XG4gICAgICAgICAgICAgIC8vIDEuIFVzdWFyaW8gTk8gZXMgZGUgdXNlclJvbGVzRGlzYWJsZWQ6IHRlbmRyw6Egc29sbyBsb3MgY2xvbmVBZ2VudHMgKHNpIGxhIHF1ZXJ5IGNsb25lIGZ1ZSBleGl0b3NhKVxuICAgICAgICAgICAgICAvLyAyLiBVc3VhcmlvIFPDjSBlcyBkZSB1c2VyUm9sZXNEaXNhYmxlZDogZWwgbGlzdGFkbyBxdWVkYXLDoSB2YWPDrW8gKHBvcnF1ZSBubyBoYXkgY2xvbmVBZ2VudHMpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICB0aHJvdyBjdXN0b21FcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbWJpbmFyOiBhZ2VudGVzIGNsb25lIHByaW1lcm8sIGx1ZWdvIGxvcyBjdXN0b20gKHNpIGV4aXN0ZW4pXG4gICAgICAgICAgLy8gU2kgZWwgdXN1YXJpbyB0aWVuZSB1biByb2wgZGVzaGFiaWxpdGFkbywgbm8gaW5jbHVpciBjbG9uZUFnZW50c1xuICAgICAgICAgIGlmICh1c2VyUm9sZXNEaXNhYmxlZC5pbmNsdWRlcyh1c2VyLnJvbGVfaWQpKSB7XG4gICAgICAgICAgICAvLyBVc3VhcmlvIGRlIHJvbGVzIGRpc2FibGVkOiBzb2xvIGN1c3RvbUFnZW50c1xuICAgICAgICAgICAgLy8gU2kgY3VzdG9tQWdlbnRzIGVzdMOhIHZhY8OtbyAocG9yIDQwMyksIGFnZW50UGFyc2VkIHNlcsOhIFtdXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGN1c3RvbUFnZW50c1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBVc3VhcmlvIG5vcm1hbDogY2xvbmVBZ2VudHMgKyBjdXN0b21BZ2VudHNcbiAgICAgICAgICAgIC8vIFNpIGN1c3RvbUFnZW50cyBlc3TDoSB2YWPDrW8gKHBvciA0MDMpIHBlcm8gaGF5IGNsb25lQWdlbnRzLCBhZ2VudFBhcnNlZCB0ZW5kcsOhIGxvcyBjbG9uZXNcbiAgICAgICAgICAgIC8vIFNpIG5vIGhheSBjbG9uZUFnZW50cyBuaSBjdXN0b21BZ2VudHMsIGFnZW50UGFyc2VkIHNlcsOhIFtdXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGNsb25lQWdlbnRzLmxlbmd0aCA/IFsuLi5jbG9uZUFnZW50cywgLi4uY3VzdG9tQWdlbnRzXSA6IGN1c3RvbUFnZW50c1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgIGFnZW50UGFyc2VkID0gc29ydEFnZW50cyhhZ2VudFBhcnNlZClcbiAgICAgICAgICBoYXNNb3JlID0gY3VzdG9tSGFzTW9yZVxuICAgICAgICAgIG5leHRPZmZzZXQgPSBjdXN0b21OZXh0T2Zmc2V0XG5cbiAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgZGF0YTogYWdlbnRQYXJzZWQsXG4gICAgICAgICAgICBoYXNfbW9yZTogaGFzTW9yZSxcbiAgICAgICAgICAgIG5leHRfb2Zmc2V0OiBuZXh0T2Zmc2V0LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWdlbnRlcyBkZXNwdcOpcyBkZSBwcm9jZXNhciBsYXMgcXVlcmllcywgbGltcGlhciBlbCBlcnJvclxuICAgICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBwcm9qZWN0LCBjbGllbnQgbyBoZWFkZXIgc2luIG11bHRpQWdlbnRzIChtaXNtbyBjcml0ZXJpbyBkZSBvcmRlbiBwcm9qZWN0L2NsaWVudDsgaGVhZGVyIGHDsWFkZSBwYWdpbmFjacOzbilcbiAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgICAgIGlmIChzZWN0aW9uID09PSAncHJvamVjdCcgfHwgc2VjdGlvbiA9PT0gJ2NsaWVudCcgfHwgc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2FnZW50X3R5cGUnLCAnY2xvbmUnKVxuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsYW5nJywgbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSlcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb3JkZXInLCBzZWN0aW9uID09PSAnY2xpZW50JyA/ICdjbGllbnQscHJvamVjdCcgOiAncHJvamVjdCxjbGllbnQnKVxuICAgICAgICAgICAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGltaXQnLCAnNycpXG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgJzAnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcXVlcnlQYXJhbXMudG9TdHJpbmcoKVxuICAgICAgICAgIGNvbnN0IHBhdGggPSBgYWdlbnRzJHtxdWVyeVN0cmluZyA/IGA/JHtxdWVyeVN0cmluZ31gIDogJyd9YFxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgIC8vIGRhdGEuZGF0YSB5YSBjb250aWVuZSB0b2RvcyBsb3MgYWdlbnRlcyBjbG9uZSBkZSBsYSBxdWVyeSBhZ2VudF90eXBlPWNsb25lXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGRhdGEuZGF0YSB8fCBbXVxuICAgICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gc29ydEFnZW50cyhhZ2VudFBhcnNlZClcbiAgICAgICAgICAgIGhhc01vcmUgPSBkYXRhLmhhc19tb3JlXG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gZGF0YS5uZXh0X29mZnNldFxuXG4gICAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICBkYXRhOiBhZ2VudFBhcnNlZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAocmVzcG9uc2VFcnJvcjogYW55KSB7XG4gICAgICAgICAgICAvLyBWZXJpZmljYXIgc2kgZWwgZXJyb3IgZXMgNDAzXG4gICAgICAgICAgICAvLyBmZXRjaENPUiBwdWVkZSBsYW56YXIgZGlmZXJlbnRlcyB0aXBvcyBkZSBlcnJvcmVzOlxuICAgICAgICAgICAgLy8gMS4gRXJyb3IgY29uIGVycm9yRGF0YS5kZXRhaWwgc2kgaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDIuIEVycm9yIGdlbsOpcmljbyAnRmFpbGVkIGZldGNoaW5nIGRhdGEnIHNpIGVzIDQwMyBwZXJvIG5vIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAzLiBOZWNlc2l0YW1vcyB2ZXJpZmljYXIgZWwgc3RhdHVzIGNvZGUgc2kgZXN0w6EgZGlzcG9uaWJsZVxuICAgICAgICAgICAgY29uc3QgaXM0MDNFcnJvciA9XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/LnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJykgLy8gZmV0Y2hDT1IgbGFuemEgZXN0byBwYXJhIDQwMyBzaW4gJ0FjY2VzcyBkZW5pZWQnXG5cbiAgICAgICAgICAgIGlmIChpczQwM0Vycm9yKSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgZXN0YWJsZWNlciBhZ2VudGVzIHZhY8Otb3MgeSBjb250aW51YXJcbiAgICAgICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICAgICAgICBoYXNfbW9yZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IG51bGwsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTaSBlcyBvdHJvIGVycm9yLCBsYW56YXJsb1xuICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTMOzZ2ljYSBkZSBzZWxlY3QgYWdlbnQgLSBTb2xvIHNlbGVjY2lvbmFyIHNpIGhheSBhZ2VudGVzIGRpc3BvbmlibGVzXG4gICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKGFnZW50VG9TZWxlY3QgJiYgYWdlbnRQYXJzZWQuZmluZCgoYWdlbnRUb1JlcXVlc3Q6IEFnZW50KSA9PiBhZ2VudFRvUmVxdWVzdC5pZCA9PT0gYWdlbnRUb1NlbGVjdC5pZCkpIHtcbiAgICAgICAgICAgIGlmIChsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gYWdlbnRUb1NlbGVjdC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gYWdlbnRUb1NlbGVjdFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFRvU2VsZWN0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoYWdlbnRQYXJzZWQ/LlswXSAmJiAoIWFnZW50IHx8ICFhZ2VudFBhcnNlZC5maW5kKChhOiBBZ2VudCkgPT4gYS5pZCA9PT0gYWdlbnQuaWQpKSkge1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlQWdlbnRzID1cbiAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhdXNlclJvbGVzRGlzYWJsZWQuaW5jbHVkZXModXNlci5yb2xlX2lkKVxuICAgICAgICAgICAgICAgID8gYWdlbnRQYXJzZWRcbiAgICAgICAgICAgICAgICA6IGFnZW50UGFyc2VkLmZpbHRlcigoYWdlbnRJdGVtOiBBZ2VudCkgPT4gYWdlbnRJdGVtLnR5cGUgIT09ICdjbG9uZScpXG5cbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdEFnZW50XSA9IGF2YWlsYWJsZUFnZW50c1xuICAgICAgICAgICAgaWYgKGZpcnN0QWdlbnQgJiYgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudD8uaWQgIT09IGZpcnN0QWdlbnQuaWQpIHtcbiAgICAgICAgICAgICAgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudCA9IGZpcnN0QWdlbnRcbiAgICAgICAgICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBZ2VudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGFnZW50VG9TZWxlY3QgJiYgYWdlbnRQYXJzZWQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlQWdlbnRzID1cbiAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhdXNlclJvbGVzRGlzYWJsZWQuaW5jbHVkZXModXNlci5yb2xlX2lkKVxuICAgICAgICAgICAgICAgID8gYWdlbnRQYXJzZWRcbiAgICAgICAgICAgICAgICA6IGFnZW50UGFyc2VkLmZpbHRlcigoYWdlbnRJdGVtOiBBZ2VudCkgPT4gYWdlbnRJdGVtLnR5cGUgIT09ICdjbG9uZScpXG5cbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdEF2YWlsYWJsZUFnZW50XSA9IGF2YWlsYWJsZUFnZW50c1xuICAgICAgICAgICAgaWYgKGZpcnN0QXZhaWxhYmxlQWdlbnQgJiYgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudD8uaWQgIT09IGZpcnN0QXZhaWxhYmxlQWdlbnQuaWQpIHtcbiAgICAgICAgICAgICAgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudCA9IGZpcnN0QXZhaWxhYmxlQWdlbnRcbiAgICAgICAgICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBdmFpbGFibGVBZ2VudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldEVycm9yKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpc1JlZnJlc2hpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxhc3RSZXF1ZXN0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBsb2FkaW5nXVxuICApXG5cbiAgY29uc3QgbG9hZE1vcmVBZ2VudHMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaXNNdWx0aUFnZW50cyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gICAgLy8gQ2FyZ2FyIG3DoXM6IGVuIGhlYWRlciBzaWVtcHJlOyBlbiBwcm9qZWN0IHNvbG8gc2kgaXNNdWx0aUFnZW50cyAocG9ycXVlIHNvbG8gZW50b25jZXMgaGF5IHBhZ2luYWNpw7NuIGRlIGN1c3RvbSlcbiAgICBjb25zdCBjYW5Mb2FkTW9yZSA9IHNlY3Rpb24gPT09ICdoZWFkZXInIHx8IGlzTXVsdGlBZ2VudHNcbiAgICBpZiAoIWNhbkxvYWRNb3JlIHx8ICFhZ2VudHMuaGFzX21vcmUgfHwgIWFnZW50cy5uZXh0X29mZnNldCB8fCBsb2FkaW5nTW9yZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0TG9hZGluZ01vcmUodHJ1ZSlcbiAgICBzZXRFcnJvcihudWxsKVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBwYXRoOiBzdHJpbmdcblxuICAgICAgLy8gU2kgZXMgbXVsdGlBZ2VudHMsIHNvbG8gY2FyZ2FyIGFnZW50cyBjdXN0b20gKE1haWEgeWEgZXN0w6EgY2FyZ2FkbylcbiAgICAgIGlmIChpc011bHRpQWdlbnRzKSB7XG4gICAgICAgIC8vIE1hbnRlbmVyIGNhbnRpZGFkIGltcGFyIGRlIGNhcmRzOiBwcmltZXJhIGNhcmdhIDcsIHNpZ3VpZW50ZXMgKzYgKDcsIDEzLCAxOSwgLi4uKVxuICAgICAgICBwYXRoID0gYGFnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD02Jm9mZnNldD0ke2FnZW50cy5uZXh0X29mZnNldH1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaSBubyBlcyBtdWx0aUFnZW50cywgY2FyZ2FyIG3DoXMgYWdlbnRlcyBjbG9uZSAoTWFpYSkg4oCUIG1pc21vIG9yZGVyIHF1ZSBwcm9qZWN0IHBhcmEgaGVhZGVyXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnYWdlbnRfdHlwZScsICdjbG9uZScpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSkpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb3JkZXInLCAncHJvamVjdCxjbGllbnQnKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgJzcnKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ29mZnNldCcsIGFnZW50cy5uZXh0X29mZnNldC50b1N0cmluZygpKVxuICAgICAgICBwYXRoID0gYGFnZW50cz8ke3F1ZXJ5UGFyYW1zLnRvU3RyaW5nKCl9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG5cbiAgICAgIC8vIEFjdW11bGFyIGFnZW50ZXMsIGV4Y2x1eWVuZG8gZHVwbGljYWRvc1xuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBtdWx0aUFnZW50czogc2VwYXJhciBjbG9uZSB5IGN1c3RvbVxuICAgICAgICAgIC8vIE1hbnRlbmVyIHRvZG9zIGxvcyBhZ2VudGVzIGNsb25lIGV4aXN0ZW50ZXMgYWwgaW5pY2lvXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdDbG9uZUFnZW50cyA9IHByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcblxuICAgICAgICAgIC8vIE9idGVuZXIgSURzIGV4aXN0ZW50ZXMgKGV4Y2x1eWVuZG8gY2xvbmVzKVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScpLm1hcCgoYWc6IEFnZW50KSA9PiBhZy5pZCkpXG5cbiAgICAgICAgICAvLyBGaWx0cmFyIG51ZXZvcyBhZ2VudHMgcXVlIG5vIGVzdMOpbiB5YSBlbiBsYSBsaXN0YSAoeSBxdWUgbm8gc2VhbiBjbG9uZSlcbiAgICAgICAgICBjb25zdCBuZXdBZ2VudHMgPSBkYXRhLmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgIT09ICdjbG9uZScgJiYgIWV4aXN0aW5nSWRzLmhhcyhhZy5pZCkpXG5cbiAgICAgICAgICAvLyBDb25zdHJ1aXIgZWwgbnVldm8gYXJyYXk6IGNsb25lcyBwcmltZXJvLCBsdWVnbyBsb3MgYWdlbnRzIGV4aXN0ZW50ZXMgcXVlIG5vIHNlYW4gY2xvbmUsIGx1ZWdvIGxvcyBudWV2b3NcbiAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZXhpc3RpbmdDbG9uZUFnZW50cy5sZW5ndGhcbiAgICAgICAgICAgID8gWy4uLmV4aXN0aW5nQ2xvbmVBZ2VudHMsIC4uLnByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJyksIC4uLm5ld0FnZW50c11cbiAgICAgICAgICAgIDogWy4uLnByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSAhPT0gJ2Nsb25lJyksIC4uLm5ld0FnZW50c11cblxuICAgICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHNvcnRBZ2VudHMobmV3RGF0YSlcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgaGFzX21vcmU6IGRhdGEuaGFzX21vcmUsXG4gICAgICAgICAgICBuZXh0X29mZnNldDogZGF0YS5uZXh0X29mZnNldCxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gTMOzZ2ljYSBwYXJhICFpc011bHRpQWdlbnRzOiB0b2RvcyBsb3MgYWdlbnRlcyBzb24gY2xvbmUsIHNpbXBsZW1lbnRlIGFncmVnYXIgZXZpdGFuZG8gZHVwbGljYWRvc1xuICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5kYXRhLm1hcCgoYWc6IEFnZW50KSA9PiBhZy5pZCkpXG4gICAgICAgIGNvbnN0IG5ld0FnZW50cyA9IChkYXRhLmRhdGEgfHwgW10pLmZpbHRlcigoYWc6IEFnZW50KSA9PiAhZXhpc3RpbmdJZHMuaGFzKGFnLmlkKSlcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IFsuLi5wcmV2LmRhdGEsIC4uLm5ld0FnZW50c11cblxuICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhuZXdEYXRhKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICBoYXNfbW9yZTogZGF0YS5oYXNfbW9yZSxcbiAgICAgICAgICBuZXh0X29mZnNldDogZGF0YS5uZXh0X29mZnNldCxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ3NuYWNrYmFyLmxvYWRNb3JlQWdlbnRzLmVycm9yJykpXG4gICAgICBzZXRMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9XG4gIH0sIFtzZWN0aW9uLCBhZ2VudHMuaGFzX21vcmUsIGFnZW50cy5uZXh0X29mZnNldCwgbG9hZGluZ01vcmUsIGkxOG4ubGFuZ3VhZ2VdKVxuXG4gIHJldHVybiB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3IsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3JELFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxTQUFTLFFBQVEsV0FBVztBQUVyQyxTQUFTQyxPQUFPLEVBQUVDLFdBQVcsUUFBUSwyQkFBMkI7QUFDaEUsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUlDLE1BQWUsRUFBYztFQUMvQztFQUNBLElBQU1DLFdBQVcsR0FBR0QsTUFBTSxDQUFDRSxNQUFNLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUlBLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLLE9BQU87RUFBQSxFQUFDO0VBQzVELElBQU1DLFdBQVcsR0FBR0wsTUFBTSxDQUFDRSxNQUFNLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUlBLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLLE9BQU87RUFBQSxFQUFDOztFQUU1RDtFQUNBLElBQU1FLFNBQVMsR0FBR0QsV0FBVyxDQUFDSCxNQUFNLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUlBLEVBQUUsQ0FBQ0ksV0FBVztFQUFBLEVBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQUNDLENBQUMsRUFBRUMsQ0FBQztJQUFBLE9BQUtELENBQUMsQ0FBQ0UsSUFBSSxDQUFDQyxhQUFhLENBQUNGLENBQUMsQ0FBQ0MsSUFBSSxDQUFDO0VBQUEsRUFBQztFQUN2RyxJQUFNRSxZQUFZLEdBQUdSLFdBQVcsQ0FBQ0gsTUFBTSxDQUFDLFVBQUFDLEVBQUU7SUFBQSxPQUFJLENBQUNBLEVBQUUsQ0FBQ0ksV0FBVztFQUFBLEVBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQUNDLENBQUMsRUFBRUMsQ0FBQztJQUFBLE9BQUtELENBQUMsQ0FBQ0UsSUFBSSxDQUFDQyxhQUFhLENBQUNGLENBQUMsQ0FBQ0MsSUFBSSxDQUFDO0VBQUEsRUFBQzs7RUFFM0c7RUFDQSxPQUFPVixXQUFXLENBQUNhLE1BQU0sTUFBQUMsTUFBQSxDQUFBQyxrQkFBQSxDQUFPZixXQUFXLEdBQUFlLGtCQUFBLENBQUtWLFNBQVMsR0FBQVUsa0JBQUEsQ0FBS0gsWUFBWSxRQUFBRSxNQUFBLENBQUFDLGtCQUFBLENBQVFWLFNBQVMsR0FBQVUsa0JBQUEsQ0FBS0gsWUFBWSxFQUFDO0FBQy9HLENBQUM7QUFjRCxPQUFPLElBQU1JLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFBQyxJQUFBLEVBQXlFO0VBQUEsSUFBbkVDLFdBQVcsR0FBQUQsSUFBQSxDQUFYQyxXQUFXO0lBQUVDLE9BQU8sR0FBQUYsSUFBQSxDQUFQRSxPQUFPO0lBQUVDLEtBQUssR0FBQUgsSUFBQSxDQUFMRyxLQUFLO0lBQUVDLFlBQVksR0FBQUosSUFBQSxDQUFaSSxZQUFZO0VBQ3RFLElBQU1DLElBQUksR0FBRzNCLE9BQU8sQ0FBQyxDQUFDO0VBQ3RCLElBQUE0QixTQUFBLEdBQTRCbEMsUUFBUSxDQUFxRTtNQUFFbUMsSUFBSSxFQUFFO0lBQUcsQ0FBQyxDQUFDO0lBQUFDLFVBQUEsR0FBQUMsY0FBQSxDQUFBSCxTQUFBO0lBQS9HeEIsTUFBTSxHQUFBMEIsVUFBQTtJQUFFRSxTQUFTLEdBQUFGLFVBQUE7RUFDeEIsSUFBQUcsVUFBQSxHQUE4QnZDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXdDLFVBQUEsR0FBQUgsY0FBQSxDQUFBRSxVQUFBO0lBQXRDRSxPQUFPLEdBQUFELFVBQUE7SUFBRUUsVUFBVSxHQUFBRixVQUFBO0VBQzFCLElBQUFHLFVBQUEsR0FBc0MzQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUE0QyxVQUFBLEdBQUFQLGNBQUEsQ0FBQU0sVUFBQTtJQUE5Q0UsV0FBVyxHQUFBRCxVQUFBO0lBQUVFLGNBQWMsR0FBQUYsVUFBQTtFQUNsQyxJQUFBRyxVQUFBLEdBQTBCL0MsUUFBUSxDQUFnQixJQUFJLENBQUM7SUFBQWdELFVBQUEsR0FBQVgsY0FBQSxDQUFBVSxVQUFBO0lBQWhERSxLQUFLLEdBQUFELFVBQUE7SUFBRUUsUUFBUSxHQUFBRixVQUFBO0VBQ3RCLElBQUFHLG1CQUFBLEdBQWdDL0Msa0JBQWtCLENBQUMsQ0FBQztJQUE1Q2dELG1CQUFtQixHQUFBRCxtQkFBQSxDQUFuQkMsbUJBQW1CO0VBQzNCLElBQUFDLGVBQUEsR0FBb0JsRCxjQUFjLENBQUMsaUJBQWlCLENBQUM7SUFBN0NtRCxDQUFDLEdBQUFELGVBQUEsQ0FBREMsQ0FBQztJQUFFQyxJQUFJLEdBQUFGLGVBQUEsQ0FBSkUsSUFBSTtFQUNmLElBQU1DLG9CQUFvQixHQUFHdEQsTUFBTSxDQUFlLElBQUksQ0FBQztFQUN2RCxJQUFNdUQsZUFBZSxHQUFHdkQsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNyQyxJQUFNd0QsY0FBYyxHQUFHeEQsTUFBTSxDQUFnQixJQUFJLENBQUM7RUFFbEQsSUFBTXlELGlCQUFpQixHQUFHLENBQUNwRCxXQUFXLENBQUNxRCxZQUFZLEVBQUVyRCxXQUFXLENBQUNzRCxVQUFVLEVBQUV0RCxXQUFXLENBQUN1RCxNQUFNLENBQUM7RUFFaEcsSUFBTUMsUUFBUSxHQUFHOUQsV0FBVyxDQUMxQixVQUFDK0QsUUFBZSxFQUFFQyxPQUF5QixFQUFLO0lBQzlDM0IsU0FBUyxDQUFDLFVBQUE0QixJQUFJLEVBQUk7TUFDaEI7TUFDQSxJQUFNQyxXQUFXLEdBQUdELElBQUksQ0FBQy9CLElBQUksQ0FBQ2lDLElBQUksQ0FBQyxVQUFBQyxhQUFhO1FBQUEsT0FBSUEsYUFBYSxDQUFDQyxFQUFFLEtBQUtOLFFBQVEsQ0FBQ00sRUFBRTtNQUFBLEVBQUM7TUFDckYsSUFBSUgsV0FBVyxFQUFFO1FBQ2YsT0FBT0QsSUFBSTtNQUNiO01BQ0EsSUFBTUssT0FBTyxNQUFBOUMsTUFBQSxDQUFBQyxrQkFBQSxDQUFPd0MsSUFBSSxDQUFDL0IsSUFBSSxJQUFFNkIsUUFBUSxFQUFDO01BQ3hDLElBQU1RLFVBQVUsR0FBRy9ELFVBQVUsQ0FBQzhELE9BQU8sQ0FBQztNQUN0QyxPQUFBRSxhQUFBLENBQUFBLGFBQUEsS0FDS1AsSUFBSTtRQUNQL0IsSUFBSSxFQUFFcUM7TUFBVTtJQUVwQixDQUFDLENBQUM7SUFDRixJQUFJLENBQUFQLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFUyxZQUFZLE1BQUssS0FBSyxFQUFFO01BQ25DMUMsWUFBWSxDQUFDLENBQUM7SUFDaEI7RUFDRixDQUFDLEVBQ0QsQ0FBQ0EsWUFBWSxDQUNmLENBQUM7RUFFRCxJQUFNMkMsV0FBVyxHQUFHMUUsV0FBVyxDQUFDLFVBQUMyRSxPQUF3QixFQUFLO0lBQzVEdEMsU0FBUyxDQUFDLFVBQUE0QixJQUFJO01BQUEsT0FBQU8sYUFBQSxDQUFBQSxhQUFBLEtBQ1RQLElBQUk7UUFDUC9CLElBQUksRUFBRStCLElBQUksQ0FBQy9CLElBQUksQ0FBQ3ZCLE1BQU0sQ0FBQyxVQUFBTyxDQUFDO1VBQUEsT0FBSUEsQ0FBQyxDQUFDbUQsRUFBRSxLQUFLTSxPQUFPLENBQUNDLFFBQVEsQ0FBQyxDQUFDO1FBQUE7TUFBQztJQUFBLENBQ3hELENBQUM7RUFDTCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTUMsV0FBVyxHQUFHN0UsV0FBVyxDQUFDLFVBQUM4RSxZQUFtQixFQUFLO0lBQ3ZEekMsU0FBUyxDQUFDLFVBQUE0QixJQUFJLEVBQUk7TUFDaEIsSUFBTWMsV0FBVyxHQUFHZCxJQUFJLENBQUMvQixJQUFJLENBQUM4QyxHQUFHLENBQUMsVUFBQVosYUFBYTtRQUFBLE9BQzdDQSxhQUFhLENBQUNDLEVBQUUsS0FBS1MsWUFBWSxDQUFDVCxFQUFFLEdBQUdTLFlBQVksR0FBR1YsYUFBYTtNQUFBLENBQ3JFLENBQUM7TUFDRCxJQUFNRyxVQUFVLEdBQUcvRCxVQUFVLENBQUN1RSxXQUFXLENBQUM7TUFDMUMsT0FBQVAsYUFBQSxDQUFBQSxhQUFBLEtBQ0tQLElBQUk7UUFDUC9CLElBQUksRUFBRXFDO01BQVU7SUFFcEIsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU1VLG1CQUFtQixHQUFHakYsV0FBVyxDQUNyQyxVQUFDOEUsWUFBbUIsRUFBa0M7SUFBQSxJQUFoQ0ksVUFBbUIsR0FBQUMsU0FBQSxDQUFBNUQsTUFBQSxRQUFBNEQsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxLQUFLO0lBQy9DOUMsU0FBUyxDQUFDLFVBQUE0QixJQUFJLEVBQUk7TUFDaEIsSUFBTWMsV0FBVyxHQUFHZCxJQUFJLENBQUMvQixJQUFJLENBQUM4QyxHQUFHLENBQUMsVUFBQVosYUFBYSxFQUFJO1FBQ2pELElBQUlBLGFBQWEsQ0FBQ0MsRUFBRSxLQUFLUyxZQUFZLENBQUNULEVBQUUsRUFBRTtVQUN4QyxJQUFBZ0IsS0FBQSxHQUFvQ1AsWUFBWTtZQUF4Q1EsT0FBTyxHQUFBRCxLQUFBLENBQVBDLE9BQU87WUFBS0MsV0FBVyxHQUFBQyx3QkFBQSxDQUFBSCxLQUFBLEVBQUFJLFNBQUE7VUFDL0IsSUFBTUMsV0FBVyxHQUFBbEIsYUFBQSxDQUFBQSxhQUFBLEtBQVFKLGFBQWEsR0FBS21CLFdBQVcsQ0FBRTtVQUN4RCxPQUFPRyxXQUFXO1FBQ3BCO1FBQ0EsT0FBT3RCLGFBQWE7TUFDdEIsQ0FBQyxDQUFDOztNQUVGO01BQ0EsSUFBTXVCLFNBQVMsR0FBR1QsVUFBVSxHQUFHMUUsVUFBVSxDQUFDdUUsV0FBVyxDQUFDLEdBQUdBLFdBQVc7TUFFcEUsT0FBQVAsYUFBQSxDQUFBQSxhQUFBLEtBQ0tQLElBQUk7UUFDUC9CLElBQUksRUFBRXlEO01BQVM7SUFFbkIsQ0FBQyxDQUFDOztJQUVGO0lBQ0EsSUFBSSxDQUFBN0QsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUV1QyxFQUFFLE1BQUtTLFlBQVksQ0FBQ1QsRUFBRSxFQUFFO01BQ2pDLElBQU1ELGFBQWEsR0FBRzNELE1BQU0sQ0FBQ3lCLElBQUksQ0FBQzBELElBQUksQ0FBQyxVQUFBMUUsQ0FBQztRQUFBLE9BQUlBLENBQUMsQ0FBQ21ELEVBQUUsS0FBS1MsWUFBWSxDQUFDVCxFQUFFO01BQUEsRUFBQztNQUNyRSxJQUFJRCxhQUFhLEVBQUU7UUFDakIsSUFBQXlCLEtBQUEsR0FBb0NmLFlBQVk7VUFBeENRLE9BQU8sR0FBQU8sS0FBQSxDQUFQUCxPQUFPO1VBQUtDLFdBQVcsR0FBQUMsd0JBQUEsQ0FBQUssS0FBQSxFQUFBQyxVQUFBO1FBQy9CLElBQU1KLFdBQVcsR0FBQWxCLGFBQUEsQ0FBQUEsYUFBQSxLQUFRSixhQUFhLEdBQUttQixXQUFXLENBQUU7UUFDeEQzRCxXQUFXLENBQUM4RCxXQUFXLENBQUM7TUFDMUIsQ0FBQyxNQUFNO1FBQ0wsSUFBQUssS0FBQSxHQUFvQ2pCLFlBQVk7VUFBeENRLFFBQU8sR0FBQVMsS0FBQSxDQUFQVCxPQUFPO1VBQUtDLFlBQVcsR0FBQUMsd0JBQUEsQ0FBQU8sS0FBQSxFQUFBQyxVQUFBO1FBQy9CcEUsV0FBVyxDQUFDMkQsWUFBb0IsQ0FBQztNQUNuQztJQUNGO0VBQ0YsQ0FBQyxFQUNELENBQUN6RCxLQUFLLEVBQUVGLFdBQVcsRUFBRW5CLE1BQU0sQ0FBQ3lCLElBQUksQ0FDbEMsQ0FBQztFQUVELElBQU0rRCxjQUFjLEdBQUdqRyxXQUFXLENBQUMsWUFBTTtJQUN2Q3FDLFNBQVMsQ0FBQyxVQUFBNEIsSUFBSSxFQUFJO01BQ2hCLElBQU1NLFVBQVUsR0FBRy9ELFVBQVUsQ0FBQ3lELElBQUksQ0FBQy9CLElBQUksQ0FBQztNQUN4QyxPQUFBc0MsYUFBQSxDQUFBQSxhQUFBLEtBQ0tQLElBQUk7UUFDUC9CLElBQUksRUFBRXFDO01BQVU7SUFFcEIsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU0yQixnQkFBZ0IsR0FBR2xHLFdBQVcsQ0FDbEMsVUFBQzJFLE9BQWdCLEVBQUs7SUFDcEIsSUFBSWxFLE1BQU0sQ0FBQ3lCLElBQUksQ0FBQ1gsTUFBTSxFQUFFO01BQ3RCLElBQU00RSxVQUFVLEdBQUcxRixNQUFNLENBQUN5QixJQUFJLENBQUNrRSxTQUFTLENBQUMsVUFBQUMsU0FBUztRQUFBLE9BQUlBLFNBQVMsQ0FBQ2hDLEVBQUUsS0FBS00sT0FBTztNQUFBLEVBQUM7TUFDL0VwQixvQkFBb0IsQ0FBQytDLE9BQU8sR0FBRzdGLE1BQU0sQ0FBQ3lCLElBQUksQ0FBQ2lFLFVBQVUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUNwRXZFLFdBQVcsQ0FBQ25CLE1BQU0sQ0FBQ3lCLElBQUksQ0FBQ2lFLFVBQVUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BEO0VBQ0YsQ0FBQyxFQUNELENBQUMxRixNQUFNLENBQUN5QixJQUFJLEVBQUVOLFdBQVcsQ0FDM0IsQ0FBQztFQUVELElBQU0yRSxlQUFlLEdBQUd2RyxXQUFXO0lBQUEsSUFBQXdHLEtBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUNqQyxTQUFBQyxRQUFPQyxhQUFxQjtNQUFBLElBQUFDLGlCQUFBO01BQUEsSUFBQUMsVUFBQSxFQUFBQyxhQUFBLEVBQUFDLFdBQUEsRUFBQUMsT0FBQSxFQUFBQyxVQUFBLEVBQUF6RyxXQUFBLEVBQUEwRyxjQUFBLEVBQUFDLFVBQUEsRUFBQUMsWUFBQSxFQUFBQyxRQUFBLEVBQUFDLG1CQUFBLEVBQUFDLGtCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLFVBQUEsRUFBQUMsWUFBQSxFQUFBQyxhQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGNBQUEsRUFBQUMsVUFBQSxFQUFBQyxxQkFBQSxFQUFBQyxvQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxXQUFBLEVBQUFDLFdBQUEsRUFBQUMsV0FBQSxFQUFBQyxJQUFBLEVBQUFDLFFBQUEsRUFBQXRHLElBQUEsRUFBQXVHLHFCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLFlBQUEsRUFBQUMsWUFBQSxFQUFBQyxhQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQS9DLFVBQUEsRUFBQWdELHNCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLEVBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUE7TUFBQSxPQUFBaEQsbUJBQUEsQ0FBQWlELElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUEzRixJQUFBLEdBQUEyRixRQUFBLENBQUFDLElBQUE7VUFBQTtZQUFBLEtBQ3RCckcsZUFBZSxDQUFDOEMsT0FBTztjQUFBc0QsUUFBQSxDQUFBQyxJQUFBO2NBQUE7WUFBQTtZQUFBLE9BQUFELFFBQUEsQ0FBQUUsTUFBQTtVQUFBO1lBSXJCL0MsVUFBVSxHQUFHLENBQUFGLGFBQWEsYUFBYkEsYUFBYSxnQkFBQUMsaUJBQUEsR0FBYkQsYUFBYSxDQUFFeEMsRUFBRSxjQUFBeUMsaUJBQUEsdUJBQWpCQSxpQkFBQSxDQUFtQmxDLFFBQVEsQ0FBQyxDQUFDLEtBQUksU0FBUztZQUFBLE1BQ3pEbkIsY0FBYyxDQUFDNkMsT0FBTyxLQUFLUyxVQUFVLElBQUksQ0FBQ3ZFLE9BQU87Y0FBQW9ILFFBQUEsQ0FBQUMsSUFBQTtjQUFBO1lBQUE7WUFBQSxPQUFBRCxRQUFBLENBQUFFLE1BQUE7VUFBQTtZQUlyRHRHLGVBQWUsQ0FBQzhDLE9BQU8sR0FBRyxJQUFJO1lBQzlCN0MsY0FBYyxDQUFDNkMsT0FBTyxHQUFHUyxVQUFVO1lBQ25DdEUsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNoQlEsUUFBUSxDQUFDLElBQUksQ0FBQztZQUVSK0QsYUFBYSxHQUFHLENBQUMsQ0FBQytDLE1BQU0sQ0FBQ0MsMkJBQTJCLElBQUksQ0FBQyxDQUFDRCxNQUFNLENBQUNFLHdDQUF3QztZQUFBTCxRQUFBLENBQUEzRixJQUFBO1lBR3pHZ0QsV0FBb0IsR0FBRyxFQUFFO1lBQ3pCQyxPQUFPLEdBQUcsS0FBSztZQUNmQyxVQUF5QixHQUFHLElBQUksRUFFcEM7WUFBQSxLQUNJSCxhQUFhO2NBQUE0QyxRQUFBLENBQUFDLElBQUE7Y0FBQTtZQUFBO1lBQ2Y7WUFDSW5KLFdBQW9CLEdBQUcsRUFBRTtZQUFBLElBQ3hCZ0QsaUJBQWlCLENBQUN3RyxRQUFRLENBQUNsSSxJQUFJLENBQUNtSSxPQUFPLENBQUM7Y0FBQVAsUUFBQSxDQUFBQyxJQUFBO2NBQUE7WUFBQTtZQUFBRCxRQUFBLENBQUEzRixJQUFBO1lBRW5Db0QsVUFBVSxHQUNkeEYsT0FBTyxLQUFLLFFBQVEsR0FDaEIsdUJBQXVCLEdBQ3ZCQSxPQUFPLEtBQUssU0FBUyxJQUFJQSxPQUFPLEtBQUssUUFBUSxJQUFJQSxPQUFPLEtBQUssTUFBTSxHQUNqRSx1QkFBdUIsR0FDdkIsRUFBRTtZQUFBK0gsUUFBQSxDQUFBQyxJQUFBO1lBQUEsT0FDaUJ6SixTQUFTLENBQUM7Y0FDbkNtSSxJQUFJLGtDQUFBL0csTUFBQSxDQUFrQ2pCLFVBQVUsQ0FBQytDLElBQUksQ0FBQzhHLFFBQVEsQ0FBQyxFQUFBNUksTUFBQSxDQUFHNkYsVUFBVSxDQUFFO2NBQzlFZ0QsTUFBTSxFQUFFO1lBQ1YsQ0FBQyxDQUFDO1VBQUE7WUFISS9DLFlBQVksR0FBQXNDLFFBQUEsQ0FBQVUsSUFBQTtZQUFBVixRQUFBLENBQUFDLElBQUE7WUFBQSxPQUlLdkMsWUFBWSxDQUFDaUQsSUFBSSxDQUFDLENBQUM7VUFBQTtZQUFwQ2hELFFBQVEsR0FBQXFDLFFBQUEsQ0FBQVUsSUFBQTtZQUNkNUosV0FBVyxHQUFHLEVBQUEwRyxjQUFBLEdBQUFHLFFBQVEsQ0FBQ3JGLElBQUksY0FBQWtGLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZXpHLE1BQU0sQ0FBQyxVQUFDQyxFQUFTO2NBQUEsT0FBS0EsRUFBRSxDQUFDQyxJQUFJLEtBQUssT0FBTztZQUFBLEVBQUMsS0FBSSxFQUFFO1lBQUErSSxRQUFBLENBQUFDLElBQUE7WUFBQTtVQUFBO1lBQUFELFFBQUEsQ0FBQTNGLElBQUE7WUFBQXNGLEVBQUEsR0FBQUssUUFBQTtZQUU3RTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ01qQyxVQUFVLEdBQ2QsQ0FBQTRCLEVBQUEsYUFBQUEsRUFBQSxnQkFBQS9CLG1CQUFBLEdBQUErQixFQUFBLENBQVdmLFFBQVEsY0FBQWhCLG1CQUFBLHVCQUFuQkEsbUJBQUEsQ0FBcUJnRCxNQUFNLE1BQUssR0FBRyxJQUNuQyxDQUFBakIsRUFBQSxhQUFBQSxFQUFBLHVCQUFBQSxFQUFBLENBQVdpQixNQUFNLE1BQUssR0FBRyxLQUFBakIsRUFBQSxhQUFBQSxFQUFBLGdCQUFBOUIsa0JBQUEsR0FDekI4QixFQUFBLENBQVdqRSxPQUFPLGNBQUFtQyxrQkFBQSx1QkFBbEJBLGtCQUFBLENBQW9CeUMsUUFBUSxDQUFDLDBDQUEwQyxDQUFDLE1BQUFYLEVBQUEsYUFBQUEsRUFBQSxnQkFBQTdCLG1CQUFBLEdBQ3hFNkIsRUFBQSxDQUFXakUsT0FBTyxjQUFBb0MsbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFvQndDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFDO1lBQUEsS0FFbkR2QyxVQUFVO2NBQUFpQyxRQUFBLENBQUFDLElBQUE7Y0FBQTtZQUFBO1lBQUFELFFBQUEsQ0FBQUMsSUFBQTtZQUFBO1VBQUE7WUFBQSxNQUFBTixFQUFBO1VBQUE7WUFTbEI7WUFDSTNCLFlBQXFCLEdBQUcsRUFBRTtZQUMxQkMsYUFBYSxHQUFHLEtBQUs7WUFDckJDLGdCQUErQixHQUFHLElBQUk7WUFBQThCLFFBQUEsQ0FBQTNGLElBQUE7WUFBQTJGLFFBQUEsQ0FBQUMsSUFBQTtZQUFBLE9BR1h6SixTQUFTLENBQUM7Y0FDckNtSSxJQUFJLEVBQUUsMkNBQTJDO2NBQ2pEOEIsTUFBTSxFQUFFO1lBQ1YsQ0FBQyxDQUFDO1VBQUE7WUFISXRDLGNBQWMsR0FBQTZCLFFBQUEsQ0FBQVUsSUFBQTtZQUFBVixRQUFBLENBQUFDLElBQUE7WUFBQSxPQUlLOUIsY0FBYyxDQUFDd0MsSUFBSSxDQUFDLENBQUM7VUFBQTtZQUF4Q3ZDLFVBQVUsR0FBQTRCLFFBQUEsQ0FBQVUsSUFBQTtZQUNoQjFDLFlBQVksR0FBR0ksVUFBVSxDQUFDOUYsSUFBSSxJQUFJLEVBQUU7WUFDcEMyRixhQUFhLEdBQUdHLFVBQVUsQ0FBQ3lDLFFBQVEsSUFBSSxLQUFLO1lBQzVDM0MsZ0JBQWdCLEdBQUdFLFVBQVUsQ0FBQzBDLFdBQVcsSUFBSSxJQUFJO1lBQUFkLFFBQUEsQ0FBQUMsSUFBQTtZQUFBO1VBQUE7WUFBQUQsUUFBQSxDQUFBM0YsSUFBQTtZQUFBdUYsR0FBQSxHQUFBSSxRQUFBO1lBRWpEO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDTWpDLFdBQVUsR0FDZCxDQUFBNkIsR0FBQSxhQUFBQSxHQUFBLGdCQUFBdkIscUJBQUEsR0FBQXVCLEdBQUEsQ0FBYWhCLFFBQVEsY0FBQVAscUJBQUEsdUJBQXJCQSxxQkFBQSxDQUF1QnVDLE1BQU0sTUFBSyxHQUFHLElBQ3JDLENBQUFoQixHQUFBLGFBQUFBLEdBQUEsdUJBQUFBLEdBQUEsQ0FBYWdCLE1BQU0sTUFBSyxHQUFHLEtBQUFoQixHQUFBLGFBQUFBLEdBQUEsZ0JBQUF0QixvQkFBQSxHQUMzQnNCLEdBQUEsQ0FBYWxFLE9BQU8sY0FBQTRDLG9CQUFBLHVCQUFwQkEsb0JBQUEsQ0FBc0JnQyxRQUFRLENBQUMsMENBQTBDLENBQUMsTUFBQVYsR0FBQSxhQUFBQSxHQUFBLGdCQUFBckIscUJBQUEsR0FDMUVxQixHQUFBLENBQWFsRSxPQUFPLGNBQUE2QyxxQkFBQSx1QkFBcEJBLHFCQUFBLENBQXNCK0IsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEdBQUM7WUFBQSxLQUVyRHZDLFdBQVU7Y0FBQWlDLFFBQUEsQ0FBQUMsSUFBQTtjQUFBO1lBQUE7WUFBQUQsUUFBQSxDQUFBQyxJQUFBO1lBQUE7VUFBQTtZQUFBLE1BQUFMLEdBQUE7VUFBQTtZQVdoQjtZQUNBO1lBQ0EsSUFBSTlGLGlCQUFpQixDQUFDd0csUUFBUSxDQUFDbEksSUFBSSxDQUFDbUksT0FBTyxDQUFDLEVBQUU7Y0FDNUM7Y0FDQTtjQUNBbEQsV0FBVyxHQUFHVyxZQUFZO1lBQzVCLENBQUMsTUFBTTtjQUNMO2NBQ0E7Y0FDQTtjQUNBWCxXQUFXLEdBQUd2RyxXQUFXLENBQUNhLE1BQU0sTUFBQUMsTUFBQSxDQUFBQyxrQkFBQSxDQUFPZixXQUFXLEdBQUFlLGtCQUFBLENBQUttRyxZQUFZLEtBQUlBLFlBQVk7WUFDckY7WUFDQTtZQUNBWCxXQUFXLEdBQUd6RyxVQUFVLENBQUN5RyxXQUFXLENBQUM7WUFDckNDLE9BQU8sR0FBR1csYUFBYTtZQUN2QlYsVUFBVSxHQUFHVyxnQkFBZ0I7WUFFN0J6RixTQUFTLENBQUM7Y0FDUkgsSUFBSSxFQUFFK0UsV0FBVztjQUNqQndELFFBQVEsRUFBRXZELE9BQU87Y0FDakJ3RCxXQUFXLEVBQUV2RDtZQUNmLENBQUMsQ0FBQzs7WUFFRjtZQUNBLElBQUlGLFdBQVcsQ0FBQzFGLE1BQU0sS0FBSyxDQUFDLEVBQUU7Y0FDNUIwQixRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2hCO1lBQUMyRyxRQUFBLENBQUFDLElBQUE7WUFBQTtVQUFBO1lBRUQ7WUFDTXhCLFdBQVcsR0FBRyxJQUFJc0MsZUFBZSxDQUFDLENBQUM7WUFDekMsSUFBSTlJLE9BQU8sS0FBSyxTQUFTLElBQUlBLE9BQU8sS0FBSyxRQUFRLElBQUlBLE9BQU8sS0FBSyxRQUFRLElBQUlBLE9BQU8sS0FBSyxNQUFNLEVBQUU7Y0FDL0Z3RyxXQUFXLENBQUN1QyxNQUFNLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQztjQUN6Q3ZDLFdBQVcsQ0FBQ3VDLE1BQU0sQ0FBQyxNQUFNLEVBQUVySyxVQUFVLENBQUMrQyxJQUFJLENBQUM4RyxRQUFRLENBQUMsQ0FBQztjQUNyRC9CLFdBQVcsQ0FBQ3VDLE1BQU0sQ0FBQyxPQUFPLEVBQUUvSSxPQUFPLEtBQUssUUFBUSxHQUFHLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO2NBQ3ZGLElBQUlBLE9BQU8sS0FBSyxRQUFRLEVBQUU7Z0JBQ3hCd0csV0FBVyxDQUFDdUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUM7Z0JBQ2hDdkMsV0FBVyxDQUFDdUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7Y0FDbkM7WUFDRjtZQUVNdEMsV0FBVyxHQUFHRCxXQUFXLENBQUN6RCxRQUFRLENBQUMsQ0FBQztZQUNwQzJELElBQUksWUFBQS9HLE1BQUEsQ0FBWThHLFdBQVcsT0FBQTlHLE1BQUEsQ0FBTzhHLFdBQVcsSUFBSyxFQUFFO1lBQUFzQixRQUFBLENBQUEzRixJQUFBO1lBQUEyRixRQUFBLENBQUFDLElBQUE7WUFBQSxPQUdqQ3pKLFNBQVMsQ0FBQztjQUMvQm1JLElBQUksRUFBSkEsSUFBSTtjQUNKOEIsTUFBTSxFQUFFO1lBQ1YsQ0FBQyxDQUFDO1VBQUE7WUFISTdCLFFBQVEsR0FBQW9CLFFBQUEsQ0FBQVUsSUFBQTtZQUFBVixRQUFBLENBQUFDLElBQUE7WUFBQSxPQUtLckIsUUFBUSxDQUFDK0IsSUFBSSxDQUFDLENBQUM7VUFBQTtZQUE1QnJJLElBQUksR0FBQTBILFFBQUEsQ0FBQVUsSUFBQTtZQUNWO1lBQ0FyRCxXQUFXLEdBQUcvRSxJQUFJLENBQUNBLElBQUksSUFBSSxFQUFFO1lBQzdCO1lBQ0ErRSxXQUFXLEdBQUd6RyxVQUFVLENBQUN5RyxXQUFXLENBQUM7WUFDckNDLE9BQU8sR0FBR2hGLElBQUksQ0FBQ3VJLFFBQVE7WUFDdkJ0RCxVQUFVLEdBQUdqRixJQUFJLENBQUN3SSxXQUFXO1lBRTdCckksU0FBUyxDQUFBbUMsYUFBQSxDQUFBQSxhQUFBLEtBQ0p0QyxJQUFJO2NBQ1BBLElBQUksRUFBRStFO1lBQVcsRUFDbEIsQ0FBQztZQUFBMkMsUUFBQSxDQUFBQyxJQUFBO1lBQUE7VUFBQTtZQUFBRCxRQUFBLENBQUEzRixJQUFBO1lBQUF3RixHQUFBLEdBQUFHLFFBQUE7WUFFRjtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ01qQyxZQUFVLEdBQ2QsQ0FBQThCLEdBQUEsYUFBQUEsR0FBQSxnQkFBQWhCLHFCQUFBLEdBQUFnQixHQUFBLENBQWVqQixRQUFRLGNBQUFDLHFCQUFBLHVCQUF2QkEscUJBQUEsQ0FBeUIrQixNQUFNLE1BQUssR0FBRyxJQUN2QyxDQUFBZixHQUFBLGFBQUFBLEdBQUEsdUJBQUFBLEdBQUEsQ0FBZWUsTUFBTSxNQUFLLEdBQUcsS0FBQWYsR0FBQSxhQUFBQSxHQUFBLGdCQUFBZixxQkFBQSxHQUM3QmUsR0FBQSxDQUFlbkUsT0FBTyxjQUFBb0QscUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF3QndCLFFBQVEsQ0FBQywwQ0FBMEMsQ0FBQyxNQUFBVCxHQUFBLGFBQUFBLEdBQUEsZ0JBQUFkLHNCQUFBLEdBQzVFYyxHQUFBLENBQWVuRSxPQUFPLGNBQUFxRCxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCdUIsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEdBQUM7WUFBQSxLQUV2RHZDLFlBQVU7Y0FBQWlDLFFBQUEsQ0FBQUMsSUFBQTtjQUFBO1lBQUE7WUFDWjtZQUNBeEgsU0FBUyxDQUFDO2NBQ1JILElBQUksRUFBRSxFQUFFO2NBQ1J1SSxRQUFRLEVBQUUsS0FBSztjQUNmQyxXQUFXLEVBQUU7WUFDZixDQUFDLENBQUM7WUFDRnpILFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFBQTJHLFFBQUEsQ0FBQUMsSUFBQTtZQUFBO1VBQUE7WUFBQSxNQUFBSixHQUFBO1VBQUE7WUFRcEI7WUFDQSxJQUFJeEMsV0FBVyxDQUFDMUYsTUFBTSxHQUFHLENBQUMsRUFBRTtjQUMxQixJQUFJc0YsYUFBYSxJQUFJSSxXQUFXLENBQUNyQixJQUFJLENBQUMsVUFBQ2lGLGNBQXFCO2dCQUFBLE9BQUtBLGNBQWMsQ0FBQ3hHLEVBQUUsS0FBS3dDLGFBQWEsQ0FBQ3hDLEVBQUU7Y0FBQSxFQUFDLEVBQUU7Z0JBQ3hHLElBQUksRUFBQTBFLHFCQUFBLEdBQUF4RixvQkFBb0IsQ0FBQytDLE9BQU8sY0FBQXlDLHFCQUFBLHVCQUE1QkEscUJBQUEsQ0FBOEIxRSxFQUFFLE1BQUt3QyxhQUFhLENBQUN4QyxFQUFFLEVBQUU7a0JBQ3pEZCxvQkFBb0IsQ0FBQytDLE9BQU8sR0FBR08sYUFBYTtrQkFDNUNqRixXQUFXLENBQUNpRixhQUFhLENBQUM7Z0JBQzVCO2NBQ0YsQ0FBQyxNQUFNLElBQUksQ0FBQWdDLFlBQUEsR0FBQTVCLFdBQVcsY0FBQTRCLFlBQUEsZUFBWEEsWUFBQSxDQUFjLENBQUMsQ0FBQyxLQUFLLENBQUMvRyxLQUFLLElBQUksQ0FBQ21GLFdBQVcsQ0FBQ3JCLElBQUksQ0FBQyxVQUFDMUUsQ0FBUTtnQkFBQSxPQUFLQSxDQUFDLENBQUNtRCxFQUFFLEtBQUt2QyxLQUFLLENBQUN1QyxFQUFFO2NBQUEsRUFBQyxDQUFDLEVBQUU7Z0JBQ3ZGNEUsZUFBZSxHQUNuQmMsTUFBTSxDQUFDQywyQkFBMkIsSUFBSSxDQUFDdEcsaUJBQWlCLENBQUN3RyxRQUFRLENBQUNsSSxJQUFJLENBQUNtSSxPQUFPLENBQUMsR0FDM0VsRCxXQUFXLEdBQ1hBLFdBQVcsQ0FBQ3RHLE1BQU0sQ0FBQyxVQUFDbUssU0FBZ0I7a0JBQUEsT0FBS0EsU0FBUyxDQUFDakssSUFBSSxLQUFLLE9BQU87Z0JBQUEsRUFBQztnQkFBQXFJLGdCQUFBLEdBQUE5RyxjQUFBLENBRXJENkcsZUFBZSxNQUE3QjlDLFVBQVUsR0FBQStDLGdCQUFBO2dCQUNqQixJQUFJL0MsVUFBVSxJQUFJLEVBQUE2QyxzQkFBQSxHQUFBekYsb0JBQW9CLENBQUMrQyxPQUFPLGNBQUEwQyxzQkFBQSx1QkFBNUJBLHNCQUFBLENBQThCM0UsRUFBRSxNQUFLOEIsVUFBVSxDQUFDOUIsRUFBRSxFQUFFO2tCQUNwRWQsb0JBQW9CLENBQUMrQyxPQUFPLEdBQUdILFVBQVU7a0JBQ3pDdkUsV0FBVyxDQUFDdUUsVUFBVSxDQUFDO2dCQUN6QjtjQUNGLENBQUMsTUFBTSxJQUFJVSxhQUFhLEtBQUFpQyxhQUFBLEdBQUk3QixXQUFXLGNBQUE2QixhQUFBLGVBQVhBLGFBQUEsQ0FBYXZILE1BQU0sRUFBRTtnQkFDekMwSCxpQkFBZSxHQUNuQmMsTUFBTSxDQUFDQywyQkFBMkIsSUFBSSxDQUFDdEcsaUJBQWlCLENBQUN3RyxRQUFRLENBQUNsSSxJQUFJLENBQUNtSSxPQUFPLENBQUMsR0FDM0VsRCxXQUFXLEdBQ1hBLFdBQVcsQ0FBQ3RHLE1BQU0sQ0FBQyxVQUFDbUssU0FBZ0I7a0JBQUEsT0FBS0EsU0FBUyxDQUFDakssSUFBSSxLQUFLLE9BQU87Z0JBQUEsRUFBQztnQkFBQXdJLGlCQUFBLEdBQUFqSCxjQUFBLENBRTVDNkcsaUJBQWUsTUFBdENLLG1CQUFtQixHQUFBRCxpQkFBQTtnQkFDMUIsSUFBSUMsbUJBQW1CLElBQUksRUFBQUgsc0JBQUEsR0FBQTVGLG9CQUFvQixDQUFDK0MsT0FBTyxjQUFBNkMsc0JBQUEsdUJBQTVCQSxzQkFBQSxDQUE4QjlFLEVBQUUsTUFBS2lGLG1CQUFtQixDQUFDakYsRUFBRSxFQUFFO2tCQUN0RmQsb0JBQW9CLENBQUMrQyxPQUFPLEdBQUdnRCxtQkFBbUI7a0JBQ2xEMUgsV0FBVyxDQUFDMEgsbUJBQW1CLENBQUM7Z0JBQ2xDO2NBQ0Y7WUFDRjtZQUVBN0csVUFBVSxDQUFDLEtBQUssQ0FBQztZQUFBbUgsUUFBQSxDQUFBQyxJQUFBO1lBQUE7VUFBQTtZQUFBRCxRQUFBLENBQUEzRixJQUFBO1lBQUF5RixHQUFBLEdBQUFFLFFBQUE7WUFFakIzRyxRQUFRLENBQUN5RyxHQUFBLFlBQWVxQixLQUFLLEdBQUdyQixHQUFBLENBQUlwRSxPQUFPLEdBQUcsMkJBQTJCLENBQUM7WUFDMUU3QyxVQUFVLENBQUMsS0FBSyxDQUFDO1VBQUE7WUFBQW1ILFFBQUEsQ0FBQTNGLElBQUE7WUFFakJULGVBQWUsQ0FBQzhDLE9BQU8sR0FBRyxLQUFLO1lBQy9CMEUsVUFBVSxDQUFDLFlBQU07Y0FDZixJQUFJLENBQUN4SCxlQUFlLENBQUM4QyxPQUFPLEVBQUU7Z0JBQzVCN0MsY0FBYyxDQUFDNkMsT0FBTyxHQUFHLElBQUk7Y0FDL0I7WUFDRixDQUFDLEVBQUUsR0FBRyxDQUFDO1lBQUEsT0FBQXNELFFBQUEsQ0FBQXFCLE1BQUE7VUFBQTtVQUFBO1lBQUEsT0FBQXJCLFFBQUEsQ0FBQXNCLElBQUE7UUFBQTtNQUFBLEdBQUF0RSxPQUFBO0lBQUEsQ0FFVjtJQUFBLGlCQUFBdUUsRUFBQTtNQUFBLE9BQUEzRSxLQUFBLENBQUE0RSxLQUFBLE9BQUFqRyxTQUFBO0lBQUE7RUFBQSxLQUNELENBQUN2RCxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsS0FBSyxFQUFFVSxPQUFPLENBQ3ZDLENBQUM7RUFFRCxJQUFNNkksY0FBYyxHQUFHckwsV0FBVyxjQUFBeUcsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFDLFNBQUEyRSxTQUFBO0lBQUEsSUFBQXRFLGFBQUEsRUFBQXVFLFdBQUEsRUFBQWhELElBQUEsRUFBQUYsV0FBQSxFQUFBRyxRQUFBLEVBQUF0RyxJQUFBLEVBQUFzSixHQUFBO0lBQUEsT0FBQTlFLG1CQUFBLENBQUFpRCxJQUFBLFdBQUE4QixTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXhILElBQUEsR0FBQXdILFNBQUEsQ0FBQTVCLElBQUE7UUFBQTtVQUMzQjdDLGFBQWEsR0FBRyxDQUFDLENBQUMrQyxNQUFNLENBQUNDLDJCQUEyQixJQUFJLENBQUMsQ0FBQ0QsTUFBTSxDQUFDRSx3Q0FBd0MsRUFDL0c7VUFDTXNCLFdBQVcsR0FBRzFKLE9BQU8sS0FBSyxRQUFRLElBQUltRixhQUFhO1VBQUEsTUFDckQsQ0FBQ3VFLFdBQVcsSUFBSSxDQUFDOUssTUFBTSxDQUFDZ0ssUUFBUSxJQUFJLENBQUNoSyxNQUFNLENBQUNpSyxXQUFXLElBQUk5SCxXQUFXO1lBQUE2SSxTQUFBLENBQUE1QixJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUE0QixTQUFBLENBQUEzQixNQUFBO1FBQUE7VUFJMUVqSCxjQUFjLENBQUMsSUFBSSxDQUFDO1VBQ3BCSSxRQUFRLENBQUMsSUFBSSxDQUFDO1VBQUF3SSxTQUFBLENBQUF4SCxJQUFBO1VBS1o7VUFDQSxJQUFJK0MsYUFBYSxFQUFFO1lBQ2pCO1lBQ0F1QixJQUFJLDhDQUFBL0csTUFBQSxDQUE4Q2YsTUFBTSxDQUFDaUssV0FBVyxDQUFFO1VBQ3hFLENBQUMsTUFBTTtZQUNMO1lBQ01yQyxXQUFXLEdBQUcsSUFBSXNDLGVBQWUsQ0FBQyxDQUFDO1lBQ3pDdEMsV0FBVyxDQUFDdUMsTUFBTSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7WUFDekN2QyxXQUFXLENBQUN1QyxNQUFNLENBQUMsTUFBTSxFQUFFckssVUFBVSxDQUFDK0MsSUFBSSxDQUFDOEcsUUFBUSxDQUFDLENBQUM7WUFDckQvQixXQUFXLENBQUN1QyxNQUFNLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDO1lBQzdDdkMsV0FBVyxDQUFDdUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUM7WUFDaEN2QyxXQUFXLENBQUN1QyxNQUFNLENBQUMsUUFBUSxFQUFFbkssTUFBTSxDQUFDaUssV0FBVyxDQUFDOUYsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMzRDJELElBQUksYUFBQS9HLE1BQUEsQ0FBYTZHLFdBQVcsQ0FBQ3pELFFBQVEsQ0FBQyxDQUFDLENBQUU7VUFDM0M7VUFBQzZHLFNBQUEsQ0FBQTVCLElBQUE7VUFBQSxPQUVzQnpKLFNBQVMsQ0FBQztZQUMvQm1JLElBQUksRUFBSkEsSUFBSTtZQUNKOEIsTUFBTSxFQUFFO1VBQ1YsQ0FBQyxDQUFDO1FBQUE7VUFISTdCLFFBQVEsR0FBQWlELFNBQUEsQ0FBQW5CLElBQUE7VUFBQW1CLFNBQUEsQ0FBQTVCLElBQUE7VUFBQSxPQUtLckIsUUFBUSxDQUFDK0IsSUFBSSxDQUFDLENBQUM7UUFBQTtVQUE1QnJJLElBQUksR0FBQXVKLFNBQUEsQ0FBQW5CLElBQUE7VUFFVjtVQUNBakksU0FBUyxDQUFDLFVBQUE0QixJQUFJLEVBQUk7WUFDaEIsSUFBSStDLGFBQWEsRUFBRTtjQUNqQjtjQUNBO2NBQ0EsSUFBTTBFLG1CQUFtQixHQUFHekgsSUFBSSxDQUFDL0IsSUFBSSxDQUFDdkIsTUFBTSxDQUFDLFVBQUNDLEVBQVM7Z0JBQUEsT0FBS0EsRUFBRSxDQUFDQyxJQUFJLEtBQUssT0FBTztjQUFBLEVBQUM7O2NBRWhGO2NBQ0EsSUFBTThLLFlBQVcsR0FBRyxJQUFJQyxHQUFHLENBQUMzSCxJQUFJLENBQUMvQixJQUFJLENBQUN2QixNQUFNLENBQUMsVUFBQ0MsRUFBUztnQkFBQSxPQUFLQSxFQUFFLENBQUNDLElBQUksS0FBSyxPQUFPO2NBQUEsRUFBQyxDQUFDbUUsR0FBRyxDQUFDLFVBQUNwRSxFQUFTO2dCQUFBLE9BQUtBLEVBQUUsQ0FBQ3lELEVBQUU7Y0FBQSxFQUFDLENBQUM7O2NBRTNHO2NBQ0EsSUFBTXdILFVBQVMsR0FBRzNKLElBQUksQ0FBQ0EsSUFBSSxDQUFDdkIsTUFBTSxDQUFDLFVBQUNDLEVBQVM7Z0JBQUEsT0FBS0EsRUFBRSxDQUFDQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUM4SyxZQUFXLENBQUNHLEdBQUcsQ0FBQ2xMLEVBQUUsQ0FBQ3lELEVBQUUsQ0FBQztjQUFBLEVBQUM7O2NBRWpHO2NBQ0EsSUFBTUMsUUFBTyxHQUFHb0gsbUJBQW1CLENBQUNuSyxNQUFNLE1BQUFDLE1BQUEsQ0FBQUMsa0JBQUEsQ0FDbENpSyxtQkFBbUIsR0FBQWpLLGtCQUFBLENBQUt3QyxJQUFJLENBQUMvQixJQUFJLENBQUN2QixNQUFNLENBQUMsVUFBQ0MsRUFBUztnQkFBQSxPQUFLQSxFQUFFLENBQUNDLElBQUksS0FBSyxPQUFPO2NBQUEsRUFBQyxHQUFBWSxrQkFBQSxDQUFLb0ssVUFBUyxRQUFBckssTUFBQSxDQUFBQyxrQkFBQSxDQUMxRndDLElBQUksQ0FBQy9CLElBQUksQ0FBQ3ZCLE1BQU0sQ0FBQyxVQUFDQyxFQUFTO2dCQUFBLE9BQUtBLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLLE9BQU87Y0FBQSxFQUFDLEdBQUFZLGtCQUFBLENBQUtvSyxVQUFTLEVBQUM7O2NBRTNFO2NBQ0EsSUFBTXRILFdBQVUsR0FBRy9ELFVBQVUsQ0FBQzhELFFBQU8sQ0FBQztjQUV0QyxPQUFPO2dCQUNMcEMsSUFBSSxFQUFFcUMsV0FBVTtnQkFDaEJrRyxRQUFRLEVBQUV2SSxJQUFJLENBQUN1SSxRQUFRO2dCQUN2QkMsV0FBVyxFQUFFeEksSUFBSSxDQUFDd0k7Y0FDcEIsQ0FBQztZQUNIO1lBQ0E7WUFDQSxJQUFNaUIsV0FBVyxHQUFHLElBQUlDLEdBQUcsQ0FBQzNILElBQUksQ0FBQy9CLElBQUksQ0FBQzhDLEdBQUcsQ0FBQyxVQUFDcEUsRUFBUztjQUFBLE9BQUtBLEVBQUUsQ0FBQ3lELEVBQUU7WUFBQSxFQUFDLENBQUM7WUFDaEUsSUFBTXdILFNBQVMsR0FBRyxDQUFDM0osSUFBSSxDQUFDQSxJQUFJLElBQUksRUFBRSxFQUFFdkIsTUFBTSxDQUFDLFVBQUNDLEVBQVM7Y0FBQSxPQUFLLENBQUMrSyxXQUFXLENBQUNHLEdBQUcsQ0FBQ2xMLEVBQUUsQ0FBQ3lELEVBQUUsQ0FBQztZQUFBLEVBQUM7WUFDbEYsSUFBTUMsT0FBTyxNQUFBOUMsTUFBQSxDQUFBQyxrQkFBQSxDQUFPd0MsSUFBSSxDQUFDL0IsSUFBSSxHQUFBVCxrQkFBQSxDQUFLb0ssU0FBUyxFQUFDOztZQUU1QztZQUNBLElBQU10SCxVQUFVLEdBQUcvRCxVQUFVLENBQUM4RCxPQUFPLENBQUM7WUFFdEMsT0FBTztjQUNMcEMsSUFBSSxFQUFFcUMsVUFBVTtjQUNoQmtHLFFBQVEsRUFBRXZJLElBQUksQ0FBQ3VJLFFBQVE7Y0FDdkJDLFdBQVcsRUFBRXhJLElBQUksQ0FBQ3dJO1lBQ3BCLENBQUM7VUFDSCxDQUFDLENBQUM7VUFFRjdILGNBQWMsQ0FBQyxLQUFLLENBQUM7VUFBQTRJLFNBQUEsQ0FBQTVCLElBQUE7VUFBQTtRQUFBO1VBQUE0QixTQUFBLENBQUF4SCxJQUFBO1VBQUF1SCxHQUFBLEdBQUFDLFNBQUE7VUFFckJ0SSxtQkFBbUIsQ0FBQ0UsQ0FBQyxDQUFDLCtCQUErQixDQUFDLENBQUM7VUFDdkRSLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQTRJLFNBQUEsQ0FBQVAsSUFBQTtNQUFBO0lBQUEsR0FBQUksUUFBQTtFQUFBLENBRXhCLElBQUUsQ0FBQ3pKLE9BQU8sRUFBRXBCLE1BQU0sQ0FBQ2dLLFFBQVEsRUFBRWhLLE1BQU0sQ0FBQ2lLLFdBQVcsRUFBRTlILFdBQVcsRUFBRVUsSUFBSSxDQUFDOEcsUUFBUSxDQUFDLENBQUM7RUFFOUUsT0FBTztJQUNMM0osTUFBTSxFQUFOQSxNQUFNO0lBQ04rQixPQUFPLEVBQVBBLE9BQU87SUFDUEksV0FBVyxFQUFYQSxXQUFXO0lBQ1hJLEtBQUssRUFBTEEsS0FBSztJQUNMdUQsZUFBZSxFQUFmQSxlQUFlO0lBQ2Y4RSxjQUFjLEVBQWRBLGNBQWM7SUFDZHZILFFBQVEsRUFBUkEsUUFBUTtJQUNSWSxXQUFXLEVBQVhBLFdBQVc7SUFDWEcsV0FBVyxFQUFYQSxXQUFXO0lBQ1hJLG1CQUFtQixFQUFuQkEsbUJBQW1CO0lBQ25CaUIsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7SUFDaEJELGNBQWMsRUFBZEE7RUFDRixDQUFDO0FBQ0gsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2dsb2JhbC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdmFyICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IFVzZXJQcm9wcyB9IGZyb20gJy4vdXNlclR5cGUuZCdcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IGV4dGVuZHMgV2luZG93IHtcbiAgICBsYW5nOiBzdHJpbmdcbiAgICB1c2VySW5mbzogVXNlclByb3BzXG4gICAgQXBwY3VlczogYW55XG4gICAgbWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzPzogc3RyaW5nXG4gICAgbWFpYUNoYXRBaUFjY2Vzcz86IHN0cmluZ1xuICAgIE1BSUFfUFJPSkVDVF9TVU1NQVJZX0ZFQVRVUkVfQUNDRVNTPzogc3RyaW5nIHwgYm9vbGVhblxuICAgIE1BSUFfUFJPSkVDVF9TUEVDSUFMSVNUX0FDQ0VTUz86IHN0cmluZyB8IGJvb2xlYW5cbiAgICBNQUlBX1RBU0tfUEFORUxfQUNDRVNTPzogc3RyaW5nIHwgYm9vbGVhblxuICAgIF9fTUFJQV9BQ0NFU1NfREVCVUdfXz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgTUFJQV9NQVJLRVRQTEFDRV9NQUlBS0VSPzogc3RyaW5nIHwgYm9vbGVhblxuICAgICRfc2M6IGFueVxuICAgIG9wZW5QYW5lbD86ICh0YXNrSWQ6IHN0cmluZyB8IG51bWJlciwgc2VjdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgbmV3UHJvamVjdERhc2hib2FyZD86IHtcbiAgICAgIGFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkOiAodGFza0lkczogbnVtYmVyW10pID0+IHZvaWRcbiAgICAgIGVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZDogKHRhc2tJZHM6IG51bWJlcltdKSA9PiB2b2lkXG4gICAgICBkZWxldGVFeGlzdGluZ1Rhc2tGcm9tRGFzaGJvYXJkOiAodGFza0lkczogbnVtYmVyW10pID0+IHZvaWRcbiAgICB9XG4gICAgdGFza1BhbmVsPzoge1xuICAgICAgdGFza0lkOiBzdHJpbmdcbiAgICAgIHJlZmV0Y2hUYXNrOiAoKSA9PiB2b2lkXG4gICAgfVxuICB9XG4gIGludGVyZmFjZSBXaW5kb3dFdmVudE1hcCB7XG4gICAgLy8gZW5hYmxlZCB3aW5kb3cgZXZlbnQgbGlzdGVuZXIgJ2xvY2F0aW9uY2hhbmdlJ1xuICAgIGxvY2F0aW9uY2hhbmdlOiBDdXN0b21FdmVudFxuICB9XG5cbiAgdHlwZSBUcmFuc2xhdGlvbkZ1bmN0aW9uID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcbiAgdmFyICRfY2E6IHtcbiAgICBnZXRDb29raWVBVFM6ICgpID0+IHN0cmluZ1xuICAgIHJlZnJlc2hUb2tlbjogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICB9XG4gIHZhciAkX3NjOiBhbnlcbiAgZGVjbGFyZSB2YXIgcHJvY2VzczogTm9kZUpTLlByb2Nlc3NcbiAgZGVjbGFyZSB2YXIgbWFpYUFnZW50UG1BY2Nlc3M6IHN0cmluZ1xuICBkZWNsYXJlIHZhciBNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTOiBzdHJpbmdcbiAgZGVjbGFyZSB2YXIgTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTOiBzdHJpbmdcbiAgZGVjbGFyZSB2YXIgTUFJQV9NQVJLRVRQTEFDRV9NQUlBS0VSOiBzdHJpbmdcbiAgZGVjbGFyZSB2YXIgbWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzOiBzdHJpbmdcbiAgZGVjbGFyZSB2YXIgbWFpYUZhcXNBY2Nlc3M6IHN0cmluZ1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2dsb2JhbC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdmFyICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IFVzZXJQcm9wcyB9IGZyb20gJy4vdXNlclR5cGUuZCdcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IGV4dGVuZHMgV2luZG93IHtcbiAgICBsYW5nOiBzdHJpbmdcbiAgICB1c2VySW5mbzogVXNlclByb3BzXG4gICAgQXBwY3VlczogYW55XG4gICAgbWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzPzogc3RyaW5nXG4gICAgbWFpYUNoYXRBaUFjY2Vzcz86IHN0cmluZ1xuICAgIE1BSUFfUFJPSkVDVF9TVU1NQVJZX0ZFQVRVUkVfQUNDRVNTPzogc3RyaW5nIHwgYm9vbGVhblxuICAgIE1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUj86IHN0cmluZyB8IGJvb2xlYW5cbiAgICAkX3NjOiBhbnlcbiAgICBvcGVuUGFuZWw/OiAodGFza0lkOiBzdHJpbmcgfCBudW1iZXIsIHNlY3Rpb246IHN0cmluZykgPT4gdm9pZFxuICAgIG5ld1Byb2plY3REYXNoYm9hcmQ/OiB7XG4gICAgICBhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZDogKHRhc2tJZHM6IG51bWJlcltdKSA9PiB2b2lkXG4gICAgICBlZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQ6ICh0YXNrSWRzOiBudW1iZXJbXSkgPT4gdm9pZFxuICAgICAgZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZDogKHRhc2tJZHM6IG51bWJlcltdKSA9PiB2b2lkXG4gICAgfVxuICAgIHRhc2tQYW5lbD86IHtcbiAgICAgIHRhc2tJZDogc3RyaW5nXG4gICAgICByZWZldGNoVGFzazogKCkgPT4gdm9pZFxuICAgIH1cbiAgfVxuICBpbnRlcmZhY2UgV2luZG93RXZlbnRNYXAge1xuICAgIC8vIGVuYWJsZWQgd2luZG93IGV2ZW50IGxpc3RlbmVyICdsb2NhdGlvbmNoYW5nZSdcbiAgICBsb2NhdGlvbmNoYW5nZTogQ3VzdG9tRXZlbnRcbiAgfVxuXG4gIHR5cGUgVHJhbnNsYXRpb25GdW5jdGlvbiA9IChrZXk6IHN0cmluZykgPT4gc3RyaW5nXG4gIHZhciAkX2NhOiB7XG4gICAgZ2V0Q29va2llQVRTOiAoKSA9PiBzdHJpbmdcbiAgICByZWZyZXNoVG9rZW46ICgpID0+IFByb21pc2U8dm9pZD5cbiAgfVxuICB2YXIgJF9zYzogYW55XG4gIGRlY2xhcmUgdmFyIHByb2Nlc3M6IE5vZGVKUy5Qcm9jZXNzXG4gIGRlY2xhcmUgdmFyIG1haWFBZ2VudFBtQWNjZXNzOiBzdHJpbmdcbiAgZGVjbGFyZSB2YXIgTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUzogc3RyaW5nXG4gIGRlY2xhcmUgdmFyIE1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUzogc3RyaW5nXG4gIGRlY2xhcmUgdmFyIE1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUjogc3RyaW5nXG4gIGRlY2xhcmUgdmFyIG1haWFQcm9qZWN0U3VtbWFyeUFjY2Vzczogc3RyaW5nXG4gIGRlY2xhcmUgdmFyIG1haWFGYXFzQWNjZXNzOiBzdHJpbmdcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.49-2",
3
+ "version": "2.11.49-3",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {
@@ -1,73 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- import { CORUserRole } from '../context/cor-user';
5
- var ALWAYS_BLOCKED_ROLES = [CORUserRole.FREELANCER, CORUserRole.CLIENT];
6
- var MAIA_ACCESS_DEBUG_PREFIX = '[MaiaAccess][maia-components]';
7
- var hasTaskPanelAccessFromWindow = function hasTaskPanelAccessFromWindow() {
8
- return typeof window !== 'undefined' && Boolean(window.MAIA_TASK_PANEL_ACCESS);
9
- };
10
- var isMaiaAccessDebugEnabled = function isMaiaAccessDebugEnabled() {
11
- return typeof window !== 'undefined';
12
- };
13
- export var getMaiaWindowFlags = function getMaiaWindowFlags() {
14
- return {
15
- MAIA_CHAT_AI_FEATURE_ACCESS: window.MAIA_CHAT_AI_FEATURE_ACCESS,
16
- MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS: window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS,
17
- MAIA_PROJECT_SPECIALIST_ACCESS: window.MAIA_PROJECT_SPECIALIST_ACCESS,
18
- MAIA_TASK_PANEL_ACCESS: window.MAIA_TASK_PANEL_ACCESS,
19
- maiaAgentPmAccess: window.maiaAgentPmAccess
20
- };
21
- };
22
- export var logMaiaAccessDebug = function logMaiaAccessDebug(context, user, section, extra) {
23
- if (!isMaiaAccessDebugEnabled()) return;
24
- var roleId = user === null || user === void 0 ? void 0 : user.role_id;
25
- var cloneAgentsRoleBlocked = (user === null || user === void 0 ? void 0 : user.role_id) != null ? isMaiaCloneAgentsRoleBlocked(user, section) : undefined;
26
- console.info(MAIA_ACCESS_DEBUG_PREFIX, context, _objectSpread({
27
- section: section,
28
- user: {
29
- role_id: roleId,
30
- company_id: user === null || user === void 0 ? void 0 : user.company_id
31
- },
32
- window_flags: getMaiaWindowFlags(),
33
- web_snapshot: window.__MAIA_ACCESS_DEBUG__,
34
- computed: {
35
- has_task_panel_access: hasTaskPanelAccessFromWindow(),
36
- clone_agents_role_blocked: cloneAgentsRoleBlocked,
37
- can_access_task_section: section === 'task' ? canAccessMaiaTaskSection() : undefined
38
- }
39
- }, extra));
40
- };
41
-
42
- /**
43
- * Bloquea agentes clone (MAIA PM) según rol y sección.
44
- * Colaboradores: solo permitidos en section 'task' cuando web setea MAIA_TASK_PANEL_ACCESS.
45
- */
46
- export var isMaiaCloneAgentsRoleBlocked = function isMaiaCloneAgentsRoleBlocked(user, section) {
47
- var roleId = user.role_id;
48
- if (!roleId || ALWAYS_BLOCKED_ROLES.includes(roleId)) {
49
- return true;
50
- }
51
- if (roleId === CORUserRole.COLLABORATOR) {
52
- return section !== 'task' || !hasTaskPanelAccessFromWindow();
53
- }
54
- return false;
55
- };
56
-
57
- /** Acceso al modal Maia en section 'task' (incluye excepción colaborador piloto). */
58
- export var canAccessMaiaTaskSection = function canAccessMaiaTaskSection() {
59
- return hasTaskPanelAccessFromWindow();
60
- };
61
- export var validateMaiaFeatureAccess = function validateMaiaFeatureAccess(section) {
62
- if (section === 'task' && canAccessMaiaTaskSection()) {
63
- return true;
64
- }
65
- if (section === 'header' && (window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS || window.MAIA_CHAT_AI_FEATURE_ACCESS)) {
66
- return true;
67
- }
68
- if ((section === 'project' || section === 'client' || section === 'task') && Boolean(window.MAIA_CHAT_AI_FEATURE_ACCESS)) {
69
- return true;
70
- }
71
- return false;
72
- };
73
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT1JVc2VyUm9sZSIsIkFMV0FZU19CTE9DS0VEX1JPTEVTIiwiRlJFRUxBTkNFUiIsIkNMSUVOVCIsIk1BSUFfQUNDRVNTX0RFQlVHX1BSRUZJWCIsImhhc1Rhc2tQYW5lbEFjY2Vzc0Zyb21XaW5kb3ciLCJ3aW5kb3ciLCJCb29sZWFuIiwiTUFJQV9UQVNLX1BBTkVMX0FDQ0VTUyIsImlzTWFpYUFjY2Vzc0RlYnVnRW5hYmxlZCIsImdldE1haWFXaW5kb3dGbGFncyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJNQUlBX1BST0pFQ1RfU1BFQ0lBTElTVF9BQ0NFU1MiLCJtYWlhQWdlbnRQbUFjY2VzcyIsImxvZ01haWFBY2Nlc3NEZWJ1ZyIsImNvbnRleHQiLCJ1c2VyIiwic2VjdGlvbiIsImV4dHJhIiwicm9sZUlkIiwicm9sZV9pZCIsImNsb25lQWdlbnRzUm9sZUJsb2NrZWQiLCJpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwidW5kZWZpbmVkIiwiY29uc29sZSIsImluZm8iLCJfb2JqZWN0U3ByZWFkIiwiY29tcGFueV9pZCIsIndpbmRvd19mbGFncyIsIndlYl9zbmFwc2hvdCIsIl9fTUFJQV9BQ0NFU1NfREVCVUdfXyIsImNvbXB1dGVkIiwiaGFzX3Rhc2tfcGFuZWxfYWNjZXNzIiwiY2xvbmVfYWdlbnRzX3JvbGVfYmxvY2tlZCIsImNhbl9hY2Nlc3NfdGFza19zZWN0aW9uIiwiY2FuQWNjZXNzTWFpYVRhc2tTZWN0aW9uIiwiaW5jbHVkZXMiLCJDT0xMQUJPUkFUT1IiLCJ2YWxpZGF0ZU1haWFGZWF0dXJlQWNjZXNzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy9tYWlhVGFza1BhbmVsQWNjZXNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPUlVzZXIsIENPUlVzZXJSb2xlIH0gZnJvbSAnLi4vY29udGV4dC9jb3ItdXNlcidcblxuZXhwb3J0IHR5cGUgTWFpYUFjY2Vzc1NlY3Rpb24gPSAncHJvamVjdCcgfCAnaGVhZGVyJyB8ICdjbGllbnQnIHwgJ3Rhc2snXG5cbmNvbnN0IEFMV0FZU19CTE9DS0VEX1JPTEVTOiBDT1JVc2VyUm9sZVtdID0gW0NPUlVzZXJSb2xlLkZSRUVMQU5DRVIsIENPUlVzZXJSb2xlLkNMSUVOVF1cblxuY29uc3QgTUFJQV9BQ0NFU1NfREVCVUdfUFJFRklYID0gJ1tNYWlhQWNjZXNzXVttYWlhLWNvbXBvbmVudHNdJ1xuXG50eXBlIE1haWFBY2Nlc3NVc2VyID0gUGljazxDT1JVc2VyLCAncm9sZV9pZCcgfCAnY29tcGFueV9pZCc+XG5cbmNvbnN0IGhhc1Rhc2tQYW5lbEFjY2Vzc0Zyb21XaW5kb3cgPSAoKTogYm9vbGVhbiA9PlxuICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiBCb29sZWFuKHdpbmRvdy5NQUlBX1RBU0tfUEFORUxfQUNDRVNTKVxuXG5jb25zdCBpc01haWFBY2Nlc3NEZWJ1Z0VuYWJsZWQgPSAoKTogYm9vbGVhbiA9PiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuXG5leHBvcnQgY29uc3QgZ2V0TWFpYVdpbmRvd0ZsYWdzID0gKCkgPT4gKHtcbiAgTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTOiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTLFxuICBNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTOiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyxcbiAgTUFJQV9QUk9KRUNUX1NQRUNJQUxJU1RfQUNDRVNTOiB3aW5kb3cuTUFJQV9QUk9KRUNUX1NQRUNJQUxJU1RfQUNDRVNTLFxuICBNQUlBX1RBU0tfUEFORUxfQUNDRVNTOiB3aW5kb3cuTUFJQV9UQVNLX1BBTkVMX0FDQ0VTUyxcbiAgbWFpYUFnZW50UG1BY2Nlc3M6IHdpbmRvdy5tYWlhQWdlbnRQbUFjY2Vzcyxcbn0pXG5cbmV4cG9ydCBjb25zdCBsb2dNYWlhQWNjZXNzRGVidWcgPSAoXG4gIGNvbnRleHQ6IHN0cmluZyxcbiAgdXNlcjogTWFpYUFjY2Vzc1VzZXIgfCB1bmRlZmluZWQsXG4gIHNlY3Rpb24/OiBNYWlhQWNjZXNzU2VjdGlvbixcbiAgZXh0cmE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogdm9pZCA9PiB7XG4gIGlmICghaXNNYWlhQWNjZXNzRGVidWdFbmFibGVkKCkpIHJldHVyblxuXG4gIGNvbnN0IHJvbGVJZCA9IHVzZXI/LnJvbGVfaWRcbiAgY29uc3QgY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCA9IHVzZXI/LnJvbGVfaWQgIT0gbnVsbCA/IGlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQodXNlciwgc2VjdGlvbikgOiB1bmRlZmluZWRcblxuICBjb25zb2xlLmluZm8oTUFJQV9BQ0NFU1NfREVCVUdfUFJFRklYLCBjb250ZXh0LCB7XG4gICAgc2VjdGlvbixcbiAgICB1c2VyOiB7XG4gICAgICByb2xlX2lkOiByb2xlSWQsXG4gICAgICBjb21wYW55X2lkOiB1c2VyPy5jb21wYW55X2lkLFxuICAgIH0sXG4gICAgd2luZG93X2ZsYWdzOiBnZXRNYWlhV2luZG93RmxhZ3MoKSxcbiAgICB3ZWJfc25hcHNob3Q6IHdpbmRvdy5fX01BSUFfQUNDRVNTX0RFQlVHX18sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgIGhhc190YXNrX3BhbmVsX2FjY2VzczogaGFzVGFza1BhbmVsQWNjZXNzRnJvbVdpbmRvdygpLFxuICAgICAgY2xvbmVfYWdlbnRzX3JvbGVfYmxvY2tlZDogY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCxcbiAgICAgIGNhbl9hY2Nlc3NfdGFza19zZWN0aW9uOiBzZWN0aW9uID09PSAndGFzaycgPyBjYW5BY2Nlc3NNYWlhVGFza1NlY3Rpb24oKSA6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIC4uLmV4dHJhLFxuICB9KVxufVxuXG4vKipcbiAqIEJsb3F1ZWEgYWdlbnRlcyBjbG9uZSAoTUFJQSBQTSkgc2Vnw7puIHJvbCB5IHNlY2Npw7NuLlxuICogQ29sYWJvcmFkb3Jlczogc29sbyBwZXJtaXRpZG9zIGVuIHNlY3Rpb24gJ3Rhc2snIGN1YW5kbyB3ZWIgc2V0ZWEgTUFJQV9UQVNLX1BBTkVMX0FDQ0VTUy5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQgPSAodXNlcjogTWFpYUFjY2Vzc1VzZXIsIHNlY3Rpb24/OiBNYWlhQWNjZXNzU2VjdGlvbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB7IHJvbGVfaWQ6IHJvbGVJZCB9ID0gdXNlclxuXG4gIGlmICghcm9sZUlkIHx8IEFMV0FZU19CTE9DS0VEX1JPTEVTLmluY2x1ZGVzKHJvbGVJZCkpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHJvbGVJZCA9PT0gQ09SVXNlclJvbGUuQ09MTEFCT1JBVE9SKSB7XG4gICAgcmV0dXJuIHNlY3Rpb24gIT09ICd0YXNrJyB8fCAhaGFzVGFza1BhbmVsQWNjZXNzRnJvbVdpbmRvdygpXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqIEFjY2VzbyBhbCBtb2RhbCBNYWlhIGVuIHNlY3Rpb24gJ3Rhc2snIChpbmNsdXllIGV4Y2VwY2nDs24gY29sYWJvcmFkb3IgcGlsb3RvKS4gKi9cbmV4cG9ydCBjb25zdCBjYW5BY2Nlc3NNYWlhVGFza1NlY3Rpb24gPSAoKTogYm9vbGVhbiA9PiBoYXNUYXNrUGFuZWxBY2Nlc3NGcm9tV2luZG93KClcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTWFpYUZlYXR1cmVBY2Nlc3MgPSAoc2VjdGlvbjogTWFpYUFjY2Vzc1NlY3Rpb24pOiBib29sZWFuID0+IHtcbiAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJyAmJiBjYW5BY2Nlc3NNYWlhVGFza1NlY3Rpb24oKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInICYmICh3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyB8fCB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKFxuICAgIChzZWN0aW9uID09PSAncHJvamVjdCcgfHwgc2VjdGlvbiA9PT0gJ2NsaWVudCcgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snKSAmJlxuICAgIEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUylcbiAgKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBa0JBLFdBQVcsUUFBUSxxQkFBcUI7QUFJMUQsSUFBTUMsb0JBQW1DLEdBQUcsQ0FBQ0QsV0FBVyxDQUFDRSxVQUFVLEVBQUVGLFdBQVcsQ0FBQ0csTUFBTSxDQUFDO0FBRXhGLElBQU1DLHdCQUF3QixHQUFHLCtCQUErQjtBQUloRSxJQUFNQyw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUFBO0VBQUEsT0FDaEMsT0FBT0MsTUFBTSxLQUFLLFdBQVcsSUFBSUMsT0FBTyxDQUFDRCxNQUFNLENBQUNFLHNCQUFzQixDQUFDO0FBQUE7QUFFekUsSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBQTtFQUFBLE9BQWtCLE9BQU9ILE1BQU0sS0FBSyxXQUFXO0FBQUE7QUFFN0UsT0FBTyxJQUFNSSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFBO0VBQUEsT0FBVTtJQUN2Q0MsMkJBQTJCLEVBQUVMLE1BQU0sQ0FBQ0ssMkJBQTJCO0lBQy9EQyx3Q0FBd0MsRUFBRU4sTUFBTSxDQUFDTSx3Q0FBd0M7SUFDekZDLDhCQUE4QixFQUFFUCxNQUFNLENBQUNPLDhCQUE4QjtJQUNyRUwsc0JBQXNCLEVBQUVGLE1BQU0sQ0FBQ0Usc0JBQXNCO0lBQ3JETSxpQkFBaUIsRUFBRVIsTUFBTSxDQUFDUTtFQUM1QixDQUFDO0FBQUEs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