@projectcor/maia-components 2.34.3-0 → 2.34.3-2

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.
@@ -282,6 +282,7 @@ export var ChatAIModal = function ChatAIModal() {
282
282
  removeSkill = _useGetSkills.removeSkill;
283
283
  var isMAIA = validateIsMaia(agent);
284
284
  var userHasPermissions = ((user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 || (_user$permissions = _user$permissions.ai_agents) === null || _user$permissions === void 0 ? void 0 : _user$permissions.create) || (user === null || user === void 0 || (_user$permissions2 = user.permissions) === null || _user$permissions2 === void 0 || (_user$permissions2 = _user$permissions2.ai_agents) === null || _user$permissions2 === void 0 ? void 0 : _user$permissions2.edit) || (user === null || user === void 0 || (_user$permissions3 = user.permissions) === null || _user$permissions3 === void 0 || (_user$permissions3 = _user$permissions3.ai_agents) === null || _user$permissions3 === void 0 ? void 0 : _user$permissions3["delete"])) && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
285
+ var userHasSkillsAccess = canAccessToSkills(user);
285
286
  var computedCurrentOption = useMemo(function () {
286
287
  var isGlobalSpecialist = isMAIA && (agent === null || agent === void 0 ? void 0 : agent.entity) === 'global';
287
288
  var isProjectSpecialist = isMAIA && ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'project' || (agent === null || agent === void 0 ? void 0 : agent.entity) == null);
@@ -1553,11 +1554,11 @@ export var ChatAIModal = function ChatAIModal() {
1553
1554
  removeAgent: removeAgent,
1554
1555
  updateAgentFavorite: updateAgentFavorite,
1555
1556
  selectFirstAgent: selectFirstAgent
1556
- }), userHasPermissions && /*#__PURE__*/_jsx(AbmSkillModal, {
1557
+ }), userHasSkillsAccess && /*#__PURE__*/_jsx(AbmSkillModal, {
1557
1558
  addSkill: addSkill,
1558
1559
  updateSkillInList: updateSkillInList,
1559
1560
  removeSkill: removeSkill
1560
- }), userHasPermissions && /*#__PURE__*/_jsx(AbmSkillGenerateModal, {}), /*#__PURE__*/_jsx(Snackbar, {})]
1561
+ }), userHasSkillsAccess && /*#__PURE__*/_jsx(AbmSkillGenerateModal, {}), /*#__PURE__*/_jsx(Snackbar, {})]
1561
1562
  }), selector);
1562
1563
  };
1563
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9DaGF0QUkiLCJjYW5BY2Nlc3NUb1NraWxscyIsIk1BSUFFcnJvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJDaGF0QUlDb250ZW50IiwiYnVpbGRIYW5kbGVycyIsIm9wdGlvbnMiLCJTaWRlYmFyIiwidXNlR2V0QWdlbnRzIiwidXNlR2V0U2tpbGxzIiwidXNlR2xvYmFsQ29udGV4dCIsIkNoYXRBSU1vZGFsSGVhZGVyIiwiU25hY2tiYXIiLCJQcm9qZWN0U3VtbWFyeUNvbnRlbnQiLCJBYm1BZ2VudE1vZGFsIiwiQWJtU2tpbGxNb2RhbCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwiQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1NaW5pbWl6ZWRIaWRlIiwiU0NDQUlNV3JhcHBlciIsIk1haWFNaW5pbWl6ZWRQaWxsIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwidXNlRmFxc1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwidXNlQ2hhdHNTdG9yZSIsInJlYWRMYXN0QWN0aXZlQ2hhdElkIiwid3JpdGVMYXN0QWN0aXZlQ2hhdElkIiwiY2xlYXJNYWlhUGFuZWxTZXNzaW9uIiwiaXNWYWxpZE1haWFQYW5lbE9wdGlvbiIsInBhdGNoTWFpYVBhbmVsU2Vzc2lvbiIsInJlYWRNYWlhUGFuZWxTZXNzaW9uIiwid3JpdGVNYWlhUGFuZWxTZXNzaW9uIiwidXNlU2Vzc2lvbnNTdG9yZSIsImlzQWN0aXZlU2Vzc2lvblN0YXR1cyIsImZldGNoTWFpYSIsImZldGNoQWdlbnREZXRhaWwiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJpc0dsb2JhbE1haWFTZWN0aW9uIiwic2VjdGlvbiIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJhZ2VudFR5cGUiLCJjdXJyZW50T3B0aW9uIiwiaG9tZU9wdGlvbiIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInVzZXIiLCJCb29sZWFuIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIkNoYXRBSU1vZGFsIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSMiIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjMiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI0IiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI3IiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSOCIsIl9hZ2VudHMkZGF0YSIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJzYXZlZFNlc3Npb25Pbk1vdW50UmVmIiwiaWQiLCJzaG91bGRSZXN0b3JlRXhwYW5kZWQiLCJjdXJyZW50IiwiaXNFeHBhbmRlZCIsInBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZiIsInNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzUmVzdG9yaW5nU2Vzc2lvbiIsInNldElzUmVzdG9yaW5nU2Vzc2lvbiIsInNpZGViYXJPcGVuUmVmIiwic2lkZWJhck9wZW4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTWluaW1pemVkIiwic2V0SXNNaW5pbWl6ZWQiLCJzZXRDaGF0Vmlld1Zpc2libGUiLCJzdGF0ZSIsInVucmVhZENvdW50IiwiYWN0aXZlQ2hhdElkIiwiaGFzQWN0aXZlU3RyZWFtIiwiT2JqZWN0IiwidmFsdWVzIiwibWV0YSIsInNvbWUiLCJzdGF0dXMiLCJnb1RvQ2hhdFJlZiIsImdvSG9tZVJlZiIsImhhbmRsZU1pbmltaXplIiwiYWlDaGF0TWluaW1pemUiLCJmb2N1c0NoYXRJbnB1dCIsInNldFRpbWVvdXQiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsIl91c2VTdGF0ZTUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGU2IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJzZXNzaW9uTWV0YSIsInNldFNlc3Npb25NZXRhIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTIxIiwic2F2ZWQiLCJhZ2VudHNOYXZBY3RpdmUiLCJteUFnZW50cyIsIm15U2tpbGxzIiwic2F2ZWRPcHRpb24iLCJob21lIiwiX3VzZVN0YXRlMjIiLCJzZXRDdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2IiwiZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwic2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwicHJldkhhc1Bpbm5lZENvbnRleHRSZWYiLCJoYW5kbGVycyIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJzaWRlYmFySGFzRXJyb3IiLCJzZXRTaWRlYmFySGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsImxhbmciLCJsYW5ndWFnZSIsImxvY2FsZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJjbGVhckFnZW50IiwiYWdlbnQiLCJwcm9qZWN0IiwiY2xpZW50IiwidGFzayIsImNoaXBzUHJvamVjdCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJzZWFyY2hMb2FkaW5nIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsImFnZW50c0RhdGFSZWYiLCJkYXRhIiwiX3VzZUdldFNraWxscyIsInNoYXJlZFNraWxscyIsImxvYWRpbmdTa2lsbHMiLCJoYW5kbGVHZXRTa2lsbHMiLCJhZGRTa2lsbCIsInVwZGF0ZVNraWxsSW5MaXN0IiwicmVtb3ZlU2tpbGwiLCJpc01BSUEiLCJ1c2VySGFzUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNyZWF0ZSIsImVkaXQiLCJjb21wdXRlZEN1cnJlbnRPcHRpb24iLCJpc0dsb2JhbFNwZWNpYWxpc3QiLCJlbnRpdHkiLCJpc1Byb2plY3RTcGVjaWFsaXN0IiwiaXNDbGllbnRTcGVjaWFsaXN0IiwiaXNNYWlha2VyIiwidHlwZSIsImNoYXQiLCJzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yIiwic2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yIiwicHJvamVjdFNlbGVjdG9yIiwiY2xpZW50U2VsZWN0b3IiLCJuYW1lIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInNpZGViYXJBZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNGZXRjaGVkUmVmIiwic2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjkiLCJfdXNlU3RhdGUzMCIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiaGFuZGxlTGF5b3V0TW9kZUNoYW5nZSIsIm1vZGUiLCJleHBhbmRlZCIsImlzRmxvYXRpbmciLCJjb250ZW50V3JhcHBlclJlZiIsIl91c2VTdGF0ZTMxIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSNSIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjYiLCJkcmFnUG9zaXRpb24iLCJfdXNlU3RhdGUzMiIsInNldERyYWdQb3NpdGlvbiIsIl91c2VGbG9hdGluZ1BhbmVsRHJhZyIsInRpbHRNb3Rpb24iLCJzdGFydFBvaW50ZXJUcmFja2luZyIsInNhbXBsZVBvaW50ZXJNb3ZlIiwiZW5kUG9pbnRlclRyYWNraW5nIiwiZHJhZ1N0YXRlUmVmIiwiY2xhbXBEcmFnUG9zaXRpb24iLCJ4IiwieSIsImNvbnRlbnRXcmFwcGVyIiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsInJlY3QiLCJsZWZ0IiwidG9wIiwiaGFuZGxlRHJhZ01vdmUiLCJkcmFnU3RhdGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm5leHRQb3NpdGlvbiIsIm9mZnNldFgiLCJvZmZzZXRZIiwicmVzb2x2ZWREcmFnUG9zaXRpb24iLCJoYW5kbGVEcmFnU3RhcnQiLCJidXR0b24iLCJ0YXJnZXQiLCJjbG9zZXN0IiwiaW5pdGlhbFBvc2l0aW9uIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiY29udGV4dERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibGVuZ3RoIiwiYmFubmVyRmFxQXV0b1NlbnRSZWYiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkiLCJlbnRpdHlSZWFkeSIsImZhcVRpdGxlIiwidHJpbSIsInVuZGVmaW5lZCIsImdvVG9DaGF0Iiwic2Vzc2lvbkV4dGVybmFsSWQiLCJzZWxlY3RlZEFnZW50IiwiZmluZCIsImFnZW50SXRlbSIsImFnZW50SWQiLCJoYW5kbGVTaWRlYmFyT3BlbkNoYW5nZSIsIm9wZW4iLCJzeW5jUGFuZWxTZXNzaW9uIiwiX2FnZW50JGlkIiwiaG9zdENvbnRleHQiLCJlbnN1cmVBZ2VudHNMb2FkZWQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJhYnJ1cHQiLCJzdG9wIiwidGltZXIiLCJjbGVhclRpbWVvdXQiLCJvblBhZ2VIaWRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZCIsImFpQ2hhdE9wZW4iLCJvcHRpb24iLCJ0aGVuIiwiX2NoYXRzJGZpbmQiLCJfZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiY2hhdHMiLCJsYXN0QWN0aXZlQ2hhdElkIiwiaXNSZWFkIiwiX2dvVG9DaGF0UmVmJGN1cnJlbnQiLCJjYWxsIiwiX2dvSG9tZVJlZiRjdXJyZW50IiwiYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3ZlciIsImRldGFpbCIsIl9yZXNldFNlbGVjdGVkQ2hhdFJlZiIsIl9kZXRhaWwkcHJvamVjdDIiLCJfZGV0YWlsJGNsaWVudDIiLCJfZGV0YWlsJHRhc2syIiwiaXNHbG9iYWxIZWFkZXJPcGVuIiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJzZXRBY3RpdmVDaGF0SWQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9kZXRhaWwkdGFzayIsIm5leHRMYXlvdXQiLCJmYXEiLCJfYWdlbnQkaWQyIiwicmVzb2x2ZWRBZ2VudElkIiwiZmlyc3RBZ2VudCIsImhhbmRsZVNlbmRNZXNzYWdlUmVhZHkiLCJzZW5kTWVzc2FnZSIsInN0b3BHZW5lcmF0aW9uIiwic3RyZWFtaW5nIiwid3JpdGluZyIsImhhbmRsZVNlbmRNZXNzYWdlIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsInByb2plY3RfZGVsZXRlZCIsImhhbmRsZVN0YXJ0TmV3Q2hhdCIsImZyb21NeUFnZW50cyIsImZyb21NYWlha2VySG9tZSIsIl9yZXNldFNlbGVjdGVkQ2hhdFJlZjIiLCJoYW5kbGVSZXNldENoYXQiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsImhhbmRsZUJhY2siLCJ0byIsImFpQ2hhdEJhY2siLCJwaW5uZWQiLCJwcm9qZWN0SWQiLCJ3YXNQaW5uZWQiLCJvbk1lcmdlQ3JlYXRlZEFnZW50IiwiZXZ0IiwiX3JlZjMiLCJuZXh0QWdlbnQiLCJuYXZpZ2F0ZUhvbWUiLCJvblN5bmNFZGl0ZWRBZ2VudCIsIl9yZWY0Iiwib3BlbkNoYXRWaWV3Iiwib3BlbkhvbWUiLCJjbGllbnRJZCIsIm9wZW5Gcm9tSG9zdCIsIl9yZWY1Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfZGV0YWlsJHByb2plY3QzIiwiX2RldGFpbCRjbGllbnQzIiwiX3JlZjYiLCJoYW5kbGVVc2VTa2lsbEFmdGVyU2F2ZSIsIl9yZWY3Iiwic2tpbGwiLCJ1c2VGaXJzdEFnZW50IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwib25TZXNzaW9uTWV0YSIsIl9yZWY4IiwibGVnYWN5Q29udGV4dFNlc3Npb24iLCJhZ2VudEVudGl0eSIsImluY2x1ZGVzIiwiY29udGV4dE5hbWUiLCJ0YXNrTmFtZSIsInByb2plY3ROYW1lIiwiY2xpZW50TmFtZSIsImVudGl0eVR5cGUiLCJpc19sZWdhY3lfY29udGV4dCIsImhhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCIsInBJZCIsInBOYW1lIiwiY0lkIiwiY05hbWUiLCJ0SWQiLCJ0YXNrSWQiLCJ0TmFtZSIsIm9yY2hlc3RyYXRvciIsImEiLCJTdHJpbmciLCJzaG93TmV3Q2hhdCIsImlzTXlBZ2VudHNTZWN0aW9uIiwiaXNNeVNraWxsc1NlY3Rpb24iLCJoYXNQaW5uZWRDb250ZXh0IiwiaXNDaGF0VmlldyIsImlzSG9tZVN0ZXAyIiwiaXNIZWFkZXJIb21lU3RlcDIiLCJpc1NlY3Rpb25SZXNldEhvbWVTdGVwMiIsInNob3dCYWNrQnV0dG9uIiwiaGFuZGxlT3Blbk1hcmtldHBsYWNlIiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJoYW5kbGVPcGVuU2tpbGxzIiwiaGFuZGxlR29Ub01haWFrZXIiLCJfY2FsbGVlNCIsIm1haWFrZXJBZ2VudCIsInJlc3BvbnNlIiwiX3QiLCJfY29udGV4dDQiLCJwYXRoIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJsb2FkQWdlbnRzRm9yU2Vzc2lvblJlc3RvcmUiLCJfcmVmMSIsIl9jYWxsZWU1Iiwic25hcHNob3QiLCJhZ2VudFRvU2VsZWN0IiwiX3QyIiwiX2NvbnRleHQ1IiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFwcGx5U2Vzc2lvblJlc3RvcmUiLCJfcmVmMTAiLCJfY2FsbGVlNiIsIl9zbmFwc2hvdCRob3N0Q29udGV4dCIsIl9jb250ZXh0NiIsIl94MiIsInJ1blJlc3RvcmUiLCJfcmVmMTEiLCJfY2FsbGVlNyIsIl9jb250ZXh0NyIsImZpbmlzaCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaXNNYWlha2VyQ3JlYXRvckhvbWUiLCJtb2RhbFBhbmVsIiwiY2hpbGRyZW4iLCJvbkdvVG9DaGF0Iiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwib25PcGVuTWFpYWtlckNyZWF0b3IiLCJpc0xlZ2FjeUNvbnRleHRTZXNzaW9uIiwiaW5pdGlhbE9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJmbG9hdGluZyIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm9uQWdlbnRVcGRhdGUiLCJpc01haWFrZXJTZWN0aW9uIiwib25CYWNrIiwicmVmcyIsIm9uU2VuZE1lc3NhZ2VSZWFkeSIsImxvYWRpbmdBZ2VudHMiLCJvbkRlbGV0ZUFnZW50Iiwib25GYXZvcml0ZUFnZW50VXBkYXRlIiwiaGFzTW9yZUFnZW50cyIsImxvYWRpbmdNb3JlQWdlbnRzIiwib25Mb2FkTW9yZUFnZW50cyIsIm9uR29Ub01haWFrZXIiLCJvbkRlbGV0ZVNraWxsIiwib25TZWFyY2hBZ2VudHMiLCJzZWFyY2hMb2FkaW5nQWdlbnRzIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwib25Db250aW51ZUluTmV3Q2hhdCIsInJlZiIsImNyZWF0ZVBvcnRhbCIsImVsZXZhdGVkIiwiJG1pbmltaXplZCIsIiRoaWRkZW4iLCJ0aWx0Iiwib25SZXN0b3JlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL0NoYXRBSU1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IGNhbkFjY2Vzc1RvQ2hhdEFJLCBjYW5BY2Nlc3NUb1NraWxscyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IE1BSUFFcnJvciB9IGZyb20gJy4uLy4uL2F0b21zL01BSUFFcnJvcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuXG5pbXBvcnQgeyBDaGF0QUlDb250ZW50IH0gZnJvbSAnLi4vQ2hhdEFJQ29udGVudCdcbmltcG9ydCB7IGJ1aWxkSGFuZGxlcnMsIG9wdGlvbnMgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICcuLi9TaWRlYmFyJ1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzJ1xuaW1wb3J0IHsgdXNlR2V0U2tpbGxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZ2V0U2tpbGxzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IENoYXRBSU1vZGFsSGVhZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyJ1xuaW1wb3J0IHsgU25hY2tiYXIgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvU25hY2tCYXIvU25hY2tiYXInXG5pbXBvcnQgeyBQcm9qZWN0U3VtbWFyeUNvbnRlbnQgfSBmcm9tICcuLi9Qcm9qZWN0U3VtbWFyeUNvbnRlbnQnXG5pbXBvcnQgeyBBYm1BZ2VudE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbCdcbmltcG9ydCB7IEFibVNraWxsTW9kYWwsIFNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbCdcbmltcG9ydCB7IEFibVNraWxsR2VuZXJhdGVNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwvQWJtU2tpbGxHZW5lcmF0ZU1vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTU1pbmltaXplZEhpZGUsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7IE1haWFNaW5pbWl6ZWRQaWxsIH0gZnJvbSAnLi9jb21wb25lbnRzL01haWFNaW5pbWl6ZWRQaWxsJ1xuaW1wb3J0IHtcbiAgZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4LFxuICBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSxcbiAgcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUsXG4gIHNldFN0b3JlZE1haWFDaGF0TGF5b3V0TW9kZSxcbn0gZnJvbSAnLi9sYXlvdXQnXG5pbXBvcnQgeyBGbG9hdGluZ1BhbmVsTW90aW9uLCB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQgfSBmcm9tICcuL2Zsb2F0aW5nUGFuZWxNb3Rpb24nXG5pbXBvcnQgeyBDaGF0QWlNb2RhbEZvb3RlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEZvb3RlcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgU2tpbGwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgeyB1c2VGYXFzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VGYXFzU3RvcmUnXG5pbXBvcnQgeyBnZXRDaGF0c1N0b3JlU3RhdGUsIHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuaW1wb3J0IHR5cGUgeyBDaGF0TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9jaGF0c1N0b3JlLnR5cGVzJ1xuaW1wb3J0IHsgcmVhZExhc3RBY3RpdmVDaGF0SWQsIHdyaXRlTGFzdEFjdGl2ZUNoYXRJZCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL21haWFMYXN0Q2hhdFBlcnNpc3RlbmNlJ1xuaW1wb3J0IHtcbiAgY2xlYXJNYWlhUGFuZWxTZXNzaW9uLFxuICBpc1ZhbGlkTWFpYVBhbmVsT3B0aW9uLFxuICBwYXRjaE1haWFQYW5lbFNlc3Npb24sXG4gIHJlYWRNYWlhUGFuZWxTZXNzaW9uLFxuICB0eXBlIE1haWFQYW5lbFNlc3Npb25TbmFwc2hvdCxcbiAgd3JpdGVNYWlhUGFuZWxTZXNzaW9uLFxufSBmcm9tICcuLi8uLi8uLi9zdG9yZS9tYWlhUGFuZWxTZXNzaW9uUGVyc2lzdGVuY2UnXG5pbXBvcnQgeyB1c2VTZXNzaW9uc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvc2Vzc2lvbnMvdXNlU2Vzc2lvbnNTdG9yZSdcbmltcG9ydCB7IGlzQWN0aXZlU2Vzc2lvblN0YXR1cyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25zLnR5cGVzJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBmZXRjaEFnZW50RGV0YWlsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZmV0Y2hBZ2VudERldGFpbCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgdHlwZSBNYWlhSG9zdE9wZW5EZXRhaWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYWlhSG9zdE9wZW4nXG5cbi8qKiBNZXRhZGF0YSBkZSBsYSBzZXNzaW9uIGFiaWVydGEgKGVtaXRpZGEgcG9yIHVzZUNoYXRNZXNzYWdlcyBhbCBjYXJnYXIgdW5hIGNvbnZlcnNhY2nDs24pLiAqL1xudHlwZSBTZXNzaW9uTWV0YSA9IHtcbiAgY2hhdElkOiBzdHJpbmdcbiAgYWdlbnRUeXBlPzogc3RyaW5nXG4gIGFnZW50RW50aXR5Pzogc3RyaW5nXG4gIHByb2plY3RJZD86IG51bWJlclxuICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlclxuICBjbGllbnROYW1lPzogc3RyaW5nXG4gIHRhc2tJZD86IG51bWJlclxuICB0YXNrTmFtZT86IHN0cmluZ1xufVxuXG5jb25zdCBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUyA9IFsncHJvamVjdCcsICd0YXNrJywgJ2NsaWVudCddIGFzIGNvbnN0XG50eXBlIExlZ2FjeUNvbnRleHRFbnRpdHkgPSAodHlwZW9mIExFR0FDWV9DT05URVhUX0VOVElUSUVTKVtudW1iZXJdXG5cbnR5cGUgQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0gJ2dsb2JhbF9jb250ZXh0X2hvbWUnIHwgJ3Rhc2tfaG9tZScgfCAncGxhbm5lcl9ob21lJyB8ICdwcm9qZWN0X2hvbWUnIHwgJ2NsaWVudF9ob21lJ1xuXG4vKiogSG9tZSBnbG9iYWwgZGVsIG9yY2hlc3RyYXRvciAoc29sbyBoZWFkZXIpLiBQbGFubmVyIGVzIGhvbWUgZGUgRlVBcywgbm8gZGUgY29udGV4dG9zLiAqL1xuY29uc3QgaXNHbG9iYWxNYWlhU2VjdGlvbiA9IChzZWN0aW9uOiBTZWN0aW9uKTogYm9vbGVhbiA9PiBzZWN0aW9uID09PSAnaGVhZGVyJ1xuXG5jb25zdCByZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0gKFxuICBzZWN0aW9uOiBTZWN0aW9uLFxuICBhZ2VudFR5cGU6IEFnZW50Wyd0eXBlJ10gfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRPcHRpb246IHN0cmluZyxcbiAgaG9tZU9wdGlvbjogc3RyaW5nXG4pOiBBaUNoYXRCYWNrRGVzdGluYXRpb24gPT4ge1xuICBpZiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IGhvbWVPcHRpb24pIHtcbiAgICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG4gIH1cbiAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykgcmV0dXJuICd0YXNrX2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicpIHJldHVybiAncGxhbm5lcl9ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3Byb2plY3QnKSByZXR1cm4gJ3Byb2plY3RfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdjbGllbnQnKSByZXR1cm4gJ2NsaWVudF9ob21lJ1xuICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG59XG5cbmV4cG9ydCBjb25zdCBJRF9NT0RBTF9DSEFUX0FHRU5UID0gJ21vZGFscy1wb3J0YWwtbWFpYS1jaGF0LWFnZW50J1xuXG5jb25zdCB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSA9IChzZWN0aW9uOiBTZWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCwgdXNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlVXNlcj4pID0+IHtcbiAgaWYgKCFzZWN0aW9uIHx8ICFjYW5BY2Nlc3NUb0NoYXRBSSh1c2VyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gUGxhbm5lciB5IHRhc2sgYWJyZW4gc2llbXByZSBlbCBjaGF0IChob21lIGRlIEZVQXMpLCBudW5jYSByZXN1bWVuIGRlIHByb3llY3Rvcy5cbiAgaWYgKHNlY3Rpb24gPT09ICdwbGFubmVyJyB8fCBzZWN0aW9uID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyB8fCB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgfVxuXG4gIHJldHVybiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICgpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3Qgc2F2ZWRTZXNzaW9uT25Nb3VudFJlZiA9IHVzZVJlZjxNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QgfCBudWxsPihyZWFkTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkKSlcbiAgY29uc3Qgc2hvdWxkUmVzdG9yZUV4cGFuZGVkID0gc2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50Py5pc0V4cGFuZGVkID8/IGZhbHNlXG4gIGNvbnN0IHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZiA9IHVzZVJlZjxNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QgfCBudWxsPihcbiAgICBzaG91bGRSZXN0b3JlRXhwYW5kZWQgPyBzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnQgOiBudWxsXG4gIClcbiAgY29uc3Qgc2Vzc2lvblJlc3RvcmVTdGFydGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBbaXNSZXN0b3JpbmdTZXNzaW9uLCBzZXRJc1Jlc3RvcmluZ1Nlc3Npb25dID0gdXNlU3RhdGUoKCkgPT4gcGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmLmN1cnJlbnQgIT0gbnVsbClcbiAgY29uc3Qgc2lkZWJhck9wZW5SZWYgPSB1c2VSZWYoc2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50Py5zaWRlYmFyT3BlbiA/PyBmYWxzZSlcblxuICAvLyBUcmFzIG5hdmVnYXIgZW4gZWwgaG9zdCAoZnVsbCBwYWdlIHJlbG9hZCksIHJlc3RhdXJhbW9zIGVsIHBhbmVsIHNpIGVzdGFiYSBhYmllcnRvLlxuICBjb25zdCBbaXNNaW5pbWl6ZWQsIHNldElzTWluaW1pemVkXSA9IHVzZVN0YXRlKCgpID0+ICFzaG91bGRSZXN0b3JlRXhwYW5kZWQpXG4gIGNvbnN0IHNldENoYXRWaWV3VmlzaWJsZSA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuc2V0Q2hhdFZpZXdWaXNpYmxlKVxuICBjb25zdCB1bnJlYWRDb3VudCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUudW5yZWFkQ291bnQpXG4gIGNvbnN0IGFjdGl2ZUNoYXRJZCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuYWN0aXZlQ2hhdElkKVxuICAvLyBMb3MgXCIuLi5cIiBkZWwgcGlsbCBzYWxlbiBkZWwgbW90b3IsIG5vIGRlIGlzU3RyZWFtaW5nL2lzV3JpdGluZzogZXNvcyByZWZsZWphblxuICAvLyBsYSBzZXNpw7NuIGFjdGl2YSB5IHF1ZWRhbiBzdGFsZSBjdWFuZG8gdW5hIHJlc3B1ZXN0YSB0ZXJtaW5hIGVuIGJhY2tncm91bmQuXG4gIGNvbnN0IGhhc0FjdGl2ZVN0cmVhbSA9IHVzZVNlc3Npb25zU3RvcmUoc3RhdGUgPT5cbiAgICBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGEpLnNvbWUobWV0YSA9PiBpc0FjdGl2ZVNlc3Npb25TdGF0dXMobWV0YS5zdGF0dXMpKVxuICApXG5cbiAgLyoqIGdvVG9DaGF0IC8gaGFuZGxlR29Ib21lIHNlIGRlZmluZW4gbcOhcyBhYmFqbzsgbG9zIHJlZnMgZXZpdGFuIGRlcGVuZGVyIGRlbCBvcmRlbiBkZSBkZWNsYXJhY2nDs24uICovXG4gIGNvbnN0IGdvVG9DaGF0UmVmID0gdXNlUmVmPCgoY2hhdDogQ2hhdExpc3RJdGVtKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGdvSG9tZVJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuXG4gIC8vIE1vbnRhIGNlcnJhZGEgc2Fsdm8gcmVzdGF1cmFjacOzbiBkZSBzZXNpw7NuOiBzaSBlbCBwYW5lbCBubyBlc3TDoSB2aXNpYmxlLCBsYXMgcmVzcHVlc3Rhc1xuICAvLyBudWV2YXMgcXVlZGFuIGNvbW8gbm8gbGXDrWRhcy5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50KSB7XG4gICAgICBzZXRDaGF0Vmlld1Zpc2libGUoZmFsc2UpXG4gICAgfVxuICB9LCBbc2V0Q2hhdFZpZXdWaXNpYmxlXSlcblxuICAvLyBQZXJzaXN0aW1vcyBsYSBjb252ZXJzYWNpw7NuIGFiaWVydGEgcGFyYSBwb2RlciB2b2x2ZXIgYSBlbGxhIGRlc2RlIGVsIHBpbGwgZGVzcHXDqXNcbiAgLy8gZGUgbmF2ZWdhciBvIHJlZnJlc2Nhci4gRWwgdGFrZW92ZXIgZGVzZGUgdW4gaG9zdCBsYSBsaW1waWEgKHZhIGFsIEhvbWUpLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhY3RpdmVDaGF0SWQpIHtcbiAgICAgIHdyaXRlTGFzdEFjdGl2ZUNoYXRJZCh1c2VyLmlkLCBhY3RpdmVDaGF0SWQpXG4gICAgfVxuICB9LCBbYWN0aXZlQ2hhdElkLCB1c2VyLmlkXSlcblxuICBjb25zdCBoYW5kbGVNaW5pbWl6ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRNaW5pbWl6ZSlcbiAgICBzZXRJc01pbmltaXplZCh0cnVlKVxuICAgIHNldENoYXRWaWV3VmlzaWJsZShmYWxzZSlcbiAgICB3cml0ZU1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBpc0V4cGFuZGVkOiBmYWxzZSB9KVxuICB9LCBbYW1wbGl0dWRFdmVudCwgc2V0Q2hhdFZpZXdWaXNpYmxlLCB1c2VyLmlkXSlcblxuICBjb25zdCBmb2N1c0NoYXRJbnB1dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgfSwgMTAwKVxuICB9LCBbXSlcblxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfT4oe1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIGF0dGFjaG1lbnRzOiBbXSxcbiAgfSlcbiAgY29uc3QgW2luaXRpYWxDaGF0SWQsIHNldEluaXRpYWxDaGF0SWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW25ld0NoYXRLZXksIHNldE5ld0NoYXRLZXldID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3Nlc3Npb25NZXRhLCBzZXRTZXNzaW9uTWV0YV0gPSB1c2VTdGF0ZTxTZXNzaW9uTWV0YSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBbcmVmZXRjaENoYXRzLCBzZXRSZWZldGNoQ2hhdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50T3B0aW9uLCBzZXRDdXJyZW50T3B0aW9uXSA9IHVzZVN0YXRlPG9wdGlvbnM+KCgpID0+IHtcbiAgICBjb25zdCBzYXZlZCA9IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudFxuICAgIGlmIChzYXZlZD8uYWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnKSByZXR1cm4gb3B0aW9ucy5teUFnZW50c1xuICAgIGlmIChzYXZlZD8uYWdlbnRzTmF2QWN0aXZlID09PSAnbXlTa2lsbHMnKSByZXR1cm4gb3B0aW9ucy5teVNraWxsc1xuICAgIGNvbnN0IHNhdmVkT3B0aW9uID0gc2F2ZWQ/LmN1cnJlbnRPcHRpb25cbiAgICByZXR1cm4gc2F2ZWRPcHRpb24gJiYgaXNWYWxpZE1haWFQYW5lbE9wdGlvbihzYXZlZE9wdGlvbikgPyAoc2F2ZWRPcHRpb24gYXMgb3B0aW9ucykgOiBvcHRpb25zLmhvbWVcbiAgfSlcbiAgY29uc3QgW2hhc0Vycm9yLCBzZXRIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgLy8gRW4gcHJvamVjdC9jbGllbnQvdGFzazogZWwgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gZGVsIG9yY2hlc3RyYXRvciAobG8gbGltcGnDsyB5IHBhc8OzIHBvclxuICAvLyBlbCBzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzKS4gSGFiaWxpdGEgZWwgYm90w7NuIFwidm9sdmVyXCIgZW4gZWwgaG9tZSBwYXNvIDIgZGUgZXNhc1xuICAvLyBzZWNjaW9uZXMuIFNlIHJlc2V0ZWEgYWwgY2VycmFyL3JlYWJyaXIgZWwgbW9kYWwgKGVsIGNvbXBvbmVudGUgc2UgZGVzbW9udGEpLlxuICBjb25zdCBbZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uLCBzZXREaWRSZXNldENvbnRleHRJblNlY3Rpb25dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHByZXZIYXNQaW5uZWRDb250ZXh0UmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBoYW5kbGVycyA9IHVzZU1lbW8oKCkgPT4gYnVpbGRIYW5kbGVycyhzZXRDdXJyZW50T3B0aW9uLCBzZXRIYXNFcnJvciksIFtdKVxuICBjb25zdCBbc2lkZWJhckhhc0Vycm9yLCBzZXRTaWRlYmFySGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHJlc2V0U2VsZWN0ZWRDaGF0UmVmID0gdXNlUmVmPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0LWJyJyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBtb21lbnQubG9jYWxlKGxhbmcpXG5cbiAgY29uc3Qge1xuICAgIHNlbGVjdEFnZW50LFxuICAgIGNsZWFyQWdlbnQsXG4gICAgc2VjdGlvbixcbiAgICBhZ2VudCxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0YXNrLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGJhbm5lckVudHJ5RmFxLFxuICAgIHNldFRhc2ssXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICAvLyBaLWluZGV4IHBhcmEgdG9vbHRpcHMgZW4gc2VjdGlvbiAndGFzaycgKG1vZGFsIGZsb3RhbnRlIGVsZXZhZG8pXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICdvdmVybGF5JylcblxuICBjb25zdCB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3I6IGFnZW50RXJyb3IsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIHNlYXJjaEN1c3RvbUFnZW50cyxcbiAgICBzZWFyY2hMb2FkaW5nLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfSA9IHVzZUdldEFnZW50cyh7IHNlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgaGFuZGxlR29Ib21lOiBoYW5kbGVycy5ob21lIH0pXG5cbiAgY29uc3QgYWdlbnRzRGF0YVJlZiA9IHVzZVJlZihhZ2VudHMuZGF0YSlcbiAgYWdlbnRzRGF0YVJlZi5jdXJyZW50ID0gYWdlbnRzLmRhdGFcblxuICBjb25zdCB7XG4gICAgbXlTa2lsbHMsXG4gICAgc2hhcmVkU2tpbGxzLFxuICAgIGxvYWRpbmc6IGxvYWRpbmdTa2lsbHMsXG4gICAgaGFuZGxlR2V0U2tpbGxzLFxuICAgIGFkZFNraWxsLFxuICAgIHVwZGF0ZVNraWxsSW5MaXN0LFxuICAgIHJlbW92ZVNraWxsLFxuICB9ID0gdXNlR2V0U2tpbGxzKClcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcblxuICBjb25zdCB1c2VySGFzUGVybWlzc2lvbnMgPVxuICAgICh1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5jcmVhdGUgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmRlbGV0ZSkgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGlzR2xvYmFsU3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJ1xuICAgIGNvbnN0IGlzUHJvamVjdFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09IG51bGwpXG4gICAgY29uc3QgaXNDbGllbnRTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnXG4gICAgY29uc3QgaXNNYWlha2VyID0gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpXG5cbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxscyAmJiBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubXlTa2lsbHNcbiAgICB9XG5cbiAgICAvLyBFbCBvcmNoZXN0cmF0b3IgKE1BSUEpIG11ZXN0cmEgc3UgaG9tZSBjb24gRkFRcy9hY2Npb25lcyBmcmVjdWVudGVzOyBlbCByZXN0byBkZVxuICAgIC8vIGxvcyBnbG9iYWwgc3BlY2lhbGlzdHMgKGNsb25lcyBnbG9iYWxlcyBuby1tYWlha2VyKSBzaWd1ZW4geWVuZG8gZGlyZWN0byBhbCBjaGF0LlxuICAgIGlmIChpc0dsb2JhbFNwZWNpYWxpc3QgJiYgIWlzTWFpYWtlciAmJiBhZ2VudD8udHlwZSAhPT0gJ29yY2hlc3RyYXRvcicgJiYgY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jaGF0XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc1Byb2plY3RTcGVjaWFsaXN0ICYmICFwcm9qZWN0XG4gICAgY29uc3Qgc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzQ2xpZW50U3BlY2lhbGlzdCAmJiAhY2xpZW50XG5cbiAgICBpZiAoc2hvdWxkU2hvd1Byb2plY3RTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucHJvamVjdFNlbGVjdG9yXG4gICAgfVxuICAgIGlmIChzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNsaWVudFNlbGVjdG9yXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50T3B0aW9uXG4gIH0sIFtjdXJyZW50T3B0aW9uLCBwcm9qZWN0LCBjbGllbnQsIGlzTUFJQSwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/Lm5hbWUsIGFnZW50Py50eXBlLCB1c2VyXSlcblxuICBjb25zdCBpc01haWFrZXJBZ2VudFNlbGVjdGVkID0gdXNlTWVtbygoKSA9PiBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhZ2VudCksIFthZ2VudF0pXG5cbiAgY29uc3Qgc2lkZWJhckFnZW50c05hdkFjdGl2ZSA9IHVzZU1lbW8oKCk6ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCAnbXlTa2lsbHMnIHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxscykgcmV0dXJuICdteVNraWxscydcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzKSByZXR1cm4gJ215QWdlbnRzJ1xuICAgIGlmIChpc01haWFrZXJBZ2VudFNlbGVjdGVkKSByZXR1cm4gJ21haWFrZXInXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZF0pXG5cbiAgLyogUmVhY3RpdmFyIGNvbiBsYSBmaWxhIOKAnE1pcyBhZ2VudGVz4oCdIGVuIFNpZGViYXI6IG15QWdlbnRzQ291bnQgcHJvcFxuICBjb25zdCBzaWRlYmFyTXlBZ2VudHNDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBhZ2VudHMuZGF0YS5maWx0ZXIoXG4gICAgICBhID0+ICEoYS50eXBlID09PSAnb3JjaGVzdHJhdG9yJyB8fCAoYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhLm5hbWUgfHwgJycpKSlcbiAgICApXG4gICAgICAubGVuZ3RoXG4gIH0sIFthZ2VudHMuZGF0YV0pXG4gICovXG5cbiAgY29uc3QgYWdlbnRzRmV0Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCBzZWxlY3RvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke0lEX01PREFMX0NIQVRfQUdFTlR9YClcblxuICAvLyBUYXNrIHBhbmVsLCBwbGFubmVyIHkgYmFubmVyIGRlIHByb3llY3RvIGFicmVuIGVuIGZsb3RhbnRlIHBvciBkZWZhdWx0IChubyB0YXBhciBlbCBjb250ZXh0byBkZXRyw6FzKS5cbiAgLy8gRnVlcmEgZGUgZXNvcyBjb250ZXh0b3Mgc2UgcmVzcGV0YSBsYSBwcmVmZXJlbmNpYSBndWFyZGFkYSBlbiBsb2NhbFN0b3JhZ2UuXG4gIGNvbnN0IFtsYXlvdXRNb2RlLCBzZXRMYXlvdXRNb2RlXSA9IHVzZVN0YXRlPE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlPigoKSA9PlxuICAgIHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlKHsgc2VjdGlvbiwgYmFubmVyRW50cnlGYXEgfSlcbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUxheW91dE1vZGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygobW9kZTogTWFpYUNoYXRNb2RhbExheW91dE1vZGUpID0+IHtcbiAgICBzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUobW9kZSlcbiAgICBzZXRMYXlvdXRNb2RlKG1vZGUpXG4gIH0sIFtdKVxuICBjb25zdCBleHBhbmRlZCA9IGxheW91dE1vZGUgPT09ICdmdWxsc2NyZWVuJ1xuICBjb25zdCBpc0Zsb2F0aW5nID0gbGF5b3V0TW9kZSA9PT0gJ2Zsb2F0aW5nJ1xuICBjb25zdCBjb250ZW50V3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2RyYWdQb3NpdGlvbiwgc2V0RHJhZ1Bvc2l0aW9uXSA9IHVzZVN0YXRlPHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGw+KFxuICAgICgpID0+IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uZHJhZ1Bvc2l0aW9uID8/IG51bGxcbiAgKVxuICBjb25zdCB7IHRpbHRNb3Rpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nLCBzYW1wbGVQb2ludGVyTW92ZSwgZW5kUG9pbnRlclRyYWNraW5nIH0gPVxuICAgIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdChpc0Zsb2F0aW5nKVxuICBjb25zdCBkcmFnU3RhdGVSZWYgPSB1c2VSZWY8e1xuICAgIHBvaW50ZXJJZDogbnVtYmVyXG4gICAgb2Zmc2V0WDogbnVtYmVyXG4gICAgb2Zmc2V0WTogbnVtYmVyXG4gIH0gfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGNsYW1wRHJhZ1Bvc2l0aW9uID0gdXNlQ2FsbGJhY2soKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgcmV0dXJuIHsgeCwgeSB9XG4gICAgfVxuXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IG9mZnNldCA9IDE2XG4gICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVyV2lkdGggLSB3aWR0aCAtIG9mZnNldClcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJIZWlnaHQgLSBoZWlnaHQgLSBvZmZzZXQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogTWF0aC5taW4oTWF0aC5tYXgoeCwgb2Zmc2V0KSwgbWF4WCksXG4gICAgICB5OiBNYXRoLm1pbihNYXRoLm1heCh5LCBvZmZzZXQpLCBtYXhZKSxcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHNldERyYWdQb3NpdGlvbihudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHByZXYueCwgcHJldi55KVxuICAgICAgfVxuICAgICAgY29uc3QgcGFkID0gMTZcbiAgICAgIGNvbnN0IHggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkXG4gICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICAgIH0pXG4gIH0sIFtsYXlvdXRNb2RlLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBlbmRQb2ludGVyVHJhY2tpbmcoKVxuICAgICAgaWYgKGRyYWdTdGF0ZVJlZi5jdXJyZW50Py5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnJ1xuXG4gICAgICBpZiAobGF5b3V0TW9kZSA9PT0gJ2Zsb2F0aW5nJyAmJiBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkLCB7IGRyYWdQb3NpdGlvbjogeyB4OiByZWN0LmxlZnQsIHk6IHJlY3QudG9wIH0gfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtlbmRQb2ludGVyVHJhY2tpbmcsIGxheW91dE1vZGUsIHVzZXIuaWRdXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBkcmFnU3RhdGUgPSBkcmFnU3RhdGVSZWYuY3VycmVudFxuICAgICAgaWYgKCFkcmFnU3RhdGUgfHwgZHJhZ1N0YXRlLnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzYW1wbGVQb2ludGVyTW92ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuXG4gICAgICBjb25zdCBuZXh0UG9zaXRpb24gPSBjbGFtcERyYWdQb3NpdGlvbihldmVudC5jbGllbnRYIC0gZHJhZ1N0YXRlLm9mZnNldFgsIGV2ZW50LmNsaWVudFkgLSBkcmFnU3RhdGUub2Zmc2V0WSlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnggPT09IG5leHRQb3NpdGlvbi54ICYmIHByZXYueSA9PT0gbmV4dFBvc2l0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0UG9zaXRpb25cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIHNhbXBsZVBvaW50ZXJNb3ZlXVxuICApXG5cbiAgY29uc3QgcmVzb2x2ZWREcmFnUG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBpZiAoZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgY29uc3QgeCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZCA6IHBhZFxuICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkcmFnUG9zaXRpb24sIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Zsb2F0aW5nIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtyb2xlPVwiYnV0dG9uXCJdLCBbZGF0YS1uby1kcmFnPVwidHJ1ZVwiXScpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgaW5pdGlhbFBvc2l0aW9uID0gcmVzb2x2ZWREcmFnUG9zaXRpb24gPz8gY2xhbXBEcmFnUG9zaXRpb24ocmVjdC5sZWZ0LCByZWN0LnRvcClcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIGluaXRpYWxQb3NpdGlvbi54XG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WSA9IGV2ZW50LmNsaWVudFkgLSBpbml0aWFsUG9zaXRpb24ueVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24oaW5pdGlhbFBvc2l0aW9uKVxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIHBvaW50ZXJJZDogZXZlbnQucG9pbnRlcklkLFxuICAgICAgICBvZmZzZXRYOiBwb2ludGVyT2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogcG9pbnRlck9mZnNldFksXG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJ1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0RHJhZ2dhYmxlKVxuICAgICAgc3RhcnRQb2ludGVyVHJhY2tpbmcoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgaXNGbG9hdGluZywgcmVzb2x2ZWREcmFnUG9zaXRpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3Qgc3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmcsXG4gICAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgJycsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyB8fCBbXSxcbiAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihtZW50aW9ucyAmJiBtZW50aW9ucy5sZW5ndGggPiAwID8geyBtZW50aW9ucyB9IDoge30pLFxuICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgYmFubmVyRmFxQXV0b1NlbnRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbnRpdHlSZWFkeSA9IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/IEJvb2xlYW4ocHJvamVjdD8uaWQpIDogc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyBCb29sZWFuKGNsaWVudD8uaWQpIDogdHJ1ZVxuXG4gICAgaWYgKCFiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSB8fCBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50IHx8IGxvYWRpbmcgfHwgIWFnZW50Py5pZCB8fCAhZW50aXR5UmVhZHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgc3RhcnRDaGF0KFxuICAgICAgYmFubmVyRW50cnlGYXEuZmFxVGl0bGUsXG4gICAgICBbXSxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcUlkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYmFubmVyRW50cnlGYXEuY29udGV4dERhdGFcbiAgICApXG4gIH0sIFtcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxSWQsXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlLFxuICAgIGJhbm5lckVudHJ5RmFxPy5jb250ZXh0RGF0YSxcbiAgICBsb2FkaW5nLFxuICAgIGFnZW50Py5pZCxcbiAgICBhZ2VudD8uZW50aXR5LFxuICAgIHByb2plY3Q/LmlkLFxuICAgIGNsaWVudD8uaWQsXG4gICAgc2VjdGlvbixcbiAgICBzdGFydENoYXQsXG4gIF0pXG5cbiAgY29uc3QgZ29Ub0NoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hhdDogYW55KSA9PiB7XG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmlkID09PSBjaGF0LmFnZW50SWQpXG4gICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgfVxuICAgICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBhZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgZ29Ub0NoYXRSZWYuY3VycmVudCA9IGdvVG9DaGF0XG5cbiAgY29uc3QgaGFuZGxlU2lkZWJhck9wZW5DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAob3BlbjogYm9vbGVhbikgPT4ge1xuICAgICAgc2lkZWJhck9wZW5SZWYuY3VycmVudCA9IG9wZW5cbiAgICAgIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkLCB7IHNpZGViYXJPcGVuOiBvcGVuIH0pXG4gICAgfSxcbiAgICBbdXNlci5pZF1cbiAgKVxuXG4gIGNvbnN0IHN5bmNQYW5lbFNlc3Npb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlzTWluaW1pemVkKSByZXR1cm5cblxuICAgIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkLCB7XG4gICAgICBpc0V4cGFuZGVkOiB0cnVlLFxuICAgICAgY3VycmVudE9wdGlvbixcbiAgICAgIGFnZW50c05hdkFjdGl2ZTogc2lkZWJhckFnZW50c05hdkFjdGl2ZSxcbiAgICAgIGFjdGl2ZUNoYXRJZCxcbiAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCA/PyBudWxsLFxuICAgICAgc2lkZWJhck9wZW46IHNpZGViYXJPcGVuUmVmLmN1cnJlbnQsXG4gICAgICBkcmFnUG9zaXRpb246IGxheW91dE1vZGUgPT09ICdmbG9hdGluZycgPyBkcmFnUG9zaXRpb24gOiBudWxsLFxuICAgICAgaG9zdENvbnRleHQ6IHtcbiAgICAgICAgc2VjdGlvbixcbiAgICAgICAgcHJvamVjdCxcbiAgICAgICAgY2xpZW50LFxuICAgICAgICB0YXNrLFxuICAgICAgICBjaGlwc1Byb2plY3QsXG4gICAgICB9LFxuICAgIH0pXG4gIH0sIFtcbiAgICBhY3RpdmVDaGF0SWQsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBkcmFnUG9zaXRpb24sXG4gICAgaXNNaW5pbWl6ZWQsXG4gICAgbGF5b3V0TW9kZSxcbiAgICBwcm9qZWN0LFxuICAgIHNlY3Rpb24sXG4gICAgc2lkZWJhckFnZW50c05hdkFjdGl2ZSxcbiAgICB0YXNrLFxuICAgIHVzZXIuaWQsXG4gIF0pXG5cbiAgLyoqIExvcyBhZ2VudGVzIHNlIHBpZGVuIHJlY2nDqW4gYWwgYWJyaXIgZWwgcGFuZWw6IGVuIG1vZG8gcGlsbCBubyBoYWNlIGZhbHRhIG5pbmd1bmEgcmVxdWVzdC4gKi9cbiAgY29uc3QgZW5zdXJlQWdlbnRzTG9hZGVkID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmIChhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICBhd2FpdCBoYW5kbGVHZXRBZ2VudHMoKVxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01pbmltaXplZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gc3luY1BhbmVsU2Vzc2lvbigpLCAxNTApXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXIpXG4gIH0sIFtpc01pbmltaXplZCwgc3luY1BhbmVsU2Vzc2lvbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblBhZ2VIaWRlID0gKCkgPT4ge1xuICAgICAgaWYgKCFpc01pbmltaXplZCkge1xuICAgICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICAgIH1cbiAgICB9XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VoaWRlJywgb25QYWdlSGlkZSlcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhZ2VoaWRlJywgb25QYWdlSGlkZSlcbiAgfSwgW2lzTWluaW1pemVkLCBzeW5jUGFuZWxTZXNzaW9uXSlcblxuICBjb25zdCBoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICBzZXRDaGF0Vmlld1Zpc2libGUodHJ1ZSlcbiAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRPcGVuLCB7IG9wdGlvbjogJ21pbmltaXplJyB9KVxuXG4gICAgLy8gZ29Ub0NoYXQgbmVjZXNpdGEgbGEgbGlzdGEgZGUgYWdlbnRlcyBwYXJhIHNlbGVjY2lvbmFyIGVsIGRlIGxhIGNvbnZlcnNhY2nDs24uXG4gICAgZW5zdXJlQWdlbnRzTG9hZGVkKCkudGhlbigoKSA9PiB7XG4gICAgICAvLyBQcmlvcmlkYWQgYWwgcmVhYnJpcjogcHJpbWVyIGNoYXQgc2luIGxlZXIg4oaSIMO6bHRpbWEgY29udmVyc2FjacOzbiBhYmllcnRhIOKGkiBIb21lLlxuICAgICAgY29uc3QgeyBjaGF0cyB9ID0gZ2V0Q2hhdHNTdG9yZVN0YXRlKClcbiAgICAgIGNvbnN0IGxhc3RBY3RpdmVDaGF0SWQgPSByZWFkTGFzdEFjdGl2ZUNoYXRJZCh1c2VyLmlkKVxuICAgICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgICAgY2hhdHMuZmluZChjaGF0ID0+IGNoYXQuaXNSZWFkID09PSBmYWxzZSkgPz9cbiAgICAgICAgKGxhc3RBY3RpdmVDaGF0SWQgPyBjaGF0cy5maW5kKGNoYXQgPT4gY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZCA9PT0gbGFzdEFjdGl2ZUNoYXRJZCkgOiB1bmRlZmluZWQpXG5cbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgZ29Ub0NoYXRSZWYuY3VycmVudD8uKHRhcmdldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdvSG9tZVJlZi5jdXJyZW50Py4oKVxuICAgICAgfVxuXG4gICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgfSlcbiAgfSwgW2FtcGxpdHVkRXZlbnQsIGVuc3VyZUFnZW50c0xvYWRlZCwgZm9jdXNDaGF0SW5wdXQsIHNldENoYXRWaWV3VmlzaWJsZSwgdXNlci5pZF0pXG5cbiAgLyoqXG4gICAqIFRvbWEgY29udHJvbCBkZXNkZSB1biBob3N0IChoZWFkZXIsIHByb3llY3RvLCBjbGllbnRl4oCmKTogYWJyZSBlbCBwYW5lbCwgZGVzY2FydGEgbGFcbiAgICogY29udmVyc2FjacOzbiBhYmllcnRhIHkgYXBsaWNhIGVsIGNvbnRleHRvIGRlbCBob3N0LiBOTyB2dWVsdmUgYSBsYSDDumx0aW1hIGNvbnZlcnNhY2nDs25cbiAgICog4oCUIGVzbyBzw7NsbyBsbyBoYWNlIGVsIHBpbGwgKGBoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZGApLlxuICAgKi9cbiAgY29uc3QgYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3ZlciA9IHVzZUNhbGxiYWNrKFxuICAgIChkZXRhaWw6IE1haWFIb3N0T3BlbkRldGFpbCkgPT4ge1xuICAgICAgY29uc3QgaXNHbG9iYWxIZWFkZXJPcGVuID0gZGV0YWlsLnNlY3Rpb24gPT09ICdoZWFkZXInIHx8IGRldGFpbC5zZWN0aW9uID09PSAncGxhbm5lcidcblxuICAgICAgY2xlYXJNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQpXG4gICAgICBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldElzUmVzdG9yaW5nU2Vzc2lvbihmYWxzZSlcbiAgICAgIHNldElzTWluaW1pemVkKGZhbHNlKVxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG4gICAgICB3cml0ZUxhc3RBY3RpdmVDaGF0SWQodXNlci5pZCwgbnVsbClcblxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgICBzZXREaWRSZXNldENvbnRleHRJblNlY3Rpb24oZmFsc2UpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHVzZUZhcXNTdG9yZS5nZXRTdGF0ZSgpLmNsZWFyRmFxcygpXG4gICAgICBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQ/LigpXG4gICAgICBnZXRDaGF0c1N0b3JlU3RhdGUoKS5zZXRBY3RpdmVDaGF0SWQobnVsbClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFByb2plY3Q/LihkZXRhaWwucHJvamVjdCA/PyBudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0UHJvamVjdD8uKG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsLmNsaWVudCA/PyBudWxsKVxuICAgICAgfSBlbHNlIGlmIChpc0dsb2JhbEhlYWRlck9wZW4pIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKGRldGFpbC50YXNrID8/IG51bGwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGlzR2xvYmFsSGVhZGVyT3Blbikge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgY2xlYXJBZ2VudCgpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5leHRMYXlvdXQgPSByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSh7XG4gICAgICAgIHNlY3Rpb246IGRldGFpbC5zZWN0aW9uIGFzIFNlY3Rpb24sXG4gICAgICAgIGJhbm5lckVudHJ5RmFxOiBkZXRhaWwuZmFxLFxuICAgICAgfSlcbiAgICAgIHNldExheW91dE1vZGUobmV4dExheW91dClcbiAgICAgIHNldERyYWdQb3NpdGlvbihudWxsKVxuXG4gICAgICBjb25zdCBob3N0Q29udGV4dCA9IHtcbiAgICAgICAgc2VjdGlvbjogZGV0YWlsLnNlY3Rpb24gYXMgU2VjdGlvbixcbiAgICAgICAgcHJvamVjdDogZGV0YWlsLnNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snID8gKGRldGFpbC5wcm9qZWN0ID8/IG51bGwpIDogbnVsbCxcbiAgICAgICAgY2xpZW50OiBkZXRhaWwuc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyAoZGV0YWlsLmNsaWVudCA/PyBudWxsKSA6IG51bGwsXG4gICAgICAgIHRhc2s6IGRldGFpbC5zZWN0aW9uID09PSAndGFzaycgPyAoZGV0YWlsLnRhc2sgPz8gbnVsbCkgOiBudWxsLFxuICAgICAgICBjaGlwc1Byb2plY3Q6IG51bGwsXG4gICAgICB9XG5cbiAgICAgIGVuc3VyZUFnZW50c0xvYWRlZCgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICBsZXQgcmVzb2x2ZWRBZ2VudElkOiBzdHJpbmcgfCBudWxsID0gYWdlbnQ/LmlkID8/IG51bGxcblxuICAgICAgICAgIGlmIChpc0dsb2JhbEhlYWRlck9wZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0QWdlbnQgPSBhZ2VudHNEYXRhUmVmLmN1cnJlbnRbMF1cbiAgICAgICAgICAgIGlmIChmaXJzdEFnZW50KSB7XG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QWdlbnQpXG4gICAgICAgICAgICAgIHJlc29sdmVkQWdlbnRJZCA9IGZpcnN0QWdlbnQuaWRcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmVkQWdlbnRJZCA9IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgICAgICAgaXNFeHBhbmRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb246IG9wdGlvbnMuaG9tZSxcbiAgICAgICAgICAgIGFnZW50c05hdkFjdGl2ZTogbnVsbCxcbiAgICAgICAgICAgIGFjdGl2ZUNoYXRJZDogbnVsbCxcbiAgICAgICAgICAgIGFnZW50SWQ6IHJlc29sdmVkQWdlbnRJZCxcbiAgICAgICAgICAgIHNpZGViYXJPcGVuOiBzaWRlYmFyT3BlblJlZi5jdXJyZW50LFxuICAgICAgICAgICAgZHJhZ1Bvc2l0aW9uOiBudWxsLFxuICAgICAgICAgICAgaG9zdENvbnRleHQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbiAgICB9LFxuICAgIFtcbiAgICAgIGFnZW50Py5pZCxcbiAgICAgIGNsZWFyQWdlbnQsXG4gICAgICBlbnN1cmVBZ2VudHNMb2FkZWQsXG4gICAgICBmb2N1c0NoYXRJbnB1dCxcbiAgICAgIHNlbGVjdEFnZW50LFxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlLFxuICAgICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgICAgc2V0Q2xpZW50LFxuICAgICAgc2V0UHJvamVjdCxcbiAgICAgIHNldFRhc2ssXG4gICAgICB1c2VyLmlkLFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlUmVhZHkgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQsXG4gICAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICAgIHN0cmVhbWluZzogYm9vbGVhbixcbiAgICAgIHdyaXRpbmc6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIHNldFNlbmRNZXNzYWdlRnVuY3Rpb24oKCkgPT4gc2VuZE1lc3NhZ2UpXG4gICAgICBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uKCgpID0+IHN0b3BHZW5lcmF0aW9uKVxuICAgICAgc2V0SXNTdHJlYW1pbmcoc3RyZWFtaW5nKVxuICAgICAgc2V0SXNXcml0aW5nKHdyaXRpbmcpXG4gICAgfSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChzZW5kTWVzc2FnZUZ1bmN0aW9uICYmIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICAgIHNlbmRNZXNzYWdlRnVuY3Rpb24obWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzdGFydENoYXQsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgaGFuZGxlR29Ib21lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFNpIGVzdGFtb3MgZW4gdW5hIGNvbnZlcnNhY2nDs24geSB2YW1vcyBhIGhvbWUsIHJlc2V0ZWFyIGluaXRpYWxDaGF0SWQgeSBpbmNyZW1lbnRhciBuZXdDaGF0S2V5XG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgLy8gTm8gY29ydGFtb3MgbGEgZ2VuZXJhY2nDs246IGxhIHNlc2nDs24gc2lndWUgcmVzcG9uZGllbmRvIGVuIGJhY2tncm91bmQuXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAvLyBObyBib3JyYXIgZWwgY2xpZW50ZSBzaSBlcyBhZ2VudGUgZGUgY2xpZW50ZXMgKGlndWFsIHF1ZSBlbCBwcm95ZWN0byBzZSBtYW50aWVuZSlcbiAgICAgIGlmIChhZ2VudD8uZW50aXR5ICE9PSAnY2xpZW50Jykge1xuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfVxuICAgICAgaWYgKHNlY3Rpb24gIT09ICd0YXNrJykge1xuICAgICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgKCFhZ2VudCB8fCBhZ2VudD8uaXNfZGVsZXRlZCB8fCBhZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fCBhZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHwgYWdlbnQ/LnByb2plY3RfZGVsZXRlZCkgJiZcbiAgICAgIGFnZW50cy5kYXRhLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50cy5kYXRhWzBdKVxuICAgIH1cbiAgICAvLyBPcmNoZXN0cmF0b3IgZW4gaG9tZSBnbG9iYWwgKGhlYWRlci9wbGFubmVyKTogYWwgaW5pY2lhciB1biBjaGF0IG51ZXZvIHNlIGRlYmUgdm9sdmVyIGFsIHBhc28gMVxuICAgIC8vIChsaXN0YSBkZSBjb250ZXh0b3MgcmVjaWVudGVzKSwgcG9yIGxvIHF1ZSBoYXkgcXVlIGxpbXBpYXIgdG9kbyBlbCBjb250ZXh0byBwaW5lYWRvLlxuICAgIGlmIChpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJykge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgIH1cbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFtcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgb3B0aW9ucy5jaGF0LFxuICAgIGN1cnJlbnRPcHRpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGFnZW50LFxuICAgIGFnZW50cyxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRUYXNrLFxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24sXG4gICAgc2VjdGlvbixcbiAgXSlcblxuICBnb0hvbWVSZWYuY3VycmVudCA9IGhhbmRsZUdvSG9tZVxuXG4gIGNvbnN0IGhhbmRsZVN0YXJ0TmV3Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBmcm9tTXlBZ2VudHMgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHNcbiAgICBjb25zdCBmcm9tTWFpYWtlckhvbWUgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiBpc01haWFrZXJBZ2VudFNlbGVjdGVkXG5cbiAgICBpZiAoZnJvbU15QWdlbnRzIHx8IGZyb21NYWlha2VySG9tZSkge1xuICAgICAgY29uc3QgZmlyc3RBZ2VudCA9IGFnZW50cy5kYXRhWzBdXG4gICAgICBpZiAoZmlyc3RBZ2VudCkge1xuICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgfVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudD8uKClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaGFuZGxlR29Ib21lKClcbiAgfSwgW1xuICAgIGFnZW50cy5kYXRhLFxuICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbixcbiAgICBoYW5kbGVHb0hvbWUsXG4gICAgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRUYXNrLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgXSlcblxuICBjb25zdCBoYW5kbGVSZXNldENoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbaGFuZGxlR29Ib21lXSlcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIiBkZWwgaGVhZGVyIChzb2xvIG9yY2hlc3RyYXRvcik6XG4gIC8vIC0gRGVzZGUgZWwgY2hhdCAoaGVhZGVyIG8gcHJvamVjdC9jbGllbnQvdGFzayk6IGluaWNpYSB1bmEgY29udmVyc2FjacOzbiBudWV2YSBjb25zZXJ2YW5kbyBlbFxuICAvLyAgIGNvbnRleHRvIHBpbmVhZG8geSB2dWVsdmUgYWwgaG9tZSAocGFzbyAyIGNvbiBGQVFzL0ZVQXMpLlxuICAvLyAtIEVuIGVsIGhvbWUgcGFzbyAyIChGQVFzL0ZVQXMgY29uIGNvbnRleHRvKTogbGltcGlhIGVsIGNvbnRleHRvIHBpbmVhZG8geSB2dWVsdmUgYWwgcGFzbyAxXG4gIC8vICAgKHNlbGVjdG9yIGRlIGNvbnRleHRvcyByZWNpZW50ZXMpLiBFbiBoZWFkZXIgc2llbXByZTsgZW4gcHJvamVjdC9jbGllbnQvdGFzayBzb2xvIHNpIGVsXG4gIC8vICAgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gKGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbikuXG4gIGNvbnN0IGhhbmRsZUJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgdG8gPSByZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uKHNlY3Rpb24sIGFnZW50Py50eXBlLCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIG9wdGlvbnMuaG9tZSlcbiAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRCYWNrLCB7IHRvIH0pXG5cbiAgICAvLyBEZXNkZSBlbCBjaGF0IOKGkiBudWV2YSBjb252ZXJzYWNpw7NuIFNJTiBib3JyYXIgZWwgY29udGV4dG8gcGluZWFkbywgdm9sdmllbmRvIGFsIGhvbWUuXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICAvLyBObyBjb3J0YW1vcyBsYSBnZW5lcmFjacOzbjogbGEgc2VzacOzbiBzaWd1ZSByZXNwb25kaWVuZG8gZW4gYmFja2dyb3VuZC5cbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgICAgfVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEhvbWUgcGFzbyAyIChjb250ZXh0byBwaW5lYWRvKSDihpIgbGltcGlhciBlbCBjb250ZXh0byB5IHZvbHZlciBhbCBwYXNvIDEgKGNvbnRleHRvcyByZWNpZW50ZXMpLlxuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSB8fCBkaWRSZXNldENvbnRleHRJblNlY3Rpb24pKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICB9XG4gIH0sIFtcbiAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24sXG4gICAgc2VjdGlvbixcbiAgICBhZ2VudD8udHlwZSxcbiAgICBhbXBsaXR1ZEV2ZW50LFxuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBkaWRSZXNldENvbnRleHRJblNlY3Rpb24sXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0VGFzayxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gIF0pXG5cbiAgLy8gRGV0ZWN0YSBlbCByZWluaWNpbyBkZSBjb250ZXh0byBlbiBwcm9qZWN0L2NsaWVudC90YXNrOiBjb250ZXh0byBwaW5lYWRvIOKGkiB2YWPDrW8gY29uIGVsXG4gIC8vIG9yY2hlc3RyYXRvciAocC4gZWouIGFsIHJlc2VsZWNjaW9uYXIgTUFJQSBlbiBlbCBsaXN0YWRvKS4gU29sbyBsYSB0cmFuc2ljacOzbiBjdWVudGEsIGFzw60gdW5hXG4gIC8vIGFwZXJ0dXJhIGZyZXNjYSAoY29udGV4dG8gcGluZWFkbyBkZXNkZSBsYSBzZWNjacOzbikgbm8gbG8gYWN0aXZhLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHBpbm5lZCA9ICEhKHRhc2s/LmlkIHx8IGNoaXBzUHJvamVjdD8ucHJvamVjdElkIHx8IGNsaWVudD8uaWQgfHwgcHJvamVjdD8uaWQpXG4gICAgY29uc3Qgd2FzUGlubmVkID0gcHJldkhhc1Bpbm5lZENvbnRleHRSZWYuY3VycmVudFxuICAgIHByZXZIYXNQaW5uZWRDb250ZXh0UmVmLmN1cnJlbnQgPSBwaW5uZWRcbiAgICBpZiAoIWlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIHdhc1Bpbm5lZCAmJiAhcGlubmVkKSB7XG4gICAgICBzZXREaWRSZXNldENvbnRleHRJblNlY3Rpb24odHJ1ZSlcbiAgICB9XG4gIH0sIFt0YXNrPy5pZCwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQsIGNsaWVudD8uaWQsIHByb2plY3Q/LmlkLCBzZWN0aW9uLCBhZ2VudD8udHlwZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbk1lcmdlQ3JlYXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAobmV4dEFnZW50Py5pZCkge1xuICAgICAgICBhZGRBZ2VudChuZXh0QWdlbnQsIHsgbmF2aWdhdGVIb21lOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbYWRkQWdlbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TeW5jRWRpdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghbmV4dEFnZW50Py5pZCkgcmV0dXJuXG4gICAgICB1cGRhdGVBZ2VudChuZXh0QWdlbnQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBuZXh0QWdlbnQuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW3VwZGF0ZUFnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnQ/LmlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5DaGF0VmlldyA9ICgpID0+IHtcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmNoYXQpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBFbCDDrWNvbm8gZGUgTUFJQSBkZWwgaGVhZGVyIGxsZXZhIHNpZW1wcmUgYWwgSG9tZS4gU2kgTUFJQSB5YSBlc3TDoSBtb250YWRhIHBlcm9cbiAgICogbWluaW1pemFkYSwgZWwgaG9zdCBubyBwdWVkZSByZXNvbHZlcmxvIGNhbWJpYW5kbyBgaXNPcGVuYCAoeWEgZXN0w6EgZW4gdHJ1ZSksXG4gICAqIGFzw60gcXVlIGF2aXNhIHBvciBldmVudG8geSBhY8OhIHJlc3RhdXJhbW9zIHkgdmFtb3MgYWwgSG9tZS5cbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkhvbWUgPSAoKSA9PiB7XG4gICAgICBhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyKHtcbiAgICAgICAgc2VjdGlvbjogJ2hlYWRlcicsXG4gICAgICAgIGVudGl0eTogeyBwcm9qZWN0SWQ6IG51bGwsIGNsaWVudElkOiBudWxsIH0sXG4gICAgICB9KVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4taG9tZScsIG9wZW5Ib21lKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4taG9tZScsIG9wZW5Ib21lKVxuICAgIH1cbiAgfSwgW2FwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXJdKVxuXG4gIC8qKlxuICAgKiBPdHJvIGhvc3QgKHByb3llY3RvLCBjbGllbnRlLCBiYW5uZXIsIGhlYWRlcuKApikgcGlkZSBhYnJpciBNQUlBIG1pZW50cmFzIHlhIGhheSB1bmFcbiAgICogaW5zdGFuY2lhIG1vbnRhZGEuIEV4cGFuZGUgc2kgZXN0YWJhIG1pbmltaXphZG8sIGFwbGljYSBlbCBjb250ZXh0byBkZWwgaG9zdCBudWV2b1xuICAgKiB5IHZhIGFsIGhvbWUg4oCUIHNpbiByZXN0YXVyYXIgbGEgY29udmVyc2FjacOzbiBwcmV2aWEgKGVzbyBsbyBoYWNlIGVsIHBpbGwpLlxuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuRnJvbUhvc3QgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8TWFpYUhvc3RPcGVuRGV0YWlsPlxuICAgICAgaWYgKCFkZXRhaWwpIHJldHVyblxuICAgICAgYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3ZlcihkZXRhaWwpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvcGVuRnJvbUhvc3QpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgb3BlbkZyb21Ib3N0KVxuICAgIH1cbiAgfSwgW2FwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXJdKVxuXG4gIC8qKiBNaXNtbyBmbHVqbyBxdWUgQ2hhdEFJTXlBZ2VudHMuaGFuZGxlVXNlQWdlbnQgKyBvbkJhY2sgKGhhbmRsZXJzLmhvbWUpLlxuICAgKiAgRWwgZGV0YWlsIHB1ZWRlIHRyYWVyIG9wY2lvbmFsbWVudGUgYHByb2plY3RgLCBgY2xpZW50YCwgYHRhc2tgIHBhcmEgZmxvd3MgcXVlXG4gICAqICBuZWNlc2l0YW4gcHJlc2VydmFyIGNvbnRleHRvIChlai4gc2VsZWN0b3IgZGUgYWdlbnRlcyBkZXNkZSB1bmEgdGFyZWEpLiBTaSBubyB2aWVuZW4sXG4gICAqICBzZSBtYW50aWVuZSBlbCBjb21wb3J0YW1pZW50byBvcmlnaW5hbCBkZSBsaW1waWFyIHByb2plY3QvY2xpZW50LiAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5OZXdDaGF0V2l0aEFnZW50ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PHtcbiAgICAgICAgYWdlbnQ6IEFnZW50XG4gICAgICAgIHByb2plY3Q/OiBQcm9qZWN0IHwgbnVsbFxuICAgICAgICBjbGllbnQ/OiBDbGllbnQgfCBudWxsXG4gICAgICAgIHRhc2s/OiBUYXNrIHwgbnVsbFxuICAgICAgfT5cbiAgICAgIGNvbnN0IG5leHRBZ2VudCA9IGRldGFpbD8uYWdlbnRcbiAgICAgIGlmICghbmV4dEFnZW50KSByZXR1cm5cblxuICAgICAgc2V0UHJvamVjdChkZXRhaWw/LnByb2plY3QgPz8gbnVsbClcbiAgICAgIHNldENsaWVudD8uKGRldGFpbD8uY2xpZW50ID8/IG51bGwpXG4gICAgICBpZiAoZGV0YWlsPy50YXNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0VGFzaz8uKGRldGFpbC50YXNrKVxuICAgICAgfVxuICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIH1cbiAgfSwgW3NlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IHNraWxsLCB1c2VGaXJzdEFnZW50IH0gPSAoZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8eyBza2lsbDogU2tpbGw7IHVzZUZpcnN0QWdlbnQ/OiBib29sZWFuIH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghc2tpbGwpIHJldHVyblxuXG4gICAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzRGF0YVJlZi5jdXJyZW50WzBdXG4gICAgICBpZiAodXNlRmlyc3RBZ2VudCAmJiBmaXJzdEFnZW50KSB7XG4gICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QWdlbnQpXG4gICAgICB9XG5cbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ21haWEtaW5zZXJ0LXNraWxsLW1lbnRpb24nLCB7IGRldGFpbDogeyBza2lsbCB9IH0pKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIGhhbmRsZVVzZVNraWxsQWZ0ZXJTYXZlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5ULCBoYW5kbGVVc2VTa2lsbEFmdGVyU2F2ZSlcbiAgICB9XG4gIH0sIFtzZWxlY3RBZ2VudF0pXG5cbiAgLy8gTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChhZ2VudF90eXBlL2FnZW50X2VudGl0eSArIGNvbnRleHRvKSwgZW1pdGlkYSBwb3IgdXNlQ2hhdE1lc3NhZ2VzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU2Vzc2lvbk1ldGEgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2dCBhcyBDdXN0b21FdmVudDxTZXNzaW9uTWV0YT5cbiAgICAgIGlmIChkZXRhaWwpIHNldFNlc3Npb25NZXRhKGRldGFpbClcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIG9uU2Vzc2lvbk1ldGEpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCBvblNlc3Npb25NZXRhKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuIGxpbXBpYW1vcyBsYSBtZXRhZGF0YTsgZWwgbG9hZCBkZSBsYSBudWV2YSBzZXNzaW9uIGxhIHZ1ZWx2ZSBhIGVtaXRpci5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTZXNzaW9uTWV0YShudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZF0pXG5cbiAgLy8gQ2FydGVsIFwiY29udGludWFyIGVuIHVuIGNoYXQgbnVldm9cIjogc2UgbXVlc3RyYSBhbCBhYnJpciB1bmEgY29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3lcbiAgLy8gKGFnZW50X3R5cGUgPT09ICdjbG9uZScgY29uIGVudGl0eSBwcm9qZWN0L3Rhc2svY2xpZW50KS4gRWwgaW5wdXQgc2UgcmVlbXBsYXphIHBvciBlbCBjYXJ0ZWwuXG4gIGNvbnN0IGxlZ2FjeUNvbnRleHRTZXNzaW9uID0gdXNlTWVtbzx7IGVudGl0eVR5cGU6IExlZ2FjeUNvbnRleHRFbnRpdHk7IGNvbnRleHROYW1lOiBzdHJpbmcgfSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQpIHJldHVybiBudWxsXG4gICAgaWYgKCFzZXNzaW9uTWV0YSB8fCBzZXNzaW9uTWV0YS5hZ2VudFR5cGUgIT09ICdjbG9uZScpIHJldHVybiBudWxsXG4gICAgY29uc3QgZW50aXR5ID0gc2Vzc2lvbk1ldGEuYWdlbnRFbnRpdHlcbiAgICBpZiAoIWVudGl0eSB8fCAhTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMuaW5jbHVkZXMoZW50aXR5IGFzIExlZ2FjeUNvbnRleHRFbnRpdHkpKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGNvbnRleHROYW1lID1cbiAgICAgIGVudGl0eSA9PT0gJ3Rhc2snID8gc2Vzc2lvbk1ldGEudGFza05hbWUgOiBlbnRpdHkgPT09ICdwcm9qZWN0JyA/IHNlc3Npb25NZXRhLnByb2plY3ROYW1lIDogc2Vzc2lvbk1ldGEuY2xpZW50TmFtZVxuICAgIHJldHVybiB7IGVudGl0eVR5cGU6IGVudGl0eSBhcyBMZWdhY3lDb250ZXh0RW50aXR5LCBjb250ZXh0TmFtZTogY29udGV4dE5hbWUgfHwgJycgfVxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzZXNzaW9uTWV0YV0pXG5cbiAgLy8gTWFyY2EgZWwgYWdlbnRlIGRlIGxhIGNvbnZlcnNhY2nDs24gbGVnYWN5IHBhcmEgcXVlIGhlYWRlciwgc2VsZWN0b3IgeSBhdmF0YXIgbXVlc3RyZW4gZWwgbG9nb1xuICAvLyBNQUlBIHkgZWwgbm9tYnJlIHRhY2hhZG8gKGFnZW50ZSBvYnNvbGV0byksIHNpbiBkZXBlbmRlciBkZWwgYHR5cGVgIHJlc3VlbHRvIGRlIGxhIHNlc2nDs24gdmllamEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxlZ2FjeUNvbnRleHRTZXNzaW9uICYmIGFnZW50ICYmICFhZ2VudC5pc19sZWdhY3lfY29udGV4dCkge1xuICAgICAgc2VsZWN0QWdlbnQoeyAuLi5hZ2VudCwgaXNfbGVnYWN5X2NvbnRleHQ6IHRydWUgfSlcbiAgICB9XG4gIH0sIFtsZWdhY3lDb250ZXh0U2Vzc2lvbiwgYWdlbnQsIHNlbGVjdEFnZW50XSlcblxuICAvLyBBYnJlIHVuIGNoYXQgbnVldm8gY29uIGVsIG9yY2hlc3RyYXRvciBzZXRlYW5kbyBlbCBjb250ZXh0byBkZWwgY2xvbmUgbGVnYWN5IChtaXNtbyBjcml0ZXJpb1xuICAvLyBxdWUgY2xpY2tlYXIgdW4gY29udGV4dG8gcmVjaWVudGUgZW4gZWwgaG9tZSDihpIgcGFzbyAyIGNvbiBGQVFzL2FjY2lvbmVzIGRlIGVzZSBjb250ZXh0bykuXG4gIGNvbnN0IGhhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNlc3Npb25NZXRhKSByZXR1cm5cbiAgICBjb25zdCB7XG4gICAgICBhZ2VudEVudGl0eSxcbiAgICAgIHByb2plY3RJZDogcElkLFxuICAgICAgcHJvamVjdE5hbWU6IHBOYW1lLFxuICAgICAgY2xpZW50SWQ6IGNJZCxcbiAgICAgIGNsaWVudE5hbWU6IGNOYW1lLFxuICAgICAgdGFza0lkOiB0SWQsXG4gICAgICB0YXNrTmFtZTogdE5hbWUsXG4gICAgfSA9IHNlc3Npb25NZXRhXG5cbiAgICBjb25zdCBvcmNoZXN0cmF0b3IgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnb3JjaGVzdHJhdG9yJylcbiAgICBpZiAoIW9yY2hlc3RyYXRvcikgcmV0dXJuXG5cbiAgICAvLyBSZXNldCBkZWwgY2hhdCDihpIgY29udmVyc2FjacOzbiBudWV2YSAobGEgYW50ZXJpb3Igc2lndWUgZW4gYmFja2dyb3VuZClcbiAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG5cbiAgICAvLyBTZXRlYXIgY29udGV4dG8gKG1pc21vIGNyaXRlcmlvIHF1ZSBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0IGRlbCBob21lKVxuICAgIHNldFRhc2s/LihudWxsKVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuXG4gICAgaWYgKGFnZW50RW50aXR5ID09PSAnY2xpZW50JyAmJiBjSWQgIT0gbnVsbCkge1xuICAgICAgc2V0Q2xpZW50Py4oeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgIH0gZWxzZSBpZiAoYWdlbnRFbnRpdHkgPT09ICdwcm9qZWN0JyAmJiBwSWQgIT0gbnVsbCkge1xuICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgIGlkOiBwSWQsXG4gICAgICAgIG5hbWU6IHBOYW1lIHx8ICcnLFxuICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KHsgcHJvamVjdElkOiBTdHJpbmcocElkKSwgcHJvamVjdE5hbWU6IHBOYW1lIHx8ICcnLCBjbGllbnROYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgIH0gZWxzZSBpZiAoYWdlbnRFbnRpdHkgPT09ICd0YXNrJyAmJiB0SWQgIT0gbnVsbCkge1xuICAgICAgc2V0VGFzaz8uKHtcbiAgICAgICAgaWQ6IHRJZCxcbiAgICAgICAgbmFtZTogdE5hbWUgfHwgJycsXG4gICAgICAgIC4uLihwSWQgIT0gbnVsbCA/IHsgcHJvamVjdElkOiBwSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaWYgKGNJZCAhPSBudWxsKSBzZXRDbGllbnQ/Lih7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgICBpZiAocElkICE9IG51bGwpIHtcbiAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgaWQ6IHBJZCxcbiAgICAgICAgICBuYW1lOiBwTmFtZSB8fCAnJyxcbiAgICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7IHByb2plY3RJZDogU3RyaW5nKHBJZCksIHByb2plY3ROYW1lOiBwTmFtZSB8fCAnJywgY2xpZW50TmFtZTogY05hbWUgfHwgJycgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RBZ2VudChvcmNoZXN0cmF0b3IpXG4gICAgc2V0U2Vzc2lvbk1ldGEobnVsbClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgfSwgW3Nlc3Npb25NZXRhLCBhZ2VudHMuZGF0YSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFzaywgc2V0Q2hpcHNQcm9qZWN0LCBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSlcblxuICBjb25zdCBzaG93TmV3Q2hhdCA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGlzTXlBZ2VudHNTZWN0aW9uID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzXG4gIGNvbnN0IGlzTXlTa2lsbHNTZWN0aW9uID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzXG5cbiAgLy8gQm90w7NuIFwidm9sdmVyXCI6IHNvbG8gcGFyYSBlbCBvcmNoZXN0cmF0b3IuXG4gIC8vIC0gRW4gZWwgY2hhdDogZGlzcG9uaWJsZSBlbiB0b2RhcyBsYXMgc2VjY2lvbmVzIChoZWFkZXIgeSBwcm9qZWN0L2NsaWVudC90YXNrKS5cbiAgLy8gLSBFbiBlbCBob21lIHBhc28gMiAoRkFRcy9GVUFzIGNvbiBjb250ZXh0byBwaW5lYWRvKTogZW4gZWwgaGVhZGVyIHNpZW1wcmU7IGVuXG4gIC8vICAgcHJvamVjdC9jbGllbnQvdGFzayBzb2xvIHNpIGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIChwYXPDsyBwb3IgZWwgc2VsZWN0b3IgZGVcbiAgLy8gICBjb250ZXh0b3MgcmVjaWVudGVzKS4gRW4gZWwgcGFzbyAxIChzaW4gY29udGV4dG8pIE5PIHNlIG11ZXN0cmEuXG4gIGNvbnN0IGhhc1Bpbm5lZENvbnRleHQgPSAhISh0YXNrPy5pZCB8fCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBjbGllbnQ/LmlkIHx8IHByb2plY3Q/LmlkKVxuICBjb25zdCBpc0NoYXRWaWV3ID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXRcbiAgY29uc3QgaXNIb21lU3RlcDIgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiBoYXNQaW5uZWRDb250ZXh0XG4gIGNvbnN0IGlzSGVhZGVySG9tZVN0ZXAyID0gaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBpc0hvbWVTdGVwMlxuICBjb25zdCBpc1NlY3Rpb25SZXNldEhvbWVTdGVwMiA9ICFpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGlzSG9tZVN0ZXAyICYmIGRpZFJlc2V0Q29udGV4dEluU2VjdGlvblxuICBjb25zdCBzaG93QmFja0J1dHRvbiA9XG4gICAgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmXG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmcgJiZcbiAgICAoaXNDaGF0VmlldyB8fCBpc0hlYWRlckhvbWVTdGVwMiB8fCBpc1NlY3Rpb25SZXNldEhvbWVTdGVwMilcbiAgY29uc3QgaGFuZGxlT3Blbk1hcmtldHBsYWNlID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBhd2FpdCBlbnN1cmVBZ2VudHNMb2FkZWQoKVxuICAgIGNsZWFyQWdlbnQoKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teUFnZW50cylcbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgYWdlbnRzTmF2QWN0aXZlOiAnbXlBZ2VudHMnLFxuICAgICAgY3VycmVudE9wdGlvbjogb3B0aW9ucy5teUFnZW50cyxcbiAgICAgIGFjdGl2ZUNoYXRJZDogbnVsbCxcbiAgICAgIGFnZW50SWQ6IG51bGwsXG4gICAgfSlcbiAgfSwgW2NsZWFyQWdlbnQsIGVuc3VyZUFnZW50c0xvYWRlZCwgdXNlci5pZF0pXG5cbiAgY29uc3QgaGFuZGxlT3BlblNraWxscyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2xlYXJBZ2VudCgpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15U2tpbGxzKVxuICAgIGhhbmRsZUdldFNraWxscygpXG4gICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHtcbiAgICAgIGFnZW50c05hdkFjdGl2ZTogJ215U2tpbGxzJyxcbiAgICAgIGN1cnJlbnRPcHRpb246IG9wdGlvbnMubXlTa2lsbHMsXG4gICAgfSlcbiAgfSwgW2NsZWFyQWdlbnQsIGhhbmRsZUdldFNraWxscywgdXNlci5pZF0pXG5cbiAgY29uc3QgaGFuZGxlR29Ub01haWFrZXIgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgbGV0IG1haWFrZXJBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoKGE6IEFnZW50KSA9PiBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhKSlcbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZlbnRpdHk9Z2xvYmFsJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhOiBBZ2VudCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYSkpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0VGFzaz8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHtcbiAgICAgIGFnZW50c05hdkFjdGl2ZTogJ21haWFrZXInLFxuICAgICAgY3VycmVudE9wdGlvbjogb3B0aW9ucy5ob21lLFxuICAgICAgYWdlbnRJZDogbWFpYWtlckFnZW50LmlkLFxuICAgICAgYWN0aXZlQ2hhdElkOiBudWxsLFxuICAgIH0pXG4gIH0sIFthZ2VudHMuZGF0YSwgaTE4bi5sYW5ndWFnZSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFzaywgdXNlci5pZF0pXG5cbiAgY29uc3QgbG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHNuYXBzaG90OiBNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscycpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBhZ2VudFRvU2VsZWN0OiBBZ2VudCB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHNuYXBzaG90LmFnZW50SWQgJiYgc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlICE9PSAnbXlBZ2VudHMnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYWdlbnRUb1NlbGVjdCA9IGF3YWl0IGZldGNoQWdlbnREZXRhaWwoc25hcHNob3QuYWdlbnRJZClcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgYWdlbnRUb1NlbGVjdCA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgYXdhaXQgaGFuZGxlR2V0QWdlbnRzKHNuYXBzaG90LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJyA/IHVuZGVmaW5lZCA6IGFnZW50VG9TZWxlY3QpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoYWdlbnRUb1NlbGVjdCAmJiBzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgIT09ICdteUFnZW50cycpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRUb1NlbGVjdClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtoYW5kbGVHZXRBZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgYXBwbHlTZXNzaW9uUmVzdG9yZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChzbmFwc2hvdDogTWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90KSA9PiB7XG4gICAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSh0cnVlKVxuXG4gICAgICBpZiAoc25hcHNob3QuaG9zdENvbnRleHQ/LmNoaXBzUHJvamVjdCkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoc25hcHNob3QuaG9zdENvbnRleHQuY2hpcHNQcm9qZWN0KVxuICAgICAgfVxuXG4gICAgICBpZiAoc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnKSB7XG4gICAgICAgIGF3YWl0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSgpXG4gICAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlID09PSAnbXlTa2lsbHMnKSB7XG4gICAgICAgIGhhbmRsZU9wZW5Ta2lsbHMoKVxuICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIHN5bmNQYW5lbFNlc3Npb24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNuYXBzaG90LmFnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInKSB7XG4gICAgICAgIGF3YWl0IGhhbmRsZUdvVG9NYWlha2VyKClcbiAgICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzbmFwc2hvdC5jdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQgJiYgc25hcHNob3QuYWN0aXZlQ2hhdElkKSB7XG4gICAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgICAgc2V0SW5pdGlhbENoYXRJZChzbmFwc2hvdC5hY3RpdmVDaGF0SWQpXG4gICAgICAgIGdldENoYXRzU3RvcmVTdGF0ZSgpLnNldEFjdGl2ZUNoYXRJZChzbmFwc2hvdC5hY3RpdmVDaGF0SWQpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgICBoYW5kbGVycy5jaGF0KClcbiAgICAgIH0gZWxzZSBpZiAoc25hcHNob3QuY3VycmVudE9wdGlvbiAmJiBpc1ZhbGlkTWFpYVBhbmVsT3B0aW9uKHNuYXBzaG90LmN1cnJlbnRPcHRpb24pKSB7XG4gICAgICAgIHNldEN1cnJlbnRPcHRpb24oc25hcHNob3QuY3VycmVudE9wdGlvbiBhcyBvcHRpb25zKVxuICAgICAgfVxuXG4gICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICB9LFxuICAgIFtcbiAgICAgIGZvY3VzQ2hhdElucHV0LFxuICAgICAgaGFuZGxlR29Ub01haWFrZXIsXG4gICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gICAgICBoYW5kbGVPcGVuU2tpbGxzLFxuICAgICAgaGFuZGxlcnMsXG4gICAgICBzZXRDaGF0Vmlld1Zpc2libGUsXG4gICAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgICBzeW5jUGFuZWxTZXNzaW9uLFxuICAgIF1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc25hcHNob3QgPSBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudFxuICAgIGlmICghc25hcHNob3QgfHwgc2Vzc2lvblJlc3RvcmVTdGFydGVkUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIHNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuXG4gICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG5cbiAgICBjb25zdCBydW5SZXN0b3JlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlKHNuYXBzaG90KVxuICAgICAgICBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgYXdhaXQgYXBwbHlTZXNzaW9uUmVzdG9yZShzbmFwc2hvdClcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldElzUmVzdG9yaW5nU2Vzc2lvbihmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBydW5SZXN0b3JlKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKVxuICB9LCBbYXBwbHlTZXNzaW9uUmVzdG9yZSwgbG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlLCBzZXRDaGF0Vmlld1Zpc2libGVdKVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmVtb3ZlQWdlbnQoYWdlbnRJZClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IGFnZW50SWQpIHtcbiAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudChhZ2VudElkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50Py5pZCwgcmVtb3ZlQWdlbnQsIHNlbGVjdEZpcnN0QWdlbnRdXG4gIClcblxuICAvLyBFbCBmb290ZXIgKGlucHV0KSBzZSBvY3VsdGEgc29sbyBlbiBlbCBob21lIG1hcmtldHBsYWNlIGRlIE1haWFrZXIgKGJyb3dzZSBkZSBhZ2VudGVzKS5cbiAgLy8gRWwgaG9tZSBkZWwgb3JjaGVzdHJhdG9yIHPDrSBwZXJtaXRlIGVzY3JpYmlyLCBhc8OtIHF1ZSBtYW50aWVuZSBlbCBmb290ZXIuXG4gIGNvbnN0IGlzTWFpYWtlckNyZWF0b3JIb21lID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaXNNYWlha2VyQWdlbnRTZWxlY3RlZFxuXG4gIGNvbnN0IG1vZGFsUGFuZWwgPSAoXG4gICAgPD5cbiAgICAgIHt2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uLCB1c2VyKSAmJiAhaXNGbG9hdGluZyA/IChcbiAgICAgICAgPFNpZGViYXJcbiAgICAgICAgICBvbkdvVG9DaGF0PXtnb1RvQ2hhdH1cbiAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRTaWRlYmFySGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgaGFuZGxlR29Ub0hvbWU9e2hhbmRsZUdvSG9tZX1cbiAgICAgICAgICBoYW5kbGVTdGFydE5ld0NoYXQ9e2hhbmRsZVN0YXJ0TmV3Q2hhdH1cbiAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2U9e2hhbmRsZU9wZW5NYXJrZXRwbGFjZX1cbiAgICAgICAgICBzaG93TmV3Q2hhdD17c2hvd05ld0NoYXR9XG4gICAgICAgICAgcmVmZXRjaENoYXRzPXtyZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzPXtzZXRSZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFzRXJyb3I9e3NpZGViYXJIYXNFcnJvcn1cbiAgICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZj17cmVzZXRTZWxlY3RlZENoYXRSZWZ9XG4gICAgICAgICAgYWdlbnRzTmF2QWN0aXZlPXtzaWRlYmFyQWdlbnRzTmF2QWN0aXZlfVxuICAgICAgICAgIGhhbmRsZU9wZW5Ta2lsbHM9e2hhbmRsZU9wZW5Ta2lsbHN9XG4gICAgICAgICAgb25PcGVuTWFpYWtlckNyZWF0b3I9e2hhbmRsZUdvVG9NYWlha2VyfVxuICAgICAgICAgIGlzTGVnYWN5Q29udGV4dFNlc3Npb249eyEhbGVnYWN5Q29udGV4dFNlc3Npb259XG4gICAgICAgICAgaW5pdGlhbE9wZW49e3NhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uc2lkZWJhck9wZW4gPz8gZmFsc2V9XG4gICAgICAgICAgb25PcGVuQ2hhbmdlPXtoYW5kbGVTaWRlYmFyT3BlbkNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFNDQ0FJTUNvbnRlbnQgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30+XG4gICAgICAgIDxDaGF0QUlNb2RhbEhlYWRlclxuICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgb25MYXlvdXRNb2RlQ2hhbmdlPXtoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlfVxuICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICBkcmFnZ2FibGU9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgICBvbkRyYWdFbmQ9e2hhbmRsZURyYWdFbmR9XG4gICAgICAgICAgaGFuZGxlTWluaW1pemU9e2hhbmRsZU1pbmltaXplfVxuICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgaGFzRXJyb3I9eyEhYWdlbnRFcnJvcn1cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGxvYWRpbmdNb3JlPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXthZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgaGFuZGxlUmVzZXRDaGF0PXtoYW5kbGVSZXNldENoYXR9XG4gICAgICAgICAgb25BZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICBsb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgc29ydEFnZW50c0xpc3Q9e3NvcnRBZ2VudHNMaXN0fVxuICAgICAgICAgIGlzTXlBZ2VudHNTZWN0aW9uPXtpc015QWdlbnRzU2VjdGlvbn1cbiAgICAgICAgICBpc015U2tpbGxzU2VjdGlvbj17aXNNeVNraWxsc1NlY3Rpb259XG4gICAgICAgICAgaXNNYWlha2VyU2VjdGlvbj17aXNNYWlha2VyQ3JlYXRvckhvbWV9XG4gICAgICAgICAgc2hvd0JhY2tCdXR0b249e3Nob3dCYWNrQnV0dG9ufVxuICAgICAgICAgIG9uQmFjaz17aGFuZGxlQmFja31cbiAgICAgICAgLz5cbiAgICAgICAge2hhc0Vycm9yID8gKFxuICAgICAgICAgIDxNQUlBRXJyb3IgLz5cbiAgICAgICAgKSA6IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpID8gKFxuICAgICAgICAgIDxDaGF0QUlDb250ZW50XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uPXtjb21wdXRlZEN1cnJlbnRPcHRpb259XG4gICAgICAgICAgICBoYW5kbGVycz17eyAuLi5oYW5kbGVycywgY2hhdDogc3RhcnRDaGF0LCBob21lOiBoYW5kbGVycy5ob21lLCBoYW5kbGVHb0hvbWUgfX1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldEhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgcmVmcz17eyB1c2VySW5pdGlhbE1lc3NhZ2UsIGluaXRpYWxDaGF0SWQgfX1cbiAgICAgICAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeT17aGFuZGxlU2VuZE1lc3NhZ2VSZWFkeX1cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIGZsb2F0aW5nPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICAgIGxvYWRpbmdBZ2VudHM9e2xvYWRpbmd9XG4gICAgICAgICAgICBvbkRlbGV0ZUFnZW50PXtoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50c31cbiAgICAgICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIGhhc01vcmVBZ2VudHM9eyEhYWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgICAgbG9hZGluZ01vcmVBZ2VudHM9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgICAgb25Mb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgICBvbkdvVG9NYWlha2VyPXtoYW5kbGVHb1RvTWFpYWtlcn1cbiAgICAgICAgICAgIG15U2tpbGxzPXtteVNraWxsc31cbiAgICAgICAgICAgIHNoYXJlZFNraWxscz17c2hhcmVkU2tpbGxzfVxuICAgICAgICAgICAgbG9hZGluZ1NraWxscz17bG9hZGluZ1NraWxsc31cbiAgICAgICAgICAgIG9uRGVsZXRlU2tpbGw9e3JlbW92ZVNraWxsfVxuICAgICAgICAgICAgb25TZWFyY2hBZ2VudHM9e3NlYXJjaEN1c3RvbUFnZW50c31cbiAgICAgICAgICAgIHNlYXJjaExvYWRpbmdBZ2VudHM9e3NlYXJjaExvYWRpbmd9XG4gICAgICAgICAgICBhZ2VudEVycm9yPXthZ2VudEVycm9yfVxuICAgICAgICAgICAgaXNSZXN0b3JpbmdTZXNzaW9uPXtpc1Jlc3RvcmluZ1Nlc3Npb259XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UHJvamVjdFN1bW1hcnlDb250ZW50IG9uUmVzdGFydFN1bW1hcnk9e2hhbmRsZXJzLmhvbWV9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHsoKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmICEhYWdlbnRzPy5kYXRhPy5sZW5ndGgpIHx8XG4gICAgICAgICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpICYmXG4gICAgICAgICAgIWlzTWFpYWtlckNyZWF0b3JIb21lICYmXG4gICAgICAgICAgIWhhc0Vycm9yICYmXG4gICAgICAgICAgIWxvYWRpbmcgJiZcbiAgICAgICAgICB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uLCB1c2VyKSAmJiAoXG4gICAgICAgICAgICA8Q2hhdEFpTW9kYWxGb290ZXJcbiAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZT17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGhhbmRsZVN0b3BHZW5lcmF0aW9uPXtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9ufVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIGlzV3JpdGluZz17aXNXcml0aW5nfVxuICAgICAgICAgICAgICBjaGF0SWQ9e2luaXRpYWxDaGF0SWR9XG4gICAgICAgICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgIGxlZ2FjeUNvbnRleHRTZXNzaW9uPXtsZWdhY3lDb250ZXh0U2Vzc2lvbn1cbiAgICAgICAgICAgICAgb25Db250aW51ZUluTmV3Q2hhdD17aGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0fVxuICAgICAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC9TQ0NBSU1Db250ZW50PlxuICAgIDwvPlxuICApXG5cbiAgY29uc3QgY29udGVudFdyYXBwZXIgPSAoXG4gICAgPFNDQ0FJTUNvbnRlbnRXcmFwcGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9IHJlZj17Y29udGVudFdyYXBwZXJSZWZ9PlxuICAgICAge21vZGFsUGFuZWx9XG4gICAgPC9TQ0NBSU1Db250ZW50V3JhcHBlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgc2VsZWN0b3IgJiZcbiAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICA8U0NDQUlNV3JhcHBlclxuICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgIGRyYWdQb3NpdGlvbj17cmVzb2x2ZWREcmFnUG9zaXRpb259XG4gICAgICAgIGVsZXZhdGVkPXtzZWN0aW9uID09PSAndGFzayd9XG4gICAgICAgICRtaW5pbWl6ZWQ9e2lzTWluaW1pemVkfVxuICAgICAgPlxuICAgICAgICA8U0NDQUlNTWluaW1pemVkSGlkZSAkaGlkZGVuPXtpc01pbmltaXplZH0+XG4gICAgICAgICAgPEZsb2F0aW5nUGFuZWxNb3Rpb24gdGlsdD17dGlsdE1vdGlvbn0gZXhwYW5kZWQ9e2V4cGFuZGVkfT5cbiAgICAgICAgICAgIHtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgICA8L0Zsb2F0aW5nUGFuZWxNb3Rpb24+XG4gICAgICAgIDwvU0NDQUlNTWluaW1pemVkSGlkZT5cbiAgICAgICAge2lzTWluaW1pemVkICYmIChcbiAgICAgICAgICA8TWFpYU1pbmltaXplZFBpbGxcbiAgICAgICAgICAgIHVucmVhZENvdW50PXt1bnJlYWRDb3VudH1cbiAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtoYXNBY3RpdmVTdHJlYW19XG4gICAgICAgICAgICBvblJlc3RvcmU9e2hhbmRsZVJlc3RvcmVGcm9tTWluaW1pemVkfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1BZ2VudE1vZGFsXG4gICAgICAgICAgICBhZGRBZ2VudD17YWRkQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudD17dXBkYXRlQWdlbnR9XG4gICAgICAgICAgICByZW1vdmVBZ2VudD17cmVtb3ZlQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudD17c2VsZWN0Rmlyc3RBZ2VudH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtU2tpbGxNb2RhbCBhZGRTa2lsbD17YWRkU2tpbGx9IHVwZGF0ZVNraWxsSW5MaXN0PXt1cGRhdGVTa2lsbEluTGlzdH0gcmVtb3ZlU2tpbGw9e3JlbW92ZVNraWxsfSAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIDxBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgLz59XG4gICAgICAgIDxTbmFja2JhciAvPlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyPixcbiAgICAgIHNlbGVjdG9yXG4gICAgKVxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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
1564
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9DaGF0QUkiLCJjYW5BY2Nlc3NUb1NraWxscyIsIk1BSUFFcnJvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJDaGF0QUlDb250ZW50IiwiYnVpbGRIYW5kbGVycyIsIm9wdGlvbnMiLCJTaWRlYmFyIiwidXNlR2V0QWdlbnRzIiwidXNlR2V0U2tpbGxzIiwidXNlR2xvYmFsQ29udGV4dCIsIkNoYXRBSU1vZGFsSGVhZGVyIiwiU25hY2tiYXIiLCJQcm9qZWN0U3VtbWFyeUNvbnRlbnQiLCJBYm1BZ2VudE1vZGFsIiwiQWJtU2tpbGxNb2RhbCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwiQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1NaW5pbWl6ZWRIaWRlIiwiU0NDQUlNV3JhcHBlciIsIk1haWFNaW5pbWl6ZWRQaWxsIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwidXNlRmFxc1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwidXNlQ2hhdHNTdG9yZSIsInJlYWRMYXN0QWN0aXZlQ2hhdElkIiwid3JpdGVMYXN0QWN0aXZlQ2hhdElkIiwiY2xlYXJNYWlhUGFuZWxTZXNzaW9uIiwiaXNWYWxpZE1haWFQYW5lbE9wdGlvbiIsInBhdGNoTWFpYVBhbmVsU2Vzc2lvbiIsInJlYWRNYWlhUGFuZWxTZXNzaW9uIiwid3JpdGVNYWlhUGFuZWxTZXNzaW9uIiwidXNlU2Vzc2lvbnNTdG9yZSIsImlzQWN0aXZlU2Vzc2lvblN0YXR1cyIsImZldGNoTWFpYSIsImZldGNoQWdlbnREZXRhaWwiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJpc0dsb2JhbE1haWFTZWN0aW9uIiwic2VjdGlvbiIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJhZ2VudFR5cGUiLCJjdXJyZW50T3B0aW9uIiwiaG9tZU9wdGlvbiIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInVzZXIiLCJCb29sZWFuIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIkNoYXRBSU1vZGFsIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSIiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSMiIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjMiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI0IiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI3IiwiX3NhdmVkU2Vzc2lvbk9uTW91bnRSOCIsIl9hZ2VudHMkZGF0YSIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJzYXZlZFNlc3Npb25Pbk1vdW50UmVmIiwiaWQiLCJzaG91bGRSZXN0b3JlRXhwYW5kZWQiLCJjdXJyZW50IiwiaXNFeHBhbmRlZCIsInBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZiIsInNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzUmVzdG9yaW5nU2Vzc2lvbiIsInNldElzUmVzdG9yaW5nU2Vzc2lvbiIsInNpZGViYXJPcGVuUmVmIiwic2lkZWJhck9wZW4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTWluaW1pemVkIiwic2V0SXNNaW5pbWl6ZWQiLCJzZXRDaGF0Vmlld1Zpc2libGUiLCJzdGF0ZSIsInVucmVhZENvdW50IiwiYWN0aXZlQ2hhdElkIiwiaGFzQWN0aXZlU3RyZWFtIiwiT2JqZWN0IiwidmFsdWVzIiwibWV0YSIsInNvbWUiLCJzdGF0dXMiLCJnb1RvQ2hhdFJlZiIsImdvSG9tZVJlZiIsImhhbmRsZU1pbmltaXplIiwiYWlDaGF0TWluaW1pemUiLCJmb2N1c0NoYXRJbnB1dCIsInNldFRpbWVvdXQiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsIl91c2VTdGF0ZTUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGU2IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJzZXNzaW9uTWV0YSIsInNldFNlc3Npb25NZXRhIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTIxIiwic2F2ZWQiLCJhZ2VudHNOYXZBY3RpdmUiLCJteUFnZW50cyIsIm15U2tpbGxzIiwic2F2ZWRPcHRpb24iLCJob21lIiwiX3VzZVN0YXRlMjIiLCJzZXRDdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2IiwiZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwic2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwicHJldkhhc1Bpbm5lZENvbnRleHRSZWYiLCJoYW5kbGVycyIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJzaWRlYmFySGFzRXJyb3IiLCJzZXRTaWRlYmFySGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsImxhbmciLCJsYW5ndWFnZSIsImxvY2FsZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJjbGVhckFnZW50IiwiYWdlbnQiLCJwcm9qZWN0IiwiY2xpZW50IiwidGFzayIsImNoaXBzUHJvamVjdCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJzZWFyY2hMb2FkaW5nIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsImFnZW50c0RhdGFSZWYiLCJkYXRhIiwiX3VzZUdldFNraWxscyIsInNoYXJlZFNraWxscyIsImxvYWRpbmdTa2lsbHMiLCJoYW5kbGVHZXRTa2lsbHMiLCJhZGRTa2lsbCIsInVwZGF0ZVNraWxsSW5MaXN0IiwicmVtb3ZlU2tpbGwiLCJpc01BSUEiLCJ1c2VySGFzUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNyZWF0ZSIsImVkaXQiLCJ1c2VySGFzU2tpbGxzQWNjZXNzIiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsInR5cGUiLCJjaGF0Iiwic2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciIsInNob3VsZFNob3dDbGllbnRTZWxlY3RvciIsInByb2plY3RTZWxlY3RvciIsImNsaWVudFNlbGVjdG9yIiwibmFtZSIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJzaWRlYmFyQWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzRmV0Y2hlZFJlZiIsInNlbGVjdG9yIiwicXVlcnlTZWxlY3RvciIsImNvbmNhdCIsIl91c2VTdGF0ZTI5IiwiX3VzZVN0YXRlMzAiLCJsYXlvdXRNb2RlIiwic2V0TGF5b3V0TW9kZSIsImhhbmRsZUxheW91dE1vZGVDaGFuZ2UiLCJtb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUzMSIsIl9zYXZlZFNlc3Npb25Pbk1vdW50UjUiLCJfc2F2ZWRTZXNzaW9uT25Nb3VudFI2IiwiZHJhZ1Bvc2l0aW9uIiwiX3VzZVN0YXRlMzIiLCJzZXREcmFnUG9zaXRpb24iLCJfdXNlRmxvYXRpbmdQYW5lbERyYWciLCJ0aWx0TW90aW9uIiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJzYW1wbGVQb2ludGVyTW92ZSIsImVuZFBvaW50ZXJUcmFja2luZyIsImRyYWdTdGF0ZVJlZiIsImNsYW1wRHJhZ1Bvc2l0aW9uIiwieCIsInkiLCJjb250ZW50V3JhcHBlciIsIl9jb250ZW50V3JhcHBlciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwibWF4WCIsIk1hdGgiLCJtYXgiLCJpbm5lcldpZHRoIiwibWF4WSIsImlubmVySGVpZ2h0IiwibWluIiwicHJldiIsInBhZCIsImhhbmRsZURyYWdFbmQiLCJldmVudCIsIl9kcmFnU3RhdGVSZWYkY3VycmVudCIsInBvaW50ZXJJZCIsImJvZHkiLCJzdHlsZSIsInVzZXJTZWxlY3QiLCJjdXJzb3IiLCJyZWN0IiwibGVmdCIsInRvcCIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsImluaXRpYWxQb3NpdGlvbiIsInBvaW50ZXJPZmZzZXRYIiwicG9pbnRlck9mZnNldFkiLCJjdXJyZW50VGFyZ2V0Iiwic2V0UG9pbnRlckNhcHR1cmUiLCJwcmV2ZW50RGVmYXVsdCIsImFpQ2hhdERyYWdnYWJsZSIsInN0YXJ0Q2hhdCIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJmYXFUaXRsZSIsInRyaW0iLCJ1bmRlZmluZWQiLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImZpbmQiLCJhZ2VudEl0ZW0iLCJhZ2VudElkIiwiaGFuZGxlU2lkZWJhck9wZW5DaGFuZ2UiLCJvcGVuIiwic3luY1BhbmVsU2Vzc2lvbiIsIl9hZ2VudCRpZCIsImhvc3RDb250ZXh0IiwiZW5zdXJlQWdlbnRzTG9hZGVkIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiYWJydXB0Iiwic3RvcCIsInRpbWVyIiwiY2xlYXJUaW1lb3V0Iiwib25QYWdlSGlkZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWQiLCJhaUNoYXRPcGVuIiwib3B0aW9uIiwidGhlbiIsIl9jaGF0cyRmaW5kIiwiX2dldENoYXRzU3RvcmVTdGF0ZSIsImNoYXRzIiwibGFzdEFjdGl2ZUNoYXRJZCIsImlzUmVhZCIsIl9nb1RvQ2hhdFJlZiRjdXJyZW50IiwiY2FsbCIsIl9nb0hvbWVSZWYkY3VycmVudCIsImFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIiLCJkZXRhaWwiLCJfcmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfZGV0YWlsJHByb2plY3QyIiwiX2RldGFpbCRjbGllbnQyIiwiX2RldGFpbCR0YXNrMiIsImlzR2xvYmFsSGVhZGVyT3BlbiIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwic2V0QWN0aXZlQ2hhdElkIiwiX2RldGFpbCRwcm9qZWN0IiwiX2RldGFpbCRjbGllbnQiLCJfZGV0YWlsJHRhc2siLCJuZXh0TGF5b3V0IiwiZmFxIiwiX2FnZW50JGlkMiIsInJlc29sdmVkQWdlbnRJZCIsImZpcnN0QWdlbnQiLCJoYW5kbGVTZW5kTWVzc2FnZVJlYWR5Iiwic2VuZE1lc3NhZ2UiLCJzdG9wR2VuZXJhdGlvbiIsInN0cmVhbWluZyIsIndyaXRpbmciLCJoYW5kbGVTZW5kTWVzc2FnZSIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJwcm9qZWN0X2RlbGV0ZWQiLCJoYW5kbGVTdGFydE5ld0NoYXQiLCJmcm9tTXlBZ2VudHMiLCJmcm9tTWFpYWtlckhvbWUiLCJfcmVzZXRTZWxlY3RlZENoYXRSZWYyIiwiaGFuZGxlUmVzZXRDaGF0IiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJoYW5kbGVCYWNrIiwidG8iLCJhaUNoYXRCYWNrIiwicGlubmVkIiwicHJvamVjdElkIiwid2FzUGlubmVkIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwib25TeW5jRWRpdGVkQWdlbnQiLCJfcmVmNCIsIm9wZW5DaGF0VmlldyIsIm9wZW5Ib21lIiwiY2xpZW50SWQiLCJvcGVuRnJvbUhvc3QiLCJfcmVmNSIsIm9wZW5OZXdDaGF0V2l0aEFnZW50IiwiX2RldGFpbCRwcm9qZWN0MyIsIl9kZXRhaWwkY2xpZW50MyIsIl9yZWY2IiwiaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUiLCJfcmVmNyIsInNraWxsIiwidXNlRmlyc3RBZ2VudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9uU2Vzc2lvbk1ldGEiLCJfcmVmOCIsImxlZ2FjeUNvbnRleHRTZXNzaW9uIiwiYWdlbnRFbnRpdHkiLCJpbmNsdWRlcyIsImNvbnRleHROYW1lIiwidGFza05hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJlbnRpdHlUeXBlIiwiaXNfbGVnYWN5X2NvbnRleHQiLCJoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQiLCJwSWQiLCJwTmFtZSIsImNJZCIsImNOYW1lIiwidElkIiwidGFza0lkIiwidE5hbWUiLCJvcmNoZXN0cmF0b3IiLCJhIiwiU3RyaW5nIiwic2hvd05ld0NoYXQiLCJpc015QWdlbnRzU2VjdGlvbiIsImlzTXlTa2lsbHNTZWN0aW9uIiwiaGFzUGlubmVkQ29udGV4dCIsImlzQ2hhdFZpZXciLCJpc0hvbWVTdGVwMiIsImlzSGVhZGVySG9tZVN0ZXAyIiwiaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIiLCJzaG93QmFja0J1dHRvbiIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwiaGFuZGxlT3BlblNraWxscyIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTQiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQ0IiwicGF0aCIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwibG9hZEFnZW50c0ZvclNlc3Npb25SZXN0b3JlIiwiX3JlZjEiLCJfY2FsbGVlNSIsInNuYXBzaG90IiwiYWdlbnRUb1NlbGVjdCIsIl90MiIsIl9jb250ZXh0NSIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJhcHBseVNlc3Npb25SZXN0b3JlIiwiX3JlZjEwIiwiX2NhbGxlZTYiLCJfc25hcHNob3QkaG9zdENvbnRleHQiLCJfY29udGV4dDYiLCJfeDIiLCJydW5SZXN0b3JlIiwiX3JlZjExIiwiX2NhbGxlZTciLCJfY29udGV4dDciLCJmaW5pc2giLCJoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyIsImlzTWFpYWtlckNyZWF0b3JIb21lIiwibW9kYWxQYW5lbCIsImNoaWxkcmVuIiwib25Hb1RvQ2hhdCIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsIm9uT3Blbk1haWFrZXJDcmVhdG9yIiwiaXNMZWdhY3lDb250ZXh0U2Vzc2lvbiIsImluaXRpYWxPcGVuIiwib25PcGVuQ2hhbmdlIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaXNNYWlha2VyU2VjdGlvbiIsIm9uQmFjayIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25EZWxldGVTa2lsbCIsIm9uU2VhcmNoQWdlbnRzIiwic2VhcmNoTG9hZGluZ0FnZW50cyIsIm9uUmVzdGFydFN1bW1hcnkiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsIm9uQ29udGludWVJbk5ld0NoYXQiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsIiRtaW5pbWl6ZWQiLCIkaGlkZGVuIiwidGlsdCIsIm9uUmVzdG9yZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9DaGF0QUlNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb0NoYXRBSSwgY2FuQWNjZXNzVG9Ta2lsbHMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdldFNraWxscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2dldFNraWxscydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQsIHR5cGUgU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBDaGF0QUlNb2RhbEhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlcidcbmltcG9ydCB7IFNuYWNrYmFyIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL1NuYWNrQmFyL1NuYWNrYmFyJ1xuaW1wb3J0IHsgUHJvamVjdFN1bW1hcnlDb250ZW50IH0gZnJvbSAnLi4vUHJvamVjdFN1bW1hcnlDb250ZW50J1xuaW1wb3J0IHsgQWJtQWdlbnRNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbE1vZGFsLCBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtU2tpbGxHZW5lcmF0ZU1vZGFsL0FibVNraWxsR2VuZXJhdGVNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1NaW5pbWl6ZWRIaWRlLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBNYWlhTWluaW1pemVkUGlsbCB9IGZyb20gJy4vY29tcG9uZW50cy9NYWlhTWluaW1pemVkUGlsbCdcbmltcG9ydCB7XG4gIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCxcbiAgTWFpYUNoYXRNb2RhbExheW91dE1vZGUsXG4gIHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlLFxuICBzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUsXG59IGZyb20gJy4vbGF5b3V0J1xuaW1wb3J0IHsgRmxvYXRpbmdQYW5lbE1vdGlvbiwgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IH0gZnJvbSAnLi9mbG9hdGluZ1BhbmVsTW90aW9uJ1xuaW1wb3J0IHsgQ2hhdEFpTW9kYWxGb290ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxGb290ZXInXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlLCB1c2VDaGF0c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB0eXBlIHsgQ2hhdExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvY2hhdHNTdG9yZS50eXBlcydcbmltcG9ydCB7IHJlYWRMYXN0QWN0aXZlQ2hhdElkLCB3cml0ZUxhc3RBY3RpdmVDaGF0SWQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9tYWlhTGFzdENoYXRQZXJzaXN0ZW5jZSdcbmltcG9ydCB7XG4gIGNsZWFyTWFpYVBhbmVsU2Vzc2lvbixcbiAgaXNWYWxpZE1haWFQYW5lbE9wdGlvbixcbiAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uLFxuICByZWFkTWFpYVBhbmVsU2Vzc2lvbixcbiAgdHlwZSBNYWlhUGFuZWxTZXNzaW9uU25hcHNob3QsXG4gIHdyaXRlTWFpYVBhbmVsU2Vzc2lvbixcbn0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvbWFpYVBhbmVsU2Vzc2lvblBlcnNpc3RlbmNlJ1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyBpc0FjdGl2ZVNlc3Npb25TdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9ucy50eXBlcydcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIHR5cGUgTWFpYUhvc3RPcGVuRGV0YWlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbWFpYUhvc3RPcGVuJ1xuXG4vKiogTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChlbWl0aWRhIHBvciB1c2VDaGF0TWVzc2FnZXMgYWwgY2FyZ2FyIHVuYSBjb252ZXJzYWNpw7NuKS4gKi9cbnR5cGUgU2Vzc2lvbk1ldGEgPSB7XG4gIGNoYXRJZDogc3RyaW5nXG4gIGFnZW50VHlwZT86IHN0cmluZ1xuICBhZ2VudEVudGl0eT86IHN0cmluZ1xuICBwcm9qZWN0SWQ/OiBudW1iZXJcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXJcbiAgY2xpZW50TmFtZT86IHN0cmluZ1xuICB0YXNrSWQ/OiBudW1iZXJcbiAgdGFza05hbWU/OiBzdHJpbmdcbn1cblxuY29uc3QgTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMgPSBbJ3Byb2plY3QnLCAndGFzaycsICdjbGllbnQnXSBhcyBjb25zdFxudHlwZSBMZWdhY3lDb250ZXh0RW50aXR5ID0gKHR5cGVvZiBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUylbbnVtYmVyXVxuXG50eXBlIEFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9ICdnbG9iYWxfY29udGV4dF9ob21lJyB8ICd0YXNrX2hvbWUnIHwgJ3BsYW5uZXJfaG9tZScgfCAncHJvamVjdF9ob21lJyB8ICdjbGllbnRfaG9tZSdcblxuLyoqIEhvbWUgZ2xvYmFsIGRlbCBvcmNoZXN0cmF0b3IgKHNvbG8gaGVhZGVyKS4gUGxhbm5lciBlcyBob21lIGRlIEZVQXMsIG5vIGRlIGNvbnRleHRvcy4gKi9cbmNvbnN0IGlzR2xvYmFsTWFpYVNlY3Rpb24gPSAoc2VjdGlvbjogU2VjdGlvbik6IGJvb2xlYW4gPT4gc2VjdGlvbiA9PT0gJ2hlYWRlcidcblxuY29uc3QgcmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9IChcbiAgc2VjdGlvbjogU2VjdGlvbixcbiAgYWdlbnRUeXBlOiBBZ2VudFsndHlwZSddIHwgdW5kZWZpbmVkLFxuICBjdXJyZW50T3B0aW9uOiBzdHJpbmcsXG4gIGhvbWVPcHRpb246IHN0cmluZ1xuKTogQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0+IHtcbiAgaWYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiBjdXJyZW50T3B0aW9uID09PSBob21lT3B0aW9uKSB7XG4gICAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xuICB9XG4gIGlmIChzZWN0aW9uID09PSAndGFzaycpIHJldHVybiAndGFza19ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSByZXR1cm4gJ3BsYW5uZXJfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdwcm9qZWN0JykgcmV0dXJuICdwcm9qZWN0X2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAnY2xpZW50JykgcmV0dXJuICdjbGllbnRfaG9tZSdcbiAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xufVxuXG5leHBvcnQgY29uc3QgSURfTU9EQUxfQ0hBVF9BR0VOVCA9ICdtb2RhbHMtcG9ydGFsLW1haWEtY2hhdC1hZ2VudCdcblxuY29uc3QgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUgPSAoc2VjdGlvbjogU2VjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQsIHVzZXI6IFJldHVyblR5cGU8dHlwZW9mIHVzZVVzZXI+KSA9PiB7XG4gIGlmICghc2VjdGlvbiB8fCAhY2FuQWNjZXNzVG9DaGF0QUkodXNlcikpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFBsYW5uZXIgeSB0YXNrIGFicmVuIHNpZW1wcmUgZWwgY2hhdCAoaG9tZSBkZSBGVUFzKSwgbnVuY2EgcmVzdW1lbiBkZSBwcm95ZWN0b3MuXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJykge1xuICAgIHJldHVybiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgfHwgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpXG4gIH1cblxuICByZXR1cm4gQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYgPSB1c2VSZWY8TWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90IHwgbnVsbD4ocmVhZE1haWFQYW5lbFNlc3Npb24odXNlci5pZCkpXG4gIGNvbnN0IHNob3VsZFJlc3RvcmVFeHBhbmRlZCA9IHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uaXNFeHBhbmRlZCA/PyBmYWxzZVxuICBjb25zdCBwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYgPSB1c2VSZWY8TWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90IHwgbnVsbD4oXG4gICAgc2hvdWxkUmVzdG9yZUV4cGFuZGVkID8gc2F2ZWRTZXNzaW9uT25Nb3VudFJlZi5jdXJyZW50IDogbnVsbFxuICApXG4gIGNvbnN0IHNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2lzUmVzdG9yaW5nU2Vzc2lvbiwgc2V0SXNSZXN0b3JpbmdTZXNzaW9uXSA9IHVzZVN0YXRlKCgpID0+IHBlbmRpbmdTZXNzaW9uUmVzdG9yZVJlZi5jdXJyZW50ICE9IG51bGwpXG4gIGNvbnN0IHNpZGViYXJPcGVuUmVmID0gdXNlUmVmKHNhdmVkU2Vzc2lvbk9uTW91bnRSZWYuY3VycmVudD8uc2lkZWJhck9wZW4gPz8gZmFsc2UpXG5cbiAgLy8gVHJhcyBuYXZlZ2FyIGVuIGVsIGhvc3QgKGZ1bGwgcGFnZSByZWxvYWQpLCByZXN0YXVyYW1vcyBlbCBwYW5lbCBzaSBlc3RhYmEgYWJpZXJ0by5cbiAgY29uc3QgW2lzTWluaW1pemVkLCBzZXRJc01pbmltaXplZF0gPSB1c2VTdGF0ZSgoKSA9PiAhc2hvdWxkUmVzdG9yZUV4cGFuZGVkKVxuICBjb25zdCBzZXRDaGF0Vmlld1Zpc2libGUgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldENoYXRWaWV3VmlzaWJsZSlcbiAgY29uc3QgdW5yZWFkQ291bnQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnVucmVhZENvdW50KVxuICBjb25zdCBhY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmFjdGl2ZUNoYXRJZClcbiAgLy8gTG9zIFwiLi4uXCIgZGVsIHBpbGwgc2FsZW4gZGVsIG1vdG9yLCBubyBkZSBpc1N0cmVhbWluZy9pc1dyaXRpbmc6IGVzb3MgcmVmbGVqYW5cbiAgLy8gbGEgc2VzacOzbiBhY3RpdmEgeSBxdWVkYW4gc3RhbGUgY3VhbmRvIHVuYSByZXNwdWVzdGEgdGVybWluYSBlbiBiYWNrZ3JvdW5kLlxuICBjb25zdCBoYXNBY3RpdmVTdHJlYW0gPSB1c2VTZXNzaW9uc1N0b3JlKHN0YXRlID0+XG4gICAgT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhKS5zb21lKG1ldGEgPT4gaXNBY3RpdmVTZXNzaW9uU3RhdHVzKG1ldGEuc3RhdHVzKSlcbiAgKVxuXG4gIC8qKiBnb1RvQ2hhdCAvIGhhbmRsZUdvSG9tZSBzZSBkZWZpbmVuIG3DoXMgYWJham87IGxvcyByZWZzIGV2aXRhbiBkZXBlbmRlciBkZWwgb3JkZW4gZGUgZGVjbGFyYWNpw7NuLiAqL1xuICBjb25zdCBnb1RvQ2hhdFJlZiA9IHVzZVJlZjwoKGNoYXQ6IENoYXRMaXN0SXRlbSkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBnb0hvbWVSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcblxuICAvLyBNb250YSBjZXJyYWRhIHNhbHZvIHJlc3RhdXJhY2nDs24gZGUgc2VzacOzbjogc2kgZWwgcGFuZWwgbm8gZXN0w6EgdmlzaWJsZSwgbGFzIHJlc3B1ZXN0YXNcbiAgLy8gbnVldmFzIHF1ZWRhbiBjb21vIG5vIGxlw61kYXMuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwZW5kaW5nU2Vzc2lvblJlc3RvcmVSZWYuY3VycmVudCkge1xuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKGZhbHNlKVxuICAgIH1cbiAgfSwgW3NldENoYXRWaWV3VmlzaWJsZV0pXG5cbiAgLy8gUGVyc2lzdGltb3MgbGEgY29udmVyc2FjacOzbiBhYmllcnRhIHBhcmEgcG9kZXIgdm9sdmVyIGEgZWxsYSBkZXNkZSBlbCBwaWxsIGRlc3B1w6lzXG4gIC8vIGRlIG5hdmVnYXIgbyByZWZyZXNjYXIuIEVsIHRha2VvdmVyIGRlc2RlIHVuIGhvc3QgbGEgbGltcGlhICh2YSBhbCBIb21lKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYWN0aXZlQ2hhdElkKSB7XG4gICAgICB3cml0ZUxhc3RBY3RpdmVDaGF0SWQodXNlci5pZCwgYWN0aXZlQ2hhdElkKVxuICAgIH1cbiAgfSwgW2FjdGl2ZUNoYXRJZCwgdXNlci5pZF0pXG5cbiAgY29uc3QgaGFuZGxlTWluaW1pemUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0TWluaW1pemUpXG4gICAgc2V0SXNNaW5pbWl6ZWQodHJ1ZSlcbiAgICBzZXRDaGF0Vmlld1Zpc2libGUoZmFsc2UpXG4gICAgd3JpdGVNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHsgaXNFeHBhbmRlZDogZmFsc2UgfSlcbiAgfSwgW2FtcGxpdHVkRXZlbnQsIHNldENoYXRWaWV3VmlzaWJsZSwgdXNlci5pZF0pXG5cbiAgY29uc3QgZm9jdXNDaGF0SW5wdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ21haWEtaW5wdXQtcmVmb2N1cycpKVxuICAgIH0sIDEwMClcbiAgfSwgW10pXG5cbiAgY29uc3QgW3VzZXJJbml0aWFsTWVzc2FnZSwgc2V0VXNlckluaXRpYWxNZXNzYWdlXSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZXNzaW9uTWV0YSwgc2V0U2Vzc2lvbk1ldGFdID0gdXNlU3RhdGU8U2Vzc2lvbk1ldGEgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbl0gPSB1c2VTdGF0ZTxcbiAgICB8ICgoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZClcbiAgICB8IG51bGxcbiAgPihudWxsKVxuICBjb25zdCBbc3RvcEdlbmVyYXRpb25GdW5jdGlvbiwgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbl0gPSB1c2VTdGF0ZTwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNTdHJlYW1pbmcsIHNldElzU3RyZWFtaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZTxvcHRpb25zPigoKSA9PiB7XG4gICAgY29uc3Qgc2F2ZWQgPSBzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnRcbiAgICBpZiAoc2F2ZWQ/LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJykgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICBpZiAoc2F2ZWQ/LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJykgcmV0dXJuIG9wdGlvbnMubXlTa2lsbHNcbiAgICBjb25zdCBzYXZlZE9wdGlvbiA9IHNhdmVkPy5jdXJyZW50T3B0aW9uXG4gICAgcmV0dXJuIHNhdmVkT3B0aW9uICYmIGlzVmFsaWRNYWlhUGFuZWxPcHRpb24oc2F2ZWRPcHRpb24pID8gKHNhdmVkT3B0aW9uIGFzIG9wdGlvbnMpIDogb3B0aW9ucy5ob21lXG4gIH0pXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIGRlbCBvcmNoZXN0cmF0b3IgKGxvIGxpbXBpw7MgeSBwYXPDsyBwb3JcbiAgLy8gZWwgc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEhhYmlsaXRhIGVsIGJvdMOzbiBcInZvbHZlclwiIGVuIGVsIGhvbWUgcGFzbyAyIGRlIGVzYXNcbiAgLy8gc2VjY2lvbmVzLiBTZSByZXNldGVhIGFsIGNlcnJhci9yZWFicmlyIGVsIG1vZGFsIChlbCBjb21wb25lbnRlIHNlIGRlc21vbnRhKS5cbiAgY29uc3QgW2RpZFJlc2V0Q29udGV4dEluU2VjdGlvbiwgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBwcmV2SGFzUGlubmVkQ29udGV4dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IGFnZW50c0RhdGFSZWYgPSB1c2VSZWYoYWdlbnRzLmRhdGEpXG4gIGFnZW50c0RhdGFSZWYuY3VycmVudCA9IGFnZW50cy5kYXRhXG5cbiAgY29uc3Qge1xuICAgIG15U2tpbGxzLFxuICAgIHNoYXJlZFNraWxscyxcbiAgICBsb2FkaW5nOiBsb2FkaW5nU2tpbGxzLFxuICAgIGhhbmRsZUdldFNraWxscyxcbiAgICBhZGRTa2lsbCxcbiAgICB1cGRhdGVTa2lsbEluTGlzdCxcbiAgICByZW1vdmVTa2lsbCxcbiAgfSA9IHVzZUdldFNraWxscygpXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID1cbiAgICAodXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5lZGl0IHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5kZWxldGUpICYmXG4gICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICBjb25zdCB1c2VySGFzU2tpbGxzQWNjZXNzID0gY2FuQWNjZXNzVG9Ta2lsbHModXNlcilcblxuICBjb25zdCBjb21wdXRlZEN1cnJlbnRPcHRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpc0dsb2JhbFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCdcbiAgICBjb25zdCBpc1Byb2plY3RTcGVjaWFsaXN0ID0gaXNNQUlBICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PSBudWxsKVxuICAgIGNvbnN0IGlzQ2xpZW50U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50J1xuICAgIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50KVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMgJiYgY2FuQWNjZXNzVG9Ta2lsbHModXNlcikpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15U2tpbGxzXG4gICAgfVxuXG4gICAgLy8gRWwgb3JjaGVzdHJhdG9yIChNQUlBKSBtdWVzdHJhIHN1IGhvbWUgY29uIEZBUXMvYWNjaW9uZXMgZnJlY3VlbnRlczsgZWwgcmVzdG8gZGVcbiAgICAvLyBsb3MgZ2xvYmFsIHNwZWNpYWxpc3RzIChjbG9uZXMgZ2xvYmFsZXMgbm8tbWFpYWtlcikgc2lndWVuIHllbmRvIGRpcmVjdG8gYWwgY2hhdC5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgYWdlbnQ/LnR5cGUgIT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lLCBhZ2VudD8udHlwZSwgdXNlcl0pXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oKCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpLCBbYWdlbnRdKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKCgpOiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgJ215U2tpbGxzJyB8IG51bGwgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMpIHJldHVybiAnbXlTa2lsbHMnXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykgcmV0dXJuICdteUFnZW50cydcbiAgICBpZiAoaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkgcmV0dXJuICdtYWlha2VyJ1xuICAgIHJldHVybiBudWxsXG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRdKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSkpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCwgcGxhbm5lciB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEZ1ZXJhIGRlIGVzb3MgY29udGV4dG9zIHNlIHJlc3BldGEgbGEgcHJlZmVyZW5jaWEgZ3VhcmRhZGEgZW4gbG9jYWxTdG9yYWdlLlxuICBjb25zdCBbbGF5b3V0TW9kZSwgc2V0TGF5b3V0TW9kZV0gPSB1c2VTdGF0ZTxNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZT4oKCkgPT5cbiAgICByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSh7IHNlY3Rpb24sIGJhbm5lckVudHJ5RmFxIH0pXG4gIClcblxuICBjb25zdCBoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgc2V0U3RvcmVkTWFpYUNoYXRMYXlvdXRNb2RlKG1vZGUpXG4gICAgc2V0TGF5b3V0TW9kZShtb2RlKVxuICB9LCBbXSlcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihcbiAgICAoKSA9PiBzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnQ/LmRyYWdQb3NpdGlvbiA/PyBudWxsXG4gIClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcblxuICAgICAgaWYgKGxheW91dE1vZGUgPT09ICdmbG9hdGluZycgJiYgY29udGVudFdyYXBwZXJSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBkcmFnUG9zaXRpb246IHsgeDogcmVjdC5sZWZ0LCB5OiByZWN0LnRvcCB9IH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbZW5kUG9pbnRlclRyYWNraW5nLCBsYXlvdXRNb2RlLCB1c2VyLmlkXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRHJhZ01vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgZHJhZ1N0YXRlID0gZHJhZ1N0YXRlUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZHJhZ1N0YXRlIHx8IGRyYWdTdGF0ZS5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2FtcGxlUG9pbnRlck1vdmUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcblxuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uID0gY2xhbXBEcmFnUG9zaXRpb24oZXZlbnQuY2xpZW50WCAtIGRyYWdTdGF0ZS5vZmZzZXRYLCBldmVudC5jbGllbnRZIC0gZHJhZ1N0YXRlLm9mZnNldFkpXG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgICAgaWYgKHByZXYgJiYgcHJldi54ID09PSBuZXh0UG9zaXRpb24ueCAmJiBwcmV2LnkgPT09IG5leHRQb3NpdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dFBvc2l0aW9uXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBzYW1wbGVQb2ludGVyTW92ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgaWYgKGRyYWdQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBjb25zdCBwYWQgPSAxNlxuICAgIGNvbnN0IHggPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWQgOiBwYWRcbiAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICB9LCBbbGF5b3V0TW9kZSwgZHJhZ1Bvc2l0aW9uLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNGbG9hdGluZyB8fCBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgaWYgKHRhcmdldC5jbG9zZXN0KCdidXR0b24sIGEsIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbcm9sZT1cImJ1dHRvblwiXSwgW2RhdGEtbm8tZHJhZz1cInRydWVcIl0nKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID8/IGNsYW1wRHJhZ1Bvc2l0aW9uKHJlY3QubGVmdCwgcmVjdC50b3ApXG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WCA9IGV2ZW50LmNsaWVudFggLSBpbml0aWFsUG9zaXRpb24ueFxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gaW5pdGlhbFBvc2l0aW9uLnlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKGluaXRpYWxQb3NpdGlvbilcbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0ge1xuICAgICAgICBwb2ludGVySWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgb2Zmc2V0WDogcG9pbnRlck9mZnNldFgsXG4gICAgICAgIG9mZnNldFk6IHBvaW50ZXJPZmZzZXRZLFxuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZydcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdERyYWdnYWJsZSlcbiAgICAgIHN0YXJ0UG9pbnRlclRyYWNraW5nKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIGlzRmxvYXRpbmcsIHJlc29sdmVkRHJhZ1Bvc2l0aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IHN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2Uoe1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMgfHwgW10sXG4gICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4obWVudGlvbnMgJiYgbWVudGlvbnMubGVuZ3RoID4gMCA/IHsgbWVudGlvbnMgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4oc2NJZCA/IHsgc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZW50aXR5UmVhZHkgPSBzZWN0aW9uID09PSAncHJvamVjdCcgPyBCb29sZWFuKHByb2plY3Q/LmlkKSA6IHNlY3Rpb24gPT09ICdjbGllbnQnID8gQm9vbGVhbihjbGllbnQ/LmlkKSA6IHRydWVcblxuICAgIGlmICghYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlPy50cmltKCkgfHwgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCB8fCBsb2FkaW5nIHx8ICFhZ2VudD8uaWQgfHwgIWVudGl0eVJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHN0YXJ0Q2hhdChcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcVRpdGxlLFxuICAgICAgW10sXG4gICAgICBiYW5uZXJFbnRyeUZhcS5mYXFJZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmNvbnRleHREYXRhXG4gICAgKVxuICB9LCBbXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcUlkLFxuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZSxcbiAgICBiYW5uZXJFbnRyeUZhcT8uY29udGV4dERhdGEsXG4gICAgbG9hZGluZyxcbiAgICBhZ2VudD8uaWQsXG4gICAgYWdlbnQ/LmVudGl0eSxcbiAgICBwcm9qZWN0Py5pZCxcbiAgICBjbGllbnQ/LmlkLFxuICAgIHNlY3Rpb24sXG4gICAgc3RhcnRDaGF0LFxuICBdKVxuXG4gIGNvbnN0IGdvVG9DaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgICAgY29uc3Qgc2VsZWN0ZWRBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5pZCA9PT0gY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGdvVG9DaGF0UmVmLmN1cnJlbnQgPSBnb1RvQ2hhdFxuXG4gIGNvbnN0IGhhbmRsZVNpZGViYXJPcGVuQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgIHNpZGViYXJPcGVuUmVmLmN1cnJlbnQgPSBvcGVuXG4gICAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwgeyBzaWRlYmFyT3Blbjogb3BlbiB9KVxuICAgIH0sXG4gICAgW3VzZXIuaWRdXG4gIClcblxuICBjb25zdCBzeW5jUGFuZWxTZXNzaW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpc01pbmltaXplZCkgcmV0dXJuXG5cbiAgICBwYXRjaE1haWFQYW5lbFNlc3Npb24odXNlci5pZCwge1xuICAgICAgaXNFeHBhbmRlZDogdHJ1ZSxcbiAgICAgIGN1cnJlbnRPcHRpb24sXG4gICAgICBhZ2VudHNOYXZBY3RpdmU6IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUsXG4gICAgICBhY3RpdmVDaGF0SWQsXG4gICAgICBhZ2VudElkOiBhZ2VudD8uaWQgPz8gbnVsbCxcbiAgICAgIHNpZGViYXJPcGVuOiBzaWRlYmFyT3BlblJlZi5jdXJyZW50LFxuICAgICAgZHJhZ1Bvc2l0aW9uOiBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnID8gZHJhZ1Bvc2l0aW9uIDogbnVsbCxcbiAgICAgIGhvc3RDb250ZXh0OiB7XG4gICAgICAgIHNlY3Rpb24sXG4gICAgICAgIHByb2plY3QsXG4gICAgICAgIGNsaWVudCxcbiAgICAgICAgdGFzayxcbiAgICAgICAgY2hpcHNQcm9qZWN0LFxuICAgICAgfSxcbiAgICB9KVxuICB9LCBbXG4gICAgYWN0aXZlQ2hhdElkLFxuICAgIGFnZW50Py5pZCxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgY2xpZW50LFxuICAgIGN1cnJlbnRPcHRpb24sXG4gICAgZHJhZ1Bvc2l0aW9uLFxuICAgIGlzTWluaW1pemVkLFxuICAgIGxheW91dE1vZGUsXG4gICAgcHJvamVjdCxcbiAgICBzZWN0aW9uLFxuICAgIHNpZGViYXJBZ2VudHNOYXZBY3RpdmUsXG4gICAgdGFzayxcbiAgICB1c2VyLmlkLFxuICBdKVxuXG4gIC8qKiBMb3MgYWdlbnRlcyBzZSBwaWRlbiByZWNpw6luIGFsIGFicmlyIGVsIHBhbmVsOiBlbiBtb2RvIHBpbGwgbm8gaGFjZSBmYWx0YSBuaW5ndW5hIHJlcXVlc3QuICovXG4gIGNvbnN0IGVuc3VyZUFnZW50c0xvYWRlZCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgYXdhaXQgaGFuZGxlR2V0QWdlbnRzKClcbiAgfSwgW2hhbmRsZUdldEFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNaW5pbWl6ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHN5bmNQYW5lbFNlc3Npb24oKSwgMTUwKVxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKVxuICB9LCBbaXNNaW5pbWl6ZWQsIHN5bmNQYW5lbFNlc3Npb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25QYWdlSGlkZSA9ICgpID0+IHtcbiAgICAgIGlmICghaXNNaW5pbWl6ZWQpIHtcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICB9XG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIG9uUGFnZUhpZGUpXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIG9uUGFnZUhpZGUpXG4gIH0sIFtpc01pbmltaXplZCwgc3luY1BhbmVsU2Vzc2lvbl0pXG5cbiAgY29uc3QgaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNNaW5pbWl6ZWQoZmFsc2UpXG4gICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0T3BlbiwgeyBvcHRpb246ICdtaW5pbWl6ZScgfSlcblxuICAgIC8vIGdvVG9DaGF0IG5lY2VzaXRhIGxhIGxpc3RhIGRlIGFnZW50ZXMgcGFyYSBzZWxlY2Npb25hciBlbCBkZSBsYSBjb252ZXJzYWNpw7NuLlxuICAgIGVuc3VyZUFnZW50c0xvYWRlZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gUHJpb3JpZGFkIGFsIHJlYWJyaXI6IHByaW1lciBjaGF0IHNpbiBsZWVyIOKGkiDDumx0aW1hIGNvbnZlcnNhY2nDs24gYWJpZXJ0YSDihpIgSG9tZS5cbiAgICAgIGNvbnN0IHsgY2hhdHMgfSA9IGdldENoYXRzU3RvcmVTdGF0ZSgpXG4gICAgICBjb25zdCBsYXN0QWN0aXZlQ2hhdElkID0gcmVhZExhc3RBY3RpdmVDaGF0SWQodXNlci5pZClcbiAgICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICAgIGNoYXRzLmZpbmQoY2hhdCA9PiBjaGF0LmlzUmVhZCA9PT0gZmFsc2UpID8/XG4gICAgICAgIChsYXN0QWN0aXZlQ2hhdElkID8gY2hhdHMuZmluZChjaGF0ID0+IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQgPT09IGxhc3RBY3RpdmVDaGF0SWQpIDogdW5kZWZpbmVkKVxuXG4gICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgIGdvVG9DaGF0UmVmLmN1cnJlbnQ/Lih0YXJnZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnb0hvbWVSZWYuY3VycmVudD8uKClcbiAgICAgIH1cblxuICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgIH0pXG4gIH0sIFthbXBsaXR1ZEV2ZW50LCBlbnN1cmVBZ2VudHNMb2FkZWQsIGZvY3VzQ2hhdElucHV0LCBzZXRDaGF0Vmlld1Zpc2libGUsIHVzZXIuaWRdKVxuXG4gIC8qKlxuICAgKiBUb21hIGNvbnRyb2wgZGVzZGUgdW4gaG9zdCAoaGVhZGVyLCBwcm95ZWN0bywgY2xpZW50ZeKApik6IGFicmUgZWwgcGFuZWwsIGRlc2NhcnRhIGxhXG4gICAqIGNvbnZlcnNhY2nDs24gYWJpZXJ0YSB5IGFwbGljYSBlbCBjb250ZXh0byBkZWwgaG9zdC4gTk8gdnVlbHZlIGEgbGEgw7psdGltYSBjb252ZXJzYWNpw7NuXG4gICAqIOKAlCBlc28gc8OzbG8gbG8gaGFjZSBlbCBwaWxsIChgaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWRgKS5cbiAgICovXG4gIGNvbnN0IGFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZGV0YWlsOiBNYWlhSG9zdE9wZW5EZXRhaWwpID0+IHtcbiAgICAgIGNvbnN0IGlzR2xvYmFsSGVhZGVyT3BlbiA9IGRldGFpbC5zZWN0aW9uID09PSAnaGVhZGVyJyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3BsYW5uZXInXG5cbiAgICAgIGNsZWFyTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkKVxuICAgICAgcGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRJc1Jlc3RvcmluZ1Nlc3Npb24oZmFsc2UpXG4gICAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSh0cnVlKVxuICAgICAgd3JpdGVMYXN0QWN0aXZlQ2hhdElkKHVzZXIuaWQsIG51bGwpXG5cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKGZhbHNlKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50Py4oKVxuICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKG51bGwpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgICBzZXRQcm9qZWN0Py4oZGV0YWlsLnByb2plY3QgPz8gbnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFByb2plY3Q/LihudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKGRldGFpbC5jbGllbnQgPz8gbnVsbClcbiAgICAgIH0gZWxzZSBpZiAoaXNHbG9iYWxIZWFkZXJPcGVuKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFRhc2s/LihkZXRhaWwudGFzayA/PyBudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChpc0dsb2JhbEhlYWRlck9wZW4pIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIGNsZWFyQWdlbnQoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0TGF5b3V0ID0gcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUoe1xuICAgICAgICBzZWN0aW9uOiBkZXRhaWwuc2VjdGlvbiBhcyBTZWN0aW9uLFxuICAgICAgICBiYW5uZXJFbnRyeUZhcTogZGV0YWlsLmZhcSxcbiAgICAgIH0pXG4gICAgICBzZXRMYXlvdXRNb2RlKG5leHRMYXlvdXQpXG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcblxuICAgICAgY29uc3QgaG9zdENvbnRleHQgPSB7XG4gICAgICAgIHNlY3Rpb246IGRldGFpbC5zZWN0aW9uIGFzIFNlY3Rpb24sXG4gICAgICAgIHByb2plY3Q6IGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJyA/IChkZXRhaWwucHJvamVjdCA/PyBudWxsKSA6IG51bGwsXG4gICAgICAgIGNsaWVudDogZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnID8gKGRldGFpbC5jbGllbnQgPz8gbnVsbCkgOiBudWxsLFxuICAgICAgICB0YXNrOiBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snID8gKGRldGFpbC50YXNrID8/IG51bGwpIDogbnVsbCxcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBudWxsLFxuICAgICAgfVxuXG4gICAgICBlbnN1cmVBZ2VudHNMb2FkZWQoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgbGV0IHJlc29sdmVkQWdlbnRJZDogc3RyaW5nIHwgbnVsbCA9IGFnZW50Py5pZCA/PyBudWxsXG5cbiAgICAgICAgICBpZiAoaXNHbG9iYWxIZWFkZXJPcGVuKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzRGF0YVJlZi5jdXJyZW50WzBdXG4gICAgICAgICAgICBpZiAoZmlyc3RBZ2VudCkge1xuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgICAgICAgICByZXNvbHZlZEFnZW50SWQgPSBmaXJzdEFnZW50LmlkXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlZEFnZW50SWQgPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHtcbiAgICAgICAgICAgIGlzRXhwYW5kZWQ6IHRydWUsXG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLmhvbWUsXG4gICAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU6IG51bGwsXG4gICAgICAgICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgICAgICAgICBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQsXG4gICAgICAgICAgICBzaWRlYmFyT3Blbjogc2lkZWJhck9wZW5SZWYuY3VycmVudCxcbiAgICAgICAgICAgIGRyYWdQb3NpdGlvbjogbnVsbCxcbiAgICAgICAgICAgIGhvc3RDb250ZXh0LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gICAgfSxcbiAgICBbXG4gICAgICBhZ2VudD8uaWQsXG4gICAgICBjbGVhckFnZW50LFxuICAgICAgZW5zdXJlQWdlbnRzTG9hZGVkLFxuICAgICAgZm9jdXNDaGF0SW5wdXQsXG4gICAgICBzZWxlY3RBZ2VudCxcbiAgICAgIHNldENoYXRWaWV3VmlzaWJsZSxcbiAgICAgIHNldENoaXBzUHJvamVjdCxcbiAgICAgIHNldENsaWVudCxcbiAgICAgIHNldFByb2plY3QsXG4gICAgICBzZXRUYXNrLFxuICAgICAgdXNlci5pZCxcbiAgICBdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZVJlYWR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgc2VuZE1lc3NhZ2U6IChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc3RhcnRDaGF0LCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdvSG9tZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBTaSBlc3RhbW9zIGVuIHVuYSBjb252ZXJzYWNpw7NuIHkgdmFtb3MgYSBob21lLCByZXNldGVhciBpbml0aWFsQ2hhdElkIHkgaW5jcmVtZW50YXIgbmV3Q2hhdEtleVxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIC8vIE5vIGNvcnRhbW9zIGxhIGdlbmVyYWNpw7NuOiBsYSBzZXNpw7NuIHNpZ3VlIHJlc3BvbmRpZW5kbyBlbiBiYWNrZ3JvdW5kLlxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChzZWN0aW9uICE9PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgLy8gT3JjaGVzdHJhdG9yIGVuIGhvbWUgZ2xvYmFsIChoZWFkZXIvcGxhbm5lcik6IGFsIGluaWNpYXIgdW4gY2hhdCBudWV2byBzZSBkZWJlIHZvbHZlciBhbCBwYXNvIDFcbiAgICAvLyAobGlzdGEgZGUgY29udGV4dG9zIHJlY2llbnRlcyksIHBvciBsbyBxdWUgaGF5IHF1ZSBsaW1waWFyIHRvZG8gZWwgY29udGV4dG8gcGluZWFkby5cbiAgICBpZiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0VGFzayxcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLFxuICAgIHNlY3Rpb24sXG4gIF0pXG5cbiAgZ29Ib21lUmVmLmN1cnJlbnQgPSBoYW5kbGVHb0hvbWVcblxuICBjb25zdCBoYW5kbGVTdGFydE5ld0NoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZnJvbU15QWdlbnRzID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzXG4gICAgY29uc3QgZnJvbU1haWFrZXJIb21lID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaXNNYWlha2VyQWdlbnRTZWxlY3RlZFxuXG4gICAgaWYgKGZyb21NeUFnZW50cyB8fCBmcm9tTWFpYWtlckhvbWUpIHtcbiAgICAgIGNvbnN0IGZpcnN0QWdlbnQgPSBhZ2VudHMuZGF0YVswXVxuICAgICAgaWYgKGZpcnN0QWdlbnQpIHtcbiAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgICAgc2VsZWN0QWdlbnQoZmlyc3RBZ2VudClcbiAgICAgIH1cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQ/LigpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtcbiAgICBhZ2VudHMuZGF0YSxcbiAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24sXG4gICAgaGFuZGxlR29Ib21lLFxuICAgIGlzTWFpYWtlckFnZW50U2VsZWN0ZWQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0VGFzayxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gIF0pXG5cbiAgY29uc3QgaGFuZGxlUmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgaGFuZGxlR29Ib21lKClcbiAgfSwgW2hhbmRsZUdvSG9tZV0pXG5cbiAgLy8gQm90w7NuIFwidm9sdmVyXCIgZGVsIGhlYWRlciAoc29sbyBvcmNoZXN0cmF0b3IpOlxuICAvLyAtIERlc2RlIGVsIGNoYXQgKGhlYWRlciBvIHByb2plY3QvY2xpZW50L3Rhc2spOiBpbmljaWEgdW5hIGNvbnZlcnNhY2nDs24gbnVldmEgY29uc2VydmFuZG8gZWxcbiAgLy8gICBjb250ZXh0byBwaW5lYWRvIHkgdnVlbHZlIGFsIGhvbWUgKHBhc28gMiBjb24gRkFRcy9GVUFzKS5cbiAgLy8gLSBFbiBlbCBob21lIHBhc28gMiAoRkFRcy9GVUFzIGNvbiBjb250ZXh0byk6IGxpbXBpYSBlbCBjb250ZXh0byBwaW5lYWRvIHkgdnVlbHZlIGFsIHBhc28gMVxuICAvLyAgIChzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzKS4gRW4gaGVhZGVyIHNpZW1wcmU7IGVuIHByb2plY3QvY2xpZW50L3Rhc2sgc29sbyBzaSBlbFxuICAvLyAgIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIChkaWRSZXNldENvbnRleHRJblNlY3Rpb24pLlxuICBjb25zdCBoYW5kbGVCYWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHRvID0gcmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbihzZWN0aW9uLCBhZ2VudD8udHlwZSwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBvcHRpb25zLmhvbWUpXG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QmFjaywgeyB0byB9KVxuXG4gICAgLy8gRGVzZGUgZWwgY2hhdCDihpIgbnVldmEgY29udmVyc2FjacOzbiBTSU4gYm9ycmFyIGVsIGNvbnRleHRvIHBpbmVhZG8sIHZvbHZpZW5kbyBhbCBob21lLlxuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgLy8gTm8gY29ydGFtb3MgbGEgZ2VuZXJhY2nDs246IGxhIHNlc2nDs24gc2lndWUgcmVzcG9uZGllbmRvIGVuIGJhY2tncm91bmQuXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICAgIH1cbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBIb21lIHBhc28gMiAoY29udGV4dG8gcGluZWFkbykg4oaSIGxpbXBpYXIgZWwgY29udGV4dG8geSB2b2x2ZXIgYWwgcGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzKS5cbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgfHwgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKSkge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgfVxuICB9LCBbXG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQ/LnR5cGUsXG4gICAgYW1wbGl0dWRFdmVudCxcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uLFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICBdKVxuXG4gIC8vIERldGVjdGEgZWwgcmVpbmljaW8gZGUgY29udGV4dG8gZW4gcHJvamVjdC9jbGllbnQvdGFzazogY29udGV4dG8gcGluZWFkbyDihpIgdmFjw61vIGNvbiBlbFxuICAvLyBvcmNoZXN0cmF0b3IgKHAuIGVqLiBhbCByZXNlbGVjY2lvbmFyIE1BSUEgZW4gZWwgbGlzdGFkbykuIFNvbG8gbGEgdHJhbnNpY2nDs24gY3VlbnRhLCBhc8OtIHVuYVxuICAvLyBhcGVydHVyYSBmcmVzY2EgKGNvbnRleHRvIHBpbmVhZG8gZGVzZGUgbGEgc2VjY2nDs24pIG5vIGxvIGFjdGl2YS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwaW5uZWQgPSAhISh0YXNrPy5pZCB8fCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBjbGllbnQ/LmlkIHx8IHByb2plY3Q/LmlkKVxuICAgIGNvbnN0IHdhc1Bpbm5lZCA9IHByZXZIYXNQaW5uZWRDb250ZXh0UmVmLmN1cnJlbnRcbiAgICBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50ID0gcGlubmVkXG4gICAgaWYgKCFpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiB3YXNQaW5uZWQgJiYgIXBpbm5lZCkge1xuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKHRydWUpXG4gICAgfVxuICB9LCBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBjbGllbnQ/LmlkLCBwcm9qZWN0Py5pZCwgc2VjdGlvbiwgYWdlbnQ/LnR5cGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25NZXJnZUNyZWF0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKG5leHRBZ2VudD8uaWQpIHtcbiAgICAgICAgYWRkQWdlbnQobmV4dEFnZW50LCB7IG5hdmlnYXRlSG9tZTogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW2FkZEFnZW50XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU3luY0VkaXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAoIW5leHRBZ2VudD8uaWQpIHJldHVyblxuICAgICAgdXBkYXRlQWdlbnQobmV4dEFnZW50KVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gbmV4dEFnZW50LmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFt1cGRhdGVBZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50Py5pZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuQ2hhdFZpZXcgPSAoKSA9PiB7XG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5jaGF0KVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKipcbiAgICogRWwgw61jb25vIGRlIE1BSUEgZGVsIGhlYWRlciBsbGV2YSBzaWVtcHJlIGFsIEhvbWUuIFNpIE1BSUEgeWEgZXN0w6EgbW9udGFkYSBwZXJvXG4gICAqIG1pbmltaXphZGEsIGVsIGhvc3Qgbm8gcHVlZGUgcmVzb2x2ZXJsbyBjYW1iaWFuZG8gYGlzT3BlbmAgKHlhIGVzdMOhIGVuIHRydWUpLFxuICAgKiBhc8OtIHF1ZSBhdmlzYSBwb3IgZXZlbnRvIHkgYWPDoSByZXN0YXVyYW1vcyB5IHZhbW9zIGFsIEhvbWUuXG4gICAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5Ib21lID0gKCkgPT4ge1xuICAgICAgYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3Zlcih7XG4gICAgICAgIHNlY3Rpb246ICdoZWFkZXInLFxuICAgICAgICBlbnRpdHk6IHsgcHJvamVjdElkOiBudWxsLCBjbGllbnRJZDogbnVsbCB9LFxuICAgICAgfSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWhvbWUnLCBvcGVuSG9tZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWhvbWUnLCBvcGVuSG9tZSlcbiAgICB9XG4gIH0sIFthcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyXSlcblxuICAvKipcbiAgICogT3RybyBob3N0IChwcm95ZWN0bywgY2xpZW50ZSwgYmFubmVyLCBoZWFkZXLigKYpIHBpZGUgYWJyaXIgTUFJQSBtaWVudHJhcyB5YSBoYXkgdW5hXG4gICAqIGluc3RhbmNpYSBtb250YWRhLiBFeHBhbmRlIHNpIGVzdGFiYSBtaW5pbWl6YWRvLCBhcGxpY2EgZWwgY29udGV4dG8gZGVsIGhvc3QgbnVldm9cbiAgICogeSB2YSBhbCBob21lIOKAlCBzaW4gcmVzdGF1cmFyIGxhIGNvbnZlcnNhY2nDs24gcHJldmlhIChlc28gbG8gaGFjZSBlbCBwaWxsKS5cbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkZyb21Ib3N0ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PE1haWFIb3N0T3BlbkRldGFpbD5cbiAgICAgIGlmICghZGV0YWlsKSByZXR1cm5cbiAgICAgIGFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIoZGV0YWlsKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgb3BlbkZyb21Ib3N0KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIG9wZW5Gcm9tSG9zdClcbiAgICB9XG4gIH0sIFthcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyXSlcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIENoYXRBSU15QWdlbnRzLmhhbmRsZVVzZUFnZW50ICsgb25CYWNrIChoYW5kbGVycy5ob21lKS5cbiAgICogIEVsIGRldGFpbCBwdWVkZSB0cmFlciBvcGNpb25hbG1lbnRlIGBwcm9qZWN0YCwgYGNsaWVudGAsIGB0YXNrYCBwYXJhIGZsb3dzIHF1ZVxuICAgKiAgbmVjZXNpdGFuIHByZXNlcnZhciBjb250ZXh0byAoZWouIHNlbGVjdG9yIGRlIGFnZW50ZXMgZGVzZGUgdW5hIHRhcmVhKS4gU2kgbm8gdmllbmVuLFxuICAgKiAgc2UgbWFudGllbmUgZWwgY29tcG9ydGFtaWVudG8gb3JpZ2luYWwgZGUgbGltcGlhciBwcm9qZWN0L2NsaWVudC4gKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuTmV3Q2hhdFdpdGhBZ2VudCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDx7XG4gICAgICAgIGFnZW50OiBBZ2VudFxuICAgICAgICBwcm9qZWN0PzogUHJvamVjdCB8IG51bGxcbiAgICAgICAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICAgICAgICB0YXNrPzogVGFzayB8IG51bGxcbiAgICAgIH0+XG4gICAgICBjb25zdCBuZXh0QWdlbnQgPSBkZXRhaWw/LmFnZW50XG4gICAgICBpZiAoIW5leHRBZ2VudCkgcmV0dXJuXG5cbiAgICAgIHNldFByb2plY3QoZGV0YWlsPy5wcm9qZWN0ID8/IG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihkZXRhaWw/LmNsaWVudCA/PyBudWxsKVxuICAgICAgaWYgKGRldGFpbD8udGFzayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNldFRhc2s/LihkZXRhaWwudGFzaylcbiAgICAgIH1cbiAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCBvcGVuTmV3Q2hhdFdpdGhBZ2VudClcbiAgICB9XG4gIH0sIFtzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVVzZVNraWxsQWZ0ZXJTYXZlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbCwgdXNlRmlyc3RBZ2VudCB9ID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50PHsgc2tpbGw6IFNraWxsOyB1c2VGaXJzdEFnZW50PzogYm9vbGVhbiB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAoIXNraWxsKSByZXR1cm5cblxuICAgICAgY29uc3QgZmlyc3RBZ2VudCA9IGFnZW50c0RhdGFSZWYuY3VycmVudFswXVxuICAgICAgaWYgKHVzZUZpcnN0QWdlbnQgJiYgZmlyc3RBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgfVxuXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdtYWlhLWluc2VydC1za2lsbC1tZW50aW9uJywgeyBkZXRhaWw6IHsgc2tpbGwgfSB9KSlcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ21haWEtaW5wdXQtcmVmb2N1cycpKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5ULCBoYW5kbGVVc2VTa2lsbEFmdGVyU2F2ZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwgaGFuZGxlVXNlU2tpbGxBZnRlclNhdmUpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnRdKVxuXG4gIC8vIE1ldGFkYXRhIGRlIGxhIHNlc3Npb24gYWJpZXJ0YSAoYWdlbnRfdHlwZS9hZ2VudF9lbnRpdHkgKyBjb250ZXh0byksIGVtaXRpZGEgcG9yIHVzZUNoYXRNZXNzYWdlcy5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblNlc3Npb25NZXRhID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldnQgYXMgQ3VzdG9tRXZlbnQ8U2Vzc2lvbk1ldGE+XG4gICAgICBpZiAoZGV0YWlsKSBzZXRTZXNzaW9uTWV0YShkZXRhaWwpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCBvblNlc3Npb25NZXRhKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWNoYXQtc2Vzc2lvbi1tZXRhJywgb25TZXNzaW9uTWV0YSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIEFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbiBsaW1waWFtb3MgbGEgbWV0YWRhdGE7IGVsIGxvYWQgZGUgbGEgbnVldmEgc2Vzc2lvbiBsYSB2dWVsdmUgYSBlbWl0aXIuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2Vzc2lvbk1ldGEobnVsbClcbiAgfSwgW2luaXRpYWxDaGF0SWRdKVxuXG4gIC8vIENhcnRlbCBcImNvbnRpbnVhciBlbiB1biBjaGF0IG51ZXZvXCI6IHNlIG11ZXN0cmEgYWwgYWJyaXIgdW5hIGNvbnZlcnNhY2nDs24gZGUgdW4gY2xvbmUgbGVnYWN5XG4gIC8vIChhZ2VudF90eXBlID09PSAnY2xvbmUnIGNvbiBlbnRpdHkgcHJvamVjdC90YXNrL2NsaWVudCkuIEVsIGlucHV0IHNlIHJlZW1wbGF6YSBwb3IgZWwgY2FydGVsLlxuICBjb25zdCBsZWdhY3lDb250ZXh0U2Vzc2lvbiA9IHVzZU1lbW88eyBlbnRpdHlUeXBlOiBMZWdhY3lDb250ZXh0RW50aXR5OyBjb250ZXh0TmFtZTogc3RyaW5nIH0gfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0KSByZXR1cm4gbnVsbFxuICAgIGlmICghc2Vzc2lvbk1ldGEgfHwgc2Vzc2lvbk1ldGEuYWdlbnRUeXBlICE9PSAnY2xvbmUnKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGVudGl0eSA9IHNlc3Npb25NZXRhLmFnZW50RW50aXR5XG4gICAgaWYgKCFlbnRpdHkgfHwgIUxFR0FDWV9DT05URVhUX0VOVElUSUVTLmluY2x1ZGVzKGVudGl0eSBhcyBMZWdhY3lDb250ZXh0RW50aXR5KSkgcmV0dXJuIG51bGxcbiAgICBjb25zdCBjb250ZXh0TmFtZSA9XG4gICAgICBlbnRpdHkgPT09ICd0YXNrJyA/IHNlc3Npb25NZXRhLnRhc2tOYW1lIDogZW50aXR5ID09PSAncHJvamVjdCcgPyBzZXNzaW9uTWV0YS5wcm9qZWN0TmFtZSA6IHNlc3Npb25NZXRhLmNsaWVudE5hbWVcbiAgICByZXR1cm4geyBlbnRpdHlUeXBlOiBlbnRpdHkgYXMgTGVnYWN5Q29udGV4dEVudGl0eSwgY29udGV4dE5hbWU6IGNvbnRleHROYW1lIHx8ICcnIH1cbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2Vzc2lvbk1ldGFdKVxuXG4gIC8vIE1hcmNhIGVsIGFnZW50ZSBkZSBsYSBjb252ZXJzYWNpw7NuIGxlZ2FjeSBwYXJhIHF1ZSBoZWFkZXIsIHNlbGVjdG9yIHkgYXZhdGFyIG11ZXN0cmVuIGVsIGxvZ29cbiAgLy8gTUFJQSB5IGVsIG5vbWJyZSB0YWNoYWRvIChhZ2VudGUgb2Jzb2xldG8pLCBzaW4gZGVwZW5kZXIgZGVsIGB0eXBlYCByZXN1ZWx0byBkZSBsYSBzZXNpw7NuIHZpZWphLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsZWdhY3lDb250ZXh0U2Vzc2lvbiAmJiBhZ2VudCAmJiAhYWdlbnQuaXNfbGVnYWN5X2NvbnRleHQpIHtcbiAgICAgIHNlbGVjdEFnZW50KHsgLi4uYWdlbnQsIGlzX2xlZ2FjeV9jb250ZXh0OiB0cnVlIH0pXG4gICAgfVxuICB9LCBbbGVnYWN5Q29udGV4dFNlc3Npb24sIGFnZW50LCBzZWxlY3RBZ2VudF0pXG5cbiAgLy8gQWJyZSB1biBjaGF0IG51ZXZvIGNvbiBlbCBvcmNoZXN0cmF0b3Igc2V0ZWFuZG8gZWwgY29udGV4dG8gZGVsIGNsb25lIGxlZ2FjeSAobWlzbW8gY3JpdGVyaW9cbiAgLy8gcXVlIGNsaWNrZWFyIHVuIGNvbnRleHRvIHJlY2llbnRlIGVuIGVsIGhvbWUg4oaSIHBhc28gMiBjb24gRkFRcy9hY2Npb25lcyBkZSBlc2UgY29udGV4dG8pLlxuICBjb25zdCBoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzZXNzaW9uTWV0YSkgcmV0dXJuXG4gICAgY29uc3Qge1xuICAgICAgYWdlbnRFbnRpdHksXG4gICAgICBwcm9qZWN0SWQ6IHBJZCxcbiAgICAgIHByb2plY3ROYW1lOiBwTmFtZSxcbiAgICAgIGNsaWVudElkOiBjSWQsXG4gICAgICBjbGllbnROYW1lOiBjTmFtZSxcbiAgICAgIHRhc2tJZDogdElkLFxuICAgICAgdGFza05hbWU6IHROYW1lLFxuICAgIH0gPSBzZXNzaW9uTWV0YVxuXG4gICAgY29uc3Qgb3JjaGVzdHJhdG9yID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpXG4gICAgaWYgKCFvcmNoZXN0cmF0b3IpIHJldHVyblxuXG4gICAgLy8gUmVzZXQgZGVsIGNoYXQg4oaSIGNvbnZlcnNhY2nDs24gbnVldmEgKGxhIGFudGVyaW9yIHNpZ3VlIGVuIGJhY2tncm91bmQpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuXG4gICAgLy8gU2V0ZWFyIGNvbnRleHRvIChtaXNtbyBjcml0ZXJpbyBxdWUgaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCBkZWwgaG9tZSlcbiAgICBzZXRUYXNrPy4obnVsbClcbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcgJiYgY0lkICE9IG51bGwpIHtcbiAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAncHJvamVjdCcgJiYgcElkICE9IG51bGwpIHtcbiAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICBpZDogcElkLFxuICAgICAgICBuYW1lOiBwTmFtZSB8fCAnJyxcbiAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIHNldENoaXBzUHJvamVjdCh7IHByb2plY3RJZDogU3RyaW5nKHBJZCksIHByb2plY3ROYW1lOiBwTmFtZSB8fCAnJywgY2xpZW50TmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAndGFzaycgJiYgdElkICE9IG51bGwpIHtcbiAgICAgIHNldFRhc2s/Lih7XG4gICAgICAgIGlkOiB0SWQsXG4gICAgICAgIG5hbWU6IHROYW1lIHx8ICcnLFxuICAgICAgICAuLi4ocElkICE9IG51bGwgPyB7IHByb2plY3RJZDogcElkIH0gOiB7fSksXG4gICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGlmIChjSWQgIT0gbnVsbCkgc2V0Q2xpZW50Py4oeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgICAgaWYgKHBJZCAhPSBudWxsKSB7XG4gICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgIGlkOiBwSWQsXG4gICAgICAgICAgbmFtZTogcE5hbWUgfHwgJycsXG4gICAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QoeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0QWdlbnQob3JjaGVzdHJhdG9yKVxuICAgIHNldFNlc3Npb25NZXRhKG51bGwpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gIH0sIFtzZXNzaW9uTWV0YSwgYWdlbnRzLmRhdGEsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCwgc3RvcEdlbmVyYXRpb25GdW5jdGlvbl0pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBpc015QWdlbnRzU2VjdGlvbiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuICBjb25zdCBpc015U2tpbGxzU2VjdGlvbiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxsc1xuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiOiBzb2xvIHBhcmEgZWwgb3JjaGVzdHJhdG9yLlxuICAvLyAtIEVuIGVsIGNoYXQ6IGRpc3BvbmlibGUgZW4gdG9kYXMgbGFzIHNlY2Npb25lcyAoaGVhZGVyIHkgcHJvamVjdC9jbGllbnQvdGFzaykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8gcGluZWFkbyk6IGVuIGVsIGhlYWRlciBzaWVtcHJlOyBlblxuICAvLyAgIHByb2plY3QvY2xpZW50L3Rhc2sgc29sbyBzaSBlbCB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAocGFzw7MgcG9yIGVsIHNlbGVjdG9yIGRlXG4gIC8vICAgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGVsIHBhc28gMSAoc2luIGNvbnRleHRvKSBOTyBzZSBtdWVzdHJhLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNDaGF0VmlldyA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGlzSG9tZVN0ZXAyID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaGFzUGlubmVkQ29udGV4dFxuICBjb25zdCBpc0hlYWRlckhvbWVTdGVwMiA9IGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgaXNIb21lU3RlcDJcbiAgY29uc3QgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIgPSAhaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBpc0hvbWVTdGVwMiAmJiBkaWRSZXNldENvbnRleHRJblNlY3Rpb25cbiAgY29uc3Qgc2hvd0JhY2tCdXR0b24gPVxuICAgIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nICYmXG4gICAgKGlzQ2hhdFZpZXcgfHwgaXNIZWFkZXJIb21lU3RlcDIgfHwgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIpXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgYXdhaXQgZW5zdXJlQWdlbnRzTG9hZGVkKClcbiAgICBjbGVhckFnZW50KClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlBZ2VudHMpXG4gICAgcGF0Y2hNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQsIHtcbiAgICAgIGFnZW50c05hdkFjdGl2ZTogJ215QWdlbnRzJyxcbiAgICAgIGN1cnJlbnRPcHRpb246IG9wdGlvbnMubXlBZ2VudHMsXG4gICAgICBhY3RpdmVDaGF0SWQ6IG51bGwsXG4gICAgICBhZ2VudElkOiBudWxsLFxuICAgIH0pXG4gIH0sIFtjbGVhckFnZW50LCBlbnN1cmVBZ2VudHNMb2FkZWQsIHVzZXIuaWRdKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Ta2lsbHMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNsZWFyQWdlbnQoKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teVNraWxscylcbiAgICBoYW5kbGVHZXRTa2lsbHMoKVxuICAgIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkLCB7XG4gICAgICBhZ2VudHNOYXZBY3RpdmU6ICdteVNraWxscycsXG4gICAgICBjdXJyZW50T3B0aW9uOiBvcHRpb25zLm15U2tpbGxzLFxuICAgIH0pXG4gIH0sIFtjbGVhckFnZW50LCBoYW5kbGVHZXRTa2lsbHMsIHVzZXIuaWRdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYSkpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGEpKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldFRhc2s/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICAgIHBhdGNoTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkLCB7XG4gICAgICBhZ2VudHNOYXZBY3RpdmU6ICdtYWlha2VyJyxcbiAgICAgIGN1cnJlbnRPcHRpb246IG9wdGlvbnMuaG9tZSxcbiAgICAgIGFnZW50SWQ6IG1haWFrZXJBZ2VudC5pZCxcbiAgICAgIGFjdGl2ZUNoYXRJZDogbnVsbCxcbiAgICB9KVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHVzZXIuaWRdKVxuXG4gIGNvbnN0IGxvYWRBZ2VudHNGb3JTZXNzaW9uUmVzdG9yZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChzbmFwc2hvdDogTWFpYVBhbmVsU2Vzc2lvblNuYXBzaG90KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBpZiAoc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlID09PSAnbXlTa2lsbHMnKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgYWdlbnRUb1NlbGVjdDogQWdlbnQgfCB1bmRlZmluZWRcbiAgICAgIGlmIChzbmFwc2hvdC5hZ2VudElkICYmIHNuYXBzaG90LmFnZW50c05hdkFjdGl2ZSAhPT0gJ215QWdlbnRzJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGFnZW50VG9TZWxlY3QgPSBhd2FpdCBmZXRjaEFnZW50RGV0YWlsKHNuYXBzaG90LmFnZW50SWQpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGFnZW50VG9TZWxlY3QgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIGF3YWl0IGhhbmRsZUdldEFnZW50cyhzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cycgPyB1bmRlZmluZWQgOiBhZ2VudFRvU2VsZWN0KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGFnZW50VG9TZWxlY3QgJiYgc25hcHNob3QuYWdlbnRzTmF2QWN0aXZlICE9PSAnbXlBZ2VudHMnKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KGFnZW50VG9TZWxlY3QpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlR2V0QWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGFwcGx5U2Vzc2lvblJlc3RvcmUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoc25hcHNob3Q6IE1haWFQYW5lbFNlc3Npb25TbmFwc2hvdCkgPT4ge1xuICAgICAgc2V0SXNNaW5pbWl6ZWQoZmFsc2UpXG4gICAgICBzZXRDaGF0Vmlld1Zpc2libGUodHJ1ZSlcblxuICAgICAgaWYgKHNuYXBzaG90Lmhvc3RDb250ZXh0Py5jaGlwc1Byb2plY3QpIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHNuYXBzaG90Lmhvc3RDb250ZXh0LmNoaXBzUHJvamVjdClcbiAgICAgIH1cblxuICAgICAgaWYgKHNuYXBzaG90LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJykge1xuICAgICAgICBhd2FpdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UoKVxuICAgICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgICAgIHN5bmNQYW5lbFNlc3Npb24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNuYXBzaG90LmFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJykge1xuICAgICAgICBoYW5kbGVPcGVuU2tpbGxzKClcbiAgICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgICAgICBzeW5jUGFuZWxTZXNzaW9uKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzbmFwc2hvdC5hZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJykge1xuICAgICAgICBhd2FpdCBoYW5kbGVHb1RvTWFpYWtlcigpXG4gICAgICAgIGZvY3VzQ2hhdElucHV0KClcbiAgICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc25hcHNob3QuY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0ICYmIHNuYXBzaG90LmFjdGl2ZUNoYXRJZCkge1xuICAgICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICAgIHNldEluaXRpYWxDaGF0SWQoc25hcHNob3QuYWN0aXZlQ2hhdElkKVxuICAgICAgICBnZXRDaGF0c1N0b3JlU3RhdGUoKS5zZXRBY3RpdmVDaGF0SWQoc25hcHNob3QuYWN0aXZlQ2hhdElkKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgICB9IGVsc2UgaWYgKHNuYXBzaG90LmN1cnJlbnRPcHRpb24gJiYgaXNWYWxpZE1haWFQYW5lbE9wdGlvbihzbmFwc2hvdC5jdXJyZW50T3B0aW9uKSkge1xuICAgICAgICBzZXRDdXJyZW50T3B0aW9uKHNuYXBzaG90LmN1cnJlbnRPcHRpb24gYXMgb3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgICAgc3luY1BhbmVsU2Vzc2lvbigpXG4gICAgfSxcbiAgICBbXG4gICAgICBmb2N1c0NoYXRJbnB1dCxcbiAgICAgIGhhbmRsZUdvVG9NYWlha2VyLFxuICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlLFxuICAgICAgaGFuZGxlT3BlblNraWxscyxcbiAgICAgIGhhbmRsZXJzLFxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlLFxuICAgICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgICAgc3luY1BhbmVsU2Vzc2lvbixcbiAgICBdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNuYXBzaG90ID0gcGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmLmN1cnJlbnRcbiAgICBpZiAoIXNuYXBzaG90IHx8IHNlc3Npb25SZXN0b3JlU3RhcnRlZFJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBzZXNzaW9uUmVzdG9yZVN0YXJ0ZWRSZWYuY3VycmVudCA9IHRydWVcblxuICAgIHNldENoYXRWaWV3VmlzaWJsZSh0cnVlKVxuXG4gICAgY29uc3QgcnVuUmVzdG9yZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGxvYWRBZ2VudHNGb3JTZXNzaW9uUmVzdG9yZShzbmFwc2hvdClcbiAgICAgICAgcGVuZGluZ1Nlc3Npb25SZXN0b3JlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIGF3YWl0IGFwcGx5U2Vzc2lvblJlc3RvcmUoc25hcHNob3QpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc1Jlc3RvcmluZ1Nlc3Npb24oZmFsc2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcnVuUmVzdG9yZSgpLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbiAgfSwgW2FwcGx5U2Vzc2lvblJlc3RvcmUsIGxvYWRBZ2VudHNGb3JTZXNzaW9uUmVzdG9yZSwgc2V0Q2hhdFZpZXdWaXNpYmxlXSlcblxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgLy8gRWwgZm9vdGVyIChpbnB1dCkgc2Ugb2N1bHRhIHNvbG8gZW4gZWwgaG9tZSBtYXJrZXRwbGFjZSBkZSBNYWlha2VyIChicm93c2UgZGUgYWdlbnRlcykuXG4gIC8vIEVsIGhvbWUgZGVsIG9yY2hlc3RyYXRvciBzw60gcGVybWl0ZSBlc2NyaWJpciwgYXPDrSBxdWUgbWFudGllbmUgZWwgZm9vdGVyLlxuICBjb25zdCBpc01haWFrZXJDcmVhdG9ySG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbiwgdXNlcikgJiYgIWlzRmxvYXRpbmcgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlU3RhcnROZXdDaGF0PXtoYW5kbGVTdGFydE5ld0NoYXR9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgIGFnZW50c05hdkFjdGl2ZT17c2lkZWJhckFnZW50c05hdkFjdGl2ZX1cbiAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzPXtoYW5kbGVPcGVuU2tpbGxzfVxuICAgICAgICAgIG9uT3Blbk1haWFrZXJDcmVhdG9yPXtoYW5kbGVHb1RvTWFpYWtlcn1cbiAgICAgICAgICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uPXshIWxlZ2FjeUNvbnRleHRTZXNzaW9ufVxuICAgICAgICAgIGluaXRpYWxPcGVuPXtzYXZlZFNlc3Npb25Pbk1vdW50UmVmLmN1cnJlbnQ/LnNpZGViYXJPcGVuID8/IGZhbHNlfVxuICAgICAgICAgIG9uT3BlbkNoYW5nZT17aGFuZGxlU2lkZWJhck9wZW5DaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTQ0NBSU1Db250ZW50IGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9PlxuICAgICAgICA8Q2hhdEFJTW9kYWxIZWFkZXJcbiAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZT17aGFuZGxlTGF5b3V0TW9kZUNoYW5nZX1cbiAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgZHJhZ2dhYmxlPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgb25EcmFnTW92ZT17aGFuZGxlRHJhZ01vdmV9XG4gICAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICAgIGhhbmRsZU1pbmltaXplPXtoYW5kbGVNaW5pbWl6ZX1cbiAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgIGhhc0Vycm9yPXshIWFnZW50RXJyb3J9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBsb2FkaW5nTW9yZT17bG9hZGluZ01vcmV9XG4gICAgICAgICAgaGFzTW9yZT17YWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgIGhhbmRsZVJlc2V0Q2hhdD17aGFuZGxlUmVzZXRDaGF0fVxuICAgICAgICAgIG9uQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgbG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgIHNvcnRBZ2VudHNMaXN0PXtzb3J0QWdlbnRzTGlzdH1cbiAgICAgICAgICBpc015QWdlbnRzU2VjdGlvbj17aXNNeUFnZW50c1NlY3Rpb259XG4gICAgICAgICAgaXNNeVNraWxsc1NlY3Rpb249e2lzTXlTa2lsbHNTZWN0aW9ufVxuICAgICAgICAgIGlzTWFpYWtlclNlY3Rpb249e2lzTWFpYWtlckNyZWF0b3JIb21lfVxuICAgICAgICAgIHNob3dCYWNrQnV0dG9uPXtzaG93QmFja0J1dHRvbn1cbiAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XG4gICAgICAgIC8+XG4gICAgICAgIHtoYXNFcnJvciA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uLCB1c2VyKSA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBsb2FkaW5nQWdlbnRzPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgICBteVNraWxscz17bXlTa2lsbHN9XG4gICAgICAgICAgICBzaGFyZWRTa2lsbHM9e3NoYXJlZFNraWxsc31cbiAgICAgICAgICAgIGxvYWRpbmdTa2lsbHM9e2xvYWRpbmdTa2lsbHN9XG4gICAgICAgICAgICBvbkRlbGV0ZVNraWxsPXtyZW1vdmVTa2lsbH1cbiAgICAgICAgICAgIG9uU2VhcmNoQWdlbnRzPXtzZWFyY2hDdXN0b21BZ2VudHN9XG4gICAgICAgICAgICBzZWFyY2hMb2FkaW5nQWdlbnRzPXtzZWFyY2hMb2FkaW5nfVxuICAgICAgICAgICAgYWdlbnRFcnJvcj17YWdlbnRFcnJvcn1cbiAgICAgICAgICAgIGlzUmVzdG9yaW5nU2Vzc2lvbj17aXNSZXN0b3JpbmdTZXNzaW9ufVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByb2plY3RTdW1tYXJ5Q29udGVudCBvblJlc3RhcnRTdW1tYXJ5PXtoYW5kbGVycy5ob21lfSAvPlxuICAgICAgICApfVxuICAgICAgICB7KChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiAhIWFnZW50cz8uZGF0YT8ubGVuZ3RoKSB8fFxuICAgICAgICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSAmJlxuICAgICAgICAgICFpc01haWFrZXJDcmVhdG9ySG9tZSAmJlxuICAgICAgICAgICFoYXNFcnJvciAmJlxuICAgICAgICAgICFsb2FkaW5nICYmXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbiwgdXNlcikgJiYgKFxuICAgICAgICAgICAgPENoYXRBaU1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICBoYW5kbGVTdG9wR2VuZXJhdGlvbj17c3RvcEdlbmVyYXRpb25GdW5jdGlvbn1cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgICAgY2hhdElkPXtpbml0aWFsQ2hhdElkfVxuICAgICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICBsZWdhY3lDb250ZXh0U2Vzc2lvbj17bGVnYWN5Q29udGV4dFNlc3Npb259XG4gICAgICAgICAgICAgIG9uQ29udGludWVJbk5ld0NoYXQ9e2hhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdH1cbiAgICAgICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNQ29udGVudD5cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gKFxuICAgIDxTQ0NBSU1Db250ZW50V3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfSByZWY9e2NvbnRlbnRXcmFwcGVyUmVmfT5cbiAgICAgIHttb2RhbFBhbmVsfVxuICAgIDwvU0NDQUlNQ29udGVudFdyYXBwZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIHNlbGVjdG9yICYmXG4gICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgPFNDQ0FJTVdyYXBwZXJcbiAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICBkcmFnUG9zaXRpb249e3Jlc29sdmVkRHJhZ1Bvc2l0aW9ufVxuICAgICAgICBlbGV2YXRlZD17c2VjdGlvbiA9PT0gJ3Rhc2snfVxuICAgICAgICAkbWluaW1pemVkPXtpc01pbmltaXplZH1cbiAgICAgID5cbiAgICAgICAgPFNDQ0FJTU1pbmltaXplZEhpZGUgJGhpZGRlbj17aXNNaW5pbWl6ZWR9PlxuICAgICAgICAgIDxGbG9hdGluZ1BhbmVsTW90aW9uIHRpbHQ9e3RpbHRNb3Rpb259IGV4cGFuZGVkPXtleHBhbmRlZH0+XG4gICAgICAgICAgICB7Y29udGVudFdyYXBwZXJ9XG4gICAgICAgICAgPC9GbG9hdGluZ1BhbmVsTW90aW9uPlxuICAgICAgICA8L1NDQ0FJTU1pbmltaXplZEhpZGU+XG4gICAgICAgIHtpc01pbmltaXplZCAmJiAoXG4gICAgICAgICAgPE1haWFNaW5pbWl6ZWRQaWxsXG4gICAgICAgICAgICB1bnJlYWRDb3VudD17dW5yZWFkQ291bnR9XG4gICAgICAgICAgICBpc1N0cmVhbWluZz17aGFzQWN0aXZlU3RyZWFtfVxuICAgICAgICAgICAgb25SZXN0b3JlPXtoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtQWdlbnRNb2RhbFxuICAgICAgICAgICAgYWRkQWdlbnQ9e2FkZEFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnQ9e3VwZGF0ZUFnZW50fVxuICAgICAgICAgICAgcmVtb3ZlQWdlbnQ9e3JlbW92ZUFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIHNlbGVjdEZpcnN0QWdlbnQ9e3NlbGVjdEZpcnN0QWdlbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3VzZXJIYXNTa2lsbHNBY2Nlc3MgJiYgKFxuICAgICAgICAgIDxBYm1Ta2lsbE1vZGFsIGFkZFNraWxsPXthZGRTa2lsbH0gdXBkYXRlU2tpbGxJbkxpc3Q9e3VwZGF0ZVNraWxsSW5MaXN0fSByZW1vdmVTa2lsbD17cmVtb3ZlU2tpbGx9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzU2tpbGxzQWNjZXNzICYmIDxBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgLz59XG4gICAgICAgIDxTbmFja2JhciAvPlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyPixcbiAgICAgIHNl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
@@ -345,6 +345,7 @@ export var useContextMentions = function useContextMentions() {
345
345
  selection.removeAllRanges();
346
346
  selection.addRange(range);
347
347
  }
348
+ if (textNode.data === '') textNode.remove();
348
349
  closeTrigger();
349
350
  }, [detectTrigger, closeTrigger]);
350
351
  var replaceTriggerWithSlashChip = useCallback(function (chipNode, slashCommand) {
@@ -375,6 +376,7 @@ export var useContextMentions = function useContextMentions() {
375
376
  selection.removeAllRanges();
376
377
  selection.addRange(range);
377
378
  }
379
+ if (textNode.data === '') textNode.remove();
378
380
  closeSlashTrigger();
379
381
  }, [detectSlash, closeSlashTrigger]);
380
382
 
@@ -411,6 +413,7 @@ export var useContextMentions = function useContextMentions() {
411
413
  selection.removeAllRanges();
412
414
  selection.addRange(range);
413
415
  }
416
+ if (textNode.data === '') textNode.remove();
414
417
  closeHashTrigger();
415
418
  }, [detectHash, closeHashTrigger]);
416
419
  var serialize = useCallback(function () {
@@ -497,4 +500,4 @@ export var useContextMentions = function useContextMentions() {
497
500
  focus: focus
498
501
  };
499
502
  };
500
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZVN0YXRlIiwic2VyaWFsaXplTWVudGlvbiIsInNlcmlhbGl6ZVNsYXNoQ29tbWFuZCIsImRldGVjdE1lbnRpb25UcmlnZ2VyIiwiZWRpdG9yRWwiLCJyYW5nZSIsImNvbnRhaW5zIiwic3RhcnRDb250YWluZXIiLCJhY3RpdmUiLCJxdWVyeSIsImF0UnVuTGVuZ3RoIiwiYW5jaG9yIiwibm9kZSIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsInRleHQiLCJkYXRhIiwiY2FyZXQiLCJzdGFydE9mZnNldCIsImkiLCJydW5FbmQiLCJydW5TdGFydCIsInByZXYiLCJjaGFyQXQiLCJpc0JvdW5kYXJ5IiwidGVzdCIsImhhc1NsYXNoU3VmZml4IiwicXVlcnlTdGFydCIsInNsaWNlIiwiaW5jbHVkZXMiLCJvZmZzZXQiLCJkZXRlY3RDaGFyVHJpZ2dlciIsImNoYXIiLCJ0cmlnZ2VySW5kZXgiLCJ1c2VDb250ZXh0TWVudGlvbnMiLCJlZGl0b3JSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ0cmlnZ2VyIiwic2V0VHJpZ2dlciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2xhc2hUcmlnZ2VyIiwic2V0U2xhc2hUcmlnZ2VyIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJoYXNoVHJpZ2dlciIsInNldEhhc2hUcmlnZ2VyIiwiZGV0ZWN0VHJpZ2dlciIsInNlbGVjdGlvbiIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsInJhbmdlQ291bnQiLCJjdXJyZW50IiwiZ2V0UmFuZ2VBdCIsImRldGVjdFNsYXNoIiwiZGV0ZWN0SGFzaCIsInVwZGF0ZVRyaWdnZXIiLCJuZXh0IiwiY2xvc2VUcmlnZ2VyIiwidXBkYXRlU2xhc2hUcmlnZ2VyIiwiY2xvc2VTbGFzaFRyaWdnZXIiLCJ1cGRhdGVIYXNoVHJpZ2dlciIsImNsb3NlSGFzaFRyaWdnZXIiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwibmV4dEF0UnVuTGVuZ3RoIiwibmV4dEhhc1NsYXNoIiwic2FmZU5leHQiLCJNYXRoIiwibWF4IiwiZmxvb3IiLCJhYnMiLCJfY3VycmVudCRhbmNob3IiLCJ0ZXh0Tm9kZSIsImZ1bGwiLCJjdXJyZW50UnVuTGVuIiwiY3VycmVudEhhc1NsYXNoIiwicXVlcnlMZW4iLCJsZW5ndGgiLCJiZWZvcmUiLCJhZnRlciIsIm5leHRSdW4iLCJjb25jYXQiLCJyZXBlYXQiLCJjbGVhblF1ZXJ5Iiwic3RhcnRzV2l0aCIsIm5leHRWYWx1ZSIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJjYXJldE9mZnNldCIsInNldFN0YXJ0IiwibWluIiwiY29sbGFwc2UiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInVwZGF0ZWQiLCJyZXBsYWNlVHJpZ2dlcldpdGhDaGlwIiwiY2hpcE5vZGUiLCJtZW50aW9uIiwiX2N1cnJlbnQkYW5jaG9yMiIsInNldEF0dHJpYnV0ZSIsIlN0cmluZyIsImlkIiwidHlwZSIsImxhYmVsIiwicGFyZW50IiwicGFyZW50Tm9kZSIsInNwYWNlTm9kZSIsImNyZWF0ZVRleHROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJyZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAiLCJzbGFzaENvbW1hbmQiLCJfY3VycmVudCRhbmNob3IzIiwidHJpZ2dlckxlbiIsInJlcGxhY2VUcmlnZ2VyV2l0aFNraWxsQ2hpcCIsIl9jdXJyZW50JGFuY2hvcjQiLCJzZXJpYWxpemUiLCJlbCIsIm1lbnRpb25zIiwic2xhc2hDb21tYW5kcyIsIndhbGsiLCJFTEVNRU5UX05PREUiLCJfZWxOb2RlJGRhdGFzZXQiLCJfZWxOb2RlJGRhdGFzZXQyIiwiZWxOb2RlIiwiZGF0YXNldCIsIl9lbE5vZGUkZGF0YXNldCRtZW50aSIsIl9yZWYiLCJfcmVmMiIsIl9lbE5vZGUkZGF0YXNldCRtZW50aTIiLCJtZW50aW9uSWQiLCJtZW50aW9uVHlwZSIsIm1lbnRpb25MYWJlbCIsInRleHRDb250ZW50IiwicHVzaCIsIl9lbE5vZGUkZGF0YXNldCRzbGFzaCIsIl9yZWYzIiwiX2VsTm9kZSRkYXRhc2V0JHNsYXNoMiIsIl9lbE5vZGUkdGV4dENvbnRlbnQiLCJzbGFzaCIsInNsYXNoSWQiLCJzbGFzaExhYmVsIiwicmVwbGFjZSIsInRhZ05hbWUiLCJjaGlsZE5vZGVzIiwiZm9yRWFjaCIsImNsZWFyIiwiaW5uZXJIVE1MIiwiZm9jdXMiLCJfZWRpdG9yUmVmJGN1cnJlbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQ29udGV4dE1lbnRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgc2VyaWFsaXplTWVudGlvbiB9IGZyb20gJy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IHNlcmlhbGl6ZVNsYXNoQ29tbWFuZCB9IGZyb20gJy4uL3V0aWxzL3NsYXNoQ29tbWFuZE1hcmtlcidcbmltcG9ydCB0eXBlIHsgU2xhc2hDb21tYW5kQ2hpcERhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL1NsYXNoQ29tbWFuZENoaXAvYnVpbGRTbGFzaENoaXBFbGVtZW50J1xuXG5leHBvcnQgdHlwZSBNZW50aW9uVHJpZ2dlclN0YXRlID0ge1xuICBhY3RpdmU6IGJvb2xlYW5cbiAgcXVlcnk6IHN0cmluZ1xuICAvKiogQ2FudGlkYWQgZGUgYEBgIGNvbnNlY3V0aXZvcyBkZWwgdHJpZ2dlciAoYEBgIOKGkiAxLCBgQEBgIOKGkiAyKS4gTWFwZWEgYSBsYSB0YWIgZW4gb3JkZW4uICovXG4gIGF0UnVuTGVuZ3RoOiBudW1iZXJcbiAgLyoqIFBvc2ljacOzbiBkZWwgcHJpbWVyIGBAYCBkZWwgcnVuIChyZWVtcGxhem8gZGVsIGNoaXApLiAqL1xuICBhbmNob3I6IHsgbm9kZTogTm9kZTsgb2Zmc2V0OiBudW1iZXIgfSB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgU2xhc2hUcmlnZ2VyU3RhdGUgPSB7XG4gIGFjdGl2ZTogYm9vbGVhblxuICBxdWVyeTogc3RyaW5nXG4gIGFuY2hvcjogeyBub2RlOiBOb2RlOyBvZmZzZXQ6IG51bWJlciB9IHwgbnVsbFxufVxuXG4vKiogVHJpZ2dlciBgI2AgcXVlIGFicmUgZWwgbGlzdGFkbyBkZSBza2lsbHMuIE1pc21hIGZvcm1hIHF1ZSBlbCBkZSBzbGFzaC4gKi9cbmV4cG9ydCB0eXBlIEhhc2hUcmlnZ2VyU3RhdGUgPSBTbGFzaFRyaWdnZXJTdGF0ZVxuXG4vKipcbiAqIEluc3BlY2Npb25hIGxhIHNlbGVjY2nDs24gYWN0dWFsLiBGb3JtYXRvOiBbbMOtbWl0ZSBkZSBwYWxhYnJhXSBAKyBxdWVyeSBoYXN0YSBlbCBjYXJldC5cbiAqIFBlcm1pdGUgZXNwYWNpb3Mgc2ltcGxlcyBkZW50cm8gZGVsIHF1ZXJ5IChwLiBlai4gXCJASnVhbiBQZXJlelwiKSB5IGNpZXJyYVxuICogZWwgdHJpZ2dlciBjdWFuZG8gZGV0ZWN0YSBkb3MgZXNwYWNpb3MgY29uc2VjdXRpdm9zLlxuICogTGEgdGFiIG9iamV0aXZvIGVzIGxhIHF1ZSBjb3JyZXNwb25kZSBhbCBuw7ptZXJvIGRlIGBAYCAoMSA9IHByaW1lcmEgdGFiIHZpc2libGUsIGV0Yy4pLlxuICovXG5jb25zdCBkZXRlY3RNZW50aW9uVHJpZ2dlciA9IChlZGl0b3JFbDogSFRNTEVsZW1lbnQgfCBudWxsLCByYW5nZTogUmFuZ2UpOiBNZW50aW9uVHJpZ2dlclN0YXRlID0+IHtcbiAgaWYgKCFlZGl0b3JFbCB8fCAhZWRpdG9yRWwuY29udGFpbnMocmFuZ2Uuc3RhcnRDb250YWluZXIpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCBub2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXJcbiAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCB0ZXh0ID0gKG5vZGUgYXMgVGV4dCkuZGF0YVxuICBjb25zdCBjYXJldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0XG4gIGxldCBpID0gY2FyZXQgLSAxXG4gIGlmIChpIDwgMCkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICB3aGlsZSAoaSA+PSAwICYmIHRleHRbaV0gIT09ICdAJykgaSAtPSAxXG4gIGlmIChpIDwgMCB8fCB0ZXh0W2ldICE9PSAnQCcpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgY29uc3QgcnVuRW5kID0gaVxuICB3aGlsZSAoaSA+PSAwICYmIHRleHRbaV0gPT09ICdAJykge1xuICAgIGkgLT0gMVxuICB9XG4gIGNvbnN0IHJ1blN0YXJ0ID0gaSArIDFcbiAgY29uc3QgYXRSdW5MZW5ndGggPSBydW5FbmQgLSBydW5TdGFydCArIDFcbiAgY29uc3QgcHJldiA9IHJ1blN0YXJ0ID4gMCA/IHRleHQuY2hhckF0KHJ1blN0YXJ0IC0gMSkgOiAnJ1xuICBjb25zdCBpc0JvdW5kYXJ5ID0gIXByZXYgfHwgL1tcXHMoW3tdLy50ZXN0KHByZXYpXG4gIGlmICghaXNCb3VuZGFyeSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICBjb25zdCBoYXNTbGFzaFN1ZmZpeCA9IHRleHRbcnVuRW5kICsgMV0gPT09ICcvJ1xuICBjb25zdCBxdWVyeVN0YXJ0ID0gaGFzU2xhc2hTdWZmaXggPyBydW5FbmQgKyAyIDogcnVuRW5kICsgMVxuICBjb25zdCBxdWVyeSA9IHRleHQuc2xpY2UocXVlcnlTdGFydCwgY2FyZXQpXG4gIGlmICgvXFxufFxcci8udGVzdChxdWVyeSkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICB9XG4gIGlmIChxdWVyeS5pbmNsdWRlcygnICAnKSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBxdWVyeSxcbiAgICBhdFJ1bkxlbmd0aDogaGFzU2xhc2hTdWZmaXggPyAtYXRSdW5MZW5ndGggOiBhdFJ1bkxlbmd0aCxcbiAgICBhbmNob3I6IHsgbm9kZSwgb2Zmc2V0OiBydW5TdGFydCB9LFxuICB9XG59XG5cbi8qKiBEZXRlY3RhIHVuIHRyaWdnZXIgZGUgdW4gc29sbyBjYXJhY3RlciAoYC9gIG8gYCNgKSBlbiBsw61taXRlIGRlIHBhbGFicmEsIGNvbiBxdWVyeSBoYXN0YSBlbCBjYXJldC4gKi9cbmNvbnN0IGRldGVjdENoYXJUcmlnZ2VyID0gKGVkaXRvckVsOiBIVE1MRWxlbWVudCB8IG51bGwsIHJhbmdlOiBSYW5nZSwgY2hhcjogc3RyaW5nKTogU2xhc2hUcmlnZ2VyU3RhdGUgPT4ge1xuICBpZiAoIWVkaXRvckVsIHx8ICFlZGl0b3JFbC5jb250YWlucyhyYW5nZS5zdGFydENvbnRhaW5lcikpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgY29uc3Qgbm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyXG4gIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCB0ZXh0ID0gKG5vZGUgYXMgVGV4dCkuZGF0YVxuICBjb25zdCBjYXJldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0XG4gIGxldCBpID0gY2FyZXQgLSAxXG4gIGlmIChpIDwgMCkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgfVxuXG4gIHdoaWxlIChpID49IDAgJiYgdGV4dFtpXSAhPT0gY2hhcikgaSAtPSAxXG4gIGlmIChpIDwgMCB8fCB0ZXh0W2ldICE9PSBjaGFyKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgY29uc3QgdHJpZ2dlckluZGV4ID0gaVxuICBjb25zdCBwcmV2ID0gdHJpZ2dlckluZGV4ID4gMCA/IHRleHQuY2hhckF0KHRyaWdnZXJJbmRleCAtIDEpIDogJydcbiAgY29uc3QgaXNCb3VuZGFyeSA9ICFwcmV2IHx8IC9bXFxzKFt7XS8udGVzdChwcmV2KVxuICBpZiAoIWlzQm91bmRhcnkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICBjb25zdCBxdWVyeSA9IHRleHQuc2xpY2UodHJpZ2dlckluZGV4ICsgMSwgY2FyZXQpXG4gIGlmICgvXFxufFxcci8udGVzdChxdWVyeSkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgaWYgKHF1ZXJ5LmluY2x1ZGVzKCcgICcpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgcmV0dXJuIHsgYWN0aXZlOiB0cnVlLCBxdWVyeSwgYW5jaG9yOiB7IG5vZGUsIG9mZnNldDogdHJpZ2dlckluZGV4IH0gfVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ29udGV4dE1lbnRpb25zID0gKCkgPT4ge1xuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSB1c2VTdGF0ZTxNZW50aW9uVHJpZ2dlclN0YXRlPih7XG4gICAgYWN0aXZlOiBmYWxzZSxcbiAgICBxdWVyeTogJycsXG4gICAgYXRSdW5MZW5ndGg6IDAsXG4gICAgYW5jaG9yOiBudWxsLFxuICB9KVxuICBjb25zdCBbc2xhc2hUcmlnZ2VyLCBzZXRTbGFzaFRyaWdnZXJdID0gdXNlU3RhdGU8U2xhc2hUcmlnZ2VyU3RhdGU+KHtcbiAgICBhY3RpdmU6IGZhbHNlLFxuICAgIHF1ZXJ5OiAnJyxcbiAgICBhbmNob3I6IG51bGwsXG4gIH0pXG4gIGNvbnN0IFtoYXNoVHJpZ2dlciwgc2V0SGFzaFRyaWdnZXJdID0gdXNlU3RhdGU8SGFzaFRyaWdnZXJTdGF0ZT4oe1xuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgcXVlcnk6ICcnLFxuICAgIGFuY2hvcjogbnVsbCxcbiAgfSlcblxuICBjb25zdCBkZXRlY3RUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCk6IE1lbnRpb25UcmlnZ2VyU3RhdGUgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwIHx8ICFlZGl0b3JSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgICB9XG4gICAgcmV0dXJuIGRldGVjdE1lbnRpb25UcmlnZ2VyKGVkaXRvclJlZi5jdXJyZW50LCBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKSlcbiAgfSwgW10pXG5cbiAgY29uc3QgZGV0ZWN0U2xhc2ggPSB1c2VDYWxsYmFjaygoKTogU2xhc2hUcmlnZ2VyU3RhdGUgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwIHx8ICFlZGl0b3JSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICAgIH1cbiAgICByZXR1cm4gZGV0ZWN0Q2hhclRyaWdnZXIoZWRpdG9yUmVmLmN1cnJlbnQsIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLCAnLycpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGRldGVjdEhhc2ggPSB1c2VDYWxsYmFjaygoKTogSGFzaFRyaWdnZXJTdGF0ZSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDAgfHwgIWVkaXRvclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gICAgfVxuICAgIHJldHVybiBkZXRlY3RDaGFyVHJpZ2dlcihlZGl0b3JSZWYuY3VycmVudCwgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCksICcjJylcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBuZXh0ID0gZGV0ZWN0VHJpZ2dlcigpXG4gICAgc2V0VHJpZ2dlcihuZXh0KVxuICAgIHJldHVybiBuZXh0XG4gIH0sIFtkZXRlY3RUcmlnZ2VyXSlcblxuICBjb25zdCBjbG9zZVRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VHJpZ2dlcih7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9KVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTbGFzaFRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IGRldGVjdFNsYXNoKClcbiAgICBzZXRTbGFzaFRyaWdnZXIobmV4dClcbiAgICByZXR1cm4gbmV4dFxuICB9LCBbZGV0ZWN0U2xhc2hdKVxuXG4gIGNvbnN0IGNsb3NlU2xhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNsYXNoVHJpZ2dlcih7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUhhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG5leHQgPSBkZXRlY3RIYXNoKClcbiAgICBzZXRIYXNoVHJpZ2dlcihuZXh0KVxuICAgIHJldHVybiBuZXh0XG4gIH0sIFtkZXRlY3RIYXNoXSlcblxuICBjb25zdCBjbG9zZUhhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEhhc2hUcmlnZ2VyKHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfSlcbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIEFqdXN0YSBsYSBjYW50aWRhZCBkZSBgQGAgZGVsIHRyaWdnZXIgYWN0aXZvIHNpbiBwZXJkZXIgZWwgcXVlcnkgYWN0dWFsLlxuICAgKiBFai46IGBAQGFiY2AgLT4gYEBhYmNgIGFsIGNhbWJpYXIgZGUgdGFiLlxuICAgKi9cbiAgY29uc3Qgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aCA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXh0QXRSdW5MZW5ndGg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgbmV4dEhhc1NsYXNoID0gbmV4dEF0UnVuTGVuZ3RoIDwgMFxuICAgICAgY29uc3Qgc2FmZU5leHQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKE1hdGguYWJzKG5leHRBdFJ1bkxlbmd0aCkpKVxuICAgICAgY29uc3QgY3VycmVudCA9IGRldGVjdFRyaWdnZXIoKVxuICAgICAgaWYgKCFjdXJyZW50LmFjdGl2ZSB8fCAhY3VycmVudC5hbmNob3IpIHJldHVyblxuXG4gICAgICBjb25zdCB7IG5vZGUsIG9mZnNldCB9ID0gY3VycmVudC5hbmNob3JcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkgcmV0dXJuXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IG5vZGUgYXMgVGV4dFxuICAgICAgY29uc3QgZnVsbCA9IHRleHROb2RlLmRhdGFcbiAgICAgIGNvbnN0IGN1cnJlbnRSdW5MZW4gPSBNYXRoLmFicyhjdXJyZW50LmF0UnVuTGVuZ3RoKVxuICAgICAgY29uc3QgY3VycmVudEhhc1NsYXNoID0gY3VycmVudC5hdFJ1bkxlbmd0aCA8IDBcbiAgICAgIGNvbnN0IHF1ZXJ5TGVuID0gY3VycmVudFJ1bkxlbiArIChjdXJyZW50SGFzU2xhc2ggPyAxIDogMCkgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYmVmb3JlID0gZnVsbC5zbGljZSgwLCBvZmZzZXQpXG4gICAgICBjb25zdCBhZnRlciA9IGZ1bGwuc2xpY2Uob2Zmc2V0ICsgcXVlcnlMZW4pXG4gICAgICBjb25zdCBuZXh0UnVuID0gbmV4dEhhc1NsYXNoID8gYCR7J0AnLnJlcGVhdChzYWZlTmV4dCl9L2AgOiAnQCcucmVwZWF0KHNhZmVOZXh0KVxuICAgICAgLy8gU2kgdmVuaW1vcyBkZWwgdGFiIHNraWxsLCBlbCBxdWVyeSB0aWVuZSAnLycgY29tbyBwcmVmaWpvIOKAlCBsaW1waWFybG8gYWwgY2FtYmlhciBkZSB0YWIuXG4gICAgICBjb25zdCBjbGVhblF1ZXJ5ID0gY3VycmVudC5xdWVyeS5zdGFydHNXaXRoKCcvJykgPyBjdXJyZW50LnF1ZXJ5LnNsaWNlKDEpIDogY3VycmVudC5xdWVyeVxuICAgICAgY29uc3QgbmV4dFZhbHVlID0gYCR7YmVmb3JlfSR7bmV4dFJ1bn0ke2NsZWFuUXVlcnl9JHthZnRlcn1gXG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgdGV4dE5vZGUuZGF0YSA9IG5leHRWYWx1ZVxuXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIGNvbnN0IGNhcmV0T2Zmc2V0ID0gYmVmb3JlLmxlbmd0aCArIG5leHRSdW4ubGVuZ3RoICsgY2xlYW5RdWVyeS5sZW5ndGhcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIE1hdGgubWluKGNhcmV0T2Zmc2V0LCB0ZXh0Tm9kZS5kYXRhLmxlbmd0aCkpXG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG4gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICAgIHNldFRyaWdnZXIodXBkYXRlZClcbiAgICB9LFxuICAgIFtkZXRlY3RUcmlnZ2VyXVxuICApXG5cbiAgLyoqXG4gICAqIFJlZW1wbGF6YSBlbCBgQHF1ZXJ5YCBwZW5kaWVudGUgcG9yIHVuIGNoaXAgYXTDs21pY28gY29uIGxhIG1lbnRpb24uXG4gICAqIFJlcXVpZXJlIHF1ZSBlbCBjYWxsZXIgcHJvdmVhIGVsIERPTSBkZWwgY2hpcCAoc2UgaW5zZXJ0YSB0YWwgY3VhbCkuXG4gICAqL1xuICBjb25zdCByZXBsYWNlVHJpZ2dlcldpdGhDaGlwID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoaXBOb2RlOiBIVE1MRWxlbWVudCwgbWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICAgIGlmICghY3VycmVudC5hY3RpdmUgfHwgIWN1cnJlbnQuYW5jaG9yKSByZXR1cm5cblxuICAgICAgY29uc3QgeyBub2RlLCBvZmZzZXQgfSA9IGN1cnJlbnQuYW5jaG9yXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IG5vZGUgYXMgVGV4dFxuICAgICAgY29uc3QgZnVsbCA9IHRleHROb2RlLmRhdGFcbiAgICAgIGNvbnN0IGN1cnJlbnRSdW5MZW4gPSBNYXRoLmFicyhjdXJyZW50LmF0UnVuTGVuZ3RoKVxuICAgICAgY29uc3QgY3VycmVudEhhc1NsYXNoID0gY3VycmVudC5hdFJ1bkxlbmd0aCA8IDBcbiAgICAgIGNvbnN0IHF1ZXJ5TGVuID0gY3VycmVudFJ1bkxlbiArIChjdXJyZW50SGFzU2xhc2ggPyAxIDogMCkgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHF1ZXJ5TGVuKVxuXG4gICAgICAvLyBUcnVuY2FyIGVsIHRleHRvIGhhc3RhIGFudGVzIGRlbCBydW4gZGUgYEDigKZgXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIHRleHROb2RlLmRhdGEgPSBmdWxsLnNsaWNlKDAsIG9mZnNldClcblxuICAgICAgLy8gSW5zZXJ0YXIgZWwgY2hpcCBqdXN0byBkZXNwdcOpcyBkZWwgbm9kbyBkZSB0ZXh0b1xuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24nLCAndHJ1ZScpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1pZCcsIFN0cmluZyhtZW50aW9uLmlkKSlcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXR5cGUnLCBtZW50aW9uLnR5cGUpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1sYWJlbCcsIG1lbnRpb24ubGFiZWwpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IHRleHROb2RlLnBhcmVudE5vZGVcbiAgICAgIGlmICghcGFyZW50KSByZXR1cm5cblxuICAgICAgY29uc3Qgc3BhY2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxcdTAwYTAke2FmdGVyfWApXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaXBOb2RlLCB0ZXh0Tm9kZS5uZXh0U2libGluZylcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3BhY2VOb2RlLCBjaGlwTm9kZS5uZXh0U2libGluZylcblxuICAgICAgLy8gUmVwb3NpY2lvbmFyIGNhcmV0IGRlc3B1w6lzIGRlbCBjaGlwIChhbnRlcyBkZWwgZXNwYWNpbyBub24tYnJlYWtpbmcpXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHNwYWNlTm9kZSwgMSlcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgIH1cblxuICAgICAgY2xvc2VUcmlnZ2VyKClcbiAgICB9LFxuICAgIFtkZXRlY3RUcmlnZ2VyLCBjbG9zZVRyaWdnZXJdXG4gIClcblxuICBjb25zdCByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hpcE5vZGU6IEhUTUxFbGVtZW50LCBzbGFzaENvbW1hbmQ6IFNsYXNoQ29tbWFuZENoaXBEYXRhKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gZGV0ZWN0U2xhc2goKVxuICAgICAgaWYgKCFjdXJyZW50LmFjdGl2ZSB8fCAhY3VycmVudC5hbmNob3IpIHJldHVyblxuXG4gICAgICBjb25zdCB7IG5vZGUsIG9mZnNldCB9ID0gY3VycmVudC5hbmNob3JcbiAgICAgIGNvbnN0IHRleHROb2RlID0gbm9kZSBhcyBUZXh0XG4gICAgICBjb25zdCBmdWxsID0gdGV4dE5vZGUuZGF0YVxuICAgICAgY29uc3QgdHJpZ2dlckxlbiA9IDEgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHRyaWdnZXJMZW4pXG5cbiAgICAgIHRleHROb2RlLmRhdGEgPSBmdWxsLnNsaWNlKDAsIG9mZnNldClcblxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXNsYXNoLWNvbW1hbmQnLCAndHJ1ZScpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2xhc2gtaWQnLCBTdHJpbmcoc2xhc2hDb21tYW5kLmlkKSlcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1zbGFzaC1sYWJlbCcsIHNsYXNoQ29tbWFuZC5sYWJlbClcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgJ2ZhbHNlJylcblxuICAgICAgY29uc3QgcGFyZW50ID0gdGV4dE5vZGUucGFyZW50Tm9kZVxuICAgICAgaWYgKCFwYXJlbnQpIHJldHVyblxuXG4gICAgICBjb25zdCBzcGFjZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgICR7YWZ0ZXJ9YClcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoY2hpcE5vZGUsIHRleHROb2RlLm5leHRTaWJsaW5nKVxuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShzcGFjZU5vZGUsIGNoaXBOb2RlLm5leHRTaWJsaW5nKVxuXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHNwYWNlTm9kZSwgMSlcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgIH1cblxuICAgICAgY2xvc2VTbGFzaFRyaWdnZXIoKVxuICAgIH0sXG4gICAgW2RldGVjdFNsYXNoLCBjbG9zZVNsYXNoVHJpZ2dlcl1cbiAgKVxuXG4gIC8qKlxuICAgKiBSZWVtcGxhemEgZWwgYCNxdWVyeWAgcGVuZGllbnRlIHBvciB1biBjaGlwIGRlIHNraWxsLiBMYSBza2lsbCBzaWd1ZSB2aWFqYW5kb1xuICAgKiBjb21vIG1lbnRpb24gKGBkYXRhLW1lbnRpb24qYCkgcGFyYSBxdWUgZWwgYmFja2VuZCBsYSByZXN1ZWx2YSBwb3IgaWQuXG4gICAqL1xuICBjb25zdCByZXBsYWNlVHJpZ2dlcldpdGhTa2lsbENoaXAgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hpcE5vZGU6IEhUTUxFbGVtZW50LCBtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IGRldGVjdEhhc2goKVxuICAgICAgaWYgKCFjdXJyZW50LmFjdGl2ZSB8fCAhY3VycmVudC5hbmNob3IpIHJldHVyblxuXG4gICAgICBjb25zdCB7IG5vZGUsIG9mZnNldCB9ID0gY3VycmVudC5hbmNob3JcbiAgICAgIGNvbnN0IHRleHROb2RlID0gbm9kZSBhcyBUZXh0XG4gICAgICBjb25zdCBmdWxsID0gdGV4dE5vZGUuZGF0YVxuICAgICAgY29uc3QgdHJpZ2dlckxlbiA9IDEgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHRyaWdnZXJMZW4pXG5cbiAgICAgIHRleHROb2RlLmRhdGEgPSBmdWxsLnNsaWNlKDAsIG9mZnNldClcblxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24nLCAndHJ1ZScpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1pZCcsIFN0cmluZyhtZW50aW9uLmlkKSlcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXR5cGUnLCBtZW50aW9uLnR5cGUpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1sYWJlbCcsIG1lbnRpb24ubGFiZWwpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IHRleHROb2RlLnBhcmVudE5vZGVcbiAgICAgIGlmICghcGFyZW50KSByZXR1cm5cblxuICAgICAgY29uc3Qgc3BhY2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxcdTAwYTAke2FmdGVyfWApXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaXBOb2RlLCB0ZXh0Tm9kZS5uZXh0U2libGluZylcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3BhY2VOb2RlLCBjaGlwTm9kZS5uZXh0U2libGluZylcblxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICByYW5nZS5zZXRTdGFydChzcGFjZU5vZGUsIDEpXG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG4gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpXG4gICAgICB9XG5cbiAgICAgIGNsb3NlSGFzaFRyaWdnZXIoKVxuICAgIH0sXG4gICAgW2RldGVjdEhhc2gsIGNsb3NlSGFzaFRyaWdnZXJdXG4gIClcblxuICBjb25zdCBzZXJpYWxpemUgPSB1c2VDYWxsYmFjaygoKToge1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgc2xhc2hDb21tYW5kczogU2xhc2hDb21tYW5kQ2hpcERhdGFbXVxuICB9ID0+IHtcbiAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuIHsgdGV4dDogJycsIG1lbnRpb25zOiBbXSwgc2xhc2hDb21tYW5kczogW10gfVxuICAgIGNvbnN0IG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdID0gW11cbiAgICBjb25zdCBzbGFzaENvbW1hbmRzOiBTbGFzaENvbW1hbmRDaGlwRGF0YVtdID0gW11cbiAgICBsZXQgdGV4dCA9ICcnXG5cbiAgICBjb25zdCB3YWxrID0gKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICB0ZXh0ICs9IChub2RlIGFzIFRleHQpLmRhdGFcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgY29uc3QgZWxOb2RlID0gbm9kZSBhcyBIVE1MRWxlbWVudFxuICAgICAgICBpZiAoZWxOb2RlLmRhdGFzZXQ/Lm1lbnRpb24gPT09ICd0cnVlJykge1xuICAgICAgICAgIGNvbnN0IG1lbnRpb246IENvbnRleHRNZW50aW9uID0ge1xuICAgICAgICAgICAgaWQ6IGVsTm9kZS5kYXRhc2V0Lm1lbnRpb25JZCA/PyAnJyxcbiAgICAgICAgICAgIHR5cGU6IChlbE5vZGUuZGF0YXNldC5tZW50aW9uVHlwZSBhcyBDb250ZXh0TWVudGlvblsndHlwZSddKSA/PyAndXNlcicsXG4gICAgICAgICAgICBsYWJlbDogZWxOb2RlLmRhdGFzZXQubWVudGlvbkxhYmVsID8/IGVsTm9kZS50ZXh0Q29udGVudCA/PyAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgbWVudGlvbnMucHVzaChtZW50aW9uKVxuICAgICAgICAgIHRleHQgKz0gc2VyaWFsaXplTWVudGlvbihtZW50aW9uKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5vZGUuZGF0YXNldD8uc2xhc2hDb21tYW5kID09PSAndHJ1ZScpIHtcbiAgICAgICAgICBjb25zdCBzbGFzaDogU2xhc2hDb21tYW5kQ2hpcERhdGEgPSB7XG4gICAgICAgICAgICBpZDogZWxOb2RlLmRhdGFzZXQuc2xhc2hJZCA/PyAnJyxcbiAgICAgICAgICAgIGxhYmVsOiBlbE5vZGUuZGF0YXNldC5zbGFzaExhYmVsID8/IGVsTm9kZS50ZXh0Q29udGVudD8ucmVwbGFjZSgvXlxcLy8sICcnKSA/PyAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgc2xhc2hDb21tYW5kcy5wdXNoKHNsYXNoKVxuICAgICAgICAgIHRleHQgKz0gc2VyaWFsaXplU2xhc2hDb21tYW5kKHNsYXNoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0JSJykge1xuICAgICAgICAgIHRleHQgKz0gJ1xcbidcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBlbE5vZGUuY2hpbGROb2Rlcy5mb3JFYWNoKHdhbGspXG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0RJVicgfHwgZWxOb2RlLnRhZ05hbWUgPT09ICdQJykgdGV4dCArPSAnXFxuJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsLmNoaWxkTm9kZXMuZm9yRWFjaCh3YWxrKVxuICAgIHJldHVybiB7IHRleHQ6IHRleHQucmVwbGFjZSgvXFxuKyQvLCAnJyksIG1lbnRpb25zLCBzbGFzaENvbW1hbmRzIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgY2xlYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGVkaXRvclJlZi5jdXJyZW50KSBlZGl0b3JSZWYuY3VycmVudC5pbm5lckhUTUwgPSAnJ1xuICAgIGNsb3NlVHJpZ2dlcigpXG4gICAgY2xvc2VTbGFzaFRyaWdnZXIoKVxuICAgIGNsb3NlSGFzaFRyaWdnZXIoKVxuICB9LCBbY2xvc2VUcmlnZ2VyLCBjbG9zZVNsYXNoVHJpZ2dlciwgY2xvc2VIYXNoVHJpZ2dlcl0pXG5cbiAgY29uc3QgZm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgfSwgW10pXG5cbiAgcmV0dXJuIHtcbiAgICBlZGl0b3JSZWYsXG4gICAgdHJpZ2dlcixcbiAgICB1cGRhdGVUcmlnZ2VyLFxuICAgIGNsb3NlVHJpZ2dlcixcbiAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgIHJlcGxhY2VUcmlnZ2VyV2l0aENoaXAsXG4gICAgc2xhc2hUcmlnZ2VyLFxuICAgIHVwZGF0ZVNsYXNoVHJpZ2dlcixcbiAgICBjbG9zZVNsYXNoVHJpZ2dlcixcbiAgICByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAsXG4gICAgaGFzaFRyaWdnZXIsXG4gICAgdXBkYXRlSGFzaFRyaWdnZXIsXG4gICAgY2xvc2VIYXNoVHJpZ2dlcixcbiAgICByZXBsYWNlVHJpZ2dlcldpdGhTa2lsbENoaXAsXG4gICAgc2VyaWFsaXplLFxuICAgIGNsZWFyLFxuICAgIGZvY3VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFckQsU0FBU0MsZ0JBQWdCLFFBQVEsZ0NBQWdDO0FBQ2pFLFNBQVNDLHFCQUFxQixRQUFRLDZCQUE2Qjs7QUFrQm5FOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLFFBQTRCLEVBQUVDLEtBQVksRUFBMEI7RUFDaEcsSUFBSSxDQUFDRCxRQUFRLElBQUksQ0FBQ0EsUUFBUSxDQUFDRSxRQUFRLENBQUNELEtBQUssQ0FBQ0UsY0FBYyxDQUFDLEVBQUU7SUFDekQsT0FBTztNQUFFQyxNQUFNLEVBQUUsS0FBSztNQUFFQyxLQUFLLEVBQUUsRUFBRTtNQUFFQyxXQUFXLEVBQUUsQ0FBQztNQUFFQyxNQUFNLEVBQUU7SUFBSyxDQUFDO0VBQ25FO0VBQ0EsSUFBTUMsSUFBSSxHQUFHUCxLQUFLLENBQUNFLGNBQWM7RUFDakMsSUFBSUssSUFBSSxDQUFDQyxRQUFRLEtBQUtDLElBQUksQ0FBQ0MsU0FBUyxFQUFFO0lBQ3BDLE9BQU87TUFBRVAsTUFBTSxFQUFFLEtBQUs7TUFBRUMsS0FBSyxFQUFFLEVBQUU7TUFBRUMsV0FBVyxFQUFFLENBQUM7TUFBRUMsTUFBTSxFQUFFO0lBQUssQ0FBQztFQUNuRTtFQUNBLElBQU1LLElBQUksR0FBSUosSUFBSSxDQUFVSyxJQUFJO0VBQ2hDLElBQU1DLEtBQUssR0FBR2IsS0FBSyxDQUFDYyxXQUFXO0VBQy9CLElBQUlDLENBQUMsR0FBR0YsS0FBSyxHQUFHLENBQUM7RUFDakIsSUFBSUUsQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUNULE9BQU87TUFBRVosTUFBTSxFQUFFLEtBQUs7TUFBRUMsS0FBSyxFQUFFLEVBQUU7TUFBRUMsV0FBVyxFQUFFLENBQUM7TUFBRUMsTUFBTSxFQUFFO0lBQUssQ0FBQztFQUNuRTtFQUVBLE9BQU9TLENBQUMsSUFBSSxDQUFDLElBQUlKLElBQUksQ0FBQ0ksQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFQSxDQUFDLElBQUksQ0FBQztFQUN4QyxJQUFJQSxDQUFDLEdBQUcsQ0FBQyxJQUFJSixJQUFJLENBQUNJLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtJQUM1QixPQUFPO01BQUVaLE1BQU0sRUFBRSxLQUFLO01BQUVDLEtBQUssRUFBRSxFQUFFO01BQUVDLFdBQVcsRUFBRSxDQUFDO01BQUVDLE1BQU0sRUFBRTtJQUFLLENBQUM7RUFDbkU7RUFFQSxJQUFNVSxNQUFNLEdBQUdELENBQUM7RUFDaEIsT0FBT0EsQ0FBQyxJQUFJLENBQUMsSUFBSUosSUFBSSxDQUFDSSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7SUFDaENBLENBQUMsSUFBSSxDQUFDO0VBQ1I7RUFDQSxJQUFNRSxRQUFRLEdBQUdGLENBQUMsR0FBRyxDQUFDO0VBQ3RCLElBQU1WLFdBQVcsR0FBR1csTUFBTSxHQUFHQyxRQUFRLEdBQUcsQ0FBQztFQUN6QyxJQUFNQyxJQUFJLEdBQUdELFFBQVEsR0FBRyxDQUFDLEdBQUdOLElBQUksQ0FBQ1EsTUFBTSxDQUFDRixRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRTtFQUMxRCxJQUFNRyxVQUFVLEdBQUcsQ0FBQ0YsSUFBSSxJQUFJLFNBQVMsQ0FBQ0csSUFBSSxDQUFDSCxJQUFJLENBQUM7RUFDaEQsSUFBSSxDQUFDRSxVQUFVLEVBQUU7SUFDZixPQUFPO01BQUVqQixNQUFNLEVBQUUsS0FBSztNQUFFQyxLQUFLLEVBQUUsRUFBRTtNQUFFQyxXQUFXLEVBQUUsQ0FBQztNQUFFQyxNQUFNLEVBQUU7SUFBSyxDQUFDO0VBQ25FO0VBRUEsSUFBTWdCLGNBQWMsR0FBR1gsSUFBSSxDQUFDSyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRztFQUMvQyxJQUFNTyxVQUFVLEdBQUdELGNBQWMsR0FBR04sTUFBTSxHQUFHLENBQUMsR0FBR0EsTUFBTSxHQUFHLENBQUM7RUFDM0QsSUFBTVosS0FBSyxHQUFHTyxJQUFJLENBQUNhLEtBQUssQ0FBQ0QsVUFBVSxFQUFFVixLQUFLLENBQUM7RUFDM0MsSUFBSSxPQUFPLENBQUNRLElBQUksQ0FBQ2pCLEtBQUssQ0FBQyxFQUFFO0lBQ3ZCLE9BQU87TUFBRUQsTUFBTSxFQUFFLEtBQUs7TUFBRUMsS0FBSyxFQUFFLEVBQUU7TUFBRUMsV0FBVyxFQUFFLENBQUM7TUFBRUMsTUFBTSxFQUFFO0lBQUssQ0FBQztFQUNuRTtFQUNBLElBQUlGLEtBQUssQ0FBQ3FCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUN4QixPQUFPO01BQUV0QixNQUFNLEVBQUUsS0FBSztNQUFFQyxLQUFLLEVBQUUsRUFBRTtNQUFFQyxXQUFXLEVBQUUsQ0FBQztNQUFFQyxNQUFNLEVBQUU7SUFBSyxDQUFDO0VBQ25FO0VBRUEsT0FBTztJQUNMSCxNQUFNLEVBQUUsSUFBSTtJQUNaQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsV0FBVyxFQUFFaUIsY0FBYyxHQUFHLENBQUNqQixXQUFXLEdBQUdBLFdBQVc7SUFDeERDLE1BQU0sRUFBRTtNQUFFQyxJQUFJLEVBQUpBLElBQUk7TUFBRW1CLE1BQU0sRUFBRVQ7SUFBUztFQUNuQyxDQUFDO0FBQ0gsQ0FBQzs7QUFFRDtBQUNBLElBQU1VLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUk1QixRQUE0QixFQUFFQyxLQUFZLEVBQUU0QixLQUFZLEVBQXdCO0VBQ3pHLElBQUksQ0FBQzdCLFFBQVEsSUFBSSxDQUFDQSxRQUFRLENBQUNFLFFBQVEsQ0FBQ0QsS0FBSyxDQUFDRSxjQUFjLENBQUMsRUFBRTtJQUN6RCxPQUFPO01BQUVDLE1BQU0sRUFBRSxLQUFLO01BQUVDLEtBQUssRUFBRSxFQUFFO01BQUVFLE1BQU0sRUFBRTtJQUFLLENBQUM7RUFDbkQ7RUFDQSxJQUFNQyxJQUFJLEdBQUdQLEtBQUssQ0FBQ0UsY0FBYztFQUNqQyxJQUFJSyxJQUFJLENBQUNDLFFBQVEsS0FBS0MsSUFBSSxDQUFDQyxTQUFTLEVBQUU7SUFDcEMsT0FBTztNQUFFUCxNQUFNLEVBQUUsS0FBSztNQUFFQyxLQUFLLEVBQUUsRUFBRTtNQUFFRSxNQUFNLEVBQUU7SUFBSyxDQUFDO0VBQ25EO0VBQ0EsSUFBTUssSUFBSSxHQUFJSixJQUFJLENBQVVLLElBQUk7RUFDaEMsSUFBTUMsS0FBSyxHQUFHYixLQUFLLENBQUNjLFdBQVc7RUFDL0IsSUFBSUMsQ0FBQyxHQUFHRixLQUFLLEdBQUcsQ0FBQztFQUNqQixJQUFJRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ1QsT0FBTztNQUFFWixNQUFNLEVBQUUsS0FBSztNQUFFQyxLQUFLLEVBQUUsRUFBRTtNQUFFRSxNQUFNLEVBQUU7SUFBSyxDQUFDO0VBQ25EO0VBRUEsT0FBT1MsQ0FBQyxJQUFJLENBQUMsSUFBSUosSUFBSSxDQUFDSSxDQUFDLENBQUMsS0FBS2EsS0FBSSxFQUFFYixDQUFDLElBQUksQ0FBQztFQUN6QyxJQUFJQSxDQUFDLEdBQUcsQ0FBQyxJQUFJSixJQUFJLENBQUNJLENBQUMsQ0FBQyxLQUFLYSxLQUFJLEVBQUU7SUFDN0IsT0FBTztNQUFFekIsTUFBTSxFQUFFLEtBQUs7TUFBRUMsS0FBSyxFQUFFLEVBQUU7TUFBRUUsTUFBTSxFQUFFO0lBQUssQ0FBQztFQUNuRDtFQUVBLElBQU11QixZQUFZLEdBQUdkLENBQUM7RUFDdEIsSUFBTUcsSUFBSSxHQUFHVyxZQUFZLEdBQUcsQ0FBQyxHQUFHbEIsSUFBSSxDQUFDUSxNQUFNLENBQUNVLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFO0VBQ2xFLElBQU1ULFVBQVUsR0FBRyxDQUFDRixJQUFJLElBQUksU0FBUyxDQUFDRyxJQUFJLENBQUNILElBQUksQ0FBQztFQUNoRCxJQUFJLENBQUNFLFVBQVUsRUFBRTtJQUNmLE9BQU87TUFBRWpCLE1BQU0sRUFBRSxLQUFLO01BQUVDLEtBQUssRUFBRSxFQUFFO01BQUVFLE1BQU0sRUFBRTtJQUFLLENBQUM7RUFDbkQ7RUFFQSxJQUFNRixLQUFLLEdBQUdPLElBQUksQ0FBQ2EsS0FBSyxDQUFDSyxZQUFZLEdBQUcsQ0FBQyxFQUFFaEIsS0FBSyxDQUFDO0VBQ2pELElBQUksT0FBTyxDQUFDUSxJQUFJLENBQUNqQixLQUFLLENBQUMsRUFBRTtJQUN2QixPQUFPO01BQUVELE1BQU0sRUFBRSxLQUFLO01BQUVDLEtBQUssRUFBRSxFQUFFO01BQUVFLE1BQU0sRUFBRTtJQUFLLENBQUM7RUFDbkQ7RUFDQSxJQUFJRixLQUFLLENBQUNxQixRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDeEIsT0FBTztNQUFFdEIsTUFBTSxFQUFFLEtBQUs7TUFBRUMsS0FBSyxFQUFFLEVBQUU7TUFBRUUsTUFBTSxFQUFFO0lBQUssQ0FBQztFQUNuRDtFQUVBLE9BQU87SUFBRUgsTUFBTSxFQUFFLElBQUk7SUFBRUMsS0FBSyxFQUFMQSxLQUFLO0lBQUVFLE1BQU0sRUFBRTtNQUFFQyxJQUFJLEVBQUpBLElBQUk7TUFBRW1CLE1BQU0sRUFBRUc7SUFBYTtFQUFFLENBQUM7QUFDeEUsQ0FBQztBQUVELE9BQU8sSUFBTUMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBQSxFQUFTO0VBQ3RDLElBQU1DLFNBQVMsR0FBR3JDLE1BQU0sQ0FBd0IsSUFBSSxDQUFDO0VBQ3JELElBQUFzQyxTQUFBLEdBQThCckMsUUFBUSxDQUFzQjtNQUMxRFEsTUFBTSxFQUFFLEtBQUs7TUFDYkMsS0FBSyxFQUFFLEVBQUU7TUFDVEMsV0FBVyxFQUFFLENBQUM7TUFDZEMsTUFBTSxFQUFFO0lBQ1YsQ0FBQyxDQUFDO0lBQUEyQixVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUxLRyxPQUFPLEdBQUFGLFVBQUE7SUFBRUcsVUFBVSxHQUFBSCxVQUFBO0VBTTFCLElBQUFJLFVBQUEsR0FBd0MxQyxRQUFRLENBQW9CO01BQ2xFUSxNQUFNLEVBQUUsS0FBSztNQUNiQyxLQUFLLEVBQUUsRUFBRTtNQUNURSxNQUFNLEVBQUU7SUFDVixDQUFDLENBQUM7SUFBQWdDLFVBQUEsR0FBQUosY0FBQSxDQUFBRyxVQUFBO0lBSktFLFlBQVksR0FBQUQsVUFBQTtJQUFFRSxlQUFlLEdBQUFGLFVBQUE7RUFLcEMsSUFBQUcsVUFBQSxHQUFzQzlDLFFBQVEsQ0FBbUI7TUFDL0RRLE1BQU0sRUFBRSxLQUFLO01BQ2JDLEtBQUssRUFBRSxFQUFFO01BQ1RFLE1BQU0sRUFBRTtJQUNWLENBQUMsQ0FBQztJQUFBb0MsVUFBQSxHQUFBUixjQUFBLENBQUFPLFVBQUE7SUFKS0UsV0FBVyxHQUFBRCxVQUFBO0lBQUVFLGNBQWMsR0FBQUYsVUFBQTtFQU1sQyxJQUFNRyxhQUFhLEdBQUdwRCxXQUFXLENBQUMsWUFBMkI7SUFDM0QsSUFBTXFELFNBQVMsR0FBR0MsTUFBTSxDQUFDQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUNGLFNBQVMsSUFBSUEsU0FBUyxDQUFDRyxVQUFVLEtBQUssQ0FBQyxJQUFJLENBQUNsQixTQUFTLENBQUNtQixPQUFPLEVBQUU7TUFDbEUsT0FBTztRQUFFL0MsTUFBTSxFQUFFLEtBQUs7UUFBRUMsS0FBSyxFQUFFLEVBQUU7UUFBRUMsV0FBVyxFQUFFLENBQUM7UUFBRUMsTUFBTSxFQUFFO01BQUssQ0FBQztJQUNuRTtJQUNBLE9BQU9SLG9CQUFvQixDQUFDaUMsU0FBUyxDQUFDbUIsT0FBTyxFQUFFSixTQUFTLENBQUNLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN6RSxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTUMsV0FBVyxHQUFHM0QsV0FBVyxDQUFDLFlBQXlCO0lBQ3ZELElBQU1xRCxTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDRixTQUFTLElBQUlBLFNBQVMsQ0FBQ0csVUFBVSxLQUFLLENBQUMsSUFBSSxDQUFDbEIsU0FBUyxDQUFDbUIsT0FBTyxFQUFFO01BQ2xFLE9BQU87UUFBRS9DLE1BQU0sRUFBRSxLQUFLO1FBQUVDLEtBQUssRUFBRSxFQUFFO1FBQUVFLE1BQU0sRUFBRTtNQUFLLENBQUM7SUFDbkQ7SUFDQSxPQUFPcUIsaUJBQWlCLENBQUNJLFNBQVMsQ0FBQ21CLE9BQU8sRUFBRUosU0FBUyxDQUFDSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQzNFLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNRSxVQUFVLEdBQUc1RCxXQUFXLENBQUMsWUFBd0I7SUFDckQsSUFBTXFELFNBQVMsR0FBR0MsTUFBTSxDQUFDQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUNGLFNBQVMsSUFBSUEsU0FBUyxDQUFDRyxVQUFVLEtBQUssQ0FBQyxJQUFJLENBQUNsQixTQUFTLENBQUNtQixPQUFPLEVBQUU7TUFDbEUsT0FBTztRQUFFL0MsTUFBTSxFQUFFLEtBQUs7UUFBRUMsS0FBSyxFQUFFLEVBQUU7UUFBRUUsTUFBTSxFQUFFO01BQUssQ0FBQztJQUNuRDtJQUNBLE9BQU9xQixpQkFBaUIsQ0FBQ0ksU0FBUyxDQUFDbUIsT0FBTyxFQUFFSixTQUFTLENBQUNLLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7RUFDM0UsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU1HLGFBQWEsR0FBRzdELFdBQVcsQ0FBQyxZQUFNO0lBQ3RDLElBQU04RCxJQUFJLEdBQUdWLGFBQWEsQ0FBQyxDQUFDO0lBQzVCVCxVQUFVLENBQUNtQixJQUFJLENBQUM7SUFDaEIsT0FBT0EsSUFBSTtFQUNiLENBQUMsRUFBRSxDQUFDVixhQUFhLENBQUMsQ0FBQztFQUVuQixJQUFNVyxZQUFZLEdBQUcvRCxXQUFXLENBQUMsWUFBTTtJQUNyQzJDLFVBQVUsQ0FBQztNQUFFakMsTUFBTSxFQUFFLEtBQUs7TUFBRUMsS0FBSyxFQUFFLEVBQUU7TUFBRUMsV0FBVyxFQUFFLENBQUM7TUFBRUMsTUFBTSxFQUFFO0lBQUssQ0FBQyxDQUFDO0VBQ3hFLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNbUQsa0JBQWtCLEdBQUdoRSxXQUFXLENBQUMsWUFBTTtJQUMzQyxJQUFNOEQsSUFBSSxHQUFHSCxXQUFXLENBQUMsQ0FBQztJQUMxQlosZUFBZSxDQUFDZSxJQUFJLENBQUM7SUFDckIsT0FBT0EsSUFBSTtFQUNiLENBQUMsRUFBRSxDQUFDSCxXQUFXLENBQUMsQ0FBQztFQUVqQixJQUFNTSxpQkFBaUIsR0FBR2pFLFdBQVcsQ0FBQyxZQUFNO0lBQzFDK0MsZUFBZSxDQUFDO01BQUVyQyxNQUFNLEVBQUUsS0FBSztNQUFFQyxLQUFLLEVBQUUsRUFBRTtNQUFFRSxNQUFNLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDN0QsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU1xRCxpQkFBaUIsR0FBR2xFLFdBQVcsQ0FBQyxZQUFNO0lBQzFDLElBQU04RCxJQUFJLEdBQUdGLFVBQVUsQ0FBQyxDQUFDO0lBQ3pCVCxjQUFjLENBQUNXLElBQUksQ0FBQztJQUNwQixPQUFPQSxJQUFJO0VBQ2IsQ0FBQyxFQUFFLENBQUNGLFVBQVUsQ0FBQyxDQUFDO0VBRWhCLElBQU1PLGdCQUFnQixHQUFHbkUsV0FBVyxDQUFDLFlBQU07SUFDekNtRCxjQUFjLENBQUM7TUFBRXpDLE1BQU0sRUFBRSxLQUFLO01BQUVDLEtBQUssRUFBRSxFQUFFO01BQUVFLE1BQU0sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUM1RCxDQUFDLEVBQUUsRUFBRSxDQUFDOztFQUVOO0FBQ0Y7QUFDQTtBQUNBO0VBQ0UsSUFBTXVELHNCQUFzQixHQUFHcEUsV0FBVyxDQUN4QyxVQUFDcUUsZUFBdUIsRUFBSztJQUMzQixJQUFNQyxZQUFZLEdBQUdELGVBQWUsR0FBRyxDQUFDO0lBQ3hDLElBQU1FLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFRCxJQUFJLENBQUNFLEtBQUssQ0FBQ0YsSUFBSSxDQUFDRyxHQUFHLENBQUNOLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBTVosT0FBTyxHQUFHTCxhQUFhLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUNLLE9BQU8sQ0FBQy9DLE1BQU0sSUFBSSxDQUFDK0MsT0FBTyxDQUFDNUMsTUFBTSxFQUFFO0lBRXhDLElBQUErRCxlQUFBLEdBQXlCbkIsT0FBTyxDQUFDNUMsTUFBTTtNQUEvQkMsSUFBSSxHQUFBOEQsZUFBQSxDQUFKOUQsSUFBSTtNQUFFbUIsTUFBTSxHQUFBMkMsZUFBQSxDQUFOM0MsTUFBTTtJQUNwQixJQUFJbkIsSUFBSSxDQUFDQyxRQUFRLEtBQUtDLElBQUksQ0FBQ0MsU0FBUyxFQUFFO0lBQ3RDLElBQU00RCxRQUFRLEdBQUcvRCxJQUFZO0lBQzdCLElBQU1nRSxJQUFJLEdBQUdELFFBQVEsQ0FBQzFELElBQUk7SUFDMUIsSUFBTTRELGFBQWEsR0FBR1AsSUFBSSxDQUFDRyxHQUFHLENBQUNsQixPQUFPLENBQUM3QyxXQUFXLENBQUM7SUFDbkQsSUFBTW9FLGVBQWUsR0FBR3ZCLE9BQU8sQ0FBQzdDLFdBQVcsR0FBRyxDQUFDO0lBQy9DLElBQU1xRSxRQUFRLEdBQUdGLGFBQWEsSUFBSUMsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBR3ZCLE9BQU8sQ0FBQzlDLEtBQUssQ0FBQ3VFLE1BQU07SUFDakYsSUFBTUMsTUFBTSxHQUFHTCxJQUFJLENBQUMvQyxLQUFLLENBQUMsQ0FBQyxFQUFFRSxNQUFNLENBQUM7SUFDcEMsSUFBTW1ELEtBQUssR0FBR04sSUFBSSxDQUFDL0MsS0FBSyxDQUFDRSxNQUFNLEdBQUdnRCxRQUFRLENBQUM7SUFDM0MsSUFBTUksT0FBTyxHQUFHZixZQUFZLE1BQUFnQixNQUFBLENBQU0sR0FBRyxDQUFDQyxNQUFNLENBQUNoQixRQUFRLENBQUMsU0FBTSxHQUFHLENBQUNnQixNQUFNLENBQUNoQixRQUFRLENBQUM7SUFDaEY7SUFDQSxJQUFNaUIsVUFBVSxHQUFHL0IsT0FBTyxDQUFDOUMsS0FBSyxDQUFDOEUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHaEMsT0FBTyxDQUFDOUMsS0FBSyxDQUFDb0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHMEIsT0FBTyxDQUFDOUMsS0FBSztJQUN6RixJQUFNK0UsU0FBUyxNQUFBSixNQUFBLENBQU1ILE1BQU0sRUFBQUcsTUFBQSxDQUFHRCxPQUFPLEVBQUFDLE1BQUEsQ0FBR0UsVUFBVSxFQUFBRixNQUFBLENBQUdGLEtBQUssQ0FBRTs7SUFFNUQ7SUFDQVAsUUFBUSxDQUFDMUQsSUFBSSxHQUFHdUUsU0FBUztJQUV6QixJQUFNckMsU0FBUyxHQUFHQyxNQUFNLENBQUNDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLElBQUlGLFNBQVMsRUFBRTtNQUNiLElBQU05QyxLQUFLLEdBQUdvRixRQUFRLENBQUNDLFdBQVcsQ0FBQyxDQUFDO01BQ3BDLElBQU1DLFdBQVcsR0FBR1YsTUFBTSxDQUFDRCxNQUFNLEdBQUdHLE9BQU8sQ0FBQ0gsTUFBTSxHQUFHTSxVQUFVLENBQUNOLE1BQU07TUFDdEUzRSxLQUFLLENBQUN1RixRQUFRLENBQUNqQixRQUFRLEVBQUVMLElBQUksQ0FBQ3VCLEdBQUcsQ0FBQ0YsV0FBVyxFQUFFaEIsUUFBUSxDQUFDMUQsSUFBSSxDQUFDK0QsTUFBTSxDQUFDLENBQUM7TUFDckUzRSxLQUFLLENBQUN5RixRQUFRLENBQUMsSUFBSSxDQUFDO01BQ3BCM0MsU0FBUyxDQUFDNEMsZUFBZSxDQUFDLENBQUM7TUFDM0I1QyxTQUFTLENBQUM2QyxRQUFRLENBQUMzRixLQUFLLENBQUM7SUFDM0I7SUFFQSxJQUFNNEYsT0FBTyxHQUFHL0MsYUFBYSxDQUFDLENBQUM7SUFDL0JULFVBQVUsQ0FBQ3dELE9BQU8sQ0FBQztFQUNyQixDQUFDLEVBQ0QsQ0FBQy9DLGFBQWEsQ0FDaEIsQ0FBQzs7RUFFRDtBQUNGO0FBQ0E7QUFDQTtFQUNFLElBQU1nRCxzQkFBc0IsR0FBR3BHLFdBQVcsQ0FDeEMsVUFBQ3FHLFFBQXFCLEVBQUVDLE9BQXVCLEVBQUs7SUFDbEQsSUFBTTdDLE9BQU8sR0FBR0wsYUFBYSxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDSyxPQUFPLENBQUMvQyxNQUFNLElBQUksQ0FBQytDLE9BQU8sQ0FBQzVDLE1BQU0sRUFBRTtJQUV4QyxJQUFBMEYsZ0JBQUEsR0FBeUI5QyxPQUFPLENBQUM1QyxNQUFNO01BQS9CQyxJQUFJLEdBQUF5RixnQkFBQSxDQUFKekYsSUFBSTtNQUFFbUIsTUFBTSxHQUFBc0UsZ0JBQUEsQ0FBTnRFLE1BQU07SUFDcEIsSUFBTTRDLFFBQVEsR0FBRy9ELElBQVk7SUFDN0IsSUFBTWdFLElBQUksR0FBR0QsUUFBUSxDQUFDMUQsSUFBSTtJQUMxQixJQUFNNEQsYUFBYSxHQUFHUCxJQUFJLENBQUNHLEdBQUcsQ0FBQ2xCLE9BQU8sQ0FBQzdDLFdBQVcsQ0FBQztJQUNuRCxJQUFNb0UsZUFBZSxHQUFHdkIsT0FBTyxDQUFDN0MsV0FBVyxHQUFHLENBQUM7SUFDL0MsSUFBTXFFLFFBQVEsR0FBR0YsYUFBYSxJQUFJQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHdkIsT0FBTyxDQUFDOUMsS0FBSyxDQUFDdUUsTUFBTTtJQUNqRixJQUFNRSxLQUFLLEdBQUdOLElBQUksQ0FBQy9DLEtBQUssQ0FBQ0UsTUFBTSxHQUFHZ0QsUUFBUSxDQUFDOztJQUUzQztJQUNBO0lBQ0FKLFFBQVEsQ0FBQzFELElBQUksR0FBRzJELElBQUksQ0FBQy9DLEtBQUssQ0FBQyxDQUFDLEVBQUVFLE1BQU0sQ0FBQzs7SUFFckM7SUFDQW9FLFFBQVEsQ0FBQ0csWUFBWSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDN0NILFFBQVEsQ0FBQ0csWUFBWSxDQUFDLGlCQUFpQixFQUFFQyxNQUFNLENBQUNILE9BQU8sQ0FBQ0ksRUFBRSxDQUFDLENBQUM7SUFDNURMLFFBQVEsQ0FBQ0csWUFBWSxDQUFDLG1CQUFtQixFQUFFRixPQUFPLENBQUNLLElBQUksQ0FBQztJQUN4RE4sUUFBUSxDQUFDRyxZQUFZLENBQUMsb0JBQW9CLEVBQUVGLE9BQU8sQ0FBQ00sS0FBSyxDQUFDO0lBQzFEUCxRQUFRLENBQUNHLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUM7SUFFakQsSUFBTUssTUFBTSxHQUFHaEMsUUFBUSxDQUFDaUMsVUFBVTtJQUNsQyxJQUFJLENBQUNELE1BQU0sRUFBRTtJQUViLElBQU1FLFNBQVMsR0FBR3BCLFFBQVEsQ0FBQ3FCLGNBQWMsUUFBQTFCLE1BQUEsQ0FBVUYsS0FBSyxDQUFFLENBQUM7SUFDM0R5QixNQUFNLENBQUNJLFlBQVksQ0FBQ1osUUFBUSxFQUFFeEIsUUFBUSxDQUFDcUMsV0FBVyxDQUFDO0lBQ25ETCxNQUFNLENBQUNJLFlBQVksQ0FBQ0YsU0FBUyxFQUFFVixRQUFRLENBQUNhLFdBQVcsQ0FBQzs7SUFFcEQ7SUFDQSxJQUFNN0QsU0FBUyxHQUFHQyxNQUFNLENBQUNDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLElBQUlGLFNBQVMsRUFBRTtNQUNiLElBQU05QyxLQUFLLEdBQUdvRixRQUFRLENBQUNDLFdBQVcsQ0FBQyxDQUFDO01BQ3BDckYsS0FBSyxDQUFDdUYsUUFBUSxDQUFDaUIsU0FBUyxFQUFFLENBQUMsQ0FBQztNQUM1QnhHLEtBQUssQ0FBQ3lGLFFBQVEsQ0FBQyxJQUFJLENBQUM7TUFDcEIzQyxTQUFTLENBQUM0QyxlQUFlLENBQUMsQ0FBQztNQUMzQjVDLFNBQVMsQ0FBQzZDLFFBQVEsQ0FBQzNGLEtBQUssQ0FBQztJQUMzQjtJQUVBd0QsWUFBWSxDQUFDLENBQUM7RUFDaEIsQ0FBQyxFQUNELENBQUNYLGFBQWEsRUFBRVcsWUFBWSxDQUM5QixDQUFDO0VBRUQsSUFBTW9ELDJCQUEyQixHQUFHbkgsV0FBVyxDQUM3QyxVQUFDcUcsUUFBcUIsRUFBRWUsWUFBa0MsRUFBSztJQUM3RCxJQUFNM0QsT0FBTyxHQUFHRSxXQUFXLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUNGLE9BQU8sQ0FBQy9DLE1BQU0sSUFBSSxDQUFDK0MsT0FBTyxDQUFDNUMsTUFBTSxFQUFFO0lBRXhDLElBQUF3RyxnQkFBQSxHQUF5QjVELE9BQU8sQ0FBQzVDLE1BQU07TUFBL0JDLElBQUksR0FBQXVHLGdCQUFBLENBQUp2RyxJQUFJO01BQUVtQixNQUFNLEdBQUFvRixnQkFBQSxDQUFOcEYsTUFBTTtJQUNwQixJQUFNNEMsUUFBUSxHQUFHL0QsSUFBWTtJQUM3QixJQUFNZ0UsSUFBSSxHQUFHRCxRQUFRLENBQUMxRCxJQUFJO0lBQzFCLElBQU1tRyxVQUFVLEdBQUcsQ0FBQyxHQUFHN0QsT0FBTyxDQUFDOUMsS0FBSyxDQUFDdUUsTUFBTTtJQUMzQyxJQUFNRSxLQUFLLEdBQUdOLElBQUksQ0FBQy9DLEtBQUssQ0FBQ0UsTUFBTSxHQUFHcUYsVUFBVSxDQUFDO0lBRTdDekMsUUFBUSxDQUFDMUQsSUFBSSxHQUFHMkQsSUFBSSxDQUFDL0MsS0FBSyxDQUFDLENBQUMsRUFBRUUsTUFBTSxDQUFDO0lBRXJDb0UsUUFBUSxDQUFDRyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBQ25ESCxRQUFRLENBQUNHLFlBQVksQ0FBQyxlQUFlLEVBQUVDLE1BQU0sQ0FBQ1csWUFBWSxDQUFDVixFQUFFLENBQUMsQ0FBQztJQUMvREwsUUFBUSxDQUFDRyxZQUFZLENBQUMsa0JBQWtCLEVBQUVZLFlBQVksQ0FBQ1IsS0FBSyxDQUFDO0lBQzdEUCxRQUFRLENBQUNHLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUM7SUFFakQsSUFBTUssTUFBTSxHQUFHaEMsUUFBUSxDQUFDaUMsVUFBVTtJQUNsQyxJQUFJLENBQUNELE1BQU0sRUFBRTtJQUViLElBQU1FLFNBQVMsR0FBR3BCLFFBQVEsQ0FBQ3FCLGNBQWMsS0FBQTFCLE1BQUEsQ0FBS0YsS0FBSyxDQUFFLENBQUM7SUFDdER5QixNQUFNLENBQUNJLFlBQVksQ0FBQ1osUUFBUSxFQUFFeEIsUUFBUSxDQUFDcUMsV0FBVyxDQUFDO0lBQ25ETCxNQUFNLENBQUNJLFlBQVksQ0FBQ0YsU0FBUyxFQUFFVixRQUFRLENBQUNhLFdBQVcsQ0FBQztJQUVwRCxJQUFNN0QsU0FBUyxHQUFHQyxNQUFNLENBQUNDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLElBQUlGLFNBQVMsRUFBRTtNQUNiLElBQU05QyxLQUFLLEdBQUdvRixRQUFRLENBQUNDLFdBQVcsQ0FBQyxDQUFDO01BQ3BDckYsS0FBSyxDQUFDdUYsUUFBUSxDQUFDaUIsU0FBUyxFQUFFLENBQUMsQ0FBQztNQUM1QnhHLEtBQUssQ0FBQ3lGLFFBQVEsQ0FBQyxJQUFJLENBQUM7TUFDcEIzQyxTQUFTLENBQUM0QyxlQUFlLENBQUMsQ0FBQztNQUMzQjVDLFNBQVMsQ0FBQzZDLFFBQVEsQ0FBQzNGLEtBQUssQ0FBQztJQUMzQjtJQUVBMEQsaUJBQWlCLENBQUMsQ0FBQztFQUNyQixDQUFDLEVBQ0QsQ0FBQ04sV0FBVyxFQUFFTSxpQkFBaUIsQ0FDakMsQ0FBQzs7RUFFRDtBQUNGO0FBQ0E7QUFDQTtFQUNFLElBQU1zRCwyQkFBMkIsR0FBR3ZILFdBQVcsQ0FDN0MsVUFBQ3FHLFFBQXFCLEVBQUVDLE9BQXVCLEVBQUs7SUFDbEQsSUFBTTdDLE9BQU8sR0FBR0csVUFBVSxDQUFDLENBQUM7SUFDNUIsSUFBSSxDQUFDSCxPQUFPLENBQUMvQyxNQUFNLElBQUksQ0FBQytDLE9BQU8sQ0FBQzVDLE1BQU0sRUFBRTtJQUV4QyxJQUFBMkcsZ0JBQUEsR0FBeUIvRCxPQUFPLENBQUM1QyxNQUFNO01BQS9CQyxJQUFJLEdBQUEwRyxnQkFBQSxDQUFKMUcsSUFBSTtNQUFFbUIsTUFBTSxHQUFBdUYsZ0JBQUEsQ0FBTnZGLE1BQU07SUFDcEIsSUFBTTRDLFFBQVEsR0FBRy9ELElBQVk7SUFDN0IsSUFBTWdFLElBQUksR0FBR0QsUUFBUSxDQUFDMUQsSUFBSTtJQUMxQixJQUFNbUcsVUFBVSxHQUFHLENBQUMsR0FBRzdELE9BQU8sQ0FBQzlDLEtBQUssQ0FBQ3VFLE1BQU07SUFDM0MsSUFBTUUsS0FBSyxHQUFHTixJQUFJLENBQUMvQyxLQUFLLENBQUNFLE1BQU0sR0FBR3FGLFVBQVUsQ0FBQztJQUU3Q3pDLFFBQVEsQ0FBQzFELElBQUksR0FBRzJELElBQUksQ0FBQy9DLEtBQUssQ0FBQyxDQUFDLEVBQUVFLE1BQU0sQ0FBQztJQUVyQ29FLFFBQVEsQ0FBQ0csWUFBWSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDN0NILFFBQVEsQ0FBQ0csWUFBWSxDQUFDLGlCQUFpQixFQUFFQyxNQUFNLENBQUNILE9BQU8sQ0FBQ0ksRUFBRSxDQUFDLENBQUM7SUFDNURMLFFBQVEsQ0FBQ0csWUFBWSxDQUFDLG1CQUFtQixFQUFFRixPQUFPLENBQUNLLElBQUksQ0FBQztJQUN4RE4sUUFBUSxDQUFDRyxZQUFZLENBQUMsb0JBQW9CLEVBQUVGLE9BQU8sQ0FBQ00sS0FBSyxDQUFDO0lBQzFEUCxRQUFRLENBQUNHLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUM7SUFFakQsSUFBTUssTUFBTSxHQUFHaEMsUUFBUSxDQUFDaUMsVUFBVTtJQUNsQyxJQUFJLENBQUNELE1BQU0sRUFBRTtJQUViLElBQU1FLFNBQVMsR0FBR3BCLFFBQVEsQ0FBQ3FCLGNBQWMsUUFBQTFCLE1BQUEsQ0FBVUYsS0FBSyxDQUFFLENBQUM7SUFDM0R5QixNQUFNLENBQUNJLFlBQVksQ0FBQ1osUUFBUSxFQUFFeEIsUUFBUSxDQUFDcUMsV0FBVyxDQUFDO0lBQ25ETCxNQUFNLENBQUNJLFlBQVksQ0FBQ0YsU0FBUyxFQUFFVixRQUFRLENBQUNhLFdBQVcsQ0FBQztJQUVwRCxJQUFNN0QsU0FBUyxHQUFHQyxNQUFNLENBQUNDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLElBQUlGLFNBQVMsRUFBRTtNQUNiLElBQU05QyxLQUFLLEdBQUdvRixRQUFRLENBQUNDLFdBQVcsQ0FBQyxDQUFDO01BQ3BDckYsS0FBSyxDQUFDdUYsUUFBUSxDQUFDaUIsU0FBUyxFQUFFLENBQUMsQ0FBQztNQUM1QnhHLEtBQUssQ0FBQ3lGLFFBQVEsQ0FBQyxJQUFJLENBQUM7TUFDcEIzQyxTQUFTLENBQUM0QyxlQUFlLENBQUMsQ0FBQztNQUMzQjVDLFNBQVMsQ0FBQzZDLFFBQVEsQ0FBQzNGLEtBQUssQ0FBQztJQUMzQjtJQUVBNEQsZ0JBQWdCLENBQUMsQ0FBQztFQUNwQixDQUFDLEVBQ0QsQ0FBQ1AsVUFBVSxFQUFFTyxnQkFBZ0IsQ0FDL0IsQ0FBQztFQUVELElBQU1zRCxTQUFTLEdBQUd6SCxXQUFXLENBQUMsWUFJekI7SUFDSCxJQUFNMEgsRUFBRSxHQUFHcEYsU0FBUyxDQUFDbUIsT0FBTztJQUM1QixJQUFJLENBQUNpRSxFQUFFLEVBQUUsT0FBTztNQUFFeEcsSUFBSSxFQUFFLEVBQUU7TUFBRXlHLFFBQVEsRUFBRSxFQUFFO01BQUVDLGFBQWEsRUFBRTtJQUFHLENBQUM7SUFDN0QsSUFBTUQsUUFBMEIsR0FBRyxFQUFFO0lBQ3JDLElBQU1DLGFBQXFDLEdBQUcsRUFBRTtJQUNoRCxJQUFJMUcsSUFBSSxHQUFHLEVBQUU7SUFFYixJQUFNMkcsS0FBSSxHQUFHLFNBQVBBLElBQUlBLENBQUkvRyxJQUFVLEVBQUs7TUFDM0IsSUFBSUEsSUFBSSxDQUFDQyxRQUFRLEtBQUtDLElBQUksQ0FBQ0MsU0FBUyxFQUFFO1FBQ3BDQyxJQUFJLElBQUtKLElBQUksQ0FBVUssSUFBSTtRQUMzQjtNQUNGO01BQ0EsSUFBSUwsSUFBSSxDQUFDQyxRQUFRLEtBQUtDLElBQUksQ0FBQzhHLFlBQVksRUFBRTtRQUFBLElBQUFDLGVBQUEsRUFBQUMsZ0JBQUE7UUFDdkMsSUFBTUMsTUFBTSxHQUFHbkgsSUFBbUI7UUFDbEMsSUFBSSxFQUFBaUgsZUFBQSxHQUFBRSxNQUFNLENBQUNDLE9BQU8sY0FBQUgsZUFBQSx1QkFBZEEsZUFBQSxDQUFnQnpCLE9BQU8sTUFBSyxNQUFNLEVBQUU7VUFBQSxJQUFBNkIscUJBQUEsRUFBQUMsSUFBQSxFQUFBQyxLQUFBLEVBQUFDLHNCQUFBO1VBQ3RDLElBQU1oQyxPQUF1QixHQUFHO1lBQzlCSSxFQUFFLEdBQUF5QixxQkFBQSxHQUFFRixNQUFNLENBQUNDLE9BQU8sQ0FBQ0ssU0FBUyxjQUFBSixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLEVBQUU7WUFDbEN4QixJQUFJLEdBQUF5QixJQUFBLEdBQUdILE1BQU0sQ0FBQ0MsT0FBTyxDQUFDTSxXQUFXLGNBQUFKLElBQUEsY0FBQUEsSUFBQSxHQUErQixNQUFNO1lBQ3RFeEIsS0FBSyxHQUFBeUIsS0FBQSxJQUFBQyxzQkFBQSxHQUFFTCxNQUFNLENBQUNDLE9BQU8sQ0FBQ08sWUFBWSxjQUFBSCxzQkFBQSxjQUFBQSxzQkFBQSxHQUFJTCxNQUFNLENBQUNTLFdBQVcsY0FBQUwsS0FBQSxjQUFBQSxLQUFBLEdBQUk7VUFDOUQsQ0FBQztVQUNEVixRQUFRLENBQUNnQixJQUFJLENBQUNyQyxPQUFPLENBQUM7VUFDdEJwRixJQUFJLElBQUlmLGdCQUFnQixDQUFDbUcsT0FBTyxDQUFDO1VBQ2pDO1FBQ0Y7UUFDQSxJQUFJLEVBQUEwQixnQkFBQSxHQUFBQyxNQUFNLENBQUNDLE9BQU8sY0FBQUYsZ0JBQUEsdUJBQWRBLGdCQUFBLENBQWdCWixZQUFZLE1BQUssTUFBTSxFQUFFO1VBQUEsSUFBQXdCLHFCQUFBLEVBQUFDLEtBQUEsRUFBQUMsc0JBQUEsRUFBQUMsbUJBQUE7VUFDM0MsSUFBTUMsS0FBMkIsR0FBRztZQUNsQ3RDLEVBQUUsR0FBQWtDLHFCQUFBLEdBQUVYLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDZSxPQUFPLGNBQUFMLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksRUFBRTtZQUNoQ2hDLEtBQUssR0FBQWlDLEtBQUEsSUFBQUMsc0JBQUEsR0FBRWIsTUFBTSxDQUFDQyxPQUFPLENBQUNnQixVQUFVLGNBQUFKLHNCQUFBLGNBQUFBLHNCQUFBLElBQUFDLG1CQUFBLEdBQUlkLE1BQU0sQ0FBQ1MsV0FBVyxjQUFBSyxtQkFBQSx1QkFBbEJBLG1CQUFBLENBQW9CSSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxjQUFBTixLQUFBLGNBQUFBLEtBQUEsR0FBSTtVQUNoRixDQUFDO1VBQ0RqQixhQUFhLENBQUNlLElBQUksQ0FBQ0ssS0FBSyxDQUFDO1VBQ3pCOUgsSUFBSSxJQUFJZCxxQkFBcUIsQ0FBQzRJLEtBQUssQ0FBQztVQUNwQztRQUNGO1FBQ0EsSUFBSWYsTUFBTSxDQUFDbUIsT0FBTyxLQUFLLElBQUksRUFBRTtVQUMzQmxJLElBQUksSUFBSSxJQUFJO1VBQ1o7UUFDRjtRQUNBK0csTUFBTSxDQUFDb0IsVUFBVSxDQUFDQyxPQUFPLENBQUN6QixLQUFJLENBQUM7UUFDL0IsSUFBSUksTUFBTSxDQUFDbUIsT0FBTyxLQUFLLEtBQUssSUFBSW5CLE1BQU0sQ0FBQ21CLE9BQU8sS0FBSyxHQUFHLEVBQUVsSSxJQUFJLElBQUksSUFBSTtNQUN0RTtJQUNGLENBQUM7SUFFRHdHLEVBQUUsQ0FBQzJCLFVBQVUsQ0FBQ0MsT0FBTyxDQUFDekIsS0FBSSxDQUFDO0lBQzNCLE9BQU87TUFBRTNHLElBQUksRUFBRUEsSUFBSSxDQUFDaUksT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7TUFBRXhCLFFBQVEsRUFBUkEsUUFBUTtNQUFFQyxhQUFhLEVBQWJBO0lBQWMsQ0FBQztFQUNwRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTTJCLEtBQUssR0FBR3ZKLFdBQVcsQ0FBQyxZQUFNO0lBQzlCLElBQUlzQyxTQUFTLENBQUNtQixPQUFPLEVBQUVuQixTQUFTLENBQUNtQixPQUFPLENBQUMrRixTQUFTLEdBQUcsRUFBRTtJQUN2RHpGLFlBQVksQ0FBQyxDQUFDO0lBQ2RFLGlCQUFpQixDQUFDLENBQUM7SUFDbkJFLGdCQUFnQixDQUFDLENBQUM7RUFDcEIsQ0FBQyxFQUFFLENBQUNKLFlBQVksRUFBRUUsaUJBQWlCLEVBQUVFLGdCQUFnQixDQUFDLENBQUM7RUFFdkQsSUFBTXNGLEtBQUssR0FBR3pKLFdBQVcsQ0FBQyxZQUFNO0lBQUEsSUFBQTBKLGtCQUFBO0lBQzlCLENBQUFBLGtCQUFBLEdBQUFwSCxTQUFTLENBQUNtQixPQUFPLGNBQUFpRyxrQkFBQSxlQUFqQkEsa0JBQUEsQ0FBbUJELEtBQUssQ0FBQyxDQUFDO0VBQzVCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixPQUFPO0lBQ0xuSCxTQUFTLEVBQVRBLFNBQVM7SUFDVEksT0FBTyxFQUFQQSxPQUFPO0lBQ1BtQixhQUFhLEVBQWJBLGFBQWE7SUFDYkUsWUFBWSxFQUFaQSxZQUFZO0lBQ1pLLHNCQUFzQixFQUF0QkEsc0JBQXNCO0lBQ3RCZ0Msc0JBQXNCLEVBQXRCQSxzQkFBc0I7SUFDdEJ0RCxZQUFZLEVBQVpBLFlBQVk7SUFDWmtCLGtCQUFrQixFQUFsQkEsa0JBQWtCO0lBQ2xCQyxpQkFBaUIsRUFBakJBLGlCQUFpQjtJQUNqQmtELDJCQUEyQixFQUEzQkEsMkJBQTJCO0lBQzNCakUsV0FBVyxFQUFYQSxXQUFXO0lBQ1hnQixpQkFBaUIsRUFBakJBLGlCQUFpQjtJQUNqQkMsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7SUFDaEJvRCwyQkFBMkIsRUFBM0JBLDJCQUEyQjtJQUMzQkUsU0FBUyxFQUFUQSxTQUFTO0lBQ1Q4QixLQUFLLEVBQUxBLEtBQUs7SUFDTEUsS0FBSyxFQUFMQTtFQUNGLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119
503
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZVN0YXRlIiwic2VyaWFsaXplTWVudGlvbiIsInNlcmlhbGl6ZVNsYXNoQ29tbWFuZCIsImRldGVjdE1lbnRpb25UcmlnZ2VyIiwiZWRpdG9yRWwiLCJyYW5nZSIsImNvbnRhaW5zIiwic3RhcnRDb250YWluZXIiLCJhY3RpdmUiLCJxdWVyeSIsImF0UnVuTGVuZ3RoIiwiYW5jaG9yIiwibm9kZSIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsInRleHQiLCJkYXRhIiwiY2FyZXQiLCJzdGFydE9mZnNldCIsImkiLCJydW5FbmQiLCJydW5TdGFydCIsInByZXYiLCJjaGFyQXQiLCJpc0JvdW5kYXJ5IiwidGVzdCIsImhhc1NsYXNoU3VmZml4IiwicXVlcnlTdGFydCIsInNsaWNlIiwiaW5jbHVkZXMiLCJvZmZzZXQiLCJkZXRlY3RDaGFyVHJpZ2dlciIsImNoYXIiLCJ0cmlnZ2VySW5kZXgiLCJ1c2VDb250ZXh0TWVudGlvbnMiLCJlZGl0b3JSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ0cmlnZ2VyIiwic2V0VHJpZ2dlciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2xhc2hUcmlnZ2VyIiwic2V0U2xhc2hUcmlnZ2VyIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJoYXNoVHJpZ2dlciIsInNldEhhc2hUcmlnZ2VyIiwiZGV0ZWN0VHJpZ2dlciIsInNlbGVjdGlvbiIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsInJhbmdlQ291bnQiLCJjdXJyZW50IiwiZ2V0UmFuZ2VBdCIsImRldGVjdFNsYXNoIiwiZGV0ZWN0SGFzaCIsInVwZGF0ZVRyaWdnZXIiLCJuZXh0IiwiY2xvc2VUcmlnZ2VyIiwidXBkYXRlU2xhc2hUcmlnZ2VyIiwiY2xvc2VTbGFzaFRyaWdnZXIiLCJ1cGRhdGVIYXNoVHJpZ2dlciIsImNsb3NlSGFzaFRyaWdnZXIiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwibmV4dEF0UnVuTGVuZ3RoIiwibmV4dEhhc1NsYXNoIiwic2FmZU5leHQiLCJNYXRoIiwibWF4IiwiZmxvb3IiLCJhYnMiLCJfY3VycmVudCRhbmNob3IiLCJ0ZXh0Tm9kZSIsImZ1bGwiLCJjdXJyZW50UnVuTGVuIiwiY3VycmVudEhhc1NsYXNoIiwicXVlcnlMZW4iLCJsZW5ndGgiLCJiZWZvcmUiLCJhZnRlciIsIm5leHRSdW4iLCJjb25jYXQiLCJyZXBlYXQiLCJjbGVhblF1ZXJ5Iiwic3RhcnRzV2l0aCIsIm5leHRWYWx1ZSIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJjYXJldE9mZnNldCIsInNldFN0YXJ0IiwibWluIiwiY29sbGFwc2UiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInVwZGF0ZWQiLCJyZXBsYWNlVHJpZ2dlcldpdGhDaGlwIiwiY2hpcE5vZGUiLCJtZW50aW9uIiwiX2N1cnJlbnQkYW5jaG9yMiIsInNldEF0dHJpYnV0ZSIsIlN0cmluZyIsImlkIiwidHlwZSIsImxhYmVsIiwicGFyZW50IiwicGFyZW50Tm9kZSIsInNwYWNlTm9kZSIsImNyZWF0ZVRleHROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJyZW1vdmUiLCJyZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAiLCJzbGFzaENvbW1hbmQiLCJfY3VycmVudCRhbmNob3IzIiwidHJpZ2dlckxlbiIsInJlcGxhY2VUcmlnZ2VyV2l0aFNraWxsQ2hpcCIsIl9jdXJyZW50JGFuY2hvcjQiLCJzZXJpYWxpemUiLCJlbCIsIm1lbnRpb25zIiwic2xhc2hDb21tYW5kcyIsIndhbGsiLCJFTEVNRU5UX05PREUiLCJfZWxOb2RlJGRhdGFzZXQiLCJfZWxOb2RlJGRhdGFzZXQyIiwiZWxOb2RlIiwiZGF0YXNldCIsIl9lbE5vZGUkZGF0YXNldCRtZW50aSIsIl9yZWYiLCJfcmVmMiIsIl9lbE5vZGUkZGF0YXNldCRtZW50aTIiLCJtZW50aW9uSWQiLCJtZW50aW9uVHlwZSIsIm1lbnRpb25MYWJlbCIsInRleHRDb250ZW50IiwicHVzaCIsIl9lbE5vZGUkZGF0YXNldCRzbGFzaCIsIl9yZWYzIiwiX2VsTm9kZSRkYXRhc2V0JHNsYXNoMiIsIl9lbE5vZGUkdGV4dENvbnRlbnQiLCJzbGFzaCIsInNsYXNoSWQiLCJzbGFzaExhYmVsIiwicmVwbGFjZSIsInRhZ05hbWUiLCJjaGlsZE5vZGVzIiwiZm9yRWFjaCIsImNsZWFyIiwiaW5uZXJIVE1MIiwiZm9jdXMiLCJfZWRpdG9yUmVmJGN1cnJlbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQ29udGV4dE1lbnRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgc2VyaWFsaXplTWVudGlvbiB9IGZyb20gJy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IHNlcmlhbGl6ZVNsYXNoQ29tbWFuZCB9IGZyb20gJy4uL3V0aWxzL3NsYXNoQ29tbWFuZE1hcmtlcidcbmltcG9ydCB0eXBlIHsgU2xhc2hDb21tYW5kQ2hpcERhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL1NsYXNoQ29tbWFuZENoaXAvYnVpbGRTbGFzaENoaXBFbGVtZW50J1xuXG5leHBvcnQgdHlwZSBNZW50aW9uVHJpZ2dlclN0YXRlID0ge1xuICBhY3RpdmU6IGJvb2xlYW5cbiAgcXVlcnk6IHN0cmluZ1xuICAvKiogQ2FudGlkYWQgZGUgYEBgIGNvbnNlY3V0aXZvcyBkZWwgdHJpZ2dlciAoYEBgIOKGkiAxLCBgQEBgIOKGkiAyKS4gTWFwZWEgYSBsYSB0YWIgZW4gb3JkZW4uICovXG4gIGF0UnVuTGVuZ3RoOiBudW1iZXJcbiAgLyoqIFBvc2ljacOzbiBkZWwgcHJpbWVyIGBAYCBkZWwgcnVuIChyZWVtcGxhem8gZGVsIGNoaXApLiAqL1xuICBhbmNob3I6IHsgbm9kZTogTm9kZTsgb2Zmc2V0OiBudW1iZXIgfSB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgU2xhc2hUcmlnZ2VyU3RhdGUgPSB7XG4gIGFjdGl2ZTogYm9vbGVhblxuICBxdWVyeTogc3RyaW5nXG4gIGFuY2hvcjogeyBub2RlOiBOb2RlOyBvZmZzZXQ6IG51bWJlciB9IHwgbnVsbFxufVxuXG4vKiogVHJpZ2dlciBgI2AgcXVlIGFicmUgZWwgbGlzdGFkbyBkZSBza2lsbHMuIE1pc21hIGZvcm1hIHF1ZSBlbCBkZSBzbGFzaC4gKi9cbmV4cG9ydCB0eXBlIEhhc2hUcmlnZ2VyU3RhdGUgPSBTbGFzaFRyaWdnZXJTdGF0ZVxuXG4vKipcbiAqIEluc3BlY2Npb25hIGxhIHNlbGVjY2nDs24gYWN0dWFsLiBGb3JtYXRvOiBbbMOtbWl0ZSBkZSBwYWxhYnJhXSBAKyBxdWVyeSBoYXN0YSBlbCBjYXJldC5cbiAqIFBlcm1pdGUgZXNwYWNpb3Mgc2ltcGxlcyBkZW50cm8gZGVsIHF1ZXJ5IChwLiBlai4gXCJASnVhbiBQZXJlelwiKSB5IGNpZXJyYVxuICogZWwgdHJpZ2dlciBjdWFuZG8gZGV0ZWN0YSBkb3MgZXNwYWNpb3MgY29uc2VjdXRpdm9zLlxuICogTGEgdGFiIG9iamV0aXZvIGVzIGxhIHF1ZSBjb3JyZXNwb25kZSBhbCBuw7ptZXJvIGRlIGBAYCAoMSA9IHByaW1lcmEgdGFiIHZpc2libGUsIGV0Yy4pLlxuICovXG5jb25zdCBkZXRlY3RNZW50aW9uVHJpZ2dlciA9IChlZGl0b3JFbDogSFRNTEVsZW1lbnQgfCBudWxsLCByYW5nZTogUmFuZ2UpOiBNZW50aW9uVHJpZ2dlclN0YXRlID0+IHtcbiAgaWYgKCFlZGl0b3JFbCB8fCAhZWRpdG9yRWwuY29udGFpbnMocmFuZ2Uuc3RhcnRDb250YWluZXIpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCBub2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXJcbiAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCB0ZXh0ID0gKG5vZGUgYXMgVGV4dCkuZGF0YVxuICBjb25zdCBjYXJldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0XG4gIGxldCBpID0gY2FyZXQgLSAxXG4gIGlmIChpIDwgMCkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICB3aGlsZSAoaSA+PSAwICYmIHRleHRbaV0gIT09ICdAJykgaSAtPSAxXG4gIGlmIChpIDwgMCB8fCB0ZXh0W2ldICE9PSAnQCcpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgY29uc3QgcnVuRW5kID0gaVxuICB3aGlsZSAoaSA+PSAwICYmIHRleHRbaV0gPT09ICdAJykge1xuICAgIGkgLT0gMVxuICB9XG4gIGNvbnN0IHJ1blN0YXJ0ID0gaSArIDFcbiAgY29uc3QgYXRSdW5MZW5ndGggPSBydW5FbmQgLSBydW5TdGFydCArIDFcbiAgY29uc3QgcHJldiA9IHJ1blN0YXJ0ID4gMCA/IHRleHQuY2hhckF0KHJ1blN0YXJ0IC0gMSkgOiAnJ1xuICBjb25zdCBpc0JvdW5kYXJ5ID0gIXByZXYgfHwgL1tcXHMoW3tdLy50ZXN0KHByZXYpXG4gIGlmICghaXNCb3VuZGFyeSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICBjb25zdCBoYXNTbGFzaFN1ZmZpeCA9IHRleHRbcnVuRW5kICsgMV0gPT09ICcvJ1xuICBjb25zdCBxdWVyeVN0YXJ0ID0gaGFzU2xhc2hTdWZmaXggPyBydW5FbmQgKyAyIDogcnVuRW5kICsgMVxuICBjb25zdCBxdWVyeSA9IHRleHQuc2xpY2UocXVlcnlTdGFydCwgY2FyZXQpXG4gIGlmICgvXFxufFxcci8udGVzdChxdWVyeSkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICB9XG4gIGlmIChxdWVyeS5pbmNsdWRlcygnICAnKSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBxdWVyeSxcbiAgICBhdFJ1bkxlbmd0aDogaGFzU2xhc2hTdWZmaXggPyAtYXRSdW5MZW5ndGggOiBhdFJ1bkxlbmd0aCxcbiAgICBhbmNob3I6IHsgbm9kZSwgb2Zmc2V0OiBydW5TdGFydCB9LFxuICB9XG59XG5cbi8qKiBEZXRlY3RhIHVuIHRyaWdnZXIgZGUgdW4gc29sbyBjYXJhY3RlciAoYC9gIG8gYCNgKSBlbiBsw61taXRlIGRlIHBhbGFicmEsIGNvbiBxdWVyeSBoYXN0YSBlbCBjYXJldC4gKi9cbmNvbnN0IGRldGVjdENoYXJUcmlnZ2VyID0gKGVkaXRvckVsOiBIVE1MRWxlbWVudCB8IG51bGwsIHJhbmdlOiBSYW5nZSwgY2hhcjogc3RyaW5nKTogU2xhc2hUcmlnZ2VyU3RhdGUgPT4ge1xuICBpZiAoIWVkaXRvckVsIHx8ICFlZGl0b3JFbC5jb250YWlucyhyYW5nZS5zdGFydENvbnRhaW5lcikpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgY29uc3Qgbm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyXG4gIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCB0ZXh0ID0gKG5vZGUgYXMgVGV4dCkuZGF0YVxuICBjb25zdCBjYXJldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0XG4gIGxldCBpID0gY2FyZXQgLSAxXG4gIGlmIChpIDwgMCkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgfVxuXG4gIHdoaWxlIChpID49IDAgJiYgdGV4dFtpXSAhPT0gY2hhcikgaSAtPSAxXG4gIGlmIChpIDwgMCB8fCB0ZXh0W2ldICE9PSBjaGFyKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgY29uc3QgdHJpZ2dlckluZGV4ID0gaVxuICBjb25zdCBwcmV2ID0gdHJpZ2dlckluZGV4ID4gMCA/IHRleHQuY2hhckF0KHRyaWdnZXJJbmRleCAtIDEpIDogJydcbiAgY29uc3QgaXNCb3VuZGFyeSA9ICFwcmV2IHx8IC9bXFxzKFt7XS8udGVzdChwcmV2KVxuICBpZiAoIWlzQm91bmRhcnkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICBjb25zdCBxdWVyeSA9IHRleHQuc2xpY2UodHJpZ2dlckluZGV4ICsgMSwgY2FyZXQpXG4gIGlmICgvXFxufFxcci8udGVzdChxdWVyeSkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgaWYgKHF1ZXJ5LmluY2x1ZGVzKCcgICcpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgcmV0dXJuIHsgYWN0aXZlOiB0cnVlLCBxdWVyeSwgYW5jaG9yOiB7IG5vZGUsIG9mZnNldDogdHJpZ2dlckluZGV4IH0gfVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ29udGV4dE1lbnRpb25zID0gKCkgPT4ge1xuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSB1c2VTdGF0ZTxNZW50aW9uVHJpZ2dlclN0YXRlPih7XG4gICAgYWN0aXZlOiBmYWxzZSxcbiAgICBxdWVyeTogJycsXG4gICAgYXRSdW5MZW5ndGg6IDAsXG4gICAgYW5jaG9yOiBudWxsLFxuICB9KVxuICBjb25zdCBbc2xhc2hUcmlnZ2VyLCBzZXRTbGFzaFRyaWdnZXJdID0gdXNlU3RhdGU8U2xhc2hUcmlnZ2VyU3RhdGU+KHtcbiAgICBhY3RpdmU6IGZhbHNlLFxuICAgIHF1ZXJ5OiAnJyxcbiAgICBhbmNob3I6IG51bGwsXG4gIH0pXG4gIGNvbnN0IFtoYXNoVHJpZ2dlciwgc2V0SGFzaFRyaWdnZXJdID0gdXNlU3RhdGU8SGFzaFRyaWdnZXJTdGF0ZT4oe1xuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgcXVlcnk6ICcnLFxuICAgIGFuY2hvcjogbnVsbCxcbiAgfSlcblxuICBjb25zdCBkZXRlY3RUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCk6IE1lbnRpb25UcmlnZ2VyU3RhdGUgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwIHx8ICFlZGl0b3JSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgICB9XG4gICAgcmV0dXJuIGRldGVjdE1lbnRpb25UcmlnZ2VyKGVkaXRvclJlZi5jdXJyZW50LCBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKSlcbiAgfSwgW10pXG5cbiAgY29uc3QgZGV0ZWN0U2xhc2ggPSB1c2VDYWxsYmFjaygoKTogU2xhc2hUcmlnZ2VyU3RhdGUgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwIHx8ICFlZGl0b3JSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICAgIH1cbiAgICByZXR1cm4gZGV0ZWN0Q2hhclRyaWdnZXIoZWRpdG9yUmVmLmN1cnJlbnQsIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLCAnLycpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGRldGVjdEhhc2ggPSB1c2VDYWxsYmFjaygoKTogSGFzaFRyaWdnZXJTdGF0ZSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDAgfHwgIWVkaXRvclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gICAgfVxuICAgIHJldHVybiBkZXRlY3RDaGFyVHJpZ2dlcihlZGl0b3JSZWYuY3VycmVudCwgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCksICcjJylcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBuZXh0ID0gZGV0ZWN0VHJpZ2dlcigpXG4gICAgc2V0VHJpZ2dlcihuZXh0KVxuICAgIHJldHVybiBuZXh0XG4gIH0sIFtkZXRlY3RUcmlnZ2VyXSlcblxuICBjb25zdCBjbG9zZVRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VHJpZ2dlcih7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9KVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTbGFzaFRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IGRldGVjdFNsYXNoKClcbiAgICBzZXRTbGFzaFRyaWdnZXIobmV4dClcbiAgICByZXR1cm4gbmV4dFxuICB9LCBbZGV0ZWN0U2xhc2hdKVxuXG4gIGNvbnN0IGNsb3NlU2xhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNsYXNoVHJpZ2dlcih7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUhhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG5leHQgPSBkZXRlY3RIYXNoKClcbiAgICBzZXRIYXNoVHJpZ2dlcihuZXh0KVxuICAgIHJldHVybiBuZXh0XG4gIH0sIFtkZXRlY3RIYXNoXSlcblxuICBjb25zdCBjbG9zZUhhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEhhc2hUcmlnZ2VyKHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfSlcbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIEFqdXN0YSBsYSBjYW50aWRhZCBkZSBgQGAgZGVsIHRyaWdnZXIgYWN0aXZvIHNpbiBwZXJkZXIgZWwgcXVlcnkgYWN0dWFsLlxuICAgKiBFai46IGBAQGFiY2AgLT4gYEBhYmNgIGFsIGNhbWJpYXIgZGUgdGFiLlxuICAgKi9cbiAgY29uc3Qgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aCA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXh0QXRSdW5MZW5ndGg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgbmV4dEhhc1NsYXNoID0gbmV4dEF0UnVuTGVuZ3RoIDwgMFxuICAgICAgY29uc3Qgc2FmZU5leHQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKE1hdGguYWJzKG5leHRBdFJ1bkxlbmd0aCkpKVxuICAgICAgY29uc3QgY3VycmVudCA9IGRldGVjdFRyaWdnZXIoKVxuICAgICAgaWYgKCFjdXJyZW50LmFjdGl2ZSB8fCAhY3VycmVudC5hbmNob3IpIHJldHVyblxuXG4gICAgICBjb25zdCB7IG5vZGUsIG9mZnNldCB9ID0gY3VycmVudC5hbmNob3JcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkgcmV0dXJuXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IG5vZGUgYXMgVGV4dFxuICAgICAgY29uc3QgZnVsbCA9IHRleHROb2RlLmRhdGFcbiAgICAgIGNvbnN0IGN1cnJlbnRSdW5MZW4gPSBNYXRoLmFicyhjdXJyZW50LmF0UnVuTGVuZ3RoKVxuICAgICAgY29uc3QgY3VycmVudEhhc1NsYXNoID0gY3VycmVudC5hdFJ1bkxlbmd0aCA8IDBcbiAgICAgIGNvbnN0IHF1ZXJ5TGVuID0gY3VycmVudFJ1bkxlbiArIChjdXJyZW50SGFzU2xhc2ggPyAxIDogMCkgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYmVmb3JlID0gZnVsbC5zbGljZSgwLCBvZmZzZXQpXG4gICAgICBjb25zdCBhZnRlciA9IGZ1bGwuc2xpY2Uob2Zmc2V0ICsgcXVlcnlMZW4pXG4gICAgICBjb25zdCBuZXh0UnVuID0gbmV4dEhhc1NsYXNoID8gYCR7J0AnLnJlcGVhdChzYWZlTmV4dCl9L2AgOiAnQCcucmVwZWF0KHNhZmVOZXh0KVxuICAgICAgLy8gU2kgdmVuaW1vcyBkZWwgdGFiIHNraWxsLCBlbCBxdWVyeSB0aWVuZSAnLycgY29tbyBwcmVmaWpvIOKAlCBsaW1waWFybG8gYWwgY2FtYmlhciBkZSB0YWIuXG4gICAgICBjb25zdCBjbGVhblF1ZXJ5ID0gY3VycmVudC5xdWVyeS5zdGFydHNXaXRoKCcvJykgPyBjdXJyZW50LnF1ZXJ5LnNsaWNlKDEpIDogY3VycmVudC5xdWVyeVxuICAgICAgY29uc3QgbmV4dFZhbHVlID0gYCR7YmVmb3JlfSR7bmV4dFJ1bn0ke2NsZWFuUXVlcnl9JHthZnRlcn1gXG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgdGV4dE5vZGUuZGF0YSA9IG5leHRWYWx1ZVxuXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIGNvbnN0IGNhcmV0T2Zmc2V0ID0gYmVmb3JlLmxlbmd0aCArIG5leHRSdW4ubGVuZ3RoICsgY2xlYW5RdWVyeS5sZW5ndGhcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIE1hdGgubWluKGNhcmV0T2Zmc2V0LCB0ZXh0Tm9kZS5kYXRhLmxlbmd0aCkpXG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG4gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICAgIHNldFRyaWdnZXIodXBkYXRlZClcbiAgICB9LFxuICAgIFtkZXRlY3RUcmlnZ2VyXVxuICApXG5cbiAgLyoqXG4gICAqIFJlZW1wbGF6YSBlbCBgQHF1ZXJ5YCBwZW5kaWVudGUgcG9yIHVuIGNoaXAgYXTDs21pY28gY29uIGxhIG1lbnRpb24uXG4gICAqIFJlcXVpZXJlIHF1ZSBlbCBjYWxsZXIgcHJvdmVhIGVsIERPTSBkZWwgY2hpcCAoc2UgaW5zZXJ0YSB0YWwgY3VhbCkuXG4gICAqL1xuICBjb25zdCByZXBsYWNlVHJpZ2dlcldpdGhDaGlwID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoaXBOb2RlOiBIVE1MRWxlbWVudCwgbWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICAgIGlmICghY3VycmVudC5hY3RpdmUgfHwgIWN1cnJlbnQuYW5jaG9yKSByZXR1cm5cblxuICAgICAgY29uc3QgeyBub2RlLCBvZmZzZXQgfSA9IGN1cnJlbnQuYW5jaG9yXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IG5vZGUgYXMgVGV4dFxuICAgICAgY29uc3QgZnVsbCA9IHRleHROb2RlLmRhdGFcbiAgICAgIGNvbnN0IGN1cnJlbnRSdW5MZW4gPSBNYXRoLmFicyhjdXJyZW50LmF0UnVuTGVuZ3RoKVxuICAgICAgY29uc3QgY3VycmVudEhhc1NsYXNoID0gY3VycmVudC5hdFJ1bkxlbmd0aCA8IDBcbiAgICAgIGNvbnN0IHF1ZXJ5TGVuID0gY3VycmVudFJ1bkxlbiArIChjdXJyZW50SGFzU2xhc2ggPyAxIDogMCkgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHF1ZXJ5TGVuKVxuXG4gICAgICAvLyBUcnVuY2FyIGVsIHRleHRvIGhhc3RhIGFudGVzIGRlbCBydW4gZGUgYEDigKZgXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIHRleHROb2RlLmRhdGEgPSBmdWxsLnNsaWNlKDAsIG9mZnNldClcblxuICAgICAgLy8gSW5zZXJ0YXIgZWwgY2hpcCBqdXN0byBkZXNwdcOpcyBkZWwgbm9kbyBkZSB0ZXh0b1xuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24nLCAndHJ1ZScpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1pZCcsIFN0cmluZyhtZW50aW9uLmlkKSlcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXR5cGUnLCBtZW50aW9uLnR5cGUpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1sYWJlbCcsIG1lbnRpb24ubGFiZWwpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IHRleHROb2RlLnBhcmVudE5vZGVcbiAgICAgIGlmICghcGFyZW50KSByZXR1cm5cblxuICAgICAgY29uc3Qgc3BhY2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxcdTAwYTAke2FmdGVyfWApXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaXBOb2RlLCB0ZXh0Tm9kZS5uZXh0U2libGluZylcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3BhY2VOb2RlLCBjaGlwTm9kZS5uZXh0U2libGluZylcblxuICAgICAgLy8gUmVwb3NpY2lvbmFyIGNhcmV0IGRlc3B1w6lzIGRlbCBjaGlwIChhbnRlcyBkZWwgZXNwYWNpbyBub24tYnJlYWtpbmcpXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHNwYWNlTm9kZSwgMSlcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgIH1cblxuICAgICAgaWYgKHRleHROb2RlLmRhdGEgPT09ICcnKSB0ZXh0Tm9kZS5yZW1vdmUoKVxuXG4gICAgICBjbG9zZVRyaWdnZXIoKVxuICAgIH0sXG4gICAgW2RldGVjdFRyaWdnZXIsIGNsb3NlVHJpZ2dlcl1cbiAgKVxuXG4gIGNvbnN0IHJlcGxhY2VUcmlnZ2VyV2l0aFNsYXNoQ2hpcCA9IHVzZUNhbGxiYWNrKFxuICAgIChjaGlwTm9kZTogSFRNTEVsZW1lbnQsIHNsYXNoQ29tbWFuZDogU2xhc2hDb21tYW5kQ2hpcERhdGEpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBkZXRlY3RTbGFzaCgpXG4gICAgICBpZiAoIWN1cnJlbnQuYWN0aXZlIHx8ICFjdXJyZW50LmFuY2hvcikgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHsgbm9kZSwgb2Zmc2V0IH0gPSBjdXJyZW50LmFuY2hvclxuICAgICAgY29uc3QgdGV4dE5vZGUgPSBub2RlIGFzIFRleHRcbiAgICAgIGNvbnN0IGZ1bGwgPSB0ZXh0Tm9kZS5kYXRhXG4gICAgICBjb25zdCB0cmlnZ2VyTGVuID0gMSArIGN1cnJlbnQucXVlcnkubGVuZ3RoXG4gICAgICBjb25zdCBhZnRlciA9IGZ1bGwuc2xpY2Uob2Zmc2V0ICsgdHJpZ2dlckxlbilcblxuICAgICAgdGV4dE5vZGUuZGF0YSA9IGZ1bGwuc2xpY2UoMCwgb2Zmc2V0KVxuXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2xhc2gtY29tbWFuZCcsICd0cnVlJylcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1zbGFzaC1pZCcsIFN0cmluZyhzbGFzaENvbW1hbmQuaWQpKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXNsYXNoLWxhYmVsJywgc2xhc2hDb21tYW5kLmxhYmVsKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKVxuXG4gICAgICBjb25zdCBwYXJlbnQgPSB0ZXh0Tm9kZS5wYXJlbnROb2RlXG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHNwYWNlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAgJHthZnRlcn1gKVxuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShjaGlwTm9kZSwgdGV4dE5vZGUubmV4dFNpYmxpbmcpXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYWNlTm9kZSwgY2hpcE5vZGUubmV4dFNpYmxpbmcpXG5cbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKClcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQoc3BhY2VOb2RlLCAxKVxuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKVxuICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKClcbiAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKVxuICAgICAgfVxuXG4gICAgICBpZiAodGV4dE5vZGUuZGF0YSA9PT0gJycpIHRleHROb2RlLnJlbW92ZSgpXG5cbiAgICAgIGNsb3NlU2xhc2hUcmlnZ2VyKClcbiAgICB9LFxuICAgIFtkZXRlY3RTbGFzaCwgY2xvc2VTbGFzaFRyaWdnZXJdXG4gIClcblxuICAvKipcbiAgICogUmVlbXBsYXphIGVsIGAjcXVlcnlgIHBlbmRpZW50ZSBwb3IgdW4gY2hpcCBkZSBza2lsbC4gTGEgc2tpbGwgc2lndWUgdmlhamFuZG9cbiAgICogY29tbyBtZW50aW9uIChgZGF0YS1tZW50aW9uKmApIHBhcmEgcXVlIGVsIGJhY2tlbmQgbGEgcmVzdWVsdmEgcG9yIGlkLlxuICAgKi9cbiAgY29uc3QgcmVwbGFjZVRyaWdnZXJXaXRoU2tpbGxDaGlwID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoaXBOb2RlOiBIVE1MRWxlbWVudCwgbWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBkZXRlY3RIYXNoKClcbiAgICAgIGlmICghY3VycmVudC5hY3RpdmUgfHwgIWN1cnJlbnQuYW5jaG9yKSByZXR1cm5cblxuICAgICAgY29uc3QgeyBub2RlLCBvZmZzZXQgfSA9IGN1cnJlbnQuYW5jaG9yXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IG5vZGUgYXMgVGV4dFxuICAgICAgY29uc3QgZnVsbCA9IHRleHROb2RlLmRhdGFcbiAgICAgIGNvbnN0IHRyaWdnZXJMZW4gPSAxICsgY3VycmVudC5xdWVyeS5sZW5ndGhcbiAgICAgIGNvbnN0IGFmdGVyID0gZnVsbC5zbGljZShvZmZzZXQgKyB0cmlnZ2VyTGVuKVxuXG4gICAgICB0ZXh0Tm9kZS5kYXRhID0gZnVsbC5zbGljZSgwLCBvZmZzZXQpXG5cbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uJywgJ3RydWUnKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24taWQnLCBTdHJpbmcobWVudGlvbi5pZCkpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi10eXBlJywgbWVudGlvbi50eXBlKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tbGFiZWwnLCBtZW50aW9uLmxhYmVsKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKVxuXG4gICAgICBjb25zdCBwYXJlbnQgPSB0ZXh0Tm9kZS5wYXJlbnROb2RlXG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHNwYWNlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGBcXHUwMGEwJHthZnRlcn1gKVxuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShjaGlwTm9kZSwgdGV4dE5vZGUubmV4dFNpYmxpbmcpXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYWNlTm9kZSwgY2hpcE5vZGUubmV4dFNpYmxpbmcpXG5cbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKClcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQoc3BhY2VOb2RlLCAxKVxuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKVxuICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKClcbiAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKVxuICAgICAgfVxuXG4gICAgICBpZiAodGV4dE5vZGUuZGF0YSA9PT0gJycpIHRleHROb2RlLnJlbW92ZSgpXG5cbiAgICAgIGNsb3NlSGFzaFRyaWdnZXIoKVxuICAgIH0sXG4gICAgW2RldGVjdEhhc2gsIGNsb3NlSGFzaFRyaWdnZXJdXG4gIClcblxuICBjb25zdCBzZXJpYWxpemUgPSB1c2VDYWxsYmFjaygoKToge1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgc2xhc2hDb21tYW5kczogU2xhc2hDb21tYW5kQ2hpcERhdGFbXVxuICB9ID0+IHtcbiAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuIHsgdGV4dDogJycsIG1lbnRpb25zOiBbXSwgc2xhc2hDb21tYW5kczogW10gfVxuICAgIGNvbnN0IG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdID0gW11cbiAgICBjb25zdCBzbGFzaENvbW1hbmRzOiBTbGFzaENvbW1hbmRDaGlwRGF0YVtdID0gW11cbiAgICBsZXQgdGV4dCA9ICcnXG5cbiAgICBjb25zdCB3YWxrID0gKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICB0ZXh0ICs9IChub2RlIGFzIFRleHQpLmRhdGFcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgY29uc3QgZWxOb2RlID0gbm9kZSBhcyBIVE1MRWxlbWVudFxuICAgICAgICBpZiAoZWxOb2RlLmRhdGFzZXQ/Lm1lbnRpb24gPT09ICd0cnVlJykge1xuICAgICAgICAgIGNvbnN0IG1lbnRpb246IENvbnRleHRNZW50aW9uID0ge1xuICAgICAgICAgICAgaWQ6IGVsTm9kZS5kYXRhc2V0Lm1lbnRpb25JZCA/PyAnJyxcbiAgICAgICAgICAgIHR5cGU6IChlbE5vZGUuZGF0YXNldC5tZW50aW9uVHlwZSBhcyBDb250ZXh0TWVudGlvblsndHlwZSddKSA/PyAndXNlcicsXG4gICAgICAgICAgICBsYWJlbDogZWxOb2RlLmRhdGFzZXQubWVudGlvbkxhYmVsID8/IGVsTm9kZS50ZXh0Q29udGVudCA/PyAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgbWVudGlvbnMucHVzaChtZW50aW9uKVxuICAgICAgICAgIHRleHQgKz0gc2VyaWFsaXplTWVudGlvbihtZW50aW9uKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5vZGUuZGF0YXNldD8uc2xhc2hDb21tYW5kID09PSAndHJ1ZScpIHtcbiAgICAgICAgICBjb25zdCBzbGFzaDogU2xhc2hDb21tYW5kQ2hpcERhdGEgPSB7XG4gICAgICAgICAgICBpZDogZWxOb2RlLmRhdGFzZXQuc2xhc2hJZCA/PyAnJyxcbiAgICAgICAgICAgIGxhYmVsOiBlbE5vZGUuZGF0YXNldC5zbGFzaExhYmVsID8/IGVsTm9kZS50ZXh0Q29udGVudD8ucmVwbGFjZSgvXlxcLy8sICcnKSA/PyAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgc2xhc2hDb21tYW5kcy5wdXNoKHNsYXNoKVxuICAgICAgICAgIHRleHQgKz0gc2VyaWFsaXplU2xhc2hDb21tYW5kKHNsYXNoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0JSJykge1xuICAgICAgICAgIHRleHQgKz0gJ1xcbidcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBlbE5vZGUuY2hpbGROb2Rlcy5mb3JFYWNoKHdhbGspXG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0RJVicgfHwgZWxOb2RlLnRhZ05hbWUgPT09ICdQJykgdGV4dCArPSAnXFxuJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsLmNoaWxkTm9kZXMuZm9yRWFjaCh3YWxrKVxuICAgIHJldHVybiB7IHRleHQ6IHRleHQucmVwbGFjZSgvXFxuKyQvLCAnJyksIG1lbnRpb25zLCBzbGFzaENvbW1hbmRzIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgY2xlYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGVkaXRvclJlZi5jdXJyZW50KSBlZGl0b3JSZWYuY3VycmVudC5pbm5lckhUTUwgPSAnJ1xuICAgIGNsb3NlVHJpZ2dlcigpXG4gICAgY2xvc2VTbGFzaFRyaWdnZXIoKVxuICAgIGNsb3NlSGFzaFRyaWdnZXIoKVxuICB9LCBbY2xvc2VUcmlnZ2VyLCBjbG9zZVNsYXNoVHJpZ2dlciwgY2xvc2VIYXNoVHJpZ2dlcl0pXG5cbiAgY29uc3QgZm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgfSwgW10pXG5cbiAgcmV0dXJuIHtcbiAgICBlZGl0b3JSZWYsXG4gICAgdHJpZ2dlcixcbiAgICB1cGRhdGVUcmlnZ2VyLFxuICAgIGNsb3NlVHJpZ2dlcixcbiAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgIHJlcGxhY2VUcmlnZ2VyV2l0aENoaXAsXG4gICAgc2xhc2hUcmlnZ2VyLFxuICAgIHVwZGF0ZVNsYXNoVHJpZ2dlcixcbiAgICBjbG9zZVNsYXNoVHJpZ2dlcixcbiAgICByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAsXG4gICAgaGFzaFRyaWdnZXIsXG4gICAgdXBkYXRlSGFzaFRyaWdnZXIsXG4gICAgY2xvc2VIYXNoVHJpZ2dlcixcbiAgICByZXBsYWNlVHJpZ2dlcldpdGhTa2lsbENoaXAsXG4gICAgc2VyaWFsaXplLFxuICAgIGNsZWFy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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.34.3-0",
3
+ "version": "2.34.3-2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {