@projectcor/maia-components 2.45.0 → 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/br/index.js +26 -1
- package/lib/lang/en/index.js +26 -1
- package/lib/lang/es/index.js +26 -1
- package/lib/lang/fr/index.js +26 -1
- package/lib/services/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 +32 -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
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { renderHook } from '@testing-library/react';
|
|
2
|
+
import { useGlobalContext } from '../context/global-context';
|
|
3
|
+
import { useMentionAllowedTypes } from './useMentionAllowedTypes';
|
|
4
|
+
jest.mock('../context/global-context', function () {
|
|
5
|
+
return {
|
|
6
|
+
useGlobalContext: jest.fn()
|
|
7
|
+
};
|
|
8
|
+
});
|
|
9
|
+
var mockContext = useGlobalContext;
|
|
10
|
+
describe('useMentionAllowedTypes', function () {
|
|
11
|
+
it('gives the orchestrator all COR types', function () {
|
|
12
|
+
mockContext.mockReturnValue({
|
|
13
|
+
agent: {
|
|
14
|
+
type: 'orchestrator'
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
var _renderHook = renderHook(function () {
|
|
18
|
+
return useMentionAllowedTypes();
|
|
19
|
+
}),
|
|
20
|
+
result = _renderHook.result;
|
|
21
|
+
expect(result.current.allowedTypes).toEqual(['user', 'task', 'project', 'client']);
|
|
22
|
+
expect(result.current.defaultType).toBe('user');
|
|
23
|
+
});
|
|
24
|
+
it('derives custom agent types from COR connectors and MCP', function () {
|
|
25
|
+
mockContext.mockReturnValue({
|
|
26
|
+
agent: {
|
|
27
|
+
type: 'custom',
|
|
28
|
+
connectors: [{
|
|
29
|
+
group: 'COR',
|
|
30
|
+
slugs: ['tareas']
|
|
31
|
+
}, {
|
|
32
|
+
group: 'MCP',
|
|
33
|
+
slugs: ['jira']
|
|
34
|
+
}]
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
var _renderHook2 = renderHook(function () {
|
|
38
|
+
return useMentionAllowedTypes();
|
|
39
|
+
}),
|
|
40
|
+
result = _renderHook2.result;
|
|
41
|
+
expect(result.current.allowedTypes).toEqual(['user', 'task', 'mcp']);
|
|
42
|
+
});
|
|
43
|
+
it('restricts project clones to user and task', function () {
|
|
44
|
+
mockContext.mockReturnValue({
|
|
45
|
+
agent: {
|
|
46
|
+
type: 'clone',
|
|
47
|
+
entity: 'project'
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
var _renderHook3 = renderHook(function () {
|
|
51
|
+
return useMentionAllowedTypes();
|
|
52
|
+
}),
|
|
53
|
+
result = _renderHook3.result;
|
|
54
|
+
expect(result.current.allowedTypes).toEqual(['user', 'task']);
|
|
55
|
+
});
|
|
56
|
+
it('does not expose skills in @-mentions for global clones', function () {
|
|
57
|
+
mockContext.mockReturnValue({
|
|
58
|
+
agent: {
|
|
59
|
+
type: 'clone',
|
|
60
|
+
entity: 'global'
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
var _renderHook4 = renderHook(function () {
|
|
64
|
+
return useMentionAllowedTypes();
|
|
65
|
+
}),
|
|
66
|
+
result = _renderHook4.result;
|
|
67
|
+
expect(result.current).toEqual({
|
|
68
|
+
allowedTypes: [],
|
|
69
|
+
defaultType: 'user'
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
it('lets the override win for clone agents', function () {
|
|
73
|
+
mockContext.mockReturnValue({
|
|
74
|
+
agent: {
|
|
75
|
+
type: 'clone',
|
|
76
|
+
entity: 'project'
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
var _renderHook5 = renderHook(function () {
|
|
80
|
+
return useMentionAllowedTypes(['client']);
|
|
81
|
+
}),
|
|
82
|
+
result = _renderHook5.result;
|
|
83
|
+
expect(result.current).toEqual({
|
|
84
|
+
allowedTypes: ['client'],
|
|
85
|
+
defaultType: 'client'
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZW5kZXJIb29rIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJqZXN0IiwibW9jayIsImZuIiwibW9ja0NvbnRleHQiLCJkZXNjcmliZSIsIml0IiwibW9ja1JldHVyblZhbHVlIiwiYWdlbnQiLCJ0eXBlIiwiX3JlbmRlckhvb2siLCJyZXN1bHQiLCJleHBlY3QiLCJjdXJyZW50IiwiYWxsb3dlZFR5cGVzIiwidG9FcXVhbCIsImRlZmF1bHRUeXBlIiwidG9CZSIsImNvbm5lY3RvcnMiLCJncm91cCIsInNsdWdzIiwiX3JlbmRlckhvb2syIiwiZW50aXR5IiwiX3JlbmRlckhvb2szIiwiX3JlbmRlckhvb2s0IiwiX3JlbmRlckhvb2s1Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMuc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXJIb29rIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlTWVudGlvbkFsbG93ZWRUeXBlcyB9IGZyb20gJy4vdXNlTWVudGlvbkFsbG93ZWRUeXBlcydcblxuamVzdC5tb2NrKCcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0JywgKCkgPT4gKHtcbiAgdXNlR2xvYmFsQ29udGV4dDogamVzdC5mbigpLFxufSkpXG5cbmNvbnN0IG1vY2tDb250ZXh0ID0gdXNlR2xvYmFsQ29udGV4dCBhcyBqZXN0Lk1vY2tlZEZ1bmN0aW9uPHR5cGVvZiB1c2VHbG9iYWxDb250ZXh0PlxuXG5kZXNjcmliZSgndXNlTWVudGlvbkFsbG93ZWRUeXBlcycsICgpID0+IHtcbiAgaXQoJ2dpdmVzIHRoZSBvcmNoZXN0cmF0b3IgYWxsIENPUiB0eXBlcycsICgpID0+IHtcbiAgICBtb2NrQ29udGV4dC5tb2NrUmV0dXJuVmFsdWUoeyBhZ2VudDogeyB0eXBlOiAnb3JjaGVzdHJhdG9yJyB9IH0gYXMgbmV2ZXIpXG4gICAgY29uc3QgeyByZXN1bHQgfSA9IHJlbmRlckhvb2soKCkgPT4gdXNlTWVudGlvbkFsbG93ZWRUeXBlcygpKVxuICAgIGV4cGVjdChyZXN1bHQuY3VycmVudC5hbGxvd2VkVHlwZXMpLnRvRXF1YWwoWyd1c2VyJywgJ3Rhc2snLCAncHJvamVjdCcsICdjbGllbnQnXSlcbiAgICBleHBlY3QocmVzdWx0LmN1cnJlbnQuZGVmYXVsdFR5cGUpLnRvQmUoJ3VzZXInKVxuICB9KVxuXG4gIGl0KCdkZXJpdmVzIGN1c3RvbSBhZ2VudCB0eXBlcyBmcm9tIENPUiBjb25uZWN0b3JzIGFuZCBNQ1AnLCAoKSA9PiB7XG4gICAgbW9ja0NvbnRleHQubW9ja1JldHVyblZhbHVlKHtcbiAgICAgIGFnZW50OiB7XG4gICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICBjb25uZWN0b3JzOiBbXG4gICAgICAgICAgeyBncm91cDogJ0NPUicsIHNsdWdzOiBbJ3RhcmVhcyddIH0sXG4gICAgICAgICAgeyBncm91cDogJ01DUCcsIHNsdWdzOiBbJ2ppcmEnXSB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9IGFzIG5ldmVyKVxuXG4gICAgY29uc3QgeyByZXN1bHQgfSA9IHJlbmRlckhvb2soKCkgPT4gdXNlTWVudGlvbkFsbG93ZWRUeXBlcygpKVxuICAgIGV4cGVjdChyZXN1bHQuY3VycmVudC5hbGxvd2VkVHlwZXMpLnRvRXF1YWwoWyd1c2VyJywgJ3Rhc2snLCAnbWNwJ10pXG4gIH0pXG5cbiAgaXQoJ3Jlc3RyaWN0cyBwcm9qZWN0IGNsb25lcyB0byB1c2VyIGFuZCB0YXNrJywgKCkgPT4ge1xuICAgIG1vY2tDb250ZXh0Lm1vY2tSZXR1cm5WYWx1ZSh7IGFnZW50OiB7IHR5cGU6ICdjbG9uZScsIGVudGl0eTogJ3Byb2plY3QnIH0gfSBhcyBuZXZlcilcbiAgICBjb25zdCB7IHJlc3VsdCB9ID0gcmVuZGVySG9vaygoKSA9PiB1c2VNZW50aW9uQWxsb3dlZFR5cGVzKCkpXG4gICAgZXhwZWN0KHJlc3VsdC5jdXJyZW50LmFsbG93ZWRUeXBlcykudG9FcXVhbChbJ3VzZXInLCAndGFzayddKVxuICB9KVxuXG4gIGl0KCdkb2VzIG5vdCBleHBvc2Ugc2tpbGxzIGluIEAtbWVudGlvbnMgZm9yIGdsb2JhbCBjbG9uZXMnLCAoKSA9PiB7XG4gICAgbW9ja0NvbnRleHQubW9ja1JldHVyblZhbHVlKHsgYWdlbnQ6IHsgdHlwZTogJ2Nsb25lJywgZW50aXR5OiAnZ2xvYmFsJyB9IH0gYXMgbmV2ZXIpXG4gICAgY29uc3QgeyByZXN1bHQgfSA9IHJlbmRlckhvb2soKCkgPT4gdXNlTWVudGlvbkFsbG93ZWRUeXBlcygpKVxuICAgIGV4cGVjdChyZXN1bHQuY3VycmVudCkudG9FcXVhbCh7IGFsbG93ZWRUeXBlczogW10sIGRlZmF1bHRUeXBlOiAndXNlcicgfSlcbiAgfSlcblxuICBpdCgnbGV0cyB0aGUgb3ZlcnJpZGUgd2luIGZvciBjbG9uZSBhZ2VudHMnLCAoKSA9PiB7XG4gICAgbW9ja0NvbnRleHQubW9ja1JldHVyblZhbHVlKHsgYWdlbnQ6IHsgdHlwZTogJ2Nsb25lJywgZW50aXR5OiAncHJvamVjdCcgfSB9IGFzIG5ldmVyKVxuICAgIGNvbnN0IHsgcmVzdWx0IH0gPSByZW5kZXJIb29rKCgpID0+IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMoWydjbGllbnQnXSkpXG4gICAgZXhwZWN0KHJlc3VsdC5jdXJyZW50KS50b0VxdWFsKHsgYWxsb3dlZFR5cGVzOiBbJ2NsaWVudCddLCBkZWZhdWx0VHlwZTogJ2NsaWVudCcgfSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVUsUUFBUSx3QkFBd0I7QUFDbkQsU0FBU0MsZ0JBQWdCLFFBQVEsMkJBQTJCO0FBQzVELFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUVqRUMsSUFBSSxDQUFDQyxJQUFJLENBQUMs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
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { getAtRunTabTypes, getTypeFromTriggerSequence } from '../utils/contextMentionTriggers';
|
|
2
|
+
export var resolveMentionTriggerSelection = function resolveMentionTriggerSelection(trigger, allowedTypes, defaultType) {
|
|
3
|
+
if (!trigger.active || allowedTypes.length === 0) return null;
|
|
4
|
+
var atRunTabTypes = getAtRunTabTypes(allowedTypes);
|
|
5
|
+
var atRunTypesOrAll = atRunTabTypes.length > 0 ? atRunTabTypes : allowedTypes;
|
|
6
|
+
var isSlashTrigger = trigger.atRunLength < 0;
|
|
7
|
+
if (isSlashTrigger) {
|
|
8
|
+
return {
|
|
9
|
+
activeType: getTypeFromTriggerSequence(trigger.atRunLength, allowedTypes, defaultType),
|
|
10
|
+
effectiveQuery: trigger.query
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
var overflowAtCount = Math.max(0, trigger.atRunLength - atRunTabTypes.length);
|
|
14
|
+
var effectiveAtRunLength = Math.min(trigger.atRunLength, atRunTypesOrAll.length);
|
|
15
|
+
return {
|
|
16
|
+
activeType: getTypeFromTriggerSequence(effectiveAtRunLength, atRunTypesOrAll, defaultType),
|
|
17
|
+
effectiveQuery: "".concat('@'.repeat(overflowAtCount)).concat(trigger.query)
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export var mapMentionItemToContext = function mapMentionItemToContext(item) {
|
|
21
|
+
var _item$raw$clientId, _item$raw$clientName, _item$raw$projectName, _item$raw$feeId, _item$raw$fatherId, _item$raw$fatherTitle, _item$raw$totalProyec, _item$raw$name, _item$raw$picture, _item$raw$positionNam, _item$raw$email;
|
|
22
|
+
return {
|
|
23
|
+
id: item.id,
|
|
24
|
+
type: item.type,
|
|
25
|
+
label: item.primary,
|
|
26
|
+
metadata: {
|
|
27
|
+
clientId: (_item$raw$clientId = item.raw.clientId) !== null && _item$raw$clientId !== void 0 ? _item$raw$clientId : null,
|
|
28
|
+
clientName: (_item$raw$clientName = item.raw.clientName) !== null && _item$raw$clientName !== void 0 ? _item$raw$clientName : null,
|
|
29
|
+
projectName: (_item$raw$projectName = item.raw.projectName) !== null && _item$raw$projectName !== void 0 ? _item$raw$projectName : null,
|
|
30
|
+
feeId: (_item$raw$feeId = item.raw.feeId) !== null && _item$raw$feeId !== void 0 ? _item$raw$feeId : null,
|
|
31
|
+
fatherId: (_item$raw$fatherId = item.raw.fatherId) !== null && _item$raw$fatherId !== void 0 ? _item$raw$fatherId : null,
|
|
32
|
+
fatherTitle: (_item$raw$fatherTitle = item.raw.fatherTitle) !== null && _item$raw$fatherTitle !== void 0 ? _item$raw$fatherTitle : null,
|
|
33
|
+
totalProyectos: (_item$raw$totalProyec = item.raw.totalProyectos) !== null && _item$raw$totalProyec !== void 0 ? _item$raw$totalProyec : null,
|
|
34
|
+
name: (_item$raw$name = item.raw.name) !== null && _item$raw$name !== void 0 ? _item$raw$name : null,
|
|
35
|
+
picture: (_item$raw$picture = item.raw.picture) !== null && _item$raw$picture !== void 0 ? _item$raw$picture : null,
|
|
36
|
+
positionName: (_item$raw$positionNam = item.raw.positionName) !== null && _item$raw$positionNam !== void 0 ? _item$raw$positionNam : null,
|
|
37
|
+
email: (_item$raw$email = item.raw.email) !== null && _item$raw$email !== void 0 ? _item$raw$email : null
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRBdFJ1blRhYlR5cGVzIiwiZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UiLCJyZXNvbHZlTWVudGlvblRyaWdnZXJTZWxlY3Rpb24iLCJ0cmlnZ2VyIiwiYWxsb3dlZFR5cGVzIiwiZGVmYXVsdFR5cGUiLCJhY3RpdmUiLCJsZW5ndGgiLCJhdFJ1blRhYlR5cGVzIiwiYXRSdW5UeXBlc09yQWxsIiwiaXNTbGFzaFRyaWdnZXIiLCJhdFJ1bkxlbmd0aCIsImFjdGl2ZVR5cGUiLCJlZmZlY3RpdmVRdWVyeSIsInF1ZXJ5Iiwib3ZlcmZsb3dBdENvdW50IiwiTWF0aCIsIm1heCIsImVmZmVjdGl2ZUF0UnVuTGVuZ3RoIiwibWluIiwiY29uY2F0IiwicmVwZWF0IiwibWFwTWVudGlvbkl0ZW1Ub0NvbnRleHQiLCJpdGVtIiwiX2l0ZW0kcmF3JGNsaWVudElkIiwiX2l0ZW0kcmF3JGNsaWVudE5hbWUiLCJfaXRlbSRyYXckcHJvamVjdE5hbWUiLCJfaXRlbSRyYXckZmVlSWQiLCJfaXRlbSRyYXckZmF0aGVySWQiLCJfaXRlbSRyYXckZmF0aGVyVGl0bGUiLCJfaXRlbSRyYXckdG90YWxQcm95ZWMiLCJfaXRlbSRyYXckbmFtZSIsIl9pdGVtJHJhdyRwaWN0dXJlIiwiX2l0ZW0kcmF3JHBvc2l0aW9uTmFtIiwiX2l0ZW0kcmF3JGVtYWlsIiwiaWQiLCJ0eXBlIiwibGFiZWwiLCJwcmltYXJ5IiwibWV0YWRhdGEiLCJjbGllbnRJZCIsInJhdyIsImNsaWVudE5hbWUiLCJwcm9qZWN0TmFtZSIsImZlZUlkIiwiZmF0aGVySWQiLCJmYXRoZXJUaXRsZSIsInRvdGFsUHJveWVjdG9zIiwibmFtZSIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJlbWFpbCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW50aW9uUG9wb3Zlci5oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lbnRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBnZXRBdFJ1blRhYlR5cGVzLCBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSB9IGZyb20gJy4uL3V0aWxzL2NvbnRleHRNZW50aW9uVHJpZ2dlcnMnXG5cbmV4cG9ydCB0eXBlIE1lbnRpb25UcmlnZ2VySW5wdXQgPSB7XG4gIGFjdGl2ZTogYm9vbGVhblxuICBxdWVyeTogc3RyaW5nXG4gIGF0UnVuTGVuZ3RoOiBudW1iZXJcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVNZW50aW9uVHJpZ2dlclNlbGVjdGlvbiA9IChcbiAgdHJpZ2dlcjogTWVudGlvblRyaWdnZXJJbnB1dCxcbiAgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdLFxuICBkZWZhdWx0VHlwZTogQ29udGV4dEVudGl0eVR5cGVcbik6IHsgYWN0aXZlVHlwZTogQ29udGV4dEVudGl0eVR5cGU7IGVmZmVjdGl2ZVF1ZXJ5OiBzdHJpbmcgfSB8IG51bGwgPT4ge1xuICBpZiAoIXRyaWdnZXIuYWN0aXZlIHx8IGFsbG93ZWRUeXBlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG5cbiAgY29uc3QgYXRSdW5UYWJUeXBlcyA9IGdldEF0UnVuVGFiVHlwZXMoYWxsb3dlZFR5cGVzKVxuICBjb25zdCBhdFJ1blR5cGVzT3JBbGwgPSBhdFJ1blRhYlR5cGVzLmxlbmd0aCA+IDAgPyBhdFJ1blRhYlR5cGVzIDogYWxsb3dlZFR5cGVzXG4gIGNvbnN0IGlzU2xhc2hUcmlnZ2VyID0gdHJpZ2dlci5hdFJ1bkxlbmd0aCA8IDBcblxuICBpZiAoaXNTbGFzaFRyaWdnZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlVHlwZTogZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UodHJpZ2dlci5hdFJ1bkxlbmd0aCwgYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSksXG4gICAgICBlZmZlY3RpdmVRdWVyeTogdHJpZ2dlci5xdWVyeSxcbiAgICB9XG4gIH1cblxuICBjb25zdCBvdmVyZmxvd0F0Q291bnQgPSBNYXRoLm1heCgwLCB0cmlnZ2VyLmF0UnVuTGVuZ3RoIC0gYXRSdW5UYWJUeXBlcy5sZW5ndGgpXG4gIGNvbnN0IGVmZmVjdGl2ZUF0UnVuTGVuZ3RoID0gTWF0aC5taW4odHJpZ2dlci5hdFJ1bkxlbmd0aCwgYXRSdW5UeXBlc09yQWxsLmxlbmd0aClcblxuICByZXR1cm4ge1xuICAgIGFjdGl2ZVR5cGU6IGdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlKGVmZmVjdGl2ZUF0UnVuTGVuZ3RoLCBhdFJ1blR5cGVzT3JBbGwsIGRlZmF1bHRUeXBlKSxcbiAgICBlZmZlY3RpdmVRdWVyeTogYCR7J0AnLnJlcGVhdChvdmVyZmxvd0F0Q291bnQpfSR7dHJpZ2dlci5xdWVyeX1gLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtYXBNZW50aW9uSXRlbVRvQ29udGV4dCA9IChpdGVtOiBDb250ZXh0TWVudGlvbkl0ZW0pOiBDb250ZXh0TWVudGlvbiA9PiAoe1xuICBpZDogaXRlbS5pZCxcbiAgdHlwZTogaXRlbS50eXBlLFxuICBsYWJlbDogaXRlbS5wcmltYXJ5LFxuICBtZXRhZGF0YToge1xuICAgIGNsaWVudElkOiBpdGVtLnJhdy5jbGllbnRJZCA/PyBudWxsLFxuICAgIGNsaWVudE5hbWU6IGl0ZW0ucmF3LmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICBwcm9qZWN0TmFtZTogaXRlbS5yYXcucHJvamVjdE5hbWUgPz8gbnVsbCxcbiAgICBmZWVJZDogaXRlbS5yYXcuZmVlSWQgPz8gbnVsbCxcbiAgICBmYXRoZXJJZDogaXRlbS5yYXcuZmF0aGVySWQgPz8gbnVsbCxcbiAgICBmYXRoZXJUaXRsZTogaXRlbS5yYXcuZmF0aGVyVGl0bGUgPz8gbnVsbCxcbiAgICB0b3RhbFByb3llY3RvczogaXRlbS5yYXcudG90YWxQcm95ZWN0b3MgPz8gbnVsbCxcbiAgICBuYW1lOiBpdGVtLnJhdy5uYW1lID8/IG51bGwsXG4gICAgcGljdHVyZTogaXRlbS5yYXcucGljdHVyZSA/PyBudWxsLFxuICAgIHBvc2l0aW9uTmFtZTogaXRlbS5yYXcucG9zaXRpb25OYW1lID8/IG51bGwsXG4gICAgZW1haWw6IGl0ZW0ucmF3LmVtYWlsID8/IG51bGwsXG4gIH0sXG59KVxuIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxnQkFBZ0IsRUFBRUMsMEJBQTBCLFFBQVEsaUNBQWlDO0FBUTlGLE9BQU8sSUFBTUMsOEJBQThCLEdBQUcsU0FBakNBLDhCQUE4QkEsQ0FDekNDLE9BQTRCLEVBQzVCQyxZQUFpQyxFQUNqQ0MsV0FBOEIsRUFDdUM7RUFDckUsSUFBSSxDQUFDRixPQUFPLENBQUNHLE1BQU0sSUFBSUYsWUFBWSxDQUFDRyxNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUU3RCxJQUFNQyxhQUFhLEdBQUdSLGdCQUFnQixDQUFDSSxZQUFZLENBQUM7RUFDcEQsSUFBTUssZUFBZSxHQUFHRCxhQUFhLENBQUNELE1BQU0sR0FBRyxDQUFDLEdBQUdDLGFBQWEsR0FBR0osWUFBWTtFQUMvRSxJQUFNTSxjQUFjLEdBQUdQLE9BQU8sQ0FBQ1EsV0FBVyxHQUFHLENBQUM7RUFFOUMsSUFBSUQsY0FBYyxFQUFFO0lBQ2xCLE9BQU87TUFDTEUsVUFBVSxFQUFFWCwwQkFBMEIsQ0FBQ0UsT0FBTyxDQUFDUSxXQUFXLEVBQUVQLFlBQVksRUFBRUMsV0FBVyxDQUFDO01BQ3RGUSxjQUFjLEVBQUVWLE9BQU8sQ0FBQ1c7SUFDMUIsQ0FBQztFQUNIO0VBRUEsSUFBTUMsZUFBZSxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVkLE9BQU8sQ0FBQ1EsV0FBVyxHQUFHSCxhQUFhLENBQUNELE1BQU0sQ0FBQztFQUMvRSxJQUFNVyxvQkFBb0IsR0FBR0YsSUFBSSxDQUFDRyxHQUFHLENBQUNoQixPQUFPLENBQUNRLFdBQVcsRUFBRUYsZUFBZSxDQUFDRixNQUFNLENBQUM7RUFFbEYsT0FBTztJQUNMSyxVQUFVLEVBQUVY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
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { mapMentionItemToContext, resolveMentionTriggerSelection } from './useMentionPopover.helpers';
|
|
2
|
+
describe('useMentionPopover.helpers', function () {
|
|
3
|
+
describe('resolveMentionTriggerSelection', function () {
|
|
4
|
+
var allowedTypes = ['user', 'task', 'project', 'client'];
|
|
5
|
+
it('returns null when trigger is inactive or no tabs are allowed', function () {
|
|
6
|
+
expect(resolveMentionTriggerSelection({
|
|
7
|
+
active: false,
|
|
8
|
+
query: 'a',
|
|
9
|
+
atRunLength: 1
|
|
10
|
+
}, [].concat(allowedTypes), 'user')).toBeNull();
|
|
11
|
+
expect(resolveMentionTriggerSelection({
|
|
12
|
+
active: true,
|
|
13
|
+
query: 'a',
|
|
14
|
+
atRunLength: 1
|
|
15
|
+
}, [], 'user')).toBeNull();
|
|
16
|
+
});
|
|
17
|
+
it('maps a single @ to the user tab', function () {
|
|
18
|
+
expect(resolveMentionTriggerSelection({
|
|
19
|
+
active: true,
|
|
20
|
+
query: 'ana',
|
|
21
|
+
atRunLength: 1
|
|
22
|
+
}, [].concat(allowedTypes), 'user')).toEqual({
|
|
23
|
+
activeType: 'user',
|
|
24
|
+
effectiveQuery: 'ana'
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
it('maps @@ to the task tab', function () {
|
|
28
|
+
expect(resolveMentionTriggerSelection({
|
|
29
|
+
active: true,
|
|
30
|
+
query: 'bug',
|
|
31
|
+
atRunLength: 2
|
|
32
|
+
}, [].concat(allowedTypes), 'user')).toEqual({
|
|
33
|
+
activeType: 'task',
|
|
34
|
+
effectiveQuery: 'bug'
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
it('supports slash triggers for MCP tabs', function () {
|
|
38
|
+
expect(resolveMentionTriggerSelection({
|
|
39
|
+
active: true,
|
|
40
|
+
query: 'jira',
|
|
41
|
+
atRunLength: -2
|
|
42
|
+
}, ['user', 'mcp'], 'user')).toEqual({
|
|
43
|
+
activeType: 'mcp',
|
|
44
|
+
effectiveQuery: 'jira'
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('mapMentionItemToContext', function () {
|
|
49
|
+
it('maps search items into mention payloads', function () {
|
|
50
|
+
expect(mapMentionItemToContext({
|
|
51
|
+
id: 'u1',
|
|
52
|
+
type: 'user',
|
|
53
|
+
primary: 'Ana',
|
|
54
|
+
raw: {
|
|
55
|
+
id: 'u1',
|
|
56
|
+
name: 'Ana',
|
|
57
|
+
email: 'ana@test.com'
|
|
58
|
+
}
|
|
59
|
+
})).toEqual({
|
|
60
|
+
id: 'u1',
|
|
61
|
+
type: 'user',
|
|
62
|
+
label: 'Ana',
|
|
63
|
+
metadata: expect.objectContaining({
|
|
64
|
+
name: 'Ana',
|
|
65
|
+
email: 'ana@test.com'
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXBNZW50aW9uSXRlbVRvQ29udGV4dCIsInJlc29sdmVNZW50aW9uVHJpZ2dlclNlbGVjdGlvbiIsImRlc2NyaWJlIiwiYWxsb3dlZFR5cGVzIiwiaXQiLCJleHBlY3QiLCJhY3RpdmUiLCJxdWVyeSIsImF0UnVuTGVuZ3RoIiwiY29uY2F0IiwidG9CZU51bGwiLCJ0b0VxdWFsIiwiYWN0aXZlVHlwZSIsImVmZmVjdGl2ZVF1ZXJ5IiwiaWQiLCJ0eXBlIiwicHJpbWFyeSIsInJhdyIsIm5hbWUiLCJlbWFpbCIsImxhYmVsIiwibWV0YWRhdGEiLCJvYmplY3RDb250YWluaW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZU1lbnRpb25Qb3BvdmVyLmhlbHBlcnMuc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXBNZW50aW9uSXRlbVRvQ29udGV4dCwgcmVzb2x2ZU1lbnRpb25UcmlnZ2VyU2VsZWN0aW9uIH0gZnJvbSAnLi91c2VNZW50aW9uUG9wb3Zlci5oZWxwZXJzJ1xuXG5kZXNjcmliZSgndXNlTWVudGlvblBvcG92ZXIuaGVscGVycycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3Jlc29sdmVNZW50aW9uVHJpZ2dlclNlbGVjdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBbJ3VzZXInLCAndGFzaycsICdwcm9qZWN0JywgJ2NsaWVudCddIGFzIGNvbnN0XG5cbiAgICBpdCgncmV0dXJucyBudWxsIHdoZW4gdHJpZ2dlciBpcyBpbmFjdGl2ZSBvciBubyB0YWJzIGFyZSBhbGxvd2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KFxuICAgICAgICByZXNvbHZlTWVudGlvblRyaWdnZXJTZWxlY3Rpb24oeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJ2EnLCBhdFJ1bkxlbmd0aDogMSB9LCBbLi4uYWxsb3dlZFR5cGVzXSwgJ3VzZXInKVxuICAgICAgKS50b0JlTnVsbCgpXG4gICAgICBleHBlY3QocmVzb2x2ZU1lbnRpb25UcmlnZ2VyU2VsZWN0aW9uKHsgYWN0aXZlOiB0cnVlLCBxdWVyeTogJ2EnLCBhdFJ1bkxlbmd0aDogMSB9LCBbXSwgJ3VzZXInKSkudG9CZU51bGwoKVxuICAgIH0pXG5cbiAgICBpdCgnbWFwcyBhIHNpbmdsZSBAIHRvIHRoZSB1c2VyIHRhYicsICgpID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgcmVzb2x2ZU1lbnRpb25UcmlnZ2VyU2VsZWN0aW9uKHsgYWN0aXZlOiB0cnVlLCBxdWVyeTogJ2FuYScsIGF0UnVuTGVuZ3RoOiAxIH0sIFsuLi5hbGxvd2VkVHlwZXNdLCAndXNlcicpXG4gICAgICApLnRvRXF1YWwoe1xuICAgICAgICBhY3RpdmVUeXBlOiAndXNlcicsXG4gICAgICAgIGVmZmVjdGl2ZVF1ZXJ5OiAnYW5hJyxcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIGl0KCdtYXBzIEBAIHRvIHRoZSB0YXNrIHRhYicsICgpID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgcmVzb2x2ZU1lbnRpb25UcmlnZ2VyU2VsZWN0aW9uKHsgYWN0aXZlOiB0cnVlLCBxdWVyeTogJ2J1ZycsIGF0UnVuTGVuZ3RoOiAyIH0sIFsuLi5hbGxvd2VkVHlwZXNdLCAndXNlcicpXG4gICAgICApLnRvRXF1YWwoe1xuICAgICAgICBhY3RpdmVUeXBlOiAndGFzaycsXG4gICAgICAgIGVmZmVjdGl2ZVF1ZXJ5OiAnYnVnJyxcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIGl0KCdzdXBwb3J0cyBzbGFzaCB0cmlnZ2VycyBmb3IgTUNQIHRhYnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIHJlc29sdmVNZW50aW9uVHJpZ2dlclNlbGVjdGlvbih7IGFjdGl2ZTogdHJ1ZSwgcXVlcnk6ICdqaXJhJywgYXRSdW5MZW5ndGg6IC0yIH0sIFsndXNlcicsICdtY3AnXSwgJ3VzZXInKVxuICAgICAgKS50b0VxdWFsKHtcbiAgICAgICAgYWN0aXZlVHlwZTogJ21jcCcsXG4gICAgICAgIGVmZmVjdGl2ZVF1ZXJ5OiAnamlyYScsXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ21hcE1lbnRpb25JdGVtVG9Db250ZXh0JywgKCkgPT4ge1xuICAgIGl0KCdtYXBzIHNlYXJjaCBpdGVtcyBpbnRvIG1lbnRpb24gcGF5bG9hZHMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIG1hcE1lbnRpb25JdGVtVG9Db250ZXh0KHtcbiAgICAgICAgICBpZDogJ3UxJyxcbiAgICAgICAgICB0eXBlOiAndXNlcicsXG4gICAgICAgICAgcHJpbWFyeTogJ0FuYScsXG4gICAgICAgICAgcmF3OiB7IGlkOiAndTEnLCBuYW1lOiAnQW5hJywgZW1haWw6ICdhbmFAdGVzdC5jb20nIH0sXG4gICAgICAgIH0pXG4gICAgICApLnRvRXF1YWwoe1xuICAgICAgICBpZDogJ3UxJyxcbiAgICAgICAgdHlwZTogJ3VzZXInLFxuICAgICAgICBsYWJlbDogJ0FuYScsXG4gICAgICAgIG1ldGFkYXRhOiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgbmFtZTogJ0FuYScsXG4gICAgICAgICAgZW1haWw6ICdhbmFAdGVzdC5jb20nLFxuICAgICAgICB9KSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLHVCQUF1QixFQUFFQyw4QkFBOEIsUUFBUSw2QkFBNkI7QUFFckdDLFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxZQUFNO0VBQzFDQSxRQUFRLENBQUMsZ0NBQWdDLEVBQUUsWUFBTTtJQUMvQyxJQUFNQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQVU7SUFFbkVDLEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxZQUFNO01BQ3ZFQyxNQUFNLENBQ0pKLDhCQUE4QixDQUFDO1FBQUVLLE1BQU0sRUFBRSxLQUFLO1FBQUVDLEtBQUssRUFBRSxHQUFHO1FBQUVDLFdBQVcsRUFBRTtNQUFFLENBQUMsS0FBQUMsTUFBQSxDQUFNTixZQUFZLEdBQUcsTUFBTSxDQUN6RyxDQUFDLENBQUNPLFFBQVEsQ0FBQyxDQUFDO01BQ1pMLE1BQU0sQ0FBQ0osOEJBQThCLENBQUM7UUFBRUssTUFBTSxFQUFFLElBQUk7UUFBRUMsS0FBSyxFQUFFLEdBQUc7UUFBRUMsV0FBVyxFQUFFO01BQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDRSxRQUFRLENBQUMsQ0FBQztJQUM3RyxDQUFDLENBQUM7SUFFRk4sRUFBRSxDQUFDLGlDQUFpQyxFQUFFLFlBQU07TUFDMUNDLE1BQU0sQ0FDSkosOEJBQThCLENBQUM7UUFBRUssTUFBTSxFQUFFLElBQUk7UUFBRUMsS0FBSyxFQUFFLEtBQUs7UUFBRUMsV0FBVyxFQUFFO01BQUUsQ0FBQyxLQUFBQyxNQUFBLENBQU1OLFlBQVksR0FBRyxNQUFNLENBQzFHLENBQUMsQ0FBQ1EsT0FBTyxDQUFDO1FBQ1JDLFVBQVUsRUFBRSxNQUFNO1FBQ2xCQyxjQUFjLEVBQUU7TUFDbEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUZULEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxZQUFNO01BQ2xDQyxNQUFNLENBQ0pKLDhCQUE4QixDQUFDO1FBQUVLLE1BQU0sRUFBRSxJQUFJO1FBQUVDLEtBQUssRUFBRSxLQUFLO1FBQUVDLFdBQVcsRUFBRTtNQUFFLENBQUMsS0FBQUMsTUFBQSxDQUFNTixZQUFZLEdBQUcsTUFBTSxDQUMxRyxDQUFDLENBQUNRLE9BQU8sQ0FBQztRQUNSQyxVQUFVLEVBQUUsTUFBTTtRQUNsQkMsY0FBYyxFQUFFO01BQ2xCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGVCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsWUFBTTtNQUMvQ0MsTUFBTSxDQUNKSiw4QkFBOEIsQ0FBQztRQUFFSyxNQUFNLEVBQUUsSUFBSTtRQUFFQyxLQUFLLEVBQUUsTUFBTTtRQUFFQyxXQUFXLEVBQUUsQ0FBQztNQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLENBQzFHLENBQUMsQ0FBQ0csT0FBTyxDQUFDO1FBQ1JDLFVBQVUsRUFBRSxLQUFLO1FBQ2pCQyxjQUFjLEVBQUU7TUFDbEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUZYLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxZQUFNO0lBQ3hDRSxFQUFFLENBQUMseUNBQXlDLEVBQUUsWUFBTTtNQUNsREMsTUFBTSxDQUNKTCx1QkFBdUIsQ0FBQztRQUN0QmMsRUFBRSxFQUFFLElBQUk7UUFDUkMsSUFBSSxFQUFFLE1BQU07UUFDWkMsT0FBTyxFQUFFLEtBQUs7UUFDZEMsR0FBRyxFQUFFO1VBQUVILEVBQUUsRUFBRSxJQUFJO1VBQUVJLElBQUksRUFBRSxLQUFLO1VBQUVDLEtBQUssRUFBRTtRQUFlO01BQ3RELENBQUMsQ0FDSCxDQUFDLENBQUNSLE9BQU8sQ0FBQztRQUNSRyxFQUFFLEVBQUUsSUFBSTtRQUNSQyxJQUFJLEVBQUUsTUFBTTtRQUNaSyxLQUFLLEVBQUUsS0FBSztRQUNaQyxRQUFRLEVBQUVoQixNQUFNLENBQUNpQixnQkFBZ0IsQ0FBQztVQUNoQ0osSUFBSSxFQUFFLEtBQUs7VUFDWEMsS0FBSyxFQUFFO1FBQ1QsQ0FBQztNQUNILENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -13,7 +13,8 @@ import { useEntitySearch } from './useEntitySearch';
|
|
|
13
13
|
import { useMentionAllowedTypes } from './useMentionAllowedTypes';
|
|
14
14
|
import { useCaretPosition } from './useCaretPosition';
|
|
15
15
|
import { EVENTS, useEvent } from './useEvent';
|
|
16
|
-
import {
|
|
16
|
+
import { getTriggerSequenceFromType } from '../utils/contextMentionTriggers';
|
|
17
|
+
import { mapMentionItemToContext, resolveMentionTriggerSelection } from './useMentionPopover.helpers';
|
|
17
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
19
|
var MENTION_POPOVER_GAP_PX = 4;
|
|
19
20
|
var MENTION_POPOVER_VIEWPORT_PAD_PX = 8;
|
|
@@ -146,20 +147,10 @@ export var useMentionPopover = function useMentionPopover(_ref4) {
|
|
|
146
147
|
return;
|
|
147
148
|
}
|
|
148
149
|
if (trigger.active) {
|
|
149
|
-
var
|
|
150
|
-
|
|
151
|
-
var
|
|
152
|
-
|
|
153
|
-
var effectiveQuery;
|
|
154
|
-
if (isSlashTrigger) {
|
|
155
|
-
typeFromAt = getTypeFromTriggerSequence(trigger.atRunLength, allowedTypes, defaultType);
|
|
156
|
-
effectiveQuery = trigger.query;
|
|
157
|
-
} else {
|
|
158
|
-
var overflowAtCount = Math.max(0, trigger.atRunLength - atRunTabTypes.length);
|
|
159
|
-
var effectiveAtRunLength = Math.min(trigger.atRunLength, atRunTypesOrAll.length);
|
|
160
|
-
effectiveQuery = "".concat('@'.repeat(overflowAtCount)).concat(trigger.query);
|
|
161
|
-
typeFromAt = getTypeFromTriggerSequence(effectiveAtRunLength, atRunTypesOrAll, defaultType);
|
|
162
|
-
}
|
|
150
|
+
var selection = resolveMentionTriggerSelection(trigger, allowedTypes, defaultType);
|
|
151
|
+
if (!selection) return;
|
|
152
|
+
var typeFromAt = selection.activeType,
|
|
153
|
+
effectiveQuery = selection.effectiveQuery;
|
|
163
154
|
if (!popoverOpen) {
|
|
164
155
|
setPopoverOpen(true);
|
|
165
156
|
setActiveType(typeFromAt);
|
|
@@ -180,25 +171,8 @@ export var useMentionPopover = function useMentionPopover(_ref4) {
|
|
|
180
171
|
}
|
|
181
172
|
}, [allowedTypes, defaultType, popoverOpen, positionPopover, updateSearchValue, event, close]);
|
|
182
173
|
var insertSelectedItem = useCallback(function (item) {
|
|
183
|
-
var
|
|
184
|
-
var mention =
|
|
185
|
-
id: item.id,
|
|
186
|
-
type: item.type,
|
|
187
|
-
label: item.primary,
|
|
188
|
-
metadata: {
|
|
189
|
-
clientId: (_item$raw$clientId = item.raw.clientId) !== null && _item$raw$clientId !== void 0 ? _item$raw$clientId : null,
|
|
190
|
-
clientName: (_item$raw$clientName = item.raw.clientName) !== null && _item$raw$clientName !== void 0 ? _item$raw$clientName : null,
|
|
191
|
-
projectName: (_item$raw$projectName = item.raw.projectName) !== null && _item$raw$projectName !== void 0 ? _item$raw$projectName : null,
|
|
192
|
-
feeId: (_item$raw$feeId = item.raw.feeId) !== null && _item$raw$feeId !== void 0 ? _item$raw$feeId : null,
|
|
193
|
-
fatherId: (_item$raw$fatherId = item.raw.fatherId) !== null && _item$raw$fatherId !== void 0 ? _item$raw$fatherId : null,
|
|
194
|
-
fatherTitle: (_item$raw$fatherTitle = item.raw.fatherTitle) !== null && _item$raw$fatherTitle !== void 0 ? _item$raw$fatherTitle : null,
|
|
195
|
-
totalProyectos: (_item$raw$totalProyec = item.raw.totalProyectos) !== null && _item$raw$totalProyec !== void 0 ? _item$raw$totalProyec : null,
|
|
196
|
-
name: (_item$raw$name = item.raw.name) !== null && _item$raw$name !== void 0 ? _item$raw$name : null,
|
|
197
|
-
picture: (_item$raw$picture = item.raw.picture) !== null && _item$raw$picture !== void 0 ? _item$raw$picture : null,
|
|
198
|
-
positionName: (_item$raw$positionNam = item.raw.positionName) !== null && _item$raw$positionNam !== void 0 ? _item$raw$positionNam : null,
|
|
199
|
-
email: (_item$raw$email = item.raw.email) !== null && _item$raw$email !== void 0 ? _item$raw$email : null
|
|
200
|
-
}
|
|
201
|
-
};
|
|
174
|
+
var _editorRef$current2;
|
|
175
|
+
var mention = mapMentionItemToContext(item);
|
|
202
176
|
(_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 || _editorRef$current2.insertMention(mention);
|
|
203
177
|
onMentionAdded === null || onMentionAdded === void 0 || onMentionAdded(mention);
|
|
204
178
|
event(EVENTS.aiChatMentionSelect, {
|
|
@@ -339,4 +313,4 @@ export var useMentionPopover = function useMentionPopover(_ref4) {
|
|
|
339
313
|
close: close
|
|
340
314
|
};
|
|
341
315
|
};
|
|
342
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIiLCJTQ01QQW5jaG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlRW50aXR5U2VhcmNoIiwidXNlTWVudGlvbkFsbG93ZWRUeXBlcyIsInVzZUNhcmV0UG9zaXRpb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldEF0UnVuVGFiVHlwZXMiLCJnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSIsImdldFR5cGVGcm9tVHJpZ2dlclNlcXVlbmNlIiwianN4IiwiX2pzeCIsIk1FTlRJT05fUE9QT1ZFUl9HQVBfUFgiLCJNRU5USU9OX1BPUE9WRVJfVklFV1BPUlRfUEFEX1BYIiwiTUVOVElPTl9QT1BPVkVSX0ZBTExCQUNLX1dJRFRIX1BYIiwidXNlRGVyaXZlZFNjb3BlIiwiX3JlZiIsIl9jdHgkY2xpZW50JGlkIiwiX2N0eCRjbGllbnQiLCJfY3R4JGVudGl0eVZhbHVlcyIsIl9yZWYyIiwiX3JlZjMiLCJfY3R4JHByb2plY3QkaWQiLCJfY3R4JHByb2plY3QiLCJfY3R4JGVudGl0eVZhbHVlczIiLCJfY3R4JGNoaXBzUHJvamVjdCIsIl9jdHgkYWdlbnQkZW50aXR5IiwiX2N0eCRhZ2VudCIsIl9jdHgkYWdlbnQkY29ubmVjdG9ycyIsIl9jdHgkYWdlbnQyIiwiY3R4IiwiY2xpZW50SWQiLCJjbGllbnQiLCJpZCIsImVudGl0eVZhbHVlcyIsInByb2plY3RJZCIsInByb2plY3QiLCJjaGlwc1Byb2plY3QiLCJhZ2VudEVudGl0eSIsImFnZW50IiwiZW50aXR5IiwibWNwU2x1Z3NLZXkiLCJjb25uZWN0b3JzIiwiZmluZCIsImMiLCJncm91cCIsInNsdWdzIiwiam9pbiIsIm1jcFNsdWdzIiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzMiIsIl9jdHgkYWdlbnQzIiwicmF3IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiU2V0IiwiZmlsdGVyIiwicyIsInRyaW0iLCJsZW5ndGgiLCJzb3J0IiwidXNlTWVudGlvblBvcG92ZXIiLCJfcmVmNCIsImVkaXRvclJlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJlbmFibGVkVHlwZXMiLCJvbk1lbnRpb25BZGRlZCIsIl91c2VUIiwidCIsImV2ZW50IiwiX3VzZU1lbnRpb25BbGxvd2VkVHlwIiwiYWxsb3dlZFR5cGVzIiwiZGVmYXVsdFR5cGUiLCJtZW50aW9uUG9wb3ZlclpJbmRleCIsInRvb2x0aXBaSW5kZXgiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3RpdmVUeXBlIiwic2V0QWN0aXZlVHlwZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9wb3Zlck9wZW4iLCJzZXRQb3BvdmVyT3BlbiIsIl91c2VTdGF0ZTUiLCJib3R0b20iLCJsZWZ0Iiwid2lkdGgiLCJfdXNlU3RhdGU2IiwicG9wb3ZlclBvcyIsInNldFBvcG92ZXJQb3MiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImlzS2V5Ym9hcmROYXZBY3RpdmUiLCJzZXRJc0tleWJvYXJkTmF2QWN0aXZlIiwiaGFzRW1pdHRlZE9wZW4iLCJwb3BvdmVyUmVmIiwiZ2V0Q2FyZXRSZWN0Iiwic2NvcGUiLCJfdXNlRW50aXR5U2VhcmNoIiwiaXRlbXMiLCJsb2FkaW5nIiwiZXJyb3IiLCJoaWRlUmVjZW50c0xhYmVsIiwiaGFzTW9yZSIsImlzTG9hZGluZ01vcmUiLCJsb2FkTW9yZSIsInNlYXJjaFZhbHVlIiwidXBkYXRlU2VhcmNoVmFsdWUiLCJpbmNsdWRlcyIsInBvc2l0aW9uUG9wb3ZlciIsIl9wb3BvdmVyQW5jaG9yUmVmJGN1ciIsIl9lZGl0b3JSZWYkY3VycmVudCRnZSIsIl9lZGl0b3JSZWYkY3VycmVudCIsIl9lZGl0b3JSZWYkY3VycmVudCRnZTIiLCJfY2FyZXQkdG9wIiwiZnJvbUFuY2hvciIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJmcm9tRWRpdG9yIiwiZ2V0RWRpdG9yQ2xpZW50UmVjdCIsImNhbGwiLCJ3aWR0aFJlY3QiLCJjYXJldCIsImxlZnRTb3VyY2UiLCJ0b3BTb3VyY2UiLCJ0b3AiLCJ2aWV3cG9ydFciLCJ3aW5kb3ciLCJpbm5lcldpZHRoIiwidmlld3BvcnRIIiwiaW5uZXJIZWlnaHQiLCJNYXRoIiwibWF4IiwibWluIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiY2xvc2UiLCJoYW5kbGVUcmlnZ2VyIiwidHJpZ2dlciIsImFjdGl2ZSIsImF0UnVuVGFiVHlwZXMiLCJhdFJ1blR5cGVzT3JBbGwiLCJpc1NsYXNoVHJpZ2dlciIsImF0UnVuTGVuZ3RoIiwidHlwZUZyb21BdCIsImVmZmVjdGl2ZVF1ZXJ5IiwicXVlcnkiLCJvdmVyZmxvd0F0Q291bnQiLCJlZmZlY3RpdmVBdFJ1bkxlbmd0aCIsImNvbmNhdCIsInJlcGVhdCIsImFpQ2hhdE1lbnRpb25PcGVuIiwidHlwZSIsImluc2VydFNlbGVjdGVkSXRlbSIsIml0ZW0iLCJfaXRlbSRyYXckY2xpZW50SWQiLCJfaXRlbSRyYXckY2xpZW50TmFtZSIsIl9pdGVtJHJhdyRwcm9qZWN0TmFtZSIsIl9pdGVtJHJhdyRmZWVJZCIsIl9pdGVtJHJhdyRmYXRoZXJJZCIsIl9pdGVtJHJhdyRmYXRoZXJUaXRsZSIsIl9pdGVtJHJhdyR0b3RhbFByb3llYyIsIl9pdGVtJHJhdyRuYW1lIiwiX2l0ZW0kcmF3JHBpY3R1cmUiLCJfaXRlbSRyYXckcG9zaXRpb25OYW0iLCJfaXRlbSRyYXckZW1haWwiLCJfZWRpdG9yUmVmJGN1cnJlbnQyIiwibWVudGlvbiIsImxhYmVsIiwicHJpbWFyeSIsIm1ldGFkYXRhIiwiY2xpZW50TmFtZSIsInByb2plY3ROYW1lIiwiZmVlSWQiLCJmYXRoZXJJZCIsImZhdGhlclRpdGxlIiwidG90YWxQcm95ZWN0b3MiLCJuYW1lIiwicGljdHVyZSIsInBvc2l0aW9uTmFtZSIsImVtYWlsIiwiaW5zZXJ0TWVudGlvbiIsImFpQ2hhdE1lbnRpb25TZWxlY3QiLCJTdHJpbmciLCJoYW5kbGVUeXBlQ2hhbmdlIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsInN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgiLCJhaUNoYXRNZW50aW9uVHlwZVN3aXRjaCIsImhhbmRsZUtleURvd24iLCJlIiwia2V5IiwicHJldmVudERlZmF1bHQiLCJtZXRhS2V5IiwiYWx0S2V5IiwiaWR4IiwiaW5kZXhPZiIsImRlbHRhIiwibmV4dElkeCIsInByZXYiLCJ1bmRlZmluZWQiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCJtb3VzZUV2ZW50IiwiX3BvcG92ZXJSZWYkY3VycmVudCIsIl9wb3BvdmVyQW5jaG9yUmVmJGN1cjIiLCJ0YXJnZXQiLCJjb250YWlucyIsImRvY3VtZW50IiwicHJldklzTG9hZGluZ01vcmVSZWYiLCJwb3BvdmVyTm9kZSIsIl9vYmplY3RTcHJlYWQiLCJyZWYiLCJfZGVmaW5lUHJvcGVydHkiLCIkYm90dG9tIiwiJGxlZnQiLCIkd2lkdGgiLCIkekluZGV4Iiwib25Nb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJjaGlsZHJlbiIsIm9uVHlwZUNoYW5nZSIsIm9uUmVhY2hMaXN0RW5kIiwia2V5Ym9hcmRIaW50IiwiZGVmYXVsdFZhbHVlIiwib25JdGVtU2VsZWN0ZWQiLCJvbkFjdGl2ZUluZGV4Q2hhbmdlIiwib25Nb3VzZU1vdmVJbkxpc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvblBvcG92ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleWJvYXJkRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuaW1wb3J0IHtcbiAgQ29udGV4dE1lbnRpb25Qb3BvdmVyLFxuICBNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSLFxuICBTQ01QQW5jaG9yLFxufSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuL3VzZVQnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBFbnRpdHlTZWFyY2hTY29wZSwgdXNlRW50aXR5U2VhcmNoIH0gZnJvbSAnLi91c2VFbnRpdHlTZWFyY2gnXG5pbXBvcnQgeyB1c2VNZW50aW9uQWxsb3dlZFR5cGVzIH0gZnJvbSAnLi91c2VNZW50aW9uQWxsb3dlZFR5cGVzJ1xuaW1wb3J0IHsgdXNlQ2FyZXRQb3NpdGlvbiB9IGZyb20gJy4vdXNlQ2FyZXRQb3NpdGlvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuL3VzZUV2ZW50J1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uLCBDb250ZXh0TWVudGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7XG4gIGdldEF0UnVuVGFiVHlwZXMsXG4gIGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlLFxuICBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSxcbn0gZnJvbSAnLi4vdXRpbHMvY29udGV4dE1lbnRpb25UcmlnZ2VycydcblxuY29uc3QgTUVOVElPTl9QT1BPVkVSX0dBUF9QWCA9IDRcbmNvbnN0IE1FTlRJT05fUE9QT1ZFUl9WSUVXUE9SVF9QQURfUFggPSA4XG5jb25zdCBNRU5USU9OX1BPUE9WRVJfRkFMTEJBQ0tfV0lEVEhfUFggPSAzMjBcblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvblBvcG92ZXJPcHRpb25zID0ge1xuICBlZGl0b3JSZWY6IFJlZk9iamVjdDxDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZT5cbiAgLyoqXG4gICAqIE5vZG8gY3V5byBhbmNobyB5IGFsaW5lYWNpw7NuIGhvcml6b250YWwgZGVmaW5lbiBlbCBwb3BvdmVyIChwLiBlai4gd3JhcHBlciBkZWwgaW5wdXQgZW4gTUFJQSkuXG4gICAqIEVsIGFuY2xhIHZlcnRpY2FsIGVzIGVsIGNhcmV0IC8gdGV4dG8gZGVsIHRyaWdnZXIgYEBgLiBTaSBubyBoYXkgY2FyZXQsIHNlIHVzYSBlbCBib3JkZSBzdXBlcmlvciBkZSBlc3RlIG5vZG8uXG4gICAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cbiAgLyoqIE92ZXJyaWRlIGRlbCBzZXQgZGUgdGFicyBwZXJtaXRpZGFzOyBzaSBubyBzZSBwYXNhIHNlIGRlcml2YSBkZWwgYWdlbnQuICovXG4gIGVuYWJsZWRUeXBlcz86IENvbnRleHRFbnRpdHlUeXBlW11cbiAgLyoqIENhbGxiYWNrIGN1YW5kbyBlbCB1c3VhcmlvIGluc2VydGEgdW5hIG1lbnRpb24gdsOtYSBjbGljay90ZWNsYWRvLiAqL1xuICBvbk1lbnRpb25BZGRlZD86IChtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3ZlclJldHVybiA9IHtcbiAgcG9wb3Zlck9wZW46IGJvb2xlYW5cbiAgLyoqXG4gICAqIFJlaW5pY2lhIGVsIHRyYWNraW5nIGRlIGBBSV9DSEFUX01FTlRJT05fT1BFTmAgKHByaW1lcmEgYXBlcnR1cmEgcG9yIG1lbnNhamUpLlxuICAgKiBMbGFtYXIgdHJhcyBlbnZpYXIgZWwgbWVuc2FqZSBvIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbi5cbiAgICovXG4gIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZzogKCkgPT4gdm9pZFxuICAvKiogUHJvY2VzYSBlbCB0cmlnZ2VyIHByb3ZlbmllbnRlIGRlbCBgQ29udGV4dE1lbnRpb25FZGl0b3Iub25JbnB1dGAuICovXG4gIGhhbmRsZVRyaWdnZXI6ICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBNYW5lam8gZGUgdGVjbGFzIHJlbGF0aXZhcyBhbCBwb3BvdmVyIChuYXZlZ2FjacOzbiwgc2VsZWNjacOzbiwgY2FtYmlvIGRlXG4gICAqIHRhYiB5IGVzY2FwZSkuIERldnVlbHZlIGB0cnVlYCBzaSBjb25zdW1pw7MgbGEga2V5LCBwYXJhIHF1ZSBlbCBjb25zdW1lclxuICAgKiBwdWVkYSBkZWNpZGlyIHNpIHNlZ3VpciBwcm9jZXNhbmRvIG90cmFzIHRlY2xhcyAocC5lai4gRW50ZXIgcGFyYSBlbnZpYXIpLlxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiBib29sZWFuXG4gIC8qKiBOb2RvIGRlbCBwb3BvdmVyOyBlbCBjb25zdW1lciBkZWJlIHBvcnRhcmxvIGNvbiBgY3JlYXRlUG9ydGFsYC4gKi9cbiAgcG9wb3Zlck5vZGU6IFJlYWN0Tm9kZSB8IG51bGxcbiAgLyoqIENpZXJyYSBlbCBwb3BvdmVyIHkgbGltcGlhIGVsIHF1ZXJ5LiAqL1xuICBjbG9zZTogKCkgPT4gdm9pZFxufVxuXG4vKipcbiAqIERlcml2YSBjbGllbnRJZCwgcHJvamVjdElkLCBhZ2VudEVudGl0eSB5IE1DUCBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwgKGluY2wuXG4gKiBgZW50aXR5VmFsdWVzYCB5IGBjaGlwc1Byb2plY3RgKSBwYXJhIGZpbHRyYXIgcmVjZW50cyB5IGLDunNxdWVkYSBHcmFwaFFMLlxuICovXG5jb25zdCB1c2VEZXJpdmVkU2NvcGUgPSAoKTogRW50aXR5U2VhcmNoU2NvcGUgPT4ge1xuICBjb25zdCBjdHggPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgY2xpZW50SWQgPSBjdHguY2xpZW50Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5jbGllbnRJZCA/PyBudWxsXG4gIGNvbnN0IHByb2plY3RJZCA9IGN0eC5wcm9qZWN0Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5wcm9qZWN0SWQgPz8gY3R4LmNoaXBzUHJvamVjdD8ucHJvamVjdElkID8/IG51bGxcbiAgY29uc3QgYWdlbnRFbnRpdHkgPSBjdHguYWdlbnQ/LmVudGl0eSA/PyBudWxsXG4gIGNvbnN0IG1jcFNsdWdzS2V5ID0gKGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW10pLmpvaW4oJ3wnKVxuXG4gIGNvbnN0IG1jcFNsdWdzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcmF3ID0gY3R4LmFnZW50Py5jb25uZWN0b3JzPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ01DUCcpPy5zbHVncyA/PyBbXVxuICAgIHJldHVybiBbLi4ubmV3IFNldChyYXcuZmlsdGVyKChzKTogcyBpcyBzdHJpbmcgPT4gdHlwZW9mIHMgPT09ICdzdHJpbmcnICYmIHMudHJpbSgpLmxlbmd0aCA+IDApKV0uc29ydCgpXG4gIH0sIFttY3BTbHVnc0tleV0pXG5cbiAgcmV0dXJuIHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+ICh7IGNsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzLCBhZ2VudEVudGl0eSB9KSxcbiAgICBbY2xpZW50SWQsIHByb2plY3RJZCwgbWNwU2x1Z3MsIGFnZW50RW50aXR5XVxuICApXG59XG5cbi8qKlxuICogRW5jYXBzdWxhIGxhIGzDs2dpY2EgZGVsIHBvcG92ZXIgZGUgQC1tZW50aW9ucyAoZXN0YWRvLCBmZXRjaCBwb3IgdGFiLCBhbmFseXRpY3MsXG4gKiBwb3NpY2lvbmFtaWVudG8pLiBFbCBjb25zdW1lciBtYW50aWVuZSBlbCBlZGl0b3IgeSBlbCBlbnbDrW8gZGVsIG1lbnNhamUuXG4gKiBMb3MgZmlsdHJvcyBkZSBiw7pzcXVlZGEgdXNhbiBgdXNlRGVyaXZlZFNjb3BlYDogZXNwZWNpYWxpc3RhIHByb3llY3RvIGFjb3RhIHRhcmVhc1xuICogYWwgYHByb2plY3RJZGAgZGVsIGNvbnRleHRvOyBlc3BlY2lhbGlzdGEgY2xpZW50ZSwgcHJveWVjdG9zIGFsIGBjbGllbnRJZGAgKGVuIGBleHRyYWAgZGUgc2VhcmNoKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU1lbnRpb25Qb3BvdmVyID0gKHtcbiAgZWRpdG9yUmVmLFxuICBwb3BvdmVyQW5jaG9yUmVmLFxuICBlbmFibGVkVHlwZXMsXG4gIG9uTWVudGlvbkFkZGVkLFxufTogVXNlTWVudGlvblBvcG92ZXJPcHRpb25zKTogVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlIH0gPSB1c2VNZW50aW9uQWxsb3dlZFR5cGVzKGVuYWJsZWRUeXBlcylcbiAgY29uc3QgbWVudGlvblBvcG92ZXJaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuICBjb25zdCBbYWN0aXZlVHlwZSwgc2V0QWN0aXZlVHlwZV0gPSB1c2VTdGF0ZTxDb250ZXh0RW50aXR5VHlwZT4oZGVmYXVsdFR5cGUpXG4gIGNvbnN0IFtwb3BvdmVyT3Blbiwgc2V0UG9wb3Zlck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwb3BvdmVyUG9zLCBzZXRQb3BvdmVyUG9zXSA9IHVzZVN0YXRlPHsgYm90dG9tOiBudW1iZXI7IGxlZnQ6IG51bWJlcjsgd2lkdGg6IG51bWJlciB9Pih7XG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgd2lkdGg6IDAsXG4gIH0pXG4gIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzS2V5Ym9hcmROYXZBY3RpdmUsIHNldElzS2V5Ym9hcmROYXZBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGhhc0VtaXR0ZWRPcGVuID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBwb3BvdmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZ2V0Q2FyZXRSZWN0ID0gdXNlQ2FyZXRQb3NpdGlvbigpXG5cbiAgY29uc3Qgc2NvcGUgPSB1c2VEZXJpdmVkU2NvcGUoKVxuICBjb25zdCB7IGl0ZW1zLCBsb2FkaW5nLCBlcnJvciwgaGlkZVJlY2VudHNMYWJlbCwgaGFzTW9yZSwgaXNMb2FkaW5nTW9yZSwgbG9hZE1vcmUsIHNlYXJjaFZhbHVlLCB1cGRhdGVTZWFyY2hWYWx1ZSB9ID1cbiAgICB1c2VFbnRpdHlTZWFyY2goYWN0aXZlVHlwZSwgc2NvcGUpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFsbG93ZWRUeXBlcy5pbmNsdWRlcyhhY3RpdmVUeXBlKSkge1xuICAgICAgc2V0QWN0aXZlVHlwZShkZWZhdWx0VHlwZSlcbiAgICB9XG4gIH0sIFthbGxvd2VkVHlwZXMsIGFjdGl2ZVR5cGUsIGRlZmF1bHRUeXBlXSlcblxuICBjb25zdCBwb3NpdGlvblBvcG92ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZnJvbUFuY2hvciA9IHBvcG92ZXJBbmNob3JSZWY/LmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgZnJvbUVkaXRvciA9IGVkaXRvclJlZi5jdXJyZW50Py5nZXRFZGl0b3JDbGllbnRSZWN0Py4oKSA/PyBudWxsXG4gICAgY29uc3Qgd2lkdGhSZWN0ID0gZnJvbUFuY2hvciA/PyBmcm9tRWRpdG9yXG4gICAgY29uc3QgY2FyZXQgPSBnZXRDYXJldFJlY3QoJ0AnKVxuXG4gICAgY29uc3Qgd2lkdGggPSB3aWR0aFJlY3QgJiYgd2lkdGhSZWN0LndpZHRoID4gMCA/IHdpZHRoUmVjdC53aWR0aCA6IE1FTlRJT05fUE9QT1ZFUl9GQUxMQkFDS19XSURUSF9QWFxuICAgIGNvbnN0IGxlZnRTb3VyY2UgPSB3aWR0aFJlY3QgJiYgd2lkdGhSZWN0LndpZHRoID4gMCA/IHdpZHRoUmVjdC5sZWZ0IDogY2FyZXQ/LmxlZnRcbiAgICBjb25zdCB0b3BTb3VyY2UgPSBjYXJldD8udG9wID8/ICh3aWR0aFJlY3QgJiYgd2lkdGhSZWN0LndpZHRoID4gMCA/IHdpZHRoUmVjdC50b3AgOiBudWxsKVxuXG4gICAgaWYgKGxlZnRTb3VyY2UgPT0gbnVsbCB8fCB0b3BTb3VyY2UgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heChcbiAgICAgIE1FTlRJT05fUE9QT1ZFUl9WSUVXUE9SVF9QQURfUFgsXG4gICAgICBNYXRoLm1pbih2aWV3cG9ydFcgLSB3aWR0aCAtIE1FTlRJT05fUE9QT1ZFUl9WSUVXUE9SVF9QQURfUFgsIGxlZnRTb3VyY2UpXG4gICAgKVxuXG4gICAgLyoqIEFuY2hvIGRlbCBpbnB1dDsgYm9yZGUgaW5mZXJpb3IgfjRweCBwb3IgZW5jaW1hIGRlbCBgQGAgcXVlIGFicmUgbGFzIG1lbmNpb25lcy4gKi9cbiAgICBzZXRQb3BvdmVyUG9zKHtcbiAgICAgIHdpZHRoLFxuICAgICAgbGVmdCxcbiAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gdG9wU291cmNlICsgTUVOVElPTl9QT1BPVkVSX0dBUF9QWCxcbiAgICB9KVxuICB9LCBbcG9wb3ZlckFuY2hvclJlZiwgZWRpdG9yUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIGNvbnN0IHJlc2V0TWVudGlvbk9wZW5UcmFja2luZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW10pXG5cbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UG9wb3Zlck9wZW4oZmFsc2UpXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUoJycpXG4gIH0sIFt1cGRhdGVTZWFyY2hWYWx1ZV0pXG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKFxuICAgICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB7XG4gICAgICBpZiAoYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAocG9wb3Zlck9wZW4pIGNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0cmlnZ2VyLmFjdGl2ZSkge1xuICAgICAgICBjb25zdCBhdFJ1blRhYlR5cGVzID0gZ2V0QXRSdW5UYWJUeXBlcyhhbGxvd2VkVHlwZXMpXG4gICAgICAgIGNvbnN0IGF0UnVuVHlwZXNPckFsbCA9IGF0UnVuVGFiVHlwZXMubGVuZ3RoID4gMCA/IGF0UnVuVGFiVHlwZXMgOiBhbGxvd2VkVHlwZXNcbiAgICAgICAgY29uc3QgaXNTbGFzaFRyaWdnZXIgPSB0cmlnZ2VyLmF0UnVuTGVuZ3RoIDwgMFxuXG4gICAgICAgIGxldCB0eXBlRnJvbUF0OiBDb250ZXh0RW50aXR5VHlwZVxuICAgICAgICBsZXQgZWZmZWN0aXZlUXVlcnk6IHN0cmluZ1xuXG4gICAgICAgIGlmIChpc1NsYXNoVHJpZ2dlcikge1xuICAgICAgICAgIHR5cGVGcm9tQXQgPSBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSh0cmlnZ2VyLmF0UnVuTGVuZ3RoLCBhbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlKVxuICAgICAgICAgIGVmZmVjdGl2ZVF1ZXJ5ID0gdHJpZ2dlci5xdWVyeVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG92ZXJmbG93QXRDb3VudCA9IE1hdGgubWF4KDAsIHRyaWdnZXIuYXRSdW5MZW5ndGggLSBhdFJ1blRhYlR5cGVzLmxlbmd0aClcbiAgICAgICAgICBjb25zdCBlZmZlY3RpdmVBdFJ1bkxlbmd0aCA9IE1hdGgubWluKHRyaWdnZXIuYXRSdW5MZW5ndGgsIGF0UnVuVHlwZXNPckFsbC5sZW5ndGgpXG4gICAgICAgICAgZWZmZWN0aXZlUXVlcnkgPSBgJHsnQCcucmVwZWF0KG92ZXJmbG93QXRDb3VudCl9JHt0cmlnZ2VyLnF1ZXJ5fWBcbiAgICAgICAgICB0eXBlRnJvbUF0ID0gZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UoZWZmZWN0aXZlQXRSdW5MZW5ndGgsIGF0UnVuVHlwZXNPckFsbCwgZGVmYXVsdFR5cGUpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgc2V0UG9wb3Zlck9wZW4odHJ1ZSlcbiAgICAgICAgICBzZXRBY3RpdmVUeXBlKHR5cGVGcm9tQXQpXG4gICAgICAgICAgcG9zaXRpb25Qb3BvdmVyKClcbiAgICAgICAgICBpZiAoIWhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uT3BlbiwgeyB0eXBlOiB0eXBlRnJvbUF0IH0pXG4gICAgICAgICAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRBY3RpdmVUeXBlKHR5cGVGcm9tQXQpXG4gICAgICAgICAgcG9zaXRpb25Qb3BvdmVyKClcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTZWFyY2hWYWx1ZShlZmZlY3RpdmVRdWVyeSlcbiAgICAgIH0gZWxzZSBpZiAocG9wb3Zlck9wZW4pIHtcbiAgICAgICAgY2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUsIHBvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXIsIHVwZGF0ZVNlYXJjaFZhbHVlLCBldmVudCwgY2xvc2VdXG4gIClcblxuICBjb25zdCBpbnNlcnRTZWxlY3RlZEl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbTogQ29udGV4dE1lbnRpb25JdGVtKSA9PiB7XG4gICAgICBjb25zdCBtZW50aW9uOiBDb250ZXh0TWVudGlvbiA9IHtcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcbiAgICAgICAgbGFiZWw6IGl0ZW0ucHJpbWFyeSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBjbGllbnRJZDogaXRlbS5yYXcuY2xpZW50SWQgPz8gbnVsbCxcbiAgICAgICAgICBjbGllbnROYW1lOiBpdGVtLnJhdy5jbGllbnROYW1lID8/IG51bGwsXG4gICAgICAgICAgcHJvamVjdE5hbWU6IGl0ZW0ucmF3LnByb2plY3ROYW1lID8/IG51bGwsXG4gICAgICAgICAgZmVlSWQ6IGl0ZW0ucmF3LmZlZUlkID8/IG51bGwsXG4gICAgICAgICAgZmF0aGVySWQ6IGl0ZW0ucmF3LmZhdGhlcklkID8/IG51bGwsXG4gICAgICAgICAgZmF0aGVyVGl0bGU6IGl0ZW0ucmF3LmZhdGhlclRpdGxlID8/IG51bGwsXG4gICAgICAgICAgdG90YWxQcm95ZWN0b3M6IGl0ZW0ucmF3LnRvdGFsUHJveWVjdG9zID8/IG51bGwsXG4gICAgICAgICAgbmFtZTogaXRlbS5yYXcubmFtZSA/PyBudWxsLFxuICAgICAgICAgIHBpY3R1cmU6IGl0ZW0ucmF3LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgICAgICBwb3NpdGlvbk5hbWU6IGl0ZW0ucmF3LnBvc2l0aW9uTmFtZSA/PyBudWxsLFxuICAgICAgICAgIGVtYWlsOiBpdGVtLnJhdy5lbWFpbCA/PyBudWxsLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydE1lbnRpb24obWVudGlvbilcbiAgICAgIG9uTWVudGlvbkFkZGVkPy4obWVudGlvbilcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uU2VsZWN0LCB7IHR5cGU6IG1lbnRpb24udHlwZSwgaWQ6IFN0cmluZyhtZW50aW9uLmlkKSB9KVxuICAgICAgY2xvc2UoKVxuICAgIH0sXG4gICAgW2VkaXRvclJlZiwgb25NZW50aW9uQWRkZWQsIGV2ZW50LCBjbG9zZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVR5cGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAodHlwZTogQ29udGV4dEVudGl0eVR5cGUpID0+IHtcbiAgICAgIHNldEFjdGl2ZVR5cGUodHlwZSlcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5zeW5jVHJpZ2dlckF0UnVuTGVuZ3RoKGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlKHR5cGUsIGFsbG93ZWRUeXBlcykpXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvblR5cGVTd2l0Y2gsIHsgdHlwZSB9KVxuICAgIH0sXG4gICAgW2FsbG93ZWRUeXBlcywgZWRpdG9yUmVmLCBldmVudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pOiBib29sZWFuID0+IHtcbiAgICAgIGlmICghcG9wb3Zlck9wZW4gfHwgYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNsb3NlKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKChlLmtleSA9PT0gJ0Fycm93UmlnaHQnIHx8IGUua2V5ID09PSAnQXJyb3dMZWZ0JykgJiYgKGUubWV0YUtleSB8fCBlLmFsdEtleSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNvbnN0IGlkeCA9IGFsbG93ZWRUeXBlcy5pbmRleE9mKGFjdGl2ZVR5cGUpXG4gICAgICAgIGNvbnN0IGRlbHRhID0gZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyA/IDEgOiAtMVxuICAgICAgICBjb25zdCBuZXh0SWR4ID0gKGlkeCArIGRlbHRhICsgYWxsb3dlZFR5cGVzLmxlbmd0aCkgJSBhbGxvd2VkVHlwZXMubGVuZ3RoXG4gICAgICAgIGhhbmRsZVR5cGVDaGFuZ2UoYWxsb3dlZFR5cGVzW25leHRJZHhdKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZSh0cnVlKVxuICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2ID0+IChpdGVtcy5sZW5ndGggPiAwID8gTWF0aC5taW4ocHJldiArIDEsIGl0ZW1zLmxlbmd0aCAtIDEpIDogMCkpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0SXNLZXlib2FyZE5hdkFjdGl2ZSh0cnVlKVxuICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2ID0+IE1hdGgubWF4KHByZXYgLSAxLCAwKSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGluc2VydFNlbGVjdGVkSXRlbShpdGVtc1thY3RpdmVJbmRleF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxuICAgIFtwb3BvdmVyT3BlbiwgaXRlbXMsIGFsbG93ZWRUeXBlcywgYWN0aXZlVHlwZSwgYWN0aXZlSW5kZXgsIGluc2VydFNlbGVjdGVkSXRlbSwgY2xvc2UsIGhhbmRsZVR5cGVDaGFuZ2VdXG4gIClcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiB1bmRlZmluZWRcbiAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblBvcG92ZXIoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3BvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXJdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IG1vdXNlRXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsXG4gICAgICBpZiAoIXRhcmdldCkgcmV0dXJuXG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGlmIChwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGNsb3NlKClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSlcbiAgfSwgW3BvcG92ZXJPcGVuLCBjbG9zZSwgcG9wb3ZlckFuY2hvclJlZl0pXG5cbiAgY29uc3QgcHJldklzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHByZXZJc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlXG4gICAgfVxuICB9LCBbaXNMb2FkaW5nTW9yZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJldklzTG9hZGluZ01vcmVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgc2V0QWN0aXZlSW5kZXgoMClcbiAgfSwgW2l0ZW1zLmxlbmd0aCwgYWN0aXZlVHlwZV0pXG5cbiAgY29uc3QgcG9wb3Zlck5vZGUgPSB1c2VNZW1vPFJlYWN0Tm9kZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8U0NNUEFuY2hvclxuICAgICAgICByZWY9e3BvcG92ZXJSZWZ9XG4gICAgICAgIHsuLi57IFtNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSXTogJycgfX1cbiAgICAgICAgJGJvdHRvbT17cG9wb3ZlclBvcy5ib3R0b219XG4gICAgICAgICRsZWZ0PXtwb3BvdmVyUG9zLmxlZnR9XG4gICAgICAgICR3aWR0aD17cG9wb3ZlclBvcy53aWR0aH1cbiAgICAgICAgJHpJbmRleD17bWVudGlvblBvcG92ZXJaSW5kZXh9XG4gICAgICAgIG9uTW91c2VEb3duPXtlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICA+XG4gICAgICAgIDxDb250ZXh0TWVudGlvblBvcG92ZXJcbiAgICAgICAgICBhbGxvd2VkVHlwZXM9e2FsbG93ZWRUeXBlc31cbiAgICAgICAgICBhY3RpdmVUeXBlPXthY3RpdmVUeXBlfVxuICAgICAgICAgIG9uVHlwZUNoYW5nZT17aGFuZGxlVHlwZUNoYW5nZX1cbiAgICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgaGlkZVJlY2VudHNMYWJlbD17aGlkZVJlY2VudHNMYWJlbH1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlfVxuICAgICAgICAgIGlzTG9hZGluZ01vcmU9e2lzTG9hZGluZ01vcmV9XG4gICAgICAgICAgb25SZWFjaExpc3RFbmQ9e2xvYWRNb3JlfVxuICAgICAgICAgIHNlYXJjaFZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBrZXlib2FyZEhpbnQ9e3QoJ2NvbnRleHRNZW50aW9uLmtleWJvYXJkSGludCcsIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ05hdmVnYWNpw7NuIGVudHJlIHBlc3Rhw7FhczogQCwgQEAsIEBAQOKApiBlbiBvcmRlbi4gVGFtYmnDqW4gQWx0L0NtZCArIOKGkC/ihpInLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgb25JdGVtU2VsZWN0ZWQ9e2luc2VydFNlbGVjdGVkSXRlbX1cbiAgICAgICAgICBhY3RpdmVJbmRleD17YWN0aXZlSW5kZXh9XG4gICAgICAgICAgb25BY3RpdmVJbmRleENoYW5nZT17c2V0QWN0aXZlSW5kZXh9XG4gICAgICAgICAgaXNLZXlib2FyZE5hdkFjdGl2ZT17aXNLZXlib2FyZE5hdkFjdGl2ZX1cbiAgICAgICAgICBvbk1vdXNlTW92ZUluTGlzdD17KCkgPT4gc2V0SXNLZXlib2FyZE5hdkFjdGl2ZShmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICA8L1NDTVBBbmNob3I+XG4gICAgKVxuICB9LCBbXG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcG9wb3ZlclBvcyxcbiAgICBtZW50aW9uUG9wb3ZlclpJbmRleCxcbiAgICBhbGxvd2VkVHlwZXMsXG4gICAgYWN0aXZlVHlwZSxcbiAgICBoYW5kbGVUeXBlQ2hhbmdlLFxuICAgIGl0ZW1zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgaGlkZVJlY2VudHNMYWJlbCxcbiAgICBoYXNNb3JlLFxuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgbG9hZE1vcmUsXG4gICAgc2VhcmNoVmFsdWUsXG4gICAgdG9vbHRpcFpJbmRleCxcbiAgICBpbnNlcnRTZWxlY3RlZEl0ZW0sXG4gICAgYWN0aXZlSW5kZXgsXG4gICAgaXNLZXlib2FyZE5hdkFjdGl2ZSxcbiAgXSlcblxuICByZXR1cm4geyBwb3BvdmVyT3BlbiwgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBoYW5kbGVUcmlnZ2VyLCBoYW5kbGVLZXlEb3duLCBwb3BvdmVyTm9kZSwgY2xvc2UgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBSUVBLFdBQVcsRUFDWEMsU0FBUyxFQUNUQyxlQUFl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
|
|
316
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIiLCJTQ01QQW5jaG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlRW50aXR5U2VhcmNoIiwidXNlTWVudGlvbkFsbG93ZWRUeXBlcyIsInVzZUNhcmV0UG9zaXRpb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlIiwibWFwTWVudGlvbkl0ZW1Ub0NvbnRleHQiLCJyZXNvbHZlTWVudGlvblRyaWdnZXJTZWxlY3Rpb24iLCJqc3giLCJfanN4IiwiTUVOVElPTl9QT1BPVkVSX0dBUF9QWCIsIk1FTlRJT05fUE9QT1ZFUl9WSUVXUE9SVF9QQURfUFgiLCJNRU5USU9OX1BPUE9WRVJfRkFMTEJBQ0tfV0lEVEhfUFgiLCJ1c2VEZXJpdmVkU2NvcGUiLCJfcmVmIiwiX2N0eCRjbGllbnQkaWQiLCJfY3R4JGNsaWVudCIsIl9jdHgkZW50aXR5VmFsdWVzIiwiX3JlZjIiLCJfcmVmMyIsIl9jdHgkcHJvamVjdCRpZCIsIl9jdHgkcHJvamVjdCIsIl9jdHgkZW50aXR5VmFsdWVzMiIsIl9jdHgkY2hpcHNQcm9qZWN0IiwiX2N0eCRhZ2VudCRlbnRpdHkiLCJfY3R4JGFnZW50IiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzIiwiX2N0eCRhZ2VudDIiLCJjdHgiLCJjbGllbnRJZCIsImNsaWVudCIsImlkIiwiZW50aXR5VmFsdWVzIiwicHJvamVjdElkIiwicHJvamVjdCIsImNoaXBzUHJvamVjdCIsImFnZW50RW50aXR5IiwiYWdlbnQiLCJlbnRpdHkiLCJtY3BTbHVnc0tleSIsImNvbm5lY3RvcnMiLCJmaW5kIiwiYyIsImdyb3VwIiwic2x1Z3MiLCJqb2luIiwibWNwU2x1Z3MiLCJfY3R4JGFnZW50JGNvbm5lY3RvcnMyIiwiX2N0eCRhZ2VudDMiLCJyYXciLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJTZXQiLCJmaWx0ZXIiLCJzIiwidHJpbSIsImxlbmd0aCIsInNvcnQiLCJ1c2VNZW50aW9uUG9wb3ZlciIsIl9yZWY0IiwiZWRpdG9yUmVmIiwicG9wb3ZlckFuY2hvclJlZiIsImVuYWJsZWRUeXBlcyIsIm9uTWVudGlvbkFkZGVkIiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJfdXNlTWVudGlvbkFsbG93ZWRUeXAiLCJhbGxvd2VkVHlwZXMiLCJkZWZhdWx0VHlwZSIsIm1lbnRpb25Qb3BvdmVyWkluZGV4IiwidG9vbHRpcFpJbmRleCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGl2ZVR5cGUiLCJzZXRBY3RpdmVUeXBlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwb3BvdmVyT3BlbiIsInNldFBvcG92ZXJPcGVuIiwiX3VzZVN0YXRlNSIsImJvdHRvbSIsImxlZnQiLCJ3aWR0aCIsIl91c2VTdGF0ZTYiLCJwb3BvdmVyUG9zIiwic2V0UG9wb3ZlclBvcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiaXNLZXlib2FyZE5hdkFjdGl2ZSIsInNldElzS2V5Ym9hcmROYXZBY3RpdmUiLCJoYXNFbWl0dGVkT3BlbiIsInBvcG92ZXJSZWYiLCJnZXRDYXJldFJlY3QiLCJzY29wZSIsIl91c2VFbnRpdHlTZWFyY2giLCJpdGVtcyIsImxvYWRpbmciLCJlcnJvciIsImhpZGVSZWNlbnRzTGFiZWwiLCJoYXNNb3JlIiwiaXNMb2FkaW5nTW9yZSIsImxvYWRNb3JlIiwic2VhcmNoVmFsdWUiLCJ1cGRhdGVTZWFyY2hWYWx1ZSIsImluY2x1ZGVzIiwicG9zaXRpb25Qb3BvdmVyIiwiX3BvcG92ZXJBbmNob3JSZWYkY3VyIiwiX2VkaXRvclJlZiRjdXJyZW50JGdlIiwiX2VkaXRvclJlZiRjdXJyZW50IiwiX2VkaXRvclJlZiRjdXJyZW50JGdlMiIsIl9jYXJldCR0b3AiLCJmcm9tQW5jaG9yIiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImZyb21FZGl0b3IiLCJnZXRFZGl0b3JDbGllbnRSZWN0IiwiY2FsbCIsIndpZHRoUmVjdCIsImNhcmV0IiwibGVmdFNvdXJjZSIsInRvcFNvdXJjZSIsInRvcCIsInZpZXdwb3J0VyIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJ2aWV3cG9ydEgiLCJpbm5lckhlaWdodCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJyZXNldE1lbnRpb25PcGVuVHJhY2tpbmciLCJjbG9zZSIsImhhbmRsZVRyaWdnZXIiLCJ0cmlnZ2VyIiwiYWN0aXZlIiwic2VsZWN0aW9uIiwidHlwZUZyb21BdCIsImVmZmVjdGl2ZVF1ZXJ5IiwiYWlDaGF0TWVudGlvbk9wZW4iLCJ0eXBlIiwiaW5zZXJ0U2VsZWN0ZWRJdGVtIiwiaXRlbSIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJtZW50aW9uIiwiaW5zZXJ0TWVudGlvbiIsImFpQ2hhdE1lbnRpb25TZWxlY3QiLCJTdHJpbmciLCJoYW5kbGVUeXBlQ2hhbmdlIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsInN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgiLCJhaUNoYXRNZW50aW9uVHlwZVN3aXRjaCIsImhhbmRsZUtleURvd24iLCJlIiwia2V5IiwicHJldmVudERlZmF1bHQiLCJtZXRhS2V5IiwiYWx0S2V5IiwiaWR4IiwiaW5kZXhPZiIsImRlbHRhIiwibmV4dElkeCIsInByZXYiLCJ1bmRlZmluZWQiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCJtb3VzZUV2ZW50IiwiX3BvcG92ZXJSZWYkY3VycmVudCIsIl9wb3BvdmVyQW5jaG9yUmVmJGN1cjIiLCJ0YXJnZXQiLCJjb250YWlucyIsImRvY3VtZW50IiwicHJldklzTG9hZGluZ01vcmVSZWYiLCJwb3BvdmVyTm9kZSIsIl9vYmplY3RTcHJlYWQiLCJyZWYiLCJfZGVmaW5lUHJvcGVydHkiLCIkYm90dG9tIiwiJGxlZnQiLCIkd2lkdGgiLCIkekluZGV4Iiwib25Nb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJjaGlsZHJlbiIsIm9uVHlwZUNoYW5nZSIsIm9uUmVhY2hMaXN0RW5kIiwia2V5Ym9hcmRIaW50IiwiZGVmYXVsdFZhbHVlIiwib25JdGVtU2VsZWN0ZWQiLCJvbkFjdGl2ZUluZGV4Q2hhbmdlIiwib25Nb3VzZU1vdmVJbkxpc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvblBvcG92ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleWJvYXJkRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuaW1wb3J0IHtcbiAgQ29udGV4dE1lbnRpb25Qb3BvdmVyLFxuICBNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSLFxuICBTQ01QQW5jaG9yLFxufSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuL3VzZVQnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBFbnRpdHlTZWFyY2hTY29wZSwgdXNlRW50aXR5U2VhcmNoIH0gZnJvbSAnLi91c2VFbnRpdHlTZWFyY2gnXG5pbXBvcnQgeyB1c2VNZW50aW9uQWxsb3dlZFR5cGVzIH0gZnJvbSAnLi91c2VNZW50aW9uQWxsb3dlZFR5cGVzJ1xuaW1wb3J0IHsgdXNlQ2FyZXRQb3NpdGlvbiB9IGZyb20gJy4vdXNlQ2FyZXRQb3NpdGlvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuL3VzZUV2ZW50J1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uLCBDb250ZXh0TWVudGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlIH0gZnJvbSAnLi4vdXRpbHMvY29udGV4dE1lbnRpb25UcmlnZ2VycydcbmltcG9ydCB7IG1hcE1lbnRpb25JdGVtVG9Db250ZXh0LCByZXNvbHZlTWVudGlvblRyaWdnZXJTZWxlY3Rpb24gfSBmcm9tICcuL3VzZU1lbnRpb25Qb3BvdmVyLmhlbHBlcnMnXG5cbmNvbnN0IE1FTlRJT05fUE9QT1ZFUl9HQVBfUFggPSA0XG5jb25zdCBNRU5USU9OX1BPUE9WRVJfVklFV1BPUlRfUEFEX1BYID0gOFxuY29uc3QgTUVOVElPTl9QT1BPVkVSX0ZBTExCQUNLX1dJRFRIX1BYID0gMzIwXG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyA9IHtcbiAgZWRpdG9yUmVmOiBSZWZPYmplY3Q8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+XG4gIC8qKlxuICAgKiBOb2RvIGN1eW8gYW5jaG8geSBhbGluZWFjacOzbiBob3Jpem9udGFsIGRlZmluZW4gZWwgcG9wb3ZlciAocC4gZWouIHdyYXBwZXIgZGVsIGlucHV0IGVuIE1BSUEpLlxuICAgKiBFbCBhbmNsYSB2ZXJ0aWNhbCBlcyBlbCBjYXJldCAvIHRleHRvIGRlbCB0cmlnZ2VyIGBAYC4gU2kgbm8gaGF5IGNhcmV0LCBzZSB1c2EgZWwgYm9yZGUgc3VwZXJpb3IgZGUgZXN0ZSBub2RvLlxuICAgKi9cbiAgcG9wb3ZlckFuY2hvclJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+XG4gIC8qKiBPdmVycmlkZSBkZWwgc2V0IGRlIHRhYnMgcGVybWl0aWRhczsgc2kgbm8gc2UgcGFzYSBzZSBkZXJpdmEgZGVsIGFnZW50LiAqL1xuICBlbmFibGVkVHlwZXM/OiBDb250ZXh0RW50aXR5VHlwZVtdXG4gIC8qKiBDYWxsYmFjayBjdWFuZG8gZWwgdXN1YXJpbyBpbnNlcnRhIHVuYSBtZW50aW9uIHbDrWEgY2xpY2svdGVjbGFkby4gKi9cbiAgb25NZW50aW9uQWRkZWQ/OiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPSB7XG4gIHBvcG92ZXJPcGVuOiBib29sZWFuXG4gIC8qKlxuICAgKiBSZWluaWNpYSBlbCB0cmFja2luZyBkZSBgQUlfQ0hBVF9NRU5USU9OX09QRU5gIChwcmltZXJhIGFwZXJ0dXJhIHBvciBtZW5zYWplKS5cbiAgICogTGxhbWFyIHRyYXMgZW52aWFyIGVsIG1lbnNhamUgbyBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs24uXG4gICAqL1xuICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmc6ICgpID0+IHZvaWRcbiAgLyoqIFByb2Nlc2EgZWwgdHJpZ2dlciBwcm92ZW5pZW50ZSBkZWwgYENvbnRleHRNZW50aW9uRWRpdG9yLm9uSW5wdXRgLiAqL1xuICBoYW5kbGVUcmlnZ2VyOiAodHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfSkgPT4gdm9pZFxuICAvKipcbiAgICogTWFuZWpvIGRlIHRlY2xhcyByZWxhdGl2YXMgYWwgcG9wb3ZlciAobmF2ZWdhY2nDs24sIHNlbGVjY2nDs24sIGNhbWJpbyBkZVxuICAgKiB0YWIgeSBlc2NhcGUpLiBEZXZ1ZWx2ZSBgdHJ1ZWAgc2kgY29uc3VtacOzIGxhIGtleSwgcGFyYSBxdWUgZWwgY29uc3VtZXJcbiAgICogcHVlZGEgZGVjaWRpciBzaSBzZWd1aXIgcHJvY2VzYW5kbyBvdHJhcyB0ZWNsYXMgKHAuZWouIEVudGVyIHBhcmEgZW52aWFyKS5cbiAgICovXG4gIGhhbmRsZUtleURvd246IChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gYm9vbGVhblxuICAvKiogTm9kbyBkZWwgcG9wb3ZlcjsgZWwgY29uc3VtZXIgZGViZSBwb3J0YXJsbyBjb24gYGNyZWF0ZVBvcnRhbGAuICovXG4gIHBvcG92ZXJOb2RlOiBSZWFjdE5vZGUgfCBudWxsXG4gIC8qKiBDaWVycmEgZWwgcG9wb3ZlciB5IGxpbXBpYSBlbCBxdWVyeS4gKi9cbiAgY2xvc2U6ICgpID0+IHZvaWRcbn1cblxuLyoqXG4gKiBEZXJpdmEgY2xpZW50SWQsIHByb2plY3RJZCwgYWdlbnRFbnRpdHkgeSBNQ1AgZGVzZGUgZWwgY29udGV4dG8gZ2xvYmFsIChpbmNsLlxuICogYGVudGl0eVZhbHVlc2AgeSBgY2hpcHNQcm9qZWN0YCkgcGFyYSBmaWx0cmFyIHJlY2VudHMgeSBiw7pzcXVlZGEgR3JhcGhRTC5cbiAqL1xuY29uc3QgdXNlRGVyaXZlZFNjb3BlID0gKCk6IEVudGl0eVNlYXJjaFNjb3BlID0+IHtcbiAgY29uc3QgY3R4ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGNsaWVudElkID0gY3R4LmNsaWVudD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8uY2xpZW50SWQgPz8gbnVsbFxuICBjb25zdCBwcm9qZWN0SWQgPSBjdHgucHJvamVjdD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8ucHJvamVjdElkID8/IGN0eC5jaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gY3R4LmFnZW50Py5lbnRpdHkgPz8gbnVsbFxuICBjb25zdCBtY3BTbHVnc0tleSA9IChjdHguYWdlbnQ/LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJyk/LnNsdWdzID8/IFtdKS5qb2luKCd8JylcblxuICBjb25zdCBtY3BTbHVncyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJhdyA9IGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW11cbiAgICByZXR1cm4gWy4uLm5ldyBTZXQocmF3LmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHR5cGVvZiBzID09PSAnc3RyaW5nJyAmJiBzLnRyaW0oKS5sZW5ndGggPiAwKSldLnNvcnQoKVxuICB9LCBbbWNwU2x1Z3NLZXldKVxuXG4gIHJldHVybiB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPihcbiAgICAoKSA9PiAoeyBjbGllbnRJZCwgcHJvamVjdElkLCBtY3BTbHVncywgYWdlbnRFbnRpdHkgfSksXG4gICAgW2NsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzLCBhZ2VudEVudGl0eV1cbiAgKVxufVxuXG4vKipcbiAqIEVuY2Fwc3VsYSBsYSBsw7NnaWNhIGRlbCBwb3BvdmVyIGRlIEAtbWVudGlvbnMgKGVzdGFkbywgZmV0Y2ggcG9yIHRhYiwgYW5hbHl0aWNzLFxuICogcG9zaWNpb25hbWllbnRvKS4gRWwgY29uc3VtZXIgbWFudGllbmUgZWwgZWRpdG9yIHkgZWwgZW52w61vIGRlbCBtZW5zYWplLlxuICogTG9zIGZpbHRyb3MgZGUgYsO6c3F1ZWRhIHVzYW4gYHVzZURlcml2ZWRTY29wZWA6IGVzcGVjaWFsaXN0YSBwcm95ZWN0byBhY290YSB0YXJlYXNcbiAqIGFsIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0bzsgZXNwZWNpYWxpc3RhIGNsaWVudGUsIHByb3llY3RvcyBhbCBgY2xpZW50SWRgIChlbiBgZXh0cmFgIGRlIHNlYXJjaCkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZW50aW9uUG9wb3ZlciA9ICh7XG4gIGVkaXRvclJlZixcbiAgcG9wb3ZlckFuY2hvclJlZixcbiAgZW5hYmxlZFR5cGVzLFxuICBvbk1lbnRpb25BZGRlZCxcbn06IFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyk6IFVzZU1lbnRpb25Qb3BvdmVyUmV0dXJuID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSB9ID0gdXNlTWVudGlvbkFsbG93ZWRUeXBlcyhlbmFibGVkVHlwZXMpXG4gIGNvbnN0IG1lbnRpb25Qb3BvdmVyWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMjAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICdvdmVybGF5JylcbiAgY29uc3QgW2FjdGl2ZVR5cGUsIHNldEFjdGl2ZVR5cGVdID0gdXNlU3RhdGU8Q29udGV4dEVudGl0eVR5cGU+KGRlZmF1bHRUeXBlKVxuICBjb25zdCBbcG9wb3Zlck9wZW4sIHNldFBvcG92ZXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcG9wb3ZlclBvcywgc2V0UG9wb3ZlclBvc10gPSB1c2VTdGF0ZTx7IGJvdHRvbTogbnVtYmVyOyBsZWZ0OiBudW1iZXI7IHdpZHRoOiBudW1iZXIgfT4oe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIHdpZHRoOiAwLFxuICB9KVxuICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc0tleWJvYXJkTmF2QWN0aXZlLCBzZXRJc0tleWJvYXJkTmF2QWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBoYXNFbWl0dGVkT3BlbiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcG9wb3ZlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGdldENhcmV0UmVjdCA9IHVzZUNhcmV0UG9zaXRpb24oKVxuXG4gIGNvbnN0IHNjb3BlID0gdXNlRGVyaXZlZFNjb3BlKClcbiAgY29uc3QgeyBpdGVtcywgbG9hZGluZywgZXJyb3IsIGhpZGVSZWNlbnRzTGFiZWwsIGhhc01vcmUsIGlzTG9hZGluZ01vcmUsIGxvYWRNb3JlLCBzZWFyY2hWYWx1ZSwgdXBkYXRlU2VhcmNoVmFsdWUgfSA9XG4gICAgdXNlRW50aXR5U2VhcmNoKGFjdGl2ZVR5cGUsIHNjb3BlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoYWN0aXZlVHlwZSkpIHtcbiAgICAgIHNldEFjdGl2ZVR5cGUoZGVmYXVsdFR5cGUpXG4gICAgfVxuICB9LCBbYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBkZWZhdWx0VHlwZV0pXG5cbiAgY29uc3QgcG9zaXRpb25Qb3BvdmVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGZyb21BbmNob3IgPSBwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGZyb21FZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudD8uZ2V0RWRpdG9yQ2xpZW50UmVjdD8uKCkgPz8gbnVsbFxuICAgIGNvbnN0IHdpZHRoUmVjdCA9IGZyb21BbmNob3IgPz8gZnJvbUVkaXRvclxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCdAJylcblxuICAgIGNvbnN0IHdpZHRoID0gd2lkdGhSZWN0ICYmIHdpZHRoUmVjdC53aWR0aCA+IDAgPyB3aWR0aFJlY3Qud2lkdGggOiBNRU5USU9OX1BPUE9WRVJfRkFMTEJBQ0tfV0lEVEhfUFhcbiAgICBjb25zdCBsZWZ0U291cmNlID0gd2lkdGhSZWN0ICYmIHdpZHRoUmVjdC53aWR0aCA+IDAgPyB3aWR0aFJlY3QubGVmdCA6IGNhcmV0Py5sZWZ0XG4gICAgY29uc3QgdG9wU291cmNlID0gY2FyZXQ/LnRvcCA/PyAod2lkdGhSZWN0ICYmIHdpZHRoUmVjdC53aWR0aCA+IDAgPyB3aWR0aFJlY3QudG9wIDogbnVsbClcblxuICAgIGlmIChsZWZ0U291cmNlID09IG51bGwgfHwgdG9wU291cmNlID09IG51bGwpIHJldHVyblxuXG4gICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoXG4gICAgICBNRU5USU9OX1BPUE9WRVJfVklFV1BPUlRfUEFEX1BYLFxuICAgICAgTWF0aC5taW4odmlld3BvcnRXIC0gd2lkdGggLSBNRU5USU9OX1BPUE9WRVJfVklFV1BPUlRfUEFEX1BYLCBsZWZ0U291cmNlKVxuICAgIClcblxuICAgIC8qKiBBbmNobyBkZWwgaW5wdXQ7IGJvcmRlIGluZmVyaW9yIH40cHggcG9yIGVuY2ltYSBkZWwgYEBgIHF1ZSBhYnJlIGxhcyBtZW5jaW9uZXMuICovXG4gICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICB3aWR0aCxcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHRvcFNvdXJjZSArIE1FTlRJT05fUE9QT1ZFUl9HQVBfUFgsXG4gICAgfSlcbiAgfSwgW3BvcG92ZXJBbmNob3JSZWYsIGVkaXRvclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICBjb25zdCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaGFzRW1pdHRlZE9wZW4uY3VycmVudCA9IGZhbHNlXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFBvcG92ZXJPcGVuKGZhbHNlKVxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlKCcnKVxuICB9LCBbdXBkYXRlU2VhcmNoVmFsdWVdKVxuXG4gIGNvbnN0IGhhbmRsZVRyaWdnZXIgPSB1c2VDYWxsYmFjayhcbiAgICAodHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfSkgPT4ge1xuICAgICAgaWYgKGFsbG93ZWRUeXBlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKHBvcG92ZXJPcGVuKSBjbG9zZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodHJpZ2dlci5hY3RpdmUpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gcmVzb2x2ZU1lbnRpb25UcmlnZ2VyU2VsZWN0aW9uKHRyaWdnZXIsIGFsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUpXG4gICAgICAgIGlmICghc2VsZWN0aW9uKSByZXR1cm5cblxuICAgICAgICBjb25zdCB7IGFjdGl2ZVR5cGU6IHR5cGVGcm9tQXQsIGVmZmVjdGl2ZVF1ZXJ5IH0gPSBzZWxlY3Rpb25cblxuICAgICAgICBpZiAoIXBvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgc2V0UG9wb3Zlck9wZW4odHJ1ZSlcbiAgICAgICAgICBzZXRBY3RpdmVUeXBlKHR5cGVGcm9tQXQpXG4gICAgICAgICAgcG9zaXRpb25Qb3BvdmVyKClcbiAgICAgICAgICBpZiAoIWhhc0VtaXR0ZWRPcGVuLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uT3BlbiwgeyB0eXBlOiB0eXBlRnJvbUF0IH0pXG4gICAgICAgICAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRBY3RpdmVUeXBlKHR5cGVGcm9tQXQpXG4gICAgICAgICAgcG9zaXRpb25Qb3BvdmVyKClcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTZWFyY2hWYWx1ZShlZmZlY3RpdmVRdWVyeSlcbiAgICAgIH0gZWxzZSBpZiAocG9wb3Zlck9wZW4pIHtcbiAgICAgICAgY2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUsIHBvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXIsIHVwZGF0ZVNlYXJjaFZhbHVlLCBldmVudCwgY2xvc2VdXG4gIClcblxuICBjb25zdCBpbnNlcnRTZWxlY3RlZEl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbTogQ29udGV4dE1lbnRpb25JdGVtKSA9PiB7XG4gICAgICBjb25zdCBtZW50aW9uID0gbWFwTWVudGlvbkl0ZW1Ub0NvbnRleHQoaXRlbSlcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRNZW50aW9uKG1lbnRpb24pXG4gICAgICBvbk1lbnRpb25BZGRlZD8uKG1lbnRpb24pXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvblNlbGVjdCwgeyB0eXBlOiBtZW50aW9uLnR5cGUsIGlkOiBTdHJpbmcobWVudGlvbi5pZCkgfSlcbiAgICAgIGNsb3NlKClcbiAgICB9LFxuICAgIFtlZGl0b3JSZWYsIG9uTWVudGlvbkFkZGVkLCBldmVudCwgY2xvc2VdXG4gIClcblxuICBjb25zdCBoYW5kbGVUeXBlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlKSA9PiB7XG4gICAgICBzZXRBY3RpdmVUeXBlKHR5cGUpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uc3luY1RyaWdnZXJBdFJ1bkxlbmd0aChnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSh0eXBlLCBhbGxvd2VkVHlwZXMpKVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdE1lbnRpb25UeXBlU3dpdGNoLCB7IHR5cGUgfSlcbiAgICB9LFxuICAgIFthbGxvd2VkVHlwZXMsIGVkaXRvclJlZiwgZXZlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KTogYm9vbGVhbiA9PiB7XG4gICAgICBpZiAoIXBvcG92ZXJPcGVuIHx8IGFsbG93ZWRUeXBlcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZVxuXG4gICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBjbG9zZSgpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmICgoZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyB8fCBlLmtleSA9PT0gJ0Fycm93TGVmdCcpICYmIChlLm1ldGFLZXkgfHwgZS5hbHRLZXkpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBjb25zdCBpZHggPSBhbGxvd2VkVHlwZXMuaW5kZXhPZihhY3RpdmVUeXBlKVxuICAgICAgICBjb25zdCBkZWx0YSA9IGUua2V5ID09PSAnQXJyb3dSaWdodCcgPyAxIDogLTFcbiAgICAgICAgY29uc3QgbmV4dElkeCA9IChpZHggKyBkZWx0YSArIGFsbG93ZWRUeXBlcy5sZW5ndGgpICUgYWxsb3dlZFR5cGVzLmxlbmd0aFxuICAgICAgICBoYW5kbGVUeXBlQ2hhbmdlKGFsbG93ZWRUeXBlc1tuZXh0SWR4XSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHNldElzS2V5Ym9hcmROYXZBY3RpdmUodHJ1ZSlcbiAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldiA9PiAoaXRlbXMubGVuZ3RoID4gMCA/IE1hdGgubWluKHByZXYgKyAxLCBpdGVtcy5sZW5ndGggLSAxKSA6IDApKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHNldElzS2V5Ym9hcmROYXZBY3RpdmUodHJ1ZSlcbiAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldiA9PiBNYXRoLm1heChwcmV2IC0gMSwgMCkpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBpbnNlcnRTZWxlY3RlZEl0ZW0oaXRlbXNbYWN0aXZlSW5kZXhdKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSxcbiAgICBbcG9wb3Zlck9wZW4sIGl0ZW1zLCBhbGxvd2VkVHlwZXMsIGFjdGl2ZVR5cGUsIGFjdGl2ZUluZGV4LCBpbnNlcnRTZWxlY3RlZEl0ZW0sIGNsb3NlLCBoYW5kbGVUeXBlQ2hhbmdlXVxuICApXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcG9zaXRpb25Qb3BvdmVyKClcbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25Qb3BvdmVyKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtwb3BvdmVyT3BlbiwgcG9zaXRpb25Qb3BvdmVyXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSA9IChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBtb3VzZUV2ZW50LnRhcmdldCBhcyBOb2RlIHwgbnVsbFxuICAgICAgaWYgKCF0YXJnZXQpIHJldHVyblxuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudD8uY29udGFpbnModGFyZ2V0KSkgcmV0dXJuXG4gICAgICBpZiAocG9wb3ZlckFuY2hvclJlZj8uY3VycmVudD8uY29udGFpbnModGFyZ2V0KSkgcmV0dXJuXG4gICAgICBjbG9zZSgpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gIH0sIFtwb3BvdmVyT3BlbiwgY2xvc2UsIHBvcG92ZXJBbmNob3JSZWZdKVxuXG4gIGNvbnN0IHByZXZJc0xvYWRpbmdNb3JlUmVmID0gdXNlUmVmKGZhbHNlKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwcmV2SXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gaXNMb2FkaW5nTW9yZVxuICAgIH1cbiAgfSwgW2lzTG9hZGluZ01vcmVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByZXZJc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIHNldEFjdGl2ZUluZGV4KDApXG4gIH0sIFtpdGVtcy5sZW5ndGgsIGFjdGl2ZVR5cGVdKVxuXG4gIGNvbnN0IHBvcG92ZXJOb2RlID0gdXNlTWVtbzxSZWFjdE5vZGUgfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVBBbmNob3JcbiAgICAgICAgcmVmPXtwb3BvdmVyUmVmfVxuICAgICAgICB7Li4ueyBbTUFJQV9UQVNLX1BBTkVMX09WRVJMQVlfQVRUUl06ICcnIH19XG4gICAgICAgICRib3R0b209e3BvcG92ZXJQb3MuYm90dG9tfVxuICAgICAgICAkbGVmdD17cG9wb3ZlclBvcy5sZWZ0fVxuICAgICAgICAkd2lkdGg9e3BvcG92ZXJQb3Mud2lkdGh9XG4gICAgICAgICR6SW5kZXg9e21lbnRpb25Qb3BvdmVyWkluZGV4fVxuICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgPlxuICAgICAgICA8Q29udGV4dE1lbnRpb25Qb3BvdmVyXG4gICAgICAgICAgYWxsb3dlZFR5cGVzPXthbGxvd2VkVHlwZXN9XG4gICAgICAgICAgYWN0aXZlVHlwZT17YWN0aXZlVHlwZX1cbiAgICAgICAgICBvblR5cGVDaGFuZ2U9e2hhbmRsZVR5cGVDaGFuZ2V9XG4gICAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIGhpZGVSZWNlbnRzTGFiZWw9e2hpZGVSZWNlbnRzTGFiZWx9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBpc0xvYWRpbmdNb3JlPXtpc0xvYWRpbmdNb3JlfVxuICAgICAgICAgIG9uUmVhY2hMaXN0RW5kPXtsb2FkTW9yZX1cbiAgICAgICAgICBzZWFyY2hWYWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAga2V5Ym9hcmRIaW50PXt0KCdjb250ZXh0TWVudGlvbi5rZXlib2FyZEhpbnQnLCB7XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdOYXZlZ2FjacOzbiBlbnRyZSBwZXN0YcOxYXM6IEAsIEBALCBAQEDigKYgZW4gb3JkZW4uIFRhbWJpw6luIEFsdC9DbWQgKyDihpAv4oaSJyxcbiAgICAgICAgICB9KX1cbiAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgIG9uSXRlbVNlbGVjdGVkPXtpbnNlcnRTZWxlY3RlZEl0ZW19XG4gICAgICAgICAgYWN0aXZlSW5kZXg9e2FjdGl2ZUluZGV4fVxuICAgICAgICAgIG9uQWN0aXZlSW5kZXhDaGFuZ2U9e3NldEFjdGl2ZUluZGV4fVxuICAgICAgICAgIGlzS2V5Ym9hcmROYXZBY3RpdmU9e2lzS2V5Ym9hcmROYXZBY3RpdmV9XG4gICAgICAgICAgb25Nb3VzZU1vdmVJbkxpc3Q9eygpID0+IHNldElzS2V5Ym9hcmROYXZBY3RpdmUoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgPC9TQ01QQW5jaG9yPlxuICAgIClcbiAgfSwgW1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHBvcG92ZXJQb3MsXG4gICAgbWVudGlvblBvcG92ZXJaSW5kZXgsXG4gICAgYWxsb3dlZFR5cGVzLFxuICAgIGFjdGl2ZVR5cGUsXG4gICAgaGFuZGxlVHlwZUNoYW5nZSxcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgaGFzTW9yZSxcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGxvYWRNb3JlLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHRvb2x0aXBaSW5kZXgsXG4gICAgaW5zZXJ0U2VsZWN0ZWRJdGVtLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIGlzS2V5Ym9hcmROYXZBY3RpdmUsXG4gIF0pXG5cbiAgcmV0dXJuIHsgcG9wb3Zlck9wZW4sIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZywgaGFuZGxlVHJpZ2dlciwgaGFuZGxlS2V5RG93biwgcG9wb3Zlck5vZGUsIGNsb3NlIH1cbn1cbiJdLCJtYXBw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
|