@projectcor/maia-components 2.11.17-6 → 2.11.17-8

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.
@@ -418,7 +418,8 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
418
418
  t = _useT.t;
419
419
  var _useGlobalContext3 = useGlobalContext(),
420
420
  isWebSearchActive = _useGlobalContext3.isWebSearchActive,
421
- isDeepSearchActive = _useGlobalContext3.isDeepSearchActive;
421
+ isDeepSearchActive = _useGlobalContext3.isDeepSearchActive,
422
+ agent = _useGlobalContext3.agent;
422
423
  var authUser = useUser();
423
424
  var messagesRef = useRef(null);
424
425
  var chatInitializedRef = useRef(false);
@@ -682,6 +683,7 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
682
683
  }).at(-1);
683
684
  var hasAttachments = Array.isArray(lastUserMessage === null || lastUserMessage === void 0 ? void 0 : lastUserMessage.attachments) && lastUserMessage.attachments.length || Array.isArray(lastUserMessage === null || lastUserMessage === void 0 ? void 0 : lastUserMessage.sources) && lastUserMessage.sources.length;
684
685
  var isScrollOnParent = !!expanded;
686
+ var isMarketplaceGlobalAgent = (agent === null || agent === void 0 ? void 0 : agent.entity) === 'global' && /(maiaker|marketplace)/i.test((agent === null || agent === void 0 ? void 0 : agent.name) || '');
685
687
 
686
688
  // DEBUG streaming: re-renders del contenedor. Habilitar con window.MAIA_DEBUG_STREAMING_RENDER = true
687
689
  var listRenderCountRef = useRef(0);
@@ -785,12 +787,14 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
785
787
  onScroll: handleScrollToBottom,
786
788
  children: /*#__PURE__*/_jsx(SCMessagesInner, {
787
789
  $scrollOnParent: isScrollOnParent,
790
+ $isMarketplaceGlobal: isMarketplaceGlobalAgent,
788
791
  children: messagesContent
789
792
  })
790
793
  }) : /*#__PURE__*/_jsx(SCMessagesInner, {
791
794
  ref: messagesRef,
792
795
  onScroll: handleScrollToBottom,
793
796
  $scrollOnParent: false,
797
+ $isMarketplaceGlobal: isMarketplaceGlobalAgent,
794
798
  children: messagesContent
795
799
  }), showScrollToBottom && /*#__PURE__*/_jsx(ScrollToBottomButton, {
796
800
  type: "button",
@@ -804,4 +808,4 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
804
808
  });
805
809
  };
806
810
  export var ChatAIMessages = /*#__PURE__*/React.memo(ChatAIMessagesInner);
807
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJMb2FkaW5nVGV4dCIsIkxvYWRlciIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ1Rhc2tMaW5rIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJNQUlBSWNvbiIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJDaGF0QUlTdWdnZXN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlN0cmVhbWluZ01lc3NhZ2VDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsImNvZGUiLCJ0aGVtZXMiLCJBc3Npc3RhbnRBdmF0YXJJbm5lciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJjaGlsZHJlbiIsInR5cGUiLCJ3aWR0aCIsImhlaWdodCIsImVtb2ppIiwiQXNzaXN0YW50QXZhdGFyIiwiTWVzc2FnZVdyYXBwZXIiLCJfcmVmIiwiaXNDdXJyZW50VXNlciIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiTWVzc2FnZUNvbXBvbmVudCIsIl9vYmplY3RTcHJlYWQiLCJNZXNzYWdlQ29udGVudFdyYXBwZXIiLCJfcmVmMiIsIl9leGNsdWRlZDIiLCJNZXNzYWdlQ29udGVudENvbXBvbmVudCIsIk1lc3NhZ2VPcHRpb25zIiwiX3JlZjMiLCJvcHRpb25zIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRPcHRpb24iLCJzZXRTZWxlY3RlZE9wdGlvbiIsImhhbmRsZVNlbGVjdCIsIm9wdGlvbiIsIm1hcCIsIiRoYXNTZWxlY3Rpb24iLCIkZGltbWVkIiwiaWQiLCJvbkNsaWNrIiwibmFtZSIsIkFzc2lzdGFudE1lc3NhZ2VIZWFkZXIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvY2FsQWdlbnQiLCJzZXRMb2NhbEFnZW50IiwiX3VzZUdsb2JhbENvbnRleHQyIiwiZ2V0VGFiU2VnbWVudEZyb21IcmVmIiwiaHJlZiIsIm1hdGNoIiwidGVzdCIsImV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlIiwibWVzc2FnZSIsInRhc2tVcmxSZWdleCIsIlJlZ0V4cCIsInRhc2tzIiwic2VlbklkcyIsIlNldCIsImV4ZWMiLCJ0YXNrSWQiLCJ1cmwiLCJoYXMiLCJhZGQiLCJlc2NhcGVkVXJsIiwicmVwbGFjZSIsIm1hcmtkb3duTGlua1JlZ2V4IiwiY29uY2F0IiwibGlua01hdGNoIiwidGl0bGUiLCJwdXNoIiwiaGFzVGFza0xpbmtzIiwidGV4dCIsImxlbmd0aCIsIlRhc2tMaW5rIiwiX3JlZjQiLCJ0YWJTZWdtZW50IiwiX3VzZVRhc2tQYW5lbCIsImJ1aWxkT3BlblRhc2siLCJvcGVuVGFzayIsImhhbmRsZUNsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJDdXN0b21MaW5rIiwiX3JlZjUiLCJyZXN0IiwiX2V4Y2x1ZGVkMyIsInRhc2tNYXRjaCIsIlN0cmVhbWluZ01lc3NhZ2VCb2R5IiwiZnJvbUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiZGlzcGxheVRleHQiLCJpc1N0cmVhbWluZyIsImRlYnVnQ291bnRSZWYiLCJ3aW5kb3ciLCJNQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIiLCJjdXJyZW50IiwiY29uc29sZSIsImxvZyIsImNvdW50IiwibGVuIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsImlzQXNzaXN0YW50IiwicGx1Z2lucyIsImNvbXBvbmVudHMiLCJhIiwibGlua1NhZmV0eSIsImVuYWJsZWQiLCJpc0FuaW1hdGluZyIsInNoaWtpVGhlbWUiLCJjb250cm9scyIsInRhYmxlIiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJtZXNzYWdlSWQiLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiTWVzc2FnZUl0ZW0iLCJfbWVzc2FnZSRsZW5ndGgiLCJfcmVmNiIsIl9yZWY3IiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiaGFzU2VsZWN0ZWRTdWdnZXN0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwicmVuZGVyQ291bnRSZWYiLCJwcmV2TWVzc2FnZUxlblJlZiIsIl9tZXNzYWdlJGxlbmd0aDIiLCJwcmV2TGVuIiwicmVuZGVyQ291bnQiLCJtZXNzYWdlTGVuIiwicHJldk1lc3NhZ2VMZW4iLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4IiwicGVuZGluZ19hY3Rpb25zIiwiYWN0aW9ucyIsInN0YXR1cyIsIm9uQXBwcm92ZSIsInRocmVhZElkcyIsImZvckVhY2giLCJvblJlamVjdCIsImlzUHJvamVjdERlbGV0ZWQiLCJwcm9qZWN0TWV0YWRhdGEiLCJpc19kZWxldGVkIiwiaXNFeHBhbmRlZCIsImV4cGFuZGVkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmOCIsIl9sYXN0TXNnJHVzZXIiLCJfbGFzdE1zZyRtZXNzYWdlMiIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0MyIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwibWVzc2FnZXNSZWYiLCJjaGF0SW5pdGlhbGl6ZWRSZWYiLCJpc0xvYWRpbmdNb3JlUmVmIiwidXNlclNjcm9sbGluZ1JlZiIsInNjcm9sbFRocmVzaG9sZFJlZiIsImxhc3RTY3JvbGxUb3BSZWYiLCJzaG93U2Nyb2xsVG9Cb3R0b21SZWYiLCJzY3JvbGxSYWZSZWYiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dTY3JvbGxUb0JvdHRvbSIsInNldFNob3dTY3JvbGxUb0JvdHRvbSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsInNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYiLCJzdHJlYW1pbmdNZXNzYWdlSWRSZWYiLCJfdXNlQ2hhdE1hbmFnZXIiLCJjaGF0SWQiLCJ1bmRlZmluZWQiLCJtZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsIndhaXRpbmdSZXNwb25zZSIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwiYWN0aXZlTG9hZGluZ3MiLCJzZW5kTWVzc2FnZSIsImNoYW5nZVByb2plY3QiLCJpbml0aWFsaXplQ2hhdCIsImhhbmRsZVNjcm9sbCIsInN0b3BHZW5lcmF0aW9uIiwidHJpbSIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tIiwic2Nyb2xsVG8iLCJ0b3AiLCJzY3JvbGxIZWlnaHQiLCJiZWhhdmlvciIsInNldFRpbWVvdXQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInNob3VsZFNob3ciLCJoYW5kbGVTY3JvbGxUb0JvdHRvbSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzU2Nyb2xsaW5nVXAiLCJpc05lYXJCb3R0b20iLCJkaWRTZXRTdGF0ZSIsInNlbmRNZXNzYWdlUmVmIiwic3RvcEdlbmVyYXRpb25SZWYiLCJvblNlbmRNZXNzYWdlUmVhZHlSZWYiLCJsYXN0TWVzc2FnZSIsImhhc0FwcHJvdmFsIiwiaXNBdEJvdHRvbSIsInNjcm9sbFRvQm90dG9tIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQyIiwiaXNOZXdBbnN3ZXJNZXNzYWdlIiwiaXNOZXdVc2VyTWVzc2FnZSIsImlzTmV3QXBwcm92YWxNZXNzYWdlIiwiaGFzTWVzc2FnZXMiLCJpc05vdEluaXRpYWxNZXNzYWdlIiwibXNnIiwic2Nyb2xsRGVsYXkiLCJkb1Njcm9sbCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50MyIsIl9tZXNzYWdlc1JlZiRjdXJyZW50NCIsImxhc3RVc2VyTWVzc2FnZSIsImF0IiwiaGFzQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJpc1Njcm9sbE9uUGFyZW50IiwibGlzdFJlbmRlckNvdW50UmVmIiwiX2xhc3RNc2ckaWQiLCJfbGFzdE1zZyRtZXNzYWdlJGxlbmciLCJfbGFzdE1zZyRtZXNzYWdlIiwibGFzdE1zZyIsImxhc3RLZXkiLCJsYXN0TWVzc2FnZUtleSIsImxhc3RNZXNzYWdlTGVuIiwibWVzc2FnZXNDb3VudCIsImV4cGFuZGVkUmVmIiwic2F2ZWRTY3JvbGxUb3AiLCJpc1N0cmVhbWluZ0FjdGl2ZSIsInN0cmVhbWluZ1RleHQiLCJtZXNzYWdlc0NvbnRlbnQiLCJQcm92aWRlciIsInZhbHVlIiwiX21lc3NhZ2UkYXR0YWNobWVudHMiLCJfbWVzc2FnZSRzb3VyY2VzIiwiX21lc3NhZ2UkcHJvamVjdCIsIl9tZXNzYWdlJGlkIiwicHJvamVjdCIsIm1lc3NhZ2VGZWVkYmFjayIsIndhc0hlbHBmdWwiLCJUSFVNQlNfVVAiLCJUSFVNQlNfRE9XTiIsImlzQXNzaXN0YW50TWVzc2FnZSIsIm1lc3NhZ2VLZXkiLCJfbWVzc2FnZSRpZDIiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJrZXlzIiwidmFsdWVzIiwiZmluZCIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiY29sb3IiLCJDaGF0QUlNZXNzYWdlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9DaGF0QUlNZXNzYWdlcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby11bnN0YWJsZS1uZXN0ZWQtY29tcG9uZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgbWVtbywgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFN0cmVhbWRvd24gfSBmcm9tICdzdHJlYW1kb3duJ1xuaW1wb3J0IHsgY3JlYXRlQ29kZVBsdWdpbiB9IGZyb20gJ0BzdHJlYW1kb3duL2NvZGUnXG5pbXBvcnQgeyBBcnJvd1NtYWxsRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Fycm93U21hbGxEb3duJ1xuXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXBwcm92YWxCb3ggfSBmcm9tICcuLi8uLi9hdG9tcy9BcHByb3ZhbEJveC9BcHByb3ZhbEJveCdcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3TW9kYWwgfSBmcm9tICcuLi8uLi9hdG9tcy9BdHRhY2htZW50UHJldmlld01vZGFsJ1xuaW1wb3J0IHsgQXR0YWNobWVudENhcmRBdWRpbyB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkQXVkaW8nXG5pbXBvcnQgeyBNQUlBTWVzc2FnZVByb3BzIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQU1lc3NhZ2UvTUFJQU1lc3NhZ2UuaW50ZXJmYWNlcydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0SGlzdG9yeVJvbGUsIFRhc2tJbmZvIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2hhdCdcblxuaW1wb3J0IHsgQ09SVXNlciwgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5cbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgdXNlQ2hhdE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlcidcbmltcG9ydCB7IHVzZVRhc2tQYW5lbCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVRhc2tQYW5lbCdcblxuaW1wb3J0IHsgTG9hZGluZ1RleHQgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkaW5nVGV4dCdcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5cbmltcG9ydCB7IE1lc3NhZ2VGcm9tVXNlciwgTWVzc2FnZUZyb21PdGhlciwgTWVzc2FnZUNvbnRlbnRGcm9tVXNlciwgTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIgfSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IE1lc3NhZ2VGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7XG4gIFNDQ0FJTWVzc2FnZVdyYXBwZXIsXG4gIFNjcm9sbFRvQm90dG9tQnV0dG9uLFxuICBTQ01lc3NhZ2VzT3V0ZXIsXG4gIFNDTWVzc2FnZXNTY3JvbGwsXG4gIFNDTWVzc2FnZXNJbm5lcixcbiAgU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4sXG4gIFNDT3B0aW9uc0xpc3QsXG4gIFNDT3B0aW9uSXRlbSxcbiAgU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyLFxuICBTQ0Fzc2lzdGFudE5hbWUsXG4gIFNDQXNzaXN0YW50QXZhdGFyLFxuICBTQ1Rhc2tMaW5rLFxuICBTQ01lc3NhZ2VJdGVtV3JhcHBlcixcbiAgU0NNZXNzYWdlSXRlbUlubmVyLFxuICBTQ0F0dGFjaG1lbnRzUm93LFxuICBTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbixcbn0gZnJvbSAnLi9uZXdTdHlsZXMnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IE1BSUFJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgQ2hhdEFJU3VnZ2VzdGlvbnMgfSBmcm9tICcuL0NoYXRBSVN1Z2dlc3Rpb25zJ1xuXG4vKiogQ29udGV4dG8gY29uIGVsIHRleHRvIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZy4gU29sbyBlbCBjb21wb25lbnRlIHF1ZSBsbyBjb25zdW1lIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhLiAqL1xuY29uc3QgU3RyZWFtaW5nTWVzc2FnZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PHN0cmluZz4oJycpXG5cbmNvbnN0IGNvZGUgPSBjcmVhdGVDb2RlUGx1Z2luKHsgdGhlbWVzOiBbJ2dpdGh1Yi1saWdodCcsICdnaXRodWItbGlnaHQnXSB9KVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXJJbm5lcjogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudEF2YXRhcj5cbiAgICAgIHthZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyA/IDxNQUlBSWNvbiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+IDogYWdlbnQ/LmVtb2ppfVxuICAgIDwvU0NBc3Npc3RhbnRBdmF0YXI+XG4gIClcbn1cblxuY29uc3QgQXNzaXN0YW50QXZhdGFyID0gbWVtbyhBc3Npc3RhbnRBdmF0YXJJbm5lcilcblxudHlwZSBDaGF0QUlNZXNzYWdlc1Byb3BzID0ge1xuICB1c2VySW5pdGlhbE1lc3NhZ2U6IHsgbWVzc2FnZTogc3RyaW5nOyBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXTsgZmFxSWQ/OiBzdHJpbmcgfVxuICBpbml0aWFsQ2hhdElkOiBzdHJpbmcgfCBudWxsXG4gIG9uRXJyb3I6ICgpID0+IHZvaWRcbiAgb25TZW5kTWVzc2FnZVJlYWR5PzogKFxuICAgIHNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nLCBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sIGZhcUlkPzogc3RyaW5nKSA9PiB2b2lkLFxuICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuLFxuICAgIGlzV3JpdGluZzogYm9vbGVhblxuICApID0+IHZvaWRcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW5cbiAgb25TY3JvbGxUb0JvdHRvbT86ICgpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGFnZW50cz86IEFnZW50W11cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbnR5cGUgTWVzc2FnZUl0ZW1Qcm9wcyA9IENoYXRNZXNzYWdlICYge1xuICBhdXRoVXNlcjogQ09SVXNlclxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbiAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24/OiBib29sZWFuXG4gIGhhbmRsZUZlZWRiYWNrOiAoZmVlZGJhY2s6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbjogKHRocmVhZElkOiBzdHJpbmcsIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JykgPT4gdm9pZFxuICBkaXNhYmxlRmVlZGJhY2s/OiBGZWVkYmFjayB8IG51bGxcbiAgc291cmNlcz86IGFueVxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgTWVzc2FnZVdyYXBwZXJQcm9wcyB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICAnZGF0YS1tZXNzYWdlLWlkJz86IHN0cmluZ1xuICBoYXNGZWVkYmFjaz86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcyA9IE1BSUFNZXNzYWdlUHJvcHMgJiB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgaXNFcnJvcj86IGJvb2xlYW5cbiAgaXNDaGFuZ2VQcm9qZWN0PzogYm9vbGVhblxufVxuXG5jb25zdCBNZXNzYWdlV3JhcHBlcjogRkM8TWVzc2FnZVdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBNZXNzYWdlQ29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VGcm9tVXNlciA6IE1lc3NhZ2VGcm9tT3RoZXJcbiAgcmV0dXJuIDxNZXNzYWdlQ29tcG9uZW50IHsuLi5wcm9wc30+e2NoaWxkcmVufTwvTWVzc2FnZUNvbXBvbmVudD5cbn1cblxuY29uc3QgTWVzc2FnZUNvbnRlbnRXcmFwcGVyOiBGQzxNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb250ZW50Q29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VDb250ZW50RnJvbVVzZXIgOiBNZXNzYWdlQ29udGVudEZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb250ZW50Q29tcG9uZW50IHsuLi5wcm9wc30gLz5cbn1cblxuZnVuY3Rpb24gTWVzc2FnZU9wdGlvbnMoe1xuICBvcHRpb25zLFxuICBoYW5kbGVTZWxlY3RPcHRpb24sXG59OiB7XG4gIG9wdGlvbnM6IFByb2plY3RbXSB8IG51bGxcbiAgaGFuZGxlU2VsZWN0T3B0aW9uOiAob3B0aW9uOiBQcm9qZWN0KSA9PiB2b2lkXG59KSB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbiwgc2V0U2VsZWN0ZWRPcHRpb25dID0gdXNlU3RhdGU8UHJvamVjdCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbikgcmV0dXJuXG4gICAgc2V0U2VsZWN0ZWRPcHRpb24ob3B0aW9uKVxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ09wdGlvbnNMaXN0PlxuICAgICAgeyhvcHRpb25zIHx8IFtdKS5tYXAob3B0aW9uID0+IChcbiAgICAgICAgPFNDT3B0aW9uSXRlbVxuICAgICAgICAgICRoYXNTZWxlY3Rpb249eyEhc2VsZWN0ZWRPcHRpb259XG4gICAgICAgICAgJGRpbW1lZD17ISFzZWxlY3RlZE9wdGlvbiAmJiBzZWxlY3RlZE9wdGlvbj8uaWQgIT09IG9wdGlvbi5pZH1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3Qob3B0aW9uKX1cbiAgICAgICAgICBrZXk9e29wdGlvbi5pZH1cbiAgICAgICAgPlxuICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgPC9TQ09wdGlvbkl0ZW0+XG4gICAgICApKX1cbiAgICA8L1NDT3B0aW9uc0xpc3Q+XG4gIClcbn1cblxuY29uc3QgQXNzaXN0YW50TWVzc2FnZUhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgW2xvY2FsQWdlbnQsIHNldExvY2FsQWdlbnRdID0gdXNlU3RhdGU8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExvY2FsQWdlbnQoYWdlbnQpXG4gIH0sIFthZ2VudF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyPlxuICAgICAgPEFzc2lzdGFudEF2YXRhciAvPlxuICAgICAge2xvY2FsQWdlbnQ/Lm5hbWUgJiYgKFxuICAgICAgICA8U0NBc3Npc3RhbnROYW1lPntsb2NhbEFnZW50Py50eXBlID09PSAnY2xvbmUnID8gJ01BSUEnIDogbG9jYWxBZ2VudD8ubmFtZX08L1NDQXNzaXN0YW50TmFtZT5cbiAgICAgICl9XG4gICAgPC9TQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gIClcbn1cblxuLy8gRXh0cmFlIGVsIHNlZ21lbnRvIGRlIHRhYiAoZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykgZGVsIGhyZWYgcGFyYSBhYnJpciBlbCBtb2RhbCBjb24gZWwgdGFiIGNvcnJlY3RvXG5jb25zdCBnZXRUYWJTZWdtZW50RnJvbUhyZWYgPSAoaHJlZjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbWF0Y2ggPSBocmVmLm1hdGNoKC9cXC90YXNrc1xcL1xcZCtcXC8oW14vP10rKS8pXG4gIHJldHVybiBtYXRjaCAmJiAvXihkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSQvLnRlc3QobWF0Y2hbMV0pID8gbWF0Y2hbMV0gOiAnZGV0YWlsJ1xufVxuXG4vKiogRXh0cmFlIGxhcyB0YXJlYXMgZW5sYXphZGFzIGVuIGVsIHRleHRvIChVUkxzIHF1ZSBjb2luY2lkZW4gY29uIFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4pLiAqL1xuY29uc3QgZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKTogVGFza0luZm9bXSA9PiB7XG4gIGlmICghbWVzc2FnZSkgcmV0dXJuIFtdXG4gIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICBjb25zdCB0YXNrczogVGFza0luZm9bXSA9IFtdXG4gIGNvbnN0IHNlZW5JZHMgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBudWxsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICB3aGlsZSAoKG1hdGNoID0gdGFza1VybFJlZ2V4LmV4ZWMobWVzc2FnZSkpICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGFza0lkID0gbWF0Y2hbMV1cbiAgICBjb25zdCB1cmwgPSBtYXRjaFswXVxuICAgIGlmICghc2Vlbklkcy5oYXModGFza0lkKSkge1xuICAgICAgc2Vlbklkcy5hZGQodGFza0lkKVxuICAgICAgY29uc3QgZXNjYXBlZFVybCA9IHVybC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpXG4gICAgICBjb25zdCBtYXJrZG93bkxpbmtSZWdleCA9IG5ldyBSZWdFeHAoYFxcXFxbKFteXFxcXF1dKylcXFxcXVxcXFwoJHtlc2NhcGVkVXJsfVxcXFwpYClcbiAgICAgIGNvbnN0IGxpbmtNYXRjaCA9IG1lc3NhZ2UubWF0Y2gobWFya2Rvd25MaW5rUmVnZXgpXG4gICAgICBjb25zdCB0aXRsZSA9IGxpbmtNYXRjaCA/IGxpbmtNYXRjaFsxXSA6IGBUYXJlYSAjJHt0YXNrSWR9YFxuICAgICAgdGFza3MucHVzaCh7IGlkOiB0YXNrSWQsIHRpdGxlLCB1cmwgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhc2tzXG59XG5cbmNvbnN0IGhhc1Rhc2tMaW5rcyA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IGV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlKHRleHQpLmxlbmd0aCA+IDBcblxuLy8gQ29tcG9uZW50IGZvciB0YXNrIGxpbmtzIHRoYXQgdXNlcyB0aGUgdXNlVGFza1BhbmVsIGhvb2tcbmNvbnN0IFRhc2tMaW5rOiBGQzx7IGhyZWY6IHN0cmluZzsgdGFza0lkOiBzdHJpbmc7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfT4gPSAoeyBocmVmLCB0YXNrSWQsIGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgdGFiU2VnbWVudCA9IGdldFRhYlNlZ21lbnRGcm9tSHJlZihocmVmKVxuICBjb25zdCB7IGJ1aWxkT3BlblRhc2sgfSA9IHVzZVRhc2tQYW5lbCh0YXNrSWQsIHRhYlNlZ21lbnQpXG4gIGNvbnN0IG9wZW5UYXNrID0gYnVpbGRPcGVuVGFzaygpXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAvLyBTaSBlcyBDbWQvQ3RybCArIGNsaWNrLCBkZWphciBxdWUgc2UgYWJyYSBlbiBudWV2YSBwZXN0YcOxYSAoY29tcG9ydGFtaWVudG8gcG9yIGRlZmVjdG8pXG4gICAgaWYgKGUubWV0YUtleSB8fCBlLmN0cmxLZXkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrKClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDVGFza0xpbmsgaHJlZj17aHJlZn0gb25DbGljaz17aGFuZGxlQ2xpY2t9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU0NUYXNrTGluaz5cbiAgKVxufVxuXG4vLyBDdXN0b20gbGluayBjb21wb25lbnQgZm9yIFN0cmVhbWRvd246IHRhc2sgVVJMcyBvcGVuIHRoZSB0YXNrIHBhbmVsLCBvdGhlciBsaW5rcyByZW5kZXIgbm9ybWFsbHlcbnR5cGUgQ3VzdG9tTGlua1Byb3BzID0gUmVhY3QuQW5jaG9ySFRNTEF0dHJpYnV0ZXM8SFRNTEFuY2hvckVsZW1lbnQ+ICYgeyBub2RlPzogdW5rbm93biB9XG5jb25zdCBDdXN0b21MaW5rOiBGQzxDdXN0b21MaW5rUHJvcHM+ID0gKHsgaHJlZiwgY2hpbGRyZW4sIC4uLnJlc3QgfSkgPT4ge1xuICBpZiAoIWhyZWYgfHwgdHlwZW9mIGhyZWYgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9hPlxuICAgIClcbiAgfVxuICBjb25zdCB0YXNrTWF0Y2ggPSBocmVmLm1hdGNoKG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTikpXG4gIGlmICh0YXNrTWF0Y2gpIHtcbiAgICBjb25zdCB0YXNrSWQgPSB0YXNrTWF0Y2hbMV1cbiAgICByZXR1cm4gKFxuICAgICAgPFRhc2tMaW5rIGhyZWY9e2hyZWZ9IHRhc2tJZD17dGFza0lkfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9UYXNrTGluaz5cbiAgICApXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8YSBocmVmPXtocmVmfSB7Li4ucmVzdH0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9hPlxuICApXG59XG5cbi8qKiBTb2xvIGVzdGUgY29tcG9uZW50ZSByZS1yZW5kZXJpemEgY3VhbmRvIGNhbWJpYSBlbCB0ZXh0byBlbiBzdHJlYW1pbmcgKGxlZSBkZWwgY29udGV4dCkuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQm9keSA9IG1lbW8oXG4gIChwcm9wczoge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuXG4gICAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICAgIGlzQXNzaXN0YW50OiBib29sZWFuXG4gICAgaXNGcm9udGVuZENhbmNlbGxlZD86IGJvb2xlYW5cbiAgICBhcHByb3ZhbD86IE1lc3NhZ2VJdGVtUHJvcHNbJ2FwcHJvdmFsJ11cbiAgICBpc0Vycm9yPzogYm9vbGVhblxuICAgIHNvdXJjZXM/OiBNZXNzYWdlSXRlbVByb3BzWydzb3VyY2VzJ11cbiAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbFxuICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s6IChmOiBGZWVkYmFjaykgPT4gdm9pZFxuICAgIGRpc2FibGVGZWVkYmFjazogRmVlZGJhY2sgfCBudWxsXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ/OiBib29sZWFuXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgY29uc3QgZnJvbUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFN0cmVhbWluZ01lc3NhZ2VDb250ZXh0KVxuICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gcHJvcHMuaXNTdHJlYW1pbmcgPyBmcm9tQ29udGV4dCA6IHByb3BzLm1lc3NhZ2VcbiAgICBjb25zdCBkZWJ1Z0NvdW50UmVmID0gUmVhY3QudXNlUmVmKDApXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIgJiYgcHJvcHMuaXNTdHJlYW1pbmcpIHtcbiAgICAgIGRlYnVnQ291bnRSZWYuY3VycmVudCArPSAxXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coJ1tTdHJlYW1pbmdNZXNzYWdlQm9keV0gcmVuZGVyJywgeyBjb3VudDogZGVidWdDb3VudFJlZi5jdXJyZW50LCBsZW46IGRpc3BsYXlUZXh0Py5sZW5ndGggfSlcbiAgICB9XG4gICAgaWYgKCFkaXNwbGF5VGV4dCAmJiAhcHJvcHMuaXNTdHJlYW1pbmcpIHJldHVybiBudWxsXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxTQ0NBSU1lc3NhZ2VXcmFwcGVyXG4gICAgICAgICAgaXNDdXJyZW50VXNlcj17cHJvcHMuaXNDdXJyZW50VXNlcn1cbiAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgIGNsYXNzTmFtZT17cHJvcHMuaXNBc3Npc3RhbnQgJiYgaGFzVGFza0xpbmtzKGRpc3BsYXlUZXh0KSA/ICdoYXMtdGFzay1saW5rcycgOiAnJ31cbiAgICAgICAgPlxuICAgICAgICAgIDxTdHJlYW1kb3duXG4gICAgICAgICAgICBwbHVnaW5zPXt7IGNvZGUgfX1cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e3sgYTogQ3VzdG9tTGluayB9IGFzIFBhcmFtZXRlcnM8dHlwZW9mIFN0cmVhbWRvd24+WzBdWydjb21wb25lbnRzJ119XG4gICAgICAgICAgICBsaW5rU2FmZXR5PXt7IGVuYWJsZWQ6IGZhbHNlIH19XG4gICAgICAgICAgICBpc0FuaW1hdGluZz17ISFwcm9wcy5pc1N0cmVhbWluZ31cbiAgICAgICAgICAgIHNoaWtpVGhlbWU9e1snZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddfVxuICAgICAgICAgICAgY29udHJvbHM9e3sgdGFibGU6IGZhbHNlLCBjb2RlOiBmYWxzZSB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtkaXNwbGF5VGV4dH1cbiAgICAgICAgICA8L1N0cmVhbWRvd24+XG4gICAgICAgIDwvU0NDQUlNZXNzYWdlV3JhcHBlcj5cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmICFwcm9wcy5pc0Vycm9yICYmICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFwcm9wcy5hcHByb3ZhbCAmJiAhcHJvcHMuaXNTdHJlYW1pbmcgJiYgKFxuICAgICAgICAgIDxNZXNzYWdlRmVlZGJhY2tcbiAgICAgICAgICAgIGNvbnRlbnQ9e2Rpc3BsYXlUZXh0fVxuICAgICAgICAgICAgc291cmNlcz17cHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrPXtwcm9wcy5oYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtwcm9wcy5kaXNhYmxlRmVlZGJhY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmICFwcm9wcy5pc0Vycm9yICYmICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFwcm9wcy5hcHByb3ZhbCAmJiAoXG4gICAgICAgICAgPENoYXRBSVN1Z2dlc3Rpb25zXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17cHJvcHMuc3VnZ2VzdGlvbnMgfHwgW119XG4gICAgICAgICAgICBvblNlbGVjdFN1Z2dlc3Rpb249e3N1Z2dlc3Rpb24gPT4gcHJvcHMuaGFuZGxlU3VnZ2VzdGlvbkNsaWNrKHByb3BzLm1lc3NhZ2VJZCwgc3VnZ2VzdGlvbil9XG4gICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIGhpZGRlbj17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhcHJvcHMuaXNMYXN0TWVzc2FnZSB8fCAhIXByb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvPlxuICAgIClcbiAgfVxuKVxuXG5jb25zdCBNZXNzYWdlSXRlbSA9IG1lbW8oKHByb3BzOiBNZXNzYWdlSXRlbVByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICB1c2VyLFxuICAgIG1lc3NhZ2UsXG4gICAgaXNTdHJlYW1pbmcsXG4gICAgaXNFcnJvcixcbiAgICBhdXRoVXNlcixcbiAgICBvcHRpb25zLFxuICAgIGlzQ2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrLFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgZGlzYWJsZUZlZWRiYWNrLFxuICAgIHJvbGUsXG4gICAgc291cmNlcyxcbiAgICBhdHRhY2htZW50cyxcbiAgICBhcHByb3ZhbCxcbiAgICBhcHByb3ZhbFN0YXR1cyxcbiAgICBzdWdnZXN0aW9ucyxcbiAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24sXG4gICAgaXNMYXN0TWVzc2FnZSxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgW3ByZXZpZXdBdHRhY2htZW50LCBzZXRQcmV2aWV3QXR0YWNobWVudF0gPSB1c2VTdGF0ZTxBdHRhY2htZW50RmlsZSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzQ3VycmVudFVzZXIgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCB1c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpXG4gIGNvbnN0IGlzQXNzaXN0YW50ID0gcm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCB1c2VyLmlkID09PSAnYXNzaXN0YW50J1xuXG4gIC8vIERFQlVHIHN0cmVhbWluZzogdmVyIHJlLXJlbmRlcnMgeSByZW1vdW50cy4gSGFiaWxpdGFyIGNvbiB3aW5kb3cuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSID0gdHJ1ZVxuICBjb25zdCByZW5kZXJDb3VudFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBwcmV2TWVzc2FnZUxlblJlZiA9IHVzZVJlZjxudW1iZXI+KG1lc3NhZ2U/Lmxlbmd0aCA/PyAwKVxuICByZW5kZXJDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgaWYgKGlzU3RyZWFtaW5nICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIpIHtcbiAgICBjb25zdCBwcmV2TGVuID0gcHJldk1lc3NhZ2VMZW5SZWYuY3VycmVudFxuICAgIHByZXZNZXNzYWdlTGVuUmVmLmN1cnJlbnQgPSBtZXNzYWdlPy5sZW5ndGggPz8gMFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coJ1tNZXNzYWdlSXRlbV0gcmVuZGVyJywge1xuICAgICAgbWVzc2FnZUlkOiBpZCxcbiAgICAgIHJlbmRlckNvdW50OiByZW5kZXJDb3VudFJlZi5jdXJyZW50LFxuICAgICAgbWVzc2FnZUxlbjogbWVzc2FnZT8ubGVuZ3RoLFxuICAgICAgcHJldk1lc3NhZ2VMZW46IHByZXZMZW4sXG4gICAgICBpc1N0cmVhbWluZzogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudENsaWNrID0gKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgLy8gUGVybWl0aXIgcHJldmlzdWFsaXphY2nDs24gc2kgdGllbmUgYXJjaGl2byBsb2NhbCBvIFVSTHMgZGVsIGJhY2tlbmRcbiAgICBpZiAoXG4gICAgICBhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50Lm9yaWdpbmFsRmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX2ZpbGVcbiAgICApIHtcbiAgICAgIHNldFByZXZpZXdBdHRhY2htZW50KGF0dGFjaG1lbnQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuICAgIHNldFByZXZpZXdBdHRhY2htZW50KG51bGwpXG4gIH1cblxuICBpZiAoaXNDaGFuZ2VQcm9qZWN0ICYmIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPE1lc3NhZ2VXcmFwcGVyIGtleT17aWR9IGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9IGRhdGEtbWVzc2FnZS1pZD17aWR9IGhhc0ZlZWRiYWNrPXtmYWxzZX0+XG4gICAgICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgICAgICB7aXNBc3Npc3RhbnQgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgLz59XG4gICAgICAgICAgPE1lc3NhZ2VDb250ZW50V3JhcHBlclxuICAgICAgICAgICAgaXNDaGFuZ2VQcm9qZWN0PXtpc0NoYW5nZVByb2plY3R9XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgICAgICAgaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBtZXNzYWdlRXh0cmFDb250ZW50PXs8TWVzc2FnZU9wdGlvbnMgb3B0aW9ucz17b3B0aW9ucyBhcyBhbnl9IGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufSAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICAgICAgPC9NZXNzYWdlV3JhcHBlcj5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVGZWVkYmFja0NsaWNrID0gKGZlZWRiYWNrOiBGZWVkYmFjaykgPT4ge1xuICAgIGNvbnN0IHNlc3Npb25JZCA9IGlkXG4gICAgICAuc3BsaXQoJy0nKVxuICAgICAgLmZpbHRlcihxdWVzdGlvbklkID0+IHF1ZXN0aW9uSWQgIT09ICdhbnN3ZXInKVxuICAgICAgLmpvaW4oJy0nKVxuICAgIGhhbmRsZUZlZWRiYWNrPy4oZmVlZGJhY2ssIHNlc3Npb25JZClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTWVzc2FnZUl0ZW1XcmFwcGVyICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAge2lzQXNzaXN0YW50ICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgPFNDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgICAgeyEhKGF0dGFjaG1lbnRzIHx8IHNvdXJjZXMpPy5sZW5ndGggJiYgIWlzQXNzaXN0YW50ICYmIChcbiAgICAgICAgICA8U0NBdHRhY2htZW50c1Jvdz5cbiAgICAgICAgICAgIHsoYXR0YWNobWVudHMgfHwgc291cmNlcyk/Lm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgLy8gRGV0ZWN0YXIgc2kgZXMgdW4gYXJjaGl2byBkZSBhdWRpb1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQ/LnR5cGU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudE5hbWUgPSBhdHRhY2htZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGlzQXVkaW9GaWxlID1cbiAgICAgICAgICAgICAgICBhdHRhY2htZW50VHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKSB8fFxuICAgICAgICAgICAgICAgIFsnZmxhYycsICdtNGEnLCAnbXAzJywgJ21wNCcsICdvZ2EnLCAnb2dnJywgJ3dhdicsICd3ZWJtJ10uaW5jbHVkZXMoYXR0YWNobWVudFR5cGUpIHx8XG4gICAgICAgICAgICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLnNvbWUoZXh0ID0+XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50TmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChpc0F1ZGlvRmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiA8QXR0YWNobWVudENhcmRBdWRpbyBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9IGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9IC8+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxBdHRhY2htZW50Q2FyZFxuICAgICAgICAgICAgICAgICAga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfVxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudD17YXR0YWNobWVudH1cbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXR0YWNobWVudENsaWNrKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NBdHRhY2htZW50c1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAge2FwcHJvdmFsICYmIGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyAmJiAoXG4gICAgICAgICAgPFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICAgICAgPEFwcHJvdmFsQm94XG4gICAgICAgICAgICAgIGFjdGlvbnM9e2FwcHJvdmFsLnBlbmRpbmdfYWN0aW9uc31cbiAgICAgICAgICAgICAgc3RhdHVzPXthcHByb3ZhbFN0YXR1c31cbiAgICAgICAgICAgICAgb25BcHByb3ZlPXt0aHJlYWRJZHMgPT4gdGhyZWFkSWRzLmZvckVhY2goaWQgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbihpZCwgJ2FwcHJvdmUnKSl9XG4gICAgICAgICAgICAgIG9uUmVqZWN0PXt0aHJlYWRJZHMgPT4gdGhyZWFkSWRzLmZvckVhY2goaWQgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbihpZCwgJ3JlamVjdCcpKX1cbiAgICAgICAgICAgICAgaXNQcm9qZWN0RGVsZXRlZD17cHJvcHMucHJvamVjdE1ldGFkYXRhPy5pc19kZWxldGVkID09PSB0cnVlfVxuICAgICAgICAgICAgICBpc0V4cGFuZGVkPXtwcm9wcy5leHBhbmRlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgKX1cbiAgICAgICAgeyghIW1lc3NhZ2UgfHwgaXNTdHJlYW1pbmcpICYmICFhcHByb3ZhbCAmJiAoXG4gICAgICAgICAgPFN0cmVhbWluZ01lc3NhZ2VCb2R5XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlID8/ICcnfVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9eyEhaXNTdHJlYW1pbmd9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fVxuICAgICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICAgIGFwcHJvdmFsPXthcHByb3ZhbH1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBzb3VyY2VzPXtzb3VyY2VzfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2tDbGljaz17aGFuZGxlRmVlZGJhY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17ZGlzYWJsZUZlZWRiYWNrID8/IG51bGx9XG4gICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s9e2hhbmRsZVN1Z2dlc3Rpb25DbGlja31cbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ9eyEhcHJvcHMuaXNTdHJlYW1pbmcgfHwgISFoYXNTZWxlY3RlZFN1Z2dlc3Rpb259XG4gICAgICAgICAgICBtZXNzYWdlSWQ9e2lkfVxuICAgICAgICAgICAgaXNMYXN0TWVzc2FnZT17aXNMYXN0TWVzc2FnZX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9TQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICA8QXR0YWNobWVudFByZXZpZXdNb2RhbFxuICAgICAgICBpc09wZW49eyEhcHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlUHJldmlld31cbiAgICAgICAgYXR0YWNobWVudD17cHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAvPlxuICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gIClcbn0pXG5cbmNvbnN0IENoYXRBSU1lc3NhZ2VzSW5uZXIgPSAoe1xuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGluaXRpYWxDaGF0SWQsXG4gIG9uRXJyb3IsXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeSxcbiAgb25TY3JvbGxUb0JvdHRvbSxcbiAgYXR0YWNobWVudHMsXG4gIGFnZW50cyxcbiAgZXhwYW5kZWQsXG59OiBDaGF0QUlNZXNzYWdlc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IHsgaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGF0SW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHVzZXJTY3JvbGxpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRocmVzaG9sZFJlZiA9IHVzZVJlZigzOSlcbiAgY29uc3QgbGFzdFNjcm9sbFRvcFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzaG93U2Nyb2xsVG9Cb3R0b21SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1Njcm9sbFRvQm90dG9tLCBzZXRTaG93U2Nyb2xsVG9Cb3R0b21dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLCBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmID0gdXNlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZUlkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3Qge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuICB9ID0gdXNlQ2hhdE1hbmFnZXIoe1xuICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCB1bmRlZmluZWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIG9uRXJyb3IsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYWdlbnRzLFxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGNoYW5nZVByb2plY3Qob3B0aW9uKVxuICAgIH0sXG4gICAgW2NoYW5nZVByb2plY3RdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdWdnZXN0aW9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFzdWdnZXN0aW9uPy50cmltKCkpIHJldHVyblxuICAgICAgaWYgKHNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZUlkXSkgcmV0dXJuXG4gICAgICBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzKHByZXYgPT4gKHsgLi4ucHJldiwgW21lc3NhZ2VJZF06IHRydWUgfSkpXG4gICAgICBzZW5kTWVzc2FnZShzdWdnZXN0aW9uKVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlLCBzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIH0pXG4gICAgICAvLyBBY3R1YWxpemFyIGVzdGFkbyBkZXNwdcOpcyBkZSB1biBicmV2ZSBkZWxheSBwYXJhIHBlcm1pdGlyIHF1ZSBlbCBzY3JvbGwgc2UgY29tcGxldGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9LCA1MDApXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgICAgIGlmIChzY3JvbGxSYWZSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShzY3JvbGxSYWZSZWYuY3VycmVudClcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcblxuICAgICAgICBjb25zdCBpc1Njcm9sbGluZ1VwID0gc2Nyb2xsVG9wIDwgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzU2Nyb2xsaW5nVXApIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDE1XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc05lYXJCb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQgPCBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20pIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICAgIH1cblxuICAgICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSAhaXNOZWFyQm90dG9tXG4gICAgICAgIGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudCA9IHNjcm9sbFRvcFxuXG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgY29uc3QgZGlkU2V0U3RhdGUgPSBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCAhPT0gc2hvdWxkU2hvd1xuICAgICAgICBpZiAoZGlkU2V0U3RhdGUpIHtcbiAgICAgICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20gJiYgb25TY3JvbGxUb0JvdHRvbSkge1xuICAgICAgICAgIG9uU2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlU2Nyb2xsKGNvbnRhaW5lcilcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbb25TY3JvbGxUb0JvdHRvbSwgaGFuZGxlU2Nyb2xsXVxuICApXG5cbiAgLy8gcmVmcyB0byBzdGFiaWxpemUgZnVuY3Rpb25zIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXG4gIGNvbnN0IHNlbmRNZXNzYWdlUmVmID0gdXNlUmVmKHNlbmRNZXNzYWdlKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblJlZiA9IHVzZVJlZihzdG9wR2VuZXJhdGlvbilcbiAgY29uc3Qgb25TZW5kTWVzc2FnZVJlYWR5UmVmID0gdXNlUmVmKG9uU2VuZE1lc3NhZ2VSZWFkeSlcblxuICAvLyB1cGRhdGUgcmVmcyB3aGVuIGZ1bmN0aW9ucyBjaGFuZ2VcbiAgc2VuZE1lc3NhZ2VSZWYuY3VycmVudCA9IHNlbmRNZXNzYWdlXG4gIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQgPSBzdG9wR2VuZXJhdGlvblxuICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCA9IG9uU2VuZE1lc3NhZ2VSZWFkeVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KSB7XG4gICAgICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudChzZW5kTWVzc2FnZVJlZi5jdXJyZW50LCBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZylcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZ10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlTWVzc2FnZXNcbiAgfSwgW2lzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgLy8gQ3VhbmRvIGVsIGFnZW50ZSBlbXBpZXphIGEgcmVzcG9uZGVyLCByZXNldGVhciBlbCBmbGFnIHkgZWwgdW1icmFsIHBhcmEgYWN0aXZhciBlbCBhdXRvLXNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UpIHtcbiAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaW5pdGlhbGl6ZUNoYXQoKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gU2Nyb2xsIGN1YW5kbyBsbGVnYSB1biBtZW5zYWplIGRlIGFwcm9iYWNpw7NuIChBcHByb3ZhbEJveCkuIFNpbiBSZXNpemVPYnNlcnZlciBlbiBlbFxuICAvLyBjb250ZW5lZG9yOiBvYnNlcnZhcmxvIGRpc3BhcmFiYSBjYWxsYmFja3MgYWwgY2FtYmlhciBlbCBsYXlvdXQvc2Nyb2xsYmFyIHkgY2FkYSB1bm9cbiAgLy8gbGxhbWFiYSBzY3JvbGxUb0JvdHRvbSgpLCBwcm92b2NhbmRvIHRpcm9uZXMgYWwgc2Nyb2xsZWFyLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCB8fCBsb2FkaW5nTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGhhc0FwcHJvdmFsID0gbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2FwcHJvdmFsLScpIHx8ICEhbGFzdE1lc3NhZ2UuYXBwcm92YWwpXG5cbiAgICBpZiAoIWhhc0FwcHJvdmFsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG5cbiAgICBpZiAoIShpc0F0Qm90dG9tIHx8ICF1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsVG9Cb3R0b20gPSAoKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VjdWVuY2lhIGluaWNpYWwgZGUgc2Nyb2xsIHBhcmEgY3VhbmRvIGVsIEFwcHJvdmFsQm94IGFjYWJhIGRlIHJlbmRlcml6YXJzZVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBzY3JvbGxUb0JvdHRvbSgpXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsVG9Cb3R0b20sIDEwMClcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTaSBlbCB1c3VhcmlvIGVzdMOhIHNjcm9sbGVhbmRvIG1hbnVhbG1lbnRlLCBubyBoYWNlciBhdXRvIHNjcm9sbFxuICAgIGlmICh1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgJiYgd2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50IHx8IGxvYWRpbmdNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG5cbiAgICBjb25zdCBpc05ld0Fuc3dlck1lc3NhZ2UgPSBsYXN0TWVzc2FnZSAmJiBsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhbnN3ZXItJylcbiAgICBjb25zdCBpc05ld1VzZXJNZXNzYWdlID0gbGFzdE1lc3NhZ2UgJiYgbGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgncXVlc3Rpb24tJylcbiAgICBjb25zdCBpc05ld0FwcHJvdmFsTWVzc2FnZSA9IGxhc3RNZXNzYWdlICYmIChsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhcHByb3ZhbC0nKSB8fCAhIWxhc3RNZXNzYWdlLmFwcHJvdmFsKVxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG4gICAgY29uc3QgaGFzTWVzc2FnZXMgPSAhIW1lc3NhZ2VzLmxlbmd0aFxuICAgIGNvbnN0IGlzTm90SW5pdGlhbE1lc3NhZ2UgPSAhbWVzc2FnZXMuc29tZShtc2cgPT4gbXNnLmlkID09PSAndXNlci1pbml0aWFsLW1lc3NhZ2UnKVxuXG4gICAgaWYgKChpc05ld0Fuc3dlck1lc3NhZ2UgfHwgaXNOZXdVc2VyTWVzc2FnZSB8fCBpc05ld0FwcHJvdmFsTWVzc2FnZSkgJiYgaXNBdEJvdHRvbSkge1xuICAgICAgLy8gUGFyYSBtZW5zYWplcyBkZSBhcHJvYmFjacOzbiwgdXNhciB1biBwZXF1ZcOxbyBkZWxheSBwYXJhIGFzZWd1cmFyIHF1ZSBlbCBBcHByb3ZhbEJveCBzZSBoYXlhIHJlbmRlcml6YWRvXG4gICAgICBjb25zdCBzY3JvbGxEZWxheSA9IGlzTmV3QXBwcm92YWxNZXNzYWdlID8gMTAwIDogMFxuICAgICAgY29uc3QgZG9TY3JvbGwgPSAoKSA9PiB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaWYgKHNjcm9sbERlbGF5ID4gMCkge1xuICAgICAgICBzZXRUaW1lb3V0KGRvU2Nyb2xsLCBzY3JvbGxEZWxheSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvU2Nyb2xsKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgaGFzTWVzc2FnZXMgJiZcbiAgICAgIGlzTm90SW5pdGlhbE1lc3NhZ2UgJiZcbiAgICAgICFpc05ld0Fuc3dlck1lc3NhZ2UgJiZcbiAgICAgICFpc05ld1VzZXJNZXNzYWdlICYmXG4gICAgICAhaXNOZXdBcHByb3ZhbE1lc3NhZ2VcbiAgICApIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgd2FpdGluZ1Jlc3BvbnNlXSlcblxuICAvLyBWZXJpZmljYXIgZWwgZXN0YWRvIGluaWNpYWwgZGVsIHNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50ICYmICFsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICB9XG4gIH0sIFtsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLmxlbmd0aF0pXG5cbiAgLy8gT2J0ZW5lciBlbCDDumx0aW1vIG1lbnNhamUgZGVsIHVzdWFyaW8gcGFyYSB2ZXJpZmljYXIgc2kgdGllbmUgYXR0YWNobWVudHNcbiAgY29uc3QgbGFzdFVzZXJNZXNzYWdlID0gbWVzc2FnZXNcbiAgICAuZmlsdGVyKG1zZyA9PiBtc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgbXNnLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkpXG4gICAgLmF0KC0xKVxuXG4gIGNvbnN0IGhhc0F0dGFjaG1lbnRzID1cbiAgICAoQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2U/LmF0dGFjaG1lbnRzKSAmJiBsYXN0VXNlck1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoKSB8fFxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uc291cmNlcykgJiYgbGFzdFVzZXJNZXNzYWdlLnNvdXJjZXMubGVuZ3RoKVxuXG4gIGNvbnN0IGlzU2Nyb2xsT25QYXJlbnQgPSAhIWV4cGFuZGVkXG5cbiAgLy8gREVCVUcgc3RyZWFtaW5nOiByZS1yZW5kZXJzIGRlbCBjb250ZW5lZG9yLiBIYWJpbGl0YXIgY29uIHdpbmRvdy5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIgPSB0cnVlXG4gIGNvbnN0IGxpc3RSZW5kZXJDb3VudFJlZiA9IHVzZVJlZigwKVxuICBpZiAoKHdhaXRpbmdSZXNwb25zZSB8fCBpc1dyaXRpbmcpICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIpIHtcbiAgICBsaXN0UmVuZGVyQ291bnRSZWYuY3VycmVudCArPSAxXG4gICAgY29uc3QgbGFzdE1zZyA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgbGFzdEtleSA9IGxhc3RNc2c/LmlkID8/IGBtc2ctJHttZXNzYWdlcy5sZW5ndGggLSAxfWBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUubG9nKCdbQ2hhdEFJTWVzc2FnZXNdIHJlbmRlcicsIHtcbiAgICAgIGNvdW50OiBsaXN0UmVuZGVyQ291bnRSZWYuY3VycmVudCxcbiAgICAgIGxhc3RNZXNzYWdlS2V5OiBsYXN0S2V5LFxuICAgICAgbGFzdE1lc3NhZ2VMZW46IGxhc3RNc2c/Lm1lc3NhZ2U/Lmxlbmd0aCA/PyAwLFxuICAgICAgbWVzc2FnZXNDb3VudDogbWVzc2FnZXMubGVuZ3RoLFxuICAgIH0pXG4gIH1cblxuICAvLyBBbCBleHBhbmRpci9jb250cmFlciBlbCBtb2RhbCBlbCByZWYgcGFzYSBhIG90cm8gY29udGVuZWRvciAoc2Nyb2xsVG9wIHNlIHJlc2V0ZWEgYSAwKS5cbiAgLy8gUmVzdGF1cmFyIGxhIHBvc2ljacOzbiBkZSBzY3JvbGwgYW50ZXMgZGVsIHBhaW50IHBhcmEgZXZpdGFyIHF1ZSBsYSBjb252ZXJzYWNpw7NuIHNhbHRlIGFycmliYS5cbiAgY29uc3QgZXhwYW5kZWRSZWYgPSB1c2VSZWYoZXhwYW5kZWQpXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGV4cGFuZGVkUmVmLmN1cnJlbnQgIT09IGV4cGFuZGVkICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsVG9wID0gbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IHNhdmVkU2Nyb2xsVG9wXG4gICAgICBleHBhbmRlZFJlZi5jdXJyZW50ID0gZXhwYW5kZWRcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfVxuICB9LCBbZXhwYW5kZWRdKVxuXG4gIGNvbnN0IGxhc3RNc2cgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICBjb25zdCBpc1N0cmVhbWluZ0FjdGl2ZSA9XG4gICAgKHdhaXRpbmdSZXNwb25zZSB8fCBpc1dyaXRpbmcpICYmXG4gICAgbGFzdE1zZyAmJlxuICAgIChsYXN0TXNnLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQgfHwgbGFzdE1zZy51c2VyPy5pZCA9PT0gJ2Fzc2lzdGFudCcpXG4gIGNvbnN0IHN0cmVhbWluZ1RleHQgPSBpc1N0cmVhbWluZ0FjdGl2ZSA/IChsYXN0TXNnLm1lc3NhZ2UgPz8gJycpIDogJydcblxuICBpZiAobG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgcmV0dXJuIDxMb2FkZXIgLz5cbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2VzQ29udGVudCA9IChcbiAgICA8PlxuICAgICAge2lzTG9hZGluZ01vcmVNZXNzYWdlcyAmJiA8TG9hZGluZ1RleHQgdGV4dD17dCgnY2hhdC5sb2FkaW5nTW9yZScpfSAvPn1cbiAgICAgIDxTdHJlYW1pbmdNZXNzYWdlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17c3RyZWFtaW5nVGV4dH0+XG4gICAgICAgIHttZXNzYWdlcy5tYXAoKG1lc3NhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShtZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGggfHwgbWVzc2FnZS5zb3VyY2VzPy5sZW5ndGgpICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5tZXNzYWdlICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5wcm9qZWN0Py5uYW1lICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5hcHByb3ZhbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUZlZWRiYWNrID1cbiAgICAgICAgICAgIG1lc3NhZ2U/Lndhc0hlbHBmdWwgPT09IHVuZGVmaW5lZCB8fCBtZXNzYWdlLndhc0hlbHBmdWwgPT09IG51bGxcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbWVzc2FnZS53YXNIZWxwZnVsXG4gICAgICAgICAgICAgICAgPyBGZWVkYmFjay5USFVNQlNfVVBcbiAgICAgICAgICAgICAgICA6IEZlZWRiYWNrLlRIVU1CU19ET1dOXG5cbiAgICAgICAgICBjb25zdCBpc0Fzc2lzdGFudE1lc3NhZ2UgPSBtZXNzYWdlLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQgfHwgbWVzc2FnZS51c2VyLmlkID09PSAnYXNzaXN0YW50J1xuICAgICAgICAgIGNvbnN0IGlzTGFzdE1lc3NhZ2UgPSBpbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMVxuICAgICAgICAgIGNvbnN0IGlzU3RyZWFtaW5nID0gaXNBc3Npc3RhbnRNZXNzYWdlICYmIGlzTGFzdE1lc3NhZ2UgJiYgKHdhaXRpbmdSZXNwb25zZSB8fCBpc1dyaXRpbmcpXG5cbiAgICAgICAgICAvLyBLZXkgZXN0YWJsZTogc29sbyBtZXNzYWdlLmlkIHBhcmEgZXZpdGFyIHJlbW91bnQgZHVyYW50ZSBzdHJlYW1pbmcgKG1lc3NhZ2UuZGF0ZSBwdWVkZSBjYW1iaWFyKVxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VLZXkgPSBtZXNzYWdlLmlkID8/IGBtc2ctJHtpbmRleH1gXG5cbiAgICAgICAgICBpZiAoaXNTdHJlYW1pbmcpIHtcbiAgICAgICAgICAgIGlmIChzdHJlYW1pbmdNZXNzYWdlSWRSZWYuY3VycmVudCAhPT0gbWVzc2FnZS5pZCkge1xuICAgICAgICAgICAgICBzdHJlYW1pbmdNZXNzYWdlSWRSZWYuY3VycmVudCA9IG1lc3NhZ2UuaWQgPz8gbnVsbFxuICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHN0cmVhbWluZ01lc3NhZ2VQcm9wc1JlZi5jdXJyZW50LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgeyBtZXNzYWdlOiB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhdXRoVXNlcixcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbixcbiAgICAgICAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljayxcbiAgICAgICAgICAgICAgICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbjogISFzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzW21lc3NhZ2UuaWRdLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrOiBtZXNzYWdlRmVlZGJhY2ssXG4gICAgICAgICAgICAgICAgICBpc1N0cmVhbWluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICBleHBhbmRlZCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiA8TWVzc2FnZUl0ZW0ga2V5PXttZXNzYWdlS2V5fSB7Li4uKHN0cmVhbWluZ01lc3NhZ2VQcm9wc1JlZi5jdXJyZW50IGFzIE1lc3NhZ2VJdGVtUHJvcHMpfSAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBzdHJlYW1pbmdNZXNzYWdlSWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPE1lc3NhZ2VJdGVtXG4gICAgICAgICAgICAgIHsuLi5tZXNzYWdlfVxuICAgICAgICAgICAgICBrZXk9e21lc3NhZ2VLZXl9XG4gICAgICAgICAgICAgIGF1dGhVc2VyPXthdXRoVXNlcn1cbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259XG4gICAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrPXtoYW5kbGVGZWVkYmFja31cbiAgICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbj17aGFuZGxlQXBwcm92YWxEZWNpc2lvbn1cbiAgICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj17ISFzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzW21lc3NhZ2UuaWRdfVxuICAgICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e21lc3NhZ2VGZWVkYmFja31cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2ZhbHNlfVxuICAgICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIClcbiAgICAgICAgfSl9XG4gICAgICA8L1N0cmVhbWluZ01lc3NhZ2VDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgeyh3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2UgfHwgT2JqZWN0LmtleXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgPFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgICAgIHtPYmplY3Qua2V5cyhhY3RpdmVMb2FkaW5ncyB8fCB7fSkubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgIDxMb2FkaW5nVGV4dFxuICAgICAgICAgICAgICBrZXk9XCJsb2FkaW5nLWFjdGl2ZVwiXG4gICAgICAgICAgICAgIHRleHQ9e1xuICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmZpbmQobXNnID0+IG1zZyAhPT0gdCgnY2hhdC5wcm9jZXNzaW5nJykpIHx8IHQoJ2NoYXQucHJvY2Vzc2luZycpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICh3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2UpICYmIChcbiAgICAgICAgICAgICAgPExvYWRpbmdUZXh0XG4gICAgICAgICAgICAgICAgdGV4dD17XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nTWVzc2FnZSB8fFxuICAgICAgICAgICAgICAgICAgKGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gJ0J1c2NhbmRvIGVuIGxhIHdlYidcbiAgICAgICAgICAgICAgICAgICAgOiBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoYXQuZ2VuZXJhdGluZ0RlZXBTZWFyY2gnKVxuICAgICAgICAgICAgICAgICAgICAgIDogaGFzQXR0YWNobWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hhdC5nZW5lcmF0aW5nQXR0YWNobWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoYXQuZ2VuZXJhdGluZycpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIClcbiAgICAgICAgICApfVxuICAgICAgICA8L1NDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFNDTWVzc2FnZXNPdXRlciAkc2Nyb2xsT25QYXJlbnQ9e2lzU2Nyb2xsT25QYXJlbnR9PlxuICAgICAge2lzU2Nyb2xsT25QYXJlbnQgPyAoXG4gICAgICAgIDxTQ01lc3NhZ2VzU2Nyb2xsIHJlZj17bWVzc2FnZXNSZWZ9IG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX0+XG4gICAgICAgICAgPFNDTWVzc2FnZXNJbm5lciAkc2Nyb2xsT25QYXJlbnQ9e2lzU2Nyb2xsT25QYXJlbnR9PnttZXNzYWdlc0NvbnRlbnR9PC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICAgIDwvU0NNZXNzYWdlc1Njcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01lc3NhZ2VzSW5uZXIgcmVmPXttZXNzYWdlc1JlZn0gb25TY3JvbGw9e2hhbmRsZVNjcm9sbFRvQm90dG9tfSAkc2Nyb2xsT25QYXJlbnQ9e2ZhbHNlfT5cbiAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2Nyb2xsVG9Cb3R0b20gJiYgKFxuICAgICAgICA8U2Nyb2xsVG9Cb3R0b21CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxBcnJvd1NtYWxsRG93biBjb2xvcj1cIiM2NjZcIiB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9TY3JvbGxUb0JvdHRvbUJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TQ01lc3NhZ2VzT3V0ZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1lc3NhZ2VzID0gUmVhY3QubWVtbyhDaGF0QUlNZXNzYWdlc0lubmVyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFLLElBQVFDLElBQUksRUFBYUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUFDLGFBQUEsSUFBQUMsY0FBQSxRQUFRLE9BQU87QUFDN0csU0FBU0MsVUFBVSxRQUFRLFlBQVk7QUFDdkMsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSxpREFBaUQ7QUFFaEYsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxXQUFXLFFBQVEscUNBQXFDO0FBQ2pFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxtQkFBbUIsUUFBUSxnREFBZ0Q7QUFFcEYsU0FBc0JDLGVBQWUsUUFBa0IscUJBQXFCO0FBRTVFLFNBQWtCQyxPQUFPLFFBQVEsMkJBQTJCO0FBRTVELFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFDMUMsU0FBU0MsY0FBYyxRQUFRLDhDQUE4QztBQUM3RSxTQUFTQyxZQUFZLFFBQVEsNkJBQTZCO0FBRTFELFNBQVNDLFdBQVcsUUFBUSx5QkFBeUI7QUFDckQsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUkzQyxTQUFTQyxlQUFlLEVBQUVDLGdCQUFnQixFQUFFQyxzQkFBc0IsRUFBRUMsdUJBQXVCLFFBQVEsVUFBVTtBQUM3RyxTQUFTQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ3BELFNBQ0VDLG1CQUFtQixFQUNuQkMsb0JBQW9CLEVBQ3BCQyxlQUFlLEVBQ2ZDLGdCQUFnQixFQUNoQkMsZUFBZSxFQUNmQyx1QkFBdUIsRUFDdkJDLGFBQWEsRUFDYkMsWUFBWSxFQUNa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QUFHLEtBQUt4RSxDQUFDLENBQUMsaUJBQWlCLENBQUM7UUFBQSxFQUFDLElBQUlBLENBQUMsQ0FBQyxpQkFBaUI7TUFDckcsR0FIRyxnQkFJTCxDQUFDLEdBRUYsQ0FBQzRCLGVBQWUsSUFBSUUsY0FBYyxrQkFDaEN6UCxJQUFBLENBQUM3QixXQUFXO1FBQ1YwRyxJQUFJLEVBQ0Y0SyxjQUFjLEtBQ2I1QixpQkFBaUIsR0FDZCxvQkFBb0IsR0FDcEJDLGtCQUFrQixHQUNoQkgsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLEdBQzlCK0UsY0FBYyxHQUNaL0UsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLEdBQzlCQSxDQUFDLENBQUMsaUJBQWlCLENBQUM7TUFDN0IsQ0FDRjtJQUVKLENBQ3NCLENBQzFCO0VBQUEsQ0FDRCxDQUNIO0VBRUQsb0JBQ0V6TixLQUFBLENBQUN0QixlQUFlO0lBQUNvVyxlQUFlLEVBQUVuQyxnQkFBaUI7SUFBQWpTLFFBQUEsR0FDaERpUyxnQkFBZ0IsZ0JBQ2Y3UyxJQUFBLENBQUNuQixnQkFBZ0I7TUFBQ29XLEdBQUcsRUFBRWxILFdBQVk7TUFBQ21ILFFBQVEsRUFBRXBFLG9CQUFxQjtNQUFBbFEsUUFBQSxlQUNqRVosSUFBQSxDQUFDbEIsZUFBZTtRQUFDa1csZUFBZSxFQUFFbkMsZ0JBQWlCO1FBQUFqUyxRQUFBLEVBQUUrUztNQUFlLENBQWtCO0lBQUMsQ0FDdkUsQ0FBQyxnQkFFbkIzVCxJQUFBLENBQUNsQixlQUFlO01BQUNtVyxHQUFHLEVBQUVsSCxXQUFZO01BQUNtSCxRQUFRLEVBQUVwRSxvQkFBcUI7TUFBQ2tFLGVBQWUsRUFBRSxLQUFNO01BQUFwVSxRQUFBLEVBQ3ZGK1M7SUFBZSxDQUNELENBQ2xCLEVBRUFsRixrQkFBa0IsaUJBQ2pCek8sSUFBQSxDQUFDckIsb0JBQW9CO01BQUNrQyxJQUFJLEVBQUMsUUFBUTtNQUFDZ0MsT0FBTyxFQUFFc04seUJBQTBCO01BQUF2UCxRQUFBLGVBQ3JFWixJQUFBLENBQUN2QyxjQUFjO1FBQUMwWCxLQUFLLEVBQUMsTUFBTTtRQUFDclUsS0FBSyxFQUFDLE1BQU07UUFBQ0MsTUFBTSxFQUFDO01BQU0sQ0FBRTtJQUFDLENBQ3RDLENBQ3ZCO0VBQUEsQ0FDYyxDQUFDO0FBRXRCLENBQUM7QUFFRCxPQUFPLElBQU1xVSxjQUFjLGdCQUFHdFksS0FBSyxDQUFDQyxJQUFJLENBQUNpUSxtQkFBbUIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
811
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJMb2FkaW5nVGV4dCIsIkxvYWRlciIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ1Rhc2tMaW5rIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJNQUlBSWNvbiIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJDaGF0QUlTdWdnZXN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlN0cmVhbWluZ01lc3NhZ2VDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsImNvZGUiLCJ0aGVtZXMiLCJBc3Npc3RhbnRBdmF0YXJJbm5lciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJjaGlsZHJlbiIsInR5cGUiLCJ3aWR0aCIsImhlaWdodCIsImVtb2ppIiwiQXNzaXN0YW50QXZhdGFyIiwiTWVzc2FnZVdyYXBwZXIiLCJfcmVmIiwiaXNDdXJyZW50VXNlciIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiTWVzc2FnZUNvbXBvbmVudCIsIl9vYmplY3RTcHJlYWQiLCJNZXNzYWdlQ29udGVudFdyYXBwZXIiLCJfcmVmMiIsIl9leGNsdWRlZDIiLCJNZXNzYWdlQ29udGVudENvbXBvbmVudCIsIk1lc3NhZ2VPcHRpb25zIiwiX3JlZjMiLCJvcHRpb25zIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRPcHRpb24iLCJzZXRTZWxlY3RlZE9wdGlvbiIsImhhbmRsZVNlbGVjdCIsIm9wdGlvbiIsIm1hcCIsIiRoYXNTZWxlY3Rpb24iLCIkZGltbWVkIiwiaWQiLCJvbkNsaWNrIiwibmFtZSIsIkFzc2lzdGFudE1lc3NhZ2VIZWFkZXIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvY2FsQWdlbnQiLCJzZXRMb2NhbEFnZW50IiwiX3VzZUdsb2JhbENvbnRleHQyIiwiZ2V0VGFiU2VnbWVudEZyb21IcmVmIiwiaHJlZiIsIm1hdGNoIiwidGVzdCIsImV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlIiwibWVzc2FnZSIsInRhc2tVcmxSZWdleCIsIlJlZ0V4cCIsInRhc2tzIiwic2VlbklkcyIsIlNldCIsImV4ZWMiLCJ0YXNrSWQiLCJ1cmwiLCJoYXMiLCJhZGQiLCJlc2NhcGVkVXJsIiwicmVwbGFjZSIsIm1hcmtkb3duTGlua1JlZ2V4IiwiY29uY2F0IiwibGlua01hdGNoIiwidGl0bGUiLCJwdXNoIiwiaGFzVGFza0xpbmtzIiwidGV4dCIsImxlbmd0aCIsIlRhc2tMaW5rIiwiX3JlZjQiLCJ0YWJTZWdtZW50IiwiX3VzZVRhc2tQYW5lbCIsImJ1aWxkT3BlblRhc2siLCJvcGVuVGFzayIsImhhbmRsZUNsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJDdXN0b21MaW5rIiwiX3JlZjUiLCJyZXN0IiwiX2V4Y2x1ZGVkMyIsInRhc2tNYXRjaCIsIlN0cmVhbWluZ01lc3NhZ2VCb2R5IiwiZnJvbUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiZGlzcGxheVRleHQiLCJpc1N0cmVhbWluZyIsImRlYnVnQ291bnRSZWYiLCJ3aW5kb3ciLCJNQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIiLCJjdXJyZW50IiwiY29uc29sZSIsImxvZyIsImNvdW50IiwibGVuIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsImlzQXNzaXN0YW50IiwicGx1Z2lucyIsImNvbXBvbmVudHMiLCJhIiwibGlua1NhZmV0eSIsImVuYWJsZWQiLCJpc0FuaW1hdGluZyIsInNoaWtpVGhlbWUiLCJjb250cm9scyIsInRhYmxlIiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJtZXNzYWdlSWQiLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiTWVzc2FnZUl0ZW0iLCJfbWVzc2FnZSRsZW5ndGgiLCJfcmVmNiIsIl9yZWY3IiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiaGFzU2VsZWN0ZWRTdWdnZXN0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwicmVuZGVyQ291bnRSZWYiLCJwcmV2TWVzc2FnZUxlblJlZiIsIl9tZXNzYWdlJGxlbmd0aDIiLCJwcmV2TGVuIiwicmVuZGVyQ291bnQiLCJtZXNzYWdlTGVuIiwicHJldk1lc3NhZ2VMZW4iLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4IiwicGVuZGluZ19hY3Rpb25zIiwiYWN0aW9ucyIsInN0YXR1cyIsIm9uQXBwcm92ZSIsInRocmVhZElkcyIsImZvckVhY2giLCJvblJlamVjdCIsImlzUHJvamVjdERlbGV0ZWQiLCJwcm9qZWN0TWV0YWRhdGEiLCJpc19kZWxldGVkIiwiaXNFeHBhbmRlZCIsImV4cGFuZGVkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmOCIsIl9sYXN0TXNnJHVzZXIiLCJfbGFzdE1zZyRtZXNzYWdlMiIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0MyIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwibWVzc2FnZXNSZWYiLCJjaGF0SW5pdGlhbGl6ZWRSZWYiLCJpc0xvYWRpbmdNb3JlUmVmIiwidXNlclNjcm9sbGluZ1JlZiIsInNjcm9sbFRocmVzaG9sZFJlZiIsImxhc3RTY3JvbGxUb3BSZWYiLCJzaG93U2Nyb2xsVG9Cb3R0b21SZWYiLCJzY3JvbGxSYWZSZWYiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dTY3JvbGxUb0JvdHRvbSIsInNldFNob3dTY3JvbGxUb0JvdHRvbSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsInNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYiLCJzdHJlYW1pbmdNZXNzYWdlSWRSZWYiLCJfdXNlQ2hhdE1hbmFnZXIiLCJjaGF0SWQiLCJ1bmRlZmluZWQiLCJtZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsIndhaXRpbmdSZXNwb25zZSIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwiYWN0aXZlTG9hZGluZ3MiLCJzZW5kTWVzc2FnZSIsImNoYW5nZVByb2plY3QiLCJpbml0aWFsaXplQ2hhdCIsImhhbmRsZVNjcm9sbCIsInN0b3BHZW5lcmF0aW9uIiwidHJpbSIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tIiwic2Nyb2xsVG8iLCJ0b3AiLCJzY3JvbGxIZWlnaHQiLCJiZWhhdmlvciIsInNldFRpbWVvdXQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInNob3VsZFNob3ciLCJoYW5kbGVTY3JvbGxUb0JvdHRvbSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzU2Nyb2xsaW5nVXAiLCJpc05lYXJCb3R0b20iLCJkaWRTZXRTdGF0ZSIsInNlbmRNZXNzYWdlUmVmIiwic3RvcEdlbmVyYXRpb25SZWYiLCJvblNlbmRNZXNzYWdlUmVhZHlSZWYiLCJsYXN0TWVzc2FnZSIsImhhc0FwcHJvdmFsIiwiaXNBdEJvdHRvbSIsInNjcm9sbFRvQm90dG9tIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQyIiwiaXNOZXdBbnN3ZXJNZXNzYWdlIiwiaXNOZXdVc2VyTWVzc2FnZSIsImlzTmV3QXBwcm92YWxNZXNzYWdlIiwiaGFzTWVzc2FnZXMiLCJpc05vdEluaXRpYWxNZXNzYWdlIiwibXNnIiwic2Nyb2xsRGVsYXkiLCJkb1Njcm9sbCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50MyIsIl9tZXNzYWdlc1JlZiRjdXJyZW50NCIsImxhc3RVc2VyTWVzc2FnZSIsImF0IiwiaGFzQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJpc1Njcm9sbE9uUGFyZW50IiwiaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50IiwiZW50aXR5IiwibGlzdFJlbmRlckNvdW50UmVmIiwiX2xhc3RNc2ckaWQiLCJfbGFzdE1zZyRtZXNzYWdlJGxlbmciLCJfbGFzdE1zZyRtZXNzYWdlIiwibGFzdE1zZyIsImxhc3RLZXkiLCJsYXN0TWVzc2FnZUtleSIsImxhc3RNZXNzYWdlTGVuIiwibWVzc2FnZXNDb3VudCIsImV4cGFuZGVkUmVmIiwic2F2ZWRTY3JvbGxUb3AiLCJpc1N0cmVhbWluZ0FjdGl2ZSIsInN0cmVhbWluZ1RleHQiLCJtZXNzYWdlc0NvbnRlbnQiLCJQcm92aWRlciIsInZhbHVlIiwiX21lc3NhZ2UkYXR0YWNobWVudHMiLCJfbWVzc2FnZSRzb3VyY2VzIiwiX21lc3NhZ2UkcHJvamVjdCIsIl9tZXNzYWdlJGlkIiwicHJvamVjdCIsIm1lc3NhZ2VGZWVkYmFjayIsIndhc0hlbHBmdWwiLCJUSFVNQlNfVVAiLCJUSFVNQlNfRE9XTiIsImlzQXNzaXN0YW50TWVzc2FnZSIsIm1lc3NhZ2VLZXkiLCJfbWVzc2FnZSRpZDIiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJrZXlzIiwidmFsdWVzIiwiZmluZCIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiJGlzTWFya2V0cGxhY2VHbG9iYWwiLCJjb2xvciIsIkNoYXRBSU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL0NoYXRBSU1lc3NhZ2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLXVuc3RhYmxlLW5lc3RlZC1jb21wb25lbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCBtZW1vLCBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nXG5pbXBvcnQgeyBjcmVhdGVDb2RlUGx1Z2luIH0gZnJvbSAnQHN0cmVhbWRvd24vY29kZSdcbmltcG9ydCB7IEFycm93U21hbGxEb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXJyb3dTbWFsbERvd24nXG5cbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmQnXG5pbXBvcnQgeyBBcHByb3ZhbEJveCB9IGZyb20gJy4uLy4uL2F0b21zL0FwcHJvdmFsQm94L0FwcHJvdmFsQm94J1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZEF1ZGlvIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmRBdWRpbydcbmltcG9ydCB7IE1BSUFNZXNzYWdlUHJvcHMgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBTWVzc2FnZS9NQUlBTWVzc2FnZS5pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRIaXN0b3J5Um9sZSwgVGFza0luZm8gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuXG5pbXBvcnQgeyBDT1JVc2VyLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcblxuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VDaGF0TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlVGFza1BhbmVsIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVGFza1BhbmVsJ1xuXG5pbXBvcnQgeyBMb2FkaW5nVGV4dCB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRpbmdUZXh0J1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcblxuaW1wb3J0IHsgTWVzc2FnZUZyb21Vc2VyLCBNZXNzYWdlRnJvbU90aGVyLCBNZXNzYWdlQ29udGVudEZyb21Vc2VyLCBNZXNzYWdlQ29udGVudEZyb21PdGhlciB9IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgTWVzc2FnZUZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHtcbiAgU0NDQUlNZXNzYWdlV3JhcHBlcixcbiAgU2Nyb2xsVG9Cb3R0b21CdXR0b24sXG4gIFNDTWVzc2FnZXNPdXRlcixcbiAgU0NNZXNzYWdlc1Njcm9sbCxcbiAgU0NNZXNzYWdlc0lubmVyLFxuICBTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbixcbiAgU0NPcHRpb25zTGlzdCxcbiAgU0NPcHRpb25JdGVtLFxuICBTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXIsXG4gIFNDQXNzaXN0YW50TmFtZSxcbiAgU0NBc3Npc3RhbnRBdmF0YXIsXG4gIFNDVGFza0xpbmssXG4gIFNDTWVzc2FnZUl0ZW1XcmFwcGVyLFxuICBTQ01lc3NhZ2VJdGVtSW5uZXIsXG4gIFNDQXR0YWNobWVudHNSb3csXG4gIFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uLFxufSBmcm9tICcuL25ld1N0eWxlcydcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBDaGF0QUlTdWdnZXN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJU3VnZ2VzdGlvbnMnXG5cbi8qKiBDb250ZXh0byBjb24gZWwgdGV4dG8gZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nLiBTb2xvIGVsIGNvbXBvbmVudGUgcXVlIGxvIGNvbnN1bWUgcmUtcmVuZGVyaXphIGN1YW5kbyBjYW1iaWEuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8c3RyaW5nPignJylcblxuY29uc3QgY29kZSA9IGNyZWF0ZUNvZGVQbHVnaW4oeyB0aGVtZXM6IFsnZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddIH0pXG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhcklubmVyOiBGQyA9ICgpID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIHJldHVybiAoXG4gICAgPFNDQXNzaXN0YW50QXZhdGFyPlxuICAgICAge2FnZW50Py50eXBlID09PSAnY2xvbmUnID8gPE1BSUFJY29uIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4gOiBhZ2VudD8uZW1vaml9XG4gICAgPC9TQ0Fzc2lzdGFudEF2YXRhcj5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXIgPSBtZW1vKEFzc2lzdGFudEF2YXRhcklubmVyKVxuXG50eXBlIENoYXRBSU1lc3NhZ2VzUHJvcHMgPSB7XG4gIHVzZXJJbml0aWFsTWVzc2FnZTogeyBtZXNzYWdlOiBzdHJpbmc7IGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdOyBmYXFJZD86IHN0cmluZyB9XG4gIGluaXRpYWxDaGF0SWQ6IHN0cmluZyB8IG51bGxcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBvblNlbmRNZXNzYWdlUmVhZHk/OiAoXG4gICAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcsIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSwgZmFxSWQ/OiBzdHJpbmcpID0+IHZvaWQsXG4gICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgaXNXcml0aW5nOiBib29sZWFuXG4gICkgPT4gdm9pZFxuICBpc0Rpc2FibGVkPzogYm9vbGVhblxuICBvblNjcm9sbFRvQm90dG9tPzogKCkgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgYWdlbnRzPzogQWdlbnRbXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlSXRlbVByb3BzID0gQ2hhdE1lc3NhZ2UgJiB7XG4gIGF1dGhVc2VyOiBDT1JVc2VyXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj86IGJvb2xlYW5cbiAgaGFuZGxlRmVlZGJhY2s6IChmZWVkYmFjazogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uOiAodGhyZWFkSWQ6IHN0cmluZywgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnKSA9PiB2b2lkXG4gIGRpc2FibGVGZWVkYmFjaz86IEZlZWRiYWNrIHwgbnVsbFxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNMYXN0TWVzc2FnZT86IGJvb2xlYW5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBNZXNzYWdlV3JhcHBlclByb3BzIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gICdkYXRhLW1lc3NhZ2UtaWQnPzogc3RyaW5nXG4gIGhhc0ZlZWRiYWNrPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzID0gTUFJQU1lc3NhZ2VQcm9wcyAmIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG59XG5cbmNvbnN0IE1lc3NhZ2VXcmFwcGVyOiBGQzxNZXNzYWdlV3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUZyb21Vc2VyIDogTWVzc2FnZUZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb21wb25lbnQgey4uLnByb3BzfT57Y2hpbGRyZW59PC9NZXNzYWdlQ29tcG9uZW50PlxufVxuXG5jb25zdCBNZXNzYWdlQ29udGVudFdyYXBwZXI6IEZDPE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbnRlbnRDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUNvbnRlbnRGcm9tVXNlciA6IE1lc3NhZ2VDb250ZW50RnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbnRlbnRDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBNZXNzYWdlT3B0aW9ucyh7XG4gIG9wdGlvbnMsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbixcbn06IHtcbiAgb3B0aW9uczogUHJvamVjdFtdIHwgbnVsbFxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbn0pIHtcbiAgY29uc3QgW3NlbGVjdGVkT3B0aW9uLCBzZXRTZWxlY3RlZE9wdGlvbl0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9uKSByZXR1cm5cbiAgICBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24pXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbilcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDT3B0aW9uc0xpc3Q+XG4gICAgICB7KG9wdGlvbnMgfHwgW10pLm1hcChvcHRpb24gPT4gKFxuICAgICAgICA8U0NPcHRpb25JdGVtXG4gICAgICAgICAgJGhhc1NlbGVjdGlvbj17ISFzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAkZGltbWVkPXshIXNlbGVjdGVkT3B0aW9uICYmIHNlbGVjdGVkT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChvcHRpb24pfVxuICAgICAgICAgIGtleT17b3B0aW9uLmlkfVxuICAgICAgICA+XG4gICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICA8L1NDT3B0aW9uSXRlbT5cbiAgICAgICkpfVxuICAgIDwvU0NPcHRpb25zTGlzdD5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCBbbG9jYWxBZ2VudCwgc2V0TG9jYWxBZ2VudF0gPSB1c2VTdGF0ZTxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxBZ2VudChhZ2VudClcbiAgfSwgW2FnZW50XSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gICAgICA8QXNzaXN0YW50QXZhdGFyIC8+XG4gICAgICB7bG9jYWxBZ2VudD8ubmFtZSAmJiAoXG4gICAgICAgIDxTQ0Fzc2lzdGFudE5hbWU+e2xvY2FsQWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyAnTUFJQScgOiBsb2NhbEFnZW50Py5uYW1lfTwvU0NBc3Npc3RhbnROYW1lPlxuICAgICAgKX1cbiAgICA8L1NDQXNzaXN0YW50TWVzc2FnZUhlYWRlcj5cbiAgKVxufVxuXG4vLyBFeHRyYWUgZWwgc2VnbWVudG8gZGUgdGFiIChkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSBkZWwgaHJlZiBwYXJhIGFicmlyIGVsIG1vZGFsIGNvbiBlbCB0YWIgY29ycmVjdG9cbmNvbnN0IGdldFRhYlNlZ21lbnRGcm9tSHJlZiA9IChocmVmOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtYXRjaCA9IGhyZWYubWF0Y2goL1xcL3Rhc2tzXFwvXFxkK1xcLyhbXi8/XSspLylcbiAgcmV0dXJuIG1hdGNoICYmIC9eKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpJC8udGVzdChtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICdkZXRhaWwnXG59XG5cbi8qKiBFeHRyYWUgbGFzIHRhcmVhcyBlbmxhemFkYXMgZW4gZWwgdGV4dG8gKFVSTHMgcXVlIGNvaW5jaWRlbiBjb24gVEFTS19VUkxfUkVHRVhfUEFUVEVSTikuICovXG5jb25zdCBleHRyYWN0VGFza3NGcm9tTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBUYXNrSW5mb1tdID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gW11cbiAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gIGNvbnN0IHRhc2tzOiBUYXNrSW5mb1tdID0gW11cbiAgY29uc3Qgc2VlbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IG51bGxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlICgobWF0Y2ggPSB0YXNrVXJsUmVnZXguZXhlYyhtZXNzYWdlKSkgIT09IG51bGwpIHtcbiAgICBjb25zdCB0YXNrSWQgPSBtYXRjaFsxXVxuICAgIGNvbnN0IHVybCA9IG1hdGNoWzBdXG4gICAgaWYgKCFzZWVuSWRzLmhhcyh0YXNrSWQpKSB7XG4gICAgICBzZWVuSWRzLmFkZCh0YXNrSWQpXG4gICAgICBjb25zdCBlc2NhcGVkVXJsID0gdXJsLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcbiAgICAgIGNvbnN0IG1hcmtkb3duTGlua1JlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXFsoW15cXFxcXV0rKVxcXFxdXFxcXCgke2VzY2FwZWRVcmx9XFxcXClgKVxuICAgICAgY29uc3QgbGlua01hdGNoID0gbWVzc2FnZS5tYXRjaChtYXJrZG93bkxpbmtSZWdleClcbiAgICAgIGNvbnN0IHRpdGxlID0gbGlua01hdGNoID8gbGlua01hdGNoWzFdIDogYFRhcmVhICMke3Rhc2tJZH1gXG4gICAgICB0YXNrcy5wdXNoKHsgaWQ6IHRhc2tJZCwgdGl0bGUsIHVybCB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFza3Ncbn1cblxuY29uc3QgaGFzVGFza0xpbmtzID0gKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UodGV4dCkubGVuZ3RoID4gMFxuXG4vLyBDb21wb25lbnQgZm9yIHRhc2sgbGlua3MgdGhhdCB1c2VzIHRoZSB1c2VUYXNrUGFuZWwgaG9va1xuY29uc3QgVGFza0xpbms6IEZDPHsgaHJlZjogc3RyaW5nOyB0YXNrSWQ6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9PiA9ICh7IGhyZWYsIHRhc2tJZCwgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB0YWJTZWdtZW50ID0gZ2V0VGFiU2VnbWVudEZyb21IcmVmKGhyZWYpXG4gIGNvbnN0IHsgYnVpbGRPcGVuVGFzayB9ID0gdXNlVGFza1BhbmVsKHRhc2tJZCwgdGFiU2VnbWVudClcbiAgY29uc3Qgb3BlblRhc2sgPSBidWlsZE9wZW5UYXNrKClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIC8vIFNpIGVzIENtZC9DdHJsICsgY2xpY2ssIGRlamFyIHF1ZSBzZSBhYnJhIGVuIG51ZXZhIHBlc3Rhw7FhIChjb21wb3J0YW1pZW50byBwb3IgZGVmZWN0bylcbiAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2soKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NUYXNrTGluayBocmVmPXtocmVmfSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TQ1Rhc2tMaW5rPlxuICApXG59XG5cbi8vIEN1c3RvbSBsaW5rIGNvbXBvbmVudCBmb3IgU3RyZWFtZG93bjogdGFzayBVUkxzIG9wZW4gdGhlIHRhc2sgcGFuZWwsIG90aGVyIGxpbmtzIHJlbmRlciBub3JtYWxseVxudHlwZSBDdXN0b21MaW5rUHJvcHMgPSBSZWFjdC5BbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4gJiB7IG5vZGU/OiB1bmtub3duIH1cbmNvbnN0IEN1c3RvbUxpbms6IEZDPEN1c3RvbUxpbmtQcm9wcz4gPSAoeyBocmVmLCBjaGlsZHJlbiwgLi4ucmVzdCB9KSA9PiB7XG4gIGlmICghaHJlZiB8fCB0eXBlb2YgaHJlZiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGEgaHJlZj17aHJlZn0gey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG4gIGNvbnN0IHRhc2tNYXRjaCA9IGhyZWYubWF0Y2gobmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOKSlcbiAgaWYgKHRhc2tNYXRjaCkge1xuICAgIGNvbnN0IHRhc2tJZCA9IHRhc2tNYXRjaFsxXVxuICAgIHJldHVybiAoXG4gICAgICA8VGFza0xpbmsgaHJlZj17aHJlZn0gdGFza0lkPXt0YXNrSWR9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuICByZXR1cm4gKFxuICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gIClcbn1cblxuLyoqIFNvbG8gZXN0ZSBjb21wb25lbnRlIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhIGVsIHRleHRvIGVuIHN0cmVhbWluZyAobGVlIGRlbCBjb250ZXh0KS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VCb2R5ID0gbWVtbyhcbiAgKHByb3BzOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW5cbiAgICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gICAgaXNBc3Npc3RhbnQ6IGJvb2xlYW5cbiAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhblxuICAgIGFwcHJvdmFsPzogTWVzc2FnZUl0ZW1Qcm9wc1snYXBwcm92YWwnXVxuICAgIGlzRXJyb3I/OiBib29sZWFuXG4gICAgc291cmNlcz86IE1lc3NhZ2VJdGVtUHJvcHNbJ3NvdXJjZXMnXVxuICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gICAgaGFuZGxlRmVlZGJhY2tDbGljazogKGY6IEZlZWRiYWNrKSA9PiB2b2lkXG4gICAgZGlzYWJsZUZlZWRiYWNrOiBGZWVkYmFjayB8IG51bGxcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD86IGJvb2xlYW5cbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBjb25zdCBmcm9tQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoU3RyZWFtaW5nTWVzc2FnZUNvbnRleHQpXG4gICAgY29uc3QgZGlzcGxheVRleHQgPSBwcm9wcy5pc1N0cmVhbWluZyA/IGZyb21Db250ZXh0IDogcHJvcHMubWVzc2FnZVxuICAgIGNvbnN0IGRlYnVnQ291bnRSZWYgPSBSZWFjdC51c2VSZWYoMClcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUiAmJiBwcm9wcy5pc1N0cmVhbWluZykge1xuICAgICAgZGVidWdDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZygnW1N0cmVhbWluZ01lc3NhZ2VCb2R5XSByZW5kZXInLCB7IGNvdW50OiBkZWJ1Z0NvdW50UmVmLmN1cnJlbnQsIGxlbjogZGlzcGxheVRleHQ/Lmxlbmd0aCB9KVxuICAgIH1cbiAgICBpZiAoIWRpc3BsYXlUZXh0ICYmICFwcm9wcy5pc1N0cmVhbWluZykgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFNDQ0FJTWVzc2FnZVdyYXBwZXJcbiAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtwcm9wcy5pc0Fzc2lzdGFudCAmJiBoYXNUYXNrTGlua3MoZGlzcGxheVRleHQpID8gJ2hhcy10YXNrLWxpbmtzJyA6ICcnfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0cmVhbWRvd25cbiAgICAgICAgICAgIHBsdWdpbnM9e3sgY29kZSB9fVxuICAgICAgICAgICAgY29tcG9uZW50cz17eyBhOiBDdXN0b21MaW5rIH0gYXMgUGFyYW1ldGVyczx0eXBlb2YgU3RyZWFtZG93bj5bMF1bJ2NvbXBvbmVudHMnXX1cbiAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICAgIGlzQW5pbWF0aW5nPXshIXByb3BzLmlzU3RyZWFtaW5nfVxuICAgICAgICAgICAgc2hpa2lUaGVtZT17WydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J119XG4gICAgICAgICAgICBjb250cm9scz17eyB0YWJsZTogZmFsc2UsIGNvZGU6IGZhbHNlIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgPC9TQ0NBSU1lc3NhZ2VXcmFwcGVyPlxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmICFwcm9wcy5pc1N0cmVhbWluZyAmJiAoXG4gICAgICAgICAgPE1lc3NhZ2VGZWVkYmFja1xuICAgICAgICAgICAgY29udGVudD17ZGlzcGxheVRleHR9XG4gICAgICAgICAgICBzb3VyY2VzPXtwcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e3Byb3BzLmhhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e3Byb3BzLmRpc2FibGVGZWVkYmFja31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmIChcbiAgICAgICAgICA8Q2hhdEFJU3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPXtwcm9wcy5zdWdnZXN0aW9ucyB8fCBbXX1cbiAgICAgICAgICAgIG9uU2VsZWN0U3VnZ2VzdGlvbj17c3VnZ2VzdGlvbiA9PiBwcm9wcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2socHJvcHMubWVzc2FnZUlkLCBzdWdnZXN0aW9uKX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbmNvbnN0IE1lc3NhZ2VJdGVtID0gbWVtbygocHJvcHM6IE1lc3NhZ2VJdGVtUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHVzZXIsXG4gICAgbWVzc2FnZSxcbiAgICBpc1N0cmVhbWluZyxcbiAgICBpc0Vycm9yLFxuICAgIGF1dGhVc2VyLFxuICAgIG9wdGlvbnMsXG4gICAgaXNDaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbixcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2ssXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBkaXNhYmxlRmVlZGJhY2ssXG4gICAgcm9sZSxcbiAgICBzb3VyY2VzLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIGFwcHJvdmFsLFxuICAgIGFwcHJvdmFsU3RhdHVzLFxuICAgIHN1Z2dlc3Rpb25zLFxuICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbixcbiAgICBpc0xhc3RNZXNzYWdlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNDdXJyZW50VXNlciA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IHVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKClcbiAgY29uc3QgaXNBc3Npc3RhbnQgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IHVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG5cbiAgLy8gREVCVUcgc3RyZWFtaW5nOiB2ZXIgcmUtcmVuZGVycyB5IHJlbW91bnRzLiBIYWJpbGl0YXIgY29uIHdpbmRvdy5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIgPSB0cnVlXG4gIGNvbnN0IHJlbmRlckNvdW50UmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHByZXZNZXNzYWdlTGVuUmVmID0gdXNlUmVmPG51bWJlcj4obWVzc2FnZT8ubGVuZ3RoID8/IDApXG4gIHJlbmRlckNvdW50UmVmLmN1cnJlbnQgKz0gMVxuICBpZiAoaXNTdHJlYW1pbmcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUikge1xuICAgIGNvbnN0IHByZXZMZW4gPSBwcmV2TWVzc2FnZUxlblJlZi5jdXJyZW50XG4gICAgcHJldk1lc3NhZ2VMZW5SZWYuY3VycmVudCA9IG1lc3NhZ2U/Lmxlbmd0aCA/PyAwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnW01lc3NhZ2VJdGVtXSByZW5kZXInLCB7XG4gICAgICBtZXNzYWdlSWQ6IGlkLFxuICAgICAgcmVuZGVyQ291bnQ6IHJlbmRlckNvdW50UmVmLmN1cnJlbnQsXG4gICAgICBtZXNzYWdlTGVuOiBtZXNzYWdlPy5sZW5ndGgsXG4gICAgICBwcmV2TWVzc2FnZUxlbjogcHJldkxlbixcbiAgICAgIGlzU3RyZWFtaW5nOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVBdHRhY2htZW50Q2xpY2sgPSAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpID0+IHtcbiAgICAvLyBQZXJtaXRpciBwcmV2aXN1YWxpemFjacOzbiBzaSB0aWVuZSBhcmNoaXZvIGxvY2FsIG8gVVJMcyBkZWwgYmFja2VuZFxuICAgIGlmIChcbiAgICAgIGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQub3JpZ2luYWxGaWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfZmlsZVxuICAgICkge1xuICAgICAgc2V0UHJldmlld0F0dGFjaG1lbnQoYXR0YWNobWVudClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVByZXZpZXcgPSAoKSA9PiB7XG4gICAgc2V0UHJldmlld0F0dGFjaG1lbnQobnVsbClcbiAgfVxuXG4gIGlmIChpc0NoYW5nZVByb2plY3QgJiYgb3B0aW9ucykge1xuICAgIHJldHVybiAoXG4gICAgICA8TWVzc2FnZVdyYXBwZXIga2V5PXtpZH0gaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn0gZGF0YS1tZXNzYWdlLWlkPXtpZH0gaGFzRmVlZGJhY2s9e2ZhbHNlfT5cbiAgICAgICAgPFNDTWVzc2FnZUl0ZW1XcmFwcGVyICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAgICAgIHtpc0Fzc2lzdGFudCAmJiA8QXNzaXN0YW50TWVzc2FnZUhlYWRlciAvPn1cbiAgICAgICAgICA8TWVzc2FnZUNvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgICBpc0NoYW5nZVByb2plY3Q9e2lzQ2hhbmdlUHJvamVjdH1cbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2V9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIG1lc3NhZ2VFeHRyYUNvbnRlbnQ9ezxNZXNzYWdlT3B0aW9ucyBvcHRpb25zPXtvcHRpb25zIGFzIGFueX0gaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259IC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gICAgICA8L01lc3NhZ2VXcmFwcGVyPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrQ2xpY2sgPSAoZmVlZGJhY2s6IEZlZWRiYWNrKSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gaWRcbiAgICAgIC5zcGxpdCgnLScpXG4gICAgICAuZmlsdGVyKHF1ZXN0aW9uSWQgPT4gcXVlc3Rpb25JZCAhPT0gJ2Fuc3dlcicpXG4gICAgICAuam9pbignLScpXG4gICAgaGFuZGxlRmVlZGJhY2s/LihmZWVkYmFjaywgc2Vzc2lvbklkKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICB7aXNBc3Npc3RhbnQgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgLz59XG4gICAgICA8U0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgICB7ISEoYXR0YWNobWVudHMgfHwgc291cmNlcyk/Lmxlbmd0aCAmJiAhaXNBc3Npc3RhbnQgJiYgKFxuICAgICAgICAgIDxTQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICAgICAgeyhhdHRhY2htZW50cyB8fCBzb3VyY2VzKT8ubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAvLyBEZXRlY3RhciBzaSBlcyB1biBhcmNoaXZvIGRlIGF1ZGlvXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudD8udHlwZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50TmFtZSA9IGF0dGFjaG1lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgaXNBdWRpb0ZpbGUgPVxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpIHx8XG4gICAgICAgICAgICAgICAgWydmbGFjJywgJ200YScsICdtcDMnLCAnbXA0JywgJ29nYScsICdvZ2cnLCAnd2F2JywgJ3dlYm0nXS5pbmNsdWRlcyhhdHRhY2htZW50VHlwZSkgfHxcbiAgICAgICAgICAgICAgICBbJy5mbGFjJywgJy5tNGEnLCAnLm1wMycsICcubXA0JywgJy5vZ2EnLCAnLm9nZycsICcud2F2JywgJy53ZWJtJ10uc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnROYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgaWYgKGlzQXVkaW9GaWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxBdHRhY2htZW50Q2FyZEF1ZGlvIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH0gYXR0YWNobWVudD17YXR0YWNobWVudH0gLz5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEF0dGFjaG1lbnRDYXJkXG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50PXthdHRhY2htZW50fVxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25JbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBdHRhY2htZW50Q2xpY2soYXR0YWNobWVudCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICApfVxuICAgICAgICB7YXBwcm92YWwgJiYgYXBwcm92YWwucGVuZGluZ19hY3Rpb25zICYmIChcbiAgICAgICAgICA8U0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4+XG4gICAgICAgICAgICA8QXBwcm92YWxCb3hcbiAgICAgICAgICAgICAgYWN0aW9ucz17YXBwcm92YWwucGVuZGluZ19hY3Rpb25zfVxuICAgICAgICAgICAgICBzdGF0dXM9e2FwcHJvdmFsU3RhdHVzfVxuICAgICAgICAgICAgICBvbkFwcHJvdmU9e3RocmVhZElkcyA9PiB0aHJlYWRJZHMuZm9yRWFjaChpZCA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKGlkLCAnYXBwcm92ZScpKX1cbiAgICAgICAgICAgICAgb25SZWplY3Q9e3RocmVhZElkcyA9PiB0aHJlYWRJZHMuZm9yRWFjaChpZCA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKGlkLCAncmVqZWN0JykpfVxuICAgICAgICAgICAgICBpc1Byb2plY3REZWxldGVkPXtwcm9wcy5wcm9qZWN0TWV0YWRhdGE/LmlzX2RlbGV0ZWQgPT09IHRydWV9XG4gICAgICAgICAgICAgIGlzRXhwYW5kZWQ9e3Byb3BzLmV4cGFuZGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICApfVxuICAgICAgICB7KCEhbWVzc2FnZSB8fCBpc1N0cmVhbWluZykgJiYgIWFwcHJvdmFsICYmIChcbiAgICAgICAgICA8U3RyZWFtaW5nTWVzc2FnZUJvZHlcbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2UgPz8gJyd9XG4gICAgICAgICAgICBpc1N0cmVhbWluZz17ISFpc1N0cmVhbWluZ31cbiAgICAgICAgICAgIGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgICBpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9XG4gICAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgICAgYXBwcm92YWw9e2FwcHJvdmFsfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17c3VnZ2VzdGlvbnN9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFja0NsaWNrPXtoYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtkaXNhYmxlRmVlZGJhY2sgPz8gbnVsbH1cbiAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhIWhhc1NlbGVjdGVkU3VnZ2VzdGlvbn1cbiAgICAgICAgICAgIG1lc3NhZ2VJZD17aWR9XG4gICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgIDxBdHRhY2htZW50UHJldmlld01vZGFsXG4gICAgICAgIGlzT3Blbj17ISFwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VQcmV2aWV3fVxuICAgICAgICBhdHRhY2htZW50PXtwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgIC8+XG4gICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgKVxufSlcblxuY29uc3QgQ2hhdEFJTWVzc2FnZXNJbm5lciA9ICh7XG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgaW5pdGlhbENoYXRJZCxcbiAgb25FcnJvcixcbiAgb25TZW5kTWVzc2FnZVJlYWR5LFxuICBvblNjcm9sbFRvQm90dG9tLFxuICBhdHRhY2htZW50cyxcbiAgYWdlbnRzLFxuICBleHBhbmRlZCxcbn06IENoYXRBSU1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgeyBpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlLCBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGF0SW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHVzZXJTY3JvbGxpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRocmVzaG9sZFJlZiA9IHVzZVJlZigzOSlcbiAgY29uc3QgbGFzdFNjcm9sbFRvcFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzaG93U2Nyb2xsVG9Cb3R0b21SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1Njcm9sbFRvQm90dG9tLCBzZXRTaG93U2Nyb2xsVG9Cb3R0b21dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLCBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmID0gdXNlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZUlkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3Qge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuICB9ID0gdXNlQ2hhdE1hbmFnZXIoe1xuICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCB1bmRlZmluZWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIG9uRXJyb3IsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYWdlbnRzLFxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGNoYW5nZVByb2plY3Qob3B0aW9uKVxuICAgIH0sXG4gICAgW2NoYW5nZVByb2plY3RdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdWdnZXN0aW9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFzdWdnZXN0aW9uPy50cmltKCkpIHJldHVyblxuICAgICAgaWYgKHNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZUlkXSkgcmV0dXJuXG4gICAgICBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzKHByZXYgPT4gKHsgLi4ucHJldiwgW21lc3NhZ2VJZF06IHRydWUgfSkpXG4gICAgICBzZW5kTWVzc2FnZShzdWdnZXN0aW9uKVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlLCBzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIH0pXG4gICAgICAvLyBBY3R1YWxpemFyIGVzdGFkbyBkZXNwdcOpcyBkZSB1biBicmV2ZSBkZWxheSBwYXJhIHBlcm1pdGlyIHF1ZSBlbCBzY3JvbGwgc2UgY29tcGxldGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9LCA1MDApXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgICAgIGlmIChzY3JvbGxSYWZSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShzY3JvbGxSYWZSZWYuY3VycmVudClcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcblxuICAgICAgICBjb25zdCBpc1Njcm9sbGluZ1VwID0gc2Nyb2xsVG9wIDwgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzU2Nyb2xsaW5nVXApIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDE1XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc05lYXJCb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQgPCBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20pIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICAgIH1cblxuICAgICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSAhaXNOZWFyQm90dG9tXG4gICAgICAgIGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudCA9IHNjcm9sbFRvcFxuXG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgY29uc3QgZGlkU2V0U3RhdGUgPSBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCAhPT0gc2hvdWxkU2hvd1xuICAgICAgICBpZiAoZGlkU2V0U3RhdGUpIHtcbiAgICAgICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20gJiYgb25TY3JvbGxUb0JvdHRvbSkge1xuICAgICAgICAgIG9uU2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlU2Nyb2xsKGNvbnRhaW5lcilcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbb25TY3JvbGxUb0JvdHRvbSwgaGFuZGxlU2Nyb2xsXVxuICApXG5cbiAgLy8gcmVmcyB0byBzdGFiaWxpemUgZnVuY3Rpb25zIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXG4gIGNvbnN0IHNlbmRNZXNzYWdlUmVmID0gdXNlUmVmKHNlbmRNZXNzYWdlKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblJlZiA9IHVzZVJlZihzdG9wR2VuZXJhdGlvbilcbiAgY29uc3Qgb25TZW5kTWVzc2FnZVJlYWR5UmVmID0gdXNlUmVmKG9uU2VuZE1lc3NhZ2VSZWFkeSlcblxuICAvLyB1cGRhdGUgcmVmcyB3aGVuIGZ1bmN0aW9ucyBjaGFuZ2VcbiAgc2VuZE1lc3NhZ2VSZWYuY3VycmVudCA9IHNlbmRNZXNzYWdlXG4gIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQgPSBzdG9wR2VuZXJhdGlvblxuICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCA9IG9uU2VuZE1lc3NhZ2VSZWFkeVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KSB7XG4gICAgICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudChzZW5kTWVzc2FnZVJlZi5jdXJyZW50LCBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZylcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZ10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlTWVzc2FnZXNcbiAgfSwgW2lzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgLy8gQ3VhbmRvIGVsIGFnZW50ZSBlbXBpZXphIGEgcmVzcG9uZGVyLCByZXNldGVhciBlbCBmbGFnIHkgZWwgdW1icmFsIHBhcmEgYWN0aXZhciBlbCBhdXRvLXNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UpIHtcbiAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaW5pdGlhbGl6ZUNoYXQoKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gU2Nyb2xsIGN1YW5kbyBsbGVnYSB1biBtZW5zYWplIGRlIGFwcm9iYWNpw7NuIChBcHByb3ZhbEJveCkuIFNpbiBSZXNpemVPYnNlcnZlciBlbiBlbFxuICAvLyBjb250ZW5lZG9yOiBvYnNlcnZhcmxvIGRpc3BhcmFiYSBjYWxsYmFja3MgYWwgY2FtYmlhciBlbCBsYXlvdXQvc2Nyb2xsYmFyIHkgY2FkYSB1bm9cbiAgLy8gbGxhbWFiYSBzY3JvbGxUb0JvdHRvbSgpLCBwcm92b2NhbmRvIHRpcm9uZXMgYWwgc2Nyb2xsZWFyLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCB8fCBsb2FkaW5nTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGhhc0FwcHJvdmFsID0gbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2FwcHJvdmFsLScpIHx8ICEhbGFzdE1lc3NhZ2UuYXBwcm92YWwpXG5cbiAgICBpZiAoIWhhc0FwcHJvdmFsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG5cbiAgICBpZiAoIShpc0F0Qm90dG9tIHx8ICF1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsVG9Cb3R0b20gPSAoKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VjdWVuY2lhIGluaWNpYWwgZGUgc2Nyb2xsIHBhcmEgY3VhbmRvIGVsIEFwcHJvdmFsQm94IGFjYWJhIGRlIHJlbmRlcml6YXJzZVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBzY3JvbGxUb0JvdHRvbSgpXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsVG9Cb3R0b20sIDEwMClcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTaSBlbCB1c3VhcmlvIGVzdMOhIHNjcm9sbGVhbmRvIG1hbnVhbG1lbnRlLCBubyBoYWNlciBhdXRvIHNjcm9sbFxuICAgIGlmICh1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgJiYgd2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50IHx8IGxvYWRpbmdNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG5cbiAgICBjb25zdCBpc05ld0Fuc3dlck1lc3NhZ2UgPSBsYXN0TWVzc2FnZSAmJiBsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhbnN3ZXItJylcbiAgICBjb25zdCBpc05ld1VzZXJNZXNzYWdlID0gbGFzdE1lc3NhZ2UgJiYgbGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgncXVlc3Rpb24tJylcbiAgICBjb25zdCBpc05ld0FwcHJvdmFsTWVzc2FnZSA9IGxhc3RNZXNzYWdlICYmIChsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhcHByb3ZhbC0nKSB8fCAhIWxhc3RNZXNzYWdlLmFwcHJvdmFsKVxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG4gICAgY29uc3QgaGFzTWVzc2FnZXMgPSAhIW1lc3NhZ2VzLmxlbmd0aFxuICAgIGNvbnN0IGlzTm90SW5pdGlhbE1lc3NhZ2UgPSAhbWVzc2FnZXMuc29tZShtc2cgPT4gbXNnLmlkID09PSAndXNlci1pbml0aWFsLW1lc3NhZ2UnKVxuXG4gICAgaWYgKChpc05ld0Fuc3dlck1lc3NhZ2UgfHwgaXNOZXdVc2VyTWVzc2FnZSB8fCBpc05ld0FwcHJvdmFsTWVzc2FnZSkgJiYgaXNBdEJvdHRvbSkge1xuICAgICAgLy8gUGFyYSBtZW5zYWplcyBkZSBhcHJvYmFjacOzbiwgdXNhciB1biBwZXF1ZcOxbyBkZWxheSBwYXJhIGFzZWd1cmFyIHF1ZSBlbCBBcHByb3ZhbEJveCBzZSBoYXlhIHJlbmRlcml6YWRvXG4gICAgICBjb25zdCBzY3JvbGxEZWxheSA9IGlzTmV3QXBwcm92YWxNZXNzYWdlID8gMTAwIDogMFxuICAgICAgY29uc3QgZG9TY3JvbGwgPSAoKSA9PiB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaWYgKHNjcm9sbERlbGF5ID4gMCkge1xuICAgICAgICBzZXRUaW1lb3V0KGRvU2Nyb2xsLCBzY3JvbGxEZWxheSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvU2Nyb2xsKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgaGFzTWVzc2FnZXMgJiZcbiAgICAgIGlzTm90SW5pdGlhbE1lc3NhZ2UgJiZcbiAgICAgICFpc05ld0Fuc3dlck1lc3NhZ2UgJiZcbiAgICAgICFpc05ld1VzZXJNZXNzYWdlICYmXG4gICAgICAhaXNOZXdBcHByb3ZhbE1lc3NhZ2VcbiAgICApIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgd2FpdGluZ1Jlc3BvbnNlXSlcblxuICAvLyBWZXJpZmljYXIgZWwgZXN0YWRvIGluaWNpYWwgZGVsIHNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50ICYmICFsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICB9XG4gIH0sIFtsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLmxlbmd0aF0pXG5cbiAgLy8gT2J0ZW5lciBlbCDDumx0aW1vIG1lbnNhamUgZGVsIHVzdWFyaW8gcGFyYSB2ZXJpZmljYXIgc2kgdGllbmUgYXR0YWNobWVudHNcbiAgY29uc3QgbGFzdFVzZXJNZXNzYWdlID0gbWVzc2FnZXNcbiAgICAuZmlsdGVyKG1zZyA9PiBtc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgbXNnLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkpXG4gICAgLmF0KC0xKVxuXG4gIGNvbnN0IGhhc0F0dGFjaG1lbnRzID1cbiAgICAoQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2U/LmF0dGFjaG1lbnRzKSAmJiBsYXN0VXNlck1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoKSB8fFxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uc291cmNlcykgJiYgbGFzdFVzZXJNZXNzYWdlLnNvdXJjZXMubGVuZ3RoKVxuXG4gIGNvbnN0IGlzU2Nyb2xsT25QYXJlbnQgPSAhIWV4cGFuZGVkXG4gIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuXG4gIC8vIERFQlVHIHN0cmVhbWluZzogcmUtcmVuZGVycyBkZWwgY29udGVuZWRvci4gSGFiaWxpdGFyIGNvbiB3aW5kb3cuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSID0gdHJ1ZVxuICBjb25zdCBsaXN0UmVuZGVyQ291bnRSZWYgPSB1c2VSZWYoMClcbiAgaWYgKCh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKSAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSkuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSKSB7XG4gICAgbGlzdFJlbmRlckNvdW50UmVmLmN1cnJlbnQgKz0gMVxuICAgIGNvbnN0IGxhc3RNc2cgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGxhc3RLZXkgPSBsYXN0TXNnPy5pZCA/PyBgbXNnLSR7bWVzc2FnZXMubGVuZ3RoIC0gMX1gXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnW0NoYXRBSU1lc3NhZ2VzXSByZW5kZXInLCB7XG4gICAgICBjb3VudDogbGlzdFJlbmRlckNvdW50UmVmLmN1cnJlbnQsXG4gICAgICBsYXN0TWVzc2FnZUtleTogbGFzdEtleSxcbiAgICAgIGxhc3RNZXNzYWdlTGVuOiBsYXN0TXNnPy5tZXNzYWdlPy5sZW5ndGggPz8gMCxcbiAgICAgIG1lc3NhZ2VzQ291bnQ6IG1lc3NhZ2VzLmxlbmd0aCxcbiAgICB9KVxuICB9XG5cbiAgLy8gQWwgZXhwYW5kaXIvY29udHJhZXIgZWwgbW9kYWwgZWwgcmVmIHBhc2EgYSBvdHJvIGNvbnRlbmVkb3IgKHNjcm9sbFRvcCBzZSByZXNldGVhIGEgMCkuXG4gIC8vIFJlc3RhdXJhciBsYSBwb3NpY2nDs24gZGUgc2Nyb2xsIGFudGVzIGRlbCBwYWludCBwYXJhIGV2aXRhciBxdWUgbGEgY29udmVyc2FjacOzbiBzYWx0ZSBhcnJpYmEuXG4gIGNvbnN0IGV4cGFuZGVkUmVmID0gdXNlUmVmKGV4cGFuZGVkKVxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChleHBhbmRlZFJlZi5jdXJyZW50ICE9PSBleHBhbmRlZCAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFRvcCA9IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBzYXZlZFNjcm9sbFRvcFxuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH1cbiAgfSwgW2V4cGFuZGVkXSlcblxuICBjb25zdCBsYXN0TXNnID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgY29uc3QgaXNTdHJlYW1pbmdBY3RpdmUgPVxuICAgICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKSAmJlxuICAgIGxhc3RNc2cgJiZcbiAgICAobGFzdE1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IGxhc3RNc2cudXNlcj8uaWQgPT09ICdhc3Npc3RhbnQnKVxuICBjb25zdCBzdHJlYW1pbmdUZXh0ID0gaXNTdHJlYW1pbmdBY3RpdmUgPyAobGFzdE1zZy5tZXNzYWdlID8/ICcnKSA6ICcnXG5cbiAgaWYgKGxvYWRpbmdNZXNzYWdlcykge1xuICAgIHJldHVybiA8TG9hZGVyIC8+XG4gIH1cblxuICBjb25zdCBtZXNzYWdlc0NvbnRlbnQgPSAoXG4gICAgPD5cbiAgICAgIHtpc0xvYWRpbmdNb3JlTWVzc2FnZXMgJiYgPExvYWRpbmdUZXh0IHRleHQ9e3QoJ2NoYXQubG9hZGluZ01vcmUnKX0gLz59XG4gICAgICA8U3RyZWFtaW5nTWVzc2FnZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3N0cmVhbWluZ1RleHR9PlxuICAgICAgICB7bWVzc2FnZXMubWFwKChtZXNzYWdlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEobWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoIHx8IG1lc3NhZ2Uuc291cmNlcz8ubGVuZ3RoKSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UubWVzc2FnZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UucHJvamVjdD8ubmFtZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UuYXBwcm92YWxcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VGZWVkYmFjayA9XG4gICAgICAgICAgICBtZXNzYWdlPy53YXNIZWxwZnVsID09PSB1bmRlZmluZWQgfHwgbWVzc2FnZS53YXNIZWxwZnVsID09PSBudWxsXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG1lc3NhZ2Uud2FzSGVscGZ1bFxuICAgICAgICAgICAgICAgID8gRmVlZGJhY2suVEhVTUJTX1VQXG4gICAgICAgICAgICAgICAgOiBGZWVkYmFjay5USFVNQlNfRE9XTlxuXG4gICAgICAgICAgY29uc3QgaXNBc3Npc3RhbnRNZXNzYWdlID0gbWVzc2FnZS5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IG1lc3NhZ2UudXNlci5pZCA9PT0gJ2Fzc2lzdGFudCdcbiAgICAgICAgICBjb25zdCBpc0xhc3RNZXNzYWdlID0gaW5kZXggPT09IG1lc3NhZ2VzLmxlbmd0aCAtIDFcbiAgICAgICAgICBjb25zdCBpc1N0cmVhbWluZyA9IGlzQXNzaXN0YW50TWVzc2FnZSAmJiBpc0xhc3RNZXNzYWdlICYmICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKVxuXG4gICAgICAgICAgLy8gS2V5IGVzdGFibGU6IHNvbG8gbWVzc2FnZS5pZCBwYXJhIGV2aXRhciByZW1vdW50IGR1cmFudGUgc3RyZWFtaW5nIChtZXNzYWdlLmRhdGUgcHVlZGUgY2FtYmlhcilcbiAgICAgICAgICBjb25zdCBtZXNzYWdlS2V5ID0gbWVzc2FnZS5pZCA/PyBgbXNnLSR7aW5kZXh9YFxuXG4gICAgICAgICAgaWYgKGlzU3RyZWFtaW5nKSB7XG4gICAgICAgICAgICBpZiAoc3RyZWFtaW5nTWVzc2FnZUlkUmVmLmN1cnJlbnQgIT09IG1lc3NhZ2UuaWQpIHtcbiAgICAgICAgICAgICAgc3RyZWFtaW5nTWVzc2FnZUlkUmVmLmN1cnJlbnQgPSBtZXNzYWdlLmlkID8/IG51bGxcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICBzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIHsgbWVzc2FnZTogdW5kZWZpbmVkIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXV0aFVzZXIsXG4gICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjayxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgICAgICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2ssXG4gICAgICAgICAgICAgICAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb246ICEhc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlLmlkXSxcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjazogbWVzc2FnZUZlZWRiYWNrLFxuICAgICAgICAgICAgICAgICAgaXNTdHJlYW1pbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICBpc0xhc3RNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgZXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gPE1lc3NhZ2VJdGVtIGtleT17bWVzc2FnZUtleX0gey4uLihzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYuY3VycmVudCBhcyBNZXNzYWdlSXRlbVByb3BzKX0gLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgc3RyZWFtaW5nTWVzc2FnZUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNZXNzYWdlSXRlbVxuICAgICAgICAgICAgICB7Li4ubWVzc2FnZX1cbiAgICAgICAgICAgICAga2V5PXttZXNzYWdlS2V5fVxuICAgICAgICAgICAgICBhdXRoVXNlcj17YXV0aFVzZXJ9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufVxuICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17aGFuZGxlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb249e2hhbmRsZUFwcHJvdmFsRGVjaXNpb259XG4gICAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb249eyEhc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlLmlkXX1cbiAgICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXttZXNzYWdlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtmYWxzZX1cbiAgICAgICAgICAgICAgaXNMYXN0TWVzc2FnZT17aXNMYXN0TWVzc2FnZX1cbiAgICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgPC9TdHJlYW1pbmdNZXNzYWdlQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIHsod2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlIHx8IE9iamVjdC5rZXlzKGFjdGl2ZUxvYWRpbmdzIHx8IHt9KS5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgIDxTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICA8TG9hZGluZ1RleHRcbiAgICAgICAgICAgICAga2V5PVwibG9hZGluZy1hY3RpdmVcIlxuICAgICAgICAgICAgICB0ZXh0PXtcbiAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGFjdGl2ZUxvYWRpbmdzIHx8IHt9KS5maW5kKG1zZyA9PiBtc2cgIT09IHQoJ2NoYXQucHJvY2Vzc2luZycpKSB8fCB0KCdjaGF0LnByb2Nlc3NpbmcnKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAod2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlKSAmJiAoXG4gICAgICAgICAgICAgIDxMb2FkaW5nVGV4dFxuICAgICAgICAgICAgICAgIHRleHQ9e1xuICAgICAgICAgICAgICAgICAgbG9hZGluZ01lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgIChpc1dlYlNlYXJjaEFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICA/ICdCdXNjYW5kbyBlbiBsYSB3ZWInXG4gICAgICAgICAgICAgICAgICAgIDogaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGF0LmdlbmVyYXRpbmdEZWVwU2VhcmNoJylcbiAgICAgICAgICAgICAgICAgICAgICA6IGhhc0F0dGFjaG1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoYXQuZ2VuZXJhdGluZ0F0dGFjaG1lbnQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGF0LmdlbmVyYXRpbmcnKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICl9XG4gICAgPC8+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VzT3V0ZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fT5cbiAgICAgIHtpc1Njcm9sbE9uUGFyZW50ID8gKFxuICAgICAgICA8U0NNZXNzYWdlc1Njcm9sbCByZWY9e21lc3NhZ2VzUmVmfSBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxTQ01lc3NhZ2VzSW5uZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fSAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fT5cbiAgICAgICAgICAgIHttZXNzYWdlc0NvbnRlbnR9XG4gICAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICAgIDwvU0NNZXNzYWdlc1Njcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01lc3NhZ2VzSW5uZXJcbiAgICAgICAgICByZWY9e21lc3NhZ2VzUmVmfVxuICAgICAgICAgIG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX1cbiAgICAgICAgICAkc2Nyb2xsT25QYXJlbnQ9e2ZhbHNlfVxuICAgICAgICAgICRpc01hcmtldHBsYWNlR2xvYmFsPXtpc01hcmtldHBsYWNlR2xvYmFsQWdlbnR9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2Nyb2xsVG9Cb3R0b20gJiYgKFxuICAgICAgICA8U2Nyb2xsVG9Cb3R0b21CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxBcnJvd1NtYWxsRG93biBjb2xvcj1cIiM2NjZcIiB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9TY3JvbGxUb0JvdHRvbUJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TQ01lc3NhZ2VzT3V0ZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1lc3NhZ2VzID0gUmVhY3QubWVtbyhDaGF0QUlNZXNzYWdlc0lubmVyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFLLElBQVFDLElBQUksRUFBYUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUFDLGFBQUEsSUFBQUMsY0FBQSxRQUFRLE9BQU87QUFDN0csU0FBU0MsVUFBVSxRQUFRLFlBQVk7QUFDdkMsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSxpREFBaUQ7QUFFaEYsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxXQUFXLFFBQVEscUNBQXFDO0FBQ2pFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxtQkFBbUIsUUFBUSxnREFBZ0Q7QUFFcEYsU0FBc0JDLGVBQWUsUUFBa0IscUJBQXFCO0FBRTVFLFNBQWtCQyxPQUFPLFFBQVEs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