@projectcor/maia-components 2.52.0 → 2.52.1-0
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.
- package/lib/App.js +44 -19
- package/lib/components/atoms/ActionableButton.spec.js +111 -0
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +52 -0
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +11 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.spec.js +63 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +183 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +123 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +3 -1
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +139 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +385 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +3 -1
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +78 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +94 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +24 -14
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +396 -0
- package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +28 -10
- package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +80 -0
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +526 -0
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +19 -15
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +169 -0
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +11 -0
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +8 -4
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +77 -0
- package/lib/components/atoms/Backdrop/Backdrop.spec.js +28 -0
- package/lib/components/atoms/CardMenu/CardMenu.spec.js +56 -0
- package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +67 -0
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +27 -0
- package/lib/components/atoms/Chip/Chip.spec.js +82 -0
- package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +26 -0
- package/lib/components/atoms/ClientSelector/ClientSelector.helpers.spec.js +45 -0
- package/lib/components/atoms/ClientSelector/ClientSelector.js +15 -13
- package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +133 -0
- package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +107 -0
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +29 -0
- package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +46 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +109 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +81 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +92 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +319 -0
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +107 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +136 -0
- package/lib/components/atoms/CopyToClipboard.spec.js +74 -0
- package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +76 -0
- package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +86 -0
- package/lib/components/atoms/Expand/Expand.spec.js +57 -0
- package/lib/components/atoms/Fade/Fade.js +10 -6
- package/lib/components/atoms/Fade/Fade.spec.js +66 -0
- package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +75 -0
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +104 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +3 -1
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +91 -0
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +19 -7
- package/lib/components/atoms/HelpButton.spec.js +87 -0
- package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +96 -0
- package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +54 -0
- package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +21 -0
- package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +20 -0
- package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +26 -0
- package/lib/components/atoms/LoadingText/LoadingText.spec.js +25 -0
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +42 -0
- package/lib/components/atoms/MAIAError/MAIAError.spec.js +27 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +3 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.spec.js +113 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +3 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +381 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.js +123 -99
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +719 -0
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +92 -0
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +193 -0
- package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +32 -0
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +64 -0
- package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +43 -0
- package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +9 -4
- package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +114 -0
- package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +51 -0
- package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +48 -0
- package/lib/components/atoms/ModalProject/ModalProject.spec.js +66 -0
- package/lib/components/atoms/NextPageLoader.spec.js +37 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +20 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +35 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +47 -0
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +4 -5
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +146 -0
- package/lib/components/atoms/PrimaryButton.spec.js +42 -0
- package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +69 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +7 -2
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +69 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +41 -24
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +25 -10
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +59 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +78 -43
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +170 -0
- package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +9 -11
- package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +199 -0
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +70 -0
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +37 -15
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +120 -0
- package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +8 -0
- package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +31 -0
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +52 -0
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +90 -0
- package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +29 -0
- package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +38 -0
- package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +16 -0
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +107 -0
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +24 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.spec.js +71 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +120 -0
- package/lib/components/atoms/Switch/Switch.spec.js +41 -0
- package/lib/components/atoms/TextArea/CustomTextArea.spec.js +52 -0
- package/lib/components/atoms/TextArea/TextArea.helpers.spec.js +25 -0
- package/lib/components/atoms/TextArea/TextArea.spec.js +126 -0
- package/lib/components/atoms/ThirdButton.spec.js +29 -0
- package/lib/components/atoms/VideoModal/VideoModal.spec.js +68 -0
- package/lib/components/atoms/WithAppCfg.spec.js +82 -0
- package/lib/components/index.js +2 -1
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +53 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +3 -2
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +780 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +107 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +256 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +6 -4
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +175 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +25 -16
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +318 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +50 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +94 -0
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +83 -0
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +30 -0
- package/lib/components/molecules/AgentInputBlock/index.js +5 -0
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +52 -0
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +76 -0
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +20 -0
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +34 -0
- package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +36 -0
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +66 -0
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +7 -3
- package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +145 -0
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +204 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.spec.js +622 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +93 -72
- package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +264 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +86 -0
- package/lib/components/molecules/ChatAIHome/styles.js +85 -78
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +104 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +967 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +30 -14
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +646 -0
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +46 -0
- package/lib/components/molecules/ChatAIMessages/newStyles.js +32 -35
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +8 -1
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +1395 -0
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +23 -8
- package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +1434 -0
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +33 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +116 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +15 -153
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +134 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -26
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +142 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +63 -367
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +241 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.js +69 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.spec.js +144 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentDropdown.js +95 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentSelector.js +174 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.js +99 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.spec.js +65 -0
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +37 -0
- package/lib/components/molecules/ChatAIModal/constants.spec.js +16 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +22 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +67 -0
- package/lib/components/molecules/ChatAIModal/layout.spec.js +72 -0
- package/lib/components/molecules/ChatAIMultipleChoice/ChatAIMultipleChoice.spec.js +102 -0
- package/lib/components/molecules/ChatAIMultipleChoice/ChatAIMultipleChoiceAnswer.spec.js +49 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.spec.js +93 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +297 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.spec.js +62 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +221 -0
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +66 -0
- package/lib/components/molecules/ChatFooter/ChatFooter.js +10 -4
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +548 -0
- package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +10 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +104 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +5 -2
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +139 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +84 -0
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +116 -0
- package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +126 -0
- package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +115 -0
- package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +79 -0
- package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +37 -0
- package/lib/components/molecules/Sidebar/Sidebar.helpers.spec.js +119 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +41 -23
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +526 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +1067 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +2 -2
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +1236 -0
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +112 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.spec.js +77 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +503 -0
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +217 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.js +525 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +246 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +16 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +253 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +291 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +13 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +284 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +343 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +197 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +94 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +69 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +38 -0
- package/lib/components/organisms/ChatAIPage/getDaypart.js +9 -0
- package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +19 -0
- package/lib/components/organisms/ChatAIPage/index.js +3 -0
- package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +53 -0
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +59 -0
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +79 -0
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +86 -0
- package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +49 -0
- package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +67 -0
- package/lib/components/organisms/ProjectSummary/ProjectSummary.js +11 -7
- package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +117 -0
- package/lib/components/organisms/SnackBar/Snackbar.spec.js +66 -0
- package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +19 -0
- package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +4 -1
- package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +52 -0
- package/lib/constants/formatExtensions.spec.js +15 -0
- package/lib/constants/maiaExternalConnectorsAccess.spec.js +29 -0
- package/lib/constants/maiaFeatureAccess.spec.js +30 -0
- package/lib/constants/maiaHourAgentAccess.spec.js +30 -0
- package/lib/constants/maiaTaskPanelAccess.spec.js +41 -0
- package/lib/constants/permissions/clientRoleAccess.spec.js +65 -0
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +4 -1
- package/lib/constants/permissions/utils.spec.js +128 -0
- package/lib/constants/plannerSyncEvents.spec.js +31 -0
- package/lib/constants/taskUrls.spec.js +9 -0
- package/lib/dev/DevMaiaPage.js +30 -0
- package/lib/dev/DevReasoningTimeline.js +68 -37
- package/lib/dev/Providers.js +5 -3
- package/lib/hooks/frequentlyUsedActionsCache.js +17 -0
- package/lib/hooks/frequentlyUsedActionsCache.spec.js +25 -0
- package/lib/hooks/useAccessClient/useAccessClient.spec.js +149 -0
- package/lib/hooks/useAgentModel/useAgentModel.spec.js +83 -0
- package/lib/hooks/useAgentModel/useCreateAgent.helpers.spec.js +268 -0
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +314 -0
- package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +183 -0
- package/lib/hooks/useAgentModel/useUpdateAgent.js +7 -6
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +374 -0
- package/lib/hooks/useAgentSuggestions.spec.js +89 -0
- package/lib/hooks/useCaretPosition.spec.js +58 -0
- package/lib/hooks/useChatManager/useChatManager.helpers.js +3 -3
- package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +2027 -0
- package/lib/hooks/useChatManager/useChatManager.js +8 -7
- package/lib/hooks/useChatManager/useChatManager.spec.js +2467 -0
- package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +491 -0
- package/lib/hooks/useChatMessages/useChatMessages.spec.js +729 -0
- package/lib/hooks/useChats/useChats.spec.js +208 -0
- package/lib/hooks/useClientSearch.helpers.spec.js +52 -0
- package/lib/hooks/useClientSearch.spec.js +86 -0
- package/lib/hooks/useContextMentions.helpers.spec.js +267 -0
- package/lib/hooks/useContextMentions.spec.js +338 -0
- package/lib/hooks/useContextPinPopover.helpers.spec.js +183 -0
- package/lib/hooks/useContextPinPopover.spec.js +159 -0
- package/lib/hooks/useContinueLegacyContextInNewChat/index.js +2 -0
- package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +93 -0
- package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.spec.js +257 -0
- package/lib/hooks/useDebounce.spec.js +42 -0
- package/lib/hooks/useEntitySearch.helpers.spec.js +723 -0
- package/lib/hooks/useEntitySearch.js +3 -1
- package/lib/hooks/useEntitySearch.spec.js +718 -0
- package/lib/hooks/useEvent.spec.js +45 -0
- package/lib/hooks/useFrequentlyAskedQuestions.spec.js +222 -0
- package/lib/hooks/useFrequentlyUsedActions.js +61 -22
- package/lib/hooks/useFrequentlyUsedActions.spec.js +293 -0
- package/lib/hooks/useIsMaiaPageRoute.spec.js +26 -0
- package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +122 -0
- package/lib/hooks/useKnowledge/downloadKnowledge.js +4 -4
- package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +148 -0
- package/lib/hooks/useKnowledge/saveKnowledge.spec.js +104 -0
- package/lib/hooks/useKnowledge/useKnowledgeOperations.js +16 -15
- package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +178 -0
- package/lib/hooks/useLatestRef.spec.js +50 -0
- package/lib/hooks/useMaiaChatSessionMeta/index.js +2 -0
- package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +24 -0
- package/lib/hooks/useMentionAllowedTypes.spec.js +89 -0
- package/lib/hooks/useMentionPopover.helpers.spec.js +100 -0
- package/lib/hooks/useMentionPopover.spec.js +392 -0
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +176 -0
- package/lib/hooks/useMinimizedPillBottomOffset.spec.js +89 -0
- package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +67 -0
- package/lib/hooks/useModal/useModal.spec.js +73 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.spec.js +138 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +485 -0
- package/lib/hooks/useProjectSearch.helpers.spec.js +89 -0
- package/lib/hooks/useProjectSearch.spec.js +91 -0
- package/lib/hooks/useProjectSummary.spec.js +193 -0
- package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +151 -0
- package/lib/hooks/useProjectSummaryConfig.js +10 -5
- package/lib/hooks/useProjectSummaryConfig.spec.js +133 -0
- package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +112 -0
- package/lib/hooks/useRecentClientsSearch.helpers.spec.js +33 -0
- package/lib/hooks/useRecentClientsSearch.spec.js +85 -0
- package/lib/hooks/useRecentContexts.spec.js +139 -0
- package/lib/hooks/useResize.spec.js +37 -0
- package/lib/hooks/useSkillsCatalog.spec.js +88 -0
- package/lib/hooks/useSlashCommands.spec.js +139 -0
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +101 -0
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +33 -0
- package/lib/hooks/useStreamResponse.spec.js +199 -0
- package/lib/hooks/useT.spec.js +20 -0
- package/lib/hooks/useToggle.spec.js +33 -0
- package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +171 -0
- package/lib/index.js +5 -2
- package/lib/lang/br/index.js +26 -1
- package/lib/lang/en/index.js +26 -1
- package/lib/lang/es/index.js +26 -1
- package/lib/lang/fr/index.js +26 -1
- package/lib/services/appcues.spec.js +37 -0
- package/lib/services/maia/Access/updateAccess.spec.js +137 -0
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +121 -0
- package/lib/services/maia/Actions/getSlashCommands.spec.js +91 -0
- package/lib/services/maia/Agents/connectors.js +3 -1
- package/lib/services/maia/Agents/connectors.spec.js +496 -0
- package/lib/services/maia/Agents/createAgent.spec.js +55 -0
- package/lib/services/maia/Agents/deleteAgent.spec.js +57 -0
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +108 -0
- package/lib/services/maia/Agents/getAgentById.spec.js +190 -0
- package/lib/services/maia/Agents/getAgentModels.spec.js +190 -0
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +89 -0
- package/lib/services/maia/Agents/getAgents.helpers.spec.js +325 -0
- package/lib/services/maia/Agents/getAgents.spec.js +1135 -0
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +45 -0
- package/lib/services/maia/Agents/toggleFavorite.spec.js +59 -0
- package/lib/services/maia/Agents/updateAgent.spec.js +48 -0
- package/lib/services/maia/Chats/deleteChat.spec.js +31 -0
- package/lib/services/maia/Chats/getChatMessages.spec.js +150 -0
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +181 -0
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +30 -0
- package/lib/services/maia/Chats/patchChat.spec.js +41 -0
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +28 -0
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +58 -0
- package/lib/services/maia/Knowledge/delete.spec.js +45 -0
- package/lib/services/maia/Knowledge/download.spec.js +78 -0
- package/lib/services/maia/Knowledge/save.spec.js +58 -0
- package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +261 -0
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +181 -0
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +52 -0
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +103 -0
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +82 -0
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +63 -0
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +82 -0
- package/lib/services/maia/Skills/createSkill.spec.js +68 -0
- package/lib/services/maia/Skills/deleteSkill.spec.js +42 -0
- package/lib/services/maia/Skills/generateSkill.spec.js +48 -0
- package/lib/services/maia/Skills/getSkills.spec.js +152 -0
- package/lib/services/maia/Skills/updateSkill.spec.js +62 -0
- package/lib/services/maia/client.spec.js +56 -0
- package/lib/services/utils/fetchCOR.spec.js +211 -0
- package/lib/services/utils/getCookie.spec.js +20 -0
- package/lib/services/utils/mapChatMessages.helpers.spec.js +336 -0
- package/lib/services/utils/mapChatMessages.multipleChoice.spec.js +87 -0
- package/lib/services/utils/mapChatMessages.spec.js +254 -0
- package/lib/store/chatsSidebarOptimistic.spec.js +145 -0
- package/lib/store/maiaLastChatPersistence.spec.js +22 -0
- package/lib/store/maiaPanelSessionPersistence.spec.js +62 -0
- package/lib/store/sessions/sessionNotificationSound.spec.js +145 -0
- package/lib/store/sessions/sessionNotifications.helpers.spec.js +63 -0
- package/lib/store/sessions/sessionNotifications.spec.js +106 -0
- package/lib/store/sessions/sessionStreamManager.helpers.spec.js +177 -0
- package/lib/store/sessions/sessionStreamManager.js +51 -55
- package/lib/store/sessions/sessionStreamManager.spec.js +939 -0
- package/lib/store/sessions/sessions.types.spec.js +16 -0
- package/lib/store/sessions/useSessionsStore.spec.js +135 -0
- package/lib/store/useChatsStore.js +4 -3
- package/lib/store/useChatsStore.spec.js +690 -0
- package/lib/store/useFaqsStore.spec.js +57 -0
- package/lib/store/useMultipleChoiceStore.spec.js +44 -0
- package/lib/styles/cascade.js +29 -3
- package/lib/styles/transitions.js +3 -1
- package/lib/types/global.d.js +1 -1
- package/lib/utils/actionCategoryMap.spec.js +18 -0
- package/lib/utils/agentDisplayName.spec.js +48 -0
- package/lib/utils/autoApproveStorage.spec.js +25 -0
- package/lib/utils/chatInputFiles.spec.js +39 -0
- package/lib/utils/contextMentionIcons.spec.js +41 -0
- package/lib/utils/contextMentionLabel.spec.js +13 -0
- package/lib/utils/contextMentionTriggers.spec.js +44 -0
- package/lib/utils/contextMentionTypeLabel.spec.js +14 -0
- package/lib/utils/corConnectorMentionTypes.spec.js +23 -0
- package/lib/utils/entityLinkRender.spec.js +72 -0
- package/lib/utils/fileDownloadHelper.spec.js +67 -0
- package/lib/utils/formatQuickActionMessage.spec.js +27 -0
- package/lib/utils/formatUnreadCount.spec.js +12 -0
- package/lib/utils/getUnitFileSize.spec.js +18 -0
- package/lib/utils/hitlAnalytics.spec.js +136 -0
- package/lib/utils/hoursPlannerQuickActionType.js +116 -1
- package/lib/utils/hoursPlannerQuickActionType.spec.js +124 -0
- package/lib/utils/imagePreprocessor.helpers.spec.js +28 -0
- package/lib/utils/imagePreprocessor.js +14 -3
- package/lib/utils/imagePreprocessor.spec.js +112 -0
- package/lib/utils/maiaPageRoute.spec.js +23 -0
- package/lib/utils/mapBackendLang.spec.js +19 -0
- package/lib/utils/navigateContextEntity.js +2 -2
- package/lib/utils/navigateContextEntity.spec.js +50 -0
- package/lib/utils/normalizeAgentConnectors.spec.js +98 -0
- package/lib/utils/openTaskInCorPanel.js +2 -2
- package/lib/utils/openTaskInCorPanel.spec.js +43 -0
- package/lib/utils/orchestratorSubagents.spec.js +32 -0
- package/lib/utils/reasoningMappers.spec.js +103 -0
- package/lib/utils/recentContextsHomeLimit.spec.js +32 -0
- package/lib/utils/renderContextMentions.helpers.spec.js +87 -0
- package/lib/utils/renderContextMentions.spec.js +268 -0
- package/lib/utils/retryCompletion.spec.js +181 -0
- package/lib/utils/skillContentSize.spec.js +13 -0
- package/lib/utils/slashCommandMarker.spec.js +43 -0
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +51 -0
- package/lib/utils/sseStreamContent.spec.js +31 -0
- package/lib/utils/streamActivityMessages.helpers.js +5 -4
- package/lib/utils/streamActivityMessages.helpers.spec.js +84 -0
- package/lib/utils/streamActivityMessages.js +32 -20
- package/lib/utils/streamActivityMessages.spec.js +336 -0
- package/lib/utils/validateTrimmedFields.spec.js +26 -0
- package/package.json +1 -1
- package/README.md +0 -2
|
@@ -13,7 +13,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
13
13
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
14
14
|
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
15
15
|
import { createPortal } from 'react-dom';
|
|
16
|
-
import {
|
|
16
|
+
import { Grow, Popper } from '@mui/material';
|
|
17
17
|
import { Check } from '@projectcor/icons/lib/components/Check';
|
|
18
18
|
import { Cross } from '@projectcor/icons/lib/components/Cross';
|
|
19
19
|
import { Bolt } from '@projectcor/icons/lib/components/Bolt';
|
|
@@ -21,6 +21,7 @@ import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
|
|
|
21
21
|
import { ActiveToolChipIconButton, ActiveToolChipLabel, ActiveToolChipRoot, PlusMenuDivider, PlusMenuInnerColumn, PlusMenuItemButton, PlusMenuItemLabel, PlusMenuPaper, PlusMenuToolsRow, PlusToggleButton, SkillsToggleButton, SCInputChipsRow, SCInputMetaIconButton, SCInputMetaIndicators, SCMIAttachment, SCMIAttachmentDeleteIcon, SCMIAttachmentFileIcon, SCMIAttachmentIcon, SCMIAttachmentName, StyledMAIAInputWrapper, StyledMAIASendButton, StyledMAIAMainToolbarGrid, SCInputEditorCell, SCInputToolbarRow, StyledMAIAPlusToolbarCell, StyledMAIASendToolbarCell, StyledMAIAStopButton, StyledMAIAStopIcon, StyledMAIADropOverlay } from './styles';
|
|
22
22
|
import { getMaiaInputEditorMaxHeight, MAIA_INPUT_TOOLBAR_ROW_HEIGHT_PX } from './maiaInputLayout';
|
|
23
23
|
import { useGlobalContext } from '../../../context/global-context';
|
|
24
|
+
import { MAIA_TASK_PANEL_OVERLAY_ATTR } from '../../../constants/maiaTaskPanelOutsideClick';
|
|
24
25
|
import { ModalFileExceeds } from '../../organisms/ModalFileExceeds';
|
|
25
26
|
import { SlashCommandDropdown } from '../SlashCommandDropdown';
|
|
26
27
|
import { SkillsDropdown } from '../SkillsDropdown';
|
|
@@ -62,6 +63,14 @@ var SLASH_DROPDOWN_MAX_HEIGHT_PX = 416;
|
|
|
62
63
|
var SKILLS_DROPDOWN_WIDTH_PX = 339;
|
|
63
64
|
var SLASH_DROPDOWN_GAP_PX = 4;
|
|
64
65
|
var SLASH_DROPDOWN_VIEWPORT_PAD_PX = 8;
|
|
66
|
+
/** Separacion entre el boton + y el menu. */
|
|
67
|
+
var PLUS_MENU_POPPER_MODIFIERS = [{
|
|
68
|
+
name: 'offset',
|
|
69
|
+
options: {
|
|
70
|
+
offset: [0, 4]
|
|
71
|
+
}
|
|
72
|
+
}];
|
|
73
|
+
var EMPTY_ATTACHMENTS = [];
|
|
65
74
|
export var MAIAInput = function MAIAInput(_ref) {
|
|
66
75
|
var _contextChip$items, _contextChip$items2, _contextChip$items3;
|
|
67
76
|
var onSendMessage = _ref.onSendMessage,
|
|
@@ -78,13 +87,15 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
78
87
|
onFileAttach = _ref.onFileAttach,
|
|
79
88
|
onDeleteAttachment = _ref.onDeleteAttachment,
|
|
80
89
|
_ref$attachments = _ref.attachments,
|
|
81
|
-
attachments = _ref$attachments === void 0 ?
|
|
90
|
+
attachments = _ref$attachments === void 0 ? EMPTY_ATTACHMENTS : _ref$attachments,
|
|
82
91
|
chatId = _ref.chatId,
|
|
83
92
|
newChatKey = _ref.newChatKey,
|
|
84
93
|
tooltipZIndex = _ref.tooltipZIndex,
|
|
85
94
|
externalPopoverAnchorRef = _ref.popoverAnchorRef,
|
|
86
95
|
layoutMode = _ref.layoutMode,
|
|
87
|
-
contextChip = _ref.contextChip
|
|
96
|
+
contextChip = _ref.contextChip,
|
|
97
|
+
_ref$orchestratorHome = _ref.orchestratorHomeComposer,
|
|
98
|
+
orchestratorHomeComposer = _ref$orchestratorHome === void 0 ? false : _ref$orchestratorHome;
|
|
88
99
|
var _useT = useT(),
|
|
89
100
|
t = _useT.t;
|
|
90
101
|
var editorRef = useRef(null);
|
|
@@ -135,11 +146,13 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
135
146
|
resetMentionOpenTracking = _useMentionPopover.resetMentionOpenTracking,
|
|
136
147
|
handleTrigger = _useMentionPopover.handleTrigger,
|
|
137
148
|
handlePopoverKeyDown = _useMentionPopover.handleKeyDown,
|
|
138
|
-
popoverNode = _useMentionPopover.popoverNode
|
|
149
|
+
popoverNode = _useMentionPopover.popoverNode,
|
|
150
|
+
closeMentionPopover = _useMentionPopover.close;
|
|
139
151
|
var _useState9 = useState(null),
|
|
140
152
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
141
153
|
plusMenuAnchor = _useState0[0],
|
|
142
154
|
setPlusMenuAnchor = _useState0[1];
|
|
155
|
+
var plusMenuPaperRef = useRef(null);
|
|
143
156
|
var _useState1 = useState(false),
|
|
144
157
|
_useState10 = _slicedToArray(_useState1, 2),
|
|
145
158
|
activeToolChipHovered = _useState10[0],
|
|
@@ -308,6 +321,21 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
308
321
|
setPlusMenuAnchor(null);
|
|
309
322
|
scheduleInputFocusAfterToolAction();
|
|
310
323
|
};
|
|
324
|
+
|
|
325
|
+
// Sin backdrop hay que cerrar a mano; no se devuelve el foco al input porque el click fue a otro lado.
|
|
326
|
+
useEffect(function () {
|
|
327
|
+
if (!plusMenuAnchor) return undefined;
|
|
328
|
+
var handlePointerDownOutside = function handlePointerDownOutside(event) {
|
|
329
|
+
var _plusMenuPaperRef$cur;
|
|
330
|
+
var target = event.target;
|
|
331
|
+
if (!target || plusMenuAnchor.contains(target) || (_plusMenuPaperRef$cur = plusMenuPaperRef.current) !== null && _plusMenuPaperRef$cur !== void 0 && _plusMenuPaperRef$cur.contains(target)) return;
|
|
332
|
+
setPlusMenuAnchor(null);
|
|
333
|
+
};
|
|
334
|
+
document.addEventListener('mousedown', handlePointerDownOutside);
|
|
335
|
+
return function () {
|
|
336
|
+
return document.removeEventListener('mousedown', handlePointerDownOutside);
|
|
337
|
+
};
|
|
338
|
+
}, [plusMenuAnchor]);
|
|
311
339
|
var cancelPendingToolChipExit = function cancelPendingToolChipExit() {
|
|
312
340
|
if (toolChipExitTimerRef.current !== null) {
|
|
313
341
|
clearTimeout(toolChipExitTimerRef.current);
|
|
@@ -315,6 +343,16 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
315
343
|
}
|
|
316
344
|
setToolChipExiting(false);
|
|
317
345
|
};
|
|
346
|
+
var handleCloseSlashDropdown = function handleCloseSlashDropdown() {
|
|
347
|
+
setShowSlashDropdown(false);
|
|
348
|
+
slashMenuWasOpenRef.current = false;
|
|
349
|
+
};
|
|
350
|
+
var handleCloseSkillsDropdown = useCallback(function () {
|
|
351
|
+
setShowSkillsDropdown(false);
|
|
352
|
+
setSkillsQuery('');
|
|
353
|
+
skillsMenuWasOpenRef.current = false;
|
|
354
|
+
skillsOpenSourceRef.current = 'hash';
|
|
355
|
+
}, []);
|
|
318
356
|
var handlePlusButtonMouseDown = function handlePlusButtonMouseDown(e) {
|
|
319
357
|
// Evita que el botón robe el foco del input al abrir el menú.
|
|
320
358
|
e.preventDefault();
|
|
@@ -325,6 +363,9 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
325
363
|
closePlusMenu();
|
|
326
364
|
return;
|
|
327
365
|
}
|
|
366
|
+
closeMentionPopover();
|
|
367
|
+
handleCloseSkillsDropdown();
|
|
368
|
+
handleCloseSlashDropdown();
|
|
328
369
|
setPlusMenuAnchor(e.currentTarget);
|
|
329
370
|
eventAmplitude(EVENTS.aiChatPlusOpen, _objectSpread({
|
|
330
371
|
agent_type: analyticsAgentType
|
|
@@ -484,8 +525,9 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
484
525
|
currentNewChatKey: newChatKey,
|
|
485
526
|
disabled: disabled
|
|
486
527
|
});
|
|
528
|
+
var timeoutId;
|
|
487
529
|
if (focusPlan.shouldFocus) {
|
|
488
|
-
setTimeout(function () {
|
|
530
|
+
timeoutId = setTimeout(function () {
|
|
489
531
|
var _editorRef$current7;
|
|
490
532
|
if (!disabled) (_editorRef$current7 = editorRef.current) === null || _editorRef$current7 === void 0 || _editorRef$current7.focus();
|
|
491
533
|
}, focusPlan.delayMs);
|
|
@@ -493,6 +535,9 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
493
535
|
previousAgentIdRef.current = agent === null || agent === void 0 ? void 0 : agent.id;
|
|
494
536
|
previousChatIdRef.current = chatId;
|
|
495
537
|
previousNewChatKeyRef.current = newChatKey;
|
|
538
|
+
return function () {
|
|
539
|
+
return clearTimeout(timeoutId);
|
|
540
|
+
};
|
|
496
541
|
}, [agent === null || agent === void 0 ? void 0 : agent.id, chatId, newChatKey, disabled]);
|
|
497
542
|
|
|
498
543
|
// Auto-focus cuando cambia la disposición del modal (sidebar / fullscreen / floating)
|
|
@@ -641,16 +686,6 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
641
686
|
setSlashQuery('');
|
|
642
687
|
slashMenuWasOpenRef.current = false;
|
|
643
688
|
}, [attachments, onSendMessage, resetMentionOpenTracking, slashQuery, eventAmplitude]);
|
|
644
|
-
var handleCloseSlashDropdown = function handleCloseSlashDropdown() {
|
|
645
|
-
setShowSlashDropdown(false);
|
|
646
|
-
slashMenuWasOpenRef.current = false;
|
|
647
|
-
};
|
|
648
|
-
var handleCloseSkillsDropdown = useCallback(function () {
|
|
649
|
-
setShowSkillsDropdown(false);
|
|
650
|
-
setSkillsQuery('');
|
|
651
|
-
skillsMenuWasOpenRef.current = false;
|
|
652
|
-
skillsOpenSourceRef.current = 'hash';
|
|
653
|
-
}, []);
|
|
654
689
|
|
|
655
690
|
/** Abre el listado desde el botón: inserta `#` en el editor para que el trigger quede activo. */
|
|
656
691
|
var handleSkillsButtonClick = function handleSkillsButtonClick(e) {
|
|
@@ -884,7 +919,7 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
884
919
|
var hasCorAccess = agentHasCorConnectorAccess(agent);
|
|
885
920
|
var agentModelName = getCustomAgentModelDisplayName(agent);
|
|
886
921
|
var showCustomMetaIndicators = shouldShowCustomAgentMetaIndicators(hasCorAccess, agentModelName);
|
|
887
|
-
var showMentionButton = shouldShowMentionToolbarButton(agent === null || agent === void 0 ? void 0 : agent.type, hasCorAccess);
|
|
922
|
+
var showMentionButton = shouldShowMentionToolbarButton(agent === null || agent === void 0 ? void 0 : agent.type, hasCorAccess) || Boolean(orchestratorHomeComposer && !agent);
|
|
888
923
|
var activeToolChipIconMode = resolveActiveToolChipIconMode(activeToolChipHovered, isWebSearchActive);
|
|
889
924
|
var activeToolChipLeadingIconByMode = {
|
|
890
925
|
close: /*#__PURE__*/_jsx(Cross, {
|
|
@@ -927,7 +962,7 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
927
962
|
leadingIcon: contextChip.leadingIcon,
|
|
928
963
|
tooltipZIndex: tooltipZIndex,
|
|
929
964
|
onEntityNavigate: contextChip.onEntityNavigate
|
|
930
|
-
}) : null, attachments.map(function (attachment
|
|
965
|
+
}) : null, attachments.map(function (attachment) {
|
|
931
966
|
var isImage = isImageAttachmentFile(attachment.type, attachment.name);
|
|
932
967
|
var chipIcon = isImage ? /*#__PURE__*/_jsx(MaiaInputAttachmentImageIcon, {
|
|
933
968
|
color: "#808080",
|
|
@@ -963,7 +998,7 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
963
998
|
children: attachment.name
|
|
964
999
|
})]
|
|
965
1000
|
})
|
|
966
|
-
},
|
|
1001
|
+
}, attachment.id);
|
|
967
1002
|
})]
|
|
968
1003
|
}), /*#__PURE__*/_jsxs(StyledMAIAMainToolbarGrid, {
|
|
969
1004
|
children: [/*#__PURE__*/_jsx(SCInputEditorCell, {
|
|
@@ -1019,90 +1054,79 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
1019
1054
|
height: 16,
|
|
1020
1055
|
color: toolbarIconColor
|
|
1021
1056
|
})
|
|
1022
|
-
}), /*#__PURE__*/_jsx(
|
|
1057
|
+
}), /*#__PURE__*/_jsx(Popper, _objectSpread(_objectSpread({
|
|
1023
1058
|
open: plusMenuOpen,
|
|
1024
1059
|
anchorEl: plusMenuAnchor,
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
disableRestoreFocus: true,
|
|
1029
|
-
anchorOrigin: {
|
|
1030
|
-
vertical: 'top',
|
|
1031
|
-
horizontal: 'left'
|
|
1032
|
-
},
|
|
1033
|
-
transformOrigin: {
|
|
1034
|
-
vertical: 'bottom',
|
|
1035
|
-
horizontal: 'left'
|
|
1036
|
-
},
|
|
1037
|
-
sx: {
|
|
1060
|
+
placement: "top-start",
|
|
1061
|
+
transition: true,
|
|
1062
|
+
style: {
|
|
1038
1063
|
zIndex: plusMenuZIndex
|
|
1039
1064
|
},
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
}), (isWebSearchActive || isDeepSearchActive) && /*#__PURE__*/_jsxs(ActiveToolChipRoot, {
|
|
1065
|
+
modifiers: PLUS_MENU_POPPER_MODIFIERS
|
|
1066
|
+
}, _defineProperty({}, MAIA_TASK_PANEL_OVERLAY_ATTR, '')), {}, {
|
|
1067
|
+
children: function children(_ref7) {
|
|
1068
|
+
var TransitionProps = _ref7.TransitionProps;
|
|
1069
|
+
return /*#__PURE__*/_jsx(Grow, _objectSpread(_objectSpread({}, TransitionProps), {}, {
|
|
1070
|
+
style: {
|
|
1071
|
+
transformOrigin: 'bottom left'
|
|
1072
|
+
},
|
|
1073
|
+
children: /*#__PURE__*/_jsx(PlusMenuPaper, {
|
|
1074
|
+
ref: plusMenuPaperRef,
|
|
1075
|
+
children: /*#__PURE__*/_jsxs(PlusMenuInnerColumn, {
|
|
1076
|
+
children: [/*#__PURE__*/_jsxs(PlusMenuItemButton, {
|
|
1077
|
+
type: "button",
|
|
1078
|
+
onClick: handlePlusMenuAttach,
|
|
1079
|
+
children: [/*#__PURE__*/_jsx(MaiaInputAttachIcon, {
|
|
1080
|
+
color: plusMenuIconColor,
|
|
1081
|
+
width: 21,
|
|
1082
|
+
height: 20
|
|
1083
|
+
}), /*#__PURE__*/_jsx(PlusMenuItemLabel, {
|
|
1084
|
+
children: t('chat.plusMenuAttach')
|
|
1085
|
+
})]
|
|
1086
|
+
}), /*#__PURE__*/_jsx(PlusMenuDivider, {}), /*#__PURE__*/_jsxs(PlusMenuItemButton, {
|
|
1087
|
+
type: "button",
|
|
1088
|
+
onClick: handlePlusMenuWebSearch,
|
|
1089
|
+
children: [/*#__PURE__*/_jsx(MaiaInputWebSearchIcon, {
|
|
1090
|
+
color: plusMenuIconColor,
|
|
1091
|
+
width: 20,
|
|
1092
|
+
height: 20
|
|
1093
|
+
}), /*#__PURE__*/_jsx(PlusMenuItemLabel, {
|
|
1094
|
+
children: t('chat.searchWeb')
|
|
1095
|
+
}), isWebSearchActive ? /*#__PURE__*/_jsx(Check, {
|
|
1096
|
+
color: plusMenuIconColor,
|
|
1097
|
+
width: 16,
|
|
1098
|
+
height: 16
|
|
1099
|
+
}) : null]
|
|
1100
|
+
}), /*#__PURE__*/_jsxs(PlusMenuItemButton, {
|
|
1101
|
+
type: "button",
|
|
1102
|
+
onClick: handlePlusMenuDeepSearch,
|
|
1103
|
+
children: [/*#__PURE__*/_jsx(MaiaInputDeepSearchIcon, {
|
|
1104
|
+
color: plusMenuIconColor,
|
|
1105
|
+
width: 20,
|
|
1106
|
+
height: 20
|
|
1107
|
+
}), /*#__PURE__*/_jsx(PlusMenuItemLabel, {
|
|
1108
|
+
children: t('chat.plusMenuDeepInvestigation')
|
|
1109
|
+
}), isDeepSearchActive ? /*#__PURE__*/_jsx(Check, {
|
|
1110
|
+
color: plusMenuIconColor,
|
|
1111
|
+
width: 16,
|
|
1112
|
+
height: 16
|
|
1113
|
+
}) : null]
|
|
1114
|
+
}), /*#__PURE__*/_jsx(PlusMenuDivider, {}), /*#__PURE__*/_jsxs(PlusMenuItemButton, {
|
|
1115
|
+
type: "button",
|
|
1116
|
+
onClick: handlePlusMenuQuickActions,
|
|
1117
|
+
children: [/*#__PURE__*/_jsx(MaiaInputSlashIcon, {
|
|
1118
|
+
color: plusMenuIconColor,
|
|
1119
|
+
width: 20,
|
|
1120
|
+
height: 20
|
|
1121
|
+
}), /*#__PURE__*/_jsx(PlusMenuItemLabel, {
|
|
1122
|
+
children: t('chat.plusMenuQuickActions')
|
|
1123
|
+
})]
|
|
1124
|
+
})]
|
|
1125
|
+
})
|
|
1126
|
+
})
|
|
1127
|
+
}));
|
|
1128
|
+
}
|
|
1129
|
+
})), (isWebSearchActive || isDeepSearchActive) && /*#__PURE__*/_jsxs(ActiveToolChipRoot, {
|
|
1106
1130
|
$hovered: activeToolChipHovered,
|
|
1107
1131
|
$exiting: toolChipExiting,
|
|
1108
1132
|
onMouseEnter: function onMouseEnter() {
|
|
@@ -1274,4 +1298,4 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
1274
1298
|
}), document.body)]
|
|
1275
1299
|
});
|
|
1276
1300
|
};
|
|
1277
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiQm9sdCIsIlRvb2x0aXAiLCJBY3RpdmVUb29sQ2hpcEljb25CdXR0b24iLCJBY3RpdmVUb29sQ2hpcExhYmVsIiwiQWN0aXZlVG9vbENoaXBSb290IiwiUGx1c01lbnVEaXZpZGVyIiwiUGx1c01lbnVJbm5lckNvbHVtbiIsIlBsdXNNZW51SXRlbUJ1dHRvbiIsIlBsdXNNZW51SXRlbUxhYmVsIiwiUGx1c01lbnVQYXBlciIsIlBsdXNNZW51VG9vbHNSb3ciLCJQbHVzVG9nZ2xlQnV0dG9uIiwiU2tpbGxzVG9nZ2xlQnV0dG9uIiwiU0NJbnB1dENoaXBzUm93IiwiU0NJbnB1dE1ldGFJY29uQnV0dG9uIiwiU0NJbnB1dE1ldGFJbmRpY2F0b3JzIiwiU0NNSUF0dGFjaG1lbnQiLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJTQ01JQXR0YWNobWVudEZpbGVJY29uIiwiU0NNSUF0dGFjaG1lbnRJY29uIiwiU0NNSUF0dGFjaG1lbnROYW1lIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCIsIlNDSW5wdXRFZGl0b3JDZWxsIiwiU0NJbnB1dFRvb2xiYXJSb3ciLCJTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCIsIlN0eWxlZE1BSUFTdG9wQnV0dG9uIiwiU3R5bGVkTUFJQVN0b3BJY29uIiwiU3R5bGVkTUFJQURyb3BPdmVybGF5IiwiZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0IiwiTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgiLCJ1c2VHbG9iYWxDb250ZXh0IiwiTW9kYWxGaWxlRXhjZWVkcyIsIlNsYXNoQ29tbWFuZERyb3Bkb3duIiwiU2tpbGxzRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwidXNlU2tpbGxzQ2F0YWxvZyIsImNhbkFjY2Vzc1RvU2tpbGxzIiwidXNlVXNlciIsInJlc29sdmVRdWlja0FjdGlvblR5cGUiLCJ1c2VUIiwiTWFpYUlucHV0QWRkSWNvbiIsIk1haWFJbnB1dEF0dGFjaEljb24iLCJNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIiwiTWFpYUlucHV0RGVlcFNlYXJjaEljb24iLCJDb3JBY2Nlc3NJY29uIiwiTWFpYUlucHV0TWVudGlvbkljb24iLCJNYWlhSW5wdXRSb2JvdEljb24iLCJNYWlhSW5wdXRTZW5kSWNvbiIsIk1haWFJbnB1dFNsYXNoSWNvbiIsIlNraWxsSWNvbiIsIk1haWFJbnB1dFdlYlNlYXJjaEljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldENoYXRUb29sc01lbnVBZ2VudFR5cGUiLCJNQUlBX0NIQVRfSU5QVVRfVUkiLCJhbGxvd2VkRmlsZVR5cGVzIiwiZmlsZVR5cGVzIiwiZ2V0TWF4QXR0YWNobWVudFNpemVNYiIsIk1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTIiwiQVBQQ1VFU19FVkVOVFMiLCJ0cmFja0FwcGN1ZXNFdmVudCIsIkNoaXAiLCJDb250ZXh0TWVudGlvbkVkaXRvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VNZW50aW9uUG9wb3ZlciIsInVzZUNhcmV0UG9zaXRpb24iLCJkYXRhVHJhbnNmZXJIYXNGaWxlcyIsImZpbGVzRnJvbURhdGFUcmFuc2ZlciIsImlzSW1hZ2VBdHRhY2htZW50RmlsZSIsInByb2Nlc3NJbmNvbWluZ0NoYXRJbnB1dEZpbGVzIiwic2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXkiLCJzaG91bGRIYW5kbGVEcmFnTGVhdmVFdmVudCIsInNob3VsZEludGVyY2VwdFdyYXBwZXJQYXN0ZSIsInNob3VsZE9wZW5BdHRhY2htZW50VmFsaWRhdGlvbk1vZGFsIiwiZGVjcmVtZW50RmlsZURyYWdDb3VudGVyIiwiYWdlbnRIYXNDb3JDb25uZWN0b3JBY2Nlc3MiLCJjYW5BdHRhY2hNb3JlQ2hhdElucHV0RmlsZXMiLCJjYW5DcmVhdGVTa2lsbHNGcm9tSW5wdXQiLCJnZXRBbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQiLCJnZXRDdXN0b21BZ2VudE1vZGVsRGlzcGxheU5hbWUiLCJnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzIiwiZ2V0U2tpbGxNZW50aW9uSWRzIiwiaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UiLCJpc1NlbmREaXNhYmxlZCIsImlzU3BlY2lhbGlzdENsb25lQWdlbnRGb3JBcHBjdWVzIiwicmVzb2x2ZURlZXBTZWFyY2hQbHVzTWVudUFjdGlvbiIsInJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uIiwicmVzb2x2ZVNlc3Npb25BdXRvRm9jdXNQbGFuIiwicmVzb2x2ZVNsYXNoQ29tbWFuZEluc2VydENvbnRleHQiLCJyZXNvbHZlU2xhc2hDb21tYW5kc0FnZW50SWQiLCJyZXNvbHZlVG9vbENoaXBFeGl0VG9nZ2xlIiwicmVzb2x2ZVdlYlNlYXJjaFBsdXNNZW51QWN0aW9uIiwic2hvdWxkQXBwbHlJbml0aWFsRHJhZnQiLCJzaG91bGRBdXRvRm9jdXNPbkxheW91dE1vZGVDaGFuZ2UiLCJzaG91bGRPcGVuU2tpbGxzSGFzaERyb3Bkb3duIiwic2hvdWxkT3BlblNsYXNoRHJvcGRvd24iLCJzaG91bGRTaG93Q3VzdG9tQWdlbnRNZXRhSW5kaWNhdG9ycyIsInNob3VsZFNob3dJbnB1dENoaXBzUm93Iiwic2hvdWxkU2hvd01lbnRpb25Ub29sYmFyQnV0dG9uIiwic2hvdWxkU3RhcnRUb29sQ2hpcEV4aXQiLCJzaG91bGRTdWJtaXRPbkVudGVyIiwiY2FuU3VibWl0Q2hhdE1lc3NhZ2UiLCJyZXNvbHZlQWN0aXZlVG9vbENoaXBJY29uTW9kZSIsInJlc29sdmVBY3RpdmVUb29sQ2hpcFNlYXJjaExhYmVsIiwicmVzb2x2ZU1haWFJbnB1dFN0cmVhbWluZ0RhdGFBdHRyIiwicmVzb2x2ZU1lYXN1cmVkTGF5b3V0Um93SGVpZ2h0Iiwic2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJUT09MX0NISVBfRVhJVF9NUyIsIlNMQVNIX0RST1BET1dOX1dJRFRIX1BYIiwiU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCIsIlNLSUxMU19EUk9QRE9XTl9XSURUSF9QWCIsIlNMQVNIX0RST1BET1dOX0dBUF9QWCIsIlNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCIsIk1BSUFJbnB1dCIsIl9yZWYiLCJfY29udGV4dENoaXAkaXRlbXMiLCJfY29udGV4dENoaXAkaXRlbXMyIiwiX2NvbnRleHRDaGlwJGl0ZW1zMyIsIm9uU2VuZE1lc3NhZ2UiLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsImlzU3RyZWFtaW5nIiwiaXNXcml0aW5nIiwib25TdG9wR2VuZXJhdGlvbiIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJvbkZvY3VzIiwiX3JlZiRhbGlnbkJ1dHRvbnMiLCJhbGlnbkJ1dHRvbnMiLCJvbkZpbGVBdHRhY2giLCJvbkRlbGV0ZUF0dGFjaG1lbnQiLCJfcmVmJGF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJjaGF0SWQiLCJuZXdDaGF0S2V5IiwidG9vbHRpcFpJbmRleCIsImV4dGVybmFsUG9wb3ZlckFuY2hvclJlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJsYXlvdXRNb2RlIiwiY29udGV4dENoaXAiLCJfdXNlVCIsInQiLCJlZGl0b3JSZWYiLCJmaWxlSW5wdXRSZWYiLCJjaGlwc1Jvd1JlZiIsInRvb2xiYXJSb3dSZWYiLCJpbnRlcm5hbFdyYXBwZXJSZWYiLCJ3cmFwcGVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaGFzVHlwaW5nUHJlc2VuY2UiLCJzZXRIYXNUeXBpbmdQcmVzZW5jZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2hpcHNSb3dIZWlnaHQiLCJzZXRDaGlwc1Jvd0hlaWdodCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidG9vbGJhclJvd0hlaWdodCIsInNldFRvb2xiYXJSb3dIZWlnaHQiLCJfdXNlU3RhdGU3IiwiaXNPcGVuIiwiZXhjbHVkZWRGaWxlcyIsImV4Y2VlZGVkRmlsZXMiLCJmaWxlU2l6ZXMiLCJfdXNlU3RhdGU4IiwibW9kYWxQcm9wcyIsInNldE1vZGFsUHJvcHMiLCJldmVudEFtcGxpdHVkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJ0b2dnbGVEZWVwU2VhcmNoIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiaXNBdXRvQXBwcm92ZUFjdGl2ZSIsInRvZ2dsZUF1dG9BcHByb3ZlIiwiYWdlbnQiLCJpbml0aWFsRHJhZnQiLCJkZWVwTGlua1NlbmRQZW5kaW5nUmVmIiwicGx1c01lbnVaSW5kZXgiLCJpbml0aWFsRHJhZnRBcHBsaWVkUmVmIiwiX3VzZU1lbnRpb25Qb3BvdmVyIiwicG9wb3Zlck9wZW4iLCJyZXNldE1lbnRpb25PcGVuVHJhY2tpbmciLCJoYW5kbGVUcmlnZ2VyIiwiaGFuZGxlUG9wb3ZlcktleURvd24iLCJoYW5kbGVLZXlEb3duIiwicG9wb3Zlck5vZGUiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInBsdXNNZW51QW5jaG9yIiwic2V0UGx1c01lbnVBbmNob3IiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJhY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwidG9vbENoaXBFeGl0aW5nIiwic2V0VG9vbENoaXBFeGl0aW5nIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQiLCJzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImlzRmlsZURyYWdBY3RpdmUiLCJzZXRJc0ZpbGVEcmFnQWN0aXZlIiwidG9vbENoaXBFeGl0VGltZXJSZWYiLCJmaWxlRHJhZ0NvdW50ZXJSZWYiLCJzZWFyY2hNb2RlQWN0aXZlUmVmIiwid2ViIiwiZGVlcCIsInBsdXNNZW51T3BlbiIsIkJvb2xlYW4iLCJwcmV2aW91c0FnZW50SWRSZWYiLCJ1bmRlZmluZWQiLCJwcmV2aW91c0NoYXRJZFJlZiIsInByZXZpb3VzTmV3Q2hhdEtleVJlZiIsInByZXZpb3VzTGF5b3V0TW9kZVJlZiIsImFuYWx5dGljc0FnZW50VHlwZSIsImFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCIsIl91c2VTbGFzaENvbW1hbmRzIiwic2xhc2hDb21tYW5kcyIsImNvbW1hbmRzIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInNob3dTbGFzaERyb3Bkb3duIiwic2V0U2hvd1NsYXNoRHJvcGRvd24iLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwic2xhc2hRdWVyeSIsInNldFNsYXNoUXVlcnkiLCJzbGFzaE1lbnVXYXNPcGVuUmVmIiwic2xhc2hEcm9wZG93blpJbmRleCIsImdldENhcmV0UmVjdCIsIl91c2VTdGF0ZTIxIiwiYm90dG9tIiwibGVmdCIsIm1heEhlaWdodCIsIl91c2VTdGF0ZTIyIiwic2xhc2hEcm9wZG93blBvcyIsInNldFNsYXNoRHJvcGRvd25Qb3MiLCJ1c2VyIiwic2hvd1NraWxsc0J1dHRvbiIsInNraWxsc0J1dHRvblJlZiIsInNraWxsc01lbnVXYXNPcGVuUmVmIiwic2tpbGxzT3BlblNvdXJjZVJlZiIsInByZXZTa2lsbE1lbnRpb25JZHNSZWYiLCJza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZiIsIl91c2VTa2lsbHNDYXRhbG9nIiwic2tpbGxzIiwic2tpbGxzTG9hZGluZyIsImxvYWRpbmciLCJza2lsbHNFcnJvciIsImVycm9yIiwiZmV0Y2hTa2lsbHMiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0Iiwic2hvd1NraWxsc0Ryb3Bkb3duIiwic2V0U2hvd1NraWxsc0Ryb3Bkb3duIiwiX3VzZVN0YXRlMjUiLCJfdXNlU3RhdGUyNiIsInNraWxsc1F1ZXJ5Iiwic2V0U2tpbGxzUXVlcnkiLCJfdXNlU3RhdGUyNyIsIl91c2VTdGF0ZTI4Iiwic2tpbGxzRHJvcGRvd25Qb3MiLCJzZXRTa2lsbHNEcm9wZG93blBvcyIsInBvc2l0aW9uU2xhc2hEcm9wZG93biIsIl93cmFwcGVyUmVmJGN1cnJlbnQiLCJfd3JhcHBlclJlY3Qkd2lkdGgiLCJ3cmFwcGVyUmVjdCIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjYXJldCIsIm5leHRQb3MiLCJjYXJldFRvcCIsInRvcCIsImNhcmV0TGVmdCIsIndyYXBwZXJUb3AiLCJ3cmFwcGVyTGVmdCIsIndyYXBwZXJXaWR0aCIsIndpZHRoIiwidmlld3BvcnRIZWlnaHQiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsInZpZXdwb3J0V2lkdGgiLCJpbm5lcldpZHRoIiwiZHJvcGRvd25XaWR0aFB4IiwibWF4RHJvcGRvd25IZWlnaHRQeCIsImdhcFB4Iiwidmlld3BvcnRQYWRQeCIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInBvc2l0aW9uU2tpbGxzRHJvcGRvd24iLCJfd3JhcHBlclJlZiRjdXJyZW50MiIsIl93cmFwcGVyUmVjdCR3aWR0aDIiLCJzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUaW1lb3V0IiwiX2VkaXRvclJlZiRjdXJyZW50IiwiZm9jdXMiLCJjbG9zZVBsdXNNZW51IiwiY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCIsImNsZWFyVGltZW91dCIsImhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24iLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVQbHVzQnV0dG9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50VGFyZ2V0IiwiYWlDaGF0UGx1c09wZW4iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImhhbmRsZU1lbnRpb25CdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJpbnNlcnRNZW50aW9uVHJpZ2dlciIsImhhbmRsZVBsdXNNZW51QXR0YWNoIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiYWlDaGF0VG9vbHMiLCJvcHRpb24iLCJsZW5ndGgiLCJjbGljayIsImJlZ2luVG9vbENoaXBFeGl0Iiwid2FzV2ViIiwid2FzRGVlcCIsInRvZ2dsZVRhcmdldCIsImhhbmRsZVBsdXNNZW51V2ViU2VhcmNoIiwiYWN0aW9uIiwia2luZCIsInR1cm5PZmZEZWVwIiwiaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoIiwidHVybk9mZldlYiIsImhhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsImluc2VydFNsYXNoVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ1IiwiZHJhZnQiLCJ0cmltIiwic2V0UGxhaW5UZXh0IiwiX2VkaXRvclJlZiRjdXJyZW50NiIsInNlbmREaXNhYmxlZCIsImZvY3VzUGxhbiIsInByZXZpb3VzQWdlbnRJZCIsImN1cnJlbnRBZ2VudElkIiwiaWQiLCJwcmV2aW91c0NoYXRJZCIsImN1cnJlbnRDaGF0SWQiLCJwcmV2aW91c05ld0NoYXRLZXkiLCJjdXJyZW50TmV3Q2hhdEtleSIsInNob3VsZEZvY3VzIiwiX2VkaXRvclJlZiRjdXJyZW50NyIsImRlbGF5TXMiLCJwcmV2aW91c0xheW91dE1vZGUiLCJ0aW1lb3V0SWQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ4Iiwib2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsIl9yZWYyIiwiX3JlZjMiLCJlbnRyeSIsImlzSW50ZXJzZWN0aW5nIiwibWFpYUNvbnRleHRNZW50aW9uSW5pdCIsImRpc2Nvbm5lY3QiLCJ0aHJlc2hvbGQiLCJvYnNlcnZlIiwidHlwZSIsImVudGl0eSIsImhhbmRsZVNlc3Npb25DaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQ5IiwiY2xlYXIiLCJkb2N1bWVudCIsImhhbmRsZVJlZm9jdXMiLCJfZWRpdG9yUmVmJGN1cnJlbnQwIiwiaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uIiwiZXZlbnQiLCJfZWRpdG9yUmVmJGN1cnJlbnQxIiwiX2VkaXRvclJlZiRjdXJyZW50MTAiLCJfcmVmNCIsImRldGFpbCIsInNraWxsIiwibm9ybWFsaXplZE5hbWUiLCJuYW1lIiwicmVwbGFjZSIsImFwcGVuZE1lbnRpb25BdEVuZCIsImxhYmVsIiwiY29uY2F0IiwiX2VkaXRvclJlZiRjdXJyZW50MTEiLCJoYW5kbGVTZW5kTWVzc2FnZSIsIl9lZGl0b3JSZWYkY3VycmVudDEyIiwiX3N0YXRlJHRleHQiLCJfc3RhdGUkbWVudGlvbnMiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMyIsInN0YXRlIiwic2VyaWFsaXplIiwidGV4dCIsIm1lbnRpb25zIiwiaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kIiwiY29tbWFuZCIsIl9lZGl0b3JSZWYkY3VycmVudDE0IiwiX3N0YXRlJHRleHQyIiwiX2VkaXRvclJlZiRjdXJyZW50MTYiLCJhaUNoYXRRdWlja0FjdGlvblNlbGVjdCIsInR5cGVfcXVpY2tfYWN0aW9uIiwib3JpZ2luX3F1aWNrX2FjdGlvbiIsIl9yZXNvbHZlU2xhc2hDb21tYW5kSSIsImlzRW1wdHlCZWZvcmVUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50MTUiLCJ0aXRsZSIsImluc2VydFNsYXNoQ29tbWFuZCIsImhhbmRsZUNsb3NlU2xhc2hEcm9wZG93biIsImhhbmRsZUNsb3NlU2tpbGxzRHJvcGRvd24iLCJoYW5kbGVTa2lsbHNCdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDE3IiwiaW5zZXJ0U2tpbGxUcmlnZ2VyIiwiaGFuZGxlU2VsZWN0U2tpbGwiLCJfZWRpdG9yUmVmJGN1cnJlbnQxOCIsImFpQ2hhdFNraWxsU2VsZWN0Iiwic2tpbGxfaWQiLCJzb3VyY2UiLCJpbnNlcnRTa2lsbE1lbnRpb24iLCJoYW5kbGVDcmVhdGVTa2lsbCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsInNraWxsVmFsdWVzIiwidmFsdWVzIiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiYW5hbHl0aWNzU291cmNlIiwiaGFuZGxlRWRpdG9ySW5wdXQiLCJfcmVmNSIsInRyaWdnZXIiLCJzbGFzaFRyaWdnZXIiLCJoYXNoVHJpZ2dlciIsImN1cnJlbnRTa2lsbElkcyIsImZvckVhY2giLCJza2lsbElkIiwiYWlDaGF0U2tpbGxSZW1vdmUiLCJfc2xhc2hUcmlnZ2VyJHF1ZXJ5IiwiYWlDaGF0UXVpY2tBY3Rpb25PcGVuIiwicXVlcnkiLCJfaGFzaFRyaWdnZXIkcXVlcnkiLCJhaUNoYXRTa2lsbE9wZW4iLCJrZXkiLCJzaGlmdEtleSIsImFkZEZpbGVzIiwiaW5jb21pbmciLCJfcHJvY2Vzc0luY29taW5nQ2hhdEkiLCJhbGxvd2VkRXh0ZW5zaW9ucyIsImN1cnJlbnRBdHRhY2htZW50Q291bnQiLCJtYXhBdHRhY2htZW50cyIsImdldE1heFNpemVNYiIsImZpbGVzVG9BdHRhY2giLCJmaWxlIiwiaGFuZGxlRmlsZVNlbGVjdCIsImZpbGVzIiwidGFyZ2V0IiwiQXJyYXkiLCJmcm9tIiwidmFsdWUiLCJyZXNldEZpbGVEcmFnIiwiaGFuZGxlRHJhZ0VudGVyIiwiZGF0YVRyYW5zZmVyIiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlRHJhZ092ZXIiLCJkcm9wRWZmZWN0IiwiaGFuZGxlRHJvcCIsImhhbmRsZVBhc3RlRmlsZXMiLCJoYW5kbGVXcmFwcGVyUGFzdGUiLCJfd3JhcHBlclJlZiRjdXJyZW50MyIsImVkaXRvckVsIiwicXVlcnlTZWxlY3RvciIsImNsaXBib2FyZERhdGEiLCJjb250YWlucyIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImFpQ2hhdFN0b3BSZXNwb25zZSIsInNob3dDaGlwc1JvdyIsIml0ZW1zIiwiY2hpcHNFbCIsInRvb2xiYXJFbCIsInVwZGF0ZUhlaWdodHMiLCJuZXh0Q2hpcHMiLCJNYXRoIiwiY2VpbCIsImhlaWdodCIsIm5leHRUb29sYmFyIiwicHJldiIsIlJlc2l6ZU9ic2VydmVyIiwiZWRpdG9yTWF4SGVpZ2h0IiwiY2hpcHNSb3dIZWlnaHRQeCIsInRvb2xiYXJSb3dIZWlnaHRQeCIsInRvb2xiYXJJY29uQ29sb3IiLCJwbHVzTWVudUljb25Db2xvciIsIm1lbnVJY29uIiwiaGFzQ29yQWNjZXNzIiwiYWdlbnRNb2RlbE5hbWUiLCJzaG93Q3VzdG9tTWV0YUluZGljYXRvcnMiLCJzaG93TWVudGlvbkJ1dHRvbiIsImFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUiLCJhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uQnlNb2RlIiwiY2xvc2UiLCJjb2xvciIsImNoaXBDbG9zZUljb24iLCJhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uIiwiY2hpbGRyZW4iLCJyZWYiLCJoYXNBdHRhY2htZW50cyIsIiRmaWxlRHJhZ0FjdGl2ZSIsIm9uUGFzdGUiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsImVudGl0eUlkIiwibGVhZGluZ0ljb24iLCJvbkVudGl0eU5hdmlnYXRlIiwibWFwIiwiYXR0YWNobWVudCIsImluZGV4IiwiaXNJbWFnZSIsImNoaXBJY29uIiwiekluZGV4IiwiZGVmYXVsdFZhbHVlIiwib25DbGljayIsIm9uSW5wdXQiLCJvbktleURvd24iLCJvblBhc3RlRmlsZXMiLCIkbWVudU9wZW4iLCJvbk1vdXNlRG93biIsIm9wZW4iLCJhbmNob3JFbCIsIm9uQ2xvc2UiLCJkaXNhYmxlQXV0b0ZvY3VzIiwiZGlzYWJsZUVuZm9yY2VGb2N1cyIsImRpc2FibGVSZXN0b3JlRm9jdXMiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJzeCIsInNsb3RQcm9wcyIsInBhcGVyIiwiZWxldmF0aW9uIiwib3ZlcmZsb3ciLCJib3JkZXJSYWRpdXMiLCJib3hTaGFkb3ciLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5Ub3AiLCIkaG92ZXJlZCIsIiRleGl0aW5nIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiJGNsb3NlU2hvd24iLCJ3ZWJTZWFyY2hMYWJlbCIsImRlZXBTZWFyY2hMYWJlbCIsIm1vZGVsIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImhhc1ZhbHVlcyIsIm11bHRpcGxlIiwiYWNjZXB0IiwiYm9keSIsIm9uU2VsZWN0IiwiYW5jaG9yUmVmIiwiY2FuQ3JlYXRlIiwiY29tcGFueV9pZCIsIm9uQ3JlYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12b2lkICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWxvbmVseS1pZiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRXZlbnQsXG4gIENsaXBib2FyZEV2ZW50LFxuICBEcmFnRXZlbnQsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgTXV0YWJsZVJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IFBvcG92ZXIgfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGVjaydcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBCb2x0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQm9sdCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHtcbiAgQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uLFxuICBBY3RpdmVUb29sQ2hpcExhYmVsLFxuICBBY3RpdmVUb29sQ2hpcFJvb3QsXG4gIFBsdXNNZW51RGl2aWRlcixcbiAgUGx1c01lbnVJbm5lckNvbHVtbixcbiAgUGx1c01lbnVJdGVtQnV0dG9uLFxuICBQbHVzTWVudUl0ZW1MYWJlbCxcbiAgUGx1c01lbnVQYXBlcixcbiAgUGx1c01lbnVUb29sc1JvdyxcbiAgUGx1c1RvZ2dsZUJ1dHRvbixcbiAgU2tpbGxzVG9nZ2xlQnV0dG9uLFxuICBTQ0lucHV0Q2hpcHNSb3csXG4gIFNDSW5wdXRNZXRhSWNvbkJ1dHRvbixcbiAgU0NJbnB1dE1ldGFJbmRpY2F0b3JzLFxuICBTQ01JQXR0YWNobWVudCxcbiAgU0NNSUF0dGFjaG1lbnREZWxldGVJY29uLFxuICBTQ01JQXR0YWNobWVudEZpbGVJY29uLFxuICBTQ01JQXR0YWNobWVudEljb24sXG4gIFNDTUlBdHRhY2htZW50TmFtZSxcbiAgU3R5bGVkTUFJQUlucHV0V3JhcHBlcixcbiAgU3R5bGVkTUFJQVNlbmRCdXR0b24sXG4gIFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQsXG4gIFNDSW5wdXRFZGl0b3JDZWxsLFxuICBTQ0lucHV0VG9vbGJhclJvdyxcbiAgU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVN0b3BCdXR0b24sXG4gIFN0eWxlZE1BSUFTdG9wSWNvbixcbiAgU3R5bGVkTUFJQURyb3BPdmVybGF5LFxufSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCwgTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFggfSBmcm9tICcuL21haWFJbnB1dExheW91dCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgTW9kYWxGaWxlRXhjZWVkcyB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9Nb2RhbEZpbGVFeGNlZWRzJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kRHJvcGRvd24gfSBmcm9tICcuLi9TbGFzaENvbW1hbmREcm9wZG93bidcbmltcG9ydCB7IFNraWxsc0Ryb3Bkb3duIH0gZnJvbSAnLi4vU2tpbGxzRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTbGFzaENvbW1hbmRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU2xhc2hDb21tYW5kcydcbmltcG9ydCB7IHVzZVNraWxsc0NhdGFsb2cgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTa2lsbHNDYXRhbG9nJ1xuaW1wb3J0IHsgY2FuQWNjZXNzVG9Ta2lsbHMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB0eXBlIHsgU2tpbGwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IHJlc29sdmVRdWlja0FjdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ob3Vyc1BsYW5uZXJRdWlja0FjdGlvblR5cGUnXG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0FjdGlvbidcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgTWFpYUlucHV0QWRkSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEFkZEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRBdHRhY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QXR0YWNoSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0RGVlcFNlYXJjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXREZWVwU2VhcmNoSWNvbidcbmltcG9ydCB7IENvckFjY2Vzc0ljb24gfSBmcm9tICcuLi9pY29ucy9Db3JBY2Nlc3NJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0TWVudGlvbkljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRNZW50aW9uSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFJvYm90SWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFJvYm90SWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFNlbmRJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0U2VuZEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRTbGFzaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRTbGFzaEljb24nXG5pbXBvcnQgeyBTa2lsbEljb24gfSBmcm9tICcuLi9pY29ucy9Ta2lsbEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRXZWJTZWFyY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0V2ViU2VhcmNoSWNvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IGdldENoYXRUb29sc01lbnVBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHsgTUFJQV9DSEFUX0lOUFVUX1VJIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7XG4gIGFsbG93ZWRGaWxlVHlwZXMsXG4gIGZpbGVUeXBlcyxcbiAgZ2V0TWF4QXR0YWNobWVudFNpemVNYixcbiAgTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMsXG59IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9mb3JtYXRFeHRlbnNpb25zJ1xuaW1wb3J0IHsgQVBQQ1VFU19FVkVOVFMsIHRyYWNrQXBwY3Vlc0V2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwY3VlcydcbmltcG9ydCB7IENoaXAgfSBmcm9tICcuLi9DaGlwJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25FZGl0b3IsIENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlIH0gZnJvbSAnLi4vQ29udGV4dE1lbnRpb25FZGl0b3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IHVzZU1lbnRpb25Qb3BvdmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWVudGlvblBvcG92ZXInXG5pbXBvcnQgeyB1c2VDYXJldFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2FyZXRQb3NpdGlvbidcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZGF0YVRyYW5zZmVySGFzRmlsZXMsIGZpbGVzRnJvbURhdGFUcmFuc2ZlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NoYXRJbnB1dEZpbGVzJ1xuaW1wb3J0IHtcbiAgaXNJbWFnZUF0dGFjaG1lbnRGaWxlLFxuICBwcm9jZXNzSW5jb21pbmdDaGF0SW5wdXRGaWxlcyxcbiAgc2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXksXG4gIHNob3VsZEhhbmRsZURyYWdMZWF2ZUV2ZW50LFxuICBzaG91bGRJbnRlcmNlcHRXcmFwcGVyUGFzdGUsXG4gIHNob3VsZE9wZW5BdHRhY2htZW50VmFsaWRhdGlvbk1vZGFsLFxuICBkZWNyZW1lbnRGaWxlRHJhZ0NvdW50ZXIsXG59IGZyb20gJy4vTUFJQUlucHV0LmF0dGFjaG1lbnRzLmhlbHBlcnMnXG5pbXBvcnQge1xuICBhZ2VudEhhc0NvckNvbm5lY3RvckFjY2VzcyxcbiAgY2FuQXR0YWNoTW9yZUNoYXRJbnB1dEZpbGVzLFxuICBjYW5DcmVhdGVTa2lsbHNGcm9tSW5wdXQsXG4gIGdldEFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgZ2V0Q3VzdG9tQWdlbnRNb2RlbERpc3BsYXlOYW1lLFxuICBnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzLFxuICBnZXRTa2lsbE1lbnRpb25JZHMsXG4gIGhhc0VkaXRvclR5cGluZ1ByZXNlbmNlLFxuICBpc1NlbmREaXNhYmxlZCxcbiAgaXNTcGVjaWFsaXN0Q2xvbmVBZ2VudEZvckFwcGN1ZXMsXG4gIHJlc29sdmVEZWVwU2VhcmNoUGx1c01lbnVBY3Rpb24sXG4gIHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uLFxuICByZXNvbHZlU2Vzc2lvbkF1dG9Gb2N1c1BsYW4sXG4gIHJlc29sdmVTbGFzaENvbW1hbmRJbnNlcnRDb250ZXh0LFxuICByZXNvbHZlU2xhc2hDb21tYW5kc0FnZW50SWQsXG4gIHJlc29sdmVUb29sQ2hpcEV4aXRUb2dnbGUsXG4gIHJlc29sdmVXZWJTZWFyY2hQbHVzTWVudUFjdGlvbixcbiAgc2hvdWxkQXBwbHlJbml0aWFsRHJhZnQsXG4gIHNob3VsZEF1dG9Gb2N1c09uTGF5b3V0TW9kZUNoYW5nZSxcbiAgc2hvdWxkT3BlblNraWxsc0hhc2hEcm9wZG93bixcbiAgc2hvdWxkT3BlblNsYXNoRHJvcGRvd24sXG4gIHNob3VsZFNob3dDdXN0b21BZ2VudE1ldGFJbmRpY2F0b3JzLFxuICBzaG91bGRTaG93SW5wdXRDaGlwc1JvdyxcbiAgc2hvdWxkU2hvd01lbnRpb25Ub29sYmFyQnV0dG9uLFxuICBzaG91bGRTdGFydFRvb2xDaGlwRXhpdCxcbiAgc2hvdWxkU3VibWl0T25FbnRlcixcbiAgY2FuU3VibWl0Q2hhdE1lc3NhZ2UsXG4gIHR5cGUgQWN0aXZlVG9vbENoaXBJY29uTW9kZSxcbiAgcmVzb2x2ZUFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUsXG4gIHJlc29sdmVBY3RpdmVUb29sQ2hpcFNlYXJjaExhYmVsLFxuICByZXNvbHZlTWFpYUlucHV0U3RyZWFtaW5nRGF0YUF0dHIsXG4gIHJlc29sdmVNZWFzdXJlZExheW91dFJvd0hlaWdodCxcbiAgc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQsXG59IGZyb20gJy4vTUFJQUlucHV0LmhlbHBlcnMnXG5cbmNvbnN0IFRPT0xfQ0hJUF9FWElUX01TID0gMjIwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCA9IDM0MFxuY29uc3QgU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCA9IDQxNlxuY29uc3QgU0tJTExTX0RST1BET1dOX1dJRFRIX1BYID0gMzM5XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9HQVBfUFggPSA0XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFggPSA4XG5cbnR5cGUgQXR0YWNobWVudEZpbGUgPSB7XG4gIGZpbGU6IEZpbGVcbiAgb3JpZ2luYWxGaWxlPzogRmlsZVxuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbn1cblxudHlwZSBNQUlBSW5wdXRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzV3JpdGluZz86IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgb25DaGFuZ2U/OiAoKSA9PiB2b2lkXG4gIG9uRm9jdXM/OiAoKSA9PiB2b2lkXG4gIGFsaWduQnV0dG9ucz86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcbiAgb25GaWxlQXR0YWNoPzogKGZpbGU6IEZpbGUpID0+IHZvaWRcbiAgb25EZWxldGVBdHRhY2htZW50PzogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBjaGF0SWQ/OiBzdHJpbmdcbiAgbmV3Q2hhdEtleT86IG51bWJlclxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIC8qKiBFeHBvbmUgZWwgd3JhcHBlciBkZWwgaW5wdXQgcGFyYSBhbmNsYXIgcG9wb3ZlcnMgKG1lbmNpb25lcywgcGluIGRlIGNvbnRleHRvKS4gKi9cbiAgcG9wb3ZlckFuY2hvclJlZj86IE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICBsYXlvdXRNb2RlPzogJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJ1xuICAvKiogQ2hpcCBkZSBjb250ZXh0byAodGFyZWEvcHJveWVjdG8vY2xpZW50ZS9nbG9iYWwpIG1vc3RyYWRvIGVuIGxhIHRvb2xiYXIgZGVsIGlucHV0LiAqL1xuICBjb250ZXh0Q2hpcD86IHtcbiAgICBpdGVtczogc3RyaW5nW11cbiAgICB0eXBlPzogQ29udGV4dEVudGl0eVR5cGVcbiAgICBlbnRpdHlJZD86IHN0cmluZyB8IG51bWJlclxuICAgIGxlYWRpbmdJY29uPzogUmVhY3ROb2RlXG4gICAgb25FbnRpdHlOYXZpZ2F0ZT86ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgaWQ6IHN0cmluZyB8IG51bWJlcikgPT4gdm9pZFxuICB9IHwgbnVsbFxufVxuXG5leHBvcnQgY29uc3QgTUFJQUlucHV0ID0gKHtcbiAgb25TZW5kTWVzc2FnZSxcbiAgY2xhc3NOYW1lLFxuICBkaXNhYmxlZCxcbiAgaXNTdHJlYW1pbmcsXG4gIGlzV3JpdGluZyxcbiAgb25TdG9wR2VuZXJhdGlvbixcbiAgcGxhY2Vob2xkZXIsXG4gIG9uQ2hhbmdlLFxuICBvbkZvY3VzLFxuICBhbGlnbkJ1dHRvbnMgPSAndmVydGljYWwnLFxuICBvbkZpbGVBdHRhY2gsXG4gIG9uRGVsZXRlQXR0YWNobWVudCxcbiAgYXR0YWNobWVudHMgPSBbXSxcbiAgY2hhdElkLFxuICBuZXdDaGF0S2V5LFxuICB0b29sdGlwWkluZGV4LFxuICBwb3BvdmVyQW5jaG9yUmVmOiBleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYsXG4gIGxheW91dE1vZGUsXG4gIGNvbnRleHRDaGlwLFxufTogTUFJQUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmPENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPihudWxsKVxuICBjb25zdCBmaWxlSW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbClcbiAgY29uc3QgY2hpcHNSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHRvb2xiYXJSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGludGVybmFsV3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qgd3JhcHBlclJlZiA9IGV4dGVybmFsUG9wb3ZlckFuY2hvclJlZiA/PyBpbnRlcm5hbFdyYXBwZXJSZWZcbiAgY29uc3QgW2hhc1R5cGluZ1ByZXNlbmNlLCBzZXRIYXNUeXBpbmdQcmVzZW5jZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2NoaXBzUm93SGVpZ2h0LCBzZXRDaGlwc1Jvd0hlaWdodF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbdG9vbGJhclJvd0hlaWdodCwgc2V0VG9vbGJhclJvd0hlaWdodF0gPSB1c2VTdGF0ZShNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWClcbiAgY29uc3QgW21vZGFsUHJvcHMsIHNldE1vZGFsUHJvcHNdID0gdXNlU3RhdGUoe1xuICAgIGlzT3BlbjogZmFsc2UsXG4gICAgZXhjbHVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZXhjZWVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZmlsZVNpemVzOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+LFxuICB9KVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3Qge1xuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVEZWVwU2VhcmNoLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBpc0F1dG9BcHByb3ZlQWN0aXZlLFxuICAgIHRvZ2dsZUF1dG9BcHByb3ZlLFxuICAgIGFnZW50LFxuICAgIGluaXRpYWxEcmFmdCxcbiAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHBsdXNNZW51WkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMzAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGluaXRpYWxEcmFmdEFwcGxpZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qge1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZyxcbiAgICBoYW5kbGVUcmlnZ2VyLFxuICAgIGhhbmRsZUtleURvd246IGhhbmRsZVBvcG92ZXJLZXlEb3duLFxuICAgIHBvcG92ZXJOb2RlLFxuICB9ID0gdXNlTWVudGlvblBvcG92ZXIoe1xuICAgIGVkaXRvclJlZixcbiAgICBwb3BvdmVyQW5jaG9yUmVmOiB3cmFwcGVyUmVmLFxuICB9KVxuXG4gIGNvbnN0IFtwbHVzTWVudUFuY2hvciwgc2V0UGx1c01lbnVBbmNob3JdID0gdXNlU3RhdGU8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbYWN0aXZlVG9vbENoaXBIb3ZlcmVkLCBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt0b29sQ2hpcEV4aXRpbmcsIHNldFRvb2xDaGlwRXhpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWQsIHNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc0ZpbGVEcmFnQWN0aXZlLCBzZXRJc0ZpbGVEcmFnQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0b29sQ2hpcEV4aXRUaW1lclJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGZpbGVEcmFnQ291bnRlclJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzZWFyY2hNb2RlQWN0aXZlUmVmID0gdXNlUmVmKHsgd2ViOiBmYWxzZSwgZGVlcDogZmFsc2UgfSlcbiAgY29uc3QgcGx1c01lbnVPcGVuID0gQm9vbGVhbihwbHVzTWVudUFuY2hvcilcblxuICAvLyBJbmljaWFsaXphciBsYXMgcmVmZXJlbmNpYXMgY29tbyB1bmRlZmluZWQgcGFyYSBkZXRlY3RhciBlbCBwcmltZXIgY2FtYmlvIGNvcnJlY3RhbWVudGVcbiAgY29uc3QgcHJldmlvdXNBZ2VudElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0NoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNOZXdDaGF0S2V5UmVmID0gdXNlUmVmPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0xheW91dE1vZGVSZWYgPSB1c2VSZWY8TUFJQUlucHV0UHJvcHNbJ2xheW91dE1vZGUnXT4odW5kZWZpbmVkKVxuXG4gIGNvbnN0IGFuYWx5dGljc0FnZW50VHlwZSA9IGdldENoYXRUb29sc01lbnVBZ2VudFR5cGUoYWdlbnQpXG4gIGNvbnN0IGFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCA9IGdldEFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZChhZ2VudClcblxuICAvLyBTbGFzaCBjb21tYW5kcyBhcGxpY2FuIGEgY2xvbmVzIGVzcGVjaWFsaXN0YXMgeSBhbCBvcmNoZXN0cmF0b3IgZ2xvYmFsIChlc3RlIGFncmVnYSBsb3MgZGUgc3VzIHN1YmFnZW50ZXMpLlxuICAvLyBMb3MgY3VzdG9tIHkgbG9zIGNsb25lIGdsb2JhbC9tYWlha2VyIG5vIGxvcyB0aWVuZW4gaGFiaWxpdGFkb3MuXG4gIGNvbnN0IHsgY29tbWFuZHM6IHNsYXNoQ29tbWFuZHMgfSA9IHVzZVNsYXNoQ29tbWFuZHMocmVzb2x2ZVNsYXNoQ29tbWFuZHNBZ2VudElkKGFnZW50KSlcbiAgY29uc3QgW3Nob3dTbGFzaERyb3Bkb3duLCBzZXRTaG93U2xhc2hEcm9wZG93bl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NsYXNoUXVlcnksIHNldFNsYXNoUXVlcnldID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IHNsYXNoTWVudVdhc09wZW5SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNsYXNoRHJvcGRvd25aSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcbiAgY29uc3QgZ2V0Q2FyZXRSZWN0ID0gdXNlQ2FyZXRQb3NpdGlvbigpXG4gIGNvbnN0IFtzbGFzaERyb3Bkb3duUG9zLCBzZXRTbGFzaERyb3Bkb3duUG9zXSA9IHVzZVN0YXRlKHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICBtYXhIZWlnaHQ6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gIH0pXG5cbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBzaG93U2tpbGxzQnV0dG9uID0gY2FuQWNjZXNzVG9Ta2lsbHModXNlcilcbiAgY29uc3Qgc2tpbGxzQnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3Qgc2tpbGxzTWVudVdhc09wZW5SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNraWxsc09wZW5Tb3VyY2VSZWYgPSB1c2VSZWY8J2J1dHRvbicgfCAnaGFzaCc+KCdoYXNoJylcbiAgY29uc3QgcHJldlNraWxsTWVudGlvbklkc1JlZiA9IHVzZVJlZjxzdHJpbmdbXT4oW10pXG4gIGNvbnN0IHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCB7IHNraWxscywgbG9hZGluZzogc2tpbGxzTG9hZGluZywgZXJyb3I6IHNraWxsc0Vycm9yLCBmZXRjaFNraWxscyB9ID0gdXNlU2tpbGxzQ2F0YWxvZygpXG4gIGNvbnN0IFtzaG93U2tpbGxzRHJvcGRvd24sIHNldFNob3dTa2lsbHNEcm9wZG93bl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NraWxsc1F1ZXJ5LCBzZXRTa2lsbHNRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW3NraWxsc0Ryb3Bkb3duUG9zLCBzZXRTa2lsbHNEcm9wZG93blBvc10gPSB1c2VTdGF0ZSh7XG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgbWF4SGVpZ2h0OiBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLFxuICB9KVxuXG4gIGNvbnN0IHBvc2l0aW9uU2xhc2hEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgnLycpXG4gICAgY29uc3QgbmV4dFBvcyA9IHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uKHtcbiAgICAgIGNhcmV0VG9wOiBjYXJldD8udG9wLFxuICAgICAgY2FyZXRMZWZ0OiBjYXJldD8ubGVmdCxcbiAgICAgIHdyYXBwZXJUb3A6IHdyYXBwZXJSZWN0Py50b3AsXG4gICAgICB3cmFwcGVyTGVmdDogd3JhcHBlclJlY3Q/LmxlZnQsXG4gICAgICB3cmFwcGVyV2lkdGg6IHdyYXBwZXJSZWN0Py53aWR0aCA/PyAwLFxuICAgICAgdmlld3BvcnRIZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodCxcbiAgICAgIHZpZXdwb3J0V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgZHJvcGRvd25XaWR0aFB4OiBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCxcbiAgICAgIG1heERyb3Bkb3duSGVpZ2h0UHg6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gICAgICBnYXBQeDogU0xBU0hfRFJPUERPV05fR0FQX1BYLFxuICAgICAgdmlld3BvcnRQYWRQeDogU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLFxuICAgIH0pXG4gICAgaWYgKCFuZXh0UG9zKSByZXR1cm5cbiAgICBzZXRTbGFzaERyb3Bkb3duUG9zKG5leHRQb3MpXG4gIH0sIFt3cmFwcGVyUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93U2xhc2hEcm9wZG93bikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcG9zaXRpb25TbGFzaERyb3Bkb3duKClcblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG4gICAgfVxuICB9LCBbc2hvd1NsYXNoRHJvcGRvd24sIHNsYXNoUXVlcnksIHBvc2l0aW9uU2xhc2hEcm9wZG93bl0pXG5cbiAgLyoqIEVsIHBvcG92ZXIgZGUgc2tpbGxzIHNlIGFuY2xhIGFsIGAjYCBxdWUgbG8gYWJyacOzOyBzaSBubyBoYXkgY2FyZXQsIGFsIGJvcmRlIGRlbCBpbnB1dC4gKi9cbiAgY29uc3QgcG9zaXRpb25Ta2lsbHNEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgnIycpXG4gICAgY29uc3QgbmV4dFBvcyA9IHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uKHtcbiAgICAgIGNhcmV0VG9wOiBjYXJldD8udG9wLFxuICAgICAgY2FyZXRMZWZ0OiBjYXJldD8ubGVmdCxcbiAgICAgIHdyYXBwZXJUb3A6IHdyYXBwZXJSZWN0Py50b3AsXG4gICAgICB3cmFwcGVyTGVmdDogd3JhcHBlclJlY3Q/LmxlZnQsXG4gICAgICB3cmFwcGVyV2lkdGg6IHdyYXBwZXJSZWN0Py53aWR0aCA/PyAwLFxuICAgICAgdmlld3BvcnRIZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodCxcbiAgICAgIHZpZXdwb3J0V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgZHJvcGRvd25XaWR0aFB4OiBTS0lMTFNfRFJPUERPV05fV0lEVEhfUFgsXG4gICAgICBtYXhEcm9wZG93bkhlaWdodFB4OiBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLFxuICAgICAgZ2FwUHg6IFNMQVNIX0RST1BET1dOX0dBUF9QWCxcbiAgICAgIHZpZXdwb3J0UGFkUHg6IFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCxcbiAgICB9KVxuICAgIGlmICghbmV4dFBvcykgcmV0dXJuXG4gICAgc2V0U2tpbGxzRHJvcGRvd25Qb3MobmV4dFBvcylcbiAgfSwgW3dyYXBwZXJSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dTa2lsbHNEcm9wZG93bikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcG9zaXRpb25Ta2lsbHNEcm9wZG93bigpXG5cbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25Ta2lsbHNEcm9wZG93bigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtzaG93U2tpbGxzRHJvcGRvd24sIHNraWxsc1F1ZXJ5LCBwb3NpdGlvblNraWxsc0Ryb3Bkb3duXSlcblxuICAvKiogVHJhcyBlbGVnaXIgbyBxdWl0YXIgYsO6c3F1ZWRhIHdlYi9wcm9mdW5kYTogdm9sdmVyIGFsIHRleHRhcmVhIChQb3BvdmVyL21lbnUgcHVlZGUgcm9iYXIgZm9jbykuICovXG4gIGNvbnN0IHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgMClcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY2xvc2VQbHVzTWVudSA9ICgpID0+IHtcbiAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICBjb25zdCBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudClcbiAgICAgIHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24gPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAvLyBFdml0YSBxdWUgZWwgYm90w7NuIHJvYmUgZWwgZm9jbyBkZWwgaW5wdXQgYWwgYWJyaXIgZWwgbWVuw7ouXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHBsdXNNZW51QW5jaG9yKSB7XG4gICAgICBjbG9zZVBsdXNNZW51KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQbHVzTWVudUFuY2hvcihlLmN1cnJlbnRUYXJnZXQpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFBsdXNPcGVuLCB7IGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSwgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0TWVudGlvblRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVBdHRhY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdmaWxlcycsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBpZiAoIWNhbkF0dGFjaE1vcmVDaGF0SW5wdXRGaWxlcyhhdHRhY2htZW50cy5sZW5ndGgsIE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSkgcmV0dXJuXG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGJlZ2luVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgd2FzV2ViID0gaXNXZWJTZWFyY2hBY3RpdmVcbiAgICBjb25zdCB3YXNEZWVwID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgaWYgKCFzaG91bGRTdGFydFRvb2xDaGlwRXhpdCh3YXNXZWIsIHdhc0RlZXApKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKHRydWUpXG4gICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGNvbnN0IHRvZ2dsZVRhcmdldCA9IHJlc29sdmVUb29sQ2hpcEV4aXRUb2dnbGUod2FzV2ViLCB3YXNEZWVwLCBzZWFyY2hNb2RlQWN0aXZlUmVmLmN1cnJlbnQpXG4gICAgICBpZiAodG9nZ2xlVGFyZ2V0ID09PSAnd2ViJykge1xuICAgICAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgfSBlbHNlIGlmICh0b2dnbGVUYXJnZXQgPT09ICdkZWVwJykge1xuICAgICAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICAgIH1cbiAgICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gICAgfSwgVE9PTF9DSElQX0VYSVRfTVMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudVdlYlNlYXJjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBjb25zdCBhY3Rpb24gPSByZXNvbHZlV2ViU2VhcmNoUGx1c01lbnVBY3Rpb24oaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSlcbiAgICBpZiAoYWN0aW9uLmtpbmQgPT09ICdkZWFjdGl2YXRlX3ZpYV9jaGlwX2V4aXQnKSB7XG4gICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCgpXG4gICAgaWYgKGFjdGlvbi5raW5kID09PSAnYWN0aXZhdGVfd2ViJyAmJiBhY3Rpb24udHVybk9mZkRlZXApIHtcbiAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnc2VhcmNoJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICAvLyBBdXRvLWFwcHJvdmUgZnVlcmEgZGUgZXN0ZSByZWxlYXNlICh2ZXIgSVNfQVVUT19BUFBST1ZFX0VOQUJMRUQgZW4gdXNlUHJvamVjdFN1bW1hcnlDb25maWcpLlxuICAvLyBjb25zdCBoYW5kbGVQbHVzTWVudUF1dG9BcHByb3ZlID0gKCkgPT4ge1xuICAvLyAgIGNsb3NlUGx1c01lbnUoKVxuICAvLyAgIHRvZ2dsZUF1dG9BcHByb3ZlPy4oKVxuICAvLyAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAvLyAgICAgdG9vbDogJ2F1dG9fYXBwcm92ZScsXG4gIC8vICAgICBhY3RpdmU6ICFpc0F1dG9BcHByb3ZlQWN0aXZlLFxuICAvLyAgIH0pXG4gIC8vIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudURlZXBTZWFyY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgY29uc3QgYWN0aW9uID0gcmVzb2x2ZURlZXBTZWFyY2hQbHVzTWVudUFjdGlvbihpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlKVxuICAgIGlmIChhY3Rpb24ua2luZCA9PT0gJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoYWN0aW9uLmtpbmQgPT09ICdhY3RpdmF0ZV9kZWVwJyAmJiBhY3Rpb24udHVybk9mZldlYikge1xuICAgICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICB9XG4gICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdkZWVwX3NlYXJjaCcsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMgPSAoKSA9PiB7XG4gICAgc2V0UGx1c01lbnVBbmNob3IobnVsbClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTbGFzaFRyaWdnZXIoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgIH1cbiAgfSwgW2Rpc2FibGVkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtpbml0aWFsRHJhZnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRBcHBseUluaXRpYWxEcmFmdChpbml0aWFsRHJhZnQsIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCwgZGlzYWJsZWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgZHJhZnQgPSBpbml0aWFsRHJhZnQ/LnRyaW0oKVxuICAgIGlmICghZHJhZnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpbml0aWFsRHJhZnRBcHBsaWVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnNldFBsYWluVGV4dChkcmFmdClcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZSh0cnVlKVxuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgfVxuICB9LCBbaW5pdGlhbERyYWZ0LCBkaXNhYmxlZCwgZGVlcExpbmtTZW5kUGVuZGluZ1JlZl0pXG5cbiAgY29uc3Qgc2VuZERpc2FibGVkID0gdXNlTWVtbyhcbiAgICAoKSA9PiBpc1NlbmREaXNhYmxlZChoYXNUeXBpbmdQcmVzZW5jZSwgYXR0YWNobWVudHMubGVuZ3RoKSxcbiAgICBbaGFzVHlwaW5nUHJlc2VuY2UsIGF0dGFjaG1lbnRzLmxlbmd0aF1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2VhcmNoTW9kZUFjdGl2ZVJlZi5jdXJyZW50ID0geyB3ZWI6IGlzV2ViU2VhcmNoQWN0aXZlLCBkZWVwOiBpc0RlZXBTZWFyY2hBY3RpdmUgfVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNXZWJTZWFyY2hBY3RpdmUgJiYgIWlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKVxuICAgIH1cbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIC8vIEF1dG8tZm9jdXMgY3VhbmRvIGNhbWJpYSBlbCBhZ2VudGUgbyBsYSBjb252ZXJzYWNpw7NuLCBvIGFsIG1vbnRhciBlbCBjb21wb25lbnRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZm9jdXNQbGFuID0gcmVzb2x2ZVNlc3Npb25BdXRvRm9jdXNQbGFuKHtcbiAgICAgIHByZXZpb3VzQWdlbnRJZDogcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQsXG4gICAgICBjdXJyZW50QWdlbnRJZDogYWdlbnQ/LmlkLFxuICAgICAgcHJldmlvdXNDaGF0SWQ6IHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnQsXG4gICAgICBjdXJyZW50Q2hhdElkOiBjaGF0SWQsXG4gICAgICBwcmV2aW91c05ld0NoYXRLZXk6IHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50LFxuICAgICAgY3VycmVudE5ld0NoYXRLZXk6IG5ld0NoYXRLZXksXG4gICAgICBkaXNhYmxlZCxcbiAgICB9KVxuXG4gICAgaWYgKGZvY3VzUGxhbi5zaG91bGRGb2N1cykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghZGlzYWJsZWQpIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9LCBmb2N1c1BsYW4uZGVsYXlNcylcbiAgICB9XG5cbiAgICBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCA9IGFnZW50Py5pZFxuICAgIHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnQgPSBjaGF0SWRcbiAgICBwcmV2aW91c05ld0NoYXRLZXlSZWYuY3VycmVudCA9IG5ld0NoYXRLZXlcbiAgfSwgW2FnZW50Py5pZCwgY2hhdElkLCBuZXdDaGF0S2V5LCBkaXNhYmxlZF0pXG5cbiAgLy8gQXV0by1mb2N1cyBjdWFuZG8gY2FtYmlhIGxhIGRpc3Bvc2ljacOzbiBkZWwgbW9kYWwgKHNpZGViYXIgLyBmdWxsc2NyZWVuIC8gZmxvYXRpbmcpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsYXlvdXRNb2RlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMYXlvdXRNb2RlID0gcHJldmlvdXNMYXlvdXRNb2RlUmVmLmN1cnJlbnRcbiAgICBwcmV2aW91c0xheW91dE1vZGVSZWYuY3VycmVudCA9IGxheW91dE1vZGVcblxuICAgIGlmICghc2hvdWxkQXV0b0ZvY3VzT25MYXlvdXRNb2RlQ2hhbmdlKHByZXZpb3VzTGF5b3V0TW9kZSwgbGF5b3V0TW9kZSwgZGlzYWJsZWQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfVxuICAgIH0sIDIwMClcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgfSwgW2xheW91dE1vZGUsIGRpc2FibGVkXSlcblxuICAvLyBBcHBjdWVzOiBub3RpZnkgdGhhdCB0aGUgaW5wdXQgaXMgdmlzaWJsZSBmb3Igc3BlY2lhbGlzdCBhZ2VudHMgKGNsb25lICsgcHJvamVjdC9jbGllbnQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF3cmFwcGVyUmVmLmN1cnJlbnQgfHwgIWlzU3BlY2lhbGlzdENsb25lQWdlbnRGb3JBcHBjdWVzKGFnZW50KSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0cmFja0FwcGN1ZXNFdmVudChBUFBDVUVTX0VWRU5UUy5tYWlhQ29udGV4dE1lbnRpb25Jbml0KVxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyB0aHJlc2hvbGQ6IDAuMSB9XG4gICAgKVxuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh3cmFwcGVyUmVmLmN1cnJlbnQpXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8udHlwZSwgYWdlbnQ/LmVudGl0eV0pXG5cbiAgLy8gQ2xlYXIgaW5wdXQgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gIH0sIFtyZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIC8vIE1hbnRlbmVyIGZvY28gYWwgc2VsZWNjaW9uYXIgdW4gY29udGV4dG8gcmVjaWVudGUgKGVsIGNsaWNrIGVuIGVsIHBpbGwgbG8gcm9iYSBhbCBpbnB1dCkuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmb2N1cyA9ICgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbCB9ID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50PHsgc2tpbGw6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0gfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gc2tpbGwubmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uYXBwZW5kTWVudGlvbkF0RW5kKHtcbiAgICAgICAgaWQ6IHNraWxsLmlkLFxuICAgICAgICB0eXBlOiAnc2tpbGwnLFxuICAgICAgICBsYWJlbDogYCMke25vcm1hbGl6ZWROYW1lfWAsXG4gICAgICB9KVxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgfSwgW2Rpc2FibGVkXSlcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgIGlmICghY2FuU3VibWl0Q2hhdE1lc3NhZ2UodGV4dCwgYXR0YWNobWVudHMubGVuZ3RoKSkgcmV0dXJuXG4gICAgY29uc3QgbWVudGlvbnMgPSBzdGF0ZT8ubWVudGlvbnMgPz8gW11cbiAgICBvblNlbmRNZXNzYWdlKHRleHQsIGF0dGFjaG1lbnRzLCBtZW50aW9ucylcbiAgICBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCA9IFtdXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSlcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICB9LCBbYXR0YWNobWVudHMsIG9uU2VuZE1lc3NhZ2UsIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZ10pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQ6IEFjdGlvbikgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0LCB7XG4gICAgICAgIHR5cGVfcXVpY2tfYWN0aW9uOiByZXNvbHZlUXVpY2tBY3Rpb25UeXBlKGNvbW1hbmQpLFxuICAgICAgICBvcmlnaW5fcXVpY2tfYWN0aW9uOiAnc2xhc2hfbWVudScsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgICBjb25zdCB7IGlzRW1wdHlCZWZvcmVUcmlnZ2VyIH0gPSByZXNvbHZlU2xhc2hDb21tYW5kSW5zZXJ0Q29udGV4dCh0ZXh0LCBzbGFzaFF1ZXJ5KVxuXG4gICAgICBpZiAoaXNFbXB0eUJlZm9yZVRyaWdnZXIpIHtcbiAgICAgICAgb25TZW5kTWVzc2FnZShjb21tYW5kLnRpdGxlLCBhdHRhY2htZW50cywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb21tYW5kLmlkKVxuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hDb21tYW5kKHsgaWQ6IGNvbW1hbmQuaWQsIGxhYmVsOiBjb21tYW5kLnRpdGxlIH0pXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIHNsYXNoUXVlcnksIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duID0gKCkgPT4ge1xuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnaGFzaCdcbiAgfSwgW10pXG5cbiAgLyoqIEFicmUgZWwgbGlzdGFkbyBkZXNkZSBlbCBib3TDs246IGluc2VydGEgYCNgIGVuIGVsIGVkaXRvciBwYXJhIHF1ZSBlbCB0cmlnZ2VyIHF1ZWRlIGFjdGl2by4gKi9cbiAgY29uc3QgaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBpZiAoc2hvd1NraWxsc0Ryb3Bkb3duKSB7XG4gICAgICBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnYnV0dG9uJ1xuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTa2lsbFRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsKSA9PiB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxTZWxlY3QsIHtcbiAgICAgICAgc2tpbGxfaWQ6IHNraWxsLmlkLFxuICAgICAgICBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCxcbiAgICAgIH0pXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2tpbGxNZW50aW9uKHsgaWQ6IHNraWxsLmlkLCB0eXBlOiAnc2tpbGwnLCBsYWJlbDogYCMke3NraWxsLm5hbWV9YCB9KVxuICAgICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlU2tpbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBza2lsbFZhbHVlczogeyB2YWx1ZXM6IHsgaXNFZGl0aW5nOiBmYWxzZSwgaW50ZW50OiAnd3JpdGUnIH0sIGlzT3BlbjogdHJ1ZSB9LFxuICAgICAgICAgIGFuYWx5dGljc1NvdXJjZTogJ2Ryb3Bkb3duJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVFZGl0b3JJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICB0ZXh0LFxuICAgICAgbWVudGlvbnMsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgc2xhc2hUcmlnZ2VyLFxuICAgICAgaGFzaFRyaWdnZXIsXG4gICAgfToge1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgICAgc2xhc2hUcmlnZ2VyPzogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICAgICAgaGFzaFRyaWdnZXI/OiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gICAgfSkgPT4ge1xuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UodGV4dCkpXG4gICAgICBvbkNoYW5nZT8uKClcbiAgICAgIGhhbmRsZVRyaWdnZXIodHJpZ2dlcilcblxuICAgICAgY29uc3QgY3VycmVudFNraWxsSWRzID0gZ2V0U2tpbGxNZW50aW9uSWRzKG1lbnRpb25zKVxuICAgICAgaWYgKHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzKHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCwgY3VycmVudFNraWxsSWRzKS5mb3JFYWNoKHNraWxsSWQgPT4ge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFJlbW92ZSwgeyBza2lsbF9pZDogc2tpbGxJZCB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcHJldlNraWxsTWVudGlvbklkc1JlZi5jdXJyZW50ID0gY3VycmVudFNraWxsSWRzXG5cbiAgICAgIGlmIChzaG91bGRPcGVuU2xhc2hEcm9wZG93bihzbGFzaFRyaWdnZXIsIHNsYXNoQ29tbWFuZHMubGVuZ3RoKSkge1xuICAgICAgICBpZiAoIXNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvbk9wZW4pXG4gICAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKHRydWUpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoc2xhc2hUcmlnZ2VyPy5xdWVyeSA/PyAnJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkT3BlblNraWxsc0hhc2hEcm9wZG93bihoYXNoVHJpZ2dlciwgc2hvd1NraWxsc0J1dHRvbikpIHtcbiAgICAgICAgLy8gRmV0Y2ggb24tb3BlbjogdW5hIHNvbGEgbGxhbWFkYSBwb3IgYXBlcnR1cmEgZGVsIGxpc3RhZG8uXG4gICAgICAgIGlmICghc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsT3BlbiwgeyBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCB9KVxuICAgICAgICAgIHZvaWQgZmV0Y2hTa2lsbHMoKVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bih0cnVlKVxuICAgICAgICBzZXRTa2lsbHNRdWVyeShoYXNoVHJpZ2dlcj8ucXVlcnkgPz8gJycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2hhc2gnXG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIGhhbmRsZVRyaWdnZXIsIHNsYXNoQ29tbWFuZHMsIGV2ZW50QW1wbGl0dWRlLCBzaG93U2tpbGxzQnV0dG9uLCBmZXRjaFNraWxsc11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChoYW5kbGVQb3BvdmVyS2V5RG93bihlKSkgcmV0dXJuXG4gICAgICBpZiAoc2hvdWxkU3VibWl0T25FbnRlcihlLmtleSwgZS5zaGlmdEtleSwgcG9wb3Zlck9wZW4sIHNlbmREaXNhYmxlZCwgZGlzYWJsZWQpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlUG9wb3ZlcktleURvd24sIHBvcG92ZXJPcGVuLCBzZW5kRGlzYWJsZWQsIGRpc2FibGVkLCBoYW5kbGVTZW5kTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGFkZEZpbGVzID0gKGluY29taW5nOiBGaWxlW10pID0+IHtcbiAgICBpZiAoIWluY29taW5nLmxlbmd0aCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IGZpbGVzVG9BdHRhY2gsIGV4Y2x1ZGVkRmlsZXMsIGV4Y2VlZGVkRmlsZXMsIGZpbGVTaXplcyB9ID0gcHJvY2Vzc0luY29taW5nQ2hhdElucHV0RmlsZXMoaW5jb21pbmcsIHtcbiAgICAgIGFsbG93ZWRFeHRlbnNpb25zOiBhbGxvd2VkRmlsZVR5cGVzLFxuICAgICAgZmlsZVR5cGVzLFxuICAgICAgY3VycmVudEF0dGFjaG1lbnRDb3VudDogYXR0YWNobWVudHMubGVuZ3RoLFxuICAgICAgbWF4QXR0YWNobWVudHM6IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTLFxuICAgICAgZ2V0TWF4U2l6ZU1iOiBnZXRNYXhBdHRhY2htZW50U2l6ZU1iLFxuICAgIH0pXG5cbiAgICBmaWxlc1RvQXR0YWNoLmZvckVhY2goZmlsZSA9PiBvbkZpbGVBdHRhY2g/LihmaWxlKSlcblxuICAgIGlmIChzaG91bGRPcGVuQXR0YWNobWVudFZhbGlkYXRpb25Nb2RhbChleGNsdWRlZEZpbGVzLCBleGNlZWRlZEZpbGVzKSkge1xuICAgICAgc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogdHJ1ZSwgZXhjbHVkZWRGaWxlcywgZXhjZWVkZWRGaWxlcywgZmlsZVNpemVzIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmlsZVNlbGVjdCA9IChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGVzID0gZS50YXJnZXQuZmlsZXNcbiAgICBpZiAoZmlsZXMpIHtcbiAgICAgIGFkZEZpbGVzKEFycmF5LmZyb20oZmlsZXMpKVxuICAgIH1cbiAgICBpZiAoZmlsZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50LnZhbHVlID0gJydcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNldEZpbGVEcmFnID0gKCkgPT4ge1xuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID0gMFxuICAgIHNldElzRmlsZURyYWdBY3RpdmUoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnRW50ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCArPSAxXG4gICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZSh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0xlYXZlID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIXNob3VsZEhhbmRsZURyYWdMZWF2ZUV2ZW50KGlzRmlsZURyYWdBY3RpdmUsIGRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9IGRlY3JlbWVudEZpbGVEcmFnQ291bnRlcihmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudClcbiAgICBpZiAoc2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXkoZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQpKSB7XG4gICAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdPdmVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5J1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHtcbiAgICAgIHJlc2V0RmlsZURyYWcoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICByZXNldEZpbGVEcmFnKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGFkZEZpbGVzKGZpbGVzRnJvbURhdGFUcmFuc2ZlcihlLmRhdGFUcmFuc2ZlcikpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQYXN0ZUZpbGVzID0gKGZpbGVzOiBGaWxlW10pID0+IHtcbiAgICBhZGRGaWxlcyhmaWxlcylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVdyYXBwZXJQYXN0ZSA9IChlOiBDbGlwYm9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBlZGl0b3JFbCA9IHdyYXBwZXJSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcignW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nKVxuICAgIGNvbnN0IGZpbGVzID0gZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuY2xpcGJvYXJkRGF0YSlcbiAgICBpZiAoIXNob3VsZEludGVyY2VwdFdyYXBwZXJQYXN0ZShCb29sZWFuKGVkaXRvckVsICYmIGVkaXRvckVsLmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSwgZmlsZXMubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGFkZEZpbGVzKGZpbGVzKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQXR0YWNobWVudCA9IChmaWxlSWQ6IHN0cmluZykgPT4ge1xuICAgIG9uRGVsZXRlQXR0YWNobWVudD8uKGZpbGVJZClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN0b3BHZW5lcmF0aW9uID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTdG9wUmVzcG9uc2UpXG4gICAgb25TdG9wR2VuZXJhdGlvbj8uKClcbiAgfVxuXG4gIGNvbnN0IHNob3dDaGlwc1JvdyA9IHNob3VsZFNob3dJbnB1dENoaXBzUm93KGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGgpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjaGlwc0VsID0gY2hpcHNSb3dSZWYuY3VycmVudFxuICAgIGNvbnN0IHRvb2xiYXJFbCA9IHRvb2xiYXJSb3dSZWYuY3VycmVudFxuXG4gICAgY29uc3QgdXBkYXRlSGVpZ2h0cyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRDaGlwcyA9IHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsID8gTWF0aC5jZWlsKGNoaXBzRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSA6IDBcbiAgICAgIGNvbnN0IG5leHRUb29sYmFyID0gdG9vbGJhckVsXG4gICAgICAgID8gTWF0aC5jZWlsKHRvb2xiYXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpXG4gICAgICAgIDogTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFhcblxuICAgICAgc2V0Q2hpcHNSb3dIZWlnaHQocHJldiA9PiByZXNvbHZlTWVhc3VyZWRMYXlvdXRSb3dIZWlnaHQocHJldiwgbmV4dENoaXBzKSlcbiAgICAgIHNldFRvb2xiYXJSb3dIZWlnaHQocHJldiA9PiByZXNvbHZlTWVhc3VyZWRMYXlvdXRSb3dIZWlnaHQocHJldiwgbmV4dFRvb2xiYXIpKVxuICAgIH1cblxuICAgIHVwZGF0ZUhlaWdodHMoKVxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIodXBkYXRlSGVpZ2h0cylcbiAgICBpZiAoc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQoc2hvd0NoaXBzUm93ID8gY2hpcHNFbCA6IG51bGwpKSBvYnNlcnZlci5vYnNlcnZlKGNoaXBzRWwhKVxuICAgIGlmIChzaG91bGRPYnNlcnZlTWFpYUlucHV0TGF5b3V0RWxlbWVudCh0b29sYmFyRWwpKSBvYnNlcnZlci5vYnNlcnZlKHRvb2xiYXJFbCEpXG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gIH0sIFtzaG93Q2hpcHNSb3csIGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGhdKVxuXG4gIGNvbnN0IGVkaXRvck1heEhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCh7XG4gICAgICAgIGNoaXBzUm93SGVpZ2h0UHg6IGNoaXBzUm93SGVpZ2h0LFxuICAgICAgICB0b29sYmFyUm93SGVpZ2h0UHg6IHRvb2xiYXJSb3dIZWlnaHQsXG4gICAgICB9KSxcbiAgICBbY2hpcHNSb3dIZWlnaHQsIHRvb2xiYXJSb3dIZWlnaHRdXG4gIClcblxuICBjb25zdCB0b29sYmFySWNvbkNvbG9yID0gJyM4MDgwODAnXG4gIGNvbnN0IHBsdXNNZW51SWNvbkNvbG9yID0gTUFJQV9DSEFUX0lOUFVUX1VJLm1lbnVJY29uXG4gIGNvbnN0IGhhc0NvckFjY2VzcyA9IGFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzKGFnZW50KVxuICBjb25zdCBhZ2VudE1vZGVsTmFtZSA9IGdldEN1c3RvbUFnZW50TW9kZWxEaXNwbGF5TmFtZShhZ2VudClcbiAgY29uc3Qgc2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzID0gc2hvdWxkU2hvd0N1c3RvbUFnZW50TWV0YUluZGljYXRvcnMoaGFzQ29yQWNjZXNzLCBhZ2VudE1vZGVsTmFtZSlcbiAgY29uc3Qgc2hvd01lbnRpb25CdXR0b24gPSBzaG91bGRTaG93TWVudGlvblRvb2xiYXJCdXR0b24oYWdlbnQ/LnR5cGUsIGhhc0NvckFjY2VzcylcblxuICBjb25zdCBhY3RpdmVUb29sQ2hpcEljb25Nb2RlID0gcmVzb2x2ZUFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUoYWN0aXZlVG9vbENoaXBIb3ZlcmVkLCBpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbkJ5TW9kZTogUmVjb3JkPEFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUsIFJlYWN0Tm9kZT4gPSB7XG4gICAgY2xvc2U6IDxDcm9zcyBjb2xvcj17TUFJQV9DSEFUX0lOUFVUX1VJLmNoaXBDbG9zZUljb259IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4sXG4gICAgd2ViOiA8TWFpYUlucHV0V2ViU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4sXG4gICAgZGVlcDogPE1haWFJbnB1dERlZXBTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPixcbiAgfVxuICBjb25zdCBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uID0gYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbkJ5TW9kZVthY3RpdmVUb29sQ2hpcEljb25Nb2RlXVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHlsZWRNQUlBSW5wdXRXcmFwcGVyXG4gICAgICAgIHJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICBhbGlnbkJ1dHRvbnM9e2FsaWduQnV0dG9uc31cbiAgICAgICAgaGFzQXR0YWNobWVudHM9eyEhYXR0YWNobWVudHMubGVuZ3RofVxuICAgICAgICAkZmlsZURyYWdBY3RpdmU9e2lzRmlsZURyYWdBY3RpdmV9XG4gICAgICAgIGRhdGEtYXBwY3Vlcz1cIm1haWFfY2hhdF9pbnB1dFwiXG4gICAgICAgIGRhdGEtbWFpYS1zdHJlYW1pbmc9e3Jlc29sdmVNYWlhSW5wdXRTdHJlYW1pbmdEYXRhQXR0cihCb29sZWFuKGlzU3RyZWFtaW5nKSl9XG4gICAgICAgIG9uUGFzdGU9e2hhbmRsZVdyYXBwZXJQYXN0ZX1cbiAgICAgICAgb25EcmFnRW50ZXI9e2hhbmRsZURyYWdFbnRlcn1cbiAgICAgICAgb25EcmFnTGVhdmU9e2hhbmRsZURyYWdMZWF2ZX1cbiAgICAgICAgb25EcmFnT3Zlcj17aGFuZGxlRHJhZ092ZXJ9XG4gICAgICAgIG9uRHJvcD17aGFuZGxlRHJvcH1cbiAgICAgID5cbiAgICAgICAge3Nob3dDaGlwc1JvdyAmJiAoXG4gICAgICAgICAgPFNDSW5wdXRDaGlwc1JvdyByZWY9e2NoaXBzUm93UmVmfT5cbiAgICAgICAgICAgIHtjb250ZXh0Q2hpcD8uaXRlbXM/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgPENoaXBcbiAgICAgICAgICAgICAgICBpdGVtcz17Y29udGV4dENoaXAuaXRlbXN9XG4gICAgICAgICAgICAgICAgdHlwZT17Y29udGV4dENoaXAudHlwZX1cbiAgICAgICAgICAgICAgICBlbnRpdHlJZD17Y29udGV4dENoaXAuZW50aXR5SWR9XG4gICAgICAgICAgICAgICAgbGVhZGluZ0ljb249e2NvbnRleHRDaGlwLmxlYWRpbmdJY29ufVxuICAgICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgICAgb25FbnRpdHlOYXZpZ2F0ZT17Y29udGV4dENoaXAub25FbnRpdHlOYXZpZ2F0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2F0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNJbWFnZSA9IGlzSW1hZ2VBdHRhY2htZW50RmlsZShhdHRhY2htZW50LnR5cGUsIGF0dGFjaG1lbnQubmFtZSlcbiAgICAgICAgICAgICAgY29uc3QgY2hpcEljb24gPSBpc0ltYWdlID8gKFxuICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsxMn0gaGVpZ2h0PXsxMn0gLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNoSWNvbiBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MTN9IGhlaWdodD17MTN9IC8+XG4gICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXthdHRhY2htZW50Lm5hbWV9IGtleT17YCR7YXR0YWNobWVudC5pZH0tJHtpbmRleH1gfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50PlxuICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnRJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudEZpbGVJY29uPntjaGlwSWNvbn08L1NDTUlBdHRhY2htZW50RmlsZUljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50RGVsZXRlSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUF0dGFjaG1lbnRBcmlhJywgeyBkZWZhdWx0VmFsdWU6ICdRdWl0YXIgYXJjaGl2bycgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVEZWxldGVBdHRhY2htZW50KGF0dGFjaG1lbnQuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDcm9zcyBjb2xvcj1cIiM2NjY2NjZcIiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudERlbGV0ZUljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnRJY29uPlxuICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnROYW1lPnthdHRhY2htZW50Lm5hbWV9PC9TQ01JQXR0YWNobWVudE5hbWU+XG4gICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50PlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0lucHV0Q2hpcHNSb3c+XG4gICAgICAgICl9XG4gICAgICAgIDxTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkPlxuICAgICAgICAgIDxTQ0lucHV0RWRpdG9yQ2VsbD5cbiAgICAgICAgICAgIDxDb250ZXh0TWVudGlvbkVkaXRvclxuICAgICAgICAgICAgICByZWY9e2VkaXRvclJlZn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIG1heEhlaWdodD17ZWRpdG9yTWF4SGVpZ2h0fVxuICAgICAgICAgICAgICBvbklucHV0PXtoYW5kbGVFZGl0b3JJbnB1dH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgICAgICAgICBvblBhc3RlRmlsZXM9e2hhbmRsZVBhc3RlRmlsZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NJbnB1dEVkaXRvckNlbGw+XG4gICAgICAgICAgPFNDSW5wdXRUb29sYmFyUm93IHJlZj17dG9vbGJhclJvd1JlZn0+XG4gICAgICAgICAgICA8U3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgICAgPFBsdXNNZW51VG9vbHNSb3c+XG4gICAgICAgICAgICAgICAgPFBsdXNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgJG1lbnVPcGVuPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17aGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93bn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVBsdXNCdXR0b25DbGlja31cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQub3BlblBsdXNNZW51QXJpYScpfVxuICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17cGx1c01lbnVPcGVufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBZGRJY29uIGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgPC9QbHVzVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgIHtzaG93TWVudGlvbkJ1dHRvbiAmJiAoXG4gICAgICAgICAgICAgICAgICA8UGx1c1RvZ2dsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgJG1lbnVPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlTWVudGlvbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQub3Blbk1lbnRpb25BcmlhJyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRNZW50aW9uSWNvbiBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgPC9QbHVzVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3Nob3dTa2lsbHNCdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgPFNraWxsc1RvZ2dsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICByZWY9e3NraWxsc0J1dHRvblJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3dufVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTa2lsbHNCdXR0b25DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5kcm9wZG93bkJ1dHRvbicpfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e3Nob3dTa2lsbHNEcm9wZG93bn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNraWxsSWNvbiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgPC9Ta2lsbHNUb2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxuICAgICAgICAgICAgICAgICAgb3Blbj17cGx1c01lbnVPcGVufVxuICAgICAgICAgICAgICAgICAgYW5jaG9yRWw9e3BsdXNNZW51QW5jaG9yfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17Y2xvc2VQbHVzTWVudX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVBdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVFbmZvcmNlRm9jdXNcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSZXN0b3JlRm9jdXNcbiAgICAgICAgICAgICAgICAgIGFuY2hvck9yaWdpbj17eyB2ZXJ0aWNhbDogJ3RvcCcsIGhvcml6b250YWw6ICdsZWZ0JyB9fVxuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luPXt7IHZlcnRpY2FsOiAnYm90dG9tJywgaG9yaXpvbnRhbDogJ2xlZnQnIH19XG4gICAgICAgICAgICAgICAgICBzeD17eyB6SW5kZXg6IHBsdXNNZW51WkluZGV4IH19XG4gICAgICAgICAgICAgICAgICBzbG90UHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgcGFwZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBlbGV2YXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgICAgc3g6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6ICctNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8UGx1c01lbnVQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SW5uZXJDb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVBdHRhY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjF9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVBdHRhY2gnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudVdlYlNlYXJjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0V2ViU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5zZWFyY2hXZWInKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzV2ViU2VhcmNoQWN0aXZlID8gPENoZWNrIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVEZWVwU2VhcmNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudURlZXBJbnZlc3RpZ2F0aW9uJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0RlZXBTZWFyY2hBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogQXV0by1hcHByb3ZlIGZ1ZXJhIGRlIGVzdGUgcmVsZWFzZSAodmVyIElTX0FVVE9fQVBQUk9WRV9FTkFCTEVEIGVuIHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnKS5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVBdXRvQXBwcm92ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Qm9sdCBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudUF1dG9BcHByb3ZlJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0F1dG9BcHByb3ZlQWN0aXZlID8gPENoZWNrIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgKi99XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRTbGFzaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVRdWlja0FjdGlvbnMnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SW5uZXJDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8L1BsdXNNZW51UGFwZXI+XG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgICAgICAgICAgIHsoaXNXZWJTZWFyY2hBY3RpdmUgfHwgaXNEZWVwU2VhcmNoQWN0aXZlKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBSb290XG4gICAgICAgICAgICAgICAgICAgICRob3ZlcmVkPXthY3RpdmVUb29sQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICRleGl0aW5nPXt0b29sQ2hpcEV4aXRpbmd9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9eygpID0+IHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZChmYWxzZSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAkY2xvc2VTaG93bj17YWN0aXZlVG9vbENoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQucmVtb3ZlQWN0aXZlVG9vbEFyaWEnKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2FjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb259XG4gICAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICB7cmVzb2x2ZUFjdGl2ZVRvb2xDaGlwU2VhcmNoTGFiZWwoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVG9vbENoaXBIb3ZlcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWJTZWFyY2hMYWJlbDogdCgnY2hhdC5zZWFyY2hXZWInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBTZWFyY2hMYWJlbDogdCgnY2hhdC5wbHVzTWVudURlZXBJbnZlc3RpZ2F0aW9uJyksXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBMYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBSb290PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2lzQXV0b0FwcHJvdmVBY3RpdmUgJiYgKFxuICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwUm9vdFxuICAgICAgICAgICAgICAgICAgICAkaG92ZXJlZD17YXV0b0FwcHJvdmVDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgJGV4aXRpbmc9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZChmYWxzZSl9XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGF0LmF1dG9BcHByb3ZlSGludCcpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgJGNsb3NlU2hvd249e2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBY3RpdmVUb29sQXJpYScpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQXV0b0FwcHJvdmU/LigpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHthdXRvQXBwcm92ZUNoaXBIb3ZlcmVkID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPXtNQUlBX0NIQVRfSU5QVVRfVUkuY2hpcENsb3NlSWNvbn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Qm9sdCBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwTGFiZWw+e3QoJ2NoYXQuYXV0b0FwcHJvdmVDaGlwJyl9PC9BY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcFJvb3Q+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9QbHVzTWVudVRvb2xzUm93PlxuICAgICAgICAgICAgPC9TdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsPlxuICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGw+XG4gICAgICAgICAgICAgIHtzaG93Q3VzdG9tTWV0YUluZGljYXRvcnMgJiYgKFxuICAgICAgICAgICAgICAgIDxTQ0lucHV0TWV0YUluZGljYXRvcnM+XG4gICAgICAgICAgICAgICAgICB7aGFzQ29yQWNjZXNzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dCgnY2hhdC5mb290ZXIuY29yQWNjZXNzVG9vbHRpcCcpfVxuICAgICAgICAgICAgICAgICAgICAgIHsuLi4odG9vbHRpcFpJbmRleCAhPSBudWxsID8geyB6SW5kZXg6IHRvb2x0aXBaSW5kZXggfSA6IHt9KX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0lucHV0TWV0YUljb25CdXR0b24gYXJpYS1sYWJlbD17dCgnY2hhdC5mb290ZXIuY29yQWNjZXNzTGFiZWwnKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q29yQWNjZXNzSWNvbiB3aWR0aD17MTV9IGhlaWdodD17MTR9IGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NJbnB1dE1ldGFJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge2FnZW50TW9kZWxOYW1lICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dCgnY2hpcExsbS50b29sdGlwJywgeyBtb2RlbDogYWdlbnRNb2RlbE5hbWUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiBhcmlhLWxhYmVsPXthZ2VudE1vZGVsTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0Um9ib3RJY29uIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUluZGljYXRvcnM+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpc1dyaXRpbmcgPyAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NoYXQuc3RvcCcpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTdG9wQnV0dG9uIGRpc2FibGVkPXtmYWxzZX0gb25DbGljaz17aGFuZGxlU3RvcEdlbmVyYXRpb259IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTdG9wSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRNQUlBU3RvcEJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NoYXQuc2VuZCcpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZS1mbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRNQUlBU2VuZEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZW5kRGlzYWJsZWQgfHwgZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgaGFzVmFsdWVzPXtoYXNUeXBpbmdQcmVzZW5jZSB8fCBhdHRhY2htZW50cy5sZW5ndGggPiAwfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFNlbmRJY29uIGNvbG9yPVwiI0JGQkZCRlwiIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRNQUlBU2VuZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1N0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGw+XG4gICAgICAgICAgPC9TQ0lucHV0VG9vbGJhclJvdz5cbiAgICAgICAgPC9TdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9e2ZpbGVJbnB1dFJlZn1cbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICBhY2NlcHQ9XCIudHh0LC5tZCwuY3N2LC5kb2MsLmRvY3gsLnBwdCwucHB0eCwucG5nLC5qcGcsLmpwZWcsLnBkZiwueGxzeCwueGxzLC5mbGFjLC5tNGEsLm1wMywubXA0LC5vZ2EsLm9nZywud2F2LC53ZWJtXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZVNlbGVjdH1cbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnbm9uZScgfX1cbiAgICAgICAgLz5cbiAgICAgICAge2lzRmlsZURyYWdBY3RpdmUgJiYgPFN0eWxlZE1BSUFEcm9wT3ZlcmxheT57dCgnY2hhdC5kcm9wRmlsZXNIZXJlJyl9PC9TdHlsZWRNQUlBRHJvcE92ZXJsYXk+fVxuICAgICAgPC9TdHlsZWRNQUlBSW5wdXRXcmFwcGVyPlxuICAgICAge21vZGFsUHJvcHMuaXNPcGVuICYmIChcbiAgICAgICAgPE1vZGFsRmlsZUV4Y2VlZHNcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRNb2RhbFByb3BzKHsgaXNPcGVuOiBmYWxzZSwgZXhjbHVkZWRGaWxlczogW10sIGV4Y2VlZGVkRmlsZXM6IFtdLCBmaWxlU2l6ZXM6IHt9IH0pfVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjbHVkZWRGaWxlc31cbiAgICAgICAgICBleGNlZWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2VlZGVkRmlsZXN9XG4gICAgICAgICAgZmlsZVNpemVzPXttb2RhbFByb3BzLmZpbGVTaXplc31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7cG9wb3Zlck5vZGUgJiYgY3JlYXRlUG9ydGFsKHBvcG92ZXJOb2RlLCBkb2N1bWVudC5ib2R5KX1cbiAgICAgIHtzaG93U2xhc2hEcm9wZG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNsYXNoQ29tbWFuZERyb3Bkb3duXG4gICAgICAgICAgICBjb21tYW5kcz17c2xhc2hDb21tYW5kc31cbiAgICAgICAgICAgIHF1ZXJ5PXtzbGFzaFF1ZXJ5fVxuICAgICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdFNsYXNoQ29tbWFuZH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlU2xhc2hEcm9wZG93bn1cbiAgICAgICAgICAgIGJvdHRvbT17c2xhc2hEcm9wZG93blBvcy5ib3R0b219XG4gICAgICAgICAgICBsZWZ0PXtzbGFzaERyb3Bkb3duUG9zLmxlZnR9XG4gICAgICAgICAgICBtYXhIZWlnaHQ9e3NsYXNoRHJvcGRvd25Qb3MubWF4SGVpZ2h0fVxuICAgICAgICAgICAgekluZGV4PXtzbGFzaERyb3Bkb3duWkluZGV4fVxuICAgICAgICAgICAgYW5jaG9yUmVmPXt3cmFwcGVyUmVmfVxuICAgICAgICAgIC8+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHlcbiAgICAgICAgKX1cbiAgICAgIHtzaG93U2tpbGxzRHJvcGRvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxTa2lsbHNEcm9wZG93blxuICAgICAgICAgICAgc2tpbGxzPXtza2lsbHN9XG4gICAgICAgICAgICBxdWVyeT17c2tpbGxzUXVlcnl9XG4gICAgICAgICAgICBsb2FkaW5nPXtza2lsbHNMb2FkaW5nfVxuICAgICAgICAgICAgZXJyb3I9e3NraWxsc0Vycm9yfVxuICAgICAgICAgICAgY2FuQ3JlYXRlPXtjYW5DcmVhdGVTa2lsbHNGcm9tSW5wdXQoc2hvd1NraWxsc0J1dHRvbiwgdXNlcj8uY29tcGFueV9pZCl9XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2tpbGx9XG4gICAgICAgICAgICBvbkNyZWF0ZT17aGFuZGxlQ3JlYXRlU2tpbGx9XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtza2lsbHNEcm9wZG93blBvcy5ib3R0b219XG4gICAgICAgICAgICBsZWZ0PXtza2lsbHNEcm9wZG93blBvcy5sZWZ0fVxuICAgICAgICAgICAgbWF4SGVpZ2h0PXtza2lsbHNEcm9wZG93blBvcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICB6SW5kZXg9e3NsYXNoRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICAgICBhbmNob3JSZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQVFFQSxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsZUFBZSxFQUNmQyxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsUUFBUSxRQUNILE9BQU87QUFDZCxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxPQUFPLFFBQVEsZUFBZTtBQUN2QyxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQ0VDLHdCQUF3QixFQUN4QkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGVBQWUsRUFDZkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsYUFBYSxFQUNiQyxnQkFBZ0IsRUFDaEJDLGdCQUFnQixFQUNoQkMsa0JBQWtCLEVBQ2xCQyxlQUFlLEVBQ2ZDLHFCQUFxQixFQUNyQkMscUJBQXFCLEVBQ3JCQyxjQUFjLEVBQ2RDLHdCQUF3QixFQUN4QkMsc0JBQXNCLEVBQ3RCQyxrQkFBa0IsRUFDbEJDLGtCQUFrQixFQUNsQkMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsRUFDcEJDLHlCQUF5QixFQUN6QkMsaUJBQWlCLEVB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
|
|
1301
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkdyb3ciLCJQb3BwZXIiLCJDaGVjayIsIkNyb3NzIiwiQm9sdCIsIlRvb2x0aXAiLCJBY3RpdmVUb29sQ2hpcEljb25CdXR0b24iLCJBY3RpdmVUb29sQ2hpcExhYmVsIiwiQWN0aXZlVG9vbENoaXBSb290IiwiUGx1c01lbnVEaXZpZGVyIiwiUGx1c01lbnVJbm5lckNvbHVtbiIsIlBsdXNNZW51SXRlbUJ1dHRvbiIsIlBsdXNNZW51SXRlbUxhYmVsIiwiUGx1c01lbnVQYXBlciIsIlBsdXNNZW51VG9vbHNSb3ciLCJQbHVzVG9nZ2xlQnV0dG9uIiwiU2tpbGxzVG9nZ2xlQnV0dG9uIiwiU0NJbnB1dENoaXBzUm93IiwiU0NJbnB1dE1ldGFJY29uQnV0dG9uIiwiU0NJbnB1dE1ldGFJbmRpY2F0b3JzIiwiU0NNSUF0dGFjaG1lbnQiLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJTQ01JQXR0YWNobWVudEZpbGVJY29uIiwiU0NNSUF0dGFjaG1lbnRJY29uIiwiU0NNSUF0dGFjaG1lbnROYW1lIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCIsIlNDSW5wdXRFZGl0b3JDZWxsIiwiU0NJbnB1dFRvb2xiYXJSb3ciLCJTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCIsIlN0eWxlZE1BSUFTdG9wQnV0dG9uIiwiU3R5bGVkTUFJQVN0b3BJY29uIiwiU3R5bGVkTUFJQURyb3BPdmVybGF5IiwiZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0IiwiTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgiLCJ1c2VHbG9iYWxDb250ZXh0IiwiTUFJQV9UQVNLX1BBTkVMX09WRVJMQVlfQVRUUiIsIk1vZGFsRmlsZUV4Y2VlZHMiLCJTbGFzaENvbW1hbmREcm9wZG93biIsIlNraWxsc0Ryb3Bkb3duIiwidXNlU2xhc2hDb21tYW5kcyIsInVzZVNraWxsc0NhdGFsb2ciLCJjYW5BY2Nlc3NUb1NraWxscyIsInVzZVVzZXIiLCJyZXNvbHZlUXVpY2tBY3Rpb25UeXBlIiwidXNlVCIsIk1haWFJbnB1dEFkZEljb24iLCJNYWlhSW5wdXRBdHRhY2hJY29uIiwiTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiIsIk1haWFJbnB1dERlZXBTZWFyY2hJY29uIiwiQ29yQWNjZXNzSWNvbiIsIk1haWFJbnB1dE1lbnRpb25JY29uIiwiTWFpYUlucHV0Um9ib3RJY29uIiwiTWFpYUlucHV0U2VuZEljb24iLCJNYWlhSW5wdXRTbGFzaEljb24iLCJTa2lsbEljb24iLCJNYWlhSW5wdXRXZWJTZWFyY2hJY29uIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJnZXRDaGF0VG9vbHNNZW51QWdlbnRUeXBlIiwiTUFJQV9DSEFUX0lOUFVUX1VJIiwiYWxsb3dlZEZpbGVUeXBlcyIsImZpbGVUeXBlcyIsImdldE1heEF0dGFjaG1lbnRTaXplTWIiLCJNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUyIsIkFQUENVRVNfRVZFTlRTIiwidHJhY2tBcHBjdWVzRXZlbnQiLCJDaGlwIiwiQ29udGV4dE1lbnRpb25FZGl0b3IiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwidXNlTWVudGlvblBvcG92ZXIiLCJ1c2VDYXJldFBvc2l0aW9uIiwiZGF0YVRyYW5zZmVySGFzRmlsZXMiLCJmaWxlc0Zyb21EYXRhVHJhbnNmZXIiLCJpc0ltYWdlQXR0YWNobWVudEZpbGUiLCJwcm9jZXNzSW5jb21pbmdDaGF0SW5wdXRGaWxlcyIsInNob3VsZENsZWFyRmlsZURyYWdPdmVybGF5Iiwic2hvdWxkSGFuZGxlRHJhZ0xlYXZlRXZlbnQiLCJzaG91bGRJbnRlcmNlcHRXcmFwcGVyUGFzdGUiLCJzaG91bGRPcGVuQXR0YWNobWVudFZhbGlkYXRpb25Nb2RhbCIsImRlY3JlbWVudEZpbGVEcmFnQ291bnRlciIsImFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzIiwiY2FuQXR0YWNoTW9yZUNoYXRJbnB1dEZpbGVzIiwiY2FuQ3JlYXRlU2tpbGxzRnJvbUlucHV0IiwiZ2V0QW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIiwiZ2V0Q3VzdG9tQWdlbnRNb2RlbERpc3BsYXlOYW1lIiwiZ2V0UmVtb3ZlZFNraWxsTWVudGlvbklkcyIsImdldFNraWxsTWVudGlvbklkcyIsImhhc0VkaXRvclR5cGluZ1ByZXNlbmNlIiwiaXNTZW5kRGlzYWJsZWQiLCJpc1NwZWNpYWxpc3RDbG9uZUFnZW50Rm9yQXBwY3VlcyIsInJlc29sdmVEZWVwU2VhcmNoUGx1c01lbnVBY3Rpb24iLCJyZXNvbHZlTWFpYUlucHV0RHJvcGRvd25Qb3NpdGlvbiIsInJlc29sdmVTZXNzaW9uQXV0b0ZvY3VzUGxhbiIsInJlc29sdmVTbGFzaENvbW1hbmRJbnNlcnRDb250ZXh0IiwicmVzb2x2ZVNsYXNoQ29tbWFuZHNBZ2VudElkIiwicmVzb2x2ZVRvb2xDaGlwRXhpdFRvZ2dsZSIsInJlc29sdmVXZWJTZWFyY2hQbHVzTWVudUFjdGlvbiIsInNob3VsZEFwcGx5SW5pdGlhbERyYWZ0Iiwic2hvdWxkQXV0b0ZvY3VzT25MYXlvdXRNb2RlQ2hhbmdlIiwic2hvdWxkT3BlblNraWxsc0hhc2hEcm9wZG93biIsInNob3VsZE9wZW5TbGFzaERyb3Bkb3duIiwic2hvdWxkU2hvd0N1c3RvbUFnZW50TWV0YUluZGljYXRvcnMiLCJzaG91bGRTaG93SW5wdXRDaGlwc1JvdyIsInNob3VsZFNob3dNZW50aW9uVG9vbGJhckJ1dHRvbiIsInNob3VsZFN0YXJ0VG9vbENoaXBFeGl0Iiwic2hvdWxkU3VibWl0T25FbnRlciIsImNhblN1Ym1pdENoYXRNZXNzYWdlIiwicmVzb2x2ZUFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUiLCJyZXNvbHZlQWN0aXZlVG9vbENoaXBTZWFyY2hMYWJlbCIsInJlc29sdmVNYWlhSW5wdXRTdHJlYW1pbmdEYXRhQXR0ciIsInJlc29sdmVNZWFzdXJlZExheW91dFJvd0hlaWdodCIsInNob3VsZE9ic2VydmVNYWlhSW5wdXRMYXlvdXRFbGVtZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiVE9PTF9DSElQX0VYSVRfTVMiLCJTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCIsIlNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgiLCJTS0lMTFNfRFJPUERPV05fV0lEVEhfUFgiLCJTTEFTSF9EUk9QRE9XTl9HQVBfUFgiLCJTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgiLCJQTFVTX01FTlVfUE9QUEVSX01PRElGSUVSUyIsIm5hbWUiLCJvcHRpb25zIiwib2Zmc2V0IiwiRU1QVFlfQVRUQUNITUVOVFMiLCJNQUlBSW5wdXQiLCJfcmVmIiwiX2NvbnRleHRDaGlwJGl0ZW1zIiwiX2NvbnRleHRDaGlwJGl0ZW1zMiIsIl9jb250ZXh0Q2hpcCRpdGVtczMiLCJvblNlbmRNZXNzYWdlIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwib25Gb2N1cyIsIl9yZWYkYWxpZ25CdXR0b25zIiwiYWxpZ25CdXR0b25zIiwib25GaWxlQXR0YWNoIiwib25EZWxldGVBdHRhY2htZW50IiwiX3JlZiRhdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiY2hhdElkIiwibmV3Q2hhdEtleSIsInRvb2x0aXBaSW5kZXgiLCJleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYiLCJwb3BvdmVyQW5jaG9yUmVmIiwibGF5b3V0TW9kZSIsImNvbnRleHRDaGlwIiwiX3JlZiRvcmNoZXN0cmF0b3JIb21lIiwib3JjaGVzdHJhdG9ySG9tZUNvbXBvc2VyIiwiX3VzZVQiLCJ0IiwiZWRpdG9yUmVmIiwiZmlsZUlucHV0UmVmIiwiY2hpcHNSb3dSZWYiLCJ0b29sYmFyUm93UmVmIiwiaW50ZXJuYWxXcmFwcGVyUmVmIiwid3JhcHBlclJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImhhc1R5cGluZ1ByZXNlbmNlIiwic2V0SGFzVHlwaW5nUHJlc2VuY2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImNoaXBzUm93SGVpZ2h0Iiwic2V0Q2hpcHNSb3dIZWlnaHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInRvb2xiYXJSb3dIZWlnaHQiLCJzZXRUb29sYmFyUm93SGVpZ2h0IiwiX3VzZVN0YXRlNyIsImlzT3BlbiIsImV4Y2x1ZGVkRmlsZXMiLCJleGNlZWRlZEZpbGVzIiwiZmlsZVNpemVzIiwiX3VzZVN0YXRlOCIsIm1vZGFsUHJvcHMiLCJzZXRNb2RhbFByb3BzIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwidG9nZ2xlRGVlcFNlYXJjaCIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImlzQXV0b0FwcHJvdmVBY3RpdmUiLCJ0b2dnbGVBdXRvQXBwcm92ZSIsImFnZW50IiwiaW5pdGlhbERyYWZ0IiwiZGVlcExpbmtTZW5kUGVuZGluZ1JlZiIsInBsdXNNZW51WkluZGV4IiwiaW5pdGlhbERyYWZ0QXBwbGllZFJlZiIsIl91c2VNZW50aW9uUG9wb3ZlciIsInBvcG92ZXJPcGVuIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiaGFuZGxlVHJpZ2dlciIsImhhbmRsZVBvcG92ZXJLZXlEb3duIiwiaGFuZGxlS2V5RG93biIsInBvcG92ZXJOb2RlIiwiY2xvc2VNZW50aW9uUG9wb3ZlciIsImNsb3NlIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJwbHVzTWVudUFuY2hvciIsInNldFBsdXNNZW51QW5jaG9yIiwicGx1c01lbnVQYXBlclJlZiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImFjdGl2ZVRvb2xDaGlwSG92ZXJlZCIsInNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZCIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJ0b29sQ2hpcEV4aXRpbmciLCJzZXRUb29sQ2hpcEV4aXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiYXV0b0FwcHJvdmVDaGlwSG92ZXJlZCIsInNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiaXNGaWxlRHJhZ0FjdGl2ZSIsInNldElzRmlsZURyYWdBY3RpdmUiLCJ0b29sQ2hpcEV4aXRUaW1lclJlZiIsImZpbGVEcmFnQ291bnRlclJlZiIsInNlYXJjaE1vZGVBY3RpdmVSZWYiLCJ3ZWIiLCJkZWVwIiwicGx1c01lbnVPcGVuIiwiQm9vbGVhbiIsInByZXZpb3VzQWdlbnRJZFJlZiIsInVuZGVmaW5lZCIsInByZXZpb3VzQ2hhdElkUmVmIiwicHJldmlvdXNOZXdDaGF0S2V5UmVmIiwicHJldmlvdXNMYXlvdXRNb2RlUmVmIiwiYW5hbHl0aWNzQWdlbnRUeXBlIiwiYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIiwiX3VzZVNsYXNoQ29tbWFuZHMiLCJzbGFzaENvbW1hbmRzIiwiY29tbWFuZHMiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwic2hvd1NsYXNoRHJvcGRvd24iLCJzZXRTaG93U2xhc2hEcm9wZG93biIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJzbGFzaFF1ZXJ5Iiwic2V0U2xhc2hRdWVyeSIsInNsYXNoTWVudVdhc09wZW5SZWYiLCJzbGFzaERyb3Bkb3duWkluZGV4IiwiZ2V0Q2FyZXRSZWN0IiwiX3VzZVN0YXRlMjEiLCJib3R0b20iLCJsZWZ0IiwibWF4SGVpZ2h0IiwiX3VzZVN0YXRlMjIiLCJzbGFzaERyb3Bkb3duUG9zIiwic2V0U2xhc2hEcm9wZG93blBvcyIsInVzZXIiLCJzaG93U2tpbGxzQnV0dG9uIiwic2tpbGxzQnV0dG9uUmVmIiwic2tpbGxzTWVudVdhc09wZW5SZWYiLCJza2lsbHNPcGVuU291cmNlUmVmIiwicHJldlNraWxsTWVudGlvbklkc1JlZiIsInNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmIiwiX3VzZVNraWxsc0NhdGFsb2ciLCJza2lsbHMiLCJza2lsbHNMb2FkaW5nIiwibG9hZGluZyIsInNraWxsc0Vycm9yIiwiZXJyb3IiLCJmZXRjaFNraWxscyIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJzaG93U2tpbGxzRHJvcGRvd24iLCJzZXRTaG93U2tpbGxzRHJvcGRvd24iLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2Iiwic2tpbGxzUXVlcnkiLCJzZXRTa2lsbHNRdWVyeSIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJza2lsbHNEcm9wZG93blBvcyIsInNldFNraWxsc0Ryb3Bkb3duUG9zIiwicG9zaXRpb25TbGFzaERyb3Bkb3duIiwiX3dyYXBwZXJSZWYkY3VycmVudCIsIl93cmFwcGVyUmVjdCR3aWR0aCIsIndyYXBwZXJSZWN0IiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNhcmV0IiwibmV4dFBvcyIsImNhcmV0VG9wIiwidG9wIiwiY2FyZXRMZWZ0Iiwid3JhcHBlclRvcCIsIndyYXBwZXJMZWZ0Iiwid3JhcHBlcldpZHRoIiwid2lkdGgiLCJ2aWV3cG9ydEhlaWdodCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwidmlld3BvcnRXaWR0aCIsImlubmVyV2lkdGgiLCJkcm9wZG93bldpZHRoUHgiLCJtYXhEcm9wZG93bkhlaWdodFB4IiwiZ2FwUHgiLCJ2aWV3cG9ydFBhZFB4IiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicG9zaXRpb25Ta2lsbHNEcm9wZG93biIsIl93cmFwcGVyUmVmJGN1cnJlbnQyIiwiX3dyYXBwZXJSZWN0JHdpZHRoMiIsInNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInNldFRpbWVvdXQiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJmb2N1cyIsImNsb3NlUGx1c01lbnUiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCJldmVudCIsIl9wbHVzTWVudVBhcGVyUmVmJGN1ciIsInRhcmdldCIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0IiwiY2xlYXJUaW1lb3V0IiwiaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duIiwiaGFuZGxlQ2xvc2VTa2lsbHNEcm9wZG93biIsImhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24iLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVQbHVzQnV0dG9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50VGFyZ2V0IiwiYWlDaGF0UGx1c09wZW4iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImhhbmRsZU1lbnRpb25CdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJpbnNlcnRNZW50aW9uVHJpZ2dlciIsImhhbmRsZVBsdXNNZW51QXR0YWNoIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiYWlDaGF0VG9vbHMiLCJvcHRpb24iLCJsZW5ndGgiLCJjbGljayIsImJlZ2luVG9vbENoaXBFeGl0Iiwid2FzV2ViIiwid2FzRGVlcCIsInRvZ2dsZVRhcmdldCIsImhhbmRsZVBsdXNNZW51V2ViU2VhcmNoIiwiYWN0aW9uIiwia2luZCIsInR1cm5PZmZEZWVwIiwiaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoIiwidHVybk9mZldlYiIsImhhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsImluc2VydFNsYXNoVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ1IiwiZHJhZnQiLCJ0cmltIiwic2V0UGxhaW5UZXh0IiwiX2VkaXRvclJlZiRjdXJyZW50NiIsInNlbmREaXNhYmxlZCIsImZvY3VzUGxhbiIsInByZXZpb3VzQWdlbnRJZCIsImN1cnJlbnRBZ2VudElkIiwiaWQiLCJwcmV2aW91c0NoYXRJZCIsImN1cnJlbnRDaGF0SWQiLCJwcmV2aW91c05ld0NoYXRLZXkiLCJjdXJyZW50TmV3Q2hhdEtleSIsInRpbWVvdXRJZCIsInNob3VsZEZvY3VzIiwiX2VkaXRvclJlZiRjdXJyZW50NyIsImRlbGF5TXMiLCJwcmV2aW91c0xheW91dE1vZGUiLCJfZWRpdG9yUmVmJGN1cnJlbnQ4Iiwib2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsIl9yZWYyIiwiX3JlZjMiLCJlbnRyeSIsImlzSW50ZXJzZWN0aW5nIiwibWFpYUNvbnRleHRNZW50aW9uSW5pdCIsImRpc2Nvbm5lY3QiLCJ0aHJlc2hvbGQiLCJvYnNlcnZlIiwidHlwZSIsImVudGl0eSIsImhhbmRsZVNlc3Npb25DaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQ5IiwiY2xlYXIiLCJoYW5kbGVSZWZvY3VzIiwiX2VkaXRvclJlZiRjdXJyZW50MCIsImhhbmRsZUluc2VydFNraWxsTWVudGlvbiIsIl9lZGl0b3JSZWYkY3VycmVudDEiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMCIsIl9yZWY0IiwiZGV0YWlsIiwic2tpbGwiLCJub3JtYWxpemVkTmFtZSIsInJlcGxhY2UiLCJhcHBlbmRNZW50aW9uQXRFbmQiLCJsYWJlbCIsImNvbmNhdCIsIl9lZGl0b3JSZWYkY3VycmVudDExIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMiIsIl9zdGF0ZSR0ZXh0IiwiX3N0YXRlJG1lbnRpb25zIiwiX2VkaXRvclJlZiRjdXJyZW50MTMiLCJzdGF0ZSIsInNlcmlhbGl6ZSIsInRleHQiLCJtZW50aW9ucyIsImhhbmRsZVNlbGVjdFNsYXNoQ29tbWFuZCIsImNvbW1hbmQiLCJfZWRpdG9yUmVmJGN1cnJlbnQxNCIsIl9zdGF0ZSR0ZXh0MiIsIl9lZGl0b3JSZWYkY3VycmVudDE2IiwiYWlDaGF0UXVpY2tBY3Rpb25TZWxlY3QiLCJ0eXBlX3F1aWNrX2FjdGlvbiIsIm9yaWdpbl9xdWlja19hY3Rpb24iLCJfcmVzb2x2ZVNsYXNoQ29tbWFuZEkiLCJpc0VtcHR5QmVmb3JlVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDE1IiwidGl0bGUiLCJpbnNlcnRTbGFzaENvbW1hbmQiLCJoYW5kbGVTa2lsbHNCdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDE3IiwiaW5zZXJ0U2tpbGxUcmlnZ2VyIiwiaGFuZGxlU2VsZWN0U2tpbGwiLCJfZWRpdG9yUmVmJGN1cnJlbnQxOCIsImFpQ2hhdFNraWxsU2VsZWN0Iiwic2tpbGxfaWQiLCJzb3VyY2UiLCJpbnNlcnRTa2lsbE1lbnRpb24iLCJoYW5kbGVDcmVhdGVTa2lsbCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsInNraWxsVmFsdWVzIiwidmFsdWVzIiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiYW5hbHl0aWNzU291cmNlIiwiaGFuZGxlRWRpdG9ySW5wdXQiLCJfcmVmNSIsInRyaWdnZXIiLCJzbGFzaFRyaWdnZXIiLCJoYXNoVHJpZ2dlciIsImN1cnJlbnRTa2lsbElkcyIsImZvckVhY2giLCJza2lsbElkIiwiYWlDaGF0U2tpbGxSZW1vdmUiLCJfc2xhc2hUcmlnZ2VyJHF1ZXJ5IiwiYWlDaGF0UXVpY2tBY3Rpb25PcGVuIiwicXVlcnkiLCJfaGFzaFRyaWdnZXIkcXVlcnkiLCJhaUNoYXRTa2lsbE9wZW4iLCJrZXkiLCJzaGlmdEtleSIsImFkZEZpbGVzIiwiaW5jb21pbmciLCJfcHJvY2Vzc0luY29taW5nQ2hhdEkiLCJhbGxvd2VkRXh0ZW5zaW9ucyIsImN1cnJlbnRBdHRhY2htZW50Q291bnQiLCJtYXhBdHRhY2htZW50cyIsImdldE1heFNpemVNYiIsImZpbGVzVG9BdHRhY2giLCJmaWxlIiwiaGFuZGxlRmlsZVNlbGVjdCIsImZpbGVzIiwiQXJyYXkiLCJmcm9tIiwidmFsdWUiLCJyZXNldEZpbGVEcmFnIiwiaGFuZGxlRHJhZ0VudGVyIiwiZGF0YVRyYW5zZmVyIiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlRHJhZ092ZXIiLCJkcm9wRWZmZWN0IiwiaGFuZGxlRHJvcCIsImhhbmRsZVBhc3RlRmlsZXMiLCJoYW5kbGVXcmFwcGVyUGFzdGUiLCJfd3JhcHBlclJlZiRjdXJyZW50MyIsImVkaXRvckVsIiwicXVlcnlTZWxlY3RvciIsImNsaXBib2FyZERhdGEiLCJoYW5kbGVEZWxldGVBdHRhY2htZW50IiwiZmlsZUlkIiwiaGFuZGxlU3RvcEdlbmVyYXRpb24iLCJhaUNoYXRTdG9wUmVzcG9uc2UiLCJzaG93Q2hpcHNSb3ciLCJpdGVtcyIsImNoaXBzRWwiLCJ0b29sYmFyRWwiLCJ1cGRhdGVIZWlnaHRzIiwibmV4dENoaXBzIiwiTWF0aCIsImNlaWwiLCJoZWlnaHQiLCJuZXh0VG9vbGJhciIsInByZXYiLCJSZXNpemVPYnNlcnZlciIsImVkaXRvck1heEhlaWdodCIsImNoaXBzUm93SGVpZ2h0UHgiLCJ0b29sYmFyUm93SGVpZ2h0UHgiLCJ0b29sYmFySWNvbkNvbG9yIiwicGx1c01lbnVJY29uQ29sb3IiLCJtZW51SWNvbiIsImhhc0NvckFjY2VzcyIsImFnZW50TW9kZWxOYW1lIiwic2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzIiwic2hvd01lbnRpb25CdXR0b24iLCJhY3RpdmVUb29sQ2hpcEljb25Nb2RlIiwiYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbkJ5TW9kZSIsImNvbG9yIiwiY2hpcENsb3NlSWNvbiIsImFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24iLCJjaGlsZHJlbiIsInJlZiIsImhhc0F0dGFjaG1lbnRzIiwiJGZpbGVEcmFnQWN0aXZlIiwib25QYXN0ZSIsIm9uRHJhZ0VudGVyIiwib25EcmFnTGVhdmUiLCJvbkRyYWdPdmVyIiwib25Ecm9wIiwiZW50aXR5SWQiLCJsZWFkaW5nSWNvbiIsIm9uRW50aXR5TmF2aWdhdGUiLCJtYXAiLCJhdHRhY2htZW50IiwiaXNJbWFnZSIsImNoaXBJY29uIiwiekluZGV4IiwiZGVmYXVsdFZhbHVlIiwib25DbGljayIsIm9uSW5wdXQiLCJvbktleURvd24iLCJvblBhc3RlRmlsZXMiLCIkbWVudU9wZW4iLCJvbk1vdXNlRG93biIsIm9wZW4iLCJhbmNob3JFbCIsInBsYWNlbWVudCIsInRyYW5zaXRpb24iLCJzdHlsZSIsIm1vZGlmaWVycyIsIl9kZWZpbmVQcm9wZXJ0eSIsIl9yZWY3IiwiVHJhbnNpdGlvblByb3BzIiwidHJhbnNmb3JtT3JpZ2luIiwiJGhvdmVyZWQiLCIkZXhpdGluZyIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIiRjbG9zZVNob3duIiwid2ViU2VhcmNoTGFiZWwiLCJkZWVwU2VhcmNoTGFiZWwiLCJtb2RlbCIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwiaGFzVmFsdWVzIiwibXVsdGlwbGUiLCJhY2NlcHQiLCJvbkNsb3NlIiwiYm9keSIsIm9uU2VsZWN0IiwiYW5jaG9yUmVmIiwiY2FuQ3JlYXRlIiwiY29tcGFueV9pZCIsIm9uQ3JlYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12b2lkICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWxvbmVseS1pZiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRXZlbnQsXG4gIENsaXBib2FyZEV2ZW50LFxuICBEcmFnRXZlbnQsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgTXV0YWJsZVJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IEdyb3csIFBvcHBlciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnXG5pbXBvcnQgeyBDaGVjayB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZWNrJ1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zcydcbmltcG9ydCB7IEJvbHQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Cb2x0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuXG5pbXBvcnQge1xuICBBY3RpdmVUb29sQ2hpcEljb25CdXR0b24sXG4gIEFjdGl2ZVRvb2xDaGlwTGFiZWwsXG4gIEFjdGl2ZVRvb2xDaGlwUm9vdCxcbiAgUGx1c01lbnVEaXZpZGVyLFxuICBQbHVzTWVudUlubmVyQ29sdW1uLFxuICBQbHVzTWVudUl0ZW1CdXR0b24sXG4gIFBsdXNNZW51SXRlbUxhYmVsLFxuICBQbHVzTWVudVBhcGVyLFxuICBQbHVzTWVudVRvb2xzUm93LFxuICBQbHVzVG9nZ2xlQnV0dG9uLFxuICBTa2lsbHNUb2dnbGVCdXR0b24sXG4gIFNDSW5wdXRDaGlwc1JvdyxcbiAgU0NJbnB1dE1ldGFJY29uQnV0dG9uLFxuICBTQ0lucHV0TWV0YUluZGljYXRvcnMsXG4gIFNDTUlBdHRhY2htZW50LFxuICBTQ01JQXR0YWNobWVudERlbGV0ZUljb24sXG4gIFNDTUlBdHRhY2htZW50RmlsZUljb24sXG4gIFNDTUlBdHRhY2htZW50SWNvbixcbiAgU0NNSUF0dGFjaG1lbnROYW1lLFxuICBTdHlsZWRNQUlBSW5wdXRXcmFwcGVyLFxuICBTdHlsZWRNQUlBU2VuZEJ1dHRvbixcbiAgU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCxcbiAgU0NJbnB1dEVkaXRvckNlbGwsXG4gIFNDSW5wdXRUb29sYmFyUm93LFxuICBTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsLFxuICBTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsLFxuICBTdHlsZWRNQUlBU3RvcEJ1dHRvbixcbiAgU3R5bGVkTUFJQVN0b3BJY29uLFxuICBTdHlsZWRNQUlBRHJvcE92ZXJsYXksXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0LCBNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWCB9IGZyb20gJy4vbWFpYUlucHV0TGF5b3V0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL21haWFUYXNrUGFuZWxPdXRzaWRlQ2xpY2snXG5pbXBvcnQgeyBNb2RhbEZpbGVFeGNlZWRzIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL01vZGFsRmlsZUV4Y2VlZHMnXG5pbXBvcnQgeyBTbGFzaENvbW1hbmREcm9wZG93biB9IGZyb20gJy4uL1NsYXNoQ29tbWFuZERyb3Bkb3duJ1xuaW1wb3J0IHsgU2tpbGxzRHJvcGRvd24gfSBmcm9tICcuLi9Ta2lsbHNEcm9wZG93bidcbmltcG9ydCB7IHVzZVNsYXNoQ29tbWFuZHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbGFzaENvbW1hbmRzJ1xuaW1wb3J0IHsgdXNlU2tpbGxzQ2F0YWxvZyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNraWxsc0NhdGFsb2cnXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb1NraWxscyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHR5cGUgeyBTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZSdcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQWN0aW9uJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBNYWlhSW5wdXRBZGRJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QWRkSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dEF0dGFjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBdHRhY2hJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dERlZXBTZWFyY2hJY29uJ1xuaW1wb3J0IHsgQ29yQWNjZXNzSWNvbiB9IGZyb20gJy4uL2ljb25zL0NvckFjY2Vzc0ljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRNZW50aW9uSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dE1lbnRpb25JY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0Um9ib3RJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0Um9ib3RJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0U2VuZEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRTZW5kSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFNsYXNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFNsYXNoSWNvbidcbmltcG9ydCB7IFNraWxsSWNvbiB9IGZyb20gJy4uL2ljb25zL1NraWxsSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFdlYlNlYXJjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRXZWJTZWFyY2hJY29uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hpdGxBbmFseXRpY3MnXG5pbXBvcnQgeyBNQUlBX0NIQVRfSU5QVVRfVUkgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvY29uZmlnJ1xuaW1wb3J0IHtcbiAgYWxsb3dlZEZpbGVUeXBlcyxcbiAgZmlsZVR5cGVzLFxuICBnZXRNYXhBdHRhY2htZW50U2l6ZU1iLFxuICBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUyxcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Zvcm1hdEV4dGVuc2lvbnMnXG5pbXBvcnQgeyBBUFBDVUVTX0VWRU5UUywgdHJhY2tBcHBjdWVzRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHBjdWVzJ1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gJy4uL0NoaXAnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvciwgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUgfSBmcm9tICcuLi9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgdXNlTWVudGlvblBvcG92ZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZUNhcmV0UG9zaXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBkYXRhVHJhbnNmZXJIYXNGaWxlcywgZmlsZXNGcm9tRGF0YVRyYW5zZmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2hhdElucHV0RmlsZXMnXG5pbXBvcnQge1xuICBpc0ltYWdlQXR0YWNobWVudEZpbGUsXG4gIHByb2Nlc3NJbmNvbWluZ0NoYXRJbnB1dEZpbGVzLFxuICBzaG91bGRDbGVhckZpbGVEcmFnT3ZlcmxheSxcbiAgc2hvdWxkSGFuZGxlRHJhZ0xlYXZlRXZlbnQsXG4gIHNob3VsZEludGVyY2VwdFdyYXBwZXJQYXN0ZSxcbiAgc2hvdWxkT3BlbkF0dGFjaG1lbnRWYWxpZGF0aW9uTW9kYWwsXG4gIGRlY3JlbWVudEZpbGVEcmFnQ291bnRlcixcbn0gZnJvbSAnLi9NQUlBSW5wdXQuYXR0YWNobWVudHMuaGVscGVycydcbmltcG9ydCB7XG4gIGFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzLFxuICBjYW5BdHRhY2hNb3JlQ2hhdElucHV0RmlsZXMsXG4gIGNhbkNyZWF0ZVNraWxsc0Zyb21JbnB1dCxcbiAgZ2V0QW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICBnZXRDdXN0b21BZ2VudE1vZGVsRGlzcGxheU5hbWUsXG4gIGdldFJlbW92ZWRTa2lsbE1lbnRpb25JZHMsXG4gIGdldFNraWxsTWVudGlvbklkcyxcbiAgaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UsXG4gIGlzU2VuZERpc2FibGVkLFxuICBpc1NwZWNpYWxpc3RDbG9uZUFnZW50Rm9yQXBwY3VlcyxcbiAgcmVzb2x2ZURlZXBTZWFyY2hQbHVzTWVudUFjdGlvbixcbiAgcmVzb2x2ZU1haWFJbnB1dERyb3Bkb3duUG9zaXRpb24sXG4gIHJlc29sdmVTZXNzaW9uQXV0b0ZvY3VzUGxhbixcbiAgcmVzb2x2ZVNsYXNoQ29tbWFuZEluc2VydENvbnRleHQsXG4gIHJlc29sdmVTbGFzaENvbW1hbmRzQWdlbnRJZCxcbiAgcmVzb2x2ZVRvb2xDaGlwRXhpdFRvZ2dsZSxcbiAgcmVzb2x2ZVdlYlNlYXJjaFBsdXNNZW51QWN0aW9uLFxuICBzaG91bGRBcHBseUluaXRpYWxEcmFmdCxcbiAgc2hvdWxkQXV0b0ZvY3VzT25MYXlvdXRNb2RlQ2hhbmdlLFxuICBzaG91bGRPcGVuU2tpbGxzSGFzaERyb3Bkb3duLFxuICBzaG91bGRPcGVuU2xhc2hEcm9wZG93bixcbiAgc2hvdWxkU2hvd0N1c3RvbUFnZW50TWV0YUluZGljYXRvcnMsXG4gIHNob3VsZFNob3dJbnB1dENoaXBzUm93LFxuICBzaG91bGRTaG93TWVudGlvblRvb2xiYXJCdXR0b24sXG4gIHNob3VsZFN0YXJ0VG9vbENoaXBFeGl0LFxuICBzaG91bGRTdWJtaXRPbkVudGVyLFxuICBjYW5TdWJtaXRDaGF0TWVzc2FnZSxcbiAgdHlwZSBBY3RpdmVUb29sQ2hpcEljb25Nb2RlLFxuICByZXNvbHZlQWN0aXZlVG9vbENoaXBJY29uTW9kZSxcbiAgcmVzb2x2ZUFjdGl2ZVRvb2xDaGlwU2VhcmNoTGFiZWwsXG4gIHJlc29sdmVNYWlhSW5wdXRTdHJlYW1pbmdEYXRhQXR0cixcbiAgcmVzb2x2ZU1lYXN1cmVkTGF5b3V0Um93SGVpZ2h0LFxuICBzaG91bGRPYnNlcnZlTWFpYUlucHV0TGF5b3V0RWxlbWVudCxcbn0gZnJvbSAnLi9NQUlBSW5wdXQuaGVscGVycydcblxuY29uc3QgVE9PTF9DSElQX0VYSVRfTVMgPSAyMjBcbmNvbnN0IFNMQVNIX0RST1BET1dOX1dJRFRIX1BYID0gMzQwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYID0gNDE2XG5jb25zdCBTS0lMTFNfRFJPUERPV05fV0lEVEhfUFggPSAzMzlcbmNvbnN0IFNMQVNIX0RST1BET1dOX0dBUF9QWCA9IDRcbmNvbnN0IFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCA9IDhcbi8qKiBTZXBhcmFjaW9uIGVudHJlIGVsIGJvdG9uICsgeSBlbCBtZW51LiAqL1xuY29uc3QgUExVU19NRU5VX1BPUFBFUl9NT0RJRklFUlMgPSBbeyBuYW1lOiAnb2Zmc2V0Jywgb3B0aW9uczogeyBvZmZzZXQ6IFswLCA0XSB9IH1dXG5cbnR5cGUgQXR0YWNobWVudEZpbGUgPSB7XG4gIGZpbGU6IEZpbGVcbiAgb3JpZ2luYWxGaWxlPzogRmlsZVxuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbn1cblxuY29uc3QgRU1QVFlfQVRUQUNITUVOVFM6IEF0dGFjaG1lbnRGaWxlW10gPSBbXVxuXG50eXBlIE1BSUFJbnB1dFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIG9uU2VuZE1lc3NhZ2U6IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBmdWFJZD86IHN0cmluZyxcbiAgICBzY0lkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBvblN0b3BHZW5lcmF0aW9uPzogKCgpID0+IHZvaWQpIHwgbnVsbFxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBvbkNoYW5nZT86ICgpID0+IHZvaWRcbiAgb25Gb2N1cz86ICgpID0+IHZvaWRcbiAgYWxpZ25CdXR0b25zPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuICBvbkZpbGVBdHRhY2g/OiAoZmlsZTogRmlsZSkgPT4gdm9pZFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQ/OiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGNoYXRJZD86IHN0cmluZ1xuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgLyoqIEV4cG9uZSBlbCB3cmFwcGVyIGRlbCBpbnB1dCBwYXJhIGFuY2xhciBwb3BvdmVycyAobWVuY2lvbmVzLCBwaW4gZGUgY29udGV4dG8pLiAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIGxheW91dE1vZGU/OiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnXG4gIC8qKiBDaGlwIGRlIGNvbnRleHRvICh0YXJlYS9wcm95ZWN0by9jbGllbnRlL2dsb2JhbCkgbW9zdHJhZG8gZW4gbGEgdG9vbGJhciBkZWwgaW5wdXQuICovXG4gIGNvbnRleHRDaGlwPzoge1xuICAgIGl0ZW1zOiBzdHJpbmdbXVxuICAgIHR5cGU/OiBDb250ZXh0RW50aXR5VHlwZVxuICAgIGVudGl0eUlkPzogc3RyaW5nIHwgbnVtYmVyXG4gICAgbGVhZGluZ0ljb24/OiBSZWFjdE5vZGVcbiAgICBvbkVudGl0eU5hdmlnYXRlPzogKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpZDogc3RyaW5nIHwgbnVtYmVyKSA9PiB2b2lkXG4gIH0gfCBudWxsXG4gIC8qKiBIb21lIC9tYWlhOiBtdWVzdHJhIEAgbWllbnRyYXMgZWwgb3JjaGVzdHJhdG9yIGHDum4gbm8gZXN0w6EgZW4gY29udGV4dG8uICovXG4gIG9yY2hlc3RyYXRvckhvbWVDb21wb3Nlcj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IE1BSUFJbnB1dCA9ICh7XG4gIG9uU2VuZE1lc3NhZ2UsXG4gIGNsYXNzTmFtZSxcbiAgZGlzYWJsZWQsXG4gIGlzU3RyZWFtaW5nLFxuICBpc1dyaXRpbmcsXG4gIG9uU3RvcEdlbmVyYXRpb24sXG4gIHBsYWNlaG9sZGVyLFxuICBvbkNoYW5nZSxcbiAgb25Gb2N1cyxcbiAgYWxpZ25CdXR0b25zID0gJ3ZlcnRpY2FsJyxcbiAgb25GaWxlQXR0YWNoLFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQsXG4gIGF0dGFjaG1lbnRzID0gRU1QVFlfQVRUQUNITUVOVFMsXG4gIGNoYXRJZCxcbiAgbmV3Q2hhdEtleSxcbiAgdG9vbHRpcFpJbmRleCxcbiAgcG9wb3ZlckFuY2hvclJlZjogZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmLFxuICBsYXlvdXRNb2RlLFxuICBjb250ZXh0Q2hpcCxcbiAgb3JjaGVzdHJhdG9ySG9tZUNvbXBvc2VyID0gZmFsc2UsXG59OiBNQUlBSW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWY8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+KG51bGwpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGlwc1Jvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdG9vbGJhclJvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaW50ZXJuYWxXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB3cmFwcGVyUmVmID0gZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmID8/IGludGVybmFsV3JhcHBlclJlZlxuICBjb25zdCBbaGFzVHlwaW5nUHJlc2VuY2UsIHNldEhhc1R5cGluZ1ByZXNlbmNlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY2hpcHNSb3dIZWlnaHQsIHNldENoaXBzUm93SGVpZ2h0XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFt0b29sYmFyUm93SGVpZ2h0LCBzZXRUb29sYmFyUm93SGVpZ2h0XSA9IHVzZVN0YXRlKE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYKVxuICBjb25zdCBbbW9kYWxQcm9wcywgc2V0TW9kYWxQcm9wc10gPSB1c2VTdGF0ZSh7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBleGNsdWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBleGNlZWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBmaWxlU2l6ZXM6IHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4gIH0pXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7XG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZURlZXBTZWFyY2gsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gICAgdG9nZ2xlQXV0b0FwcHJvdmUsXG4gICAgYWdlbnQsXG4gICAgaW5pdGlhbERyYWZ0LFxuICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgcGx1c01lbnVaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEzMDAsICdvdmVybGF5JylcbiAgY29uc3QgaW5pdGlhbERyYWZ0QXBwbGllZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCB7XG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLFxuICAgIGhhbmRsZVRyaWdnZXIsXG4gICAgaGFuZGxlS2V5RG93bjogaGFuZGxlUG9wb3ZlcktleURvd24sXG4gICAgcG9wb3Zlck5vZGUsXG4gICAgY2xvc2U6IGNsb3NlTWVudGlvblBvcG92ZXIsXG4gIH0gPSB1c2VNZW50aW9uUG9wb3Zlcih7XG4gICAgZWRpdG9yUmVmLFxuICAgIHBvcG92ZXJBbmNob3JSZWY6IHdyYXBwZXJSZWYsXG4gIH0pXG5cbiAgY29uc3QgW3BsdXNNZW51QW5jaG9yLCBzZXRQbHVzTWVudUFuY2hvcl0gPSB1c2VTdGF0ZTxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHBsdXNNZW51UGFwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUb29sQ2hpcEhvdmVyZWQsIHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Rvb2xDaGlwRXhpdGluZywgc2V0VG9vbENoaXBFeGl0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbYXV0b0FwcHJvdmVDaGlwSG92ZXJlZCwgc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzRmlsZURyYWdBY3RpdmUsIHNldElzRmlsZURyYWdBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHRvb2xDaGlwRXhpdFRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZmlsZURyYWdDb3VudGVyUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNlYXJjaE1vZGVBY3RpdmVSZWYgPSB1c2VSZWYoeyB3ZWI6IGZhbHNlLCBkZWVwOiBmYWxzZSB9KVxuICBjb25zdCBwbHVzTWVudU9wZW4gPSBCb29sZWFuKHBsdXNNZW51QW5jaG9yKVxuXG4gIC8vIEluaWNpYWxpemFyIGxhcyByZWZlcmVuY2lhcyBjb21vIHVuZGVmaW5lZCBwYXJhIGRldGVjdGFyIGVsIHByaW1lciBjYW1iaW8gY29ycmVjdGFtZW50ZVxuICBjb25zdCBwcmV2aW91c0FnZW50SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzQ2hhdElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c05ld0NoYXRLZXlSZWYgPSB1c2VSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzTGF5b3V0TW9kZVJlZiA9IHVzZVJlZjxNQUlBSW5wdXRQcm9wc1snbGF5b3V0TW9kZSddPih1bmRlZmluZWQpXG5cbiAgY29uc3QgYW5hbHl0aWNzQWdlbnRUeXBlID0gZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZShhZ2VudClcbiAgY29uc3QgYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkID0gZ2V0QW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkKGFnZW50KVxuXG4gIC8vIFNsYXNoIGNvbW1hbmRzIGFwbGljYW4gYSBjbG9uZXMgZXNwZWNpYWxpc3RhcyB5IGFsIG9yY2hlc3RyYXRvciBnbG9iYWwgKGVzdGUgYWdyZWdhIGxvcyBkZSBzdXMgc3ViYWdlbnRlcykuXG4gIC8vIExvcyBjdXN0b20geSBsb3MgY2xvbmUgZ2xvYmFsL21haWFrZXIgbm8gbG9zIHRpZW5lbiBoYWJpbGl0YWRvcy5cbiAgY29uc3QgeyBjb21tYW5kczogc2xhc2hDb21tYW5kcyB9ID0gdXNlU2xhc2hDb21tYW5kcyhyZXNvbHZlU2xhc2hDb21tYW5kc0FnZW50SWQoYWdlbnQpKVxuICBjb25zdCBbc2hvd1NsYXNoRHJvcGRvd24sIHNldFNob3dTbGFzaERyb3Bkb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2xhc2hRdWVyeSwgc2V0U2xhc2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3Qgc2xhc2hNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2xhc2hEcm9wZG93blpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTIwMCwgJ292ZXJsYXknKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcbiAgY29uc3QgW3NsYXNoRHJvcGRvd25Qb3MsIHNldFNsYXNoRHJvcGRvd25Qb3NdID0gdXNlU3RhdGUoe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIG1heEhlaWdodDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgfSlcblxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHNob3dTa2lsbHNCdXR0b24gPSBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKVxuICBjb25zdCBza2lsbHNCdXR0b25SZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBza2lsbHNNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2tpbGxzT3BlblNvdXJjZVJlZiA9IHVzZVJlZjwnYnV0dG9uJyB8ICdoYXNoJz4oJ2hhc2gnKVxuICBjb25zdCBwcmV2U2tpbGxNZW50aW9uSWRzUmVmID0gdXNlUmVmPHN0cmluZ1tdPihbXSlcbiAgY29uc3Qgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHsgc2tpbGxzLCBsb2FkaW5nOiBza2lsbHNMb2FkaW5nLCBlcnJvcjogc2tpbGxzRXJyb3IsIGZldGNoU2tpbGxzIH0gPSB1c2VTa2lsbHNDYXRhbG9nKClcbiAgY29uc3QgW3Nob3dTa2lsbHNEcm9wZG93biwgc2V0U2hvd1NraWxsc0Ryb3Bkb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2tpbGxzUXVlcnksIHNldFNraWxsc1F1ZXJ5XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbc2tpbGxzRHJvcGRvd25Qb3MsIHNldFNraWxsc0Ryb3Bkb3duUG9zXSA9IHVzZVN0YXRlKHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICBtYXhIZWlnaHQ6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gIH0pXG5cbiAgY29uc3QgcG9zaXRpb25TbGFzaERyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXJSZWN0ID0gd3JhcHBlclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCcvJylcbiAgICBjb25zdCBuZXh0UG9zID0gcmVzb2x2ZU1haWFJbnB1dERyb3Bkb3duUG9zaXRpb24oe1xuICAgICAgY2FyZXRUb3A6IGNhcmV0Py50b3AsXG4gICAgICBjYXJldExlZnQ6IGNhcmV0Py5sZWZ0LFxuICAgICAgd3JhcHBlclRvcDogd3JhcHBlclJlY3Q/LnRvcCxcbiAgICAgIHdyYXBwZXJMZWZ0OiB3cmFwcGVyUmVjdD8ubGVmdCxcbiAgICAgIHdyYXBwZXJXaWR0aDogd3JhcHBlclJlY3Q/LndpZHRoID8/IDAsXG4gICAgICB2aWV3cG9ydEhlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgdmlld3BvcnRXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICBkcm9wZG93bldpZHRoUHg6IFNMQVNIX0RST1BET1dOX1dJRFRIX1BYLFxuICAgICAgbWF4RHJvcGRvd25IZWlnaHRQeDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgICAgIGdhcFB4OiBTTEFTSF9EUk9QRE9XTl9HQVBfUFgsXG4gICAgICB2aWV3cG9ydFBhZFB4OiBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsXG4gICAgfSlcbiAgICBpZiAoIW5leHRQb3MpIHJldHVyblxuICAgIHNldFNsYXNoRHJvcGRvd25Qb3MobmV4dFBvcylcbiAgfSwgW3dyYXBwZXJSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dTbGFzaERyb3Bkb3duKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHBvc2l0aW9uU2xhc2hEcm9wZG93bigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtzaG93U2xhc2hEcm9wZG93biwgc2xhc2hRdWVyeSwgcG9zaXRpb25TbGFzaERyb3Bkb3duXSlcblxuICAvKiogRWwgcG9wb3ZlciBkZSBza2lsbHMgc2UgYW5jbGEgYWwgYCNgIHF1ZSBsbyBhYnJpw7M7IHNpIG5vIGhheSBjYXJldCwgYWwgYm9yZGUgZGVsIGlucHV0LiAqL1xuICBjb25zdCBwb3NpdGlvblNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXJSZWN0ID0gd3JhcHBlclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCcjJylcbiAgICBjb25zdCBuZXh0UG9zID0gcmVzb2x2ZU1haWFJbnB1dERyb3Bkb3duUG9zaXRpb24oe1xuICAgICAgY2FyZXRUb3A6IGNhcmV0Py50b3AsXG4gICAgICBjYXJldExlZnQ6IGNhcmV0Py5sZWZ0LFxuICAgICAgd3JhcHBlclRvcDogd3JhcHBlclJlY3Q/LnRvcCxcbiAgICAgIHdyYXBwZXJMZWZ0OiB3cmFwcGVyUmVjdD8ubGVmdCxcbiAgICAgIHdyYXBwZXJXaWR0aDogd3JhcHBlclJlY3Q/LndpZHRoID8/IDAsXG4gICAgICB2aWV3cG9ydEhlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgdmlld3BvcnRXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICBkcm9wZG93bldpZHRoUHg6IFNLSUxMU19EUk9QRE9XTl9XSURUSF9QWCxcbiAgICAgIG1heERyb3Bkb3duSGVpZ2h0UHg6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gICAgICBnYXBQeDogU0xBU0hfRFJPUERPV05fR0FQX1BYLFxuICAgICAgdmlld3BvcnRQYWRQeDogU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLFxuICAgIH0pXG4gICAgaWYgKCFuZXh0UG9zKSByZXR1cm5cbiAgICBzZXRTa2lsbHNEcm9wZG93blBvcyhuZXh0UG9zKVxuICB9LCBbd3JhcHBlclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd1NraWxsc0Ryb3Bkb3duKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBwb3NpdGlvblNraWxsc0Ryb3Bkb3duKClcblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblNraWxsc0Ryb3Bkb3duKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3Nob3dTa2lsbHNEcm9wZG93biwgc2tpbGxzUXVlcnksIHBvc2l0aW9uU2tpbGxzRHJvcGRvd25dKVxuXG4gIC8qKiBUcmFzIGVsZWdpciBvIHF1aXRhciBiw7pzcXVlZGEgd2ViL3Byb2Z1bmRhOiB2b2x2ZXIgYWwgdGV4dGFyZWEgKFBvcG92ZXIvbWVudSBwdWVkZSByb2JhciBmb2NvKS4gKi9cbiAgY29uc3Qgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uID0gKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9LCAwKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjbG9zZVBsdXNNZW51ID0gKCkgPT4ge1xuICAgIHNldFBsdXNNZW51QW5jaG9yKG51bGwpXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIC8vIFNpbiBiYWNrZHJvcCBoYXkgcXVlIGNlcnJhciBhIG1hbm87IG5vIHNlIGRldnVlbHZlIGVsIGZvY28gYWwgaW5wdXQgcG9ycXVlIGVsIGNsaWNrIGZ1ZSBhIG90cm8gbGFkby5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBsdXNNZW51QW5jaG9yKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsXG4gICAgICBpZiAoIXRhcmdldCB8fCBwbHVzTWVudUFuY2hvci5jb250YWlucyh0YXJnZXQpIHx8IHBsdXNNZW51UGFwZXJSZWYuY3VycmVudD8uY29udGFpbnModGFyZ2V0KSkgcmV0dXJuXG4gICAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSlcbiAgfSwgW3BsdXNNZW51QW5jaG9yXSlcblxuICBjb25zdCBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudClcbiAgICAgIHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlU2xhc2hEcm9wZG93biA9ICgpID0+IHtcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VTa2lsbHNEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24oZmFsc2UpXG4gICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2hhc2gnXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24gPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAvLyBFdml0YSBxdWUgZWwgYm90w7NuIHJvYmUgZWwgZm9jbyBkZWwgaW5wdXQgYWwgYWJyaXIgZWwgbWVuw7ouXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHBsdXNNZW51QW5jaG9yKSB7XG4gICAgICBjbG9zZVBsdXNNZW51KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbG9zZU1lbnRpb25Qb3BvdmVyKClcbiAgICBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duKClcbiAgICBoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd24oKVxuICAgIHNldFBsdXNNZW51QW5jaG9yKGUuY3VycmVudFRhcmdldClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0UGx1c09wZW4sIHsgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLCAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU1lbnRpb25CdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRNZW50aW9uVHJpZ2dlcigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudUF0dGFjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ2ZpbGVzJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIGlmICghY2FuQXR0YWNoTW9yZUNoYXRJbnB1dEZpbGVzKGF0dGFjaG1lbnRzLmxlbmd0aCwgTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpKSByZXR1cm5cbiAgICBmaWxlSW5wdXRSZWYuY3VycmVudD8uY2xpY2soKVxuICB9XG5cbiAgY29uc3QgYmVnaW5Ub29sQ2hpcEV4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB3YXNXZWIgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGNvbnN0IHdhc0RlZXAgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgICBpZiAoIXNob3VsZFN0YXJ0VG9vbENoaXBFeGl0KHdhc1dlYiwgd2FzRGVlcCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRUb29sQ2hpcEV4aXRpbmcodHJ1ZSlcbiAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgY29uc3QgdG9nZ2xlVGFyZ2V0ID0gcmVzb2x2ZVRvb2xDaGlwRXhpdFRvZ2dsZSh3YXNXZWIsIHdhc0RlZXAsIHNlYXJjaE1vZGVBY3RpdmVSZWYuY3VycmVudClcbiAgICAgIGlmICh0b2dnbGVUYXJnZXQgPT09ICd3ZWInKSB7XG4gICAgICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICB9IGVsc2UgaWYgKHRvZ2dsZVRhcmdldCA9PT0gJ2RlZXAnKSB7XG4gICAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgICAgfVxuICAgICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICAgICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgICB9LCBUT09MX0NISVBfRVhJVF9NUylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51V2ViU2VhcmNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGNvbnN0IGFjdGlvbiA9IHJlc29sdmVXZWJTZWFyY2hQbHVzTWVudUFjdGlvbihpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlKVxuICAgIGlmIChhY3Rpb24ua2luZCA9PT0gJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoYWN0aW9uLmtpbmQgPT09ICdhY3RpdmF0ZV93ZWInICYmIGFjdGlvbi50dXJuT2ZmRGVlcCkge1xuICAgICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgfVxuICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdzZWFyY2gnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIC8vIEF1dG8tYXBwcm92ZSBmdWVyYSBkZSBlc3RlIHJlbGVhc2UgKHZlciBJU19BVVRPX0FQUFJPVkVfRU5BQkxFRCBlbiB1c2VQcm9qZWN0U3VtbWFyeUNvbmZpZykuXG4gIC8vIGNvbnN0IGhhbmRsZVBsdXNNZW51QXV0b0FwcHJvdmUgPSAoKSA9PiB7XG4gIC8vICAgY2xvc2VQbHVzTWVudSgpXG4gIC8vICAgdG9nZ2xlQXV0b0FwcHJvdmU/LigpXG4gIC8vICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gIC8vICAgICB0b29sOiAnYXV0b19hcHByb3ZlJyxcbiAgLy8gICAgIGFjdGl2ZTogIWlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gIC8vICAgfSlcbiAgLy8gfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51RGVlcFNlYXJjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBjb25zdCBhY3Rpb24gPSByZXNvbHZlRGVlcFNlYXJjaFBsdXNNZW51QWN0aW9uKGlzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmUpXG4gICAgaWYgKGFjdGlvbi5raW5kID09PSAnZGVhY3RpdmF0ZV92aWFfY2hpcF9leGl0Jykge1xuICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQoKVxuICAgIGlmIChhY3Rpb24ua2luZCA9PT0gJ2FjdGl2YXRlX2RlZXAnICYmIGFjdGlvbi50dXJuT2ZmV2ViKSB7XG4gICAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ2RlZXBfc2VhcmNoJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9ucyA9ICgpID0+IHtcbiAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydFNsYXNoVHJpZ2dlcigpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgfVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW2luaXRpYWxEcmFmdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3VsZEFwcGx5SW5pdGlhbERyYWZ0KGluaXRpYWxEcmFmdCwgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50LCBkaXNhYmxlZCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBkcmFmdCA9IGluaXRpYWxEcmFmdD8udHJpbSgpXG4gICAgaWYgKCFkcmFmdCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICBpZiAoZGVlcExpbmtTZW5kUGVuZGluZ1JlZikge1xuICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uc2V0UGxhaW5UZXh0KGRyYWZ0KVxuICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKHRydWUpXG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICB9XG4gIH0sIFtpbml0aWFsRHJhZnQsIGRpc2FibGVkLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICBjb25zdCBzZW5kRGlzYWJsZWQgPSB1c2VNZW1vKFxuICAgICgpID0+IGlzU2VuZERpc2FibGVkKGhhc1R5cGluZ1ByZXNlbmNlLCBhdHRhY2htZW50cy5sZW5ndGgpLFxuICAgIFtoYXNUeXBpbmdQcmVzZW5jZSwgYXR0YWNobWVudHMubGVuZ3RoXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZWFyY2hNb2RlQWN0aXZlUmVmLmN1cnJlbnQgPSB7IHdlYjogaXNXZWJTZWFyY2hBY3RpdmUsIGRlZXA6IGlzRGVlcFNlYXJjaEFjdGl2ZSB9XG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc1dlYlNlYXJjaEFjdGl2ZSAmJiAhaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgICBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQoZmFsc2UpXG4gICAgfVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgLy8gQXV0by1mb2N1cyBjdWFuZG8gY2FtYmlhIGVsIGFnZW50ZSBvIGxhIGNvbnZlcnNhY2nDs24sIG8gYWwgbW9udGFyIGVsIGNvbXBvbmVudGVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmb2N1c1BsYW4gPSByZXNvbHZlU2Vzc2lvbkF1dG9Gb2N1c1BsYW4oe1xuICAgICAgcHJldmlvdXNBZ2VudElkOiBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCxcbiAgICAgIGN1cnJlbnRBZ2VudElkOiBhZ2VudD8uaWQsXG4gICAgICBwcmV2aW91c0NoYXRJZDogcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCxcbiAgICAgIGN1cnJlbnRDaGF0SWQ6IGNoYXRJZCxcbiAgICAgIHByZXZpb3VzTmV3Q2hhdEtleTogcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQsXG4gICAgICBjdXJyZW50TmV3Q2hhdEtleTogbmV3Q2hhdEtleSxcbiAgICAgIGRpc2FibGVkLFxuICAgIH0pXG5cbiAgICBsZXQgdGltZW91dElkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZFxuICAgIGlmIChmb2N1c1BsYW4uc2hvdWxkRm9jdXMpIHtcbiAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVkKSBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgZm9jdXNQbGFuLmRlbGF5TXMpXG4gICAgfVxuXG4gICAgcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgPSBhZ2VudD8uaWRcbiAgICBwcmV2aW91c0NoYXRJZFJlZi5jdXJyZW50ID0gY2hhdElkXG4gICAgcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgPSBuZXdDaGF0S2V5XG5cbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgfSwgW2FnZW50Py5pZCwgY2hhdElkLCBuZXdDaGF0S2V5LCBkaXNhYmxlZF0pXG5cbiAgLy8gQXV0by1mb2N1cyBjdWFuZG8gY2FtYmlhIGxhIGRpc3Bvc2ljacOzbiBkZWwgbW9kYWwgKHNpZGViYXIgLyBmdWxsc2NyZWVuIC8gZmxvYXRpbmcpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsYXlvdXRNb2RlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMYXlvdXRNb2RlID0gcHJldmlvdXNMYXlvdXRNb2RlUmVmLmN1cnJlbnRcbiAgICBwcmV2aW91c0xheW91dE1vZGVSZWYuY3VycmVudCA9IGxheW91dE1vZGVcblxuICAgIGlmICghc2hvdWxkQXV0b0ZvY3VzT25MYXlvdXRNb2RlQ2hhbmdlKHByZXZpb3VzTGF5b3V0TW9kZSwgbGF5b3V0TW9kZSwgZGlzYWJsZWQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfVxuICAgIH0sIDIwMClcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgfSwgW2xheW91dE1vZGUsIGRpc2FibGVkXSlcblxuICAvLyBBcHBjdWVzOiBub3RpZnkgdGhhdCB0aGUgaW5wdXQgaXMgdmlzaWJsZSBmb3Igc3BlY2lhbGlzdCBhZ2VudHMgKGNsb25lICsgcHJvamVjdC9jbGllbnQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF3cmFwcGVyUmVmLmN1cnJlbnQgfHwgIWlzU3BlY2lhbGlzdENsb25lQWdlbnRGb3JBcHBjdWVzKGFnZW50KSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0cmFja0FwcGN1ZXNFdmVudChBUFBDVUVTX0VWRU5UUy5tYWlhQ29udGV4dE1lbnRpb25Jbml0KVxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyB0aHJlc2hvbGQ6IDAuMSB9XG4gICAgKVxuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh3cmFwcGVyUmVmLmN1cnJlbnQpXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8udHlwZSwgYWdlbnQ/LmVudGl0eV0pXG5cbiAgLy8gQ2xlYXIgaW5wdXQgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gIH0sIFtyZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIC8vIE1hbnRlbmVyIGZvY28gYWwgc2VsZWNjaW9uYXIgdW4gY29udGV4dG8gcmVjaWVudGUgKGVsIGNsaWNrIGVuIGVsIHBpbGwgbG8gcm9iYSBhbCBpbnB1dCkuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmb2N1cyA9ICgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbCB9ID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50PHsgc2tpbGw6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0gfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gc2tpbGwubmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uYXBwZW5kTWVudGlvbkF0RW5kKHtcbiAgICAgICAgaWQ6IHNraWxsLmlkLFxuICAgICAgICB0eXBlOiAnc2tpbGwnLFxuICAgICAgICBsYWJlbDogYCMke25vcm1hbGl6ZWROYW1lfWAsXG4gICAgICB9KVxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgfSwgW2Rpc2FibGVkXSlcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgIGlmICghY2FuU3VibWl0Q2hhdE1lc3NhZ2UodGV4dCwgYXR0YWNobWVudHMubGVuZ3RoKSkgcmV0dXJuXG4gICAgY29uc3QgbWVudGlvbnMgPSBzdGF0ZT8ubWVudGlvbnMgPz8gW11cbiAgICBvblNlbmRNZXNzYWdlKHRleHQsIGF0dGFjaG1lbnRzLCBtZW50aW9ucylcbiAgICBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCA9IFtdXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSlcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICB9LCBbYXR0YWNobWVudHMsIG9uU2VuZE1lc3NhZ2UsIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZ10pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQ6IEFjdGlvbikgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0LCB7XG4gICAgICAgIHR5cGVfcXVpY2tfYWN0aW9uOiByZXNvbHZlUXVpY2tBY3Rpb25UeXBlKGNvbW1hbmQpLFxuICAgICAgICBvcmlnaW5fcXVpY2tfYWN0aW9uOiAnc2xhc2hfbWVudScsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgICBjb25zdCB7IGlzRW1wdHlCZWZvcmVUcmlnZ2VyIH0gPSByZXNvbHZlU2xhc2hDb21tYW5kSW5zZXJ0Q29udGV4dCh0ZXh0LCBzbGFzaFF1ZXJ5KVxuXG4gICAgICBpZiAoaXNFbXB0eUJlZm9yZVRyaWdnZXIpIHtcbiAgICAgICAgb25TZW5kTWVzc2FnZShjb21tYW5kLnRpdGxlLCBhdHRhY2htZW50cywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb21tYW5kLmlkKVxuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hDb21tYW5kKHsgaWQ6IGNvbW1hbmQuaWQsIGxhYmVsOiBjb21tYW5kLnRpdGxlIH0pXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIHNsYXNoUXVlcnksIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgLyoqIEFicmUgZWwgbGlzdGFkbyBkZXNkZSBlbCBib3TDs246IGluc2VydGEgYCNgIGVuIGVsIGVkaXRvciBwYXJhIHF1ZSBlbCB0cmlnZ2VyIHF1ZWRlIGFjdGl2by4gKi9cbiAgY29uc3QgaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBpZiAoc2hvd1NraWxsc0Ryb3Bkb3duKSB7XG4gICAgICBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnYnV0dG9uJ1xuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTa2lsbFRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsKSA9PiB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxTZWxlY3QsIHtcbiAgICAgICAgc2tpbGxfaWQ6IHNraWxsLmlkLFxuICAgICAgICBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCxcbiAgICAgIH0pXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2tpbGxNZW50aW9uKHsgaWQ6IHNraWxsLmlkLCB0eXBlOiAnc2tpbGwnLCBsYWJlbDogYCMke3NraWxsLm5hbWV9YCB9KVxuICAgICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlU2tpbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBza2lsbFZhbHVlczogeyB2YWx1ZXM6IHsgaXNFZGl0aW5nOiBmYWxzZSwgaW50ZW50OiAnd3JpdGUnIH0sIGlzT3BlbjogdHJ1ZSB9LFxuICAgICAgICAgIGFuYWx5dGljc1NvdXJjZTogJ2Ryb3Bkb3duJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVFZGl0b3JJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICB0ZXh0LFxuICAgICAgbWVudGlvbnMsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgc2xhc2hUcmlnZ2VyLFxuICAgICAgaGFzaFRyaWdnZXIsXG4gICAgfToge1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgICAgc2xhc2hUcmlnZ2VyPzogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICAgICAgaGFzaFRyaWdnZXI/OiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gICAgfSkgPT4ge1xuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UodGV4dCkpXG4gICAgICBvbkNoYW5nZT8uKClcbiAgICAgIGhhbmRsZVRyaWdnZXIodHJpZ2dlcilcblxuICAgICAgY29uc3QgY3VycmVudFNraWxsSWRzID0gZ2V0U2tpbGxNZW50aW9uSWRzKG1lbnRpb25zKVxuICAgICAgaWYgKHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzKHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCwgY3VycmVudFNraWxsSWRzKS5mb3JFYWNoKHNraWxsSWQgPT4ge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFJlbW92ZSwgeyBza2lsbF9pZDogc2tpbGxJZCB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcHJldlNraWxsTWVudGlvbklkc1JlZi5jdXJyZW50ID0gY3VycmVudFNraWxsSWRzXG5cbiAgICAgIGlmIChzaG91bGRPcGVuU2xhc2hEcm9wZG93bihzbGFzaFRyaWdnZXIsIHNsYXNoQ29tbWFuZHMubGVuZ3RoKSkge1xuICAgICAgICBpZiAoIXNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvbk9wZW4pXG4gICAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKHRydWUpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoc2xhc2hUcmlnZ2VyPy5xdWVyeSA/PyAnJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkT3BlblNraWxsc0hhc2hEcm9wZG93bihoYXNoVHJpZ2dlciwgc2hvd1NraWxsc0J1dHRvbikpIHtcbiAgICAgICAgLy8gRmV0Y2ggb24tb3BlbjogdW5hIHNvbGEgbGxhbWFkYSBwb3IgYXBlcnR1cmEgZGVsIGxpc3RhZG8uXG4gICAgICAgIGlmICghc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsT3BlbiwgeyBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCB9KVxuICAgICAgICAgIHZvaWQgZmV0Y2hTa2lsbHMoKVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bih0cnVlKVxuICAgICAgICBzZXRTa2lsbHNRdWVyeShoYXNoVHJpZ2dlcj8ucXVlcnkgPz8gJycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2hhc2gnXG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIGhhbmRsZVRyaWdnZXIsIHNsYXNoQ29tbWFuZHMsIGV2ZW50QW1wbGl0dWRlLCBzaG93U2tpbGxzQnV0dG9uLCBmZXRjaFNraWxsc11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChoYW5kbGVQb3BvdmVyS2V5RG93bihlKSkgcmV0dXJuXG4gICAgICBpZiAoc2hvdWxkU3VibWl0T25FbnRlcihlLmtleSwgZS5zaGlmdEtleSwgcG9wb3Zlck9wZW4sIHNlbmREaXNhYmxlZCwgZGlzYWJsZWQpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlUG9wb3ZlcktleURvd24sIHBvcG92ZXJPcGVuLCBzZW5kRGlzYWJsZWQsIGRpc2FibGVkLCBoYW5kbGVTZW5kTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGFkZEZpbGVzID0gKGluY29taW5nOiBGaWxlW10pID0+IHtcbiAgICBpZiAoIWluY29taW5nLmxlbmd0aCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IGZpbGVzVG9BdHRhY2gsIGV4Y2x1ZGVkRmlsZXMsIGV4Y2VlZGVkRmlsZXMsIGZpbGVTaXplcyB9ID0gcHJvY2Vzc0luY29taW5nQ2hhdElucHV0RmlsZXMoaW5jb21pbmcsIHtcbiAgICAgIGFsbG93ZWRFeHRlbnNpb25zOiBhbGxvd2VkRmlsZVR5cGVzLFxuICAgICAgZmlsZVR5cGVzLFxuICAgICAgY3VycmVudEF0dGFjaG1lbnRDb3VudDogYXR0YWNobWVudHMubGVuZ3RoLFxuICAgICAgbWF4QXR0YWNobWVudHM6IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTLFxuICAgICAgZ2V0TWF4U2l6ZU1iOiBnZXRNYXhBdHRhY2htZW50U2l6ZU1iLFxuICAgIH0pXG5cbiAgICBmaWxlc1RvQXR0YWNoLmZvckVhY2goZmlsZSA9PiBvbkZpbGVBdHRhY2g/LihmaWxlKSlcblxuICAgIGlmIChzaG91bGRPcGVuQXR0YWNobWVudFZhbGlkYXRpb25Nb2RhbChleGNsdWRlZEZpbGVzLCBleGNlZWRlZEZpbGVzKSkge1xuICAgICAgc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogdHJ1ZSwgZXhjbHVkZWRGaWxlcywgZXhjZWVkZWRGaWxlcywgZmlsZVNpemVzIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmlsZVNlbGVjdCA9IChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGVzID0gZS50YXJnZXQuZmlsZXNcbiAgICBpZiAoZmlsZXMpIHtcbiAgICAgIGFkZEZpbGVzKEFycmF5LmZyb20oZmlsZXMpKVxuICAgIH1cbiAgICBpZiAoZmlsZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50LnZhbHVlID0gJydcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNldEZpbGVEcmFnID0gKCkgPT4ge1xuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID0gMFxuICAgIHNldElzRmlsZURyYWdBY3RpdmUoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnRW50ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCArPSAxXG4gICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZSh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0xlYXZlID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIXNob3VsZEhhbmRsZURyYWdMZWF2ZUV2ZW50KGlzRmlsZURyYWdBY3RpdmUsIGRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9IGRlY3JlbWVudEZpbGVEcmFnQ291bnRlcihmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudClcbiAgICBpZiAoc2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXkoZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQpKSB7XG4gICAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdPdmVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5J1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHtcbiAgICAgIHJlc2V0RmlsZURyYWcoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICByZXNldEZpbGVEcmFnKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGFkZEZpbGVzKGZpbGVzRnJvbURhdGFUcmFuc2ZlcihlLmRhdGFUcmFuc2ZlcikpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQYXN0ZUZpbGVzID0gKGZpbGVzOiBGaWxlW10pID0+IHtcbiAgICBhZGRGaWxlcyhmaWxlcylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVdyYXBwZXJQYXN0ZSA9IChlOiBDbGlwYm9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBlZGl0b3JFbCA9IHdyYXBwZXJSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcignW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nKVxuICAgIGNvbnN0IGZpbGVzID0gZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuY2xpcGJvYXJkRGF0YSlcbiAgICBpZiAoIXNob3VsZEludGVyY2VwdFdyYXBwZXJQYXN0ZShCb29sZWFuKGVkaXRvckVsICYmIGVkaXRvckVsLmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSwgZmlsZXMubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGFkZEZpbGVzKGZpbGVzKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQXR0YWNobWVudCA9IChmaWxlSWQ6IHN0cmluZykgPT4ge1xuICAgIG9uRGVsZXRlQXR0YWNobWVudD8uKGZpbGVJZClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN0b3BHZW5lcmF0aW9uID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTdG9wUmVzcG9uc2UpXG4gICAgb25TdG9wR2VuZXJhdGlvbj8uKClcbiAgfVxuXG4gIGNvbnN0IHNob3dDaGlwc1JvdyA9IHNob3VsZFNob3dJbnB1dENoaXBzUm93KGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGgpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjaGlwc0VsID0gY2hpcHNSb3dSZWYuY3VycmVudFxuICAgIGNvbnN0IHRvb2xiYXJFbCA9IHRvb2xiYXJSb3dSZWYuY3VycmVudFxuXG4gICAgY29uc3QgdXBkYXRlSGVpZ2h0cyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRDaGlwcyA9IHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsID8gTWF0aC5jZWlsKGNoaXBzRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSA6IDBcbiAgICAgIGNvbnN0IG5leHRUb29sYmFyID0gdG9vbGJhckVsXG4gICAgICAgID8gTWF0aC5jZWlsKHRvb2xiYXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpXG4gICAgICAgIDogTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFhcblxuICAgICAgc2V0Q2hpcHNSb3dIZWlnaHQocHJldiA9PiByZXNvbHZlTWVhc3VyZWRMYXlvdXRSb3dIZWlnaHQocHJldiwgbmV4dENoaXBzKSlcbiAgICAgIHNldFRvb2xiYXJSb3dIZWlnaHQocHJldiA9PiByZXNvbHZlTWVhc3VyZWRMYXlvdXRSb3dIZWlnaHQocHJldiwgbmV4dFRvb2xiYXIpKVxuICAgIH1cblxuICAgIHVwZGF0ZUhlaWdodHMoKVxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIodXBkYXRlSGVpZ2h0cylcbiAgICBpZiAoc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQoc2hvd0NoaXBzUm93ID8gY2hpcHNFbCA6IG51bGwpKSBvYnNlcnZlci5vYnNlcnZlKGNoaXBzRWwhKVxuICAgIGlmIChzaG91bGRPYnNlcnZlTWFpYUlucHV0TGF5b3V0RWxlbWVudCh0b29sYmFyRWwpKSBvYnNlcnZlci5vYnNlcnZlKHRvb2xiYXJFbCEpXG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gIH0sIFtzaG93Q2hpcHNSb3csIGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGhdKVxuXG4gIGNvbnN0IGVkaXRvck1heEhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCh7XG4gICAgICAgIGNoaXBzUm93SGVpZ2h0UHg6IGNoaXBzUm93SGVpZ2h0LFxuICAgICAgICB0b29sYmFyUm93SGVpZ2h0UHg6IHRvb2xiYXJSb3dIZWlnaHQsXG4gICAgICB9KSxcbiAgICBbY2hpcHNSb3dIZWlnaHQsIHRvb2xiYXJSb3dIZWlnaHRdXG4gIClcblxuICBjb25zdCB0b29sYmFySWNvbkNvbG9yID0gJyM4MDgwODAnXG4gIGNvbnN0IHBsdXNNZW51SWNvbkNvbG9yID0gTUFJQV9DSEFUX0lOUFVUX1VJLm1lbnVJY29uXG4gIGNvbnN0IGhhc0NvckFjY2VzcyA9IGFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzKGFnZW50KVxuICBjb25zdCBhZ2VudE1vZGVsTmFtZSA9IGdldEN1c3RvbUFnZW50TW9kZWxEaXNwbGF5TmFtZShhZ2VudClcbiAgY29uc3Qgc2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzID0gc2hvdWxkU2hvd0N1c3RvbUFnZW50TWV0YUluZGljYXRvcnMoaGFzQ29yQWNjZXNzLCBhZ2VudE1vZGVsTmFtZSlcbiAgY29uc3Qgc2hvd01lbnRpb25CdXR0b24gPVxuICAgIHNob3VsZFNob3dNZW50aW9uVG9vbGJhckJ1dHRvbihhZ2VudD8udHlwZSwgaGFzQ29yQWNjZXNzKSB8fCBCb29sZWFuKG9yY2hlc3RyYXRvckhvbWVDb21wb3NlciAmJiAhYWdlbnQpXG5cbiAgY29uc3QgYWN0aXZlVG9vbENoaXBJY29uTW9kZSA9IHJlc29sdmVBY3RpdmVUb29sQ2hpcEljb25Nb2RlKGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCwgaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb25CeU1vZGU6IFJlY29yZDxBY3RpdmVUb29sQ2hpcEljb25Nb2RlLCBSZWFjdE5vZGU+ID0ge1xuICAgIGNsb3NlOiA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+LFxuICAgIHdlYjogPE1haWFJbnB1dFdlYlNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+LFxuICAgIGRlZXA6IDxNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4sXG4gIH1cbiAgY29uc3QgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb25CeU1vZGVbYWN0aXZlVG9vbENoaXBJY29uTW9kZV1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3R5bGVkTUFJQUlucHV0V3JhcHBlclxuICAgICAgICByZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgYWxpZ25CdXR0b25zPXthbGlnbkJ1dHRvbnN9XG4gICAgICAgIGhhc0F0dGFjaG1lbnRzPXshIWF0dGFjaG1lbnRzLmxlbmd0aH1cbiAgICAgICAgJGZpbGVEcmFnQWN0aXZlPXtpc0ZpbGVEcmFnQWN0aXZlfVxuICAgICAgICBkYXRhLWFwcGN1ZXM9XCJtYWlhX2NoYXRfaW5wdXRcIlxuICAgICAgICBkYXRhLW1haWEtc3RyZWFtaW5nPXtyZXNvbHZlTWFpYUlucHV0U3RyZWFtaW5nRGF0YUF0dHIoQm9vbGVhbihpc1N0cmVhbWluZykpfVxuICAgICAgICBvblBhc3RlPXtoYW5kbGVXcmFwcGVyUGFzdGV9XG4gICAgICAgIG9uRHJhZ0VudGVyPXtoYW5kbGVEcmFnRW50ZXJ9XG4gICAgICAgIG9uRHJhZ0xlYXZlPXtoYW5kbGVEcmFnTGVhdmV9XG4gICAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgICBvbkRyb3A9e2hhbmRsZURyb3B9XG4gICAgICA+XG4gICAgICAgIHtzaG93Q2hpcHNSb3cgJiYgKFxuICAgICAgICAgIDxTQ0lucHV0Q2hpcHNSb3cgcmVmPXtjaGlwc1Jvd1JlZn0+XG4gICAgICAgICAgICB7Y29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxDaGlwXG4gICAgICAgICAgICAgICAgaXRlbXM9e2NvbnRleHRDaGlwLml0ZW1zfVxuICAgICAgICAgICAgICAgIHR5cGU9e2NvbnRleHRDaGlwLnR5cGV9XG4gICAgICAgICAgICAgICAgZW50aXR5SWQ9e2NvbnRleHRDaGlwLmVudGl0eUlkfVxuICAgICAgICAgICAgICAgIGxlYWRpbmdJY29uPXtjb250ZXh0Q2hpcC5sZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICAgIG9uRW50aXR5TmF2aWdhdGU9e2NvbnRleHRDaGlwLm9uRW50aXR5TmF2aWdhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHthdHRhY2htZW50cy5tYXAoYXR0YWNobWVudCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzSW1hZ2UgPSBpc0ltYWdlQXR0YWNobWVudEZpbGUoYXR0YWNobWVudC50eXBlLCBhdHRhY2htZW50Lm5hbWUpXG4gICAgICAgICAgICAgIGNvbnN0IGNoaXBJY29uID0gaXNJbWFnZSA/IChcbiAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MTJ9IGhlaWdodD17MTJ9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaEljb24gY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezEzfSBoZWlnaHQ9ezEzfSAvPlxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YXR0YWNobWVudC5uYW1lfSBrZXk9e2F0dGFjaG1lbnQuaWR9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudEljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50RmlsZUljb24+e2NoaXBJY29ufTwvU0NNSUF0dGFjaG1lbnRGaWxlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnREZWxldGVJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQucmVtb3ZlQXR0YWNobWVudEFyaWEnLCB7IGRlZmF1bHRWYWx1ZTogJ1F1aXRhciBhcmNoaXZvJyB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQoYXR0YWNobWVudC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiIzY2NjY2NlwiIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50RGVsZXRlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudEljb24+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudE5hbWU+e2F0dGFjaG1lbnQubmFtZX08L1NDTUlBdHRhY2htZW50TmFtZT5cbiAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnQ+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NDSW5wdXRDaGlwc1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAgPFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgICAgPFNDSW5wdXRFZGl0b3JDZWxsPlxuICAgICAgICAgICAgPENvbnRleHRNZW50aW9uRWRpdG9yXG4gICAgICAgICAgICAgIHJlZj17ZWRpdG9yUmVmfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgbWF4SGVpZ2h0PXtlZGl0b3JNYXhIZWlnaHR9XG4gICAgICAgICAgICAgIG9uSW5wdXQ9e2hhbmRsZUVkaXRvcklucHV0fVxuICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgICAgIG9uUGFzdGVGaWxlcz17aGFuZGxlUGFzdGVGaWxlc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0lucHV0RWRpdG9yQ2VsbD5cbiAgICAgICAgICA8U0NJbnB1dFRvb2xiYXJSb3cgcmVmPXt0b29sYmFyUm93UmVmfT5cbiAgICAgICAgICAgIDxTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsPlxuICAgICAgICAgICAgICA8UGx1c01lbnVUb29sc1Jvdz5cbiAgICAgICAgICAgICAgICA8UGx1c1RvZ2dsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAkbWVudU9wZW49e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3dufVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUGx1c0J1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyl9XG4gICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dEFkZEljb24gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICA8L1BsdXNUb2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAge3Nob3dNZW50aW9uQnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxQbHVzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAkbWVudU9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5vcGVuTWVudGlvbkFyaWEnKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dE1lbnRpb25JY29uIGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICA8L1BsdXNUb2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2hvd1NraWxsc0J1dHRvbiAmJiAoXG4gICAgICAgICAgICAgICAgICA8U2tpbGxzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHJlZj17c2tpbGxzQnV0dG9uUmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZVBsdXNCdXR0b25Nb3VzZURvd259XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNraWxsc0J1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmRyb3Bkb3duQnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17c2hvd1NraWxsc0Ryb3Bkb3dufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U2tpbGxJY29uIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L1NraWxsc1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHsvKiBQb3BwZXIgeSBubyBQb3BvdmVyOiBlbCBQb3BvdmVyIGVzIG1vZGFsIHkgc3UgYmFja2Ryb3AgYmxvcXVlYSBob3ZlciB5IGNsaWNrcyBkZWwgcmVzdG8uICovfVxuICAgICAgICAgICAgICAgIDxQb3BwZXJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICAgIGFuY2hvckVsPXtwbHVzTWVudUFuY2hvcn1cbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcC1zdGFydFwiXG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB6SW5kZXg6IHBsdXNNZW51WkluZGV4IH19XG4gICAgICAgICAgICAgICAgICBtb2RpZmllcnM9e1BMVVNfTUVOVV9QT1BQRVJfTU9ESUZJRVJTfVxuICAgICAgICAgICAgICAgICAgey4uLnsgW01BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFJdOiAnJyB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHsoeyBUcmFuc2l0aW9uUHJvcHMgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8R3JvdyB7Li4uVHJhbnNpdGlvblByb3BzfSBzdHlsZT17eyB0cmFuc2Zvcm1PcmlnaW46ICdib3R0b20gbGVmdCcgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51UGFwZXIgcmVmPXtwbHVzTWVudVBhcGVyUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUlubmVyQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF0dGFjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjF9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51QXR0YWNoJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVXZWJTZWFyY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRXZWJTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5zZWFyY2hXZWInKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc1dlYlNlYXJjaEFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVEZWVwU2VhcmNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0RGVlcFNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc0RlZXBTZWFyY2hBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBBdXRvLWFwcHJvdmUgZnVlcmEgZGUgZXN0ZSByZWxlYXNlICh2ZXIgSVNfQVVUT19BUFBST1ZFX0VOQUJMRUQgZW4gdXNlUHJvamVjdFN1bW1hcnlDb25maWcpLlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF1dG9BcHByb3ZlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51QXV0b0FwcHJvdmUnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzQXV0b0FwcHJvdmVBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9uc30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFNsYXNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVRdWlja0FjdGlvbnMnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51UGFwZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvR3Jvdz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Qb3BwZXI+XG4gICAgICAgICAgICAgICAgeyhpc1dlYlNlYXJjaEFjdGl2ZSB8fCBpc0RlZXBTZWFyY2hBY3RpdmUpICYmIChcbiAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcFJvb3RcbiAgICAgICAgICAgICAgICAgICAgJGhvdmVyZWQ9e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgJGV4aXRpbmc9e3Rvb2xDaGlwRXhpdGluZ31cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICRjbG9zZVNob3duPXthY3RpdmVUb29sQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBY3RpdmVUb29sQXJpYScpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtyZXNvbHZlQWN0aXZlVG9vbENoaXBTZWFyY2hMYWJlbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUb29sQ2hpcEhvdmVyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlYlNlYXJjaExhYmVsOiB0KCdjaGF0LnNlYXJjaFdlYicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNlYXJjaExhYmVsOiB0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcFJvb3Q+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7aXNBdXRvQXBwcm92ZUFjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBSb290XG4gICAgICAgICAgICAgICAgICAgICRob3ZlcmVkPXthdXRvQXBwcm92ZUNoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAkZXhpdGluZz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoYXQuYXV0b0FwcHJvdmVIaW50Jyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAkY2xvc2VTaG93bj17YXV0b0FwcHJvdmVDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUFjdGl2ZVRvb2xBcmlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVBdXRvQXBwcm92ZT8uKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBMYWJlbD57dCgnY2hhdC5hdXRvQXBwcm92ZUNoaXAnKX08L0FjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwUm9vdD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1BsdXNNZW51VG9vbHNSb3c+XG4gICAgICAgICAgICA8L1N0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgICAge3Nob3dDdXN0b21NZXRhSW5kaWNhdG9ycyAmJiAoXG4gICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgICAgIHtoYXNDb3JBY2Nlc3MgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NUb29sdGlwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiBhcmlhLWxhYmVsPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NMYWJlbCcpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb3JBY2Nlc3NJY29uIHdpZHRoPXsxNX0gaGVpZ2h0PXsxNH0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7YWdlbnRNb2RlbE5hbWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGlwTGxtLnRvb2x0aXAnLCB7IG1vZGVsOiBhZ2VudE1vZGVsTmFtZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e2FnZW50TW9kZWxOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRSb2JvdEljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzV3JpdGluZyA/IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zdG9wJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BCdXR0b24gZGlzYWJsZWQ9e2ZhbHNlfSBvbkNsaWNrPXtoYW5kbGVTdG9wR2VuZXJhdGlvbn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTdG9wQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zZW5kJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbmREaXNhYmxlZCB8fCBkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZXM9e2hhc1R5cGluZ1ByZXNlbmNlIHx8IGF0dGFjaG1lbnRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2VuZEljb24gY29sb3I9XCIjQkZCRkJGXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTZW5kQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICA8L1NDSW5wdXRUb29sYmFyUm93PlxuICAgICAgICA8L1N0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIGFjY2VwdD1cIi50eHQsLm1kLC5jc3YsLmRvYywuZG9jeCwucHB0LC5wcHR4LC5wbmcsLmpwZywuanBlZywucGRmLC54bHN4LC54bHMsLmZsYWMsLm00YSwubXAzLC5tcDQsLm9nYSwub2dnLC53YXYsLndlYm1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlU2VsZWN0fVxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgICAvPlxuICAgICAgICB7aXNGaWxlRHJhZ0FjdGl2ZSAmJiA8U3R5bGVkTUFJQURyb3BPdmVybGF5Pnt0KCdjaGF0LmRyb3BGaWxlc0hlcmUnKX08L1N0eWxlZE1BSUFEcm9wT3ZlcmxheT59XG4gICAgICA8L1N0eWxlZE1BSUFJbnB1dFdyYXBwZXI+XG4gICAgICB7bW9kYWxQcm9wcy5pc09wZW4gJiYgKFxuICAgICAgICA8TW9kYWxGaWxlRXhjZWVkc1xuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1vZGFsUHJvcHMoeyBpc09wZW46IGZhbHNlLCBleGNsdWRlZEZpbGVzOiBbXSwgZXhjZWVkZWRGaWxlczogW10sIGZpbGVTaXplczoge30gfSl9XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNsdWRlZEZpbGVzfVxuICAgICAgICAgIGV4Y2VlZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjZWVkZWRGaWxlc31cbiAgICAgICAgICBmaWxlU2l6ZXM9e21vZGFsUHJvcHMuZmlsZVNpemVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtwb3BvdmVyTm9kZSAmJiBjcmVhdGVQb3J0YWwocG9wb3Zlck5vZGUsIGRvY3VtZW50LmJvZHkpfVxuICAgICAge3Nob3dTbGFzaERyb3Bkb3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8U2xhc2hDb21tYW5kRHJvcGRvd25cbiAgICAgICAgICAgIGNvbW1hbmRzPXtzbGFzaENvbW1hbmRzfVxuICAgICAgICAgICAgcXVlcnk9e3NsYXNoUXVlcnl9XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kfVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtzbGFzaERyb3Bkb3duUG9zLmJvdHRvbX1cbiAgICAgICAgICAgIGxlZnQ9e3NsYXNoRHJvcGRvd25Qb3MubGVmdH1cbiAgICAgICAgICAgIG1heEhlaWdodD17c2xhc2hEcm9wZG93blBvcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICB6SW5kZXg9e3NsYXNoRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICAgICBhbmNob3JSZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgICAge3Nob3dTa2lsbHNEcm9wZG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNraWxsc0Ryb3Bkb3duXG4gICAgICAgICAgICBza2lsbHM9e3NraWxsc31cbiAgICAgICAgICAgIHF1ZXJ5PXtza2lsbHNRdWVyeX1cbiAgICAgICAgICAgIGxvYWRpbmc9e3NraWxsc0xvYWRpbmd9XG4gICAgICAgICAgICBlcnJvcj17c2tpbGxzRXJyb3J9XG4gICAgICAgICAgICBjYW5DcmVhdGU9e2NhbkNyZWF0ZVNraWxsc0Zyb21JbnB1dChzaG93U2tpbGxzQnV0dG9uLCB1c2VyPy5jb21wYW55X2lkKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVTZWxlY3RTa2lsbH1cbiAgICAgICAgICAgIG9uQ3JlYXRlPXtoYW5kbGVDcmVhdGVTa2lsbH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlU2tpbGxzRHJvcGRvd259XG4gICAgICAgICAgICBib3R0b209e3NraWxsc0Ryb3Bkb3duUG9zLmJvdHRvbX1cbiAgICAgICAgICAgIGxlZnQ9e3NraWxsc0Ryb3Bkb3duUG9zLmxlZnR9XG4gICAgICAgICAgICBtYXhIZWlnaHQ9e3NraWxsc0Ryb3Bkb3duUG9zLm1heEhlaWdodH1cbiAgICAgICAgICAgIHpJbmRleD17c2xhc2hEcm9wZG93blpJbmRleH1cbiAgICAgICAgICAgIGFuY2hvclJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgICAvPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5XG4gICAgICAgICl9XG4gICAgPC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBUUVBLFdBQVcsRUFDWEMsU0FBUyxFQUNUQyxlQUFlLEVBQ2ZDLE9BQU8sRUFDUEMsTUFBTSxFQUNOQyxRQUFRLFFBQ0gsT0FBTztBQUNkLFNB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
|