@projectcor/maia-components 2.45.1-0 → 2.45.1-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,7 @@ import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
11
11
  import { ListChecklist } from '@projectcor/icons/lib/components/ListChecklist';
12
12
  import { useT } from '../../../hooks/useT';
13
13
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
14
- import { SCCAIHomeContainer, SCCAIHomeContent, SCCAIHomeContentInner, SCCAIHomeGradientTop, SCCAIHomeGradientBottom, SCCAIHomeHeader, SCCAIHomeGreeting, SCCAIHomeAgentInfoContainer, SCCAIHomeAgentInfo, SCCAIHomeProjectSummary, SCCAIHomeProjectSummaryContent, SCCAIHomeProjectSummaryTitle, SCCAIHomeProjectSummaryDescription, SCCAHWrapperSummaryProject, SCCAIHomeIntroduction, SCCAIHomeCreatedByContainer, SCCAIHomeCreatedByText, SCCAIHomeCreatedByTextName, SCCAIHomeIconContainer, SCCAIHomeLogoWrapper, SCCAIHomeMaiaHeaderStack, SCCAIHomeTitle, SCCAIHomeTitleBlock, SCCAIHomeSubtitle, SCCAIHomeDynamicSection, SCCAIHomeRecentContexts, SCCAIHomeRecentContextsList, SCCAIHomeRecentContextsSectionHeader, SCCAIHomeRecentContextsSectionTitle, SCCAIHomeRecentContextsSectionSubtitle, SCCAIHomeRecentContextPill, SCCAIHomeRecentContextPillIcon, SCCAIHomeRecentContextPillText, SCCAIHomeRecentContextPillSkeleton, MAIA_HEADER_COLLABORATOR_HOME_CONTENT_WIDTH_PX } from './styles';
14
+ import { SCCAIHomeContainer, SCCAIHomeScroll, SCCAIHomeContent, SCCAIHomeContentInner, SCCAIHomeGradientTop, SCCAIHomeGradientBottom, SCCAIHomeHeader, SCCAIHomeGreeting, SCCAIHomeAgentInfoContainer, SCCAIHomeAgentInfo, SCCAIHomeProjectSummary, SCCAIHomeProjectSummaryContent, SCCAIHomeProjectSummaryTitle, SCCAIHomeProjectSummaryDescription, SCCAHWrapperSummaryProject, SCCAIHomeIntroduction, SCCAIHomeCreatedByContainer, SCCAIHomeCreatedByText, SCCAIHomeCreatedByTextName, SCCAIHomeIconContainer, SCCAIHomeLogoWrapper, SCCAIHomeMaiaHeaderStack, SCCAIHomeTitle, SCCAIHomeTitleBlock, SCCAIHomeSubtitle, SCCAIHomeDynamicSection, SCCAIHomeRecentContexts, SCCAIHomeRecentContextsList, SCCAIHomeRecentContextsSectionHeader, SCCAIHomeRecentContextsSectionTitle, SCCAIHomeRecentContextsSectionSubtitle, SCCAIHomeRecentContextPill, SCCAIHomeRecentContextPillIcon, SCCAIHomeRecentContextPillText, SCCAIHomeRecentContextPillSkeleton, MAIA_HEADER_COLLABORATOR_HOME_CONTENT_WIDTH_PX } from './styles';
15
15
  import { useGlobalContext } from '../../../context/global-context';
16
16
  import { useUser, CORUserRole, isCollaboratorRole, isManagerRole } from '../../../context/cor-user';
17
17
  import { useResizeListener } from '../../../hooks/useResize';
@@ -595,89 +595,93 @@ export var ChatAIHome = function ChatAIHome(_ref2) {
595
595
  var fixedHomeContentWidth = isHeaderTaskContextHome || isLeftAlignedOrchestratorHome ? MAIA_HEADER_COLLABORATOR_HOME_CONTENT_WIDTH_PX : undefined;
596
596
  var contentAlignStart = isPlannerHome || isHeaderTaskContextHome || isLeftAlignedOrchestratorHome;
597
597
  var showAgentIntroduction = section !== 'project' && !isMAIA && !!(agent !== null && agent !== void 0 && agent.introduction);
598
- return /*#__PURE__*/_jsxs(SCCAIHomeContainer, {
599
- showFAQs: showFAQs,
598
+ var homeMain = /*#__PURE__*/_jsx(SCCAIHomeContent, {
599
+ showFAQs: homeScrollableLayout,
600
+ $isAgentView: !isMAIA,
601
+ $floatingCustomCenter: floatingCustomCenter,
602
+ $centerVertically: isPlannerHome,
600
603
  $alignStart: isLeftAlignedOrchestratorHome,
601
- children: [homeScrollableLayout && /*#__PURE__*/_jsx(SCCAIHomeGradientTop, {
602
- $show: showTopGradient
603
- }), /*#__PURE__*/_jsx(SCCAIHomeContent, {
604
- ref: contentContainerRef,
604
+ $fixedContentWidth: fixedHomeContentWidth,
605
+ children: /*#__PURE__*/_jsxs(SCCAIHomeContentInner, {
605
606
  showFAQs: homeScrollableLayout,
606
607
  $isAgentView: !isMAIA,
607
608
  $floatingCustomCenter: floatingCustomCenter,
608
609
  $centerVertically: isPlannerHome,
609
- $alignStart: isLeftAlignedOrchestratorHome,
610
- $fixedContentWidth: fixedHomeContentWidth,
611
- children: /*#__PURE__*/_jsxs(SCCAIHomeContentInner, {
612
- showFAQs: homeScrollableLayout,
610
+ $alignStart: isHeaderTaskContextHome || isLeftAlignedOrchestratorHome,
611
+ $headerCollaboratorHome: isHeaderTaskContextHome,
612
+ $sectionOrchestratorHome: isLeftAlignedOrchestratorHome,
613
+ children: [/*#__PURE__*/_jsxs(SCCAIHomeHeader, {
614
+ $gap: showAgentIntroduction ? '20px' : '0',
615
+ $maxWidth: isMAIA ? '100%' : '380px',
613
616
  $isAgentView: !isMAIA,
614
- $floatingCustomCenter: floatingCustomCenter,
615
- $centerVertically: isPlannerHome,
616
- $alignStart: isHeaderTaskContextHome || isLeftAlignedOrchestratorHome,
617
- $headerCollaboratorHome: isHeaderTaskContextHome,
618
- $sectionOrchestratorHome: isLeftAlignedOrchestratorHome,
619
- children: [/*#__PURE__*/_jsxs(SCCAIHomeHeader, {
620
- $gap: showAgentIntroduction ? '20px' : '0',
621
- $maxWidth: isMAIA ? '100%' : '380px',
622
- $isAgentView: !isMAIA,
623
- $align: contentAlignStart ? 'start' : 'center',
624
- children: [renderHeaderContent(), showAgentIntroduction ? /*#__PURE__*/_jsx(SCCAIHomeIntroduction, {
625
- expanded: expanded,
626
- children: agent.introduction
627
- }) : null]
628
- }), showProjectSummaryCard && /*#__PURE__*/_jsxs(SCCAHWrapperSummaryProject, {
629
- onClick: handlers.projectSummary,
630
- children: [/*#__PURE__*/_jsx(SCCAIHomeProjectSummary, {
631
- children: /*#__PURE__*/_jsx(TemplateGradientIcon, {
632
- height: 24,
633
- width: 24
634
- })
635
- }), /*#__PURE__*/_jsxs(SCCAIHomeProjectSummaryContent, {
636
- children: [/*#__PURE__*/_jsx(SCCAIHomeProjectSummaryTitle, {
637
- children: t('homeMenu.projectSummary.title')
638
- }), /*#__PURE__*/_jsx(SCCAIHomeProjectSummaryDescription, {
639
- children: t('homeMenu.projectSummary.description')
640
- })]
617
+ $align: contentAlignStart ? 'start' : 'center',
618
+ children: [renderHeaderContent(), showAgentIntroduction ? /*#__PURE__*/_jsx(SCCAIHomeIntroduction, {
619
+ expanded: expanded,
620
+ children: agent.introduction
621
+ }) : null]
622
+ }), showProjectSummaryCard && /*#__PURE__*/_jsxs(SCCAHWrapperSummaryProject, {
623
+ onClick: handlers.projectSummary,
624
+ children: [/*#__PURE__*/_jsx(SCCAIHomeProjectSummary, {
625
+ children: /*#__PURE__*/_jsx(TemplateGradientIcon, {
626
+ height: 24,
627
+ width: 24
628
+ })
629
+ }), /*#__PURE__*/_jsxs(SCCAIHomeProjectSummaryContent, {
630
+ children: [/*#__PURE__*/_jsx(SCCAIHomeProjectSummaryTitle, {
631
+ children: t('homeMenu.projectSummary.title')
632
+ }), /*#__PURE__*/_jsx(SCCAIHomeProjectSummaryDescription, {
633
+ children: t('homeMenu.projectSummary.description')
641
634
  })]
642
- }), showDynamicSection && /*#__PURE__*/_jsxs(SCCAIHomeDynamicSection, {
643
- $grow: isMaiaker,
644
- $alignStart: isHeaderTaskContextHome || isLeftAlignedOrchestratorHome,
645
- children: [shouldShowCollaboratorFullscreenFuas ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
646
- onStartChat: handleHomeStartChat,
647
- agentId: agent === null || agent === void 0 ? void 0 : agent.id,
648
- isScrolling: isScrolling,
649
- actions: collaboratorFullscreenFuas,
650
- loading: collaboratorFullscreenFuasLoading
651
- }) : null, shouldShowPlannerFuas ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
652
- variant: "planner",
653
- onStartChat: handleHomeStartChat,
654
- agentId: agent === null || agent === void 0 ? void 0 : agent.id,
655
- isScrolling: isScrolling,
656
- actions: headerHoursFuas,
657
- loading: headerHoursFuasLoading
658
- }) : null, renderRecentContexts(), shouldShowFaqs && /*#__PURE__*/_jsx(FrequentlyAskedQuestions, {
659
- onStartChat: onStartChat,
660
- showFAQs: showFAQs,
661
- showProjectSummary: showProjectSummary,
662
- agentId: agent === null || agent === void 0 ? void 0 : agent.id,
663
- lang: lang,
664
- isScrolling: isScrolling,
665
- faqs: faqs,
666
- loading: faqsAreLoading
667
- }), shouldShowFuas && /*#__PURE__*/_jsx(FrequentlyUsedActions, {
668
- onStartChat: onStartChat,
669
- agentId: agent === null || agent === void 0 ? void 0 : agent.id,
670
- isScrolling: isScrolling,
671
- actions: fuas,
672
- loading: fuasAreLoading
673
- }), isMaiaker ? /*#__PURE__*/_jsx(ChatAIHomeMaiaker, {
674
- onStartChat: onStartChat
675
- }) : null]
676
635
  })]
677
- })
678
- }), homeScrollableLayout && /*#__PURE__*/_jsx(SCCAIHomeGradientBottom, {
636
+ }), showDynamicSection && /*#__PURE__*/_jsxs(SCCAIHomeDynamicSection, {
637
+ $grow: isMaiaker,
638
+ $alignStart: isHeaderTaskContextHome || isLeftAlignedOrchestratorHome,
639
+ children: [shouldShowCollaboratorFullscreenFuas ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
640
+ onStartChat: handleHomeStartChat,
641
+ agentId: agent === null || agent === void 0 ? void 0 : agent.id,
642
+ isScrolling: isScrolling,
643
+ actions: collaboratorFullscreenFuas,
644
+ loading: collaboratorFullscreenFuasLoading
645
+ }) : null, shouldShowPlannerFuas ? /*#__PURE__*/_jsx(FrequentlyUsedActions, {
646
+ variant: "planner",
647
+ onStartChat: handleHomeStartChat,
648
+ agentId: agent === null || agent === void 0 ? void 0 : agent.id,
649
+ isScrolling: isScrolling,
650
+ actions: headerHoursFuas,
651
+ loading: headerHoursFuasLoading
652
+ }) : null, renderRecentContexts(), shouldShowFaqs && /*#__PURE__*/_jsx(FrequentlyAskedQuestions, {
653
+ onStartChat: onStartChat,
654
+ showFAQs: showFAQs,
655
+ showProjectSummary: showProjectSummary,
656
+ agentId: agent === null || agent === void 0 ? void 0 : agent.id,
657
+ lang: lang,
658
+ isScrolling: isScrolling,
659
+ faqs: faqs,
660
+ loading: faqsAreLoading
661
+ }), shouldShowFuas && /*#__PURE__*/_jsx(FrequentlyUsedActions, {
662
+ onStartChat: onStartChat,
663
+ agentId: agent === null || agent === void 0 ? void 0 : agent.id,
664
+ isScrolling: isScrolling,
665
+ actions: fuas,
666
+ loading: fuasAreLoading
667
+ }), isMaiaker ? /*#__PURE__*/_jsx(ChatAIHomeMaiaker, {
668
+ onStartChat: onStartChat
669
+ }) : null]
670
+ })]
671
+ })
672
+ });
673
+ return /*#__PURE__*/_jsxs(SCCAIHomeContainer, {
674
+ showFAQs: showFAQs,
675
+ $alignStart: isLeftAlignedOrchestratorHome,
676
+ children: [homeScrollableLayout && /*#__PURE__*/_jsx(SCCAIHomeGradientTop, {
677
+ $show: showTopGradient
678
+ }), homeScrollableLayout ? /*#__PURE__*/_jsx(SCCAIHomeScroll, {
679
+ ref: contentContainerRef,
680
+ $scrollable: true,
681
+ children: homeMain
682
+ }) : homeMain, homeScrollableLayout && /*#__PURE__*/_jsx(SCCAIHomeGradientBottom, {
679
683
  $show: showBottomGradient
680
684
  })]
681
685
  });
682
686
  };
683
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsImZsdXNoU3luYyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbiIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24iLCJNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJDT1JVc2VyUm9sZSIsImlzQ29sbGFib3JhdG9yUm9sZSIsImlzTWFuYWdlclJvbGUiLCJ1c2VSZXNpemVMaXN0ZW5lciIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFpYWtlckFnZW50IiwiRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwidXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwic29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzIiwicmVzb2x2ZVJlY2VudENvbnRleHRzSG9tZUxpbWl0IiwidXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwidXNlUmVjZW50Q29udGV4dHMiLCJNQUlBSXNvbG9nbyIsIlRlbXBsYXRlR3JhZGllbnRJY29uIiwiQ2hhdEFJSG9tZU1haWFrZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJGcmVxdWVudFF1ZXN0aW9ucyIsIlJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IiLCJSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFgiLCJSZWNlbnRDb250ZXh0UGlsbCIsIl9yZWYiLCJjb250ZXh0IiwibGFiZWwiLCJvbkNsaWNrIiwiX3JlZiRmdWxsV2lkdGgiLCJmdWxsV2lkdGgiLCJ0ZXh0UmVmIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwic2hvd1Rvb2x0aXAiLCJ0eXBlIiwiJGZ1bGxXaWR0aCIsImNoaWxkcmVuIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsInVuZGVmaW5lZCIsInJlZiIsInRpdGxlIiwicGFyc2VOdW1lcmljSWQiLCJ2YWx1ZSIsInBhcnNlZCIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyIsInJvbGVJZCIsIm5vcm1hbGl6ZWRSb2xlSWQiLCJDTEVWRUwiLCJESVJFQ1RPUiIsIlBST0pFQ1RfTUFOQUdFUiIsIlNldCIsIkNoYXRBSUhvbWUiLCJfcmVmMiIsImhhbmRsZXJzIiwib25TdGFydENoYXQiLCJleHBhbmRlZCIsImZsb2F0aW5nIiwiX3VzZVQiLCJ0IiwiaTE4biIsImV2ZW50IiwidXNlciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJzZWN0aW9uIiwiY2xpZW50IiwicHJvamVjdCIsInRhc2siLCJjaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0Iiwic2V0VGFzayIsInNldENoaXBzUHJvamVjdCIsImlzTUFJQSIsImZsb2F0aW5nQ3VzdG9tQ2VudGVyIiwibGFuZyIsImxhbmd1YWdlIiwic3VtbWFyeVByb2plY3RBY2Nlc3MiLCJ3aW5kb3ciLCJTdHJpbmciLCJNQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUyIsInRvTG93ZXJDYXNlIiwibWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzIiwiZmFxc0FjY2VzcyIsInNob3dQcm9qZWN0U3VtbWFyeSIsImlzTWFpYWtlciIsImlzSGVhZGVySG9tZSIsImlzT3JjaGVzdHJhdG9yIiwiaXNQbGFubmVySG9tZSIsImlzU2VjdGlvbk9yY2hlc3RyYXRvckhvbWUiLCJoYXNIb3Vyc1N1YmFnZW50IiwiaGFzUGlubmVkQ29udGV4dCIsImlkIiwicHJvamVjdElkIiwiaXNSZWNlbnRDb250ZXh0c1N0ZXAiLCJpc0hlYWRlclRhc2tDb250ZXh0SG9tZSIsInJvbGVfaWQiLCJpc0hlYWRlckhvdXJzQWdlbnRIb21lIiwiaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lIiwiaGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSIsImlzQ29udGV4dEhvbWVTdGVwIiwiaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUiLCJhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRDb250ZXh0Iiwic2V0U2VsZWN0ZWRDb250ZXh0IiwiYWN0aXZlQ29udGV4dCIsIm5hbWUiLCJwcm9qZWN0TmFtZSIsInBpbm5lZEVudGl0eVR5cGUiLCJmYXFzQ29udGV4dEVudGl0eVR5cGUiLCJfYWN0aXZlQ29udGV4dCR0eXBlIiwiaXNDbGllbnRDb250ZXh0Rm9yRmFxcyIsImZ1YXNTZWN0aW9uIiwicmVhbExpc3RzQWdlbnRJZCIsInJlYWxMaXN0c0VudGl0eVR5cGUiLCJfYWN0aXZlQ29udGV4dCR0eXBlMiIsIl91c2VGcmVxdWVudGx5VXNlZEFjdCIsImFnZW50RnVhcyIsImFjdGlvbnMiLCJmdWFzTG9hZGluZyIsImxvYWRpbmciLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QyIiwiY29sbGFib3JhdG9yUGxhbm5lckZ1YXMiLCJjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmciLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QzIiwibWFuYWdlckhvbWVGdWFzIiwibWFuYWdlckhvbWVGdWFzTG9hZGluZyIsInNob3VsZEZldGNoQ29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMiLCJCb29sZWFuIiwiX3VzZUZyZXF1ZW50bHlVc2VkQWN0NCIsImNvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzIiwiY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNMb2FkaW5nIiwiaGVhZGVySG91cnNGdWFzIiwiaGVhZGVySG91cnNGdWFzTG9hZGluZyIsInJlY2VudENvbnRleHRzTGltaXQiLCJmdWFzQ291bnQiLCJsZW5ndGgiLCJfdXNlUmVjZW50Q29udGV4dHMiLCJlbmFibGVkIiwibGltaXQiLCJmZXRjaGVkUmVjZW50Q29udGV4dHMiLCJjb250ZXh0cyIsInJlY2VudENvbnRleHRzTG9hZGluZyIsInJlY2VudENvbnRleHRzIiwiZmlsdGVyIiwiaGFzIiwicmVjZW50Q29udGV4dFNrZWxldG9uS2V5cyIsIkFycmF5IiwiZnJvbSIsIl8iLCJpbmRleCIsImNvbmNhdCIsImZhcXNMaXN0QWdlbnRJZCIsImZhcXNMaXN0RW50aXR5VHlwZSIsIl91c2VGcmVxdWVudGx5QXNrZWRRdSIsImFnZW50RmFxcyIsImZhcXMiLCJmYXFzTG9hZGluZyIsImhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsImZhcXNGZXRjaFJlZiIsIl9mYXFzRmV0Y2hSZWYkY3VycmVudCIsImN1cnJlbnRLZXkiLCJsYXN0S2V5IiwiY3VycmVudCIsImFnZW50SWQiLCJlbnRpdHlUeXBlIiwiZnVhcyIsImZhcXNBcmVMb2FkaW5nIiwiZnVhc0FyZUxvYWRpbmciLCJzaG93UmVjZW50Q29udGV4dHNCbG9jayIsInNob3VsZFNob3dGYXFzIiwic2hvdWxkU2hvd0Z1YXMiLCJzaG91bGRTaG93UGxhbm5lckZ1YXNMb2FkaW5nIiwic2hvdWxkU2hvd1BsYW5uZXJGdWFzQ29udGVudCIsInNob3VsZFNob3dQbGFubmVyRnVhcyIsInNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmciLCJzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNDb250ZW50Iiwic2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzIiwic2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCIsImVudGl0eSIsInNob3dGQVFzIiwiaG9tZVNjcm9sbGFibGVMYXlvdXQiLCJzaG93RHluYW1pY1NlY3Rpb24iLCJjb250ZW50Q29udGFpbmVyUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzaG93VG9wR3JhZGllbnQiLCJzZXRTaG93VG9wR3JhZGllbnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dCb3R0b21HcmFkaWVudCIsInNldFNob3dCb3R0b21HcmFkaWVudCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNTY3JvbGxpbmciLCJzZXRJc1Njcm9sbGluZyIsInNjcm9sbFRpbWVvdXRSZWYiLCJncmVldGluZyIsImludHJvIiwiaW50cm9kdWN0aW9uIiwiaXNBcnJheSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQiLCJvcmRlciIsIl9jb250ZXh0JHBhcmVudHMiLCJfY29udGV4dCRwYXJlbnRzMiIsIl9jb250ZXh0JHBhcmVudHMzIiwiX2NvbnRleHQkcGFyZW50czQiLCJhaUNoYXRDb250ZXh0U2VsZWN0ZWQiLCJjb250ZXh0SWQiLCJjbGllbnRJZCIsInBhcmVudHMiLCJjbGllbnRfaWQiLCJwcm9qZWN0X2lkIiwiY2xpZW50TmFtZSIsImNsaWVudF9uYW1lIiwicHJvamVjdF9uYW1lIiwiX29iamVjdFNwcmVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlSG9tZVN0YXJ0Q2hhdCIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwicmVuZGVyUmVjZW50Q29udGV4dHMiLCIkZml4ZWRDb250ZW50V2lkdGgiLCIkZmx1c2hQaWxscyIsIm1hcCIsImtleSIsInRyaW0iLCJjaGVja1Njcm9sbCIsImNvbnRhaW5lciIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzU2Nyb2xsYWJsZSIsImlzQXRUb3AiLCJpc0F0Qm90dG9tIiwiaGFuZGxlU2Nyb2xsIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInNjaGVkdWxlQ2hlY2tTY3JvbGwiLCJhZGRFdmVudExpc3RlbmVyIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJzY3JvbGxDb250ZW50IiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJFbGVtZW50IiwidGltZW91dElkIiwibGF0ZVRpbWVvdXRJZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkaXNjb25uZWN0IiwicmVuZGVySGVhZGVyQ29udGVudCIsIl9hZ2VudCRjcmVhdGVkX2J5IiwiX2FnZW50JGNyZWF0ZWRfYnkyIiwiZW1vamkiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbnRlbnRBbGlnblN0YXJ0IiwibWFpYUhlYWRlclN0YWNrTmVlZHNHYXAiLCIkbm9HYXAiLCIkYWxpZ24iLCIkc2l6ZSIsImZpcnN0TmFtZSIsIiRjb2xsYWJvcmF0b3JIb21lIiwiZml4ZWRIb21lQ29udGVudFdpZHRoIiwic2hvd0FnZW50SW50cm9kdWN0aW9uIiwiJGFsaWduU3RhcnQiLCIkc2hvdyIsIiRpc0FnZW50VmlldyIsIiRmbG9hdGluZ0N1c3RvbUNlbnRlciIsIiRjZW50ZXJWZXJ0aWNhbGx5IiwiJGhlYWRlckNvbGxhYm9yYXRvckhvbWUiLCIkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWUiLCIkZ2FwIiwiJG1heFdpZHRoIiwicHJvamVjdFN1bW1hcnkiLCIkZ3JvdyIsInZhcmlhbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJSG9tZS9DaGF0QUlIb21lLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGZsdXNoU3luYyB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTGlzdENoZWNrbGlzdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0xpc3RDaGVja2xpc3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxuaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJy4uL0NoYXRBSU1vZGFsL2NvbnN0YW50cydcblxuaW1wb3J0IHtcbiAgU0NDQUlIb21lQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVDb250ZW50LFxuICBTQ0NBSUhvbWVDb250ZW50SW5uZXIsXG4gIFNDQ0FJSG9tZUdyYWRpZW50VG9wLFxuICBTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSxcbiAgU0NDQUlIb21lSGVhZGVyLFxuICBTQ0NBSUhvbWVHcmVldGluZyxcbiAgU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVBZ2VudEluZm8sXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5LFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGUsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24sXG4gIFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0LFxuICBTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24sXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dCxcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWUsXG4gIFNDQ0FJSG9tZUljb25Db250YWluZXIsXG4gIFNDQ0FJSG9tZUxvZ29XcmFwcGVyLFxuICBTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2ssXG4gIFNDQ0FJSG9tZVRpdGxlLFxuICBTQ0NBSUhvbWVUaXRsZUJsb2NrLFxuICBTQ0NBSUhvbWVTdWJ0aXRsZSxcbiAgU0NDQUlIb21lRHluYW1pY1NlY3Rpb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24sXG4gIE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFgsXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXJSb2xlLCBpc0NvbGxhYm9yYXRvclJvbGUsIGlzTWFuYWdlclJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkljb25zJ1xuaW1wb3J0IHsgb3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29yY2hlc3RyYXRvclN1YmFnZW50cydcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01haWFrZXJBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyBGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyBzb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMnXG5pbXBvcnQgeyByZXNvbHZlUmVjZW50Q29udGV4dHNIb21lTGltaXQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWNlbnRDb250ZXh0c0hvbWVMaW1pdCdcbmltcG9ydCB7IHVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucydcbmltcG9ydCB7IHVzZVJlY2VudENvbnRleHRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgdHlwZSB7IFJlY2VudENvbnRleHRJdGVtLCBSZWNlbnRDb250ZXh0VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL01BSUFJc29sb2dvJ1xuaW1wb3J0IHsgVGVtcGxhdGVHcmFkaWVudEljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9UZW1wbGF0ZUdyYWRpZW50SWNvbidcbmltcG9ydCB7IENoYXRBSUhvbWVNYWlha2VyIH0gZnJvbSAnLi9DaGF0QUlIb21lTWFpYWtlcidcblxudHlwZSBDaGF0QUlIb21lUHJvcHMgPSB7XG4gIG9uU3RhcnRDaGF0OiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgbWVudGlvbnM/OiBudWxsLFxuICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgIHNjSWQ/OiBzdHJpbmcsXG4gICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApID0+IHZvaWRcbiAgaGFuZGxlcnM6IFJlY29yZDxvcHRpb25zLCAoKSA9PiB2b2lkPlxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgZmxvYXRpbmc/OiBib29sZWFuXG59XG5cbmV4cG9ydCBlbnVtIEZyZXF1ZW50UXVlc3Rpb25zIHtcbiAgcmVudGFiaWxpZGFkX3Byb3llY3RvID0gJ3JlbnRhYmlsaWRhZF9wcm95ZWN0bycsXG4gIGF2YW5jZV9wcm95ZWN0byA9ICdhdmFuY2VfcHJveWVjdG8nLFxufVxuXG5jb25zdCBSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SID0gJyM0RDRENEQnXG5jb25zdCBSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFggPSAxNVxuXG5jb25zdCBSZWNlbnRDb250ZXh0UGlsbCA9ICh7XG4gIGNvbnRleHQsXG4gIGxhYmVsLFxuICBvbkNsaWNrLFxuICBmdWxsV2lkdGggPSBmYWxzZSxcbn06IHtcbiAgY29udGV4dDogUmVjZW50Q29udGV4dEl0ZW1cbiAgbGFiZWw6IHN0cmluZ1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkXG4gIGZ1bGxXaWR0aD86IGJvb2xlYW5cbn0pID0+IHtcbiAgY29uc3QgdGV4dFJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtsYWJlbF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGwgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQ2xpY2t9ICRmdWxsV2lkdGg9e2Z1bGxXaWR0aH0+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uPlxuICAgICAgICB7Y29udGV4dC50eXBlID09PSAndGFzaycgPyAoXG4gICAgICAgICAgPExpc3RDaGVja2xpc3QgY29sb3I9e1JFQ0VOVF9DT05URVhUX0lDT05fQ09MT1J9IHdpZHRoPVwiMTVweFwiIGhlaWdodD1cIjE1cHhcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGdldENvbnRleHRNZW50aW9uSWNvbihjb250ZXh0LnR5cGUsIFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IsIHVuZGVmaW5lZCwgUkVDRU5UX0NPTlRFWFRfSUNPTl9TSVpFX1BYKVxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0IHJlZj17dGV4dFJlZn0+XG4gICAgICAgIHtzaG93VG9vbHRpcCA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17bGFiZWx9PlxuICAgICAgICAgICAgPHNwYW4+e2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0PlxuICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGw+XG4gIClcbn1cblxuY29uc3QgcGFyc2VOdW1lcmljSWQgPSAodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKVxuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG59XG5cbmNvbnN0IGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSAocm9sZUlkPzogQ09SVXNlclJvbGUgfCBudW1iZXIgfCBzdHJpbmcpOiBTZXQ8UmVjZW50Q29udGV4dFR5cGU+ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFJvbGVJZCA9IE51bWJlcihyb2xlSWQpXG4gIGlmIChcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5DTEVWRUwgfHxcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5ESVJFQ1RPUiB8fFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLlBST0pFQ1RfTUFOQUdFUlxuICApIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snXSlcbiAgfVxuICBpZiAoaXNDb2xsYWJvcmF0b3JSb2xlKHJvbGVJZCkpIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ3Rhc2snXSlcbiAgfVxuICByZXR1cm4gbmV3IFNldCgpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlIb21lID0gKHsgaGFuZGxlcnMsIG9uU3RhcnRDaGF0LCBleHBhbmRlZCwgZmxvYXRpbmcgfTogQ2hhdEFJSG9tZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQsIHNlY3Rpb24sIGNsaWVudCwgcHJvamVjdCwgdGFzaywgY2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCB9ID1cbiAgICB1c2VHbG9iYWxDb250ZXh0KClcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcbiAgY29uc3QgZmxvYXRpbmdDdXN0b21DZW50ZXIgPSAhIShmbG9hdGluZyAmJiBhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbScpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0JyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBjb25zdCBzdW1tYXJ5UHJvamVjdEFjY2VzcyA9XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAoU3RyaW5nKHdpbmRvdy5NQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnIHx8XG4gICAgICBTdHJpbmcod2luZG93Lm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKVxuICBjb25zdCBmYXFzQWNjZXNzID0gdHJ1ZVxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnkgPSAhIShpc01BSUEgJiYgc3VtbWFyeVByb2plY3RBY2Nlc3MpXG4gIC8vIEVsIG9yY2hlc3RyYXRvciAodHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIG11ZXN0cmEgRkFRcy9GVUFzIGFncmVnYWRhcyBkZSBzdXMgc3ViYWdlbnRlcyxcbiAgLy8gYXPDrSBxdWUgTk8gc2UgdHJhdGEgY29tbyBtYWlha2VyIGFjw6EuXG4gIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICBjb25zdCBpc0hlYWRlckhvbWUgPSBpc01BSUEgJiYgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG4gIC8vIEVsIG9yY2hlc3RyYXRvciB1c2EgZWwgaG9tZSBlbiAyIHBhc29zIChjb250ZXh0b3MgcmVjaWVudGVzIOKGlCBGQVFzL0ZVQXMpIGVuIGhlYWRlci9wcm9qZWN0L2NsaWVudC90YXNrLlxuICAvLyBFbiBwcm9qZWN0L2NsaWVudC90YXNrLCBhbCBsaW1waWFyIGVsIGNvbnRleHRvIChwLiBlai4gYWwgcmVzZWxlY2Npb25hciBNQUlBXG4gIC8vIGRlc2RlIGVsIGxpc3RhZG8gZGUgYWdlbnRlcykgc2UgbXVlc3RyYSBlbCBzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzIGVuIGx1Z2FyIGRlIHVuIGhvbWUgdmFjw61vLlxuICBjb25zdCBpc09yY2hlc3RyYXRvciA9IGlzTUFJQSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgLy8gUGxhbm5lcjogaG9tZSBkZSBGVUFzIGRlbCBvcmNoZXN0cmF0b3IgKHNpbiBzZWxlY3RvciBkZSBjb250ZXh0b3MpLlxuICAvLyBTaSBlbCB1c3VhcmlvIG5hdmVnYSBhIE1haWFrZXIgdSBvdHJvIGFnZW50ZSwgc2VjdGlvbiBzaWd1ZSBzaWVuZG8gYHBsYW5uZXJgIHBlcm8geWEgbm8gZXMgZXN0ZSBob21lLlxuICBjb25zdCBpc1BsYW5uZXJIb21lID0gc2VjdGlvbiA9PT0gJ3BsYW5uZXInICYmIGlzT3JjaGVzdHJhdG9yXG4gIC8vIEhvbWVzIGRlIHNlY2Npw7NuIChwcm9qZWN0L2NsaWVudC90YXNrKTogc2luIGlzb2xvZ28sIGNvbnRlbmlkbyB0b3AtbGVmdCwgY29sdW1uYSA0NDhweCBjZW50cmFkYS5cbiAgY29uc3QgaXNTZWN0aW9uT3JjaGVzdHJhdG9ySG9tZSA9IGlzT3JjaGVzdHJhdG9yICYmICFpc0hlYWRlckhvbWUgJiYgIWlzUGxhbm5lckhvbWVcbiAgY29uc3QgaGFzSG91cnNTdWJhZ2VudCA9IG9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQoYWdlbnQpXG5cbiAgLy8gSG9tZSBkZWwgb3JjaGVzdHJhdG9yIGVuIDIgcGFzb3M6XG4gIC8vICAtIFBhc28gMSAoc2luIGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBzb2xvIGxvcyBjb250ZXh0b3MgcmVjaWVudGVzLlxuICAvLyAgLSBQYXNvIDIgKGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBsYXMgRkFRcy9hY2Npb25lcyBxdWUgcmVmZXJlbmNpYW4gZXNlIGNvbnRleHRvLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNSZWNlbnRDb250ZXh0c1N0ZXAgPSBpc09yY2hlc3RyYXRvciAmJiAhaGFzUGlubmVkQ29udGV4dCAmJiAhaXNQbGFubmVySG9tZVxuICAvLyBIZWFkZXIgcGFzbyAxIGNvbXBhY3RvIChzaW4gaXNvbG9nbywgcGlsbHMgZnVsbC13aWR0aCk6IGNvbGFib3JhZG9yIHkgbWFuYWdlcnMgKEMtTGV2ZWwvRGlyZWN0b3IvUE0pLlxuICBjb25zdCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSA9XG4gICAgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgKGlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpIHx8IGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSlcbiAgLy8gQmxvcXVlIEZVQXMgcGxhbm5lciArIHNlY2Npw7NuIGRlIGNvbnRleHRvcyByZWNpZW50ZXMgY29uIHTDrXR1bG9zIChjb2xhYm9yYWRvciBvIG1hbmFnZXIgY29uIGhvdXIpLlxuICBjb25zdCBpc0hlYWRlckhvdXJzQWdlbnRIb21lID0gaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiYgaGFzSG91cnNTdWJhZ2VudFxuICBjb25zdCBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPSBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmIGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKVxuICBjb25zdCBoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzSGVhZGVySG91cnNBZ2VudEhvbWUpIHtcbiAgICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUpIHJldHVybiAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVNYW5hZ2VyV2l0aEhvdXJzJ1xuICAgICAgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZUNvbGxhYm9yYXRvcldpdGhIb3VycydcbiAgICB9XG4gICAgaWYgKGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSkgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICByZXR1cm4gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlQ29sbGFib3JhdG9yJ1xuICB9LCBbaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSwgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCB1c2VyLnJvbGVfaWRdKVxuICBjb25zdCBpc0NvbnRleHRIb21lU3RlcCA9IGlzSGVhZGVySG9tZSAmJiBoYXNQaW5uZWRDb250ZXh0XG4gIC8vIEhlYWRlciBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8pIHkgaG9tZXMgZGUgc2VjY2nDs24gY29tcGFydGVuIGxheW91dDogc2luIGlzb2xvZ28sIHRleHRvIGEgbGEgaXpxdWllcmRhLlxuICBjb25zdCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA9IGlzU2VjdGlvbk9yY2hlc3RyYXRvckhvbWUgfHwgaXNDb250ZXh0SG9tZVN0ZXBcblxuICBjb25zdCBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSkgcmV0dXJuIGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXModXNlci5yb2xlX2lkKVxuICAgIGlmIChpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiBpc01hbmFnZXJSb2xlKHVzZXIucm9sZV9pZCkpIHJldHVybiBnZXRBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzKHVzZXIucm9sZV9pZClcbiAgICBpZiAoaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUpIHJldHVybiBuZXcgU2V0PFJlY2VudENvbnRleHRUeXBlPihbJ3Rhc2snXSlcbiAgICByZXR1cm4gZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyh1c2VyLnJvbGVfaWQpXG4gIH0sIFt1c2VyLnJvbGVfaWQsIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSwgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWVdKVxuXG4gIC8vIENvbnRleHRvIGFjdGl2byBwYXJhIGRlcml2YXIgRkFRcy9hY2Npb25lcyAocGFzbyAyKS4gUHJlZmVyaW1vcyBlbCBwaWxsIGNsaWNrZWFkbztcbiAgLy8gc2kgbm8sIGxvIHJlY29uc3RydWltb3MgZGVzZGUgZWwgY29udGV4dG8gZ2xvYmFsLlxuICBjb25zdCBbc2VsZWN0ZWRDb250ZXh0LCBzZXRTZWxlY3RlZENvbnRleHRdID0gdXNlU3RhdGU8UmVjZW50Q29udGV4dEl0ZW0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaGFzUGlubmVkQ29udGV4dCkgc2V0U2VsZWN0ZWRDb250ZXh0KG51bGwpXG4gIH0sIFtoYXNQaW5uZWRDb250ZXh0XSlcblxuICBjb25zdCBhY3RpdmVDb250ZXh0ID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWRDb250ZXh0KSByZXR1cm4gc2VsZWN0ZWRDb250ZXh0XG4gICAgaWYgKCFpc0NvbnRleHRIb21lU3RlcCkgcmV0dXJuIG51bGxcbiAgICBpZiAodGFzaz8uaWQpIHJldHVybiB7IHR5cGU6ICd0YXNrJywgaWQ6IHRhc2suaWQsIG5hbWU6IHRhc2submFtZSB9XG4gICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdElkKSByZXR1cm4geyB0eXBlOiAncHJvamVjdCcsIGlkOiBjaGlwc1Byb2plY3QucHJvamVjdElkLCBuYW1lOiBjaGlwc1Byb2plY3QucHJvamVjdE5hbWUgfVxuICAgIGlmIChjbGllbnQ/LmlkKSByZXR1cm4geyB0eXBlOiAnY2xpZW50JywgaWQ6IGNsaWVudC5pZCwgbmFtZTogY2xpZW50Lm5hbWUgfVxuICAgIHJldHVybiBudWxsXG4gIH0sIFtcbiAgICBzZWxlY3RlZENvbnRleHQsXG4gICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgdGFzaz8uaWQsXG4gICAgdGFzaz8ubmFtZSxcbiAgICBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICBjaGlwc1Byb2plY3Q/LnByb2plY3ROYW1lLFxuICAgIGNsaWVudD8uaWQsXG4gICAgY2xpZW50Py5uYW1lLFxuICBdKVxuXG4gIC8vIGVudGl0eV90eXBlIGRlbCBjb250ZXh0byBwaW5lYWRvIChwcm9qZWN0L2NsaWVudC90YXNrKSwgdG9tYWRvIGRlbCBjb250ZXh0byBnbG9iYWwuXG4gIC8vIEFwbGljYSB0YW50byBhbCBhYnJpciBNQUlBIGRlc2RlIHVuYSBzZWNjacOzbiBlc3BlY8OtZmljYSBjb21vIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbi5cbiAgY29uc3QgcGlubmVkRW50aXR5VHlwZSA9IHVzZU1lbW88UmVjZW50Q29udGV4dFR5cGUgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBpZiAodGFzaz8uaWQpIHJldHVybiAndGFzaydcbiAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgcHJvamVjdD8uaWQpIHJldHVybiAncHJvamVjdCdcbiAgICBpZiAoY2xpZW50Py5pZCkgcmV0dXJuICdjbGllbnQnXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBwcm9qZWN0Py5pZCwgY2xpZW50Py5pZF0pXG5cbiAgLy8gRkFRcyBzb2xvIGNvbiBjb250ZXh0byBjbGllbnRlIHBpbmVhZG8gKGhlYWRlciBwYXNvIDIgbyBzZWNjacOzbiBjbGllbnQpLlxuICAvLyBQcm95ZWN0bywgdGFyZWEgeSBwbGFubmVyIG11ZXN0cmFuIHNvbG8gRlVBcy5cbiAgY29uc3QgZmFxc0NvbnRleHRFbnRpdHlUeXBlID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lIHx8IGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGlzSGVhZGVySG9tZSkge1xuICAgICAgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gKGFjdGl2ZUNvbnRleHQ/LnR5cGUgPz8gcGlubmVkRW50aXR5VHlwZSkgOiB1bmRlZmluZWRcbiAgICB9XG4gICAgcmV0dXJuIHBpbm5lZEVudGl0eVR5cGVcbiAgfSwgW2lzUGxhbm5lckhvbWUsIGlzUmVjZW50Q29udGV4dHNTdGVwLCBpc0hlYWRlckhvbWUsIGlzQ29udGV4dEhvbWVTdGVwLCBhY3RpdmVDb250ZXh0Py50eXBlLCBwaW5uZWRFbnRpdHlUeXBlXSlcbiAgY29uc3QgaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA9IGZhcXNDb250ZXh0RW50aXR5VHlwZSA9PT0gJ2NsaWVudCdcbiAgLy8gYHNlY3Rpb25gIHF1ZSBzZSBjb25zdWx0YSBwYXJhIGxhcyBGVUFzOiBlbiBuby1oZWFkZXIgc2lndWUgZWwgdGlwbyBkZSBjb250ZXh0byBwaW5lYWRvLlxuICAvLyBFbiBwbGFubmVyIHNlIGZ1ZXJ6YSBsYSBzZWN0aW9uIEFQSSBgcGxhbm5lcmAuXG4gIGNvbnN0IGZ1YXNTZWN0aW9uOiBTZWN0aW9uID0gKCgpID0+IHtcbiAgICBpZiAoaXNQbGFubmVySG9tZSkgcmV0dXJuICdwbGFubmVyJ1xuICAgIGlmICghaXNIZWFkZXJIb21lICYmIHBpbm5lZEVudGl0eVR5cGUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIHNlY3Rpb25cbiAgfSkoKVxuXG4gIC8vIEZBUXMvYWNjaW9uZXM6XG4gIC8vICAtIGhlYWRlci1ob21lIChvcmNoZXN0cmF0b3IpLCBwYXNvIDI6IGZpbHRyYWRhcyBwb3IgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2VsZWNjaW9uYWRvLlxuICAvLyAgLSBob21lcyBkZSBwcm95ZWN0by9jbGllbnRlL3RhcmVhIChzZWNjacOzbik6IGZpbHRyYWRhcyBwb3IgZWwgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2V0ZWFkby5cbiAgLy8gIC0gcGxhbm5lcjogRlVBcyBjb24gc2VjdGlvbj1wbGFubmVyLCBzaW4gZW50aXR5X3R5cGUgbmkgRkFRcy5cbiAgY29uc3QgcmVhbExpc3RzQWdlbnRJZCA9ICgoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEgfHwgaXNNYWlha2VyKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgLy8gUGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzLCBzaW4gY29udGV4dG8pOiBubyBzZSBwaWRlbiBGQVFzL0ZVQXMuXG4gICAgaWYgKGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGlzSGVhZGVySG9tZSkgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkXG4gICAgcmV0dXJuIGFnZW50Py5pZFxuICB9KSgpXG4gIGNvbnN0IHJlYWxMaXN0c0VudGl0eVR5cGUgPSAoKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lKSByZXR1cm4gJ3BsYW5uZXInXG4gICAgaWYgKCFpc0hlYWRlckhvbWUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gKGFjdGl2ZUNvbnRleHQ/LnR5cGUgPz8gcGlubmVkRW50aXR5VHlwZSkgOiB1bmRlZmluZWRcbiAgfSkoKVxuICBjb25zdCB7IGFjdGlvbnM6IGFnZW50RnVhcywgbG9hZGluZzogZnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICByZWFsTGlzdHNBZ2VudElkLFxuICAgIGZ1YXNTZWN0aW9uLFxuICAgIHJlYWxMaXN0c0VudGl0eVR5cGVcbiAgKVxuICBjb25zdCB7IGFjdGlvbnM6IGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzLCBsb2FkaW5nOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmICFpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ3BsYW5uZXInXG4gIClcbiAgY29uc3QgeyBhY3Rpb25zOiBtYW5hZ2VySG9tZUZ1YXMsIGxvYWRpbmc6IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ2hvbWVfd2l0aF9ob3VycydcbiAgKVxuICAvLyBBMTE6IG15LWRheSArIHNob3VsZC1yZXZpZXcgQ1RBcyBvbmx5IGZvciBjb2xsYWJvcmF0b3IgKHJvbGVfaWQ9NCkgKyBmdWxsc2NyZWVuIGhlYWRlciBob21lLlxuICAvLyBCb3RoIEZVQXMgc2hhcmUgc2VjdGlvbj1ob21lX2NvbGxhYm9yYXRvciAob3JkZXIgMSBteS1kYXkgLyBvcmRlciAyIHNob3VsZC1yZXZpZXcpLlxuICBjb25zdCBzaG91bGRGZXRjaENvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzID0gQm9vbGVhbihleHBhbmRlZCAmJiBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKSAmJiBpc0hlYWRlckhvbWUpXG4gIGNvbnN0IHsgYWN0aW9uczogY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMsIGxvYWRpbmc6IGNvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIHNob3VsZEZldGNoQ29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ2hvbWVfY29sbGFib3JhdG9yJ1xuICApXG4gIGNvbnN0IGhlYWRlckhvdXJzRnVhcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUpIHJldHVybiBzb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMobWFuYWdlckhvbWVGdWFzKVxuICAgIHJldHVybiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc1xuICB9LCBbaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBtYW5hZ2VySG9tZUZ1YXMsIGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzXSlcbiAgY29uc3QgaGVhZGVySG91cnNGdWFzTG9hZGluZyA9IGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA/IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmdcbiAgY29uc3QgcmVjZW50Q29udGV4dHNMaW1pdCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHJlc29sdmVSZWNlbnRDb250ZXh0c0hvbWVMaW1pdCh7XG4gICAgICAgIGlzSGVhZGVySG91cnNBZ2VudEhvbWUsXG4gICAgICAgIGZ1YXNMb2FkaW5nOiBoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nLFxuICAgICAgICBmdWFzQ291bnQ6IGhlYWRlckhvdXJzRnVhcy5sZW5ndGgsXG4gICAgICB9KSxcbiAgICBbaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSwgaGVhZGVySG91cnNGdWFzTG9hZGluZywgaGVhZGVySG91cnNGdWFzLmxlbmd0aF1cbiAgKVxuICBjb25zdCB7IGNvbnRleHRzOiBmZXRjaGVkUmVjZW50Q29udGV4dHMsIGxvYWRpbmc6IHJlY2VudENvbnRleHRzTG9hZGluZyB9ID0gdXNlUmVjZW50Q29udGV4dHMoe1xuICAgIGVuYWJsZWQ6IGlzT3JjaGVzdHJhdG9yICYmICFpc1BsYW5uZXJIb21lLFxuICAgIGxpbWl0OiByZWNlbnRDb250ZXh0c0xpbWl0LFxuICB9KVxuICBjb25zdCByZWNlbnRDb250ZXh0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZmV0Y2hlZFJlY2VudENvbnRleHRzLmZpbHRlcihjb250ZXh0ID0+IGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMuaGFzKGNvbnRleHQudHlwZSkpLFxuICAgIFtmZXRjaGVkUmVjZW50Q29udGV4dHMsIGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXNdXG4gIClcbiAgY29uc3QgcmVjZW50Q29udGV4dFNrZWxldG9uS2V5cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogcmVjZW50Q29udGV4dHNMaW1pdCB9LCAoXywgaW5kZXgpID0+IGByZWNlbnQtY29udGV4dC1za2VsZXRvbi0ke2luZGV4ICsgMX1gKSxcbiAgICBbcmVjZW50Q29udGV4dHNMaW1pdF1cbiAgKVxuICBjb25zdCBmYXFzTGlzdEFnZW50SWQgPSBpc0NsaWVudENvbnRleHRGb3JGYXFzID8gcmVhbExpc3RzQWdlbnRJZCA6IHVuZGVmaW5lZFxuICBjb25zdCBmYXFzTGlzdEVudGl0eVR5cGUgPSBpc0NsaWVudENvbnRleHRGb3JGYXFzID8gcmVhbExpc3RzRW50aXR5VHlwZSA6IHVuZGVmaW5lZFxuICBjb25zdCB7XG4gICAgZmFxczogYWdlbnRGYXFzLFxuICAgIGxvYWRpbmc6IGZhcXNMb2FkaW5nLFxuICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyxcbiAgfSA9IHVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyhmYXFzTGlzdEFnZW50SWQsIGxhbmcsIGZhcXNMaXN0RW50aXR5VHlwZSlcbiAgY29uc3QgZmFxc0ZldGNoUmVmID0gdXNlUmVmPHsgYWdlbnRJZDogc3RyaW5nOyBsYW5nOiBzdHJpbmc7IGVudGl0eVR5cGU/OiBzdHJpbmcgfSB8IG51bGw+KG51bGwpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRkFRcyBzb2xvIHBhcmEgY29udGV4dG8gY2xpZW50ZTsgZWwgcmVzdG8gbXVlc3RyYSBzb2xvIEZVQXMuXG4gICAgaWYgKCFyZWFsTGlzdHNBZ2VudElkIHx8ICFpc0NsaWVudENvbnRleHRGb3JGYXFzKSByZXR1cm5cbiAgICBjb25zdCBjdXJyZW50S2V5ID0gYCR7cmVhbExpc3RzQWdlbnRJZH0tJHtsYW5nfS0ke3JlYWxMaXN0c0VudGl0eVR5cGUgPz8gJ2FsbCd9YFxuICAgIGNvbnN0IGxhc3RLZXkgPSBmYXFzRmV0Y2hSZWYuY3VycmVudFxuICAgICAgPyBgJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5hZ2VudElkfS0ke2ZhcXNGZXRjaFJlZi5jdXJyZW50Lmxhbmd9LSR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQuZW50aXR5VHlwZSA/PyAnYWxsJ31gXG4gICAgICA6IG51bGxcbiAgICBpZiAoY3VycmVudEtleSAhPT0gbGFzdEtleSkge1xuICAgICAgZmFxc0ZldGNoUmVmLmN1cnJlbnQgPSB7IGFnZW50SWQ6IHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIGVudGl0eVR5cGU6IHJlYWxMaXN0c0VudGl0eVR5cGUgfVxuICAgICAgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKHsgYWdlbnRJZDogcmVhbExpc3RzQWdlbnRJZCwgbGFuZywgZW50aXR5VHlwZTogcmVhbExpc3RzRW50aXR5VHlwZSB9KVxuICAgIH1cbiAgfSwgW3JlYWxMaXN0c0FnZW50SWQsIHJlYWxMaXN0c0VudGl0eVR5cGUsIGlzQ2xpZW50Q29udGV4dEZvckZhcXMsIGxhbmcsIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc10pXG5cbiAgY29uc3QgZmFxcyA9IGFnZW50RmFxc1xuICBjb25zdCBmdWFzID0gYWdlbnRGdWFzXG4gIGNvbnN0IGZhcXNBcmVMb2FkaW5nID0gZmFxc0xvYWRpbmdcbiAgY29uc3QgZnVhc0FyZUxvYWRpbmcgPSBmdWFzTG9hZGluZ1xuXG4gIGNvbnN0IHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrID0gaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgKHJlY2VudENvbnRleHRzTG9hZGluZyB8fCByZWNlbnRDb250ZXh0cy5sZW5ndGggPiAwKVxuICBjb25zdCBzaG91bGRTaG93RmFxcyA9XG4gICAgaXNNQUlBICYmXG4gICAgaXNDbGllbnRDb250ZXh0Rm9yRmFxcyAmJlxuICAgICFpc1JlY2VudENvbnRleHRzU3RlcCAmJlxuICAgIChpc0NvbnRleHRIb21lU3RlcCB8fCAoIWlzSGVhZGVySG9tZSAmJiBmYXFzQWNjZXNzKSkgJiZcbiAgICAhaXNNYWlha2VyICYmXG4gICAgKGZhcXMubGVuZ3RoID4gMCB8fCBmYXFzQXJlTG9hZGluZylcbiAgY29uc3Qgc2hvdWxkU2hvd0Z1YXMgPVxuICAgICFpc1JlY2VudENvbnRleHRzU3RlcCAmJiAhaXNNYWlha2VyICYmIChpc0NvbnRleHRIb21lU3RlcCB8fCAhaXNIZWFkZXJIb21lKSAmJiAoZnVhcy5sZW5ndGggPiAwIHx8IGZ1YXNBcmVMb2FkaW5nKVxuICBjb25zdCBzaG91bGRTaG93UGxhbm5lckZ1YXNMb2FkaW5nID0gaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSAmJiBoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nICYmIGhlYWRlckhvdXJzRnVhcy5sZW5ndGggPT09IDBcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzQ29udGVudCA9IGlzSGVhZGVySG91cnNBZ2VudEhvbWUgJiYgaGVhZGVySG91cnNGdWFzLmxlbmd0aCA+IDBcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzID0gc2hvdWxkU2hvd1BsYW5uZXJGdWFzTG9hZGluZyB8fCBzaG91bGRTaG93UGxhbm5lckZ1YXNDb250ZW50XG4gIGNvbnN0IHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmcgPVxuICAgIHNob3VsZEZldGNoQ29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgJiZcbiAgICBjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmcgJiZcbiAgICBjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcy5sZW5ndGggPT09IDBcbiAgY29uc3Qgc2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzQ29udGVudCA9XG4gICAgc2hvdWxkRmV0Y2hDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyAmJiBjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcy5sZW5ndGggPiAwXG4gIGNvbnN0IHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyA9XG4gICAgc2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzTG9hZGluZyB8fCBzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNDb250ZW50XG5cbiAgY29uc3Qgc2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCA9IHNob3dQcm9qZWN0U3VtbWFyeSAmJiBhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCdcbiAgY29uc3Qgc2hvd0ZBUXMgPSAhIShcbiAgICBzaG93UmVjZW50Q29udGV4dHNCbG9jayB8fFxuICAgIHNob3VsZFNob3dGYXFzIHx8XG4gICAgc2hvdWxkU2hvd0Z1YXMgfHxcbiAgICBzaG91bGRTaG93UGxhbm5lckZ1YXMgfHxcbiAgICBzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgfHxcbiAgICBzaG93UHJvamVjdFN1bW1hcnlDYXJkIHx8XG4gICAgaXNNYWlha2VyXG4gIClcbiAgY29uc3QgaG9tZVNjcm9sbGFibGVMYXlvdXQgPSBzaG93RkFRc1xuICBjb25zdCBzaG93RHluYW1pY1NlY3Rpb24gPVxuICAgIHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrIHx8XG4gICAgc2hvdWxkU2hvd0ZhcXMgfHxcbiAgICBzaG91bGRTaG93RnVhcyB8fFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhcyB8fFxuICAgIHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyB8fFxuICAgIGlzTWFpYWtlclxuXG4gIC8vIEzDs2dpY2EgZGVsIHNjcm9sbCBjb24gZ3JhZGllbnRlc1xuICBjb25zdCBjb250ZW50Q29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbc2hvd1RvcEdyYWRpZW50LCBzZXRTaG93VG9wR3JhZGllbnRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93Qm90dG9tR3JhZGllbnQsIHNldFNob3dCb3R0b21HcmFkaWVudF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzU2Nyb2xsaW5nLCBzZXRJc1Njcm9sbGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsVGltZW91dFJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG5cbiAgLy8gU2FsdWRvIGZpam8gcG9yIHRpcG8gZGUgY29udGV4dG8gKGkxOG4pLiBDdXN0b20gYWdlbnRzIHNpZ3VlbiB1c2FuZG8gYWdlbnQuaW50cm9kdWN0aW9uLlxuICAvLyBQbGFubmVyIHVzYSB0w610dWxvICsgYmFqYWRhIHByb3Bpb3MgKGBwbGFubmVySG9tZWApLCBubyBlc3RlIGdyZWV0aW5nLlxuICBjb25zdCBncmVldGluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc01haWFrZXIgfHwgaXNQbGFubmVySG9tZSB8fCBpc1JlY2VudENvbnRleHRzU3RlcCkgcmV0dXJuICcnXG5cbiAgICBpZiAoaXNNQUlBICYmIHBpbm5lZEVudGl0eVR5cGUpIHtcbiAgICAgIHJldHVybiB0KGBob21lTWVudS5jb250ZXh0SG9tZS5jb250ZXh0R3JlZXRpbmcuJHtwaW5uZWRFbnRpdHlUeXBlfWApXG4gICAgfVxuXG4gICAgY29uc3QgaW50cm8gPSBhZ2VudD8uaW50cm9kdWN0aW9uXG4gICAgaWYgKCFpbnRybykgcmV0dXJuICcnXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW50cm8pICYmIGludHJvLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBpbnRyb1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBpbnRyby5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGludHJvID09PSAnc3RyaW5nJyA/IGludHJvIDogJydcbiAgfSwgW2FnZW50Py5pZCwgYWdlbnQ/LmludHJvZHVjdGlvbiwgaXNNYWlha2VyLCBpc1BsYW5uZXJIb21lLCBpc01BSUEsIHBpbm5lZEVudGl0eVR5cGUsIGlzUmVjZW50Q29udGV4dHNTdGVwLCB0XSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRleHQ6IFJlY2VudENvbnRleHRJdGVtLCBvcmRlcjogbnVtYmVyKSA9PiB7XG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0Q29udGV4dFNlbGVjdGVkLCB7IG9yZGVyLCB0eXBlOiBjb250ZXh0LnR5cGUgfSlcblxuICAgICAgY29uc3QgY29udGV4dElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5pZClcbiAgICAgIGNvbnN0IGNsaWVudElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5wYXJlbnRzPy5jbGllbnRfaWQpXG4gICAgICBjb25zdCBwcm9qZWN0SWQgPSBwYXJzZU51bWVyaWNJZChjb250ZXh0LnBhcmVudHM/LnByb2plY3RfaWQpXG4gICAgICBjb25zdCBjbGllbnROYW1lID0gY29udGV4dC5wYXJlbnRzPy5jbGllbnRfbmFtZSB8fCAnJ1xuICAgICAgY29uc3QgcHJvamVjdE5hbWUgPSBjb250ZXh0LnBhcmVudHM/LnByb2plY3RfbmFtZSB8fCAnJ1xuXG4gICAgICBzZXRTZWxlY3RlZENvbnRleHQoY29udGV4dClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgaWYgKGNvbnRleHRJZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgc2V0Q2xpZW50Py4oeyBpZDogY29udGV4dElkLCBuYW1lOiBjb250ZXh0Lm5hbWUgfSlcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC50eXBlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgaWYgKGNvbnRleHRJZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgaWQ6IGNvbnRleHRJZCxcbiAgICAgICAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudDogeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGNvbnRleHRJZCksXG4gICAgICAgICAgcHJvamVjdE5hbWU6IGNvbnRleHQubmFtZSxcbiAgICAgICAgICBjbGllbnROYW1lLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChjb250ZXh0LnR5cGUgPT09ICd0YXNrJykge1xuICAgICAgICBzZXRUYXNrKHtcbiAgICAgICAgICBpZDogY29udGV4dC5pZCxcbiAgICAgICAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCAhPSBudWxsID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGNsaWVudElkICE9IG51bGwpIHtcbiAgICAgICAgICBzZXRDbGllbnQ/Lih7IGlkOiBjbGllbnRJZCwgbmFtZTogY2xpZW50TmFtZSB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgICAgaWQ6IHByb2plY3RJZCxcbiAgICAgICAgICAgIG5hbWU6IHByb2plY3ROYW1lIHx8IGAke3QoJ2hvbWVNZW51LnJlY2VudENvbnRleHRzLnR5cGVzLnByb2plY3QnKX0gJHtwcm9qZWN0SWR9YCxcbiAgICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZCB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudDogeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZCksXG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWUgfHwgYCR7dCgnaG9tZU1lbnUucmVjZW50Q29udGV4dHMudHlwZXMucHJvamVjdCcpfSAke3Byb2plY3RJZH1gLFxuICAgICAgICAgICAgY2xpZW50TmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdtYWlhLWlucHV0LXJlZm9jdXMnKSlcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZXZlbnQsIHNldENoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlSG9tZVN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBudWxsLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSAmJiBmdWFJZCkge1xuICAgICAgICBmbHVzaFN5bmMoKCkgPT4ge1xuICAgICAgICAgIHNldFNlbGVjdGVkQ29udGV4dChudWxsKVxuICAgICAgICAgIHNldFRhc2sobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIG9uU3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZCwgY29udGV4dERhdGEpXG4gICAgfSxcbiAgICBbaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBvblN0YXJ0Q2hhdCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdXG4gIClcblxuICBjb25zdCByZW5kZXJSZWNlbnRDb250ZXh0cyA9ICgpID0+IHtcbiAgICBpZiAoIWlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1xuICAgICAgICAkZml4ZWRDb250ZW50V2lkdGg9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCA6IHVuZGVmaW5lZH1cbiAgICAgID5cbiAgICAgICAge2lzSGVhZGVySG91cnNBZ2VudEhvbWUgPyAoXG4gICAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRDb250ZXh0c1NlY3Rpb25NYW5hZ2VyLnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnRpdGxlJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRDb250ZXh0c1NlY3Rpb25NYW5hZ2VyLnN1YnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnN1YnRpdGxlJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QgJGZsdXNoUGlsbHM9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lfT5cbiAgICAgICAgICB7cmVjZW50Q29udGV4dHNMb2FkaW5nICYmXG4gICAgICAgICAgICByZWNlbnRDb250ZXh0U2tlbGV0b25LZXlzLm1hcChrZXkgPT4gPFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24ga2V5PXtrZXl9IC8+KX1cbiAgICAgICAgICB7IXJlY2VudENvbnRleHRzTG9hZGluZyAmJlxuICAgICAgICAgICAgcmVjZW50Q29udGV4dHMubWFwKChjb250ZXh0LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8UmVjZW50Q29udGV4dFBpbGxcbiAgICAgICAgICAgICAgICBrZXk9e2Ake2NvbnRleHQudHlwZX0tJHtjb250ZXh0LmlkfWB9XG4gICAgICAgICAgICAgICAgY29udGV4dD17Y29udGV4dH1cbiAgICAgICAgICAgICAgICBsYWJlbD17Y29udGV4dC5uYW1lLnRyaW0oKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0KGNvbnRleHQsIGluZGV4ICsgMSl9XG4gICAgICAgICAgICAgICAgZnVsbFdpZHRoPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdD5cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHM+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgY2hlY2tTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSByZXR1cm5cblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgY29uc3QgaXNTY3JvbGxhYmxlID0gc2Nyb2xsSGVpZ2h0ID4gY2xpZW50SGVpZ2h0XG4gICAgY29uc3QgaXNBdFRvcCA9IHNjcm9sbFRvcCA9PT0gMFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMVxuXG4gICAgc2V0U2hvd1RvcEdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdFRvcClcbiAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoaXNTY3JvbGxhYmxlICYmICFpc0F0Qm90dG9tKVxuICB9LCBbaG9tZVNjcm9sbGFibGVMYXlvdXRdKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjaGVja1Njcm9sbCgpXG4gICAgc2V0SXNTY3JvbGxpbmcodHJ1ZSlcblxuICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRJc1Njcm9sbGluZyhmYWxzZSlcbiAgICB9LCAxNTApXG4gIH0sIFtjaGVja1Njcm9sbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSB7XG4gICAgICBzZXRTaG93VG9wR3JhZGllbnQoZmFsc2UpXG4gICAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoZmFsc2UpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlZHVsZUNoZWNrU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2hlY2tTY3JvbGwoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzY2hlZHVsZUNoZWNrU2Nyb2xsKClcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoc2NoZWR1bGVDaGVja1Njcm9sbClcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcilcbiAgICBjb25zdCBzY3JvbGxDb250ZW50ID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkXG4gICAgaWYgKHNjcm9sbENvbnRlbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHNjcm9sbENvbnRlbnQpXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoc2NoZWR1bGVDaGVja1Njcm9sbCwgMTAwKVxuICAgIGNvbnN0IGxhdGVUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChzY2hlZHVsZUNoZWNrU2Nyb2xsLCA0MDApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgIGNsZWFyVGltZW91dChsYXRlVGltZW91dElkKVxuICAgICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0LCBjaGVja1Njcm9sbCwgaGFuZGxlU2Nyb2xsXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaG9tZVNjcm9sbGFibGVMYXlvdXQpIHJldHVyblxuICAgIGNoZWNrU2Nyb2xsKClcbiAgfSwgW1xuICAgIGhvbWVTY3JvbGxhYmxlTGF5b3V0LFxuICAgIGNoZWNrU2Nyb2xsLFxuICAgIHJlY2VudENvbnRleHRzTG9hZGluZyxcbiAgICByZWNlbnRDb250ZXh0cy5sZW5ndGgsXG4gICAgaGVhZGVySG91cnNGdWFzTG9hZGluZyxcbiAgICBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoLFxuICAgIGZ1YXNMb2FkaW5nLFxuICAgIGZ1YXMubGVuZ3RoLFxuICAgIGZhcXNBcmVMb2FkaW5nLFxuICAgIGZhcXMubGVuZ3RoLFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhcyxcbiAgICBpc01haWFrZXIsXG4gIF0pXG5cbiAgY29uc3QgcmVuZGVySGVhZGVyQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzTUFJQSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgICAgICA8U0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgICAge2FnZW50Py5lbW9qaX0ge2FnZW50Py5uYW1lfVxuICAgICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgIHthZ2VudD8uY3JlYXRlZF9ieSAmJiAhaXNNQUlBICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgYWdlbnQ/LmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWQgPyB0KCdob21lTWVudS5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpIDogdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT57YWdlbnQ/LmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRBbGlnblN0YXJ0ID0gaXNQbGFubmVySG9tZSB8fCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZVxuXG4gICAgY29uc3QgbWFpYUhlYWRlclN0YWNrTmVlZHNHYXAgPVxuICAgICAgKGlzUmVjZW50Q29udGV4dHNTdGVwICYmICFpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiAhaXNQbGFubmVySG9tZSkgfHxcbiAgICAgICghaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiZcbiAgICAgICAgISFncmVldGluZyAmJlxuICAgICAgICAhaXNQbGFubmVySG9tZSAmJlxuICAgICAgICAhaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiZcbiAgICAgICAgIWlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2sgJG5vR2FwPXshbWFpYUhlYWRlclN0YWNrTmVlZHNHYXB9ICRhbGlnbj17Y29udGVudEFsaWduU3RhcnQgPyAnc3RhcnQnIDogJ2NlbnRlcid9PlxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmICFpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICAgICA8U0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgICAgICAgIDxNQUlBSXNvbG9nbyAvPlxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICA8L1NDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1BsYW5uZXJIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRzaXplPVwibWRcIiAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUucGxhbm5lckhvbWUudGl0bGUnKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPVwic3RhcnRcIj57dCgnaG9tZU1lbnUucGxhbm5lckhvbWUuc3VidGl0bGUnKX08L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGVCbG9jaz5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmIGlzUmVjZW50Q29udGV4dHNTdGVwICYmIGlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiICRmdWxsV2lkdGg+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJHNpemU9XCJjb250ZXh0XCIgJGFsaWduPVwic3RhcnRcIiAkZnVsbFdpZHRoPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUuZ3JlZXRpbmcnLCB7IG5hbWU6IHVzZXIuZmlyc3ROYW1lIH0pfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249XCJzdGFydFwiICRjb2xsYWJvcmF0b3JIb21lPlxuICAgICAgICAgICAgICB7dChoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZUJsb2NrPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRhbGlnbj17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnc3RhcnQnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNvbnRleHRIb21lLmdyZWV0aW5nJywgeyBuYW1lOiB1c2VyLmZpcnN0TmFtZSB9KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAgICB7dChcbiAgICAgICAgICAgICAgICBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVDb2xsYWJvcmF0b3InXG4gICAgICAgICAgICAgICAgICA6ICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgZ3JlZXRpbmcgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVHcmVldGluZ1xuICAgICAgICAgICAgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAkc2l6ZT17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnbWQnIDogJ2xnJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Z3JlZXRpbmd9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVHcmVldGluZz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lTWFpYUhlYWRlclN0YWNrPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGZpeGVkSG9tZUNvbnRlbnRXaWR0aCA9XG4gICAgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgfHwgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWVcbiAgICAgID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWFxuICAgICAgOiB1bmRlZmluZWRcbiAgY29uc3QgY29udGVudEFsaWduU3RhcnQgPSBpc1BsYW5uZXJIb21lIHx8IGlzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lXG4gIGNvbnN0IHNob3dBZ2VudEludHJvZHVjdGlvbiA9IHNlY3Rpb24gIT09ICdwcm9qZWN0JyAmJiAhaXNNQUlBICYmICEhYWdlbnQ/LmludHJvZHVjdGlvblxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJSG9tZUNvbnRhaW5lciBzaG93RkFRcz17c2hvd0ZBUXN9ICRhbGlnblN0YXJ0PXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX0+XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50VG9wICRzaG93PXtzaG93VG9wR3JhZGllbnR9IC8+fVxuICAgICAgPFNDQ0FJSG9tZUNvbnRlbnRcbiAgICAgICAgcmVmPXtjb250ZW50Q29udGFpbmVyUmVmfVxuICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgJGZsb2F0aW5nQ3VzdG9tQ2VudGVyPXtmbG9hdGluZ0N1c3RvbUNlbnRlcn1cbiAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICRhbGlnblN0YXJ0PXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX1cbiAgICAgICAgJGZpeGVkQ29udGVudFdpZHRoPXtmaXhlZEhvbWVDb250ZW50V2lkdGh9XG4gICAgICA+XG4gICAgICAgIDxTQ0NBSUhvbWVDb250ZW50SW5uZXJcbiAgICAgICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAgICRmbG9hdGluZ0N1c3RvbUNlbnRlcj17ZmxvYXRpbmdDdXN0b21DZW50ZXJ9XG4gICAgICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAgICAgJGFsaWduU3RhcnQ9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAgICRoZWFkZXJDb2xsYWJvcmF0b3JIb21lPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX1cbiAgICAgICAgICAkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWU9e2lzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICA+XG4gICAgICAgICAgPFNDQ0FJSG9tZUhlYWRlclxuICAgICAgICAgICAgJGdhcD17c2hvd0FnZW50SW50cm9kdWN0aW9uID8gJzIwcHgnIDogJzAnfVxuICAgICAgICAgICAgJG1heFdpZHRoPXtpc01BSUEgPyAnMTAwJScgOiAnMzgwcHgnfVxuICAgICAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAgICAgJGFsaWduPXtjb250ZW50QWxpZ25TdGFydCA/ICdzdGFydCcgOiAnY2VudGVyJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmVuZGVySGVhZGVyQ29udGVudCgpfVxuXG4gICAgICAgICAgICB7c2hvd0FnZW50SW50cm9kdWN0aW9uID8gKFxuICAgICAgICAgICAgICA8U0NDQUlIb21lSW50cm9kdWN0aW9uIGV4cGFuZGVkPXtleHBhbmRlZH0+e2FnZW50LmludHJvZHVjdGlvbn08L1NDQ0FJSG9tZUludHJvZHVjdGlvbj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NDQUlIb21lSGVhZGVyPlxuICAgICAgICAgIHtzaG93UHJvamVjdFN1bW1hcnlDYXJkICYmIChcbiAgICAgICAgICAgIDxTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCBvbkNsaWNrPXtoYW5kbGVycy5wcm9qZWN0U3VtbWFyeX0+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeT5cbiAgICAgICAgICAgICAgICA8VGVtcGxhdGVHcmFkaWVudEljb24gaGVpZ2h0PXsyNH0gd2lkdGg9ezI0fSAvPlxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZVByb2plY3RTdW1tYXJ5PlxuICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlPnt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS50aXRsZScpfTwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgIHt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS5kZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQ+XG4gICAgICAgICAgICA8L1NDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3Nob3dEeW5hbWljU2VjdGlvbiAmJiAoXG4gICAgICAgICAgICA8U0NDQUlIb21lRHluYW1pY1NlY3Rpb25cbiAgICAgICAgICAgICAgJGdyb3c9e2lzTWFpYWtlcn1cbiAgICAgICAgICAgICAgJGFsaWduU3RhcnQ9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7c2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzID8gKFxuICAgICAgICAgICAgICAgIDxGcmVxdWVudGx5VXNlZEFjdGlvbnNcbiAgICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0PXtoYW5kbGVIb21lU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgICAgaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfVxuICAgICAgICAgICAgICAgICAgYWN0aW9ucz17Y29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXN9XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nPXtjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93UGxhbm5lckZ1YXMgPyAoXG4gICAgICAgICAgICAgICAgPEZyZXF1ZW50bHlVc2VkQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInBsYW5uZXJcIlxuICAgICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e2hhbmRsZUhvbWVTdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25zPXtoZWFkZXJIb3Vyc0Z1YXN9XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nPXtoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7cmVuZGVyUmVjZW50Q29udGV4dHMoKX1cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dGYXFzICYmIChcbiAgICAgICAgICAgICAgICA8RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXG4gICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBzaG93RkFRcz17c2hvd0ZBUXN9XG4gICAgICAgICAgICAgICAgICBzaG93UHJvamVjdFN1bW1hcnk9e3Nob3dQcm9qZWN0U3VtbWFyeX1cbiAgICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICAgIGxhbmc9e2xhbmd9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBmYXFzPXtmYXFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17ZmFxc0FyZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3Nob3VsZFNob3dGdWFzICYmIChcbiAgICAgICAgICAgICAgICA8RnJlcXVlbnRseVVzZWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9XG4gICAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25zPXtmdWFzfVxuICAgICAgICAgICAgICAgICAgbG9hZGluZz17ZnVhc0FyZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzTWFpYWtlciA/IDxDaGF0QUlIb21lTWFpYWtlciBvblN0YXJ0Q2hhdD17b25TdGFydENoYXR9IC8+IDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lRHluYW1pY1NlY3Rpb24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0NBSUhvbWVDb250ZW50SW5uZXI+XG4gICAgICA8L1NDQ0FJSG9tZUNvbnRlbnQ+XG4gICAgICB7aG9tZVNjcm9sbGFibGVMYXlvdXQgJiYgPFNDQ0FJSG9tZUdyYWRpZW50Qm90dG9tICRzaG93PXtzaG93Qm90dG9tR3JhZGllbnR9IC8+fVxuICAgIDwvU0NDQUlIb21lQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxRQUFRLE9BQU87QUFDMUYs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
687
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsImZsdXNoU3luYyIsIlRvb2x0aXAiLCJMaXN0Q2hlY2tsaXN0IiwidXNlVCIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NDQUlIb21lQ29udGFpbmVyIiwiU0NDQUlIb21lU2Nyb2xsIiwiU0NDQUlIb21lQ29udGVudCIsIlNDQ0FJSG9tZUNvbnRlbnRJbm5lciIsIlNDQ0FJSG9tZUdyYWRpZW50VG9wIiwiU0NDQUlIb21lR3JhZGllbnRCb3R0b20iLCJTQ0NBSUhvbWVIZWFkZXIiLCJTQ0NBSUhvbWVHcmVldGluZyIsIlNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lciIsIlNDQ0FJSG9tZUFnZW50SW5mbyIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50IiwiU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZSIsIlNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24iLCJTQ0NBSFdyYXBwZXJTdW1tYXJ5UHJvamVjdCIsIlNDQ0FJSG9tZUludHJvZHVjdGlvbiIsIlNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lciIsIlNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQiLCJTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQ0FJSG9tZUljb25Db250YWluZXIiLCJTQ0NBSUhvbWVMb2dvV3JhcHBlciIsIlNDQ0FJSG9tZU1haWFIZWFkZXJTdGFjayIsIlNDQ0FJSG9tZVRpdGxlIiwiU0NDQUlIb21lVGl0bGVCbG9jayIsIlNDQ0FJSG9tZVN1YnRpdGxlIiwiU0NDQUlIb21lRHluYW1pY1NlY3Rpb24iLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0cyIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlciIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblRpdGxlIiwiU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uU3VidGl0bGUiLCJTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsSWNvbiIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsVGV4dCIsIlNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24iLCJNQUlBX0hFQURFUl9DT0xMQUJPUkFUT1JfSE9NRV9DT05URU5UX1dJRFRIX1BYIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJDT1JVc2VyUm9sZSIsImlzQ29sbGFib3JhdG9yUm9sZSIsImlzTWFuYWdlclJvbGUiLCJ1c2VSZXNpemVMaXN0ZW5lciIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFpYWtlckFnZW50IiwiRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwidXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwic29ydE1hbmFnZXJIb3Vyc0hvbWVGdWFzIiwicmVzb2x2ZVJlY2VudENvbnRleHRzSG9tZUxpbWl0IiwidXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwidXNlUmVjZW50Q29udGV4dHMiLCJNQUlBSXNvbG9nbyIsIlRlbXBsYXRlR3JhZGllbnRJY29uIiwiQ2hhdEFJSG9tZU1haWFrZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJGcmVxdWVudFF1ZXN0aW9ucyIsIlJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IiLCJSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFgiLCJSZWNlbnRDb250ZXh0UGlsbCIsIl9yZWYiLCJjb250ZXh0IiwibGFiZWwiLCJvbkNsaWNrIiwiX3JlZiRmdWxsV2lkdGgiLCJmdWxsV2lkdGgiLCJ0ZXh0UmVmIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwic2hvd1Rvb2x0aXAiLCJ0eXBlIiwiJGZ1bGxXaWR0aCIsImNoaWxkcmVuIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsInVuZGVmaW5lZCIsInJlZiIsInRpdGxlIiwicGFyc2VOdW1lcmljSWQiLCJ2YWx1ZSIsInBhcnNlZCIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyIsInJvbGVJZCIsIm5vcm1hbGl6ZWRSb2xlSWQiLCJDTEVWRUwiLCJESVJFQ1RPUiIsIlBST0pFQ1RfTUFOQUdFUiIsIlNldCIsIkNoYXRBSUhvbWUiLCJfcmVmMiIsImhhbmRsZXJzIiwib25TdGFydENoYXQiLCJleHBhbmRlZCIsImZsb2F0aW5nIiwiX3VzZVQiLCJ0IiwiaTE4biIsImV2ZW50IiwidXNlciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJzZWN0aW9uIiwiY2xpZW50IiwicHJvamVjdCIsInRhc2siLCJjaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0Iiwic2V0VGFzayIsInNldENoaXBzUHJvamVjdCIsImlzTUFJQSIsImZsb2F0aW5nQ3VzdG9tQ2VudGVyIiwibGFuZyIsImxhbmd1YWdlIiwic3VtbWFyeVByb2plY3RBY2Nlc3MiLCJ3aW5kb3ciLCJTdHJpbmciLCJNQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUyIsInRvTG93ZXJDYXNlIiwibWFpYVByb2plY3RTdW1tYXJ5QWNjZXNzIiwiZmFxc0FjY2VzcyIsInNob3dQcm9qZWN0U3VtbWFyeSIsImlzTWFpYWtlciIsImlzSGVhZGVySG9tZSIsImlzT3JjaGVzdHJhdG9yIiwiaXNQbGFubmVySG9tZSIsImlzU2VjdGlvbk9yY2hlc3RyYXRvckhvbWUiLCJoYXNIb3Vyc1N1YmFnZW50IiwiaGFzUGlubmVkQ29udGV4dCIsImlkIiwicHJvamVjdElkIiwiaXNSZWNlbnRDb250ZXh0c1N0ZXAiLCJpc0hlYWRlclRhc2tDb250ZXh0SG9tZSIsInJvbGVfaWQiLCJpc0hlYWRlckhvdXJzQWdlbnRIb21lIiwiaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lIiwiaGVhZGVyVGFza0NvbnRleHRTdWJ0aXRsZUtleSIsImlzQ29udGV4dEhvbWVTdGVwIiwiaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUiLCJhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRDb250ZXh0Iiwic2V0U2VsZWN0ZWRDb250ZXh0IiwiYWN0aXZlQ29udGV4dCIsIm5hbWUiLCJwcm9qZWN0TmFtZSIsInBpbm5lZEVudGl0eVR5cGUiLCJmYXFzQ29udGV4dEVudGl0eVR5cGUiLCJfYWN0aXZlQ29udGV4dCR0eXBlIiwiaXNDbGllbnRDb250ZXh0Rm9yRmFxcyIsImZ1YXNTZWN0aW9uIiwicmVhbExpc3RzQWdlbnRJZCIsInJlYWxMaXN0c0VudGl0eVR5cGUiLCJfYWN0aXZlQ29udGV4dCR0eXBlMiIsIl91c2VGcmVxdWVudGx5VXNlZEFjdCIsImFnZW50RnVhcyIsImFjdGlvbnMiLCJmdWFzTG9hZGluZyIsImxvYWRpbmciLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QyIiwiY29sbGFib3JhdG9yUGxhbm5lckZ1YXMiLCJjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmciLCJfdXNlRnJlcXVlbnRseVVzZWRBY3QzIiwibWFuYWdlckhvbWVGdWFzIiwibWFuYWdlckhvbWVGdWFzTG9hZGluZyIsInNob3VsZEZldGNoQ29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMiLCJCb29sZWFuIiwiX3VzZUZyZXF1ZW50bHlVc2VkQWN0NCIsImNvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzIiwiY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNMb2FkaW5nIiwiaGVhZGVySG91cnNGdWFzIiwiaGVhZGVySG91cnNGdWFzTG9hZGluZyIsInJlY2VudENvbnRleHRzTGltaXQiLCJmdWFzQ291bnQiLCJsZW5ndGgiLCJfdXNlUmVjZW50Q29udGV4dHMiLCJlbmFibGVkIiwibGltaXQiLCJmZXRjaGVkUmVjZW50Q29udGV4dHMiLCJjb250ZXh0cyIsInJlY2VudENvbnRleHRzTG9hZGluZyIsInJlY2VudENvbnRleHRzIiwiZmlsdGVyIiwiaGFzIiwicmVjZW50Q29udGV4dFNrZWxldG9uS2V5cyIsIkFycmF5IiwiZnJvbSIsIl8iLCJpbmRleCIsImNvbmNhdCIsImZhcXNMaXN0QWdlbnRJZCIsImZhcXNMaXN0RW50aXR5VHlwZSIsIl91c2VGcmVxdWVudGx5QXNrZWRRdSIsImFnZW50RmFxcyIsImZhcXMiLCJmYXFzTG9hZGluZyIsImhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsImZhcXNGZXRjaFJlZiIsIl9mYXFzRmV0Y2hSZWYkY3VycmVudCIsImN1cnJlbnRLZXkiLCJsYXN0S2V5IiwiY3VycmVudCIsImFnZW50SWQiLCJlbnRpdHlUeXBlIiwiZnVhcyIsImZhcXNBcmVMb2FkaW5nIiwiZnVhc0FyZUxvYWRpbmciLCJzaG93UmVjZW50Q29udGV4dHNCbG9jayIsInNob3VsZFNob3dGYXFzIiwic2hvdWxkU2hvd0Z1YXMiLCJzaG91bGRTaG93UGxhbm5lckZ1YXNMb2FkaW5nIiwic2hvdWxkU2hvd1BsYW5uZXJGdWFzQ29udGVudCIsInNob3VsZFNob3dQbGFubmVyRnVhcyIsInNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmciLCJzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNDb250ZW50Iiwic2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzIiwic2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCIsImVudGl0eSIsInNob3dGQVFzIiwiaG9tZVNjcm9sbGFibGVMYXlvdXQiLCJzaG93RHluYW1pY1NlY3Rpb24iLCJjb250ZW50Q29udGFpbmVyUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzaG93VG9wR3JhZGllbnQiLCJzZXRTaG93VG9wR3JhZGllbnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dCb3R0b21HcmFkaWVudCIsInNldFNob3dCb3R0b21HcmFkaWVudCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNTY3JvbGxpbmciLCJzZXRJc1Njcm9sbGluZyIsInNjcm9sbFRpbWVvdXRSZWYiLCJncmVldGluZyIsImludHJvIiwiaW50cm9kdWN0aW9uIiwiaXNBcnJheSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQiLCJvcmRlciIsIl9jb250ZXh0JHBhcmVudHMiLCJfY29udGV4dCRwYXJlbnRzMiIsIl9jb250ZXh0JHBhcmVudHMzIiwiX2NvbnRleHQkcGFyZW50czQiLCJhaUNoYXRDb250ZXh0U2VsZWN0ZWQiLCJjb250ZXh0SWQiLCJjbGllbnRJZCIsInBhcmVudHMiLCJjbGllbnRfaWQiLCJwcm9qZWN0X2lkIiwiY2xpZW50TmFtZSIsImNsaWVudF9uYW1lIiwicHJvamVjdF9uYW1lIiwiX29iamVjdFNwcmVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlSG9tZVN0YXJ0Q2hhdCIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwicmVuZGVyUmVjZW50Q29udGV4dHMiLCIkZml4ZWRDb250ZW50V2lkdGgiLCIkZmx1c2hQaWxscyIsIm1hcCIsImtleSIsInRyaW0iLCJjaGVja1Njcm9sbCIsImNvbnRhaW5lciIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzU2Nyb2xsYWJsZSIsImlzQXRUb3AiLCJpc0F0Qm90dG9tIiwiaGFuZGxlU2Nyb2xsIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInNjaGVkdWxlQ2hlY2tTY3JvbGwiLCJhZGRFdmVudExpc3RlbmVyIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJzY3JvbGxDb250ZW50IiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJFbGVtZW50IiwidGltZW91dElkIiwibGF0ZVRpbWVvdXRJZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkaXNjb25uZWN0IiwicmVuZGVySGVhZGVyQ29udGVudCIsIl9hZ2VudCRjcmVhdGVkX2J5IiwiX2FnZW50JGNyZWF0ZWRfYnkyIiwiZW1vamkiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbnRlbnRBbGlnblN0YXJ0IiwibWFpYUhlYWRlclN0YWNrTmVlZHNHYXAiLCIkbm9HYXAiLCIkYWxpZ24iLCIkc2l6ZSIsImZpcnN0TmFtZSIsIiRjb2xsYWJvcmF0b3JIb21lIiwiZml4ZWRIb21lQ29udGVudFdpZHRoIiwic2hvd0FnZW50SW50cm9kdWN0aW9uIiwiaG9tZU1haW4iLCIkaXNBZ2VudFZpZXciLCIkZmxvYXRpbmdDdXN0b21DZW50ZXIiLCIkY2VudGVyVmVydGljYWxseSIsIiRhbGlnblN0YXJ0IiwiJGhlYWRlckNvbGxhYm9yYXRvckhvbWUiLCIkc2VjdGlvbk9yY2hlc3RyYXRvckhvbWUiLCIkZ2FwIiwiJG1heFdpZHRoIiwicHJvamVjdFN1bW1hcnkiLCIkZ3JvdyIsInZhcmlhbnQiLCIkc2hvdyIsIiRzY3JvbGxhYmxlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSUhvbWUvQ2hhdEFJSG9tZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBmbHVzaFN5bmMgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IExpc3RDaGVja2xpc3QgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9MaXN0Q2hlY2tsaXN0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5cbmltcG9ydCB7IG9wdGlvbnMgfSBmcm9tICcuLi9DaGF0QUlNb2RhbC9jb25zdGFudHMnXG5cbmltcG9ydCB7XG4gIFNDQ0FJSG9tZUNvbnRhaW5lcixcbiAgU0NDQUlIb21lU2Nyb2xsLFxuICBTQ0NBSUhvbWVDb250ZW50LFxuICBTQ0NBSUhvbWVDb250ZW50SW5uZXIsXG4gIFNDQ0FJSG9tZUdyYWRpZW50VG9wLFxuICBTQ0NBSUhvbWVHcmFkaWVudEJvdHRvbSxcbiAgU0NDQUlIb21lSGVhZGVyLFxuICBTQ0NBSUhvbWVHcmVldGluZyxcbiAgU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyLFxuICBTQ0NBSUhvbWVBZ2VudEluZm8sXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5LFxuICBTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5VGl0bGUsXG4gIFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24sXG4gIFNDQ0FIV3JhcHBlclN1bW1hcnlQcm9qZWN0LFxuICBTQ0NBSUhvbWVJbnRyb2R1Y3Rpb24sXG4gIFNDQ0FJSG9tZUNyZWF0ZWRCeUNvbnRhaW5lcixcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dCxcbiAgU0NDQUlIb21lQ3JlYXRlZEJ5VGV4dE5hbWUsXG4gIFNDQ0FJSG9tZUljb25Db250YWluZXIsXG4gIFNDQ0FJSG9tZUxvZ29XcmFwcGVyLFxuICBTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2ssXG4gIFNDQ0FJSG9tZVRpdGxlLFxuICBTQ0NBSUhvbWVUaXRsZUJsb2NrLFxuICBTQ0NBSUhvbWVTdWJ0aXRsZSxcbiAgU0NDQUlIb21lRHluYW1pY1NlY3Rpb24sXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcixcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dHNTZWN0aW9uVGl0bGUsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvblN1YnRpdGxlLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbCxcbiAgU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uLFxuICBTQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbFRleHQsXG4gIFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24sXG4gIE1BSUFfSEVBREVSX0NPTExBQk9SQVRPUl9IT01FX0NPTlRFTlRfV0lEVEhfUFgsXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXJSb2xlLCBpc0NvbGxhYm9yYXRvclJvbGUsIGlzTWFuYWdlclJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkljb25zJ1xuaW1wb3J0IHsgb3JjaGVzdHJhdG9ySGFzSG91cnNTdWJhZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29yY2hlc3RyYXRvclN1YmFnZW50cydcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01haWFrZXJBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMnXG5pbXBvcnQgeyBGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9hdG9tcy9GcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgeyBzb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMnXG5pbXBvcnQgeyByZXNvbHZlUmVjZW50Q29udGV4dHNIb21lTGltaXQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWNlbnRDb250ZXh0c0hvbWVMaW1pdCdcbmltcG9ydCB7IHVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucydcbmltcG9ydCB7IHVzZVJlY2VudENvbnRleHRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgdHlwZSB7IFJlY2VudENvbnRleHRJdGVtLCBSZWNlbnRDb250ZXh0VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvUmVjZW50Q29udGV4dHMnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL01BSUFJc29sb2dvJ1xuaW1wb3J0IHsgVGVtcGxhdGVHcmFkaWVudEljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9UZW1wbGF0ZUdyYWRpZW50SWNvbidcbmltcG9ydCB7IENoYXRBSUhvbWVNYWlha2VyIH0gZnJvbSAnLi9DaGF0QUlIb21lTWFpYWtlcidcblxudHlwZSBDaGF0QUlIb21lUHJvcHMgPSB7XG4gIG9uU3RhcnRDaGF0OiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgbWVudGlvbnM/OiBudWxsLFxuICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgIHNjSWQ/OiBzdHJpbmcsXG4gICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApID0+IHZvaWRcbiAgaGFuZGxlcnM6IFJlY29yZDxvcHRpb25zLCAoKSA9PiB2b2lkPlxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgZmxvYXRpbmc/OiBib29sZWFuXG59XG5cbmV4cG9ydCBlbnVtIEZyZXF1ZW50UXVlc3Rpb25zIHtcbiAgcmVudGFiaWxpZGFkX3Byb3llY3RvID0gJ3JlbnRhYmlsaWRhZF9wcm95ZWN0bycsXG4gIGF2YW5jZV9wcm95ZWN0byA9ICdhdmFuY2VfcHJveWVjdG8nLFxufVxuXG5jb25zdCBSRUNFTlRfQ09OVEVYVF9JQ09OX0NPTE9SID0gJyM0RDRENEQnXG5jb25zdCBSRUNFTlRfQ09OVEVYVF9JQ09OX1NJWkVfUFggPSAxNVxuXG5jb25zdCBSZWNlbnRDb250ZXh0UGlsbCA9ICh7XG4gIGNvbnRleHQsXG4gIGxhYmVsLFxuICBvbkNsaWNrLFxuICBmdWxsV2lkdGggPSBmYWxzZSxcbn06IHtcbiAgY29udGV4dDogUmVjZW50Q29udGV4dEl0ZW1cbiAgbGFiZWw6IHN0cmluZ1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkXG4gIGZ1bGxXaWR0aD86IGJvb2xlYW5cbn0pID0+IHtcbiAgY29uc3QgdGV4dFJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtsYWJlbF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGwgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29uQ2xpY2t9ICRmdWxsV2lkdGg9e2Z1bGxXaWR0aH0+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxJY29uPlxuICAgICAgICB7Y29udGV4dC50eXBlID09PSAndGFzaycgPyAoXG4gICAgICAgICAgPExpc3RDaGVja2xpc3QgY29sb3I9e1JFQ0VOVF9DT05URVhUX0lDT05fQ09MT1J9IHdpZHRoPVwiMTVweFwiIGhlaWdodD1cIjE1cHhcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGdldENvbnRleHRNZW50aW9uSWNvbihjb250ZXh0LnR5cGUsIFJFQ0VOVF9DT05URVhUX0lDT05fQ09MT1IsIHVuZGVmaW5lZCwgUkVDRU5UX0NPTlRFWFRfSUNPTl9TSVpFX1BYKVxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0UGlsbEljb24+XG4gICAgICA8U0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0IHJlZj17dGV4dFJlZn0+XG4gICAgICAgIHtzaG93VG9vbHRpcCA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17bGFiZWx9PlxuICAgICAgICAgICAgPHNwYW4+e2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGxUZXh0PlxuICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dFBpbGw+XG4gIClcbn1cblxuY29uc3QgcGFyc2VOdW1lcmljSWQgPSAodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKVxuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG59XG5cbmNvbnN0IGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMgPSAocm9sZUlkPzogQ09SVXNlclJvbGUgfCBudW1iZXIgfCBzdHJpbmcpOiBTZXQ8UmVjZW50Q29udGV4dFR5cGU+ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFJvbGVJZCA9IE51bWJlcihyb2xlSWQpXG4gIGlmIChcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5DTEVWRUwgfHxcbiAgICBub3JtYWxpemVkUm9sZUlkID09PSBDT1JVc2VyUm9sZS5ESVJFQ1RPUiB8fFxuICAgIG5vcm1hbGl6ZWRSb2xlSWQgPT09IENPUlVzZXJSb2xlLlBST0pFQ1RfTUFOQUdFUlxuICApIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snXSlcbiAgfVxuICBpZiAoaXNDb2xsYWJvcmF0b3JSb2xlKHJvbGVJZCkpIHtcbiAgICByZXR1cm4gbmV3IFNldChbJ3Rhc2snXSlcbiAgfVxuICByZXR1cm4gbmV3IFNldCgpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlIb21lID0gKHsgaGFuZGxlcnMsIG9uU3RhcnRDaGF0LCBleHBhbmRlZCwgZmxvYXRpbmcgfTogQ2hhdEFJSG9tZVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQsIHNlY3Rpb24sIGNsaWVudCwgcHJvamVjdCwgdGFzaywgY2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCB9ID1cbiAgICB1c2VHbG9iYWxDb250ZXh0KClcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcbiAgY29uc3QgZmxvYXRpbmdDdXN0b21DZW50ZXIgPSAhIShmbG9hdGluZyAmJiBhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbScpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0JyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBjb25zdCBzdW1tYXJ5UHJvamVjdEFjY2VzcyA9XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAoU3RyaW5nKHdpbmRvdy5NQUlBX1BST0pFQ1RfU1VNTUFSWV9GRUFUVVJFX0FDQ0VTUykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnIHx8XG4gICAgICBTdHJpbmcod2luZG93Lm1haWFQcm9qZWN0U3VtbWFyeUFjY2VzcykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKVxuICBjb25zdCBmYXFzQWNjZXNzID0gdHJ1ZVxuICBjb25zdCBzaG93UHJvamVjdFN1bW1hcnkgPSAhIShpc01BSUEgJiYgc3VtbWFyeVByb2plY3RBY2Nlc3MpXG4gIC8vIEVsIG9yY2hlc3RyYXRvciAodHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIG11ZXN0cmEgRkFRcy9GVUFzIGFncmVnYWRhcyBkZSBzdXMgc3ViYWdlbnRlcyxcbiAgLy8gYXPDrSBxdWUgTk8gc2UgdHJhdGEgY29tbyBtYWlha2VyIGFjw6EuXG4gIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICBjb25zdCBpc0hlYWRlckhvbWUgPSBpc01BSUEgJiYgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG4gIC8vIEVsIG9yY2hlc3RyYXRvciB1c2EgZWwgaG9tZSBlbiAyIHBhc29zIChjb250ZXh0b3MgcmVjaWVudGVzIOKGlCBGQVFzL0ZVQXMpIGVuIGhlYWRlci9wcm9qZWN0L2NsaWVudC90YXNrLlxuICAvLyBFbiBwcm9qZWN0L2NsaWVudC90YXNrLCBhbCBsaW1waWFyIGVsIGNvbnRleHRvIChwLiBlai4gYWwgcmVzZWxlY2Npb25hciBNQUlBXG4gIC8vIGRlc2RlIGVsIGxpc3RhZG8gZGUgYWdlbnRlcykgc2UgbXVlc3RyYSBlbCBzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzIGVuIGx1Z2FyIGRlIHVuIGhvbWUgdmFjw61vLlxuICBjb25zdCBpc09yY2hlc3RyYXRvciA9IGlzTUFJQSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgLy8gUGxhbm5lcjogaG9tZSBkZSBGVUFzIGRlbCBvcmNoZXN0cmF0b3IgKHNpbiBzZWxlY3RvciBkZSBjb250ZXh0b3MpLlxuICAvLyBTaSBlbCB1c3VhcmlvIG5hdmVnYSBhIE1haWFrZXIgdSBvdHJvIGFnZW50ZSwgc2VjdGlvbiBzaWd1ZSBzaWVuZG8gYHBsYW5uZXJgIHBlcm8geWEgbm8gZXMgZXN0ZSBob21lLlxuICBjb25zdCBpc1BsYW5uZXJIb21lID0gc2VjdGlvbiA9PT0gJ3BsYW5uZXInICYmIGlzT3JjaGVzdHJhdG9yXG4gIC8vIEhvbWVzIGRlIHNlY2Npw7NuIChwcm9qZWN0L2NsaWVudC90YXNrKTogc2luIGlzb2xvZ28sIGNvbnRlbmlkbyB0b3AtbGVmdCwgY29sdW1uYSA0NDhweCBjZW50cmFkYS5cbiAgY29uc3QgaXNTZWN0aW9uT3JjaGVzdHJhdG9ySG9tZSA9IGlzT3JjaGVzdHJhdG9yICYmICFpc0hlYWRlckhvbWUgJiYgIWlzUGxhbm5lckhvbWVcbiAgY29uc3QgaGFzSG91cnNTdWJhZ2VudCA9IG9yY2hlc3RyYXRvckhhc0hvdXJzU3ViYWdlbnQoYWdlbnQpXG5cbiAgLy8gSG9tZSBkZWwgb3JjaGVzdHJhdG9yIGVuIDIgcGFzb3M6XG4gIC8vICAtIFBhc28gMSAoc2luIGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBzb2xvIGxvcyBjb250ZXh0b3MgcmVjaWVudGVzLlxuICAvLyAgLSBQYXNvIDIgKGNvbnRleHRvIHBpbmVhZG8pOiBzZSBtdWVzdHJhbiBsYXMgRkFRcy9hY2Npb25lcyBxdWUgcmVmZXJlbmNpYW4gZXNlIGNvbnRleHRvLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNSZWNlbnRDb250ZXh0c1N0ZXAgPSBpc09yY2hlc3RyYXRvciAmJiAhaGFzUGlubmVkQ29udGV4dCAmJiAhaXNQbGFubmVySG9tZVxuICAvLyBIZWFkZXIgcGFzbyAxIGNvbXBhY3RvIChzaW4gaXNvbG9nbywgcGlsbHMgZnVsbC13aWR0aCk6IGNvbGFib3JhZG9yIHkgbWFuYWdlcnMgKEMtTGV2ZWwvRGlyZWN0b3IvUE0pLlxuICBjb25zdCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSA9XG4gICAgc2VjdGlvbiA9PT0gJ2hlYWRlcicgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgKGlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpIHx8IGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSlcbiAgLy8gQmxvcXVlIEZVQXMgcGxhbm5lciArIHNlY2Npw7NuIGRlIGNvbnRleHRvcyByZWNpZW50ZXMgY29uIHTDrXR1bG9zIChjb2xhYm9yYWRvciBvIG1hbmFnZXIgY29uIGhvdXIpLlxuICBjb25zdCBpc0hlYWRlckhvdXJzQWdlbnRIb21lID0gaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiYgaGFzSG91cnNTdWJhZ2VudFxuICBjb25zdCBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPSBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmIGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKVxuICBjb25zdCBoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzSGVhZGVySG91cnNBZ2VudEhvbWUpIHtcbiAgICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUpIHJldHVybiAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVNYW5hZ2VyV2l0aEhvdXJzJ1xuICAgICAgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZUNvbGxhYm9yYXRvcldpdGhIb3VycydcbiAgICB9XG4gICAgaWYgKGlzTWFuYWdlclJvbGUodXNlci5yb2xlX2lkKSkgcmV0dXJuICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICByZXR1cm4gJ2hvbWVNZW51LmNvbnRleHRIb21lLnN1YnRpdGxlQ29sbGFib3JhdG9yJ1xuICB9LCBbaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSwgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCB1c2VyLnJvbGVfaWRdKVxuICBjb25zdCBpc0NvbnRleHRIb21lU3RlcCA9IGlzSGVhZGVySG9tZSAmJiBoYXNQaW5uZWRDb250ZXh0XG4gIC8vIEhlYWRlciBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8pIHkgaG9tZXMgZGUgc2VjY2nDs24gY29tcGFydGVuIGxheW91dDogc2luIGlzb2xvZ28sIHRleHRvIGEgbGEgaXpxdWllcmRhLlxuICBjb25zdCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA9IGlzU2VjdGlvbk9yY2hlc3RyYXRvckhvbWUgfHwgaXNDb250ZXh0SG9tZVN0ZXBcblxuICBjb25zdCBhbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSkgcmV0dXJuIGdldEFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXModXNlci5yb2xlX2lkKVxuICAgIGlmIChpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiBpc01hbmFnZXJSb2xlKHVzZXIucm9sZV9pZCkpIHJldHVybiBnZXRBbGxvd2VkUmVjZW50Q29udGV4dFR5cGVzKHVzZXIucm9sZV9pZClcbiAgICBpZiAoaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUpIHJldHVybiBuZXcgU2V0PFJlY2VudENvbnRleHRUeXBlPihbJ3Rhc2snXSlcbiAgICByZXR1cm4gZ2V0QWxsb3dlZFJlY2VudENvbnRleHRUeXBlcyh1c2VyLnJvbGVfaWQpXG4gIH0sIFt1c2VyLnJvbGVfaWQsIGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSwgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWVdKVxuXG4gIC8vIENvbnRleHRvIGFjdGl2byBwYXJhIGRlcml2YXIgRkFRcy9hY2Npb25lcyAocGFzbyAyKS4gUHJlZmVyaW1vcyBlbCBwaWxsIGNsaWNrZWFkbztcbiAgLy8gc2kgbm8sIGxvIHJlY29uc3RydWltb3MgZGVzZGUgZWwgY29udGV4dG8gZ2xvYmFsLlxuICBjb25zdCBbc2VsZWN0ZWRDb250ZXh0LCBzZXRTZWxlY3RlZENvbnRleHRdID0gdXNlU3RhdGU8UmVjZW50Q29udGV4dEl0ZW0gfCBudWxsPihudWxsKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaGFzUGlubmVkQ29udGV4dCkgc2V0U2VsZWN0ZWRDb250ZXh0KG51bGwpXG4gIH0sIFtoYXNQaW5uZWRDb250ZXh0XSlcblxuICBjb25zdCBhY3RpdmVDb250ZXh0ID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0SXRlbSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWRDb250ZXh0KSByZXR1cm4gc2VsZWN0ZWRDb250ZXh0XG4gICAgaWYgKCFpc0NvbnRleHRIb21lU3RlcCkgcmV0dXJuIG51bGxcbiAgICBpZiAodGFzaz8uaWQpIHJldHVybiB7IHR5cGU6ICd0YXNrJywgaWQ6IHRhc2suaWQsIG5hbWU6IHRhc2submFtZSB9XG4gICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdElkKSByZXR1cm4geyB0eXBlOiAncHJvamVjdCcsIGlkOiBjaGlwc1Byb2plY3QucHJvamVjdElkLCBuYW1lOiBjaGlwc1Byb2plY3QucHJvamVjdE5hbWUgfVxuICAgIGlmIChjbGllbnQ/LmlkKSByZXR1cm4geyB0eXBlOiAnY2xpZW50JywgaWQ6IGNsaWVudC5pZCwgbmFtZTogY2xpZW50Lm5hbWUgfVxuICAgIHJldHVybiBudWxsXG4gIH0sIFtcbiAgICBzZWxlY3RlZENvbnRleHQsXG4gICAgaXNDb250ZXh0SG9tZVN0ZXAsXG4gICAgdGFzaz8uaWQsXG4gICAgdGFzaz8ubmFtZSxcbiAgICBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCxcbiAgICBjaGlwc1Byb2plY3Q/LnByb2plY3ROYW1lLFxuICAgIGNsaWVudD8uaWQsXG4gICAgY2xpZW50Py5uYW1lLFxuICBdKVxuXG4gIC8vIGVudGl0eV90eXBlIGRlbCBjb250ZXh0byBwaW5lYWRvIChwcm9qZWN0L2NsaWVudC90YXNrKSwgdG9tYWRvIGRlbCBjb250ZXh0byBnbG9iYWwuXG4gIC8vIEFwbGljYSB0YW50byBhbCBhYnJpciBNQUlBIGRlc2RlIHVuYSBzZWNjacOzbiBlc3BlY8OtZmljYSBjb21vIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbi5cbiAgY29uc3QgcGlubmVkRW50aXR5VHlwZSA9IHVzZU1lbW88UmVjZW50Q29udGV4dFR5cGUgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBpZiAodGFzaz8uaWQpIHJldHVybiAndGFzaydcbiAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgcHJvamVjdD8uaWQpIHJldHVybiAncHJvamVjdCdcbiAgICBpZiAoY2xpZW50Py5pZCkgcmV0dXJuICdjbGllbnQnXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBwcm9qZWN0Py5pZCwgY2xpZW50Py5pZF0pXG5cbiAgLy8gRkFRcyBzb2xvIGNvbiBjb250ZXh0byBjbGllbnRlIHBpbmVhZG8gKGhlYWRlciBwYXNvIDIgbyBzZWNjacOzbiBjbGllbnQpLlxuICAvLyBQcm95ZWN0bywgdGFyZWEgeSBwbGFubmVyIG11ZXN0cmFuIHNvbG8gRlVBcy5cbiAgY29uc3QgZmFxc0NvbnRleHRFbnRpdHlUeXBlID0gdXNlTWVtbzxSZWNlbnRDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lIHx8IGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGlzSGVhZGVySG9tZSkge1xuICAgICAgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gKGFjdGl2ZUNvbnRleHQ/LnR5cGUgPz8gcGlubmVkRW50aXR5VHlwZSkgOiB1bmRlZmluZWRcbiAgICB9XG4gICAgcmV0dXJuIHBpbm5lZEVudGl0eVR5cGVcbiAgfSwgW2lzUGxhbm5lckhvbWUsIGlzUmVjZW50Q29udGV4dHNTdGVwLCBpc0hlYWRlckhvbWUsIGlzQ29udGV4dEhvbWVTdGVwLCBhY3RpdmVDb250ZXh0Py50eXBlLCBwaW5uZWRFbnRpdHlUeXBlXSlcbiAgY29uc3QgaXNDbGllbnRDb250ZXh0Rm9yRmFxcyA9IGZhcXNDb250ZXh0RW50aXR5VHlwZSA9PT0gJ2NsaWVudCdcbiAgLy8gYHNlY3Rpb25gIHF1ZSBzZSBjb25zdWx0YSBwYXJhIGxhcyBGVUFzOiBlbiBuby1oZWFkZXIgc2lndWUgZWwgdGlwbyBkZSBjb250ZXh0byBwaW5lYWRvLlxuICAvLyBFbiBwbGFubmVyIHNlIGZ1ZXJ6YSBsYSBzZWN0aW9uIEFQSSBgcGxhbm5lcmAuXG4gIGNvbnN0IGZ1YXNTZWN0aW9uOiBTZWN0aW9uID0gKCgpID0+IHtcbiAgICBpZiAoaXNQbGFubmVySG9tZSkgcmV0dXJuICdwbGFubmVyJ1xuICAgIGlmICghaXNIZWFkZXJIb21lICYmIHBpbm5lZEVudGl0eVR5cGUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIHNlY3Rpb25cbiAgfSkoKVxuXG4gIC8vIEZBUXMvYWNjaW9uZXM6XG4gIC8vICAtIGhlYWRlci1ob21lIChvcmNoZXN0cmF0b3IpLCBwYXNvIDI6IGZpbHRyYWRhcyBwb3IgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2VsZWNjaW9uYWRvLlxuICAvLyAgLSBob21lcyBkZSBwcm95ZWN0by9jbGllbnRlL3RhcmVhIChzZWNjacOzbik6IGZpbHRyYWRhcyBwb3IgZWwgYGVudGl0eV90eXBlYCBkZWwgY29udGV4dG8gc2V0ZWFkby5cbiAgLy8gIC0gcGxhbm5lcjogRlVBcyBjb24gc2VjdGlvbj1wbGFubmVyLCBzaW4gZW50aXR5X3R5cGUgbmkgRkFRcy5cbiAgY29uc3QgcmVhbExpc3RzQWdlbnRJZCA9ICgoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEgfHwgaXNNYWlha2VyKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgLy8gUGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzLCBzaW4gY29udGV4dG8pOiBubyBzZSBwaWRlbiBGQVFzL0ZVQXMuXG4gICAgaWYgKGlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGlzSGVhZGVySG9tZSkgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gYWdlbnQ/LmlkIDogdW5kZWZpbmVkXG4gICAgcmV0dXJuIGFnZW50Py5pZFxuICB9KSgpXG4gIGNvbnN0IHJlYWxMaXN0c0VudGl0eVR5cGUgPSAoKCkgPT4ge1xuICAgIGlmIChpc1BsYW5uZXJIb21lKSByZXR1cm4gJ3BsYW5uZXInXG4gICAgaWYgKCFpc0hlYWRlckhvbWUpIHJldHVybiBwaW5uZWRFbnRpdHlUeXBlXG4gICAgcmV0dXJuIGlzQ29udGV4dEhvbWVTdGVwID8gKGFjdGl2ZUNvbnRleHQ/LnR5cGUgPz8gcGlubmVkRW50aXR5VHlwZSkgOiB1bmRlZmluZWRcbiAgfSkoKVxuICBjb25zdCB7IGFjdGlvbnM6IGFnZW50RnVhcywgbG9hZGluZzogZnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICByZWFsTGlzdHNBZ2VudElkLFxuICAgIGZ1YXNTZWN0aW9uLFxuICAgIHJlYWxMaXN0c0VudGl0eVR5cGVcbiAgKVxuICBjb25zdCB7IGFjdGlvbnM6IGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzLCBsb2FkaW5nOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlckhvdXJzQWdlbnRIb21lICYmICFpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ3BsYW5uZXInXG4gIClcbiAgY29uc3QgeyBhY3Rpb25zOiBtYW5hZ2VySG9tZUZ1YXMsIGxvYWRpbmc6IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgfSA9IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyhcbiAgICBpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ2hvbWVfd2l0aF9ob3VycydcbiAgKVxuICAvLyBBMTE6IG15LWRheSArIHNob3VsZC1yZXZpZXcgQ1RBcyBvbmx5IGZvciBjb2xsYWJvcmF0b3IgKHJvbGVfaWQ9NCkgKyBmdWxsc2NyZWVuIGhlYWRlciBob21lLlxuICAvLyBCb3RoIEZVQXMgc2hhcmUgc2VjdGlvbj1ob21lX2NvbGxhYm9yYXRvciAob3JkZXIgMSBteS1kYXkgLyBvcmRlciAyIHNob3VsZC1yZXZpZXcpLlxuICBjb25zdCBzaG91bGRGZXRjaENvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzID0gQm9vbGVhbihleHBhbmRlZCAmJiBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKSAmJiBpc0hlYWRlckhvbWUpXG4gIGNvbnN0IHsgYWN0aW9uczogY29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMsIGxvYWRpbmc6IGNvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzTG9hZGluZyB9ID0gdXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zKFxuICAgIHNob3VsZEZldGNoQ29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgPyBhZ2VudD8uaWQgOiB1bmRlZmluZWQsXG4gICAgJ2hvbWVfY29sbGFib3JhdG9yJ1xuICApXG4gIGNvbnN0IGhlYWRlckhvdXJzRnVhcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0hlYWRlck1hbmFnZXJIb3Vyc0hvbWUpIHJldHVybiBzb3J0TWFuYWdlckhvdXJzSG9tZUZ1YXMobWFuYWdlckhvbWVGdWFzKVxuICAgIHJldHVybiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc1xuICB9LCBbaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBtYW5hZ2VySG9tZUZ1YXMsIGNvbGxhYm9yYXRvclBsYW5uZXJGdWFzXSlcbiAgY29uc3QgaGVhZGVySG91cnNGdWFzTG9hZGluZyA9IGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSA/IG1hbmFnZXJIb21lRnVhc0xvYWRpbmcgOiBjb2xsYWJvcmF0b3JQbGFubmVyRnVhc0xvYWRpbmdcbiAgY29uc3QgcmVjZW50Q29udGV4dHNMaW1pdCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHJlc29sdmVSZWNlbnRDb250ZXh0c0hvbWVMaW1pdCh7XG4gICAgICAgIGlzSGVhZGVySG91cnNBZ2VudEhvbWUsXG4gICAgICAgIGZ1YXNMb2FkaW5nOiBoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nLFxuICAgICAgICBmdWFzQ291bnQ6IGhlYWRlckhvdXJzRnVhcy5sZW5ndGgsXG4gICAgICB9KSxcbiAgICBbaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSwgaGVhZGVySG91cnNGdWFzTG9hZGluZywgaGVhZGVySG91cnNGdWFzLmxlbmd0aF1cbiAgKVxuICBjb25zdCB7IGNvbnRleHRzOiBmZXRjaGVkUmVjZW50Q29udGV4dHMsIGxvYWRpbmc6IHJlY2VudENvbnRleHRzTG9hZGluZyB9ID0gdXNlUmVjZW50Q29udGV4dHMoe1xuICAgIGVuYWJsZWQ6IGlzT3JjaGVzdHJhdG9yICYmICFpc1BsYW5uZXJIb21lLFxuICAgIGxpbWl0OiByZWNlbnRDb250ZXh0c0xpbWl0LFxuICB9KVxuICBjb25zdCByZWNlbnRDb250ZXh0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZmV0Y2hlZFJlY2VudENvbnRleHRzLmZpbHRlcihjb250ZXh0ID0+IGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXMuaGFzKGNvbnRleHQudHlwZSkpLFxuICAgIFtmZXRjaGVkUmVjZW50Q29udGV4dHMsIGFsbG93ZWRSZWNlbnRDb250ZXh0VHlwZXNdXG4gIClcbiAgY29uc3QgcmVjZW50Q29udGV4dFNrZWxldG9uS2V5cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogcmVjZW50Q29udGV4dHNMaW1pdCB9LCAoXywgaW5kZXgpID0+IGByZWNlbnQtY29udGV4dC1za2VsZXRvbi0ke2luZGV4ICsgMX1gKSxcbiAgICBbcmVjZW50Q29udGV4dHNMaW1pdF1cbiAgKVxuICBjb25zdCBmYXFzTGlzdEFnZW50SWQgPSBpc0NsaWVudENvbnRleHRGb3JGYXFzID8gcmVhbExpc3RzQWdlbnRJZCA6IHVuZGVmaW5lZFxuICBjb25zdCBmYXFzTGlzdEVudGl0eVR5cGUgPSBpc0NsaWVudENvbnRleHRGb3JGYXFzID8gcmVhbExpc3RzRW50aXR5VHlwZSA6IHVuZGVmaW5lZFxuICBjb25zdCB7XG4gICAgZmFxczogYWdlbnRGYXFzLFxuICAgIGxvYWRpbmc6IGZhcXNMb2FkaW5nLFxuICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyxcbiAgfSA9IHVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyhmYXFzTGlzdEFnZW50SWQsIGxhbmcsIGZhcXNMaXN0RW50aXR5VHlwZSlcbiAgY29uc3QgZmFxc0ZldGNoUmVmID0gdXNlUmVmPHsgYWdlbnRJZDogc3RyaW5nOyBsYW5nOiBzdHJpbmc7IGVudGl0eVR5cGU/OiBzdHJpbmcgfSB8IG51bGw+KG51bGwpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRkFRcyBzb2xvIHBhcmEgY29udGV4dG8gY2xpZW50ZTsgZWwgcmVzdG8gbXVlc3RyYSBzb2xvIEZVQXMuXG4gICAgaWYgKCFyZWFsTGlzdHNBZ2VudElkIHx8ICFpc0NsaWVudENvbnRleHRGb3JGYXFzKSByZXR1cm5cbiAgICBjb25zdCBjdXJyZW50S2V5ID0gYCR7cmVhbExpc3RzQWdlbnRJZH0tJHtsYW5nfS0ke3JlYWxMaXN0c0VudGl0eVR5cGUgPz8gJ2FsbCd9YFxuICAgIGNvbnN0IGxhc3RLZXkgPSBmYXFzRmV0Y2hSZWYuY3VycmVudFxuICAgICAgPyBgJHtmYXFzRmV0Y2hSZWYuY3VycmVudC5hZ2VudElkfS0ke2ZhcXNGZXRjaFJlZi5jdXJyZW50Lmxhbmd9LSR7ZmFxc0ZldGNoUmVmLmN1cnJlbnQuZW50aXR5VHlwZSA/PyAnYWxsJ31gXG4gICAgICA6IG51bGxcbiAgICBpZiAoY3VycmVudEtleSAhPT0gbGFzdEtleSkge1xuICAgICAgZmFxc0ZldGNoUmVmLmN1cnJlbnQgPSB7IGFnZW50SWQ6IHJlYWxMaXN0c0FnZW50SWQsIGxhbmcsIGVudGl0eVR5cGU6IHJlYWxMaXN0c0VudGl0eVR5cGUgfVxuICAgICAgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKHsgYWdlbnRJZDogcmVhbExpc3RzQWdlbnRJZCwgbGFuZywgZW50aXR5VHlwZTogcmVhbExpc3RzRW50aXR5VHlwZSB9KVxuICAgIH1cbiAgfSwgW3JlYWxMaXN0c0FnZW50SWQsIHJlYWxMaXN0c0VudGl0eVR5cGUsIGlzQ2xpZW50Q29udGV4dEZvckZhcXMsIGxhbmcsIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc10pXG5cbiAgY29uc3QgZmFxcyA9IGFnZW50RmFxc1xuICBjb25zdCBmdWFzID0gYWdlbnRGdWFzXG4gIGNvbnN0IGZhcXNBcmVMb2FkaW5nID0gZmFxc0xvYWRpbmdcbiAgY29uc3QgZnVhc0FyZUxvYWRpbmcgPSBmdWFzTG9hZGluZ1xuXG4gIGNvbnN0IHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrID0gaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgKHJlY2VudENvbnRleHRzTG9hZGluZyB8fCByZWNlbnRDb250ZXh0cy5sZW5ndGggPiAwKVxuICBjb25zdCBzaG91bGRTaG93RmFxcyA9XG4gICAgaXNNQUlBICYmXG4gICAgaXNDbGllbnRDb250ZXh0Rm9yRmFxcyAmJlxuICAgICFpc1JlY2VudENvbnRleHRzU3RlcCAmJlxuICAgIChpc0NvbnRleHRIb21lU3RlcCB8fCAoIWlzSGVhZGVySG9tZSAmJiBmYXFzQWNjZXNzKSkgJiZcbiAgICAhaXNNYWlha2VyICYmXG4gICAgKGZhcXMubGVuZ3RoID4gMCB8fCBmYXFzQXJlTG9hZGluZylcbiAgY29uc3Qgc2hvdWxkU2hvd0Z1YXMgPVxuICAgICFpc1JlY2VudENvbnRleHRzU3RlcCAmJiAhaXNNYWlha2VyICYmIChpc0NvbnRleHRIb21lU3RlcCB8fCAhaXNIZWFkZXJIb21lKSAmJiAoZnVhcy5sZW5ndGggPiAwIHx8IGZ1YXNBcmVMb2FkaW5nKVxuICBjb25zdCBzaG91bGRTaG93UGxhbm5lckZ1YXNMb2FkaW5nID0gaXNIZWFkZXJIb3Vyc0FnZW50SG9tZSAmJiBoZWFkZXJIb3Vyc0Z1YXNMb2FkaW5nICYmIGhlYWRlckhvdXJzRnVhcy5sZW5ndGggPT09IDBcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzQ29udGVudCA9IGlzSGVhZGVySG91cnNBZ2VudEhvbWUgJiYgaGVhZGVySG91cnNGdWFzLmxlbmd0aCA+IDBcbiAgY29uc3Qgc2hvdWxkU2hvd1BsYW5uZXJGdWFzID0gc2hvdWxkU2hvd1BsYW5uZXJGdWFzTG9hZGluZyB8fCBzaG91bGRTaG93UGxhbm5lckZ1YXNDb250ZW50XG4gIGNvbnN0IHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmcgPVxuICAgIHNob3VsZEZldGNoQ29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgJiZcbiAgICBjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmcgJiZcbiAgICBjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcy5sZW5ndGggPT09IDBcbiAgY29uc3Qgc2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzQ29udGVudCA9XG4gICAgc2hvdWxkRmV0Y2hDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyAmJiBjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcy5sZW5ndGggPiAwXG4gIGNvbnN0IHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyA9XG4gICAgc2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzTG9hZGluZyB8fCBzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXNDb250ZW50XG5cbiAgY29uc3Qgc2hvd1Byb2plY3RTdW1tYXJ5Q2FyZCA9IHNob3dQcm9qZWN0U3VtbWFyeSAmJiBhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCdcbiAgY29uc3Qgc2hvd0ZBUXMgPSAhIShcbiAgICBzaG93UmVjZW50Q29udGV4dHNCbG9jayB8fFxuICAgIHNob3VsZFNob3dGYXFzIHx8XG4gICAgc2hvdWxkU2hvd0Z1YXMgfHxcbiAgICBzaG91bGRTaG93UGxhbm5lckZ1YXMgfHxcbiAgICBzaG91bGRTaG93Q29sbGFib3JhdG9yRnVsbHNjcmVlbkZ1YXMgfHxcbiAgICBzaG93UHJvamVjdFN1bW1hcnlDYXJkIHx8XG4gICAgaXNNYWlha2VyXG4gIClcbiAgY29uc3QgaG9tZVNjcm9sbGFibGVMYXlvdXQgPSBzaG93RkFRc1xuICBjb25zdCBzaG93RHluYW1pY1NlY3Rpb24gPVxuICAgIHNob3dSZWNlbnRDb250ZXh0c0Jsb2NrIHx8XG4gICAgc2hvdWxkU2hvd0ZhcXMgfHxcbiAgICBzaG91bGRTaG93RnVhcyB8fFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhcyB8fFxuICAgIHNob3VsZFNob3dDb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhcyB8fFxuICAgIGlzTWFpYWtlclxuXG4gIC8vIEzDs2dpY2EgZGVsIHNjcm9sbCBjb24gZ3JhZGllbnRlc1xuICBjb25zdCBjb250ZW50Q29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbc2hvd1RvcEdyYWRpZW50LCBzZXRTaG93VG9wR3JhZGllbnRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93Qm90dG9tR3JhZGllbnQsIHNldFNob3dCb3R0b21HcmFkaWVudF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzU2Nyb2xsaW5nLCBzZXRJc1Njcm9sbGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsVGltZW91dFJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG5cbiAgLy8gU2FsdWRvIGZpam8gcG9yIHRpcG8gZGUgY29udGV4dG8gKGkxOG4pLiBDdXN0b20gYWdlbnRzIHNpZ3VlbiB1c2FuZG8gYWdlbnQuaW50cm9kdWN0aW9uLlxuICAvLyBQbGFubmVyIHVzYSB0w610dWxvICsgYmFqYWRhIHByb3Bpb3MgKGBwbGFubmVySG9tZWApLCBubyBlc3RlIGdyZWV0aW5nLlxuICBjb25zdCBncmVldGluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc01haWFrZXIgfHwgaXNQbGFubmVySG9tZSB8fCBpc1JlY2VudENvbnRleHRzU3RlcCkgcmV0dXJuICcnXG5cbiAgICBpZiAoaXNNQUlBICYmIHBpbm5lZEVudGl0eVR5cGUpIHtcbiAgICAgIHJldHVybiB0KGBob21lTWVudS5jb250ZXh0SG9tZS5jb250ZXh0R3JlZXRpbmcuJHtwaW5uZWRFbnRpdHlUeXBlfWApXG4gICAgfVxuXG4gICAgY29uc3QgaW50cm8gPSBhZ2VudD8uaW50cm9kdWN0aW9uXG4gICAgaWYgKCFpbnRybykgcmV0dXJuICcnXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW50cm8pICYmIGludHJvLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBpbnRyb1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBpbnRyby5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGludHJvID09PSAnc3RyaW5nJyA/IGludHJvIDogJydcbiAgfSwgW2FnZW50Py5pZCwgYWdlbnQ/LmludHJvZHVjdGlvbiwgaXNNYWlha2VyLCBpc1BsYW5uZXJIb21lLCBpc01BSUEsIHBpbm5lZEVudGl0eVR5cGUsIGlzUmVjZW50Q29udGV4dHNTdGVwLCB0XSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRleHQ6IFJlY2VudENvbnRleHRJdGVtLCBvcmRlcjogbnVtYmVyKSA9PiB7XG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0Q29udGV4dFNlbGVjdGVkLCB7IG9yZGVyLCB0eXBlOiBjb250ZXh0LnR5cGUgfSlcblxuICAgICAgY29uc3QgY29udGV4dElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5pZClcbiAgICAgIGNvbnN0IGNsaWVudElkID0gcGFyc2VOdW1lcmljSWQoY29udGV4dC5wYXJlbnRzPy5jbGllbnRfaWQpXG4gICAgICBjb25zdCBwcm9qZWN0SWQgPSBwYXJzZU51bWVyaWNJZChjb250ZXh0LnBhcmVudHM/LnByb2plY3RfaWQpXG4gICAgICBjb25zdCBjbGllbnROYW1lID0gY29udGV4dC5wYXJlbnRzPy5jbGllbnRfbmFtZSB8fCAnJ1xuICAgICAgY29uc3QgcHJvamVjdE5hbWUgPSBjb250ZXh0LnBhcmVudHM/LnByb2plY3RfbmFtZSB8fCAnJ1xuXG4gICAgICBzZXRTZWxlY3RlZENvbnRleHQoY29udGV4dClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgaWYgKGNvbnRleHRJZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgc2V0Q2xpZW50Py4oeyBpZDogY29udGV4dElkLCBuYW1lOiBjb250ZXh0Lm5hbWUgfSlcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC50eXBlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgaWYgKGNvbnRleHRJZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgaWQ6IGNvbnRleHRJZCxcbiAgICAgICAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudDogeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGNvbnRleHRJZCksXG4gICAgICAgICAgcHJvamVjdE5hbWU6IGNvbnRleHQubmFtZSxcbiAgICAgICAgICBjbGllbnROYW1lLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChjb250ZXh0LnR5cGUgPT09ICd0YXNrJykge1xuICAgICAgICBzZXRUYXNrKHtcbiAgICAgICAgICBpZDogY29udGV4dC5pZCxcbiAgICAgICAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCAhPSBudWxsID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGNsaWVudElkICE9IG51bGwpIHtcbiAgICAgICAgICBzZXRDbGllbnQ/Lih7IGlkOiBjbGllbnRJZCwgbmFtZTogY2xpZW50TmFtZSB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgICAgaWQ6IHByb2plY3RJZCxcbiAgICAgICAgICAgIG5hbWU6IHByb2plY3ROYW1lIHx8IGAke3QoJ2hvbWVNZW51LnJlY2VudENvbnRleHRzLnR5cGVzLnByb2plY3QnKX0gJHtwcm9qZWN0SWR9YCxcbiAgICAgICAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZCB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudDogeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZCksXG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWUgfHwgYCR7dCgnaG9tZU1lbnUucmVjZW50Q29udGV4dHMudHlwZXMucHJvamVjdCcpfSAke3Byb2plY3RJZH1gLFxuICAgICAgICAgICAgY2xpZW50TmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdtYWlhLWlucHV0LXJlZm9jdXMnKSlcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZXZlbnQsIHNldENoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlSG9tZVN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSB8IG51bGwsXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBudWxsLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKGlzSGVhZGVyTWFuYWdlckhvdXJzSG9tZSAmJiBmdWFJZCkge1xuICAgICAgICBmbHVzaFN5bmMoKCkgPT4ge1xuICAgICAgICAgIHNldFNlbGVjdGVkQ29udGV4dChudWxsKVxuICAgICAgICAgIHNldFRhc2sobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIG9uU3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZCwgY29udGV4dERhdGEpXG4gICAgfSxcbiAgICBbaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lLCBvblN0YXJ0Q2hhdCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdXG4gIClcblxuICBjb25zdCByZW5kZXJSZWNlbnRDb250ZXh0cyA9ICgpID0+IHtcbiAgICBpZiAoIWlzUmVjZW50Q29udGV4dHNTdGVwKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1xuICAgICAgICAkZml4ZWRDb250ZW50V2lkdGg9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWCA6IHVuZGVmaW5lZH1cbiAgICAgID5cbiAgICAgICAge2lzSGVhZGVySG91cnNBZ2VudEhvbWUgPyAoXG4gICAgICAgICAgPFNDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRDb250ZXh0c1NlY3Rpb25NYW5hZ2VyLnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnRpdGxlJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICAgICAge3QoXG4gICAgICAgICAgICAgICAgaXNIZWFkZXJNYW5hZ2VySG91cnNIb21lXG4gICAgICAgICAgICAgICAgICA/ICdob21lTWVudS5jb250ZXh0SG9tZS5yZWNlbnRDb250ZXh0c1NlY3Rpb25NYW5hZ2VyLnN1YnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgOiAnaG9tZU1lbnUuY29udGV4dEhvbWUucmVjZW50VGFza3NTZWN0aW9uLnN1YnRpdGxlJ1xuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVSZWNlbnRDb250ZXh0c1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTQ0NBSUhvbWVSZWNlbnRDb250ZXh0c0xpc3QgJGZsdXNoUGlsbHM9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lfT5cbiAgICAgICAgICB7cmVjZW50Q29udGV4dHNMb2FkaW5nICYmXG4gICAgICAgICAgICByZWNlbnRDb250ZXh0U2tlbGV0b25LZXlzLm1hcChrZXkgPT4gPFNDQ0FJSG9tZVJlY2VudENvbnRleHRQaWxsU2tlbGV0b24ga2V5PXtrZXl9IC8+KX1cbiAgICAgICAgICB7IXJlY2VudENvbnRleHRzTG9hZGluZyAmJlxuICAgICAgICAgICAgcmVjZW50Q29udGV4dHMubWFwKChjb250ZXh0LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8UmVjZW50Q29udGV4dFBpbGxcbiAgICAgICAgICAgICAgICBrZXk9e2Ake2NvbnRleHQudHlwZX0tJHtjb250ZXh0LmlkfWB9XG4gICAgICAgICAgICAgICAgY29udGV4dD17Y29udGV4dH1cbiAgICAgICAgICAgICAgICBsYWJlbD17Y29udGV4dC5uYW1lLnRyaW0oKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0KGNvbnRleHQsIGluZGV4ICsgMSl9XG4gICAgICAgICAgICAgICAgZnVsbFdpZHRoPXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L1NDQ0FJSG9tZVJlY2VudENvbnRleHRzTGlzdD5cbiAgICAgIDwvU0NDQUlIb21lUmVjZW50Q29udGV4dHM+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgY2hlY2tTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSByZXR1cm5cblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgY29uc3QgaXNTY3JvbGxhYmxlID0gc2Nyb2xsSGVpZ2h0ID4gY2xpZW50SGVpZ2h0XG4gICAgY29uc3QgaXNBdFRvcCA9IHNjcm9sbFRvcCA9PT0gMFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMVxuXG4gICAgc2V0U2hvd1RvcEdyYWRpZW50KGlzU2Nyb2xsYWJsZSAmJiAhaXNBdFRvcClcbiAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoaXNTY3JvbGxhYmxlICYmICFpc0F0Qm90dG9tKVxuICB9LCBbaG9tZVNjcm9sbGFibGVMYXlvdXRdKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjaGVja1Njcm9sbCgpXG4gICAgc2V0SXNTY3JvbGxpbmcodHJ1ZSlcblxuICAgIGlmIChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChzY3JvbGxUaW1lb3V0UmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRJc1Njcm9sbGluZyhmYWxzZSlcbiAgICB9LCAxNTApXG4gIH0sIFtjaGVja1Njcm9sbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhvbWVTY3JvbGxhYmxlTGF5b3V0KSB7XG4gICAgICBzZXRTaG93VG9wR3JhZGllbnQoZmFsc2UpXG4gICAgICBzZXRTaG93Qm90dG9tR3JhZGllbnQoZmFsc2UpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlZHVsZUNoZWNrU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2hlY2tTY3JvbGwoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzY2hlZHVsZUNoZWNrU2Nyb2xsKClcbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoc2NoZWR1bGVDaGVja1Njcm9sbClcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcilcbiAgICBjb25zdCBzY3JvbGxDb250ZW50ID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkXG4gICAgaWYgKHNjcm9sbENvbnRlbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHNjcm9sbENvbnRlbnQpXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoc2NoZWR1bGVDaGVja1Njcm9sbCwgMTAwKVxuICAgIGNvbnN0IGxhdGVUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dChzY2hlZHVsZUNoZWNrU2Nyb2xsLCA0MDApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgIGNsZWFyVGltZW91dChsYXRlVGltZW91dElkKVxuICAgICAgaWYgKHNjcm9sbFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dFJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hvbWVTY3JvbGxhYmxlTGF5b3V0LCBjaGVja1Njcm9sbCwgaGFuZGxlU2Nyb2xsXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaG9tZVNjcm9sbGFibGVMYXlvdXQpIHJldHVyblxuICAgIGNoZWNrU2Nyb2xsKClcbiAgfSwgW1xuICAgIGhvbWVTY3JvbGxhYmxlTGF5b3V0LFxuICAgIGNoZWNrU2Nyb2xsLFxuICAgIHJlY2VudENvbnRleHRzTG9hZGluZyxcbiAgICByZWNlbnRDb250ZXh0cy5sZW5ndGgsXG4gICAgaGVhZGVySG91cnNGdWFzTG9hZGluZyxcbiAgICBoZWFkZXJIb3Vyc0Z1YXMubGVuZ3RoLFxuICAgIGZ1YXNMb2FkaW5nLFxuICAgIGZ1YXMubGVuZ3RoLFxuICAgIGZhcXNBcmVMb2FkaW5nLFxuICAgIGZhcXMubGVuZ3RoLFxuICAgIHNob3VsZFNob3dQbGFubmVyRnVhcyxcbiAgICBpc01haWFrZXIsXG4gIF0pXG5cbiAgY29uc3QgcmVuZGVySGVhZGVyQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzTUFJQSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNDQ0FJSG9tZUFnZW50SW5mb0NvbnRhaW5lcj5cbiAgICAgICAgICA8U0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgICAge2FnZW50Py5lbW9qaX0ge2FnZW50Py5uYW1lfVxuICAgICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvPlxuICAgICAgICAgIHthZ2VudD8uY3JlYXRlZF9ieSAmJiAhaXNNQUlBICYmIChcbiAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgYWdlbnQ/LmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWQgPyB0KCdob21lTWVudS5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpIDogdCgnaG9tZU1lbnUuY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT57YWdlbnQ/LmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0NBSUhvbWVDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZUNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lQ3JlYXRlZEJ5Q29udGFpbmVyPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlIb21lQWdlbnRJbmZvQ29udGFpbmVyPlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRBbGlnblN0YXJ0ID0gaXNQbGFubmVySG9tZSB8fCBpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZVxuXG4gICAgY29uc3QgbWFpYUhlYWRlclN0YWNrTmVlZHNHYXAgPVxuICAgICAgKGlzUmVjZW50Q29udGV4dHNTdGVwICYmICFpc0hlYWRlclRhc2tDb250ZXh0SG9tZSAmJiAhaXNQbGFubmVySG9tZSkgfHxcbiAgICAgICghaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiZcbiAgICAgICAgISFncmVldGluZyAmJlxuICAgICAgICAhaXNQbGFubmVySG9tZSAmJlxuICAgICAgICAhaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgJiZcbiAgICAgICAgIWlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSUhvbWVNYWlhSGVhZGVyU3RhY2sgJG5vR2FwPXshbWFpYUhlYWRlclN0YWNrTmVlZHNHYXB9ICRhbGlnbj17Y29udGVudEFsaWduU3RhcnQgPyAnc3RhcnQnIDogJ2NlbnRlcid9PlxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmICFpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSAmJiAoXG4gICAgICAgICAgPFNDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICAgICA8U0NDQUlIb21lTG9nb1dyYXBwZXI+XG4gICAgICAgICAgICAgIDxNQUlBSXNvbG9nbyAvPlxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVMb2dvV3JhcHBlcj5cbiAgICAgICAgICA8L1NDQ0FJSG9tZUljb25Db250YWluZXI+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1BsYW5uZXJIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRzaXplPVwibWRcIiAkYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUucGxhbm5lckhvbWUudGl0bGUnKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPVwic3RhcnRcIj57dCgnaG9tZU1lbnUucGxhbm5lckhvbWUuc3VidGl0bGUnKX08L1NDQ0FJSG9tZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGVCbG9jaz5cbiAgICAgICAgKX1cbiAgICAgICAgeyFpc1BsYW5uZXJIb21lICYmIGlzUmVjZW50Q29udGV4dHNTdGVwICYmIGlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8U0NDQUlIb21lVGl0bGVCbG9jayAkYWxpZ249XCJzdGFydFwiICRmdWxsV2lkdGg+XG4gICAgICAgICAgICA8U0NDQUlIb21lVGl0bGUgJHNpemU9XCJjb250ZXh0XCIgJGFsaWduPVwic3RhcnRcIiAkZnVsbFdpZHRoPlxuICAgICAgICAgICAgICB7dCgnaG9tZU1lbnUuY29udGV4dEhvbWUuZ3JlZXRpbmcnLCB7IG5hbWU6IHVzZXIuZmlyc3ROYW1lIH0pfVxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVTdWJ0aXRsZSAkYWxpZ249XCJzdGFydFwiICRjb2xsYWJvcmF0b3JIb21lPlxuICAgICAgICAgICAgICB7dChoZWFkZXJUYXNrQ29udGV4dFN1YnRpdGxlS2V5KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVUaXRsZUJsb2NrPlxuICAgICAgICApfVxuICAgICAgICB7IWlzUGxhbm5lckhvbWUgJiYgaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgIWlzSGVhZGVyVGFza0NvbnRleHRIb21lICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVRpdGxlICRhbGlnbj17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnc3RhcnQnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LmNvbnRleHRIb21lLmdyZWV0aW5nJywgeyBuYW1lOiB1c2VyLmZpcnN0TmFtZSB9KX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lVGl0bGU+XG4gICAgICAgICAgICA8U0NDQUlIb21lU3VidGl0bGUgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAgICB7dChcbiAgICAgICAgICAgICAgICBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKVxuICAgICAgICAgICAgICAgICAgPyAnaG9tZU1lbnUuY29udGV4dEhvbWUuc3VidGl0bGVDb2xsYWJvcmF0b3InXG4gICAgICAgICAgICAgICAgICA6ICdob21lTWVudS5jb250ZXh0SG9tZS5zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlIb21lU3VidGl0bGU+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNQbGFubmVySG9tZSAmJiAhaXNSZWNlbnRDb250ZXh0c1N0ZXAgJiYgZ3JlZXRpbmcgJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVHcmVldGluZ1xuICAgICAgICAgICAgJGFsaWduPXtpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZSA/ICdzdGFydCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAkc2l6ZT17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWUgPyAnbWQnIDogJ2xnJ31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Z3JlZXRpbmd9XG4gICAgICAgICAgPC9TQ0NBSUhvbWVHcmVldGluZz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlIb21lTWFpYUhlYWRlclN0YWNrPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGZpeGVkSG9tZUNvbnRlbnRXaWR0aCA9XG4gICAgaXNIZWFkZXJUYXNrQ29udGV4dEhvbWUgfHwgaXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWVcbiAgICAgID8gTUFJQV9IRUFERVJfQ09MTEFCT1JBVE9SX0hPTUVfQ09OVEVOVF9XSURUSF9QWFxuICAgICAgOiB1bmRlZmluZWRcbiAgY29uc3QgY29udGVudEFsaWduU3RhcnQgPSBpc1BsYW5uZXJIb21lIHx8IGlzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lXG4gIGNvbnN0IHNob3dBZ2VudEludHJvZHVjdGlvbiA9IHNlY3Rpb24gIT09ICdwcm9qZWN0JyAmJiAhaXNNQUlBICYmICEhYWdlbnQ/LmludHJvZHVjdGlvblxuXG4gIGNvbnN0IGhvbWVNYWluID0gKFxuICAgIDxTQ0NBSUhvbWVDb250ZW50XG4gICAgICBzaG93RkFRcz17aG9tZVNjcm9sbGFibGVMYXlvdXR9XG4gICAgICAkaXNBZ2VudFZpZXc9eyFpc01BSUF9XG4gICAgICAkZmxvYXRpbmdDdXN0b21DZW50ZXI9e2Zsb2F0aW5nQ3VzdG9tQ2VudGVyfVxuICAgICAgJGNlbnRlclZlcnRpY2FsbHk9e2lzUGxhbm5lckhvbWV9XG4gICAgICAkYWxpZ25TdGFydD17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWV9XG4gICAgICAkZml4ZWRDb250ZW50V2lkdGg9e2ZpeGVkSG9tZUNvbnRlbnRXaWR0aH1cbiAgICA+XG4gICAgICA8U0NDQUlIb21lQ29udGVudElubmVyXG4gICAgICAgIHNob3dGQVFzPXtob21lU2Nyb2xsYWJsZUxheW91dH1cbiAgICAgICAgJGlzQWdlbnRWaWV3PXshaXNNQUlBfVxuICAgICAgICAkZmxvYXRpbmdDdXN0b21DZW50ZXI9e2Zsb2F0aW5nQ3VzdG9tQ2VudGVyfVxuICAgICAgICAkY2VudGVyVmVydGljYWxseT17aXNQbGFubmVySG9tZX1cbiAgICAgICAgJGFsaWduU3RhcnQ9e2lzSGVhZGVyVGFza0NvbnRleHRIb21lIHx8IGlzTGVmdEFsaWduZWRPcmNoZXN0cmF0b3JIb21lfVxuICAgICAgICAkaGVhZGVyQ29sbGFib3JhdG9ySG9tZT17aXNIZWFkZXJUYXNrQ29udGV4dEhvbWV9XG4gICAgICAgICRzZWN0aW9uT3JjaGVzdHJhdG9ySG9tZT17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWV9XG4gICAgICA+XG4gICAgICAgIDxTQ0NBSUhvbWVIZWFkZXJcbiAgICAgICAgICAkZ2FwPXtzaG93QWdlbnRJbnRyb2R1Y3Rpb24gPyAnMjBweCcgOiAnMCd9XG4gICAgICAgICAgJG1heFdpZHRoPXtpc01BSUEgPyAnMTAwJScgOiAnMzgwcHgnfVxuICAgICAgICAgICRpc0FnZW50Vmlldz17IWlzTUFJQX1cbiAgICAgICAgICAkYWxpZ249e2NvbnRlbnRBbGlnblN0YXJ0ID8gJ3N0YXJ0JyA6ICdjZW50ZXInfVxuICAgICAgICA+XG4gICAgICAgICAge3JlbmRlckhlYWRlckNvbnRlbnQoKX1cblxuICAgICAgICAgIHtzaG93QWdlbnRJbnRyb2R1Y3Rpb24gPyAoXG4gICAgICAgICAgICA8U0NDQUlIb21lSW50cm9kdWN0aW9uIGV4cGFuZGVkPXtleHBhbmRlZH0+e2FnZW50LmludHJvZHVjdGlvbn08L1NDQ0FJSG9tZUludHJvZHVjdGlvbj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TQ0NBSUhvbWVIZWFkZXI+XG4gICAgICAgIHtzaG93UHJvamVjdFN1bW1hcnlDYXJkICYmIChcbiAgICAgICAgICA8U0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3Qgb25DbGljaz17aGFuZGxlcnMucHJvamVjdFN1bW1hcnl9PlxuICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5PlxuICAgICAgICAgICAgICA8VGVtcGxhdGVHcmFkaWVudEljb24gaGVpZ2h0PXsyNH0gd2lkdGg9ezI0fSAvPlxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeT5cbiAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVQcm9qZWN0U3VtbWFyeVRpdGxlPnt0KCdob21lTWVudS5wcm9qZWN0U3VtbWFyeS50aXRsZScpfTwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlUaXRsZT5cbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZVByb2plY3RTdW1tYXJ5RGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAge3QoJ2hvbWVNZW51LnByb2plY3RTdW1tYXJ5LmRlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgIDwvU0NDQUlIb21lUHJvamVjdFN1bW1hcnlDb250ZW50PlxuICAgICAgICAgIDwvU0NDQUhXcmFwcGVyU3VtbWFyeVByb2plY3Q+XG4gICAgICAgICl9XG4gICAgICAgIHtzaG93RHluYW1pY1NlY3Rpb24gJiYgKFxuICAgICAgICAgIDxTQ0NBSUhvbWVEeW5hbWljU2VjdGlvblxuICAgICAgICAgICAgJGdyb3c9e2lzTWFpYWtlcn1cbiAgICAgICAgICAgICRhbGlnblN0YXJ0PXtpc0hlYWRlclRhc2tDb250ZXh0SG9tZSB8fCBpc0xlZnRBbGlnbmVkT3JjaGVzdHJhdG9ySG9tZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvdWxkU2hvd0NvbGxhYm9yYXRvckZ1bGxzY3JlZW5GdWFzID8gKFxuICAgICAgICAgICAgICA8RnJlcXVlbnRseVVzZWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e2hhbmRsZUhvbWVTdGFydENoYXR9XG4gICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgIGlzU2Nyb2xsaW5nPXtpc1Njcm9sbGluZ31cbiAgICAgICAgICAgICAgICBhY3Rpb25zPXtjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc31cbiAgICAgICAgICAgICAgICBsb2FkaW5nPXtjb2xsYWJvcmF0b3JGdWxsc2NyZWVuRnVhc0xvYWRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtzaG91bGRTaG93UGxhbm5lckZ1YXMgPyAoXG4gICAgICAgICAgICAgIDxGcmVxdWVudGx5VXNlZEFjdGlvbnNcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwicGxhbm5lclwiXG4gICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e2hhbmRsZUhvbWVTdGFydENoYXR9XG4gICAgICAgICAgICAgICAgYWdlbnRJZD17YWdlbnQ/LmlkfVxuICAgICAgICAgICAgICAgIGlzU2Nyb2xsaW5nPXtpc1Njcm9sbGluZ31cbiAgICAgICAgICAgICAgICBhY3Rpb25zPXtoZWFkZXJIb3Vyc0Z1YXN9XG4gICAgICAgICAgICAgICAgbG9hZGluZz17aGVhZGVySG91cnNGdWFzTG9hZGluZ31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge3JlbmRlclJlY2VudENvbnRleHRzKCl9XG4gICAgICAgICAgICB7c2hvdWxkU2hvd0ZhcXMgJiYgKFxuICAgICAgICAgICAgICA8RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXG4gICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgIHNob3dGQVFzPXtzaG93RkFRc31cbiAgICAgICAgICAgICAgICBzaG93UHJvamVjdFN1bW1hcnk9e3Nob3dQcm9qZWN0U3VtbWFyeX1cbiAgICAgICAgICAgICAgICBhZ2VudElkPXthZ2VudD8uaWR9XG4gICAgICAgICAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgZmFxcz17ZmFxc31cbiAgICAgICAgICAgICAgICBsb2FkaW5nPXtmYXFzQXJlTG9hZGluZ31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7c2hvdWxkU2hvd0Z1YXMgJiYgKFxuICAgICAgICAgICAgICA8RnJlcXVlbnRseVVzZWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgb25TdGFydENoYXQ9e29uU3RhcnRDaGF0fVxuICAgICAgICAgICAgICAgIGFnZW50SWQ9e2FnZW50Py5pZH1cbiAgICAgICAgICAgICAgICBpc1Njcm9sbGluZz17aXNTY3JvbGxpbmd9XG4gICAgICAgICAgICAgICAgYWN0aW9ucz17ZnVhc31cbiAgICAgICAgICAgICAgICBsb2FkaW5nPXtmdWFzQXJlTG9hZGluZ31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7aXNNYWlha2VyID8gPENoYXRBSUhvbWVNYWlha2VyIG9uU3RhcnRDaGF0PXtvblN0YXJ0Q2hhdH0gLz4gOiBudWxsfVxuICAgICAgICAgIDwvU0NDQUlIb21lRHluYW1pY1NlY3Rpb24+XG4gICAgICAgICl9XG4gICAgICA8L1NDQ0FJSG9tZUNvbnRlbnRJbm5lcj5cbiAgICA8L1NDQ0FJSG9tZUNvbnRlbnQ+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSUhvbWVDb250YWluZXIgc2hvd0ZBUXM9e3Nob3dGQVFzfSAkYWxpZ25TdGFydD17aXNMZWZ0QWxpZ25lZE9yY2hlc3RyYXRvckhvbWV9PlxuICAgICAge2hvbWVTY3JvbGxhYmxlTGF5b3V0ICYmIDxTQ0NBSUhvbWVHcmFkaWVudFRvcCAkc2hvdz17c2hvd1RvcEdyYWRpZW50fSAvPn1cbiAgICAgIHtob21lU2Nyb2xsYWJsZUxheW91dCA/IChcbiAgICAgICAgPFNDQ0FJSG9tZVNjcm9sbCByZWY9e2NvbnRlbnRDb250YWluZXJSZWZ9ICRzY3JvbGxhYmxlPlxuICAgICAgICAgIHtob21lTWFpbn1cbiAgICAgICAgPC9TQ0NBSUhvbWVTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICBob21lTWFpblxuICAgICAgKX1cbiAgICAgIHtob21lU2Nyb2xsYWJsZUxheW91dCAmJiA8U0NDQUlIb21lR3JhZGllbnRCb3R0b20gJHNob3c9e3Nob3dCb3R0b21HcmFkaWVudH0gLz59XG4gICAgPC9TQ0NBSUhvbWVDb250YWluZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsZUFB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