@projectcor/maia-components 2.44.5 → 2.45.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.spec.js +135 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +123 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +65 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +66 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +5 -51
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +211 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +78 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +55 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +41 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +18 -76
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +253 -0
- package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +80 -0
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +31 -0
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +33 -0
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +3 -31
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +25 -0
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.js +4 -0
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +11 -0
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +2 -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.spec.js +88 -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.js +227 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +77 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +15 -255
- package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +81 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +31 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +48 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +5 -34
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +231 -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.spec.js +31 -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.helpers.js +12 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +26 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.js +8 -12
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +444 -0
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +50 -0
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +20 -0
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +8 -60
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +53 -0
- package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +22 -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.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.js +17 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +35 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +3 -15
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +47 -0
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +86 -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 +27 -13
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +59 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +79 -52
- 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.js +6 -1
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +70 -0
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +36 -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.js +10 -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.spec.js +85 -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.spec.js +68 -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 +60 -0
- package/lib/components/index.js +2 -1
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.js +37 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +53 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +5 -29
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +371 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +39 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +57 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.js +6 -40
- package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +227 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +86 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +108 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +18 -90
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +254 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.js +17 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +50 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +5 -15
- 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.js +21 -6
- package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +246 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +86 -0
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +104 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +54 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +77 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +19 -47
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +410 -0
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +46 -0
- package/lib/components/molecules/ChatAIMessages/newStyles.js +29 -26
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +147 -4
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +471 -0
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +64 -108
- package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +659 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.js +5 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +33 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +3 -2
- 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.js +30 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +95 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +76 -86
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +241 -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/ChatAIMyAgents/ChatAIMyAgents.spec.js +172 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +128 -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 +369 -0
- package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +10 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.js +48 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +82 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +9 -44
- 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.js +41 -23
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +453 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +198 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +385 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +56 -171
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +1125 -0
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +112 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +405 -0
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +174 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.js +525 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +231 -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 +139 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +13 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +275 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +275 -0
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +195 -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.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.spec.js +52 -0
- package/lib/constants/maiaExternalConnectorsAccess.spec.js +29 -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/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.spec.js +231 -0
- package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +183 -0
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +313 -0
- package/lib/hooks/useAgentSuggestions.spec.js +89 -0
- package/lib/hooks/useCaretPosition.spec.js +58 -0
- package/lib/hooks/useChatManager/useChatManager.helpers.js +353 -0
- package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +506 -0
- package/lib/hooks/useChatManager/useChatManager.js +76 -351
- package/lib/hooks/useChatManager/useChatManager.spec.js +1261 -0
- package/lib/hooks/useChatMessages/useChatMessages.helpers.js +109 -0
- package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +176 -0
- package/lib/hooks/useChatMessages/useChatMessages.js +12 -82
- package/lib/hooks/useChatMessages/useChatMessages.spec.js +379 -0
- package/lib/hooks/useChats/useChats.spec.js +208 -0
- package/lib/hooks/useClientSearch.helpers.js +36 -0
- package/lib/hooks/useClientSearch.helpers.spec.js +52 -0
- package/lib/hooks/useClientSearch.js +4 -32
- package/lib/hooks/useClientSearch.spec.js +86 -0
- package/lib/hooks/useContextMentions.helpers.js +152 -0
- package/lib/hooks/useContextMentions.helpers.spec.js +143 -0
- package/lib/hooks/useContextMentions.js +2 -163
- package/lib/hooks/useContextMentions.spec.js +239 -0
- package/lib/hooks/useContextMentions.types.js +2 -0
- package/lib/hooks/useContextPinPopover.helpers.js +95 -0
- package/lib/hooks/useContextPinPopover.helpers.spec.js +115 -0
- package/lib/hooks/useContextPinPopover.js +16 -75
- 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/useDebounce.spec.js +42 -0
- package/lib/hooks/useEntitySearch.helpers.js +359 -0
- package/lib/hooks/useEntitySearch.helpers.spec.js +321 -0
- package/lib/hooks/useEntitySearch.js +38 -391
- package/lib/hooks/useEntitySearch.spec.js +443 -0
- package/lib/hooks/useEvent.spec.js +45 -0
- package/lib/hooks/useFrequentlyAskedQuestions.spec.js +222 -0
- package/lib/hooks/useFrequentlyUsedActions.js +60 -22
- package/lib/hooks/useFrequentlyUsedActions.spec.js +135 -0
- package/lib/hooks/useIsMaiaPageRoute.js +26 -0
- package/lib/hooks/useIsMaiaPageRoute.spec.js +26 -0
- package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +122 -0
- package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +148 -0
- package/lib/hooks/useKnowledge/saveKnowledge.spec.js +104 -0
- package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +178 -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.js +41 -0
- package/lib/hooks/useMentionPopover.helpers.spec.js +71 -0
- package/lib/hooks/useMentionPopover.js +9 -35
- package/lib/hooks/useMentionPopover.spec.js +215 -0
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.js +47 -0
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +132 -0
- package/lib/hooks/useMinimizedPillBottomOffset.js +15 -45
- 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.spec.js +192 -0
- package/lib/hooks/useProjectSearch.helpers.js +61 -0
- package/lib/hooks/useProjectSearch.helpers.spec.js +70 -0
- package/lib/hooks/useProjectSearch.js +4 -58
- package/lib/hooks/useProjectSearch.spec.js +91 -0
- package/lib/hooks/useProjectSummary.spec.js +193 -0
- package/lib/hooks/useProjectSummaryConfig.helpers.js +62 -0
- package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +92 -0
- package/lib/hooks/useProjectSummaryConfig.js +14 -52
- package/lib/hooks/useProjectSummaryConfig.spec.js +133 -0
- package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +112 -0
- package/lib/hooks/useRecentClientsSearch.helpers.js +33 -0
- package/lib/hooks/useRecentClientsSearch.helpers.spec.js +33 -0
- package/lib/hooks/useRecentClientsSearch.js +4 -32
- 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/approvalBoxToolActions.js +492 -0
- package/lib/lang/br/index.js +44 -38
- package/lib/lang/en/index.js +44 -38
- package/lib/lang/es/index.js +44 -38
- package/lib/lang/fr/index.js +44 -38
- 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 +56 -0
- package/lib/services/maia/Actions/getSlashCommands.spec.js +91 -0
- package/lib/services/maia/Agents/connectors.spec.js +359 -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.js +181 -0
- package/lib/services/maia/Agents/getAgents.helpers.spec.js +211 -0
- package/lib/services/maia/Agents/getAgents.js +78 -242
- package/lib/services/maia/Agents/getAgents.spec.js +697 -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 +149 -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.js +130 -0
- package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +153 -0
- package/lib/services/maia/Orchestrator/orchestrator.js +38 -121
- 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.spec.js +254 -0
- package/lib/store/chatsSidebarOptimistic.spec.js +112 -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.js +45 -0
- package/lib/store/sessions/sessionNotifications.helpers.spec.js +63 -0
- package/lib/store/sessions/sessionNotifications.js +35 -41
- package/lib/store/sessions/sessionNotifications.spec.js +106 -0
- package/lib/store/sessions/sessionStreamManager.js +40 -52
- package/lib/store/sessions/sessionStreamManager.spec.js +503 -0
- package/lib/store/sessions/sessions.types.spec.js +16 -0
- package/lib/store/sessions/useSessionsStore.spec.js +135 -0
- package/lib/store/useChatsStore.spec.js +619 -0
- package/lib/store/useFaqsStore.spec.js +57 -0
- package/lib/styles/cascade.js +29 -3
- package/lib/styles/transitions.js +3 -1
- package/lib/test/mockSseStream.js +121 -0
- package/lib/test/streamdownCodeMock.js +6 -0
- package/lib/test/streamdownMock.js +12 -0
- package/lib/types/agentModal.js +1 -1
- package/lib/types/global.d.js +1 -1
- package/lib/utils/actionCategoryMap.spec.js +18 -0
- package/lib/utils/agentDisplayName.spec.js +44 -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 +38 -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 +100 -0
- package/lib/utils/hoursPlannerQuickActionType.js +74 -1
- package/lib/utils/hoursPlannerQuickActionType.spec.js +64 -0
- package/lib/utils/imagePreprocessor.helpers.js +28 -0
- package/lib/utils/imagePreprocessor.helpers.spec.js +28 -0
- package/lib/utils/imagePreprocessor.js +12 -37
- package/lib/utils/imagePreprocessor.spec.js +112 -0
- package/lib/utils/maiaPageRoute.js +24 -0
- package/lib/utils/maiaPageRoute.spec.js +23 -0
- package/lib/utils/mapBackendLang.spec.js +19 -0
- package/lib/utils/navigateContextEntity.spec.js +50 -0
- package/lib/utils/normalizeAgentConnectors.spec.js +107 -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.spec.js +158 -0
- package/lib/utils/retryCompletion.spec.js +99 -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.js +71 -19
- package/lib/utils/streamActivityMessages.spec.js +229 -0
- package/lib/utils/validateTrimmedFields.spec.js +26 -0
- package/package.json +1 -1
- package/README.md +0 -2
|
@@ -26,7 +26,7 @@ import { SlashCommandDropdown } from '../SlashCommandDropdown';
|
|
|
26
26
|
import { SkillsDropdown } from '../SkillsDropdown';
|
|
27
27
|
import { useSlashCommands } from '../../../hooks/useSlashCommands';
|
|
28
28
|
import { useSkillsCatalog } from '../../../hooks/useSkillsCatalog';
|
|
29
|
-
import { canAccessToSkills
|
|
29
|
+
import { canAccessToSkills } from '../../../constants/permissions';
|
|
30
30
|
import { useUser } from '../../../context/cor-user';
|
|
31
31
|
import { resolveQuickActionType } from '../../../utils/hoursPlannerQuickActionType';
|
|
32
32
|
import { useT } from '../../../hooks/useT';
|
|
@@ -53,6 +53,7 @@ import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
|
|
|
53
53
|
import { useMentionPopover } from '../../../hooks/useMentionPopover';
|
|
54
54
|
import { useCaretPosition } from '../../../hooks/useCaretPosition';
|
|
55
55
|
import { dataTransferHasFiles, filesFromDataTransfer } from '../../../utils/chatInputFiles';
|
|
56
|
+
import { canCreateSkillsFromInput, getSkillMentionIds } from './MAIAInput.helpers';
|
|
56
57
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
57
58
|
var TOOL_CHIP_EXIT_MS = 220;
|
|
58
59
|
var SLASH_DROPDOWN_WIDTH_PX = 340;
|
|
@@ -60,13 +61,6 @@ var SLASH_DROPDOWN_MAX_HEIGHT_PX = 416;
|
|
|
60
61
|
var SKILLS_DROPDOWN_WIDTH_PX = 339;
|
|
61
62
|
var SLASH_DROPDOWN_GAP_PX = 4;
|
|
62
63
|
var SLASH_DROPDOWN_VIEWPORT_PAD_PX = 8;
|
|
63
|
-
var getSkillMentionIds = function getSkillMentionIds(mentions) {
|
|
64
|
-
return mentions.filter(function (mention) {
|
|
65
|
-
return mention.type === 'skill';
|
|
66
|
-
}).map(function (mention) {
|
|
67
|
-
return String(mention.id);
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
64
|
export var MAIAInput = function MAIAInput(_ref) {
|
|
71
65
|
var _agent$entity, _contextChip$items, _contextChip$items2, _agent$connectors, _agent$model_display_, _contextChip$items3;
|
|
72
66
|
var onSendMessage = _ref.onSendMessage,
|
|
@@ -89,7 +83,9 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
89
83
|
tooltipZIndex = _ref.tooltipZIndex,
|
|
90
84
|
externalPopoverAnchorRef = _ref.popoverAnchorRef,
|
|
91
85
|
layoutMode = _ref.layoutMode,
|
|
92
|
-
contextChip = _ref.contextChip
|
|
86
|
+
contextChip = _ref.contextChip,
|
|
87
|
+
_ref$orchestratorHome = _ref.orchestratorHomeComposer,
|
|
88
|
+
orchestratorHomeComposer = _ref$orchestratorHome === void 0 ? false : _ref$orchestratorHome;
|
|
93
89
|
var _useT = useT(),
|
|
94
90
|
t = _useT.t;
|
|
95
91
|
var editorRef = useRef(null);
|
|
@@ -936,7 +932,7 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
936
932
|
})));
|
|
937
933
|
var agentModelName = isCustomAgent ? (agent === null || agent === void 0 || (_agent$model_display_ = agent.model_display_name) === null || _agent$model_display_ === void 0 ? void 0 : _agent$model_display_.trim()) || null : null;
|
|
938
934
|
var showCustomMetaIndicators = hasCorAccess || Boolean(agentModelName);
|
|
939
|
-
var showMentionButton = (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator' || hasCorAccess;
|
|
935
|
+
var showMentionButton = (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator' || hasCorAccess || orchestratorHomeComposer && !agent;
|
|
940
936
|
var activeToolChipLeadingIcon;
|
|
941
937
|
if (activeToolChipHovered) {
|
|
942
938
|
activeToolChipLeadingIcon = /*#__PURE__*/_jsx(Cross, {
|
|
@@ -1311,7 +1307,7 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
1311
1307
|
query: skillsQuery,
|
|
1312
1308
|
loading: skillsLoading,
|
|
1313
1309
|
error: skillsError,
|
|
1314
|
-
canCreate: showSkillsButton
|
|
1310
|
+
canCreate: canCreateSkillsFromInput(showSkillsButton, user === null || user === void 0 ? void 0 : user.company_id),
|
|
1315
1311
|
onSelect: handleSelectSkill,
|
|
1316
1312
|
onCreate: handleCreateSkill,
|
|
1317
1313
|
onClose: handleCloseSkillsDropdown,
|
|
@@ -1323,4 +1319,4 @@ export var MAIAInput = function MAIAInput(_ref) {
|
|
|
1323
1319
|
}), document.body)]
|
|
1324
1320
|
});
|
|
1325
1321
|
};
|
|
1326
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiQm9sdCIsIlRvb2x0aXAiLCJBY3RpdmVUb29sQ2hpcEljb25CdXR0b24iLCJBY3RpdmVUb29sQ2hpcExhYmVsIiwiQWN0aXZlVG9vbENoaXBSb290IiwiUGx1c01lbnVEaXZpZGVyIiwiUGx1c01lbnVJbm5lckNvbHVtbiIsIlBsdXNNZW51SXRlbUJ1dHRvbiIsIlBsdXNNZW51SXRlbUxhYmVsIiwiUGx1c01lbnVQYXBlciIsIlBsdXNNZW51VG9vbHNSb3ciLCJQbHVzVG9nZ2xlQnV0dG9uIiwiU2tpbGxzVG9nZ2xlQnV0dG9uIiwiU0NJbnB1dENoaXBzUm93IiwiU0NJbnB1dE1ldGFJY29uQnV0dG9uIiwiU0NJbnB1dE1ldGFJbmRpY2F0b3JzIiwiU0NNSUF0dGFjaG1lbnQiLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJTQ01JQXR0YWNobWVudEZpbGVJY29uIiwiU0NNSUF0dGFjaG1lbnRJY29uIiwiU0NNSUF0dGFjaG1lbnROYW1lIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCIsIlNDSW5wdXRFZGl0b3JDZWxsIiwiU0NJbnB1dFRvb2xiYXJSb3ciLCJTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCIsIlN0eWxlZE1BSUFTdG9wQnV0dG9uIiwiU3R5bGVkTUFJQVN0b3BJY29uIiwiU3R5bGVkTUFJQURyb3BPdmVybGF5IiwiZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0IiwiTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgiLCJ1c2VHbG9iYWxDb250ZXh0IiwiTW9kYWxGaWxlRXhjZWVkcyIsIlNsYXNoQ29tbWFuZERyb3Bkb3duIiwiU2tpbGxzRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwidXNlU2tpbGxzQ2F0YWxvZyIsImNhbkFjY2Vzc1RvU2tpbGxzIiwiaXNTa2lsbHNQaWxvdENvbXBhbnkiLCJ1c2VVc2VyIiwicmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSIsInVzZVQiLCJNYWlhSW5wdXRBZGRJY29uIiwiTWFpYUlucHV0QXR0YWNoSWNvbiIsIk1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24iLCJNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiIsIkNvckFjY2Vzc0ljb24iLCJNYWlhSW5wdXRNZW50aW9uSWNvbiIsIk1haWFJbnB1dFJvYm90SWNvbiIsIk1haWFJbnB1dFNlbmRJY29uIiwiTWFpYUlucHV0U2xhc2hJY29uIiwiU2tpbGxJY29uIiwiTWFpYUlucHV0V2ViU2VhcmNoSWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSIsIk1BSUFfQ0hBVF9JTlBVVF9VSSIsImFsbG93ZWRGaWxlVHlwZXMiLCJmaWxlVHlwZXMiLCJnZXRNYXhBdHRhY2htZW50U2l6ZU1iIiwiTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMiLCJBUFBDVUVTX0VWRU5UUyIsInRyYWNrQXBwY3Vlc0V2ZW50IiwiQ2hpcCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZU1lbnRpb25Qb3BvdmVyIiwidXNlQ2FyZXRQb3NpdGlvbiIsImRhdGFUcmFuc2Zlckhhc0ZpbGVzIiwiZmlsZXNGcm9tRGF0YVRyYW5zZmVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiVE9PTF9DSElQX0VYSVRfTVMiLCJTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCIsIlNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgiLCJTS0lMTFNfRFJPUERPV05fV0lEVEhfUFgiLCJTTEFTSF9EUk9QRE9XTl9HQVBfUFgiLCJTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgiLCJnZXRTa2lsbE1lbnRpb25JZHMiLCJtZW50aW9ucyIsImZpbHRlciIsIm1lbnRpb24iLCJ0eXBlIiwibWFwIiwiU3RyaW5nIiwiaWQiLCJNQUlBSW5wdXQiLCJfcmVmIiwiX2FnZW50JGVudGl0eSIsIl9jb250ZXh0Q2hpcCRpdGVtcyIsIl9jb250ZXh0Q2hpcCRpdGVtczIiLCJfYWdlbnQkY29ubmVjdG9ycyIsIl9hZ2VudCRtb2RlbF9kaXNwbGF5XyIsIl9jb250ZXh0Q2hpcCRpdGVtczMiLCJvblNlbmRNZXNzYWdlIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwib25Gb2N1cyIsIl9yZWYkYWxpZ25CdXR0b25zIiwiYWxpZ25CdXR0b25zIiwib25GaWxlQXR0YWNoIiwib25EZWxldGVBdHRhY2htZW50IiwiX3JlZiRhdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiY2hhdElkIiwibmV3Q2hhdEtleSIsInRvb2x0aXBaSW5kZXgiLCJleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYiLCJwb3BvdmVyQW5jaG9yUmVmIiwibGF5b3V0TW9kZSIsImNvbnRleHRDaGlwIiwiX3VzZVQiLCJ0IiwiZWRpdG9yUmVmIiwiZmlsZUlucHV0UmVmIiwiY2hpcHNSb3dSZWYiLCJ0b29sYmFyUm93UmVmIiwiaW50ZXJuYWxXcmFwcGVyUmVmIiwid3JhcHBlclJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImhhc1R5cGluZ1ByZXNlbmNlIiwic2V0SGFzVHlwaW5nUHJlc2VuY2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImNoaXBzUm93SGVpZ2h0Iiwic2V0Q2hpcHNSb3dIZWlnaHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInRvb2xiYXJSb3dIZWlnaHQiLCJzZXRUb29sYmFyUm93SGVpZ2h0IiwiX3VzZVN0YXRlNyIsImlzT3BlbiIsImV4Y2x1ZGVkRmlsZXMiLCJleGNlZWRlZEZpbGVzIiwiZmlsZVNpemVzIiwiX3VzZVN0YXRlOCIsIm1vZGFsUHJvcHMiLCJzZXRNb2RhbFByb3BzIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwidG9nZ2xlRGVlcFNlYXJjaCIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImlzQXV0b0FwcHJvdmVBY3RpdmUiLCJ0b2dnbGVBdXRvQXBwcm92ZSIsImFnZW50IiwiaW5pdGlhbERyYWZ0IiwiZGVlcExpbmtTZW5kUGVuZGluZ1JlZiIsInBsdXNNZW51WkluZGV4IiwiaW5pdGlhbERyYWZ0QXBwbGllZFJlZiIsIl91c2VNZW50aW9uUG9wb3ZlciIsInBvcG92ZXJPcGVuIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiaGFuZGxlVHJpZ2dlciIsImhhbmRsZVBvcG92ZXJLZXlEb3duIiwiaGFuZGxlS2V5RG93biIsInBvcG92ZXJOb2RlIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJwbHVzTWVudUFuY2hvciIsInNldFBsdXNNZW51QW5jaG9yIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiYWN0aXZlVG9vbENoaXBIb3ZlcmVkIiwic2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInRvb2xDaGlwRXhpdGluZyIsInNldFRvb2xDaGlwRXhpdGluZyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJhdXRvQXBwcm92ZUNoaXBIb3ZlcmVkIiwic2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZCIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJpc0ZpbGVEcmFnQWN0aXZlIiwic2V0SXNGaWxlRHJhZ0FjdGl2ZSIsInRvb2xDaGlwRXhpdFRpbWVyUmVmIiwiZmlsZURyYWdDb3VudGVyUmVmIiwic2VhcmNoTW9kZUFjdGl2ZVJlZiIsIndlYiIsImRlZXAiLCJwbHVzTWVudU9wZW4iLCJCb29sZWFuIiwicHJldmlvdXNBZ2VudElkUmVmIiwidW5kZWZpbmVkIiwicHJldmlvdXNDaGF0SWRSZWYiLCJwcmV2aW91c05ld0NoYXRLZXlSZWYiLCJwcmV2aW91c0xheW91dE1vZGVSZWYiLCJhbmFseXRpY3NBZ2VudFR5cGUiLCJhbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQiLCJlbnRpdHkiLCJfdXNlU2xhc2hDb21tYW5kcyIsInNsYXNoQ29tbWFuZHMiLCJjb21tYW5kcyIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJzaG93U2xhc2hEcm9wZG93biIsInNldFNob3dTbGFzaERyb3Bkb3duIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInNsYXNoUXVlcnkiLCJzZXRTbGFzaFF1ZXJ5Iiwic2xhc2hNZW51V2FzT3BlblJlZiIsInNsYXNoRHJvcGRvd25aSW5kZXgiLCJnZXRDYXJldFJlY3QiLCJfdXNlU3RhdGUyMSIsImJvdHRvbSIsImxlZnQiLCJtYXhIZWlnaHQiLCJfdXNlU3RhdGUyMiIsInNsYXNoRHJvcGRvd25Qb3MiLCJzZXRTbGFzaERyb3Bkb3duUG9zIiwidXNlciIsInNob3dTa2lsbHNCdXR0b24iLCJza2lsbHNCdXR0b25SZWYiLCJza2lsbHNNZW51V2FzT3BlblJlZiIsInNraWxsc09wZW5Tb3VyY2VSZWYiLCJwcmV2U2tpbGxNZW50aW9uSWRzUmVmIiwic2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYiLCJfdXNlU2tpbGxzQ2F0YWxvZyIsInNraWxscyIsInNraWxsc0xvYWRpbmciLCJsb2FkaW5nIiwic2tpbGxzRXJyb3IiLCJlcnJvciIsImZldGNoU2tpbGxzIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsInNob3dTa2lsbHNEcm9wZG93biIsInNldFNob3dTa2lsbHNEcm9wZG93biIsIl91c2VTdGF0ZTI1IiwiX3VzZVN0YXRlMjYiLCJza2lsbHNRdWVyeSIsInNldFNraWxsc1F1ZXJ5IiwiX3VzZVN0YXRlMjciLCJfdXNlU3RhdGUyOCIsInNraWxsc0Ryb3Bkb3duUG9zIiwic2V0U2tpbGxzRHJvcGRvd25Qb3MiLCJwb3NpdGlvblNsYXNoRHJvcGRvd24iLCJfd3JhcHBlclJlZiRjdXJyZW50IiwiX2NhcmV0JHRvcCIsIl9jYXJldCRsZWZ0Iiwid3JhcHBlclJlY3QiLCJjdXJyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2FyZXQiLCJ0b3BTb3VyY2UiLCJ0b3AiLCJ3aWR0aCIsImxlZnRTb3VyY2UiLCJ2aWV3cG9ydEgiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsInZpZXdwb3J0VyIsImlubmVyV2lkdGgiLCJNYXRoIiwibWF4IiwibWluIiwiYXZhaWxhYmxlSGVpZ2h0UHgiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJwb3NpdGlvblNraWxsc0Ryb3Bkb3duIiwiX3dyYXBwZXJSZWYkY3VycmVudDIiLCJfY2FyZXQkdG9wMiIsIl9jYXJldCRsZWZ0MiIsInNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInNldFRpbWVvdXQiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJmb2N1cyIsImNsb3NlUGx1c01lbnUiLCJjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0IiwiY2xlYXJUaW1lb3V0IiwiaGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93biIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVBsdXNCdXR0b25DbGljayIsInN0b3BQcm9wYWdhdGlvbiIsImN1cnJlbnRUYXJnZXQiLCJhaUNoYXRQbHVzT3BlbiIsIl9vYmplY3RTcHJlYWQiLCJhZ2VudF90eXBlIiwiaGFuZGxlTWVudGlvbkJ1dHRvbkNsaWNrIiwiX2VkaXRvclJlZiRjdXJyZW50MiIsImluc2VydE1lbnRpb25UcmlnZ2VyIiwiaGFuZGxlUGx1c01lbnVBdHRhY2giLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQiLCJhaUNoYXRUb29scyIsIm9wdGlvbiIsImxlbmd0aCIsImNsaWNrIiwiYmVnaW5Ub29sQ2hpcEV4aXQiLCJ3YXNXZWIiLCJ3YXNEZWVwIiwiX3NlYXJjaE1vZGVBY3RpdmVSZWYkIiwiaGFuZGxlUGx1c01lbnVXZWJTZWFyY2giLCJoYW5kbGVQbHVzTWVudURlZXBTZWFyY2giLCJoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9ucyIsIl9lZGl0b3JSZWYkY3VycmVudDMiLCJpbnNlcnRTbGFzaFRyaWdnZXIiLCJfZWRpdG9yUmVmJGN1cnJlbnQ0IiwiX2VkaXRvclJlZiRjdXJyZW50NSIsImRyYWZ0IiwidHJpbSIsInNldFBsYWluVGV4dCIsIl9lZGl0b3JSZWYkY3VycmVudDYiLCJzZW5kRGlzYWJsZWQiLCJhZ2VudENoYW5nZWQiLCJwcmV2aW91c0NoYXRJZCIsImN1cnJlbnRDaGF0SWQiLCJjaGF0Q2hhbmdlZCIsImNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCIsIm5ld0NoYXRTdGFydGVkIiwiaXNJbml0aWFsTW91bnQiLCJkZWxheSIsIl9lZGl0b3JSZWYkY3VycmVudDciLCJwcmV2aW91c0xheW91dE1vZGUiLCJ0aW1lb3V0SWQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ4IiwiaXNTcGVjaWFsaXN0QWdlbnQiLCJvYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwiX3JlZjIiLCJfcmVmMyIsImVudHJ5IiwiaXNJbnRlcnNlY3RpbmciLCJtYWlhQ29udGV4dE1lbnRpb25Jbml0IiwiZGlzY29ubmVjdCIsInRocmVzaG9sZCIsIm9ic2VydmUiLCJoYW5kbGVTZXNzaW9uQ2hhbmdlIiwiX2VkaXRvclJlZiRjdXJyZW50OSIsImNsZWFyIiwiZG9jdW1lbnQiLCJoYW5kbGVSZWZvY3VzIiwiX2VkaXRvclJlZiRjdXJyZW50MCIsImhhbmRsZUluc2VydFNraWxsTWVudGlvbiIsImV2ZW50IiwiX2VkaXRvclJlZiRjdXJyZW50MSIsIl9lZGl0b3JSZWYkY3VycmVudDEwIiwiX3JlZjQiLCJkZXRhaWwiLCJza2lsbCIsIm5vcm1hbGl6ZWROYW1lIiwibmFtZSIsInJlcGxhY2UiLCJhcHBlbmRNZW50aW9uQXRFbmQiLCJsYWJlbCIsImNvbmNhdCIsIl9lZGl0b3JSZWYkY3VycmVudDExIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMiIsIl9zdGF0ZSR0ZXh0IiwiX3N0YXRlJG1lbnRpb25zIiwiX2VkaXRvclJlZiRjdXJyZW50MTMiLCJzdGF0ZSIsInNlcmlhbGl6ZSIsInRleHQiLCJoYW5kbGVTZWxlY3RTbGFzaENvbW1hbmQiLCJjb21tYW5kIiwiX2VkaXRvclJlZiRjdXJyZW50MTQiLCJfc3RhdGUkdGV4dDIiLCJfZWRpdG9yUmVmJGN1cnJlbnQxNiIsImFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0IiwidHlwZV9xdWlja19hY3Rpb24iLCJvcmlnaW5fcXVpY2tfYWN0aW9uIiwidHJpZ2dlclBhcnQiLCJiZWZvcmVUcmlnZ2VyIiwiZW5kc1dpdGgiLCJzbGljZSIsImlzRW1wdHlCZWZvcmVUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50MTUiLCJ0aXRsZSIsImluc2VydFNsYXNoQ29tbWFuZCIsImhhbmRsZUNsb3NlU2xhc2hEcm9wZG93biIsImhhbmRsZUNsb3NlU2tpbGxzRHJvcGRvd24iLCJoYW5kbGVTa2lsbHNCdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDE3IiwiaW5zZXJ0U2tpbGxUcmlnZ2VyIiwiaGFuZGxlU2VsZWN0U2tpbGwiLCJfZWRpdG9yUmVmJGN1cnJlbnQxOCIsImFpQ2hhdFNraWxsU2VsZWN0Iiwic2tpbGxfaWQiLCJzb3VyY2UiLCJpbnNlcnRTa2lsbE1lbnRpb24iLCJoYW5kbGVDcmVhdGVTa2lsbCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsInNraWxsVmFsdWVzIiwidmFsdWVzIiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiYW5hbHl0aWNzU291cmNlIiwiaGFuZGxlRWRpdG9ySW5wdXQiLCJfcmVmNSIsInRyaWdnZXIiLCJzbGFzaFRyaWdnZXIiLCJoYXNoVHJpZ2dlciIsImN1cnJlbnRTa2lsbElkcyIsInNraWxsSWQiLCJpbmNsdWRlcyIsImZvckVhY2giLCJhaUNoYXRTa2lsbFJlbW92ZSIsImFjdGl2ZSIsImFpQ2hhdFF1aWNrQWN0aW9uT3BlbiIsInF1ZXJ5IiwiYWlDaGF0U2tpbGxPcGVuIiwia2V5Iiwic2hpZnRLZXkiLCJhZGRGaWxlcyIsImluY29taW5nIiwiZmlsZXNJbnNlcnRlZCIsImlzTmV3Rm9ybWF0IiwiZXh0ZW5zaW9uIiwiaXNPbGRGb3JtYXQiLCJpc0F1ZGlvRm9ybWF0IiwiZXhjZWVkc01heFNpemUiLCJzaXplIiwiZmlsZSIsIl9maWxlTmFtZVBhcnRzJHBvcCIsImV4Y2x1ZGVkRmlsZSIsImZpbGVOYW1lUGFydHMiLCJzcGxpdCIsImZpbGVFeHRlbnNpb24iLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsInB1c2giLCJ0eXBlRmlsZSIsInBhcnNlZEZpbGUiLCJGaWxlIiwiaGFuZGxlRmlsZVNlbGVjdCIsImZpbGVzIiwidGFyZ2V0IiwiQXJyYXkiLCJmcm9tIiwidmFsdWUiLCJyZXNldEZpbGVEcmFnIiwiaGFuZGxlRHJhZ0VudGVyIiwiZGF0YVRyYW5zZmVyIiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlRHJhZ092ZXIiLCJkcm9wRWZmZWN0IiwiaGFuZGxlRHJvcCIsImhhbmRsZVBhc3RlRmlsZXMiLCJoYW5kbGVXcmFwcGVyUGFzdGUiLCJfd3JhcHBlclJlZiRjdXJyZW50MyIsImVkaXRvckVsIiwicXVlcnlTZWxlY3RvciIsImNvbnRhaW5zIiwiY2xpcGJvYXJkRGF0YSIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImFpQ2hhdFN0b3BSZXNwb25zZSIsInNob3dDaGlwc1JvdyIsIml0ZW1zIiwiY2hpcHNFbCIsInRvb2xiYXJFbCIsInVwZGF0ZUhlaWdodHMiLCJuZXh0Q2hpcHMiLCJjZWlsIiwiaGVpZ2h0IiwibmV4dFRvb2xiYXIiLCJwcmV2IiwiUmVzaXplT2JzZXJ2ZXIiLCJlZGl0b3JNYXhIZWlnaHQiLCJjaGlwc1Jvd0hlaWdodFB4IiwidG9vbGJhclJvd0hlaWdodFB4IiwidG9vbGJhckljb25Db2xvciIsInBsdXNNZW51SWNvbkNvbG9yIiwibWVudUljb24iLCJpc0N1c3RvbUFnZW50IiwiaGFzQ29yQWNjZXNzIiwiY29ubmVjdG9ycyIsInNvbWUiLCJjb25uZWN0b3IiLCJncm91cCIsInNsdWdzIiwic2x1ZyIsImFnZW50TW9kZWxOYW1lIiwibW9kZWxfZGlzcGxheV9uYW1lIiwic2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzIiwic2hvd01lbnRpb25CdXR0b24iLCJhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uIiwiY29sb3IiLCJjaGlwQ2xvc2VJY29uIiwiY2hpbGRyZW4iLCJyZWYiLCJoYXNBdHRhY2htZW50cyIsIiRmaWxlRHJhZ0FjdGl2ZSIsIm9uUGFzdGUiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsImVudGl0eUlkIiwibGVhZGluZ0ljb24iLCJvbkVudGl0eU5hdmlnYXRlIiwiYXR0YWNobWVudCIsImluZGV4IiwiX2F0dGFjaG1lbnQkdHlwZSIsImlzSW1hZ2UiLCJzdGFydHNXaXRoIiwidGVzdCIsImNoaXBJY29uIiwiekluZGV4IiwiZGVmYXVsdFZhbHVlIiwib25DbGljayIsIm9uSW5wdXQiLCJvbktleURvd24iLCJvblBhc3RlRmlsZXMiLCIkbWVudU9wZW4iLCJvbk1vdXNlRG93biIsIm9wZW4iLCJhbmNob3JFbCIsIm9uQ2xvc2UiLCJkaXNhYmxlQXV0b0ZvY3VzIiwiZGlzYWJsZUVuZm9yY2VGb2N1cyIsImRpc2FibGVSZXN0b3JlRm9jdXMiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJzeCIsInNsb3RQcm9wcyIsInBhcGVyIiwiZWxldmF0aW9uIiwib3ZlcmZsb3ciLCJib3JkZXJSYWRpdXMiLCJib3hTaGFkb3ciLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5Ub3AiLCIkaG92ZXJlZCIsIiRleGl0aW5nIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiJGNsb3NlU2hvd24iLCJtb2RlbCIsInN0eWxlIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJoYXNWYWx1ZXMiLCJtdWx0aXBsZSIsImFjY2VwdCIsImJvZHkiLCJvblNlbGVjdCIsImFuY2hvclJlZiIsImNhbkNyZWF0ZSIsImNvbXBhbnlfaWQiLCJvbkNyZWF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL01BSUFJbnB1dC9NQUlBSW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdm9pZCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1sb25lbHktaWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7XG4gIENoYW5nZUV2ZW50LFxuICBDbGlwYm9hcmRFdmVudCxcbiAgRHJhZ0V2ZW50LFxuICBLZXlib2FyZEV2ZW50LFxuICBNb3VzZUV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IENoZWNrIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hlY2snXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgQm9sdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0JvbHQnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7XG4gIEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbixcbiAgQWN0aXZlVG9vbENoaXBMYWJlbCxcbiAgQWN0aXZlVG9vbENoaXBSb290LFxuICBQbHVzTWVudURpdmlkZXIsXG4gIFBsdXNNZW51SW5uZXJDb2x1bW4sXG4gIFBsdXNNZW51SXRlbUJ1dHRvbixcbiAgUGx1c01lbnVJdGVtTGFiZWwsXG4gIFBsdXNNZW51UGFwZXIsXG4gIFBsdXNNZW51VG9vbHNSb3csXG4gIFBsdXNUb2dnbGVCdXR0b24sXG4gIFNraWxsc1RvZ2dsZUJ1dHRvbixcbiAgU0NJbnB1dENoaXBzUm93LFxuICBTQ0lucHV0TWV0YUljb25CdXR0b24sXG4gIFNDSW5wdXRNZXRhSW5kaWNhdG9ycyxcbiAgU0NNSUF0dGFjaG1lbnQsXG4gIFNDTUlBdHRhY2htZW50RGVsZXRlSWNvbixcbiAgU0NNSUF0dGFjaG1lbnRGaWxlSWNvbixcbiAgU0NNSUF0dGFjaG1lbnRJY29uLFxuICBTQ01JQXR0YWNobWVudE5hbWUsXG4gIFN0eWxlZE1BSUFJbnB1dFdyYXBwZXIsXG4gIFN0eWxlZE1BSUFTZW5kQnV0dG9uLFxuICBTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkLFxuICBTQ0lucHV0RWRpdG9yQ2VsbCxcbiAgU0NJbnB1dFRvb2xiYXJSb3csXG4gIFN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGwsXG4gIFN0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGwsXG4gIFN0eWxlZE1BSUFTdG9wQnV0dG9uLFxuICBTdHlsZWRNQUlBU3RvcEljb24sXG4gIFN0eWxlZE1BSUFEcm9wT3ZlcmxheSxcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQsIE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYIH0gZnJvbSAnLi9tYWlhSW5wdXRMYXlvdXQnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IE1vZGFsRmlsZUV4Y2VlZHMgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvTW9kYWxGaWxlRXhjZWVkcydcbmltcG9ydCB7IFNsYXNoQ29tbWFuZERyb3Bkb3duIH0gZnJvbSAnLi4vU2xhc2hDb21tYW5kRHJvcGRvd24nXG5pbXBvcnQgeyBTa2lsbHNEcm9wZG93biB9IGZyb20gJy4uL1NraWxsc0Ryb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2xhc2hDb21tYW5kcyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNsYXNoQ29tbWFuZHMnXG5pbXBvcnQgeyB1c2VTa2lsbHNDYXRhbG9nIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU2tpbGxzQ2F0YWxvZydcbmltcG9ydCB7IGNhbkFjY2Vzc1RvU2tpbGxzLCBpc1NraWxsc1BpbG90Q29tcGFueSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHR5cGUgeyBTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZSdcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQWN0aW9uJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBNYWlhSW5wdXRBZGRJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QWRkSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dEF0dGFjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBdHRhY2hJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dERlZXBTZWFyY2hJY29uJ1xuaW1wb3J0IHsgQ29yQWNjZXNzSWNvbiB9IGZyb20gJy4uL2ljb25zL0NvckFjY2Vzc0ljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRNZW50aW9uSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dE1lbnRpb25JY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0Um9ib3RJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0Um9ib3RJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0U2VuZEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRTZW5kSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFNsYXNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFNsYXNoSWNvbidcbmltcG9ydCB7IFNraWxsSWNvbiB9IGZyb20gJy4uL2ljb25zL1NraWxsSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFdlYlNlYXJjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRXZWJTZWFyY2hJY29uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hpdGxBbmFseXRpY3MnXG5pbXBvcnQgeyBNQUlBX0NIQVRfSU5QVVRfVUkgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvY29uZmlnJ1xuaW1wb3J0IHtcbiAgYWxsb3dlZEZpbGVUeXBlcyxcbiAgZmlsZVR5cGVzLFxuICBnZXRNYXhBdHRhY2htZW50U2l6ZU1iLFxuICBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUyxcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Zvcm1hdEV4dGVuc2lvbnMnXG5pbXBvcnQgeyBBUFBDVUVTX0VWRU5UUywgdHJhY2tBcHBjdWVzRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHBjdWVzJ1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gJy4uL0NoaXAnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvciwgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUgfSBmcm9tICcuLi9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgdXNlTWVudGlvblBvcG92ZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZUNhcmV0UG9zaXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBkYXRhVHJhbnNmZXJIYXNGaWxlcywgZmlsZXNGcm9tRGF0YVRyYW5zZmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2hhdElucHV0RmlsZXMnXG5cbmNvbnN0IFRPT0xfQ0hJUF9FWElUX01TID0gMjIwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCA9IDM0MFxuY29uc3QgU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCA9IDQxNlxuY29uc3QgU0tJTExTX0RST1BET1dOX1dJRFRIX1BYID0gMzM5XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9HQVBfUFggPSA0XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFggPSA4XG5cbmNvbnN0IGdldFNraWxsTWVudGlvbklkcyA9IChtZW50aW9uczogQ29udGV4dE1lbnRpb25bXSk6IHN0cmluZ1tdID0+XG4gIG1lbnRpb25zLmZpbHRlcihtZW50aW9uID0+IG1lbnRpb24udHlwZSA9PT0gJ3NraWxsJykubWFwKG1lbnRpb24gPT4gU3RyaW5nKG1lbnRpb24uaWQpKVxuXG50eXBlIEF0dGFjaG1lbnRGaWxlID0ge1xuICBmaWxlOiBGaWxlXG4gIG9yaWdpbmFsRmlsZT86IEZpbGVcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2l6ZTogbnVtYmVyXG4gIHR5cGU6IHN0cmluZ1xuICBpY29uPzogUmVhY3ROb2RlXG59XG5cbnR5cGUgTUFJQUlucHV0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgb25TZW5kTWVzc2FnZTogKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgIGZhcUlkPzogc3RyaW5nLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgIHNjSWQ/OiBzdHJpbmdcbiAgKSA9PiB2b2lkXG4gIG9uU3RvcEdlbmVyYXRpb24/OiAoKCkgPT4gdm9pZCkgfCBudWxsXG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhblxuICBpc1dyaXRpbmc/OiBib29sZWFuXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIG9uQ2hhbmdlPzogKCkgPT4gdm9pZFxuICBvbkZvY3VzPzogKCkgPT4gdm9pZFxuICBhbGlnbkJ1dHRvbnM/OiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnXG4gIG9uRmlsZUF0dGFjaD86IChmaWxlOiBGaWxlKSA9PiB2b2lkXG4gIG9uRGVsZXRlQXR0YWNobWVudD86IChmaWxlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgY2hhdElkPzogc3RyaW5nXG4gIG5ld0NoYXRLZXk/OiBudW1iZXJcbiAgdG9vbHRpcFpJbmRleD86IG51bWJlclxuICAvKiogRXhwb25lIGVsIHdyYXBwZXIgZGVsIGlucHV0IHBhcmEgYW5jbGFyIHBvcG92ZXJzIChtZW5jaW9uZXMsIHBpbiBkZSBjb250ZXh0bykuICovXG4gIHBvcG92ZXJBbmNob3JSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbGF5b3V0TW9kZT86ICdzaWRlYmFyJyB8ICdmdWxsc2NyZWVuJyB8ICdmbG9hdGluZydcbiAgLyoqIENoaXAgZGUgY29udGV4dG8gKHRhcmVhL3Byb3llY3RvL2NsaWVudGUvZ2xvYmFsKSBtb3N0cmFkbyBlbiBsYSB0b29sYmFyIGRlbCBpbnB1dC4gKi9cbiAgY29udGV4dENoaXA/OiB7XG4gICAgaXRlbXM6IHN0cmluZ1tdXG4gICAgdHlwZT86IENvbnRleHRFbnRpdHlUeXBlXG4gICAgZW50aXR5SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgICBsZWFkaW5nSWNvbj86IFJlYWN0Tm9kZVxuICAgIG9uRW50aXR5TmF2aWdhdGU/OiAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIGlkOiBzdHJpbmcgfCBudW1iZXIpID0+IHZvaWRcbiAgfSB8IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IE1BSUFJbnB1dCA9ICh7XG4gIG9uU2VuZE1lc3NhZ2UsXG4gIGNsYXNzTmFtZSxcbiAgZGlzYWJsZWQsXG4gIGlzU3RyZWFtaW5nLFxuICBpc1dyaXRpbmcsXG4gIG9uU3RvcEdlbmVyYXRpb24sXG4gIHBsYWNlaG9sZGVyLFxuICBvbkNoYW5nZSxcbiAgb25Gb2N1cyxcbiAgYWxpZ25CdXR0b25zID0gJ3ZlcnRpY2FsJyxcbiAgb25GaWxlQXR0YWNoLFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQsXG4gIGF0dGFjaG1lbnRzID0gW10sXG4gIGNoYXRJZCxcbiAgbmV3Q2hhdEtleSxcbiAgdG9vbHRpcFpJbmRleCxcbiAgcG9wb3ZlckFuY2hvclJlZjogZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmLFxuICBsYXlvdXRNb2RlLFxuICBjb250ZXh0Q2hpcCxcbn06IE1BSUFJbnB1dFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGVkaXRvclJlZiA9IHVzZVJlZjxDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZT4obnVsbClcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNoaXBzUm93UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB0b29sYmFyUm93UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBpbnRlcm5hbFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHdyYXBwZXJSZWYgPSBleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYgPz8gaW50ZXJuYWxXcmFwcGVyUmVmXG4gIGNvbnN0IFtoYXNUeXBpbmdQcmVzZW5jZSwgc2V0SGFzVHlwaW5nUHJlc2VuY2VdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjaGlwc1Jvd0hlaWdodCwgc2V0Q2hpcHNSb3dIZWlnaHRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3Rvb2xiYXJSb3dIZWlnaHQsIHNldFRvb2xiYXJSb3dIZWlnaHRdID0gdXNlU3RhdGUoTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgpXG4gIGNvbnN0IFttb2RhbFByb3BzLCBzZXRNb2RhbFByb3BzXSA9IHVzZVN0YXRlKHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGV4Y2x1ZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGV4Y2VlZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGZpbGVTaXplczoge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgfSlcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHtcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlRGVlcFNlYXJjaCxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgaXNBdXRvQXBwcm92ZUFjdGl2ZSxcbiAgICB0b2dnbGVBdXRvQXBwcm92ZSxcbiAgICBhZ2VudCxcbiAgICBpbml0aWFsRHJhZnQsXG4gICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZixcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBwbHVzTWVudVpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTMwMCwgJ292ZXJsYXknKVxuICBjb25zdCBpbml0aWFsRHJhZnRBcHBsaWVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IHtcbiAgICBwb3BvdmVyT3BlbixcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsXG4gICAgaGFuZGxlVHJpZ2dlcixcbiAgICBoYW5kbGVLZXlEb3duOiBoYW5kbGVQb3BvdmVyS2V5RG93bixcbiAgICBwb3BvdmVyTm9kZSxcbiAgfSA9IHVzZU1lbnRpb25Qb3BvdmVyKHtcbiAgICBlZGl0b3JSZWYsXG4gICAgcG9wb3ZlckFuY2hvclJlZjogd3JhcHBlclJlZixcbiAgfSlcblxuICBjb25zdCBbcGx1c01lbnVBbmNob3IsIHNldFBsdXNNZW51QW5jaG9yXSA9IHVzZVN0YXRlPEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2FjdGl2ZVRvb2xDaGlwSG92ZXJlZCwgc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdG9vbENoaXBFeGl0aW5nLCBzZXRUb29sQ2hpcEV4aXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFthdXRvQXBwcm92ZUNoaXBIb3ZlcmVkLCBzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNGaWxlRHJhZ0FjdGl2ZSwgc2V0SXNGaWxlRHJhZ0FjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgdG9vbENoaXBFeGl0VGltZXJSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuICBjb25zdCBmaWxlRHJhZ0NvdW50ZXJSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc2VhcmNoTW9kZUFjdGl2ZVJlZiA9IHVzZVJlZih7IHdlYjogZmFsc2UsIGRlZXA6IGZhbHNlIH0pXG4gIGNvbnN0IHBsdXNNZW51T3BlbiA9IEJvb2xlYW4ocGx1c01lbnVBbmNob3IpXG5cbiAgLy8gSW5pY2lhbGl6YXIgbGFzIHJlZmVyZW5jaWFzIGNvbW8gdW5kZWZpbmVkIHBhcmEgZGV0ZWN0YXIgZWwgcHJpbWVyIGNhbWJpbyBjb3JyZWN0YW1lbnRlXG4gIGNvbnN0IHByZXZpb3VzQWdlbnRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNDaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzTmV3Q2hhdEtleVJlZiA9IHVzZVJlZjxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNMYXlvdXRNb2RlUmVmID0gdXNlUmVmPE1BSUFJbnB1dFByb3BzWydsYXlvdXRNb2RlJ10+KHVuZGVmaW5lZClcblxuICBjb25zdCBhbmFseXRpY3NBZ2VudFR5cGUgPSBnZXRDaGF0VG9vbHNNZW51QWdlbnRUeXBlKGFnZW50KVxuICBjb25zdCBhbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyA/IHsgZW50aXR5OiBhZ2VudC5lbnRpdHkgPz8gbnVsbCB9IDoge31cblxuICAvLyBTbGFzaCBjb21tYW5kcyBhcGxpY2FuIGEgY2xvbmVzIGVzcGVjaWFsaXN0YXMgeSBhbCBvcmNoZXN0cmF0b3IgZ2xvYmFsIChlc3RlIGFncmVnYSBsb3MgZGUgc3VzIHN1YmFnZW50ZXMpLlxuICAvLyBMb3MgY3VzdG9tIHkgbG9zIGNsb25lIGdsb2JhbC9tYWlha2VyIG5vIGxvcyB0aWVuZW4gaGFiaWxpdGFkb3MuXG4gIGNvbnN0IHsgY29tbWFuZHM6IHNsYXNoQ29tbWFuZHMgfSA9IHVzZVNsYXNoQ29tbWFuZHMoXG4gICAgKGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJykgfHxcbiAgICAgIChhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJiBhZ2VudD8uZW50aXR5ICE9PSAnZ2xvYmFsJylcbiAgICAgID8gYWdlbnQ/LmlkXG4gICAgICA6IHVuZGVmaW5lZFxuICApXG4gIGNvbnN0IFtzaG93U2xhc2hEcm9wZG93biwgc2V0U2hvd1NsYXNoRHJvcGRvd25dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzbGFzaFF1ZXJ5LCBzZXRTbGFzaFF1ZXJ5XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBzbGFzaE1lbnVXYXNPcGVuUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBzbGFzaERyb3Bkb3duWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMjAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGdldENhcmV0UmVjdCA9IHVzZUNhcmV0UG9zaXRpb24oKVxuICBjb25zdCBbc2xhc2hEcm9wZG93blBvcywgc2V0U2xhc2hEcm9wZG93blBvc10gPSB1c2VTdGF0ZSh7XG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgbWF4SGVpZ2h0OiBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLFxuICB9KVxuXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qgc2hvd1NraWxsc0J1dHRvbiA9IGNhbkFjY2Vzc1RvU2tpbGxzKHVzZXIpXG4gIGNvbnN0IHNraWxsc0J1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHNraWxsc01lbnVXYXNPcGVuUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBza2lsbHNPcGVuU291cmNlUmVmID0gdXNlUmVmPCdidXR0b24nIHwgJ2hhc2gnPignaGFzaCcpXG4gIGNvbnN0IHByZXZTa2lsbE1lbnRpb25JZHNSZWYgPSB1c2VSZWY8c3RyaW5nW10+KFtdKVxuICBjb25zdCBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgeyBza2lsbHMsIGxvYWRpbmc6IHNraWxsc0xvYWRpbmcsIGVycm9yOiBza2lsbHNFcnJvciwgZmV0Y2hTa2lsbHMgfSA9IHVzZVNraWxsc0NhdGFsb2coKVxuICBjb25zdCBbc2hvd1NraWxsc0Ryb3Bkb3duLCBzZXRTaG93U2tpbGxzRHJvcGRvd25dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtza2lsbHNRdWVyeSwgc2V0U2tpbGxzUXVlcnldID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtza2lsbHNEcm9wZG93blBvcywgc2V0U2tpbGxzRHJvcGRvd25Qb3NdID0gdXNlU3RhdGUoe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIG1heEhlaWdodDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgfSlcblxuICBjb25zdCBwb3NpdGlvblNsYXNoRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlclJlY3QgPSB3cmFwcGVyUmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgY2FyZXQgPSBnZXRDYXJldFJlY3QoJy8nKVxuICAgIGNvbnN0IHRvcFNvdXJjZSA9IGNhcmV0Py50b3AgPz8gKHdyYXBwZXJSZWN0ICYmIHdyYXBwZXJSZWN0LndpZHRoID4gMCA/IHdyYXBwZXJSZWN0LnRvcCA6IG51bGwpXG4gICAgY29uc3QgbGVmdFNvdXJjZSA9IGNhcmV0Py5sZWZ0ID8/ICh3cmFwcGVyUmVjdCAmJiB3cmFwcGVyUmVjdC53aWR0aCA+IDAgPyB3cmFwcGVyUmVjdC5sZWZ0IDogbnVsbClcbiAgICBpZiAodG9wU291cmNlID09IG51bGwgfHwgbGVmdFNvdXJjZSA9PSBudWxsKSByZXR1cm5cblxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KFxuICAgICAgU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLFxuICAgICAgTWF0aC5taW4odmlld3BvcnRXIC0gU0xBU0hfRFJPUERPV05fV0lEVEhfUFggLSBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsIGxlZnRTb3VyY2UpXG4gICAgKVxuICAgIGNvbnN0IGF2YWlsYWJsZUhlaWdodFB4ID0gdG9wU291cmNlIC0gU0xBU0hfRFJPUERPV05fR0FQX1BYIC0gU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYXG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5taW4oU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCwgTWF0aC5tYXgoMCwgYXZhaWxhYmxlSGVpZ2h0UHgpKVxuXG4gICAgc2V0U2xhc2hEcm9wZG93blBvcyh7XG4gICAgICBsZWZ0LFxuICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSB0b3BTb3VyY2UgKyBTTEFTSF9EUk9QRE9XTl9HQVBfUFgsXG4gICAgICBtYXhIZWlnaHQsXG4gICAgfSlcbiAgfSwgW3dyYXBwZXJSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dTbGFzaERyb3Bkb3duKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHBvc2l0aW9uU2xhc2hEcm9wZG93bigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtzaG93U2xhc2hEcm9wZG93biwgc2xhc2hRdWVyeSwgcG9zaXRpb25TbGFzaERyb3Bkb3duXSlcblxuICAvKiogRWwgcG9wb3ZlciBkZSBza2lsbHMgc2UgYW5jbGEgYWwgYCNgIHF1ZSBsbyBhYnJpw7M7IHNpIG5vIGhheSBjYXJldCwgYWwgYm9yZGUgZGVsIGlucHV0LiAqL1xuICBjb25zdCBwb3NpdGlvblNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXJSZWN0ID0gd3JhcHBlclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCcjJylcbiAgICBjb25zdCB0b3BTb3VyY2UgPSBjYXJldD8udG9wID8/ICh3cmFwcGVyUmVjdCAmJiB3cmFwcGVyUmVjdC53aWR0aCA+IDAgPyB3cmFwcGVyUmVjdC50b3AgOiBudWxsKVxuICAgIGNvbnN0IGxlZnRTb3VyY2UgPSBjYXJldD8ubGVmdCA/PyAod3JhcHBlclJlY3QgJiYgd3JhcHBlclJlY3Qud2lkdGggPiAwID8gd3JhcHBlclJlY3QubGVmdCA6IG51bGwpXG4gICAgaWYgKHRvcFNvdXJjZSA9PSBudWxsIHx8IGxlZnRTb3VyY2UgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heChcbiAgICAgIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCxcbiAgICAgIE1hdGgubWluKHZpZXdwb3J0VyAtIFNLSUxMU19EUk9QRE9XTl9XSURUSF9QWCAtIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCwgbGVmdFNvdXJjZSlcbiAgICApXG4gICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0UHggPSB0b3BTb3VyY2UgLSBTTEFTSF9EUk9QRE9XTl9HQVBfUFggLSBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFhcblxuICAgIHNldFNraWxsc0Ryb3Bkb3duUG9zKHtcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHRvcFNvdXJjZSArIFNMQVNIX0RST1BET1dOX0dBUF9QWCxcbiAgICAgIG1heEhlaWdodDogTWF0aC5taW4oU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCwgTWF0aC5tYXgoMCwgYXZhaWxhYmxlSGVpZ2h0UHgpKSxcbiAgICB9KVxuICB9LCBbd3JhcHBlclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd1NraWxsc0Ryb3Bkb3duKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBwb3NpdGlvblNraWxsc0Ryb3Bkb3duKClcblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblNraWxsc0Ryb3Bkb3duKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3Nob3dTa2lsbHNEcm9wZG93biwgc2tpbGxzUXVlcnksIHBvc2l0aW9uU2tpbGxzRHJvcGRvd25dKVxuXG4gIC8qKiBUcmFzIGVsZWdpciBvIHF1aXRhciBiw7pzcXVlZGEgd2ViL3Byb2Z1bmRhOiB2b2x2ZXIgYWwgdGV4dGFyZWEgKFBvcG92ZXIvbWVudSBwdWVkZSByb2JhciBmb2NvKS4gKi9cbiAgY29uc3Qgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uID0gKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9LCAwKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjbG9zZVBsdXNNZW51ID0gKCkgPT4ge1xuICAgIHNldFBsdXNNZW51QW5jaG9yKG51bGwpXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIGNvbnN0IGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50KVxuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93biA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIC8vIEV2aXRhIHF1ZSBlbCBib3TDs24gcm9iZSBlbCBmb2NvIGRlbCBpbnB1dCBhbCBhYnJpciBlbCBtZW7Dui5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAocGx1c01lbnVBbmNob3IpIHtcbiAgICAgIGNsb3NlUGx1c01lbnUoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFBsdXNNZW51QW5jaG9yKGUuY3VycmVudFRhcmdldClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0UGx1c09wZW4sIHsgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLCAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU1lbnRpb25CdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRNZW50aW9uVHJpZ2dlcigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudUF0dGFjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ2ZpbGVzJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIGlmIChhdHRhY2htZW50cy5sZW5ndGggPj0gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHJldHVyblxuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBiZWdpblRvb2xDaGlwRXhpdCA9ICgpID0+IHtcbiAgICBpZiAodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHdhc1dlYiA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgY29uc3Qgd2FzRGVlcCA9IGlzRGVlcFNlYXJjaEFjdGl2ZVxuICAgIGlmICghd2FzV2ViICYmICF3YXNEZWVwKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKHRydWUpXG4gICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGNvbnN0IHsgd2ViLCBkZWVwIH0gPSBzZWFyY2hNb2RlQWN0aXZlUmVmLmN1cnJlbnRcbiAgICAgIGlmICh3YXNXZWIgJiYgd2ViKSB7XG4gICAgICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICB9IGVsc2UgaWYgKHdhc0RlZXAgJiYgZGVlcCkge1xuICAgICAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICAgIH1cbiAgICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gICAgfSwgVE9PTF9DSElQX0VYSVRfTVMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudVdlYlNlYXJjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICB9XG4gICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ3NlYXJjaCcsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgLy8gQXV0by1hcHByb3ZlIGZ1ZXJhIGRlIGVzdGUgcmVsZWFzZSAodmVyIElTX0FVVE9fQVBQUk9WRV9FTkFCTEVEIGVuIHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnKS5cbiAgLy8gY29uc3QgaGFuZGxlUGx1c01lbnVBdXRvQXBwcm92ZSA9ICgpID0+IHtcbiAgLy8gICBjbG9zZVBsdXNNZW51KClcbiAgLy8gICB0b2dnbGVBdXRvQXBwcm92ZT8uKClcbiAgLy8gICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgLy8gICAgIHRvb2w6ICdhdXRvX2FwcHJvdmUnLFxuICAvLyAgICAgYWN0aXZlOiAhaXNBdXRvQXBwcm92ZUFjdGl2ZSxcbiAgLy8gICB9KVxuICAvLyB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGlmIChpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgfVxuICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnZGVlcF9zZWFyY2gnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zID0gKCkgPT4ge1xuICAgIHNldFBsdXNNZW51QW5jaG9yKG51bGwpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hUcmlnZ2VyKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICB9XG4gIH0sIFtkaXNhYmxlZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbml0aWFsRHJhZnRBcHBsaWVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbaW5pdGlhbERyYWZ0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRyYWZ0ID0gaW5pdGlhbERyYWZ0Py50cmltKClcbiAgICBpZiAoIWRyYWZ0IHx8IGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICBpZiAoZGVlcExpbmtTZW5kUGVuZGluZ1JlZikge1xuICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uc2V0UGxhaW5UZXh0KGRyYWZ0KVxuICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKHRydWUpXG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICB9XG4gIH0sIFtpbml0aWFsRHJhZnQsIGRpc2FibGVkLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICBjb25zdCBzZW5kRGlzYWJsZWQgPSB1c2VNZW1vKFxuICAgICgpID0+ICFoYXNUeXBpbmdQcmVzZW5jZSAmJiBhdHRhY2htZW50cy5sZW5ndGggPT09IDAsXG4gICAgW2hhc1R5cGluZ1ByZXNlbmNlLCBhdHRhY2htZW50cy5sZW5ndGhdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNlYXJjaE1vZGVBY3RpdmVSZWYuY3VycmVudCA9IHsgd2ViOiBpc1dlYlNlYXJjaEFjdGl2ZSwgZGVlcDogaXNEZWVwU2VhcmNoQWN0aXZlIH1cbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzV2ViU2VhcmNoQWN0aXZlICYmICFpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZChmYWxzZSlcbiAgICB9XG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICAvLyBBdXRvLWZvY3VzIGN1YW5kbyBjYW1iaWEgZWwgYWdlbnRlIG8gbGEgY29udmVyc2FjacOzbiwgbyBhbCBtb250YXIgZWwgY29tcG9uZW50ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFnZW50Q2hhbmdlZCA9IHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ICE9PSBhZ2VudD8uaWRcbiAgICBjb25zdCBwcmV2aW91c0NoYXRJZCA9IHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnRcbiAgICBjb25zdCBjdXJyZW50Q2hhdElkID0gY2hhdElkXG4gICAgY29uc3QgY2hhdENoYW5nZWQgPSBwcmV2aW91c0NoYXRJZCAhPT0gY3VycmVudENoYXRJZFxuICAgIGNvbnN0IGNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCA9XG4gICAgICAocHJldmlvdXNDaGF0SWQgPT09IHVuZGVmaW5lZCB8fCBwcmV2aW91c0NoYXRJZCA9PT0gbnVsbCkgJiYgY3VycmVudENoYXRJZCAhPT0gdW5kZWZpbmVkICYmIGN1cnJlbnRDaGF0SWQgIT09IG51bGxcbiAgICBjb25zdCBuZXdDaGF0U3RhcnRlZCA9IHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50ICE9PSBuZXdDaGF0S2V5XG4gICAgY29uc3QgaXNJbml0aWFsTW91bnQgPSBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkICYmIHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZFxuXG4gICAgaWYgKChhZ2VudENoYW5nZWQgfHwgY2hhdENoYW5nZWQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0IHx8IG5ld0NoYXRTdGFydGVkIHx8IGlzSW5pdGlhbE1vdW50KSAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGRlbGF5ID0gaXNJbml0aWFsTW91bnQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID8gMjAwIDogMTAwXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0sIGRlbGF5KVxuICAgIH1cblxuICAgIHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ID0gYWdlbnQ/LmlkXG4gICAgcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCA9IGNoYXRJZFxuICAgIHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50ID0gbmV3Q2hhdEtleVxuICB9LCBbYWdlbnQ/LmlkLCBjaGF0SWQsIG5ld0NoYXRLZXksIGRpc2FibGVkXSlcblxuICAvLyBBdXRvLWZvY3VzIGN1YW5kbyBjYW1iaWEgbGEgZGlzcG9zaWNpw7NuIGRlbCBtb2RhbCAoc2lkZWJhciAvIGZ1bGxzY3JlZW4gLyBmbG9hdGluZylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWxheW91dE1vZGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0xheW91dE1vZGUgPSBwcmV2aW91c0xheW91dE1vZGVSZWYuY3VycmVudFxuICAgIHByZXZpb3VzTGF5b3V0TW9kZVJlZi5jdXJyZW50ID0gbGF5b3V0TW9kZVxuXG4gICAgaWYgKHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gbGF5b3V0TW9kZSB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH1cbiAgICB9LCAyMDApXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkaXNhYmxlZF0pXG5cbiAgLy8gQXBwY3Vlczogbm90aWZ5IHRoYXQgdGhlIGlucHV0IGlzIHZpc2libGUgZm9yIHNwZWNpYWxpc3QgYWdlbnRzIChjbG9uZSArIHByb2plY3QvY2xpZW50KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlzU3BlY2lhbGlzdEFnZW50ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcbiAgICBpZiAoIXdyYXBwZXJSZWYuY3VycmVudCB8fCAhaXNTcGVjaWFsaXN0QWdlbnQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgKFtlbnRyeV0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgdHJhY2tBcHBjdWVzRXZlbnQoQVBQQ1VFU19FVkVOVFMubWFpYUNvbnRleHRNZW50aW9uSW5pdClcbiAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgdGhyZXNob2xkOiAwLjEgfVxuICAgIClcblxuICAgIG9ic2VydmVyLm9ic2VydmUod3JhcHBlclJlZi5jdXJyZW50KVxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgfSwgW2FnZW50Py5pZCwgYWdlbnQ/LnR5cGUsIGFnZW50Py5lbnRpdHldKVxuXG4gIC8vIENsZWFyIGlucHV0IHdoZW4gc2Vzc2lvbiBjaGFuZ2VzICh1c2VyIHN3aXRjaGVzIHRvIGEgZGlmZmVyZW50IGNoYXQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Vzc2lvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGlmIChkZWVwTGlua1NlbmRQZW5kaW5nUmVmKSB7XG4gICAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoZmFsc2UpXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICB9LCBbcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICAvLyBNYW50ZW5lciBmb2NvIGFsIHNlbGVjY2lvbmFyIHVuIGNvbnRleHRvIHJlY2llbnRlIChlbCBjbGljayBlbiBlbCBwaWxsIGxvIHJvYmEgYWwgaW5wdXQpLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVJlZm9jdXMgPSAoKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnB1dC1yZWZvY3VzJywgaGFuZGxlUmVmb2N1cylcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnB1dC1yZWZvY3VzJywgaGFuZGxlUmVmb2N1cylcbiAgfSwgW2Rpc2FibGVkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUluc2VydFNraWxsTWVudGlvbiA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgc2tpbGwgfSA9IChldmVudCBhcyBDdXN0b21FdmVudDx7IHNraWxsOiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghc2tpbGwgfHwgZGlzYWJsZWQpIHJldHVyblxuXG4gICAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IHNraWxsLm5hbWUucmVwbGFjZSgvXihAXFwvfCMpLywgJycpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmFwcGVuZE1lbnRpb25BdEVuZCh7XG4gICAgICAgIGlkOiBza2lsbC5pZCxcbiAgICAgICAgdHlwZTogJ3NraWxsJyxcbiAgICAgICAgbGFiZWw6IGAjJHtub3JtYWxpemVkTmFtZX1gLFxuICAgICAgfSlcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtaW5zZXJ0LXNraWxsLW1lbnRpb24nLCBoYW5kbGVJbnNlcnRTa2lsbE1lbnRpb24pXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtaW5zZXJ0LXNraWxsLW1lbnRpb24nLCBoYW5kbGVJbnNlcnRTa2lsbE1lbnRpb24pXG4gIH0sIFtkaXNhYmxlZF0pXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBlZGl0b3JSZWYuY3VycmVudD8uc2VyaWFsaXplKClcbiAgICBjb25zdCB0ZXh0ID0gc3RhdGU/LnRleHQgPz8gJydcbiAgICBpZiAoIXRleHQudHJpbSgpICYmICFhdHRhY2htZW50cy5sZW5ndGgpIHJldHVyblxuICAgIGNvbnN0IG1lbnRpb25zID0gc3RhdGU/Lm1lbnRpb25zID8/IFtdXG4gICAgb25TZW5kTWVzc2FnZSh0ZXh0LCBhdHRhY2htZW50cywgbWVudGlvbnMpXG4gICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICBwcmV2U2tpbGxNZW50aW9uSWRzUmVmLmN1cnJlbnQgPSBbXVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0pXG4gICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoZmFsc2UpXG4gICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24oZmFsc2UpXG4gICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nKClcbiAgfSwgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmddKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNsYXNoQ29tbWFuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChjb21tYW5kOiBBY3Rpb24pID0+IHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvblNlbGVjdCwge1xuICAgICAgICB0eXBlX3F1aWNrX2FjdGlvbjogcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZShjb21tYW5kKSxcbiAgICAgICAgb3JpZ2luX3F1aWNrX2FjdGlvbjogJ3NsYXNoX21lbnUnLFxuICAgICAgfSlcblxuICAgICAgY29uc3Qgc3RhdGUgPSBlZGl0b3JSZWYuY3VycmVudD8uc2VyaWFsaXplKClcbiAgICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgICAgY29uc3QgdHJpZ2dlclBhcnQgPSBgLyR7c2xhc2hRdWVyeX1gXG4gICAgICBjb25zdCBiZWZvcmVUcmlnZ2VyID0gdGV4dC5lbmRzV2l0aCh0cmlnZ2VyUGFydCkgPyB0ZXh0LnNsaWNlKDAsIC10cmlnZ2VyUGFydC5sZW5ndGgpIDogdGV4dFxuICAgICAgY29uc3QgaXNFbXB0eUJlZm9yZVRyaWdnZXIgPSBiZWZvcmVUcmlnZ2VyLnRyaW0oKSA9PT0gJydcblxuICAgICAgaWYgKGlzRW1wdHlCZWZvcmVUcmlnZ2VyKSB7XG4gICAgICAgIG9uU2VuZE1lc3NhZ2UoY29tbWFuZC50aXRsZSwgYXR0YWNobWVudHMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29tbWFuZC5pZClcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoZmFsc2UpXG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydFNsYXNoQ29tbWFuZCh7IGlkOiBjb21tYW5kLmlkLCBsYWJlbDogY29tbWFuZC50aXRsZSB9KVxuICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthdHRhY2htZW50cywgb25TZW5kTWVzc2FnZSwgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBzbGFzaFF1ZXJ5LCBldmVudEFtcGxpdHVkZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlU2xhc2hEcm9wZG93biA9ICgpID0+IHtcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VTa2lsbHNEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24oZmFsc2UpXG4gICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2hhc2gnXG4gIH0sIFtdKVxuXG4gIC8qKiBBYnJlIGVsIGxpc3RhZG8gZGVzZGUgZWwgYm90w7NuOiBpbnNlcnRhIGAjYCBlbiBlbCBlZGl0b3IgcGFyYSBxdWUgZWwgdHJpZ2dlciBxdWVkZSBhY3Rpdm8uICovXG4gIGNvbnN0IGhhbmRsZVNraWxsc0J1dHRvbkNsaWNrID0gKGU6IE1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgaWYgKHNob3dTa2lsbHNEcm9wZG93bikge1xuICAgICAgaGFuZGxlQ2xvc2VTa2lsbHNEcm9wZG93bigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2J1dHRvbidcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2tpbGxUcmlnZ2VyKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNraWxsID0gdXNlQ2FsbGJhY2soXG4gICAgKHNraWxsOiBTa2lsbCkgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsU2VsZWN0LCB7XG4gICAgICAgIHNraWxsX2lkOiBza2lsbC5pZCxcbiAgICAgICAgc291cmNlOiBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQsXG4gICAgICB9KVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydFNraWxsTWVudGlvbih7IGlkOiBza2lsbC5pZCwgdHlwZTogJ3NraWxsJywgbGFiZWw6IGAjJHtza2lsbC5uYW1lfWAgfSlcbiAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnaGFzaCdcbiAgICB9LFxuICAgIFtldmVudEFtcGxpdHVkZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNyZWF0ZVNraWxsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnaGFzaCdcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgc2tpbGxWYWx1ZXM6IHsgdmFsdWVzOiB7IGlzRWRpdGluZzogZmFsc2UsIGludGVudDogJ3dyaXRlJyB9LCBpc09wZW46IHRydWUgfSxcbiAgICAgICAgICBhbmFseXRpY3NTb3VyY2U6ICdkcm9wZG93bicsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIClcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlRWRpdG9ySW5wdXQgPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgdGV4dCxcbiAgICAgIG1lbnRpb25zLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIHNsYXNoVHJpZ2dlcixcbiAgICAgIGhhc2hUcmlnZ2VyLFxuICAgIH06IHtcbiAgICAgIHRleHQ6IHN0cmluZ1xuICAgICAgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW11cbiAgICAgIHRyaWdnZXI6IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nOyBhdFJ1bkxlbmd0aDogbnVtYmVyIH1cbiAgICAgIHNsYXNoVHJpZ2dlcj86IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nIH1cbiAgICAgIGhhc2hUcmlnZ2VyPzogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIH0pID0+IHtcbiAgICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKHRleHQudHJpbSgpLmxlbmd0aCA+IDApXG4gICAgICBvbkNoYW5nZT8uKClcbiAgICAgIGhhbmRsZVRyaWdnZXIodHJpZ2dlcilcblxuICAgICAgY29uc3QgY3VycmVudFNraWxsSWRzID0gZ2V0U2tpbGxNZW50aW9uSWRzKG1lbnRpb25zKVxuICAgICAgaWYgKHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2U2tpbGxNZW50aW9uSWRzUmVmLmN1cnJlbnRcbiAgICAgICAgICAuZmlsdGVyKHNraWxsSWQgPT4gIWN1cnJlbnRTa2lsbElkcy5pbmNsdWRlcyhza2lsbElkKSlcbiAgICAgICAgICAuZm9yRWFjaChza2lsbElkID0+IHtcbiAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFJlbW92ZSwgeyBza2lsbF9pZDogc2tpbGxJZCB9KVxuICAgICAgICAgIH0pXG4gICAgICB9XG4gICAgICBwcmV2U2tpbGxNZW50aW9uSWRzUmVmLmN1cnJlbnQgPSBjdXJyZW50U2tpbGxJZHNcblxuICAgICAgaWYgKHNsYXNoVHJpZ2dlcj8uYWN0aXZlICYmIHNsYXNoQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoIXNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvbk9wZW4pXG4gICAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKHRydWUpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoc2xhc2hUcmlnZ2VyLnF1ZXJ5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNoVHJpZ2dlcj8uYWN0aXZlICYmIHNob3dTa2lsbHNCdXR0b24pIHtcbiAgICAgICAgLy8gRmV0Y2ggb24tb3BlbjogdW5hIHNvbGEgbGxhbWFkYSBwb3IgYXBlcnR1cmEgZGVsIGxpc3RhZG8uXG4gICAgICAgIGlmICghc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsT3BlbiwgeyBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCB9KVxuICAgICAgICAgIHZvaWQgZmV0Y2hTa2lsbHMoKVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bih0cnVlKVxuICAgICAgICBzZXRTa2lsbHNRdWVyeShoYXNoVHJpZ2dlci5xdWVyeSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnaGFzaCdcbiAgICAgICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgaGFuZGxlVHJpZ2dlciwgc2xhc2hDb21tYW5kcywgZXZlbnRBbXBsaXR1ZGUsIHNob3dTa2lsbHNCdXR0b24sIGZldGNoU2tpbGxzXVxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGhhbmRsZVBvcG92ZXJLZXlEb3duKGUpKSByZXR1cm5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiAhZS5zaGlmdEtleSAmJiAhcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGlmICghc2VuZERpc2FibGVkICYmICFkaXNhYmxlZCkgaGFuZGxlU2VuZE1lc3NhZ2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZVBvcG92ZXJLZXlEb3duLCBwb3BvdmVyT3Blbiwgc2VuZERpc2FibGVkLCBkaXNhYmxlZCwgaGFuZGxlU2VuZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBhZGRGaWxlcyA9IChpbmNvbWluZzogRmlsZVtdKSA9PiB7XG4gICAgaWYgKCFpbmNvbWluZy5sZW5ndGggfHwgZGlzYWJsZWQpIHJldHVyblxuXG4gICAgY29uc3QgZXhjZWVkZWRGaWxlczogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGV4Y2x1ZGVkRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBmaWxlU2l6ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fVxuICAgIGxldCBmaWxlc0luc2VydGVkID0gYXR0YWNobWVudHMubGVuZ3RoXG5cbiAgICBjb25zdCBpc05ld0Zvcm1hdCA9IChleHRlbnNpb246IHN0cmluZykgPT4gWycucG5nJywgJy5qcGcnLCAnLmpwZWcnLCAnLnBkZiddLmluY2x1ZGVzKGV4dGVuc2lvbilcbiAgICBjb25zdCBpc09sZEZvcm1hdCA9IChleHRlbnNpb246IHN0cmluZykgPT5cbiAgICAgIFsnLnR4dCcsICcubWQnLCAnLmNzdicsICcuZG9jJywgJy5kb2N4JywgJy54bHN4JywgJy54bHMnLCAnLnBwdCcsICcucHB0eCddLmluY2x1ZGVzKGV4dGVuc2lvbilcbiAgICBjb25zdCBpc0F1ZGlvRm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PlxuICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLmluY2x1ZGVzKGV4dGVuc2lvbilcblxuICAgIGNvbnN0IGV4Y2VlZHNNYXhTaXplID0gKGV4dGVuc2lvbjogc3RyaW5nLCBzaXplOiBudW1iZXIpID0+IHNpemUgPiBnZXRNYXhBdHRhY2htZW50U2l6ZU1iKGV4dGVuc2lvbikgKiAxMDI0ICogMTAyNFxuXG4gICAgaW5jb21pbmcuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgIGxldCBleGNsdWRlZEZpbGUgPSBmYWxzZVxuICAgICAgY29uc3QgZmlsZU5hbWVQYXJ0cyA9IGZpbGUubmFtZS5zcGxpdCgnLicpXG4gICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZU5hbWVQYXJ0cy5sZW5ndGggPiAxID8gYC4ke2ZpbGVOYW1lUGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCl9YCA6ICcnXG5cbiAgICAgIGlmICghYWxsb3dlZEZpbGVUeXBlcz8uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGZpbGVTaXplc1tmaWxlLm5hbWVdID0gZmlsZS5zaXplXG5cbiAgICAgIGlmIChpc05ld0Zvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBpZiAoZXhjZWVkc01heFNpemUoZmlsZUV4dGVuc2lvbiwgZmlsZS5zaXplKSkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc09sZEZvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBpZiAoZXhjZWVkc01heFNpemUoZmlsZUV4dGVuc2lvbiwgZmlsZS5zaXplKSkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0F1ZGlvRm9ybWF0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIGlmIChleGNlZWRzTWF4U2l6ZShmaWxlRXh0ZW5zaW9uLCBmaWxlLnNpemUpKSB7XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXNJbnNlcnRlZCArIDEgPiBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUykge1xuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZXhjbHVkZWRGaWxlKSB7XG4gICAgICAgIGZpbGVzSW5zZXJ0ZWQgKz0gMVxuICAgICAgICBjb25zdCB0eXBlRmlsZSA9IGZpbGUudHlwZSB8fCBmaWxlVHlwZXNbZmlsZUV4dGVuc2lvbl1cbiAgICAgICAgY29uc3QgcGFyc2VkRmlsZSA9IG5ldyBGaWxlKFtmaWxlXSwgZmlsZS5uYW1lLCB7IHR5cGU6IHR5cGVGaWxlIH0pXG4gICAgICAgIG9uRmlsZUF0dGFjaD8uKHBhcnNlZEZpbGUpXG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmIChleGNsdWRlZEZpbGVzLmxlbmd0aCB8fCBleGNlZWRlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogdHJ1ZSwgZXhjbHVkZWRGaWxlcywgZXhjZWVkZWRGaWxlcywgZmlsZVNpemVzIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmlsZVNlbGVjdCA9IChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGVzID0gZS50YXJnZXQuZmlsZXNcbiAgICBpZiAoZmlsZXMpIHtcbiAgICAgIGFkZEZpbGVzKEFycmF5LmZyb20oZmlsZXMpKVxuICAgIH1cbiAgICBpZiAoZmlsZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50LnZhbHVlID0gJydcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNldEZpbGVEcmFnID0gKCkgPT4ge1xuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID0gMFxuICAgIHNldElzRmlsZURyYWdBY3RpdmUoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnRW50ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCArPSAxXG4gICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZSh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0xlYXZlID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzRmlsZURyYWdBY3RpdmUgJiYgIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID0gTWF0aC5tYXgoMCwgZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgLSAxKVxuICAgIGlmIChmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9PT0gMCkge1xuICAgICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZShmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnT3ZlciA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSdcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyb3AgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSB7XG4gICAgICByZXNldEZpbGVEcmFnKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgcmVzZXRGaWxlRHJhZygpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBhZGRGaWxlcyhmaWxlc0Zyb21EYXRhVHJhbnNmZXIoZS5kYXRhVHJhbnNmZXIpKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGFzdGVGaWxlcyA9IChmaWxlczogRmlsZVtdKSA9PiB7XG4gICAgYWRkRmlsZXMoZmlsZXMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVXcmFwcGVyUGFzdGUgPSAoZTogQ2xpcGJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgZWRpdG9yRWwgPSB3cmFwcGVyUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3IoJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJylcbiAgICBpZiAoZWRpdG9yRWwgJiYgZWRpdG9yRWwuY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHJldHVyblxuICAgIGNvbnN0IGZpbGVzID0gZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuY2xpcGJvYXJkRGF0YSlcbiAgICBpZiAoIWZpbGVzLmxlbmd0aCkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgYWRkRmlsZXMoZmlsZXMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEZWxldGVBdHRhY2htZW50ID0gKGZpbGVJZDogc3RyaW5nKSA9PiB7XG4gICAgb25EZWxldGVBdHRhY2htZW50Py4oZmlsZUlkKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU3RvcEdlbmVyYXRpb24gPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFN0b3BSZXNwb25zZSlcbiAgICBvblN0b3BHZW5lcmF0aW9uPy4oKVxuICB9XG5cbiAgY29uc3Qgc2hvd0NoaXBzUm93ID0gQm9vbGVhbihjb250ZXh0Q2hpcD8uaXRlbXM/Lmxlbmd0aCB8fCBhdHRhY2htZW50cy5sZW5ndGgpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjaGlwc0VsID0gY2hpcHNSb3dSZWYuY3VycmVudFxuICAgIGNvbnN0IHRvb2xiYXJFbCA9IHRvb2xiYXJSb3dSZWYuY3VycmVudFxuXG4gICAgY29uc3QgdXBkYXRlSGVpZ2h0cyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRDaGlwcyA9IHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsID8gTWF0aC5jZWlsKGNoaXBzRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSA6IDBcbiAgICAgIGNvbnN0IG5leHRUb29sYmFyID0gdG9vbGJhckVsXG4gICAgICAgID8gTWF0aC5jZWlsKHRvb2xiYXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpXG4gICAgICAgIDogTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFhcblxuICAgICAgc2V0Q2hpcHNSb3dIZWlnaHQocHJldiA9PiAocHJldiA9PT0gbmV4dENoaXBzID8gcHJldiA6IG5leHRDaGlwcykpXG4gICAgICBzZXRUb29sYmFyUm93SGVpZ2h0KHByZXYgPT4gKHByZXYgPT09IG5leHRUb29sYmFyID8gcHJldiA6IG5leHRUb29sYmFyKSlcbiAgICB9XG5cbiAgICB1cGRhdGVIZWlnaHRzKClcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKHVwZGF0ZUhlaWdodHMpXG4gICAgaWYgKHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsKSBvYnNlcnZlci5vYnNlcnZlKGNoaXBzRWwpXG4gICAgaWYgKHRvb2xiYXJFbCkgb2JzZXJ2ZXIub2JzZXJ2ZSh0b29sYmFyRWwpXG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gIH0sIFtzaG93Q2hpcHNSb3csIGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGhdKVxuXG4gIGNvbnN0IGVkaXRvck1heEhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCh7XG4gICAgICAgIGNoaXBzUm93SGVpZ2h0UHg6IGNoaXBzUm93SGVpZ2h0LFxuICAgICAgICB0b29sYmFyUm93SGVpZ2h0UHg6IHRvb2xiYXJSb3dIZWlnaHQsXG4gICAgICB9KSxcbiAgICBbY2hpcHNSb3dIZWlnaHQsIHRvb2xiYXJSb3dIZWlnaHRdXG4gIClcblxuICBjb25zdCB0b29sYmFySWNvbkNvbG9yID0gJyM4MDgwODAnXG4gIGNvbnN0IHBsdXNNZW51SWNvbkNvbG9yID0gTUFJQV9DSEFUX0lOUFVUX1VJLm1lbnVJY29uXG4gIGNvbnN0IGlzQ3VzdG9tQWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbSdcbiAgY29uc3QgaGFzQ29yQWNjZXNzID0gQm9vbGVhbihcbiAgICBpc0N1c3RvbUFnZW50ICYmXG4gICAgYWdlbnQ/LmNvbm5lY3RvcnM/LnNvbWUoXG4gICAgICBjb25uZWN0b3IgPT5cbiAgICAgICAgY29ubmVjdG9yLmdyb3VwID09PSAnQ09SJyAmJiBjb25uZWN0b3Iuc2x1Z3Muc29tZShzbHVnID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJyAmJiBzbHVnLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgIClcbiAgKVxuICBjb25zdCBhZ2VudE1vZGVsTmFtZSA9IGlzQ3VzdG9tQWdlbnQgPyBhZ2VudD8ubW9kZWxfZGlzcGxheV9uYW1lPy50cmltKCkgfHwgbnVsbCA6IG51bGxcbiAgY29uc3Qgc2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzID0gaGFzQ29yQWNjZXNzIHx8IEJvb2xlYW4oYWdlbnRNb2RlbE5hbWUpXG4gIGNvbnN0IHNob3dNZW50aW9uQnV0dG9uID0gYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InIHx8IGhhc0NvckFjY2Vzc1xuXG4gIGxldCBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uOiBSZWFjdE5vZGVcbiAgaWYgKGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCkge1xuICAgIGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24gPSA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gIH0gZWxzZSBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uID0gPE1haWFJbnB1dFdlYlNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gIH0gZWxzZSB7XG4gICAgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IDxNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHlsZWRNQUlBSW5wdXRXcmFwcGVyXG4gICAgICAgIHJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICBhbGlnbkJ1dHRvbnM9e2FsaWduQnV0dG9uc31cbiAgICAgICAgaGFzQXR0YWNobWVudHM9eyEhYXR0YWNobWVudHMubGVuZ3RofVxuICAgICAgICAkZmlsZURyYWdBY3RpdmU9e2lzRmlsZURyYWdBY3RpdmV9XG4gICAgICAgIGRhdGEtYXBwY3Vlcz1cIm1haWFfY2hhdF9pbnB1dFwiXG4gICAgICAgIGRhdGEtbWFpYS1zdHJlYW1pbmc9e2lzU3RyZWFtaW5nID8gJ3RydWUnIDogJ2ZhbHNlJ31cbiAgICAgICAgb25QYXN0ZT17aGFuZGxlV3JhcHBlclBhc3RlfVxuICAgICAgICBvbkRyYWdFbnRlcj17aGFuZGxlRHJhZ0VudGVyfVxuICAgICAgICBvbkRyYWdMZWF2ZT17aGFuZGxlRHJhZ0xlYXZlfVxuICAgICAgICBvbkRyYWdPdmVyPXtoYW5kbGVEcmFnT3Zlcn1cbiAgICAgICAgb25Ecm9wPXtoYW5kbGVEcm9wfVxuICAgICAgPlxuICAgICAgICB7c2hvd0NoaXBzUm93ICYmIChcbiAgICAgICAgICA8U0NJbnB1dENoaXBzUm93IHJlZj17Y2hpcHNSb3dSZWZ9PlxuICAgICAgICAgICAge2NvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgICA8Q2hpcFxuICAgICAgICAgICAgICAgIGl0ZW1zPXtjb250ZXh0Q2hpcC5pdGVtc31cbiAgICAgICAgICAgICAgICB0eXBlPXtjb250ZXh0Q2hpcC50eXBlfVxuICAgICAgICAgICAgICAgIGVudGl0eUlkPXtjb250ZXh0Q2hpcC5lbnRpdHlJZH1cbiAgICAgICAgICAgICAgICBsZWFkaW5nSWNvbj17Y29udGV4dENoaXAubGVhZGluZ0ljb259XG4gICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgICBvbkVudGl0eU5hdmlnYXRlPXtjb250ZXh0Q2hpcC5vbkVudGl0eU5hdmlnYXRlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7YXR0YWNobWVudHMubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpc0ltYWdlID1cbiAgICAgICAgICAgICAgICBhdHRhY2htZW50LnR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpIHx8IC9cXC4ocG5nfGpwZT9nfGdpZnx3ZWJwfGJtcHxzdmcpJC9pLnRlc3QoYXR0YWNobWVudC5uYW1lIHx8ICcnKVxuICAgICAgICAgICAgICBjb25zdCBjaGlwSWNvbiA9IGlzSW1hZ2UgPyAoXG4gICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24gY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBdHRhY2hJY29uIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsxM30gaGVpZ2h0PXsxM30gLz5cbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2F0dGFjaG1lbnQubmFtZX0ga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2luZGV4fWB9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudEljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50RmlsZUljb24+e2NoaXBJY29ufTwvU0NNSUF0dGFjaG1lbnRGaWxlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnREZWxldGVJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQucmVtb3ZlQXR0YWNobWVudEFyaWEnLCB7IGRlZmF1bHRWYWx1ZTogJ1F1aXRhciBhcmNoaXZvJyB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQoYXR0YWNobWVudC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiIzY2NjY2NlwiIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50RGVsZXRlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudEljb24+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudE5hbWU+e2F0dGFjaG1lbnQubmFtZX08L1NDTUlBdHRhY2htZW50TmFtZT5cbiAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnQ+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NDSW5wdXRDaGlwc1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAgPFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgICAgPFNDSW5wdXRFZGl0b3JDZWxsPlxuICAgICAgICAgICAgPENvbnRleHRNZW50aW9uRWRpdG9yXG4gICAgICAgICAgICAgIHJlZj17ZWRpdG9yUmVmfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgbWF4SGVpZ2h0PXtlZGl0b3JNYXhIZWlnaHR9XG4gICAgICAgICAgICAgIG9uSW5wdXQ9e2hhbmRsZUVkaXRvcklucHV0fVxuICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgICAgIG9uUGFzdGVGaWxlcz17aGFuZGxlUGFzdGVGaWxlc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0lucHV0RWRpdG9yQ2VsbD5cbiAgICAgICAgICA8U0NJbnB1dFRvb2xiYXJSb3cgcmVmPXt0b29sYmFyUm93UmVmfT5cbiAgICAgICAgICAgIDxTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsPlxuICAgICAgICAgICAgICA8UGx1c01lbnVUb29sc1Jvdz5cbiAgICAgICAgICAgICAgICA8UGx1c1RvZ2dsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAkbWVudU9wZW49e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3dufVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUGx1c0J1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyl9XG4gICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dEFkZEljb24gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICA8L1BsdXNUb2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAge3Nob3dNZW50aW9uQnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxQbHVzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAkbWVudU9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5vcGVuTWVudGlvbkFyaWEnKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dE1lbnRpb25JY29uIGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICA8L1BsdXNUb2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2hvd1NraWxsc0J1dHRvbiAmJiAoXG4gICAgICAgICAgICAgICAgICA8U2tpbGxzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHJlZj17c2tpbGxzQnV0dG9uUmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZVBsdXNCdXR0b25Nb3VzZURvd259XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNraWxsc0J1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmRyb3Bkb3duQnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17c2hvd1NraWxsc0Ryb3Bkb3dufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U2tpbGxJY29uIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L1NraWxsc1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgICAgICAgICBvcGVuPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgICBhbmNob3JFbD17cGx1c01lbnVBbmNob3J9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtjbG9zZVBsdXNNZW51fVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgZGlzYWJsZUVuZm9yY2VGb2N1c1xuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJlc3RvcmVGb2N1c1xuICAgICAgICAgICAgICAgICAgYW5jaG9yT3JpZ2luPXt7IHZlcnRpY2FsOiAndG9wJywgaG9yaXpvbnRhbDogJ2xlZnQnIH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW49e3sgdmVydGljYWw6ICdib3R0b20nLCBob3Jpem9udGFsOiAnbGVmdCcgfX1cbiAgICAgICAgICAgICAgICAgIHN4PXt7IHpJbmRleDogcGx1c01lbnVaSW5kZXggfX1cbiAgICAgICAgICAgICAgICAgIHNsb3RQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBwYXBlcjoge1xuICAgICAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbjogMCxcbiAgICAgICAgICAgICAgICAgICAgICBzeDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJy00cHgnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxQbHVzTWVudVBhcGVyPlxuICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF0dGFjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMX0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudUF0dGFjaCcpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51V2ViU2VhcmNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRXZWJTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnNlYXJjaFdlYicpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNXZWJTZWFyY2hBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudURlZXBTZWFyY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dERlZXBTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzRGVlcFNlYXJjaEFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBBdXRvLWFwcHJvdmUgZnVlcmEgZGUgZXN0ZSByZWxlYXNlICh2ZXIgSVNfQVVUT19BUFBST1ZFX0VOQUJMRUQgZW4gdXNlUHJvamVjdFN1bW1hcnlDb25maWcpLlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF1dG9BcHByb3ZlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51QXV0b0FwcHJvdmUnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzQXV0b0FwcHJvdmVBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFNsYXNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudVF1aWNrQWN0aW9ucycpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVQYXBlcj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICAgICAgICAgeyhpc1dlYlNlYXJjaEFjdGl2ZSB8fCBpc0RlZXBTZWFyY2hBY3RpdmUpICYmIChcbiAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcFJvb3RcbiAgICAgICAgICAgICAgICAgICAgJGhvdmVyZWQ9e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgJGV4aXRpbmc9e3Rvb2xDaGlwRXhpdGluZ31cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICRjbG9zZVNob3duPXthY3RpdmVUb29sQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBY3RpdmVUb29sQXJpYScpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtpc1dlYlNlYXJjaEFjdGl2ZSA/IHQoJ2NoYXQuc2VhcmNoV2ViJykgOiB0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcFJvb3Q+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7aXNBdXRvQXBwcm92ZUFjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBSb290XG4gICAgICAgICAgICAgICAgICAgICRob3ZlcmVkPXthdXRvQXBwcm92ZUNoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAkZXhpdGluZz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoYXQuYXV0b0FwcHJvdmVIaW50Jyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAkY2xvc2VTaG93bj17YXV0b0FwcHJvdmVDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUFjdGl2ZVRvb2xBcmlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVBdXRvQXBwcm92ZT8uKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBMYWJlbD57dCgnY2hhdC5hdXRvQXBwcm92ZUNoaXAnKX08L0FjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwUm9vdD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1BsdXNNZW51VG9vbHNSb3c+XG4gICAgICAgICAgICA8L1N0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgICAge3Nob3dDdXN0b21NZXRhSW5kaWNhdG9ycyAmJiAoXG4gICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgICAgIHtoYXNDb3JBY2Nlc3MgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NUb29sdGlwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiBhcmlhLWxhYmVsPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NMYWJlbCcpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb3JBY2Nlc3NJY29uIHdpZHRoPXsxNX0gaGVpZ2h0PXsxNH0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7YWdlbnRNb2RlbE5hbWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGlwTGxtLnRvb2x0aXAnLCB7IG1vZGVsOiBhZ2VudE1vZGVsTmFtZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e2FnZW50TW9kZWxOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRSb2JvdEljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzV3JpdGluZyA/IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zdG9wJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BCdXR0b24gZGlzYWJsZWQ9e2ZhbHNlfSBvbkNsaWNrPXtoYW5kbGVTdG9wR2VuZXJhdGlvbn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTdG9wQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zZW5kJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbmREaXNhYmxlZCB8fCBkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZXM9e2hhc1R5cGluZ1ByZXNlbmNlIHx8IGF0dGFjaG1lbnRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2VuZEljb24gY29sb3I9XCIjQkZCRkJGXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTZW5kQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICA8L1NDSW5wdXRUb29sYmFyUm93PlxuICAgICAgICA8L1N0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIGFjY2VwdD1cIi50eHQsLm1kLC5jc3YsLmRvYywuZG9jeCwucHB0LC5wcHR4LC5wbmcsLmpwZywuanBlZywucGRmLC54bHN4LC54bHMsLmZsYWMsLm00YSwubXAzLC5tcDQsLm9nYSwub2dnLC53YXYsLndlYm1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlU2VsZWN0fVxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgICAvPlxuICAgICAgICB7aXNGaWxlRHJhZ0FjdGl2ZSAmJiA8U3R5bGVkTUFJQURyb3BPdmVybGF5Pnt0KCdjaGF0LmRyb3BGaWxlc0hlcmUnKX08L1N0eWxlZE1BSUFEcm9wT3ZlcmxheT59XG4gICAgICA8L1N0eWxlZE1BSUFJbnB1dFdyYXBwZXI+XG4gICAgICB7bW9kYWxQcm9wcy5pc09wZW4gJiYgKFxuICAgICAgICA8TW9kYWxGaWxlRXhjZWVkc1xuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1vZGFsUHJvcHMoeyBpc09wZW46IGZhbHNlLCBleGNsdWRlZEZpbGVzOiBbXSwgZXhjZWVkZWRGaWxlczogW10sIGZpbGVTaXplczoge30gfSl9XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNsdWRlZEZpbGVzfVxuICAgICAgICAgIGV4Y2VlZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjZWVkZWRGaWxlc31cbiAgICAgICAgICBmaWxlU2l6ZXM9e21vZGFsUHJvcHMuZmlsZVNpemVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtwb3BvdmVyTm9kZSAmJiBjcmVhdGVQb3J0YWwocG9wb3Zlck5vZGUsIGRvY3VtZW50LmJvZHkpfVxuICAgICAge3Nob3dTbGFzaERyb3Bkb3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8U2xhc2hDb21tYW5kRHJvcGRvd25cbiAgICAgICAgICAgIGNvbW1hbmRzPXtzbGFzaENvbW1hbmRzfVxuICAgICAgICAgICAgcXVlcnk9e3NsYXNoUXVlcnl9XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kfVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtzbGFzaERyb3Bkb3duUG9zLmJvdHRvbX1cbiAgICAgICAgICAgIGxlZnQ9e3NsYXNoRHJvcGRvd25Qb3MubGVmdH1cbiAgICAgICAgICAgIG1heEhlaWdodD17c2xhc2hEcm9wZG93blBvcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICB6SW5kZXg9e3NsYXNoRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICAgICBhbmNob3JSZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgICAge3Nob3dTa2lsbHNEcm9wZG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNraWxsc0Ryb3Bkb3duXG4gICAgICAgICAgICBza2lsbHM9e3NraWxsc31cbiAgICAgICAgICAgIHF1ZXJ5PXtza2lsbHNRdWVyeX1cbiAgICAgICAgICAgIGxvYWRpbmc9e3NraWxsc0xvYWRpbmd9XG4gICAgICAgICAgICBlcnJvcj17c2tpbGxzRXJyb3J9XG4gICAgICAgICAgICBjYW5DcmVhdGU9e3Nob3dTa2lsbHNCdXR0b24gJiYgaXNTa2lsbHNQaWxvdENvbXBhbnkodXNlcj8uY29tcGFueV9pZCl9XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2tpbGx9XG4gICAgICAgICAgICBvbkNyZWF0ZT17aGFuZGxlQ3JlYXRlU2tpbGx9XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtza2lsbHNEcm9wZG93blBvcy5ib3R0b219XG4gICAgICAgICAgICBsZWZ0PXtza2lsbHNEcm9wZG93blBvcy5sZWZ0fVxuICAgICAgICAgICAgbWF4SGVpZ2h0PXtza2lsbHNEcm9wZG93blBvcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICB6SW5kZXg9e3NsYXNoRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICAgICBhbmNob3JSZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQVFFQSxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsZUFBZSxFQUNmQyxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsUUFBUSxRQUNILE9BQU87QUFDZCxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxPQUFPLFFBQVEsZUFBZTtBQUN2QyxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQ0VDLHdCQUF3QixFQUN4QkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGVBQWUsRUFDZkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsYUFBYSxFQUNiQyxnQkFBZ0IsRUFDaEJDLGdCQUFnQixF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
|
|
1322
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiQm9sdCIsIlRvb2x0aXAiLCJBY3RpdmVUb29sQ2hpcEljb25CdXR0b24iLCJBY3RpdmVUb29sQ2hpcExhYmVsIiwiQWN0aXZlVG9vbENoaXBSb290IiwiUGx1c01lbnVEaXZpZGVyIiwiUGx1c01lbnVJbm5lckNvbHVtbiIsIlBsdXNNZW51SXRlbUJ1dHRvbiIsIlBsdXNNZW51SXRlbUxhYmVsIiwiUGx1c01lbnVQYXBlciIsIlBsdXNNZW51VG9vbHNSb3ciLCJQbHVzVG9nZ2xlQnV0dG9uIiwiU2tpbGxzVG9nZ2xlQnV0dG9uIiwiU0NJbnB1dENoaXBzUm93IiwiU0NJbnB1dE1ldGFJY29uQnV0dG9uIiwiU0NJbnB1dE1ldGFJbmRpY2F0b3JzIiwiU0NNSUF0dGFjaG1lbnQiLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJTQ01JQXR0YWNobWVudEZpbGVJY29uIiwiU0NNSUF0dGFjaG1lbnRJY29uIiwiU0NNSUF0dGFjaG1lbnROYW1lIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCIsIlNDSW5wdXRFZGl0b3JDZWxsIiwiU0NJbnB1dFRvb2xiYXJSb3ciLCJTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCIsIlN0eWxlZE1BSUFTdG9wQnV0dG9uIiwiU3R5bGVkTUFJQVN0b3BJY29uIiwiU3R5bGVkTUFJQURyb3BPdmVybGF5IiwiZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0IiwiTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgiLCJ1c2VHbG9iYWxDb250ZXh0IiwiTW9kYWxGaWxlRXhjZWVkcyIsIlNsYXNoQ29tbWFuZERyb3Bkb3duIiwiU2tpbGxzRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwidXNlU2tpbGxzQ2F0YWxvZyIsImNhbkFjY2Vzc1RvU2tpbGxzIiwidXNlVXNlciIsInJlc29sdmVRdWlja0FjdGlvblR5cGUiLCJ1c2VUIiwiTWFpYUlucHV0QWRkSWNvbiIsIk1haWFJbnB1dEF0dGFjaEljb24iLCJNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIiwiTWFpYUlucHV0RGVlcFNlYXJjaEljb24iLCJDb3JBY2Nlc3NJY29uIiwiTWFpYUlucHV0TWVudGlvbkljb24iLCJNYWlhSW5wdXRSb2JvdEljb24iLCJNYWlhSW5wdXRTZW5kSWNvbiIsIk1haWFJbnB1dFNsYXNoSWNvbiIsIlNraWxsSWNvbiIsIk1haWFJbnB1dFdlYlNlYXJjaEljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldENoYXRUb29sc01lbnVBZ2VudFR5cGUiLCJNQUlBX0NIQVRfSU5QVVRfVUkiLCJhbGxvd2VkRmlsZVR5cGVzIiwiZmlsZVR5cGVzIiwiZ2V0TWF4QXR0YWNobWVudFNpemVNYiIsIk1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTIiwiQVBQQ1VFU19FVkVOVFMiLCJ0cmFja0FwcGN1ZXNFdmVudCIsIkNoaXAiLCJDb250ZXh0TWVudGlvbkVkaXRvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VNZW50aW9uUG9wb3ZlciIsInVzZUNhcmV0UG9zaXRpb24iLCJkYXRhVHJhbnNmZXJIYXNGaWxlcyIsImZpbGVzRnJvbURhdGFUcmFuc2ZlciIsImNhbkNyZWF0ZVNraWxsc0Zyb21JbnB1dCIsImdldFNraWxsTWVudGlvbklkcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlRPT0xfQ0hJUF9FWElUX01TIiwiU0xBU0hfRFJPUERPV05fV0lEVEhfUFgiLCJTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYIiwiU0tJTExTX0RST1BET1dOX1dJRFRIX1BYIiwiU0xBU0hfRFJPUERPV05fR0FQX1BYIiwiU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYIiwiTUFJQUlucHV0IiwiX3JlZiIsIl9hZ2VudCRlbnRpdHkiLCJfY29udGV4dENoaXAkaXRlbXMiLCJfY29udGV4dENoaXAkaXRlbXMyIiwiX2FnZW50JGNvbm5lY3RvcnMiLCJfYWdlbnQkbW9kZWxfZGlzcGxheV8iLCJfY29udGV4dENoaXAkaXRlbXMzIiwib25TZW5kTWVzc2FnZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiaXNTdHJlYW1pbmciLCJpc1dyaXRpbmciLCJvblN0b3BHZW5lcmF0aW9uIiwicGxhY2Vob2xkZXIiLCJvbkNoYW5nZSIsIm9uRm9jdXMiLCJfcmVmJGFsaWduQnV0dG9ucyIsImFsaWduQnV0dG9ucyIsIm9uRmlsZUF0dGFjaCIsIm9uRGVsZXRlQXR0YWNobWVudCIsIl9yZWYkYXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImNoYXRJZCIsIm5ld0NoYXRLZXkiLCJ0b29sdGlwWkluZGV4IiwiZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmIiwicG9wb3ZlckFuY2hvclJlZiIsImxheW91dE1vZGUiLCJjb250ZXh0Q2hpcCIsIl9yZWYkb3JjaGVzdHJhdG9ySG9tZSIsIm9yY2hlc3RyYXRvckhvbWVDb21wb3NlciIsIl91c2VUIiwidCIsImVkaXRvclJlZiIsImZpbGVJbnB1dFJlZiIsImNoaXBzUm93UmVmIiwidG9vbGJhclJvd1JlZiIsImludGVybmFsV3JhcHBlclJlZiIsIndyYXBwZXJSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJoYXNUeXBpbmdQcmVzZW5jZSIsInNldEhhc1R5cGluZ1ByZXNlbmNlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJjaGlwc1Jvd0hlaWdodCIsInNldENoaXBzUm93SGVpZ2h0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b29sYmFyUm93SGVpZ2h0Iiwic2V0VG9vbGJhclJvd0hlaWdodCIsIl91c2VTdGF0ZTciLCJpc09wZW4iLCJleGNsdWRlZEZpbGVzIiwiZXhjZWVkZWRGaWxlcyIsImZpbGVTaXplcyIsIl91c2VTdGF0ZTgiLCJtb2RhbFByb3BzIiwic2V0TW9kYWxQcm9wcyIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInRvZ2dsZURlZXBTZWFyY2giLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJpc0F1dG9BcHByb3ZlQWN0aXZlIiwidG9nZ2xlQXV0b0FwcHJvdmUiLCJhZ2VudCIsImluaXRpYWxEcmFmdCIsImRlZXBMaW5rU2VuZFBlbmRpbmdSZWYiLCJwbHVzTWVudVpJbmRleCIsImluaXRpYWxEcmFmdEFwcGxpZWRSZWYiLCJfdXNlTWVudGlvblBvcG92ZXIiLCJwb3BvdmVyT3BlbiIsInJlc2V0TWVudGlvbk9wZW5UcmFja2luZyIsImhhbmRsZVRyaWdnZXIiLCJoYW5kbGVQb3BvdmVyS2V5RG93biIsImhhbmRsZUtleURvd24iLCJwb3BvdmVyTm9kZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwicGx1c01lbnVBbmNob3IiLCJzZXRQbHVzTWVudUFuY2hvciIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImFjdGl2ZVRvb2xDaGlwSG92ZXJlZCIsInNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZCIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJ0b29sQ2hpcEV4aXRpbmciLCJzZXRUb29sQ2hpcEV4aXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiYXV0b0FwcHJvdmVDaGlwSG92ZXJlZCIsInNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiaXNGaWxlRHJhZ0FjdGl2ZSIsInNldElzRmlsZURyYWdBY3RpdmUiLCJ0b29sQ2hpcEV4aXRUaW1lclJlZiIsImZpbGVEcmFnQ291bnRlclJlZiIsInNlYXJjaE1vZGVBY3RpdmVSZWYiLCJ3ZWIiLCJkZWVwIiwicGx1c01lbnVPcGVuIiwiQm9vbGVhbiIsInByZXZpb3VzQWdlbnRJZFJlZiIsInVuZGVmaW5lZCIsInByZXZpb3VzQ2hhdElkUmVmIiwicHJldmlvdXNOZXdDaGF0S2V5UmVmIiwicHJldmlvdXNMYXlvdXRNb2RlUmVmIiwiYW5hbHl0aWNzQWdlbnRUeXBlIiwiYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIiwidHlwZSIsImVudGl0eSIsIl91c2VTbGFzaENvbW1hbmRzIiwiaWQiLCJzbGFzaENvbW1hbmRzIiwiY29tbWFuZHMiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwic2hvd1NsYXNoRHJvcGRvd24iLCJzZXRTaG93U2xhc2hEcm9wZG93biIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJzbGFzaFF1ZXJ5Iiwic2V0U2xhc2hRdWVyeSIsInNsYXNoTWVudVdhc09wZW5SZWYiLCJzbGFzaERyb3Bkb3duWkluZGV4IiwiZ2V0Q2FyZXRSZWN0IiwiX3VzZVN0YXRlMjEiLCJib3R0b20iLCJsZWZ0IiwibWF4SGVpZ2h0IiwiX3VzZVN0YXRlMjIiLCJzbGFzaERyb3Bkb3duUG9zIiwic2V0U2xhc2hEcm9wZG93blBvcyIsInVzZXIiLCJzaG93U2tpbGxzQnV0dG9uIiwic2tpbGxzQnV0dG9uUmVmIiwic2tpbGxzTWVudVdhc09wZW5SZWYiLCJza2lsbHNPcGVuU291cmNlUmVmIiwicHJldlNraWxsTWVudGlvbklkc1JlZiIsInNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmIiwiX3VzZVNraWxsc0NhdGFsb2ciLCJza2lsbHMiLCJza2lsbHNMb2FkaW5nIiwibG9hZGluZyIsInNraWxsc0Vycm9yIiwiZXJyb3IiLCJmZXRjaFNraWxscyIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJzaG93U2tpbGxzRHJvcGRvd24iLCJzZXRTaG93U2tpbGxzRHJvcGRvd24iLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2Iiwic2tpbGxzUXVlcnkiLCJzZXRTa2lsbHNRdWVyeSIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJza2lsbHNEcm9wZG93blBvcyIsInNldFNraWxsc0Ryb3Bkb3duUG9zIiwicG9zaXRpb25TbGFzaERyb3Bkb3duIiwiX3dyYXBwZXJSZWYkY3VycmVudCIsIl9jYXJldCR0b3AiLCJfY2FyZXQkbGVmdCIsIndyYXBwZXJSZWN0IiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNhcmV0IiwidG9wU291cmNlIiwidG9wIiwid2lkdGgiLCJsZWZ0U291cmNlIiwidmlld3BvcnRIIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJ2aWV3cG9ydFciLCJpbm5lcldpZHRoIiwiTWF0aCIsIm1heCIsIm1pbiIsImF2YWlsYWJsZUhlaWdodFB4IiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicG9zaXRpb25Ta2lsbHNEcm9wZG93biIsIl93cmFwcGVyUmVmJGN1cnJlbnQyIiwiX2NhcmV0JHRvcDIiLCJfY2FyZXQkbGVmdDIiLCJzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUaW1lb3V0IiwiX2VkaXRvclJlZiRjdXJyZW50IiwiZm9jdXMiLCJjbG9zZVBsdXNNZW51IiwiY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCIsImNsZWFyVGltZW91dCIsImhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24iLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVQbHVzQnV0dG9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50VGFyZ2V0IiwiYWlDaGF0UGx1c09wZW4iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImhhbmRsZU1lbnRpb25CdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJpbnNlcnRNZW50aW9uVHJpZ2dlciIsImhhbmRsZVBsdXNNZW51QXR0YWNoIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiYWlDaGF0VG9vbHMiLCJvcHRpb24iLCJsZW5ndGgiLCJjbGljayIsImJlZ2luVG9vbENoaXBFeGl0Iiwid2FzV2ViIiwid2FzRGVlcCIsIl9zZWFyY2hNb2RlQWN0aXZlUmVmJCIsImhhbmRsZVBsdXNNZW51V2ViU2VhcmNoIiwiaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoIiwiaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwiaW5zZXJ0U2xhc2hUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50NCIsIl9lZGl0b3JSZWYkY3VycmVudDUiLCJkcmFmdCIsInRyaW0iLCJzZXRQbGFpblRleHQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ2Iiwic2VuZERpc2FibGVkIiwiYWdlbnRDaGFuZ2VkIiwicHJldmlvdXNDaGF0SWQiLCJjdXJyZW50Q2hhdElkIiwiY2hhdENoYW5nZWQiLCJjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQiLCJuZXdDaGF0U3RhcnRlZCIsImlzSW5pdGlhbE1vdW50IiwiZGVsYXkiLCJfZWRpdG9yUmVmJGN1cnJlbnQ3IiwicHJldmlvdXNMYXlvdXRNb2RlIiwidGltZW91dElkIiwiX2VkaXRvclJlZiRjdXJyZW50OCIsImlzU3BlY2lhbGlzdEFnZW50Iiwib2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsIl9yZWYyIiwiX3JlZjMiLCJlbnRyeSIsImlzSW50ZXJzZWN0aW5nIiwibWFpYUNvbnRleHRNZW50aW9uSW5pdCIsImRpc2Nvbm5lY3QiLCJ0aHJlc2hvbGQiLCJvYnNlcnZlIiwiaGFuZGxlU2Vzc2lvbkNoYW5nZSIsIl9lZGl0b3JSZWYkY3VycmVudDkiLCJjbGVhciIsImRvY3VtZW50IiwiaGFuZGxlUmVmb2N1cyIsIl9lZGl0b3JSZWYkY3VycmVudDAiLCJoYW5kbGVJbnNlcnRTa2lsbE1lbnRpb24iLCJldmVudCIsIl9lZGl0b3JSZWYkY3VycmVudDEiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMCIsIl9yZWY0IiwiZGV0YWlsIiwic2tpbGwiLCJub3JtYWxpemVkTmFtZSIsIm5hbWUiLCJyZXBsYWNlIiwiYXBwZW5kTWVudGlvbkF0RW5kIiwibGFiZWwiLCJjb25jYXQiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMSIsImhhbmRsZVNlbmRNZXNzYWdlIiwiX2VkaXRvclJlZiRjdXJyZW50MTIiLCJfc3RhdGUkdGV4dCIsIl9zdGF0ZSRtZW50aW9ucyIsIl9lZGl0b3JSZWYkY3VycmVudDEzIiwic3RhdGUiLCJzZXJpYWxpemUiLCJ0ZXh0IiwibWVudGlvbnMiLCJoYW5kbGVTZWxlY3RTbGFzaENvbW1hbmQiLCJjb21tYW5kIiwiX2VkaXRvclJlZiRjdXJyZW50MTQiLCJfc3RhdGUkdGV4dDIiLCJfZWRpdG9yUmVmJGN1cnJlbnQxNiIsImFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0IiwidHlwZV9xdWlja19hY3Rpb24iLCJvcmlnaW5fcXVpY2tfYWN0aW9uIiwidHJpZ2dlclBhcnQiLCJiZWZvcmVUcmlnZ2VyIiwiZW5kc1dpdGgiLCJzbGljZSIsImlzRW1wdHlCZWZvcmVUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50MTUiLCJ0aXRsZSIsImluc2VydFNsYXNoQ29tbWFuZCIsImhhbmRsZUNsb3NlU2xhc2hEcm9wZG93biIsImhhbmRsZUNsb3NlU2tpbGxzRHJvcGRvd24iLCJoYW5kbGVTa2lsbHNCdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDE3IiwiaW5zZXJ0U2tpbGxUcmlnZ2VyIiwiaGFuZGxlU2VsZWN0U2tpbGwiLCJfZWRpdG9yUmVmJGN1cnJlbnQxOCIsImFpQ2hhdFNraWxsU2VsZWN0Iiwic2tpbGxfaWQiLCJzb3VyY2UiLCJpbnNlcnRTa2lsbE1lbnRpb24iLCJoYW5kbGVDcmVhdGVTa2lsbCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsInNraWxsVmFsdWVzIiwidmFsdWVzIiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiYW5hbHl0aWNzU291cmNlIiwiaGFuZGxlRWRpdG9ySW5wdXQiLCJfcmVmNSIsInRyaWdnZXIiLCJzbGFzaFRyaWdnZXIiLCJoYXNoVHJpZ2dlciIsImN1cnJlbnRTa2lsbElkcyIsImZpbHRlciIsInNraWxsSWQiLCJpbmNsdWRlcyIsImZvckVhY2giLCJhaUNoYXRTa2lsbFJlbW92ZSIsImFjdGl2ZSIsImFpQ2hhdFF1aWNrQWN0aW9uT3BlbiIsInF1ZXJ5IiwiYWlDaGF0U2tpbGxPcGVuIiwia2V5Iiwic2hpZnRLZXkiLCJhZGRGaWxlcyIsImluY29taW5nIiwiZmlsZXNJbnNlcnRlZCIsImlzTmV3Rm9ybWF0IiwiZXh0ZW5zaW9uIiwiaXNPbGRGb3JtYXQiLCJpc0F1ZGlvRm9ybWF0IiwiZXhjZWVkc01heFNpemUiLCJzaXplIiwiZmlsZSIsIl9maWxlTmFtZVBhcnRzJHBvcCIsImV4Y2x1ZGVkRmlsZSIsImZpbGVOYW1lUGFydHMiLCJzcGxpdCIsImZpbGVFeHRlbnNpb24iLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsInB1c2giLCJ0eXBlRmlsZSIsInBhcnNlZEZpbGUiLCJGaWxlIiwiaGFuZGxlRmlsZVNlbGVjdCIsImZpbGVzIiwidGFyZ2V0IiwiQXJyYXkiLCJmcm9tIiwidmFsdWUiLCJyZXNldEZpbGVEcmFnIiwiaGFuZGxlRHJhZ0VudGVyIiwiZGF0YVRyYW5zZmVyIiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlRHJhZ092ZXIiLCJkcm9wRWZmZWN0IiwiaGFuZGxlRHJvcCIsImhhbmRsZVBhc3RlRmlsZXMiLCJoYW5kbGVXcmFwcGVyUGFzdGUiLCJfd3JhcHBlclJlZiRjdXJyZW50MyIsImVkaXRvckVsIiwicXVlcnlTZWxlY3RvciIsImNvbnRhaW5zIiwiY2xpcGJvYXJkRGF0YSIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImFpQ2hhdFN0b3BSZXNwb25zZSIsInNob3dDaGlwc1JvdyIsIml0ZW1zIiwiY2hpcHNFbCIsInRvb2xiYXJFbCIsInVwZGF0ZUhlaWdodHMiLCJuZXh0Q2hpcHMiLCJjZWlsIiwiaGVpZ2h0IiwibmV4dFRvb2xiYXIiLCJwcmV2IiwiUmVzaXplT2JzZXJ2ZXIiLCJlZGl0b3JNYXhIZWlnaHQiLCJjaGlwc1Jvd0hlaWdodFB4IiwidG9vbGJhclJvd0hlaWdodFB4IiwidG9vbGJhckljb25Db2xvciIsInBsdXNNZW51SWNvbkNvbG9yIiwibWVudUljb24iLCJpc0N1c3RvbUFnZW50IiwiaGFzQ29yQWNjZXNzIiwiY29ubmVjdG9ycyIsInNvbWUiLCJjb25uZWN0b3IiLCJncm91cCIsInNsdWdzIiwic2x1ZyIsImFnZW50TW9kZWxOYW1lIiwibW9kZWxfZGlzcGxheV9uYW1lIiwic2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzIiwic2hvd01lbnRpb25CdXR0b24iLCJhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uIiwiY29sb3IiLCJjaGlwQ2xvc2VJY29uIiwiY2hpbGRyZW4iLCJyZWYiLCJoYXNBdHRhY2htZW50cyIsIiRmaWxlRHJhZ0FjdGl2ZSIsIm9uUGFzdGUiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsImVudGl0eUlkIiwibGVhZGluZ0ljb24iLCJvbkVudGl0eU5hdmlnYXRlIiwibWFwIiwiYXR0YWNobWVudCIsImluZGV4IiwiX2F0dGFjaG1lbnQkdHlwZSIsImlzSW1hZ2UiLCJzdGFydHNXaXRoIiwidGVzdCIsImNoaXBJY29uIiwiekluZGV4IiwiZGVmYXVsdFZhbHVlIiwib25DbGljayIsIm9uSW5wdXQiLCJvbktleURvd24iLCJvblBhc3RlRmlsZXMiLCIkbWVudU9wZW4iLCJvbk1vdXNlRG93biIsIm9wZW4iLCJhbmNob3JFbCIsIm9uQ2xvc2UiLCJkaXNhYmxlQXV0b0ZvY3VzIiwiZGlzYWJsZUVuZm9yY2VGb2N1cyIsImRpc2FibGVSZXN0b3JlRm9jdXMiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJzeCIsInNsb3RQcm9wcyIsInBhcGVyIiwiZWxldmF0aW9uIiwib3ZlcmZsb3ciLCJib3JkZXJSYWRpdXMiLCJib3hTaGFkb3ciLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5Ub3AiLCIkaG92ZXJlZCIsIiRleGl0aW5nIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiJGNsb3NlU2hvd24iLCJtb2RlbCIsInN0eWxlIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJoYXNWYWx1ZXMiLCJtdWx0aXBsZSIsImFjY2VwdCIsImJvZHkiLCJvblNlbGVjdCIsImFuY2hvclJlZiIsImNhbkNyZWF0ZSIsImNvbXBhbnlfaWQiLCJvbkNyZWF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL01BSUFJbnB1dC9NQUlBSW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdm9pZCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1sb25lbHktaWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7XG4gIENoYW5nZUV2ZW50LFxuICBDbGlwYm9hcmRFdmVudCxcbiAgRHJhZ0V2ZW50LFxuICBLZXlib2FyZEV2ZW50LFxuICBNb3VzZUV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IENoZWNrIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hlY2snXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgQm9sdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0JvbHQnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7XG4gIEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbixcbiAgQWN0aXZlVG9vbENoaXBMYWJlbCxcbiAgQWN0aXZlVG9vbENoaXBSb290LFxuICBQbHVzTWVudURpdmlkZXIsXG4gIFBsdXNNZW51SW5uZXJDb2x1bW4sXG4gIFBsdXNNZW51SXRlbUJ1dHRvbixcbiAgUGx1c01lbnVJdGVtTGFiZWwsXG4gIFBsdXNNZW51UGFwZXIsXG4gIFBsdXNNZW51VG9vbHNSb3csXG4gIFBsdXNUb2dnbGVCdXR0b24sXG4gIFNraWxsc1RvZ2dsZUJ1dHRvbixcbiAgU0NJbnB1dENoaXBzUm93LFxuICBTQ0lucHV0TWV0YUljb25CdXR0b24sXG4gIFNDSW5wdXRNZXRhSW5kaWNhdG9ycyxcbiAgU0NNSUF0dGFjaG1lbnQsXG4gIFNDTUlBdHRhY2htZW50RGVsZXRlSWNvbixcbiAgU0NNSUF0dGFjaG1lbnRGaWxlSWNvbixcbiAgU0NNSUF0dGFjaG1lbnRJY29uLFxuICBTQ01JQXR0YWNobWVudE5hbWUsXG4gIFN0eWxlZE1BSUFJbnB1dFdyYXBwZXIsXG4gIFN0eWxlZE1BSUFTZW5kQnV0dG9uLFxuICBTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkLFxuICBTQ0lucHV0RWRpdG9yQ2VsbCxcbiAgU0NJbnB1dFRvb2xiYXJSb3csXG4gIFN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGwsXG4gIFN0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGwsXG4gIFN0eWxlZE1BSUFTdG9wQnV0dG9uLFxuICBTdHlsZWRNQUlBU3RvcEljb24sXG4gIFN0eWxlZE1BSUFEcm9wT3ZlcmxheSxcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQsIE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYIH0gZnJvbSAnLi9tYWlhSW5wdXRMYXlvdXQnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IE1vZGFsRmlsZUV4Y2VlZHMgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvTW9kYWxGaWxlRXhjZWVkcydcbmltcG9ydCB7IFNsYXNoQ29tbWFuZERyb3Bkb3duIH0gZnJvbSAnLi4vU2xhc2hDb21tYW5kRHJvcGRvd24nXG5pbXBvcnQgeyBTa2lsbHNEcm9wZG93biB9IGZyb20gJy4uL1NraWxsc0Ryb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2xhc2hDb21tYW5kcyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNsYXNoQ29tbWFuZHMnXG5pbXBvcnQgeyB1c2VTa2lsbHNDYXRhbG9nIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU2tpbGxzQ2F0YWxvZydcbmltcG9ydCB7IGNhbkFjY2Vzc1RvU2tpbGxzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgdHlwZSB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyByZXNvbHZlUXVpY2tBY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlJ1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9BY3Rpb24nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE1haWFJbnB1dEFkZEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBZGRJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0QXR0YWNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEF0dGFjaEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dERlZXBTZWFyY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0RGVlcFNlYXJjaEljb24nXG5pbXBvcnQgeyBDb3JBY2Nlc3NJY29uIH0gZnJvbSAnLi4vaWNvbnMvQ29yQWNjZXNzSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0TWVudGlvbkljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRSb2JvdEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRSb2JvdEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRTZW5kSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFNlbmRJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0U2xhc2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0U2xhc2hJY29uJ1xuaW1wb3J0IHsgU2tpbGxJY29uIH0gZnJvbSAnLi4vaWNvbnMvU2tpbGxJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0V2ViU2VhcmNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFdlYlNlYXJjaEljb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBnZXRDaGF0VG9vbHNNZW51QWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcbmltcG9ydCB7IE1BSUFfQ0hBVF9JTlBVVF9VSSB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9jb25maWcnXG5pbXBvcnQge1xuICBhbGxvd2VkRmlsZVR5cGVzLFxuICBmaWxlVHlwZXMsXG4gIGdldE1heEF0dGFjaG1lbnRTaXplTWIsXG4gIE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTLFxufSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvZm9ybWF0RXh0ZW5zaW9ucydcbmltcG9ydCB7IEFQUENVRVNfRVZFTlRTLCB0cmFja0FwcGN1ZXNFdmVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcGN1ZXMnXG5pbXBvcnQgeyBDaGlwIH0gZnJvbSAnLi4vQ2hpcCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9yLCBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyB1c2VNZW50aW9uUG9wb3ZlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1lbnRpb25Qb3BvdmVyJ1xuaW1wb3J0IHsgdXNlQ2FyZXRQb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNhcmV0UG9zaXRpb24nXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGRhdGFUcmFuc2Zlckhhc0ZpbGVzLCBmaWxlc0Zyb21EYXRhVHJhbnNmZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jaGF0SW5wdXRGaWxlcydcbmltcG9ydCB7IGNhbkNyZWF0ZVNraWxsc0Zyb21JbnB1dCwgZ2V0U2tpbGxNZW50aW9uSWRzIH0gZnJvbSAnLi9NQUlBSW5wdXQuaGVscGVycydcblxuY29uc3QgVE9PTF9DSElQX0VYSVRfTVMgPSAyMjBcbmNvbnN0IFNMQVNIX0RST1BET1dOX1dJRFRIX1BYID0gMzQwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYID0gNDE2XG5jb25zdCBTS0lMTFNfRFJPUERPV05fV0lEVEhfUFggPSAzMzlcbmNvbnN0IFNMQVNIX0RST1BET1dOX0dBUF9QWCA9IDRcbmNvbnN0IFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCA9IDhcblxudHlwZSBBdHRhY2htZW50RmlsZSA9IHtcbiAgZmlsZTogRmlsZVxuICBvcmlnaW5hbEZpbGU/OiBGaWxlXG4gIGlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHNpemU6IG51bWJlclxuICB0eXBlOiBzdHJpbmdcbiAgaWNvbj86IFJlYWN0Tm9kZVxufVxuXG50eXBlIE1BSUFJbnB1dFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIG9uU2VuZE1lc3NhZ2U6IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBmdWFJZD86IHN0cmluZyxcbiAgICBzY0lkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBvblN0b3BHZW5lcmF0aW9uPzogKCgpID0+IHZvaWQpIHwgbnVsbFxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBvbkNoYW5nZT86ICgpID0+IHZvaWRcbiAgb25Gb2N1cz86ICgpID0+IHZvaWRcbiAgYWxpZ25CdXR0b25zPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuICBvbkZpbGVBdHRhY2g/OiAoZmlsZTogRmlsZSkgPT4gdm9pZFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQ/OiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGNoYXRJZD86IHN0cmluZ1xuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgLyoqIEV4cG9uZSBlbCB3cmFwcGVyIGRlbCBpbnB1dCBwYXJhIGFuY2xhciBwb3BvdmVycyAobWVuY2lvbmVzLCBwaW4gZGUgY29udGV4dG8pLiAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIGxheW91dE1vZGU/OiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnXG4gIC8qKiBDaGlwIGRlIGNvbnRleHRvICh0YXJlYS9wcm95ZWN0by9jbGllbnRlL2dsb2JhbCkgbW9zdHJhZG8gZW4gbGEgdG9vbGJhciBkZWwgaW5wdXQuICovXG4gIGNvbnRleHRDaGlwPzoge1xuICAgIGl0ZW1zOiBzdHJpbmdbXVxuICAgIHR5cGU/OiBDb250ZXh0RW50aXR5VHlwZVxuICAgIGVudGl0eUlkPzogc3RyaW5nIHwgbnVtYmVyXG4gICAgbGVhZGluZ0ljb24/OiBSZWFjdE5vZGVcbiAgICBvbkVudGl0eU5hdmlnYXRlPzogKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpZDogc3RyaW5nIHwgbnVtYmVyKSA9PiB2b2lkXG4gIH0gfCBudWxsXG4gIC8qKiBIb21lIC9tYWlhOiBtdWVzdHJhIEAgbWllbnRyYXMgZWwgb3JjaGVzdHJhdG9yIGHDum4gbm8gZXN0w6EgZW4gY29udGV4dG8uICovXG4gIG9yY2hlc3RyYXRvckhvbWVDb21wb3Nlcj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IE1BSUFJbnB1dCA9ICh7XG4gIG9uU2VuZE1lc3NhZ2UsXG4gIGNsYXNzTmFtZSxcbiAgZGlzYWJsZWQsXG4gIGlzU3RyZWFtaW5nLFxuICBpc1dyaXRpbmcsXG4gIG9uU3RvcEdlbmVyYXRpb24sXG4gIHBsYWNlaG9sZGVyLFxuICBvbkNoYW5nZSxcbiAgb25Gb2N1cyxcbiAgYWxpZ25CdXR0b25zID0gJ3ZlcnRpY2FsJyxcbiAgb25GaWxlQXR0YWNoLFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQsXG4gIGF0dGFjaG1lbnRzID0gW10sXG4gIGNoYXRJZCxcbiAgbmV3Q2hhdEtleSxcbiAgdG9vbHRpcFpJbmRleCxcbiAgcG9wb3ZlckFuY2hvclJlZjogZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmLFxuICBsYXlvdXRNb2RlLFxuICBjb250ZXh0Q2hpcCxcbiAgb3JjaGVzdHJhdG9ySG9tZUNvbXBvc2VyID0gZmFsc2UsXG59OiBNQUlBSW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWY8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+KG51bGwpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGlwc1Jvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdG9vbGJhclJvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaW50ZXJuYWxXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB3cmFwcGVyUmVmID0gZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmID8/IGludGVybmFsV3JhcHBlclJlZlxuICBjb25zdCBbaGFzVHlwaW5nUHJlc2VuY2UsIHNldEhhc1R5cGluZ1ByZXNlbmNlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY2hpcHNSb3dIZWlnaHQsIHNldENoaXBzUm93SGVpZ2h0XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFt0b29sYmFyUm93SGVpZ2h0LCBzZXRUb29sYmFyUm93SGVpZ2h0XSA9IHVzZVN0YXRlKE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYKVxuICBjb25zdCBbbW9kYWxQcm9wcywgc2V0TW9kYWxQcm9wc10gPSB1c2VTdGF0ZSh7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBleGNsdWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBleGNlZWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBmaWxlU2l6ZXM6IHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4gIH0pXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7XG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZURlZXBTZWFyY2gsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gICAgdG9nZ2xlQXV0b0FwcHJvdmUsXG4gICAgYWdlbnQsXG4gICAgaW5pdGlhbERyYWZ0LFxuICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgcGx1c01lbnVaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEzMDAsICdvdmVybGF5JylcbiAgY29uc3QgaW5pdGlhbERyYWZ0QXBwbGllZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCB7XG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLFxuICAgIGhhbmRsZVRyaWdnZXIsXG4gICAgaGFuZGxlS2V5RG93bjogaGFuZGxlUG9wb3ZlcktleURvd24sXG4gICAgcG9wb3Zlck5vZGUsXG4gIH0gPSB1c2VNZW50aW9uUG9wb3Zlcih7XG4gICAgZWRpdG9yUmVmLFxuICAgIHBvcG92ZXJBbmNob3JSZWY6IHdyYXBwZXJSZWYsXG4gIH0pXG5cbiAgY29uc3QgW3BsdXNNZW51QW5jaG9yLCBzZXRQbHVzTWVudUFuY2hvcl0gPSB1c2VTdGF0ZTxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUb29sQ2hpcEhvdmVyZWQsIHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Rvb2xDaGlwRXhpdGluZywgc2V0VG9vbENoaXBFeGl0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbYXV0b0FwcHJvdmVDaGlwSG92ZXJlZCwgc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzRmlsZURyYWdBY3RpdmUsIHNldElzRmlsZURyYWdBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHRvb2xDaGlwRXhpdFRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZmlsZURyYWdDb3VudGVyUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNlYXJjaE1vZGVBY3RpdmVSZWYgPSB1c2VSZWYoeyB3ZWI6IGZhbHNlLCBkZWVwOiBmYWxzZSB9KVxuICBjb25zdCBwbHVzTWVudU9wZW4gPSBCb29sZWFuKHBsdXNNZW51QW5jaG9yKVxuXG4gIC8vIEluaWNpYWxpemFyIGxhcyByZWZlcmVuY2lhcyBjb21vIHVuZGVmaW5lZCBwYXJhIGRldGVjdGFyIGVsIHByaW1lciBjYW1iaW8gY29ycmVjdGFtZW50ZVxuICBjb25zdCBwcmV2aW91c0FnZW50SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzQ2hhdElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c05ld0NoYXRLZXlSZWYgPSB1c2VSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzTGF5b3V0TW9kZVJlZiA9IHVzZVJlZjxNQUlBSW5wdXRQcm9wc1snbGF5b3V0TW9kZSddPih1bmRlZmluZWQpXG5cbiAgY29uc3QgYW5hbHl0aWNzQWdlbnRUeXBlID0gZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZShhZ2VudClcbiAgY29uc3QgYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyB7IGVudGl0eTogYWdlbnQuZW50aXR5ID8/IG51bGwgfSA6IHt9XG5cbiAgLy8gU2xhc2ggY29tbWFuZHMgYXBsaWNhbiBhIGNsb25lcyBlc3BlY2lhbGlzdGFzIHkgYWwgb3JjaGVzdHJhdG9yIGdsb2JhbCAoZXN0ZSBhZ3JlZ2EgbG9zIGRlIHN1cyBzdWJhZ2VudGVzKS5cbiAgLy8gTG9zIGN1c3RvbSB5IGxvcyBjbG9uZSBnbG9iYWwvbWFpYWtlciBubyBsb3MgdGllbmVuIGhhYmlsaXRhZG9zLlxuICBjb25zdCB7IGNvbW1hbmRzOiBzbGFzaENvbW1hbmRzIH0gPSB1c2VTbGFzaENvbW1hbmRzKFxuICAgIChhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcpIHx8XG4gICAgICAoYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgYWdlbnQ/LmVudGl0eSAhPT0gJ2dsb2JhbCcpXG4gICAgICA/IGFnZW50Py5pZFxuICAgICAgOiB1bmRlZmluZWRcbiAgKVxuICBjb25zdCBbc2hvd1NsYXNoRHJvcGRvd24sIHNldFNob3dTbGFzaERyb3Bkb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2xhc2hRdWVyeSwgc2V0U2xhc2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3Qgc2xhc2hNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2xhc2hEcm9wZG93blpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTIwMCwgJ292ZXJsYXknKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcbiAgY29uc3QgW3NsYXNoRHJvcGRvd25Qb3MsIHNldFNsYXNoRHJvcGRvd25Qb3NdID0gdXNlU3RhdGUoe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIG1heEhlaWdodDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgfSlcblxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHNob3dTa2lsbHNCdXR0b24gPSBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKVxuICBjb25zdCBza2lsbHNCdXR0b25SZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBza2lsbHNNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2tpbGxzT3BlblNvdXJjZVJlZiA9IHVzZVJlZjwnYnV0dG9uJyB8ICdoYXNoJz4oJ2hhc2gnKVxuICBjb25zdCBwcmV2U2tpbGxNZW50aW9uSWRzUmVmID0gdXNlUmVmPHN0cmluZ1tdPihbXSlcbiAgY29uc3Qgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHsgc2tpbGxzLCBsb2FkaW5nOiBza2lsbHNMb2FkaW5nLCBlcnJvcjogc2tpbGxzRXJyb3IsIGZldGNoU2tpbGxzIH0gPSB1c2VTa2lsbHNDYXRhbG9nKClcbiAgY29uc3QgW3Nob3dTa2lsbHNEcm9wZG93biwgc2V0U2hvd1NraWxsc0Ryb3Bkb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2tpbGxzUXVlcnksIHNldFNraWxsc1F1ZXJ5XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbc2tpbGxzRHJvcGRvd25Qb3MsIHNldFNraWxsc0Ryb3Bkb3duUG9zXSA9IHVzZVN0YXRlKHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICBtYXhIZWlnaHQ6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gIH0pXG5cbiAgY29uc3QgcG9zaXRpb25TbGFzaERyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXJSZWN0ID0gd3JhcHBlclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCcvJylcbiAgICBjb25zdCB0b3BTb3VyY2UgPSBjYXJldD8udG9wID8/ICh3cmFwcGVyUmVjdCAmJiB3cmFwcGVyUmVjdC53aWR0aCA+IDAgPyB3cmFwcGVyUmVjdC50b3AgOiBudWxsKVxuICAgIGNvbnN0IGxlZnRTb3VyY2UgPSBjYXJldD8ubGVmdCA/PyAod3JhcHBlclJlY3QgJiYgd3JhcHBlclJlY3Qud2lkdGggPiAwID8gd3JhcHBlclJlY3QubGVmdCA6IG51bGwpXG4gICAgaWYgKHRvcFNvdXJjZSA9PSBudWxsIHx8IGxlZnRTb3VyY2UgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heChcbiAgICAgIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCxcbiAgICAgIE1hdGgubWluKHZpZXdwb3J0VyAtIFNMQVNIX0RST1BET1dOX1dJRFRIX1BYIC0gU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLCBsZWZ0U291cmNlKVxuICAgIClcbiAgICBjb25zdCBhdmFpbGFibGVIZWlnaHRQeCA9IHRvcFNvdXJjZSAtIFNMQVNIX0RST1BET1dOX0dBUF9QWCAtIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWFxuICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgubWluKFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsIE1hdGgubWF4KDAsIGF2YWlsYWJsZUhlaWdodFB4KSlcblxuICAgIHNldFNsYXNoRHJvcGRvd25Qb3Moe1xuICAgICAgbGVmdCxcbiAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gdG9wU291cmNlICsgU0xBU0hfRFJPUERPV05fR0FQX1BYLFxuICAgICAgbWF4SGVpZ2h0LFxuICAgIH0pXG4gIH0sIFt3cmFwcGVyUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93U2xhc2hEcm9wZG93bikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcG9zaXRpb25TbGFzaERyb3Bkb3duKClcblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG4gICAgfVxuICB9LCBbc2hvd1NsYXNoRHJvcGRvd24sIHNsYXNoUXVlcnksIHBvc2l0aW9uU2xhc2hEcm9wZG93bl0pXG5cbiAgLyoqIEVsIHBvcG92ZXIgZGUgc2tpbGxzIHNlIGFuY2xhIGFsIGAjYCBxdWUgbG8gYWJyacOzOyBzaSBubyBoYXkgY2FyZXQsIGFsIGJvcmRlIGRlbCBpbnB1dC4gKi9cbiAgY29uc3QgcG9zaXRpb25Ta2lsbHNEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgnIycpXG4gICAgY29uc3QgdG9wU291cmNlID0gY2FyZXQ/LnRvcCA/PyAod3JhcHBlclJlY3QgJiYgd3JhcHBlclJlY3Qud2lkdGggPiAwID8gd3JhcHBlclJlY3QudG9wIDogbnVsbClcbiAgICBjb25zdCBsZWZ0U291cmNlID0gY2FyZXQ/LmxlZnQgPz8gKHdyYXBwZXJSZWN0ICYmIHdyYXBwZXJSZWN0LndpZHRoID4gMCA/IHdyYXBwZXJSZWN0LmxlZnQgOiBudWxsKVxuICAgIGlmICh0b3BTb3VyY2UgPT0gbnVsbCB8fCBsZWZ0U291cmNlID09IG51bGwpIHJldHVyblxuXG4gICAgY29uc3Qgdmlld3BvcnRIID0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoXG4gICAgICBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsXG4gICAgICBNYXRoLm1pbih2aWV3cG9ydFcgLSBTS0lMTFNfRFJPUERPV05fV0lEVEhfUFggLSBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsIGxlZnRTb3VyY2UpXG4gICAgKVxuICAgIGNvbnN0IGF2YWlsYWJsZUhlaWdodFB4ID0gdG9wU291cmNlIC0gU0xBU0hfRFJPUERPV05fR0FQX1BYIC0gU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYXG5cbiAgICBzZXRTa2lsbHNEcm9wZG93blBvcyh7XG4gICAgICBsZWZ0LFxuICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSB0b3BTb3VyY2UgKyBTTEFTSF9EUk9QRE9XTl9HQVBfUFgsXG4gICAgICBtYXhIZWlnaHQ6IE1hdGgubWluKFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsIE1hdGgubWF4KDAsIGF2YWlsYWJsZUhlaWdodFB4KSksXG4gICAgfSlcbiAgfSwgW3dyYXBwZXJSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dTa2lsbHNEcm9wZG93bikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcG9zaXRpb25Ta2lsbHNEcm9wZG93bigpXG5cbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25Ta2lsbHNEcm9wZG93bigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtzaG93U2tpbGxzRHJvcGRvd24sIHNraWxsc1F1ZXJ5LCBwb3NpdGlvblNraWxsc0Ryb3Bkb3duXSlcblxuICAvKiogVHJhcyBlbGVnaXIgbyBxdWl0YXIgYsO6c3F1ZWRhIHdlYi9wcm9mdW5kYTogdm9sdmVyIGFsIHRleHRhcmVhIChQb3BvdmVyL21lbnUgcHVlZGUgcm9iYXIgZm9jbykuICovXG4gIGNvbnN0IHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgMClcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY2xvc2VQbHVzTWVudSA9ICgpID0+IHtcbiAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICBjb25zdCBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudClcbiAgICAgIHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24gPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAvLyBFdml0YSBxdWUgZWwgYm90w7NuIHJvYmUgZWwgZm9jbyBkZWwgaW5wdXQgYWwgYWJyaXIgZWwgbWVuw7ouXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHBsdXNNZW51QW5jaG9yKSB7XG4gICAgICBjbG9zZVBsdXNNZW51KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQbHVzTWVudUFuY2hvcihlLmN1cnJlbnRUYXJnZXQpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFBsdXNPcGVuLCB7IGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSwgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0TWVudGlvblRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVBdHRhY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdmaWxlcycsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBpZiAoYXR0YWNobWVudHMubGVuZ3RoID49IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSByZXR1cm5cbiAgICBmaWxlSW5wdXRSZWYuY3VycmVudD8uY2xpY2soKVxuICB9XG5cbiAgY29uc3QgYmVnaW5Ub29sQ2hpcEV4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB3YXNXZWIgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGNvbnN0IHdhc0RlZXAgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgICBpZiAoIXdhc1dlYiAmJiAhd2FzRGVlcCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFRvb2xDaGlwRXhpdGluZyh0cnVlKVxuICAgIHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBjb25zdCB7IHdlYiwgZGVlcCB9ID0gc2VhcmNoTW9kZUFjdGl2ZVJlZi5jdXJyZW50XG4gICAgICBpZiAod2FzV2ViICYmIHdlYikge1xuICAgICAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgfSBlbHNlIGlmICh3YXNEZWVwICYmIGRlZXApIHtcbiAgICAgICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgICB9XG4gICAgICBzZXRUb29sQ2hpcEV4aXRpbmcoZmFsc2UpXG4gICAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICAgIH0sIFRPT0xfQ0hJUF9FWElUX01TKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVXZWJTZWFyY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSB7XG4gICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCgpXG4gICAgaWYgKGlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgfVxuICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdzZWFyY2gnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIC8vIEF1dG8tYXBwcm92ZSBmdWVyYSBkZSBlc3RlIHJlbGVhc2UgKHZlciBJU19BVVRPX0FQUFJPVkVfRU5BQkxFRCBlbiB1c2VQcm9qZWN0U3VtbWFyeUNvbmZpZykuXG4gIC8vIGNvbnN0IGhhbmRsZVBsdXNNZW51QXV0b0FwcHJvdmUgPSAoKSA9PiB7XG4gIC8vICAgY2xvc2VQbHVzTWVudSgpXG4gIC8vICAgdG9nZ2xlQXV0b0FwcHJvdmU/LigpXG4gIC8vICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gIC8vICAgICB0b29sOiAnYXV0b19hcHByb3ZlJyxcbiAgLy8gICAgIGFjdGl2ZTogIWlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gIC8vICAgfSlcbiAgLy8gfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51RGVlcFNlYXJjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBpZiAoaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCgpXG4gICAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSB7XG4gICAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ2RlZXBfc2VhcmNoJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9ucyA9ICgpID0+IHtcbiAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydFNsYXNoVHJpZ2dlcigpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgfVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW2luaXRpYWxEcmFmdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBkcmFmdCA9IGluaXRpYWxEcmFmdD8udHJpbSgpXG4gICAgaWYgKCFkcmFmdCB8fCBpbml0aWFsRHJhZnRBcHBsaWVkUmVmLmN1cnJlbnQgfHwgZGlzYWJsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpbml0aWFsRHJhZnRBcHBsaWVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnNldFBsYWluVGV4dChkcmFmdClcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZSh0cnVlKVxuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgfVxuICB9LCBbaW5pdGlhbERyYWZ0LCBkaXNhYmxlZCwgZGVlcExpbmtTZW5kUGVuZGluZ1JlZl0pXG5cbiAgY29uc3Qgc2VuZERpc2FibGVkID0gdXNlTWVtbyhcbiAgICAoKSA9PiAhaGFzVHlwaW5nUHJlc2VuY2UgJiYgYXR0YWNobWVudHMubGVuZ3RoID09PSAwLFxuICAgIFtoYXNUeXBpbmdQcmVzZW5jZSwgYXR0YWNobWVudHMubGVuZ3RoXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZWFyY2hNb2RlQWN0aXZlUmVmLmN1cnJlbnQgPSB7IHdlYjogaXNXZWJTZWFyY2hBY3RpdmUsIGRlZXA6IGlzRGVlcFNlYXJjaEFjdGl2ZSB9XG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc1dlYlNlYXJjaEFjdGl2ZSAmJiAhaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgICBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQoZmFsc2UpXG4gICAgfVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgLy8gQXV0by1mb2N1cyBjdWFuZG8gY2FtYmlhIGVsIGFnZW50ZSBvIGxhIGNvbnZlcnNhY2nDs24sIG8gYWwgbW9udGFyIGVsIGNvbXBvbmVudGVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBhZ2VudENoYW5nZWQgPSBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCAhPT0gYWdlbnQ/LmlkXG4gICAgY29uc3QgcHJldmlvdXNDaGF0SWQgPSBwcmV2aW91c0NoYXRJZFJlZi5jdXJyZW50XG4gICAgY29uc3QgY3VycmVudENoYXRJZCA9IGNoYXRJZFxuICAgIGNvbnN0IGNoYXRDaGFuZ2VkID0gcHJldmlvdXNDaGF0SWQgIT09IGN1cnJlbnRDaGF0SWRcbiAgICBjb25zdCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgPVxuICAgICAgKHByZXZpb3VzQ2hhdElkID09PSB1bmRlZmluZWQgfHwgcHJldmlvdXNDaGF0SWQgPT09IG51bGwpICYmIGN1cnJlbnRDaGF0SWQgIT09IHVuZGVmaW5lZCAmJiBjdXJyZW50Q2hhdElkICE9PSBudWxsXG4gICAgY29uc3QgbmV3Q2hhdFN0YXJ0ZWQgPSBwcmV2aW91c05ld0NoYXRLZXlSZWYuY3VycmVudCAhPT0gbmV3Q2hhdEtleVxuICAgIGNvbnN0IGlzSW5pdGlhbE1vdW50ID0gcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZCAmJiBwcmV2aW91c0NoYXRJZFJlZi5jdXJyZW50ID09PSB1bmRlZmluZWRcblxuICAgIGlmICgoYWdlbnRDaGFuZ2VkIHx8IGNoYXRDaGFuZ2VkIHx8IGNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCB8fCBuZXdDaGF0U3RhcnRlZCB8fCBpc0luaXRpYWxNb3VudCkgJiYgIWRpc2FibGVkKSB7XG4gICAgICBjb25zdCBkZWxheSA9IGlzSW5pdGlhbE1vdW50IHx8IGNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCA/IDIwMCA6IDEwMFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghZGlzYWJsZWQpIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9LCBkZWxheSlcbiAgICB9XG5cbiAgICBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCA9IGFnZW50Py5pZFxuICAgIHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnQgPSBjaGF0SWRcbiAgICBwcmV2aW91c05ld0NoYXRLZXlSZWYuY3VycmVudCA9IG5ld0NoYXRLZXlcbiAgfSwgW2FnZW50Py5pZCwgY2hhdElkLCBuZXdDaGF0S2V5LCBkaXNhYmxlZF0pXG5cbiAgLy8gQXV0by1mb2N1cyBjdWFuZG8gY2FtYmlhIGxhIGRpc3Bvc2ljacOzbiBkZWwgbW9kYWwgKHNpZGViYXIgLyBmdWxsc2NyZWVuIC8gZmxvYXRpbmcpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsYXlvdXRNb2RlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMYXlvdXRNb2RlID0gcHJldmlvdXNMYXlvdXRNb2RlUmVmLmN1cnJlbnRcbiAgICBwcmV2aW91c0xheW91dE1vZGVSZWYuY3VycmVudCA9IGxheW91dE1vZGVcblxuICAgIGlmIChwcmV2aW91c0xheW91dE1vZGUgPT09IHVuZGVmaW5lZCB8fCBwcmV2aW91c0xheW91dE1vZGUgPT09IGxheW91dE1vZGUgfHwgZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9XG4gICAgfSwgMjAwKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dElkKVxuICB9LCBbbGF5b3V0TW9kZSwgZGlzYWJsZWRdKVxuXG4gIC8vIEFwcGN1ZXM6IG5vdGlmeSB0aGF0IHRoZSBpbnB1dCBpcyB2aXNpYmxlIGZvciBzcGVjaWFsaXN0IGFnZW50cyAoY2xvbmUgKyBwcm9qZWN0L2NsaWVudClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpc1NwZWNpYWxpc3RBZ2VudCA9IGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCcpXG4gICAgaWYgKCF3cmFwcGVyUmVmLmN1cnJlbnQgfHwgIWlzU3BlY2lhbGlzdEFnZW50KSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgIChbZW50cnldKSA9PiB7XG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHRyYWNrQXBwY3Vlc0V2ZW50KEFQUENVRVNfRVZFTlRTLm1haWFDb250ZXh0TWVudGlvbkluaXQpXG4gICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHRocmVzaG9sZDogMC4xIH1cbiAgICApXG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKHdyYXBwZXJSZWYuY3VycmVudClcbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gIH0sIFthZ2VudD8uaWQsIGFnZW50Py50eXBlLCBhZ2VudD8uZW50aXR5XSlcblxuICAvLyBDbGVhciBpbnB1dCB3aGVuIHNlc3Npb24gY2hhbmdlcyAodXNlciBzd2l0Y2hlcyB0byBhIGRpZmZlcmVudCBjaGF0KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNlc3Npb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBpZiAoZGVlcExpbmtTZW5kUGVuZGluZ1JlZikge1xuICAgICAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKGZhbHNlKVxuICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nKClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSlcbiAgfSwgW3Jlc2V0TWVudGlvbk9wZW5UcmFja2luZywgZGVlcExpbmtTZW5kUGVuZGluZ1JlZl0pXG5cbiAgLy8gTWFudGVuZXIgZm9jbyBhbCBzZWxlY2Npb25hciB1biBjb250ZXh0byByZWNpZW50ZSAoZWwgY2xpY2sgZW4gZWwgcGlsbCBsbyByb2JhIGFsIGlucHV0KS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZWZvY3VzID0gKCkgPT4ge1xuICAgICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtaW5wdXQtcmVmb2N1cycsIGhhbmRsZVJlZm9jdXMpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtaW5wdXQtcmVmb2N1cycsIGhhbmRsZVJlZm9jdXMpXG4gIH0sIFtkaXNhYmxlZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVJbnNlcnRTa2lsbE1lbnRpb24gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IHNraWxsIH0gPSAoZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8eyBza2lsbDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAoIXNraWxsIHx8IGRpc2FibGVkKSByZXR1cm5cblxuICAgICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBza2lsbC5uYW1lLnJlcGxhY2UoL14oQFxcL3wjKS8sICcnKVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5hcHBlbmRNZW50aW9uQXRFbmQoe1xuICAgICAgICBpZDogc2tpbGwuaWQsXG4gICAgICAgIHR5cGU6ICdza2lsbCcsXG4gICAgICAgIGxhYmVsOiBgIyR7bm9ybWFsaXplZE5hbWV9YCxcbiAgICAgIH0pXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWluc2VydC1za2lsbC1tZW50aW9uJywgaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWluc2VydC1za2lsbC1tZW50aW9uJywgaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uKVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZWRpdG9yUmVmLmN1cnJlbnQ/LnNlcmlhbGl6ZSgpXG4gICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgaWYgKCF0ZXh0LnRyaW0oKSAmJiAhYXR0YWNobWVudHMubGVuZ3RoKSByZXR1cm5cbiAgICBjb25zdCBtZW50aW9ucyA9IHN0YXRlPy5tZW50aW9ucyA/PyBbXVxuICAgIG9uU2VuZE1lc3NhZ2UodGV4dCwgYXR0YWNobWVudHMsIG1lbnRpb25zKVxuICAgIHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcHJldlNraWxsTWVudGlvbklkc1JlZi5jdXJyZW50ID0gW11cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9KVxuICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKGZhbHNlKVxuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gIH0sIFthdHRhY2htZW50cywgb25TZW5kTWVzc2FnZSwgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nXSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RTbGFzaENvbW1hbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZDogQWN0aW9uKSA9PiB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0UXVpY2tBY3Rpb25TZWxlY3QsIHtcbiAgICAgICAgdHlwZV9xdWlja19hY3Rpb246IHJlc29sdmVRdWlja0FjdGlvblR5cGUoY29tbWFuZCksXG4gICAgICAgIG9yaWdpbl9xdWlja19hY3Rpb246ICdzbGFzaF9tZW51JyxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHN0YXRlID0gZWRpdG9yUmVmLmN1cnJlbnQ/LnNlcmlhbGl6ZSgpXG4gICAgICBjb25zdCB0ZXh0ID0gc3RhdGU/LnRleHQgPz8gJydcbiAgICAgIGNvbnN0IHRyaWdnZXJQYXJ0ID0gYC8ke3NsYXNoUXVlcnl9YFxuICAgICAgY29uc3QgYmVmb3JlVHJpZ2dlciA9IHRleHQuZW5kc1dpdGgodHJpZ2dlclBhcnQpID8gdGV4dC5zbGljZSgwLCAtdHJpZ2dlclBhcnQubGVuZ3RoKSA6IHRleHRcbiAgICAgIGNvbnN0IGlzRW1wdHlCZWZvcmVUcmlnZ2VyID0gYmVmb3JlVHJpZ2dlci50cmltKCkgPT09ICcnXG5cbiAgICAgIGlmIChpc0VtcHR5QmVmb3JlVHJpZ2dlcikge1xuICAgICAgICBvblNlbmRNZXNzYWdlKGNvbW1hbmQudGl0bGUsIGF0dGFjaG1lbnRzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbW1hbmQuaWQpXG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKGZhbHNlKVxuICAgICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTbGFzaENvbW1hbmQoeyBpZDogY29tbWFuZC5pZCwgbGFiZWw6IGNvbW1hbmQudGl0bGUgfSlcbiAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYXR0YWNobWVudHMsIG9uU2VuZE1lc3NhZ2UsIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZywgc2xhc2hRdWVyeSwgZXZlbnRBbXBsaXR1ZGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd24gPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlU2tpbGxzRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICB9LCBbXSlcblxuICAvKiogQWJyZSBlbCBsaXN0YWRvIGRlc2RlIGVsIGJvdMOzbjogaW5zZXJ0YSBgI2AgZW4gZWwgZWRpdG9yIHBhcmEgcXVlIGVsIHRyaWdnZXIgcXVlZGUgYWN0aXZvLiAqL1xuICBjb25zdCBoYW5kbGVTa2lsbHNCdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGlmIChzaG93U2tpbGxzRHJvcGRvd24pIHtcbiAgICAgIGhhbmRsZUNsb3NlU2tpbGxzRHJvcGRvd24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdidXR0b24nXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydFNraWxsVHJpZ2dlcigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RTa2lsbCA9IHVzZUNhbGxiYWNrKFxuICAgIChza2lsbDogU2tpbGwpID0+IHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFNlbGVjdCwge1xuICAgICAgICBza2lsbF9pZDogc2tpbGwuaWQsXG4gICAgICAgIHNvdXJjZTogc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50LFxuICAgICAgfSlcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTa2lsbE1lbnRpb24oeyBpZDogc2tpbGwuaWQsIHR5cGU6ICdza2lsbCcsIGxhYmVsOiBgIyR7c2tpbGwubmFtZX1gIH0pXG4gICAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24oZmFsc2UpXG4gICAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2hhc2gnXG4gICAgfSxcbiAgICBbZXZlbnRBbXBsaXR1ZGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVDcmVhdGVTa2lsbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24oZmFsc2UpXG4gICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2hhc2gnXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIHNraWxsVmFsdWVzOiB7IHZhbHVlczogeyBpc0VkaXRpbmc6IGZhbHNlLCBpbnRlbnQ6ICd3cml0ZScgfSwgaXNPcGVuOiB0cnVlIH0sXG4gICAgICAgICAgYW5hbHl0aWNzU291cmNlOiAnZHJvcGRvd24nLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUVkaXRvcklucHV0ID0gdXNlQ2FsbGJhY2soXG4gICAgKHtcbiAgICAgIHRleHQsXG4gICAgICBtZW50aW9ucyxcbiAgICAgIHRyaWdnZXIsXG4gICAgICBzbGFzaFRyaWdnZXIsXG4gICAgICBoYXNoVHJpZ2dlcixcbiAgICB9OiB7XG4gICAgICB0ZXh0OiBzdHJpbmdcbiAgICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9XG4gICAgICBzbGFzaFRyaWdnZXI/OiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gICAgICBoYXNoVHJpZ2dlcj86IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nIH1cbiAgICB9KSA9PiB7XG4gICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZSh0ZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgb25DaGFuZ2U/LigpXG4gICAgICBoYW5kbGVUcmlnZ2VyKHRyaWdnZXIpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRTa2lsbElkcyA9IGdldFNraWxsTWVudGlvbklkcyhtZW50aW9ucylcbiAgICAgIGlmIChza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldlNraWxsTWVudGlvbklkc1JlZi5jdXJyZW50XG4gICAgICAgICAgLmZpbHRlcihza2lsbElkID0+ICFjdXJyZW50U2tpbGxJZHMuaW5jbHVkZXMoc2tpbGxJZCkpXG4gICAgICAgICAgLmZvckVhY2goc2tpbGxJZCA9PiB7XG4gICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxSZW1vdmUsIHsgc2tpbGxfaWQ6IHNraWxsSWQgfSlcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcHJldlNraWxsTWVudGlvbklkc1JlZi5jdXJyZW50ID0gY3VycmVudFNraWxsSWRzXG5cbiAgICAgIGlmIChzbGFzaFRyaWdnZXI/LmFjdGl2ZSAmJiBzbGFzaENvbW1hbmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKCFzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0UXVpY2tBY3Rpb25PcGVuKVxuICAgICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBzZXRTaG93U2xhc2hEcm9wZG93bih0cnVlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KHNsYXNoVHJpZ2dlci5xdWVyeSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzaFRyaWdnZXI/LmFjdGl2ZSAmJiBzaG93U2tpbGxzQnV0dG9uKSB7XG4gICAgICAgIC8vIEZldGNoIG9uLW9wZW46IHVuYSBzb2xhIGxsYW1hZGEgcG9yIGFwZXJ0dXJhIGRlbCBsaXN0YWRvLlxuICAgICAgICBpZiAoIXNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbE9wZW4sIHsgc291cmNlOiBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgfSlcbiAgICAgICAgICB2b2lkIGZldGNoU2tpbGxzKClcbiAgICAgICAgfVxuICAgICAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24odHJ1ZSlcbiAgICAgICAgc2V0U2tpbGxzUXVlcnkoaGFzaFRyaWdnZXIucXVlcnkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2hhc2gnXG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIGhhbmRsZVRyaWdnZXIsIHNsYXNoQ29tbWFuZHMsIGV2ZW50QW1wbGl0dWRlLCBzaG93U2tpbGxzQnV0dG9uLCBmZXRjaFNraWxsc11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChoYW5kbGVQb3BvdmVyS2V5RG93bihlKSkgcmV0dXJuXG4gICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgIWUuc2hpZnRLZXkgJiYgIXBvcG92ZXJPcGVuKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBpZiAoIXNlbmREaXNhYmxlZCAmJiAhZGlzYWJsZWQpIGhhbmRsZVNlbmRNZXNzYWdlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtoYW5kbGVQb3BvdmVyS2V5RG93biwgcG9wb3Zlck9wZW4sIHNlbmREaXNhYmxlZCwgZGlzYWJsZWQsIGhhbmRsZVNlbmRNZXNzYWdlXVxuICApXG5cbiAgY29uc3QgYWRkRmlsZXMgPSAoaW5jb21pbmc6IEZpbGVbXSkgPT4ge1xuICAgIGlmICghaW5jb21pbmcubGVuZ3RoIHx8IGRpc2FibGVkKSByZXR1cm5cblxuICAgIGNvbnN0IGV4Y2VlZGVkRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBleGNsdWRlZEZpbGVzOiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgZmlsZVNpemVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge31cbiAgICBsZXQgZmlsZXNJbnNlcnRlZCA9IGF0dGFjaG1lbnRzLmxlbmd0aFxuXG4gICAgY29uc3QgaXNOZXdGb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpID0+IFsnLnBuZycsICcuanBnJywgJy5qcGVnJywgJy5wZGYnXS5pbmNsdWRlcyhleHRlbnNpb24pXG4gICAgY29uc3QgaXNPbGRGb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpID0+XG4gICAgICBbJy50eHQnLCAnLm1kJywgJy5jc3YnLCAnLmRvYycsICcuZG9jeCcsICcueGxzeCcsICcueGxzJywgJy5wcHQnLCAnLnBwdHgnXS5pbmNsdWRlcyhleHRlbnNpb24pXG4gICAgY29uc3QgaXNBdWRpb0Zvcm1hdCA9IChleHRlbnNpb246IHN0cmluZykgPT5cbiAgICAgIFsnLmZsYWMnLCAnLm00YScsICcubXAzJywgJy5tcDQnLCAnLm9nYScsICcub2dnJywgJy53YXYnLCAnLndlYm0nXS5pbmNsdWRlcyhleHRlbnNpb24pXG5cbiAgICBjb25zdCBleGNlZWRzTWF4U2l6ZSA9IChleHRlbnNpb246IHN0cmluZywgc2l6ZTogbnVtYmVyKSA9PiBzaXplID4gZ2V0TWF4QXR0YWNobWVudFNpemVNYihleHRlbnNpb24pICogMTAyNCAqIDEwMjRcblxuICAgIGluY29taW5nLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICBsZXQgZXhjbHVkZWRGaWxlID0gZmFsc2VcbiAgICAgIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVxuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGVOYW1lUGFydHMubGVuZ3RoID4gMSA/IGAuJHtmaWxlTmFtZVBhcnRzLnBvcCgpPy50b0xvd2VyQ2FzZSgpfWAgOiAnJ1xuXG4gICAgICBpZiAoIWFsbG93ZWRGaWxlVHlwZXM/LmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBmaWxlU2l6ZXNbZmlsZS5uYW1lXSA9IGZpbGUuc2l6ZVxuXG4gICAgICBpZiAoaXNOZXdGb3JtYXQoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgaWYgKGV4Y2VlZHNNYXhTaXplKGZpbGVFeHRlbnNpb24sIGZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlc0luc2VydGVkICsgMSA+IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSB7XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNPbGRGb3JtYXQoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgaWYgKGV4Y2VlZHNNYXhTaXplKGZpbGVFeHRlbnNpb24sIGZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlc0luc2VydGVkICsgMSA+IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSB7XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNBdWRpb0Zvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBpZiAoZXhjZWVkc01heFNpemUoZmlsZUV4dGVuc2lvbiwgZmlsZS5zaXplKSkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWV4Y2x1ZGVkRmlsZSkge1xuICAgICAgICBmaWxlc0luc2VydGVkICs9IDFcbiAgICAgICAgY29uc3QgdHlwZUZpbGUgPSBmaWxlLnR5cGUgfHwgZmlsZVR5cGVzW2ZpbGVFeHRlbnNpb25dXG4gICAgICAgIGNvbnN0IHBhcnNlZEZpbGUgPSBuZXcgRmlsZShbZmlsZV0sIGZpbGUubmFtZSwgeyB0eXBlOiB0eXBlRmlsZSB9KVxuICAgICAgICBvbkZpbGVBdHRhY2g/LihwYXJzZWRGaWxlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBpZiAoZXhjbHVkZWRGaWxlcy5sZW5ndGggfHwgZXhjZWVkZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgIHNldE1vZGFsUHJvcHMoeyBpc09wZW46IHRydWUsIGV4Y2x1ZGVkRmlsZXMsIGV4Y2VlZGVkRmlsZXMsIGZpbGVTaXplcyB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVTZWxlY3QgPSAoZTogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBmaWxlcyA9IGUudGFyZ2V0LmZpbGVzXG4gICAgaWYgKGZpbGVzKSB7XG4gICAgICBhZGRGaWxlcyhBcnJheS5mcm9tKGZpbGVzKSlcbiAgICB9XG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzZXRGaWxlRHJhZyA9ICgpID0+IHtcbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9IDBcbiAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VudGVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgKz0gMVxuICAgIHNldElzRmlsZURyYWdBY3RpdmUodHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdMZWF2ZSA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFpc0ZpbGVEcmFnQWN0aXZlICYmICFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9IE1hdGgubWF4KDAsIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50IC0gMSlcbiAgICBpZiAoZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgPT09IDApIHtcbiAgICAgIHNldElzRmlsZURyYWdBY3RpdmUoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ092ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcm9wID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkge1xuICAgICAgcmVzZXRGaWxlRHJhZygpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHJlc2V0RmlsZURyYWcoKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgYWRkRmlsZXMoZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuZGF0YVRyYW5zZmVyKSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBhc3RlRmlsZXMgPSAoZmlsZXM6IEZpbGVbXSkgPT4ge1xuICAgIGFkZEZpbGVzKGZpbGVzKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlV3JhcHBlclBhc3RlID0gKGU6IENsaXBib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGVkaXRvckVsID0gd3JhcHBlclJlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yKCdbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScpXG4gICAgaWYgKGVkaXRvckVsICYmIGVkaXRvckVsLmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSByZXR1cm5cbiAgICBjb25zdCBmaWxlcyA9IGZpbGVzRnJvbURhdGFUcmFuc2ZlcihlLmNsaXBib2FyZERhdGEpXG4gICAgaWYgKCFmaWxlcy5sZW5ndGgpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGFkZEZpbGVzKGZpbGVzKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQXR0YWNobWVudCA9IChmaWxlSWQ6IHN0cmluZykgPT4ge1xuICAgIG9uRGVsZXRlQXR0YWNobWVudD8uKGZpbGVJZClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN0b3BHZW5lcmF0aW9uID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTdG9wUmVzcG9uc2UpXG4gICAgb25TdG9wR2VuZXJhdGlvbj8uKClcbiAgfVxuXG4gIGNvbnN0IHNob3dDaGlwc1JvdyA9IEJvb2xlYW4oY29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGggfHwgYXR0YWNobWVudHMubGVuZ3RoKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY2hpcHNFbCA9IGNoaXBzUm93UmVmLmN1cnJlbnRcbiAgICBjb25zdCB0b29sYmFyRWwgPSB0b29sYmFyUm93UmVmLmN1cnJlbnRcblxuICAgIGNvbnN0IHVwZGF0ZUhlaWdodHMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBuZXh0Q2hpcHMgPSBzaG93Q2hpcHNSb3cgJiYgY2hpcHNFbCA/IE1hdGguY2VpbChjaGlwc0VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCkgOiAwXG4gICAgICBjb25zdCBuZXh0VG9vbGJhciA9IHRvb2xiYXJFbFxuICAgICAgICA/IE1hdGguY2VpbCh0b29sYmFyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KVxuICAgICAgICA6IE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYXG5cbiAgICAgIHNldENoaXBzUm93SGVpZ2h0KHByZXYgPT4gKHByZXYgPT09IG5leHRDaGlwcyA/IHByZXYgOiBuZXh0Q2hpcHMpKVxuICAgICAgc2V0VG9vbGJhclJvd0hlaWdodChwcmV2ID0+IChwcmV2ID09PSBuZXh0VG9vbGJhciA/IHByZXYgOiBuZXh0VG9vbGJhcikpXG4gICAgfVxuXG4gICAgdXBkYXRlSGVpZ2h0cygpXG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih1cGRhdGVIZWlnaHRzKVxuICAgIGlmIChzaG93Q2hpcHNSb3cgJiYgY2hpcHNFbCkgb2JzZXJ2ZXIub2JzZXJ2ZShjaGlwc0VsKVxuICAgIGlmICh0b29sYmFyRWwpIG9ic2VydmVyLm9ic2VydmUodG9vbGJhckVsKVxuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbc2hvd0NoaXBzUm93LCBjb250ZXh0Q2hpcD8uaXRlbXM/Lmxlbmd0aCwgYXR0YWNobWVudHMubGVuZ3RoXSlcblxuICBjb25zdCBlZGl0b3JNYXhIZWlnaHQgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQoe1xuICAgICAgICBjaGlwc1Jvd0hlaWdodFB4OiBjaGlwc1Jvd0hlaWdodCxcbiAgICAgICAgdG9vbGJhclJvd0hlaWdodFB4OiB0b29sYmFyUm93SGVpZ2h0LFxuICAgICAgfSksXG4gICAgW2NoaXBzUm93SGVpZ2h0LCB0b29sYmFyUm93SGVpZ2h0XVxuICApXG5cbiAgY29uc3QgdG9vbGJhckljb25Db2xvciA9ICcjODA4MDgwJ1xuICBjb25zdCBwbHVzTWVudUljb25Db2xvciA9IE1BSUFfQ0hBVF9JTlBVVF9VSS5tZW51SWNvblxuICBjb25zdCBpc0N1c3RvbUFnZW50ID0gYWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nXG4gIGNvbnN0IGhhc0NvckFjY2VzcyA9IEJvb2xlYW4oXG4gICAgaXNDdXN0b21BZ2VudCAmJlxuICAgIGFnZW50Py5jb25uZWN0b3JzPy5zb21lKFxuICAgICAgY29ubmVjdG9yID0+XG4gICAgICAgIGNvbm5lY3Rvci5ncm91cCA9PT0gJ0NPUicgJiYgY29ubmVjdG9yLnNsdWdzLnNvbWUoc2x1ZyA9PiB0eXBlb2Ygc2x1ZyA9PT0gJ3N0cmluZycgJiYgc2x1Zy50cmltKCkubGVuZ3RoID4gMClcbiAgICApXG4gIClcbiAgY29uc3QgYWdlbnRNb2RlbE5hbWUgPSBpc0N1c3RvbUFnZW50ID8gYWdlbnQ/Lm1vZGVsX2Rpc3BsYXlfbmFtZT8udHJpbSgpIHx8IG51bGwgOiBudWxsXG4gIGNvbnN0IHNob3dDdXN0b21NZXRhSW5kaWNhdG9ycyA9IGhhc0NvckFjY2VzcyB8fCBCb29sZWFuKGFnZW50TW9kZWxOYW1lKVxuICBjb25zdCBzaG93TWVudGlvbkJ1dHRvbiA9IGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyB8fCBoYXNDb3JBY2Nlc3MgfHwgKG9yY2hlc3RyYXRvckhvbWVDb21wb3NlciAmJiAhYWdlbnQpXG5cbiAgbGV0IGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb246IFJlYWN0Tm9kZVxuICBpZiAoYWN0aXZlVG9vbENoaXBIb3ZlcmVkKSB7XG4gICAgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IDxDcm9zcyBjb2xvcj17TUFJQV9DSEFUX0lOUFVUX1VJLmNoaXBDbG9zZUljb259IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgfSBlbHNlIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgIGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24gPSA8TWFpYUlucHV0V2ViU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgfSBlbHNlIHtcbiAgICBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uID0gPE1haWFJbnB1dERlZXBTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFN0eWxlZE1BSUFJbnB1dFdyYXBwZXJcbiAgICAgICAgcmVmPXt3cmFwcGVyUmVmfVxuICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgIGFsaWduQnV0dG9ucz17YWxpZ25CdXR0b25zfVxuICAgICAgICBoYXNBdHRhY2htZW50cz17ISFhdHRhY2htZW50cy5sZW5ndGh9XG4gICAgICAgICRmaWxlRHJhZ0FjdGl2ZT17aXNGaWxlRHJhZ0FjdGl2ZX1cbiAgICAgICAgZGF0YS1hcHBjdWVzPVwibWFpYV9jaGF0X2lucHV0XCJcbiAgICAgICAgZGF0YS1tYWlhLXN0cmVhbWluZz17aXNTdHJlYW1pbmcgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICBvblBhc3RlPXtoYW5kbGVXcmFwcGVyUGFzdGV9XG4gICAgICAgIG9uRHJhZ0VudGVyPXtoYW5kbGVEcmFnRW50ZXJ9XG4gICAgICAgIG9uRHJhZ0xlYXZlPXtoYW5kbGVEcmFnTGVhdmV9XG4gICAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgICBvbkRyb3A9e2hhbmRsZURyb3B9XG4gICAgICA+XG4gICAgICAgIHtzaG93Q2hpcHNSb3cgJiYgKFxuICAgICAgICAgIDxTQ0lucHV0Q2hpcHNSb3cgcmVmPXtjaGlwc1Jvd1JlZn0+XG4gICAgICAgICAgICB7Y29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxDaGlwXG4gICAgICAgICAgICAgICAgaXRlbXM9e2NvbnRleHRDaGlwLml0ZW1zfVxuICAgICAgICAgICAgICAgIHR5cGU9e2NvbnRleHRDaGlwLnR5cGV9XG4gICAgICAgICAgICAgICAgZW50aXR5SWQ9e2NvbnRleHRDaGlwLmVudGl0eUlkfVxuICAgICAgICAgICAgICAgIGxlYWRpbmdJY29uPXtjb250ZXh0Q2hpcC5sZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICAgIG9uRW50aXR5TmF2aWdhdGU9e2NvbnRleHRDaGlwLm9uRW50aXR5TmF2aWdhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHthdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzSW1hZ2UgPVxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQudHlwZT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgL1xcLihwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wfHN2ZykkL2kudGVzdChhdHRhY2htZW50Lm5hbWUgfHwgJycpXG4gICAgICAgICAgICAgIGNvbnN0IGNoaXBJY29uID0gaXNJbWFnZSA/IChcbiAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MTJ9IGhlaWdodD17MTJ9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaEljb24gY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezEzfSBoZWlnaHQ9ezEzfSAvPlxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YXR0YWNobWVudC5uYW1lfSBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7aW5kZXh9YH0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnRGaWxlSWNvbj57Y2hpcEljb259PC9TQ01JQXR0YWNobWVudEZpbGVJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudERlbGV0ZUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBdHRhY2htZW50QXJpYScsIHsgZGVmYXVsdFZhbHVlOiAnUXVpdGFyIGFyY2hpdm8nIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRGVsZXRlQXR0YWNobWVudChhdHRhY2htZW50LmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjNjY2NjY2XCIgd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnREZWxldGVJY29uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50TmFtZT57YXR0YWNobWVudC5uYW1lfTwvU0NNSUF0dGFjaG1lbnROYW1lPlxuICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudD5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NJbnB1dENoaXBzUm93PlxuICAgICAgICApfVxuICAgICAgICA8U3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZD5cbiAgICAgICAgICA8U0NJbnB1dEVkaXRvckNlbGw+XG4gICAgICAgICAgICA8Q29udGV4dE1lbnRpb25FZGl0b3JcbiAgICAgICAgICAgICAgcmVmPXtlZGl0b3JSZWZ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBtYXhIZWlnaHQ9e2VkaXRvck1heEhlaWdodH1cbiAgICAgICAgICAgICAgb25JbnB1dD17aGFuZGxlRWRpdG9ySW5wdXR9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgICAgb25QYXN0ZUZpbGVzPXtoYW5kbGVQYXN0ZUZpbGVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDSW5wdXRFZGl0b3JDZWxsPlxuICAgICAgICAgIDxTQ0lucHV0VG9vbGJhclJvdyByZWY9e3Rvb2xiYXJSb3dSZWZ9PlxuICAgICAgICAgICAgPFN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICAgIDxQbHVzTWVudVRvb2xzUm93PlxuICAgICAgICAgICAgICAgIDxQbHVzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICRtZW51T3Blbj17cGx1c01lbnVPcGVufVxuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZVBsdXNCdXR0b25Nb3VzZURvd259XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVQbHVzQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0Lm9wZW5QbHVzTWVudUFyaWEnKX1cbiAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QWRkSWNvbiBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgIDwvUGx1c1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICB7c2hvd01lbnRpb25CdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgPFBsdXNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICRtZW51T3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU1lbnRpb25CdXR0b25DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0Lm9wZW5NZW50aW9uQXJpYScpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0TWVudGlvbkljb24gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgIDwvUGx1c1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzaG93U2tpbGxzQnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxTa2lsbHNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtza2lsbHNCdXR0b25SZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17aGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93bn1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuZHJvcGRvd25CdXR0b24nKX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtzaG93U2tpbGxzRHJvcGRvd259XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTa2lsbEljb24gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgIDwvU2tpbGxzVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICAgIGFuY2hvckVsPXtwbHVzTWVudUFuY2hvcn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e2Nsb3NlUGx1c01lbnV9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlRW5mb3JjZUZvY3VzXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmVzdG9yZUZvY3VzXG4gICAgICAgICAgICAgICAgICBhbmNob3JPcmlnaW49e3sgdmVydGljYWw6ICd0b3AnLCBob3Jpem9udGFsOiAnbGVmdCcgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbj17eyB2ZXJ0aWNhbDogJ2JvdHRvbScsIGhvcml6b250YWw6ICdsZWZ0JyB9fVxuICAgICAgICAgICAgICAgICAgc3g9e3sgekluZGV4OiBwbHVzTWVudVpJbmRleCB9fVxuICAgICAgICAgICAgICAgICAgc2xvdFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhcGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZWxldmF0aW9uOiAwLFxuICAgICAgICAgICAgICAgICAgICAgIHN4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnLTRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFBsdXNNZW51UGFwZXI+XG4gICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUlubmVyQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51QXR0YWNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBdHRhY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIxfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51QXR0YWNoJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVXZWJTZWFyY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFdlYlNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQuc2VhcmNoV2ViJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc1dlYlNlYXJjaEFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51RGVlcFNlYXJjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0RGVlcFNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVEZWVwSW52ZXN0aWdhdGlvbicpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNEZWVwU2VhcmNoQWN0aXZlID8gPENoZWNrIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIEF1dG8tYXBwcm92ZSBmdWVyYSBkZSBlc3RlIHJlbGVhc2UgKHZlciBJU19BVVRPX0FQUFJPVkVfRU5BQkxFRCBlbiB1c2VQcm9qZWN0U3VtbWFyeUNvbmZpZykuXG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51QXV0b0FwcHJvdmV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvbHQgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVBdXRvQXBwcm92ZScpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNBdXRvQXBwcm92ZUFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9uc30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2xhc2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51UXVpY2tBY3Rpb25zJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUlubmVyQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudVBhcGVyPlxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgICB7KGlzV2ViU2VhcmNoQWN0aXZlIHx8IGlzRGVlcFNlYXJjaEFjdGl2ZSkgJiYgKFxuICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwUm9vdFxuICAgICAgICAgICAgICAgICAgICAkaG92ZXJlZD17YWN0aXZlVG9vbENoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAkZXhpdGluZz17dG9vbENoaXBFeGl0aW5nfVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgJGNsb3NlU2hvd249e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUFjdGl2ZVRvb2xBcmlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHthY3RpdmVUb29sQ2hpcExlYWRpbmdJY29ufVxuICAgICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAge2lzV2ViU2VhcmNoQWN0aXZlID8gdCgnY2hhdC5zZWFyY2hXZWInKSA6IHQoJ2NoYXQucGx1c01lbnVEZWVwSW52ZXN0aWdhdGlvbicpfVxuICAgICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwUm9vdD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtpc0F1dG9BcHByb3ZlQWN0aXZlICYmIChcbiAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcFJvb3RcbiAgICAgICAgICAgICAgICAgICAgJGhvdmVyZWQ9e2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICRleGl0aW5nPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9eygpID0+IHNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17dCgnY2hhdC5hdXRvQXBwcm92ZUhpbnQnKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICRjbG9zZVNob3duPXthdXRvQXBwcm92ZUNoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQucmVtb3ZlQWN0aXZlVG9vbEFyaWEnKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUF1dG9BcHByb3ZlPy4oKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YXV0b0FwcHJvdmVDaGlwSG92ZXJlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDcm9zcyBjb2xvcj17TUFJQV9DSEFUX0lOUFVUX1VJLmNoaXBDbG9zZUljb259IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvbHQgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcExhYmVsPnt0KCdjaGF0LmF1dG9BcHByb3ZlQ2hpcCcpfTwvQWN0aXZlVG9vbENoaXBMYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBSb290PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvUGx1c01lbnVUb29sc1Jvdz5cbiAgICAgICAgICAgIDwvU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgIDxTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsPlxuICAgICAgICAgICAgICB7c2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzICYmIChcbiAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJbmRpY2F0b3JzPlxuICAgICAgICAgICAgICAgICAge2hhc0NvckFjY2VzcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoYXQuZm9vdGVyLmNvckFjY2Vzc1Rvb2x0aXAnKX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e3QoJ2NoYXQuZm9vdGVyLmNvckFjY2Vzc0xhYmVsJyl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvckFjY2Vzc0ljb24gd2lkdGg9ezE1fSBoZWlnaHQ9ezE0fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHthZ2VudE1vZGVsTmFtZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoaXBMbG0udG9vbHRpcCcsIHsgbW9kZWw6IGFnZW50TW9kZWxOYW1lIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIHsuLi4odG9vbHRpcFpJbmRleCAhPSBudWxsID8geyB6SW5kZXg6IHRvb2x0aXBaSW5kZXggfSA6IHt9KX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0lucHV0TWV0YUljb25CdXR0b24gYXJpYS1sYWJlbD17YWdlbnRNb2RlbE5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFJvYm90SWNvbiB3aWR0aD17MTh9IGhlaWdodD17MTh9IGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NJbnB1dE1ldGFJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvU0NJbnB1dE1ldGFJbmRpY2F0b3JzPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNXcml0aW5nID8gKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjaGF0LnN0b3AnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRNQUlBU3RvcEJ1dHRvbiBkaXNhYmxlZD17ZmFsc2V9IG9uQ2xpY2s9e2hhbmRsZVN0b3BHZW5lcmF0aW9ufSBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRNQUlBU3RvcEljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTUFJQVN0b3BCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjaGF0LnNlbmQnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInIH19PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VuZERpc2FibGVkIHx8IGRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlcz17aGFzVHlwaW5nUHJlc2VuY2UgfHwgYXR0YWNobWVudHMubGVuZ3RoID4gMH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRTZW5kSWNvbiBjb2xvcj1cIiNCRkJGQkZcIiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsPlxuICAgICAgICAgIDwvU0NJbnB1dFRvb2xiYXJSb3c+XG4gICAgICAgIDwvU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgYWNjZXB0PVwiLnR4dCwubWQsLmNzdiwuZG9jLC5kb2N4LC5wcHQsLnBwdHgsLnBuZywuanBnLC5qcGVnLC5wZGYsLnhsc3gsLnhscywuZmxhYywubTRhLC5tcDMsLm1wNCwub2dhLC5vZ2csLndhdiwud2VibVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVTZWxlY3R9XG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ25vbmUnIH19XG4gICAgICAgIC8+XG4gICAgICAgIHtpc0ZpbGVEcmFnQWN0aXZlICYmIDxTdHlsZWRNQUlBRHJvcE92ZXJsYXk+e3QoJ2NoYXQuZHJvcEZpbGVzSGVyZScpfTwvU3R5bGVkTUFJQURyb3BPdmVybGF5Pn1cbiAgICAgIDwvU3R5bGVkTUFJQUlucHV0V3JhcHBlcj5cbiAgICAgIHttb2RhbFByb3BzLmlzT3BlbiAmJiAoXG4gICAgICAgIDxNb2RhbEZpbGVFeGNlZWRzXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogZmFsc2UsIGV4Y2x1ZGVkRmlsZXM6IFtdLCBleGNlZWRlZEZpbGVzOiBbXSwgZmlsZVNpemVzOiB7fSB9KX1cbiAgICAgICAgICBleGNsdWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2x1ZGVkRmlsZXN9XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNlZWRlZEZpbGVzfVxuICAgICAgICAgIGZpbGVTaXplcz17bW9kYWxQcm9wcy5maWxlU2l6ZXN9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge3BvcG92ZXJOb2RlICYmIGNyZWF0ZVBvcnRhbChwb3BvdmVyTm9kZSwgZG9jdW1lbnQuYm9keSl9XG4gICAgICB7c2hvd1NsYXNoRHJvcGRvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxTbGFzaENvbW1hbmREcm9wZG93blxuICAgICAgICAgICAgY29tbWFuZHM9e3NsYXNoQ29tbWFuZHN9XG4gICAgICAgICAgICBxdWVyeT17c2xhc2hRdWVyeX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVTZWxlY3RTbGFzaENvbW1hbmR9XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd259XG4gICAgICAgICAgICBib3R0b209e3NsYXNoRHJvcGRvd25Qb3MuYm90dG9tfVxuICAgICAgICAgICAgbGVmdD17c2xhc2hEcm9wZG93blBvcy5sZWZ0fVxuICAgICAgICAgICAgbWF4SGVpZ2h0PXtzbGFzaERyb3Bkb3duUG9zLm1heEhlaWdodH1cbiAgICAgICAgICAgIHpJbmRleD17c2xhc2hEcm9wZG93blpJbmRleH1cbiAgICAgICAgICAgIGFuY2hvclJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgICAvPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5XG4gICAgICAgICl9XG4gICAgICB7c2hvd1NraWxsc0Ryb3Bkb3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8U2tpbGxzRHJvcGRvd25cbiAgICAgICAgICAgIHNraWxscz17c2tpbGxzfVxuICAgICAgICAgICAgcXVlcnk9e3NraWxsc1F1ZXJ5fVxuICAgICAgICAgICAgbG9hZGluZz17c2tpbGxzTG9hZGluZ31cbiAgICAgICAgICAgIGVycm9yPXtza2lsbHNFcnJvcn1cbiAgICAgICAgICAgIGNhbkNyZWF0ZT17Y2FuQ3JlYXRlU2tpbGxzRnJvbUlucHV0KHNob3dTa2lsbHNCdXR0b24sIHVzZXI/LmNvbXBhbnlfaWQpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdFNraWxsfVxuICAgICAgICAgICAgb25DcmVhdGU9e2hhbmRsZUNyZWF0ZVNraWxsfVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VTa2lsbHNEcm9wZG93bn1cbiAgICAgICAgICAgIGJvdHRvbT17c2tpbGxzRHJvcGRvd25Qb3MuYm90dG9tfVxuICAgICAgICAgICAgbGVmdD17c2tpbGxzRHJvcGRvd25Qb3MubGVmdH1cbiAgICAgICAgICAgIG1heEhlaWdodD17c2tpbGxzRHJvcGRvd25Qb3MubWF4SGVpZ2h0fVxuICAgICAgICAgICAgekluZGV4PXtzbGFzaERyb3Bkb3duWkluZGV4fVxuICAgICAgICAgICAgYW5jaG9yUmVmPXt3cmFwcGVyUmVmfVxuICAgICAgICAgIC8+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHlcbiAgICAgICAgKX1cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FRRUEsV0FBVyxFQUNYQyxTQUFTLEVBQ1RDLGVBQWUsRUFDZkMsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLFFBQVEsUUFDSCxPQUFPO0FBQ2QsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsT0FBTyxRQUFRLGVBQWU7QUFDdkMsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUV0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
|