@projectcor/maia-components 2.44.5-0 → 2.45.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/README.md +2 -0
- package/lib/App.js +19 -44
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +51 -5
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +76 -18
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +31 -3
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +4 -2
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +255 -15
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +34 -5
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
- package/lib/components/atoms/MAIAInput/MAIAInput.js +10 -4
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +60 -8
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +15 -3
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +16 -21
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +5 -7
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +52 -72
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.js +1 -6
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -36
- package/lib/components/index.js +1 -2
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +29 -5
- package/lib/components/molecules/AbmSection/AbmGeneralSection.js +40 -6
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +90 -18
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +15 -5
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +6 -21
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +47 -19
- package/lib/components/molecules/ChatAIMessages/newStyles.js +26 -29
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +4 -147
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +108 -64
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +2 -3
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +86 -76
- package/lib/components/molecules/ChatFooter/ChatFooter.js +3 -5
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +44 -9
- package/lib/components/molecules/Sidebar/Sidebar.js +23 -41
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +171 -56
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +1 -4
- package/lib/dev/DevReasoningTimeline.js +37 -68
- package/lib/dev/Providers.js +3 -5
- package/lib/hooks/useChatManager/useChatManager.js +351 -76
- package/lib/hooks/useChatMessages/useChatMessages.js +82 -12
- package/lib/hooks/useClientSearch.js +32 -4
- package/lib/hooks/useContextMentions.js +163 -2
- package/lib/hooks/useContextPinPopover.js +75 -16
- package/lib/hooks/useEntitySearch.js +391 -38
- package/lib/hooks/useFrequentlyUsedActions.js +22 -60
- package/lib/hooks/useMentionPopover.js +35 -9
- package/lib/hooks/useMinimizedPillBottomOffset.js +45 -15
- package/lib/hooks/useProjectSearch.js +58 -4
- package/lib/hooks/useProjectSummaryConfig.js +52 -14
- package/lib/hooks/useRecentClientsSearch.js +32 -4
- package/lib/index.js +2 -5
- package/lib/lang/approvalBoxToolActions.js +492 -0
- package/lib/lang/br/index.js +23 -59
- package/lib/lang/en/index.js +23 -59
- package/lib/lang/es/index.js +23 -59
- package/lib/lang/fr/index.js +23 -59
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/services/maia/Agents/getAgents.js +242 -78
- package/lib/services/maia/Orchestrator/orchestrator.js +121 -38
- package/lib/store/sessions/sessionNotifications.js +41 -35
- package/lib/store/sessions/sessionStreamManager.js +52 -40
- package/lib/styles/cascade.js +3 -29
- package/lib/styles/transitions.js +1 -3
- package/lib/types/agentModal.js +1 -1
- package/lib/types/global.d.js +1 -1
- package/lib/utils/hoursPlannerQuickActionType.js +1 -74
- package/lib/utils/imagePreprocessor.js +37 -12
- package/lib/utils/streamActivityMessages.js +60 -32
- package/package.json +1 -1
- package/lib/components/atoms/ActionableButton.spec.js +0 -111
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +0 -52
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +0 -11
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
- package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +0 -65
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -66
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -211
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +0 -55
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -41
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -253
- package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +0 -31
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -33
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -25
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.js +0 -4
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
- package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
- package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
- package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
- package/lib/components/atoms/Chip/Chip.spec.js +0 -82
- package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
- package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -88
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
- package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
- package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.js +0 -227
- package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -77
- package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +0 -31
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -48
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -231
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
- package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
- package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
- package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
- package/lib/components/atoms/Expand/Expand.spec.js +0 -57
- package/lib/components/atoms/Fade/Fade.spec.js +0 -31
- package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
- package/lib/components/atoms/HelpButton.spec.js +0 -87
- package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
- package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
- package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
- package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
- package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
- package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
- package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +0 -12
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -26
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -430
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +0 -50
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -20
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -53
- package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -22
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
- package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
- package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
- package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
- package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
- package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
- package/lib/components/atoms/NextPageLoader.spec.js +0 -37
- package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.js +0 -17
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -86
- package/lib/components/atoms/PrimaryButton.spec.js +0 -42
- package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -132
- package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -162
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
- package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -4
- package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.js +0 -10
- package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
- package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
- package/lib/components/atoms/Switch/Switch.spec.js +0 -41
- package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
- package/lib/components/atoms/TextArea/TextArea.spec.js +0 -68
- package/lib/components/atoms/ThirdButton.spec.js +0 -29
- package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
- package/lib/components/atoms/WithAppCfg.spec.js +0 -60
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.js +0 -37
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -371
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +0 -39
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -57
- package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -227
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +0 -86
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -108
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -254
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.js +0 -17
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
- package/lib/components/molecules/AgentInputBlock/index.js +0 -5
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
- package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
- package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
- package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +0 -54
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -77
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -410
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -471
- package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -659
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.js +0 -5
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.js +0 -30
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -95
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
- package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
- package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -172
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -355
- package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.js +0 -48
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -82
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
- package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
- package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
- package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
- package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -453
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +0 -198
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -385
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1125
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
- package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
- package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -231
- package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -267
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -261
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -194
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -105
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -73
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
- package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
- package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
- package/lib/components/organisms/ChatAIPage/index.js +0 -3
- package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
- package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
- package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
- package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
- package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
- package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
- package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
- package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
- package/lib/constants/permissions/utils.spec.js +0 -128
- package/lib/dev/DevMaiaPage.js +0 -30
- package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
- package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
- package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
- package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -231
- package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -313
- package/lib/hooks/useAgentSuggestions.spec.js +0 -89
- package/lib/hooks/useCaretPosition.spec.js +0 -58
- package/lib/hooks/useChatManager/useChatManager.helpers.js +0 -353
- package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -506
- package/lib/hooks/useChatManager/useChatManager.spec.js +0 -1261
- package/lib/hooks/useChatMessages/useChatMessages.helpers.js +0 -109
- package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -176
- package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -379
- package/lib/hooks/useChats/useChats.spec.js +0 -208
- package/lib/hooks/useClientSearch.helpers.js +0 -36
- package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
- package/lib/hooks/useClientSearch.spec.js +0 -86
- package/lib/hooks/useContextMentions.helpers.js +0 -152
- package/lib/hooks/useContextMentions.helpers.spec.js +0 -143
- package/lib/hooks/useContextMentions.spec.js +0 -239
- package/lib/hooks/useContextMentions.types.js +0 -2
- package/lib/hooks/useContextPinPopover.helpers.js +0 -95
- package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -115
- package/lib/hooks/useContextPinPopover.spec.js +0 -159
- package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
- package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
- package/lib/hooks/useDebounce.spec.js +0 -42
- package/lib/hooks/useEntitySearch.helpers.js +0 -359
- package/lib/hooks/useEntitySearch.helpers.spec.js +0 -321
- package/lib/hooks/useEntitySearch.spec.js +0 -443
- package/lib/hooks/useEvent.spec.js +0 -45
- package/lib/hooks/useFrequentlyAskedQuestions.spec.js +0 -222
- package/lib/hooks/useFrequentlyUsedActions.spec.js +0 -135
- package/lib/hooks/useIsMaiaPageRoute.js +0 -26
- package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
- package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +0 -122
- package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +0 -148
- package/lib/hooks/useKnowledge/saveKnowledge.spec.js +0 -104
- package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +0 -178
- package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
- package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
- package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
- package/lib/hooks/useMentionPopover.helpers.js +0 -41
- package/lib/hooks/useMentionPopover.helpers.spec.js +0 -71
- package/lib/hooks/useMentionPopover.spec.js +0 -215
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.js +0 -47
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -132
- package/lib/hooks/useMinimizedPillBottomOffset.spec.js +0 -89
- package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
- package/lib/hooks/useModal/useModal.spec.js +0 -73
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +0 -192
- package/lib/hooks/useProjectSearch.helpers.js +0 -61
- package/lib/hooks/useProjectSearch.helpers.spec.js +0 -70
- package/lib/hooks/useProjectSearch.spec.js +0 -91
- package/lib/hooks/useProjectSummary.spec.js +0 -193
- package/lib/hooks/useProjectSummaryConfig.helpers.js +0 -62
- package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -92
- package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
- package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
- package/lib/hooks/useRecentClientsSearch.helpers.js +0 -33
- package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
- package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
- package/lib/hooks/useRecentContexts.spec.js +0 -139
- package/lib/hooks/useResize.spec.js +0 -37
- package/lib/hooks/useSkillsCatalog.spec.js +0 -88
- package/lib/hooks/useSlashCommands.spec.js +0 -139
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
- package/lib/hooks/useStreamResponse.spec.js +0 -199
- package/lib/hooks/useT.spec.js +0 -20
- package/lib/hooks/useToggle.spec.js +0 -33
- package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
- package/lib/services/maia/Access/updateAccess.spec.js +0 -137
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -56
- package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
- package/lib/services/maia/Agents/connectors.spec.js +0 -359
- package/lib/services/maia/Agents/createAgent.spec.js +0 -55
- package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
- package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
- package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
- package/lib/services/maia/Agents/getAgents.helpers.js +0 -181
- package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -211
- package/lib/services/maia/Agents/getAgents.spec.js +0 -697
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
- package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
- package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
- package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
- package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
- package/lib/services/maia/Chats/patchChat.spec.js +0 -41
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
- package/lib/services/maia/Knowledge/delete.spec.js +0 -45
- package/lib/services/maia/Knowledge/download.spec.js +0 -78
- package/lib/services/maia/Knowledge/save.spec.js +0 -58
- package/lib/services/maia/Orchestrator/orchestrator.helpers.js +0 -130
- package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -153
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
- package/lib/services/maia/Skills/createSkill.spec.js +0 -68
- package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
- package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
- package/lib/services/maia/Skills/getSkills.spec.js +0 -152
- package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
- package/lib/services/maia/client.spec.js +0 -56
- package/lib/services/utils/fetchCOR.spec.js +0 -211
- package/lib/services/utils/getCookie.spec.js +0 -20
- package/lib/services/utils/mapChatMessages.spec.js +0 -254
- package/lib/store/chatsSidebarOptimistic.spec.js +0 -112
- package/lib/store/maiaLastChatPersistence.spec.js +0 -22
- package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
- package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
- package/lib/store/sessions/sessionNotifications.helpers.js +0 -45
- package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
- package/lib/store/sessions/sessionNotifications.spec.js +0 -106
- package/lib/store/sessions/sessionStreamManager.spec.js +0 -503
- package/lib/store/sessions/sessions.types.spec.js +0 -16
- package/lib/store/sessions/useSessionsStore.spec.js +0 -135
- package/lib/store/useChatsStore.spec.js +0 -619
- package/lib/store/useFaqsStore.spec.js +0 -57
- package/lib/test/mockSseStream.js +0 -121
- package/lib/test/streamdownCodeMock.js +0 -6
- package/lib/test/streamdownMock.js +0 -12
- package/lib/utils/actionCategoryMap.spec.js +0 -18
- package/lib/utils/agentDisplayName.spec.js +0 -44
- package/lib/utils/autoApproveStorage.spec.js +0 -25
- package/lib/utils/chatInputFiles.spec.js +0 -39
- package/lib/utils/contextMentionIcons.spec.js +0 -41
- package/lib/utils/contextMentionLabel.spec.js +0 -13
- package/lib/utils/contextMentionTriggers.spec.js +0 -38
- package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
- package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
- package/lib/utils/entityLinkRender.spec.js +0 -72
- package/lib/utils/fileDownloadHelper.spec.js +0 -67
- package/lib/utils/formatQuickActionMessage.spec.js +0 -27
- package/lib/utils/formatUnreadCount.spec.js +0 -12
- package/lib/utils/getUnitFileSize.spec.js +0 -18
- package/lib/utils/hitlAnalytics.spec.js +0 -100
- package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
- package/lib/utils/imagePreprocessor.helpers.js +0 -28
- package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
- package/lib/utils/imagePreprocessor.spec.js +0 -112
- package/lib/utils/maiaPageRoute.js +0 -24
- package/lib/utils/maiaPageRoute.spec.js +0 -23
- package/lib/utils/mapBackendLang.spec.js +0 -19
- package/lib/utils/navigateContextEntity.spec.js +0 -50
- package/lib/utils/normalizeAgentConnectors.spec.js +0 -107
- package/lib/utils/orchestratorSubagents.spec.js +0 -32
- package/lib/utils/reasoningMappers.spec.js +0 -103
- package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
- package/lib/utils/renderContextMentions.spec.js +0 -158
- package/lib/utils/retryCompletion.spec.js +0 -99
- package/lib/utils/skillContentSize.spec.js +0 -13
- package/lib/utils/slashCommandMarker.spec.js +0 -43
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
- package/lib/utils/sseStreamContent.spec.js +0 -31
- package/lib/utils/streamActivityMessages.spec.js +0 -227
- package/lib/utils/validateTrimmedFields.spec.js +0 -26
|
@@ -20,9 +20,41 @@ import { useUser } from '../../../context/cor-user';
|
|
|
20
20
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
21
21
|
import { useOnboardingNavigation } from '../../../hooks/useOnboardingNavigation';
|
|
22
22
|
import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
|
|
23
|
-
import { computeModelDropdownHeight, EMOJI_PORTAL_ID, filterAvailableAgentModels, resolveDropdownPosition, VALIDATION_FIELDS_RULES } from './AbmGeneralSection.helpers';
|
|
24
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
-
var validationFieldsRules =
|
|
24
|
+
var validationFieldsRules = {
|
|
25
|
+
name: 150,
|
|
26
|
+
userPrompt: 5000,
|
|
27
|
+
inputPlaceholder: 100,
|
|
28
|
+
introduction: 400
|
|
29
|
+
};
|
|
30
|
+
var MODEL_OPTION_HEIGHT = 58;
|
|
31
|
+
var MODEL_DROPDOWN_MAX_HEIGHT = 245;
|
|
32
|
+
var MODEL_DROPDOWN_GAP = 4;
|
|
33
|
+
var resolveDropdownPosition = function resolveDropdownPosition(anchor, dropdownHeight) {
|
|
34
|
+
var rect = anchor.getBoundingClientRect();
|
|
35
|
+
var spaceBelow = window.innerHeight - rect.bottom;
|
|
36
|
+
var spaceAbove = rect.top;
|
|
37
|
+
var placement = spaceBelow >= dropdownHeight || spaceBelow >= spaceAbove ? 'bottom' : 'top';
|
|
38
|
+
if (placement === 'bottom') {
|
|
39
|
+
return {
|
|
40
|
+
left: rect.left,
|
|
41
|
+
width: rect.width,
|
|
42
|
+
top: rect.bottom + MODEL_DROPDOWN_GAP,
|
|
43
|
+
placement: placement
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
left: rect.left,
|
|
48
|
+
width: rect.width,
|
|
49
|
+
bottom: window.innerHeight - rect.top + MODEL_DROPDOWN_GAP,
|
|
50
|
+
placement: placement
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// El picker se portea a un contenedor propio a nivel de body con position:fixed
|
|
55
|
+
// en el origen del viewport, para que el position:absolute que aplica la librería
|
|
56
|
+
// coincida con las coordenadas de getBoundingClientRect (inmune al scroll).
|
|
57
|
+
var EMOJI_PORTAL_ID = 'abm-general-emoji-portal';
|
|
26
58
|
export var AbmGeneralSection = function AbmGeneralSection(_ref) {
|
|
27
59
|
var _values$general$creat, _values$general$creat2, _values$general$userP, _formValues$aiModel4, _values$general$intro, _values$general$input;
|
|
28
60
|
var values = _ref.values,
|
|
@@ -63,14 +95,16 @@ export var AbmGeneralSection = function AbmGeneralSection(_ref) {
|
|
|
63
95
|
formValues = _useState8[0],
|
|
64
96
|
setFormValues = _useState8[1];
|
|
65
97
|
var availableAgentModels = useMemo(function () {
|
|
66
|
-
return
|
|
98
|
+
return agentModels.filter(function (model) {
|
|
99
|
+
return !model.is_deprecated;
|
|
100
|
+
});
|
|
67
101
|
}, [agentModels]);
|
|
68
102
|
var dropdownHeight = useMemo(function () {
|
|
69
|
-
return
|
|
103
|
+
return Math.min(availableAgentModels.length * MODEL_OPTION_HEIGHT + 2, MODEL_DROPDOWN_MAX_HEIGHT);
|
|
70
104
|
}, [availableAgentModels.length]);
|
|
71
105
|
var updateDropdownPosition = useCallback(function () {
|
|
72
106
|
if (!selectorRef.current) return;
|
|
73
|
-
setDropdownPosition(resolveDropdownPosition(selectorRef.current
|
|
107
|
+
setDropdownPosition(resolveDropdownPosition(selectorRef.current, dropdownHeight));
|
|
74
108
|
}, [dropdownHeight]);
|
|
75
109
|
var handleOpenModalAiModel = function handleOpenModalAiModel() {
|
|
76
110
|
eventAmplitude(EVENTS.selectModel);
|
|
@@ -378,4 +412,4 @@ export var AbmGeneralSection = function AbmGeneralSection(_ref) {
|
|
|
378
412
|
}), renderModelDropdown()]
|
|
379
413
|
});
|
|
380
414
|
};
|
|
381
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwiY3JlYXRlUG9ydGFsIiwiUGx1cyIsIkNoZXZyb25Eb3duIiwiT3BlbiIsIkNVU2VsZWN0IiwiQnV0dG9uRW1vamkiLCJ1c2VUcmFuc2xhdGlvbiIsIlRvb2x0aXAiLCJBZ2VudE1haWFJY29uIiwiQ3VzdG9tSW5wdXQiLCJTQ0FHU1dyYXBwZXJTZWxlY3RvciIsIlNDQUdTU2VsZWN0b3JNb2RhbCIsIlNDQUdTT3B0aW9uIiwiU0NBR1NPcHRpb25MYWJlbCIsIlNDQUdTT3B0aW9uRGVzY3JpcHRpb24iLCJTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50IiwiU0NBR1NXcmFwcGVyQ29udGVudCIsIlNDQUdTV3JhcHBlckVtb2ppIiwiU0NBR1NXcmFwcGVyQWRkSWNvbiIsIlNDQUdTQnV0dG9uRW1vamkiLCJTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQiLCJTQ0FHU1dyYXBwZXJFbW9qaUljb24iLCJTQ0FHU1dyYXBwZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZSIsIlNDQUdTV3JhcHBlckhlYWRlckluZm8iLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nIiwiU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQiLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dCIsIlNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQiLCJTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQiLCJTQ0FHU0dlbmVyYWxDYXJkIiwiU0NBR1NGaWVsZFN1cmZhY2UiLCJTQ0FHU05vTW9kZWxzQXZhaWxhYmxlIiwiU0NBR1NPcHRpb25hbEZpZWxkcyIsIlNDQUdTT3B0aW9uYWxMYWJlbCIsIkN1c3RvbVRleHRBcmVhIiwidXNlVXNlciIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlT25ib2FyZGluZ05hdmlnYXRpb24iLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiY29tcHV0ZU1vZGVsRHJvcGRvd25IZWlnaHQiLCJFTU9KSV9QT1JUQUxfSUQiLCJmaWx0ZXJBdmFpbGFibGVBZ2VudE1vZGVscyIsInJlc29sdmVEcm9wZG93blBvc2l0aW9uIiwiVkFMSURBVElPTl9GSUVMRFNfUlVMRVMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwidmFsaWRhdGlvbkZpZWxkc1J1bGVzIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJfcmVmIiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0IiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0MiIsIl92YWx1ZXMkZ2VuZXJhbCR1c2VyUCIsIl9mb3JtVmFsdWVzJGFpTW9kZWw0IiwiX3ZhbHVlcyRnZW5lcmFsJGludHJvIiwiX3ZhbHVlcyRnZW5lcmFsJGlucHV0IiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJhZ2VudE1vZGVscyIsImxvYWRpbmciLCJ0b29sdGlwWkluZGV4IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VPbmJvYXJkaW5nTmF2aWdhdCIsImhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiZW1vamlQb3J0YWxaSW5kZXgiLCJtb2RlbERyb3Bkb3duWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwib3Blbk1vZGFsQWlNb2RlbCIsInNldE9wZW5Nb2RhbEFpTW9kZWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3Bkb3duUG9zaXRpb24iLCJzZXREcm9wZG93blBvc2l0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJmb2N1c2VkRmllbGQiLCJzZXRGb2N1c2VkRmllbGQiLCJzZWxlY3RvclJlZiIsIl91c2VTdGF0ZTciLCJuYW1lIiwiZ2VuZXJhbCIsImFpTW9kZWwiLCJpbnB1dFBsYWNlaG9sZGVyIiwiaW50cm9kdWN0aW9uIiwidXNlclByb21wdCIsImVtb2ppIiwiX3VzZVN0YXRlOCIsImZvcm1WYWx1ZXMiLCJzZXRGb3JtVmFsdWVzIiwiYXZhaWxhYmxlQWdlbnRNb2RlbHMiLCJkcm9wZG93bkhlaWdodCIsImxlbmd0aCIsInVwZGF0ZURyb3Bkb3duUG9zaXRpb24iLCJjdXJyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGFuZGxlT3Blbk1vZGFsQWlNb2RlbCIsInNlbGVjdE1vZGVsIiwicHJldiIsImhhbmRsZVNlbGVjdE1vZGVsIiwibW9kZWwiLCJldmVudCIsIl9mb3JtVmFsdWVzJGFpTW9kZWwiLCJzdG9wUHJvcGFnYXRpb24iLCJpZCIsImNob29zZU1vZGVsIiwib3B0aW9uIiwiZGlzcGxheV9uYW1lIiwiX29iamVjdFNwcmVhZCIsImtleSIsInZhbHVlIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiaXNJbk1vZGFsIiwiY2xvc2VzdCIsImlzSW5PcHRpb24iLCJoYW5kbGVLZXlEb3duIiwicHJldmVudERlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5kZWZpbmVkIiwiaGFuZGxlUmVwb3NpdGlvbiIsIndpbmRvdyIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlZCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwidG9wIiwibGVmdCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInpJbmRleCIsIlN0cmluZyIsIl9jb250YWluZXIiLCJwYXJlbnROb2RlIiwiaGFzQ2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwiaGFuZGxlU2V0R2VuZXJhbFZhbHVlcyIsImhhbmRsZVNlbGVjdEVtb2ppIiwiaGFuZGxlRm9jdXMiLCJmaWVsZE5hbWUiLCJoYW5kbGVCbHVyIiwicmVuZGVyTW9kZWxEcm9wZG93biIsIiRsZWZ0IiwiJHdpZHRoIiwid2lkdGgiLCIkdG9wIiwiJGJvdHRvbSIsImJvdHRvbSIsIiR6SW5kZXgiLCIkcGxhY2VtZW50IiwicGxhY2VtZW50IiwiY2hpbGRyZW4iLCJtYXAiLCJfZm9ybVZhbHVlcyRhaU1vZGVsMiIsIl9mb3JtVmFsdWVzJGFpTW9kZWwzIiwiaXNTZWxlY3RlZCIsIm9uQ2xpY2siLCJrZXl3b3JkIiwiJGluZGV4IiwiY3JlYXRlZF9ieSIsInRpdGxlIiwiaXNfZGVsZXRlZCIsInBvcnRhbElkIiwib25TZWxlY3QiLCJyZW5kZXJDb21wb25lbnQiLCJhIiwicmVmIiwiaWNvblJlZiIsInR5cGUiLCJoYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3QiLCJoZWlnaHQiLCJjb2xvciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ0b1N0cmluZyIsImxhYmVsIiwiY29uY2F0IiwicGxhY2Vob2xkZXIiLCJlcnJvck1lc3NhZ2UiLCJvbkNoYW5nZSIsImlucHV0S2V5IiwibWF4TGVuZ3RoIiwiaXNUcmltbWVkIiwiaGFuZGxlQ2hhbmdlIiwiY3VzdG9tSGVpZ2h0IiwiZW5kSWNvbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwiZGlzYWJsZSIsIm9wZW4iLCJoaWRkZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1HZW5lcmFsU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BsdXMnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgT3BlbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL09wZW4nXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgQnV0dG9uRW1vamkgfSBmcm9tICdAcHJvamVjdGNvci9lbW9qaS1yZWFjdGlvbidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHR5cGUgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQWdlbnRNYWlhSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0FnZW50TWFpYUljb24nXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uLy4uL2F0b21zL0lucHV0J1xuaW1wb3J0IHtcbiAgU0NBR1NXcmFwcGVyU2VsZWN0b3IsXG4gIFNDQUdTU2VsZWN0b3JNb2RhbCxcbiAgU0NBR1NPcHRpb24sXG4gIFNDQUdTT3B0aW9uTGFiZWwsXG4gIFNDQUdTT3B0aW9uRGVzY3JpcHRpb24sXG4gIFNDQUdTU2VsZWN0b3JNb2RhbENvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppLFxuICBTQ0FHU1dyYXBwZXJBZGRJY29uLFxuICBTQ0FHU0J1dHRvbkVtb2ppLFxuICBTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppSWNvbixcbiAgU0NBR1NXcmFwcGVyLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXIsXG4gIFNDQUdTV3JhcHBlckhlYWRlclRpdGxlLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCxcbiAgU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkLFxuICBTQ0FHU0dlbmVyYWxDYXJkLFxuICBTQ0FHU0ZpZWxkU3VyZmFjZSxcbiAgU0NBR1NOb01vZGVsc0F2YWlsYWJsZSxcbiAgU0NBR1NPcHRpb25hbEZpZWxkcyxcbiAgU0NBR1NPcHRpb25hbExhYmVsLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ3VzdG9tVGV4dEFyZWEgfSBmcm9tICcuLi8uLi9hdG9tcy9UZXh0QXJlYS9DdXN0b21UZXh0QXJlYSdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlT25ib2FyZGluZ05hdmlnYXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VPbmJvYXJkaW5nTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHtcbiAgY29tcHV0ZU1vZGVsRHJvcGRvd25IZWlnaHQsXG4gIEVNT0pJX1BPUlRBTF9JRCxcbiAgZmlsdGVyQXZhaWxhYmxlQWdlbnRNb2RlbHMsXG4gIHJlc29sdmVEcm9wZG93blBvc2l0aW9uLFxuICBWQUxJREFUSU9OX0ZJRUxEU19SVUxFUyxcbiAgdHlwZSBEcm9wZG93blBvc2l0aW9uLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLmhlbHBlcnMnXG5cbmNvbnN0IHZhbGlkYXRpb25GaWVsZHNSdWxlcyA9IFZBTElEQVRJT05fRklFTERTX1JVTEVTXG5cbmV4cG9ydCBjb25zdCBBYm1HZW5lcmFsU2VjdGlvbiA9ICh7XG4gIHZhbHVlcyxcbiAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMsXG4gIGFnZW50TW9kZWxzLFxuICBsb2FkaW5nLFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbiAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXVxuICBsb2FkaW5nOiBib29sZWFuXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbn0pID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2FibV9hZ2VudF9zZWN0aW9uJ10pXG4gIGNvbnN0IHsgaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24gfSA9IHVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKClcbiAgY29uc3QgZW1vamlQb3J0YWxaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IG1vZGVsRHJvcGRvd25aSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IFtvcGVuTW9kYWxBaU1vZGVsLCBzZXRPcGVuTW9kYWxBaU1vZGVsXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZHJvcGRvd25Qb3NpdGlvbiwgc2V0RHJvcGRvd25Qb3NpdGlvbl0gPSB1c2VTdGF0ZTxEcm9wZG93blBvc2l0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2ZvY3VzZWRGaWVsZCwgc2V0Rm9jdXNlZEZpZWxkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHNlbGVjdG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIGNvbnN0IFtmb3JtVmFsdWVzLCBzZXRGb3JtVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBhaU1vZGVsOiBBZ2VudE1vZGVsIHwgbnVsbFxuICAgIGlucHV0UGxhY2Vob2xkZXI6IHN0cmluZ1xuICAgIGludHJvZHVjdGlvbjogc3RyaW5nXG4gICAgdXNlclByb21wdDogc3RyaW5nXG4gICAgZW1vamk6IHN0cmluZ1xuICB9Pih7XG4gICAgbmFtZTogdmFsdWVzLmdlbmVyYWwubmFtZSB8fCAnJyxcbiAgICBhaU1vZGVsOiB2YWx1ZXMuZ2VuZXJhbC5haU1vZGVsLFxuICAgIGlucHV0UGxhY2Vob2xkZXI6IHZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgfHwgJycsXG4gICAgaW50cm9kdWN0aW9uOiB2YWx1ZXMuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24gfHwgJycsXG4gICAgdXNlclByb21wdDogdmFsdWVzLmdlbmVyYWwudXNlclByb21wdCB8fCAnJyxcbiAgICBlbW9qaTogdmFsdWVzLmdlbmVyYWwuZW1vamkgfHwgJycsXG4gIH0pXG5cbiAgY29uc3QgYXZhaWxhYmxlQWdlbnRNb2RlbHMgPSB1c2VNZW1vKCgpID0+IGZpbHRlckF2YWlsYWJsZUFnZW50TW9kZWxzKGFnZW50TW9kZWxzKSwgW2FnZW50TW9kZWxzXSlcblxuICBjb25zdCBkcm9wZG93bkhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gY29tcHV0ZU1vZGVsRHJvcGRvd25IZWlnaHQoYXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoKSxcbiAgICBbYXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoXVxuICApXG5cbiAgY29uc3QgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNlbGVjdG9yUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIHNldERyb3Bkb3duUG9zaXRpb24ocmVzb2x2ZURyb3Bkb3duUG9zaXRpb24oc2VsZWN0b3JSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgZHJvcGRvd25IZWlnaHQpKVxuICB9LCBbZHJvcGRvd25IZWlnaHRdKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbEFpTW9kZWwgPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLnNlbGVjdE1vZGVsKVxuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCkge1xuICAgICAgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpXG4gICAgfVxuICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwocHJldiA9PiAhcHJldilcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE1vZGVsID0gKG1vZGVsOiBBZ2VudE1vZGVsLCBldmVudD86IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICAgIGlmIChtb2RlbC5pZCAhPT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWQpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jaG9vc2VNb2RlbCwgeyBvcHRpb246IG1vZGVsLmRpc3BsYXlfbmFtZSB9KVxuICAgICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGFpTW9kZWw6IG1vZGVsLFxuICAgICAgfSkpXG4gICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcyh7IGtleTogJ2FpTW9kZWwnLCB2YWx1ZTogbW9kZWwgfSlcbiAgICB9XG4gICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgaWYgKG9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICAgIGNvbnN0IGlzSW5Nb2RhbCA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1zZWxlY3Rvci1tb2RhbF0nKVxuICAgICAgICBjb25zdCBpc0luT3B0aW9uID0gdGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXNlbGVjdG9yLW9wdGlvbl0nKVxuXG4gICAgICAgIGlmICghaXNJbk1vZGFsICYmICFpc0luT3B0aW9uKSB7XG4gICAgICAgICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnICYmIG9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICBzZXRPcGVuTW9kYWxBaU1vZGVsKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bilcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFtvcGVuTW9kYWxBaU1vZGVsXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUmVwb3NpdGlvbiA9ICgpID0+IHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXBvc2l0aW9uKVxuICAgIC8vIGNhcHR1cmU6IGVsIEFCTSBzY3JvbGxlYSBlbiBjb250ZW5lZG9yZXMgaW50ZXJub3MsIG5vIGVuIHdpbmRvd1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB0cnVlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB0cnVlKVxuICAgIH1cbiAgfSwgW29wZW5Nb2RhbEFpTW9kZWwsIHVwZGF0ZURyb3Bkb3duUG9zaXRpb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEVNT0pJX1BPUlRBTF9JRClcbiAgICBjb25zdCBjcmVhdGVkID0gIWNvbnRhaW5lclxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgICAgY29udGFpbmVyLmlkID0gRU1PSklfUE9SVEFMX0lEXG4gICAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnXG4gICAgICBjb250YWluZXIuc3R5bGUudG9wID0gJzAnXG4gICAgICBjb250YWluZXIuc3R5bGUubGVmdCA9ICcwJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpXG4gICAgfVxuICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSBTdHJpbmcoZW1vamlQb3J0YWxaSW5kZXgpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjcmVhdGVkICYmIGNvbnRhaW5lcj8ucGFyZW50Tm9kZSAmJiAhY29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICBjb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250YWluZXIpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZW1vamlQb3J0YWxaSW5kZXhdKVxuXG4gIGNvbnN0IGhhbmRsZVNldEdlbmVyYWxWYWx1ZXMgPSAodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcyh7IGtleSwgdmFsdWUgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEVtb2ppID0gZW1vamkgPT4ge1xuICAgIGhhbmRsZVNldEdlbmVyYWxWYWx1ZXMoZW1vamkuZW1vamksICdlbW9qaScpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGb2N1cyA9IChmaWVsZE5hbWU6IHN0cmluZykgPT4ge1xuICAgIHNldEZvY3VzZWRGaWVsZChmaWVsZE5hbWUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgIHNldEZvY3VzZWRGaWVsZChudWxsKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGb3JtVmFsdWVzKHtcbiAgICAgIG5hbWU6IHZhbHVlcy5nZW5lcmFsLm5hbWUgfHwgJycsXG4gICAgICBhaU1vZGVsOiB2YWx1ZXMuZ2VuZXJhbC5haU1vZGVsLFxuICAgICAgaW5wdXRQbGFjZWhvbGRlcjogdmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciB8fCAnJyxcbiAgICAgIGludHJvZHVjdGlvbjogdmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uIHx8ICcnLFxuICAgICAgdXNlclByb21wdDogdmFsdWVzLmdlbmVyYWwudXNlclByb21wdCB8fCAnJyxcbiAgICAgIGVtb2ppOiB2YWx1ZXMuZ2VuZXJhbC5lbW9qaSB8fCAnJyxcbiAgICB9KVxuICB9LCBbdmFsdWVzLmdlbmVyYWxdKVxuXG4gIGNvbnN0IHJlbmRlck1vZGVsRHJvcGRvd24gPSAoKSA9PiB7XG4gICAgaWYgKCFvcGVuTW9kYWxBaU1vZGVsIHx8ICFkcm9wZG93blBvc2l0aW9uKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0FHU1NlbGVjdG9yTW9kYWxcbiAgICAgICAgZGF0YS1zZWxlY3Rvci1tb2RhbFxuICAgICAgICAkbGVmdD17ZHJvcGRvd25Qb3NpdGlvbi5sZWZ0fVxuICAgICAgICAkd2lkdGg9e2Ryb3Bkb3duUG9zaXRpb24ud2lkdGh9XG4gICAgICAgICR0b3A9e2Ryb3Bkb3duUG9zaXRpb24udG9wfVxuICAgICAgICAkYm90dG9tPXtkcm9wZG93blBvc2l0aW9uLmJvdHRvbX1cbiAgICAgICAgJHpJbmRleD17bW9kZWxEcm9wZG93blpJbmRleH1cbiAgICAgICAgJHBsYWNlbWVudD17ZHJvcGRvd25Qb3NpdGlvbi5wbGFjZW1lbnR9XG4gICAgICA+XG4gICAgICAgIDxTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50PlxuICAgICAgICAgIHthdmFpbGFibGVBZ2VudE1vZGVscy5sZW5ndGggPT09IDAgJiYgIWxvYWRpbmcgPyAoXG4gICAgICAgICAgICA8U0NBR1NOb01vZGVsc0F2YWlsYWJsZT57dCgnZ2VuZXJhbFNlY3Rpb24ubm9Nb2RlbHNBdmFpbGFibGUnKX08L1NDQUdTTm9Nb2RlbHNBdmFpbGFibGU+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIGF2YWlsYWJsZUFnZW50TW9kZWxzLm1hcChtb2RlbCA9PiAoXG4gICAgICAgICAgICAgIDxTQ0FHU09wdGlvblxuICAgICAgICAgICAgICAgIGtleT17bW9kZWwuaWR9XG4gICAgICAgICAgICAgICAgdmFsdWU9e21vZGVsLmlkfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e21vZGVsLmlkID09PSBmb3JtVmFsdWVzPy5haU1vZGVsPy5pZH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVTZWxlY3RNb2RlbChtb2RlbCwgZXZlbnQpfVxuICAgICAgICAgICAgICAgIGRhdGEtc2VsZWN0b3Itb3B0aW9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U0NBR1NPcHRpb25MYWJlbCBpc1NlbGVjdGVkPXttb2RlbC5pZCA9PT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWR9PlxuICAgICAgICAgICAgICAgICAge21vZGVsLmRpc3BsYXlfbmFtZX1cbiAgICAgICAgICAgICAgICA8L1NDQUdTT3B0aW9uTGFiZWw+XG4gICAgICAgICAgICAgICAge21vZGVsLmtleXdvcmQgJiYgPFNDQUdTT3B0aW9uRGVzY3JpcHRpb24+e21vZGVsLmtleXdvcmR9PC9TQ0FHU09wdGlvbkRlc2NyaXB0aW9uPn1cbiAgICAgICAgICAgICAgPC9TQ0FHU09wdGlvbj5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50PlxuICAgICAgPC9TQ0FHU1NlbGVjdG9yTW9kYWw+LFxuICAgICAgZG9jdW1lbnQuYm9keVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDQUdTV3JhcHBlciBvcGVuTW9kYWxBaU1vZGVsPXtvcGVuTW9kYWxBaU1vZGVsfT5cbiAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXIgJGluZGV4PXswfT5cbiAgICAgICAgPFNDQUdTV3JhcHBlckhlYWRlclRpdGxlPlxuICAgICAgICAgIDxzcGFuPnt0KCdnZW5lcmFsU2VjdGlvbi5nZW5lcmFsU2V0dGluZ3MnKX08L3NwYW4+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQ+e3QoJ2dlbmVyYWxTZWN0aW9uLnJlcXVpcmVkRmllbGRzTGFiZWwnKX08L1NDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVySGVhZGVyVGl0bGU+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvPnt0KCdnZW5lcmFsU2VjdGlvbi5pbmZvTGFiZWwnKX08L1NDQUdTV3JhcHBlckhlYWRlckluZm8+XG4gICAgICA8L1NDQUdTV3JhcHBlckhlYWRlcj5cbiAgICAgIHsnY3JlYXRlZF9ieScgaW4gdmFsdWVzLmdlbmVyYWwgJiYgdmFsdWVzLmdlbmVyYWwuY3JlYXRlZF9ieSAmJiAoXG4gICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgekluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgIHZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWRcbiAgICAgICAgICAgICAgPyB0KCdnZW5lcmFsU2VjdGlvbi5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpXG4gICAgICAgICAgICAgIDogdCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICB7dCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZT57dmFsdWVzLmdlbmVyYWwuY3JlYXRlZF9ieT8ubmFtZX08L1NDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVySGVhZGVyQ3JlYXRlZEJ5VGV4dD5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICAgIDxTQ0FHU0dlbmVyYWxDYXJkICRpbmRleD17MX0+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJDb250ZW50PlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJFbW9qaT5cbiAgICAgICAgICAgIDxCdXR0b25FbW9qaVxuICAgICAgICAgICAgICBwb3J0YWxJZD17RU1PSklfUE9SVEFMX0lEfVxuICAgICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0RW1vaml9XG4gICAgICAgICAgICAgIHJlbmRlckNvbXBvbmVudD17YSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxTQ0FHU0J1dHRvbkVtb2ppXG4gICAgICAgICAgICAgICAgICAgIHJlZj17YS5pY29uUmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17YS5oYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3R9XG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWdlbmVyYWwtZW1vamktYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUdTV3JhcHBlckVtb2ppQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBR1NXcmFwcGVyRW1vamlJY29uPntmb3JtVmFsdWVzLmVtb2ppIHx8IDxBZ2VudE1haWFJY29uIC8+fTwvU0NBR1NXcmFwcGVyRW1vamlJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJBZGRJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXMgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSBjb2xvcj1cInJnYmEoMTM1LCA2NCwgMTkxLCAxKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FHU1dyYXBwZXJBZGRJY29uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUdTV3JhcHBlckVtb2ppQ29udGVudD5cbiAgICAgICAgICAgICAgICAgIDwvU0NBR1NCdXR0b25FbW9qaT5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNvbXBhbnlJZD17dXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyRW1vamk+XG4gICAgICAgICAgPFNDQUdTRmllbGRTdXJmYWNlPlxuICAgICAgICAgICAgPEN1c3RvbUlucHV0XG4gICAgICAgICAgICAgIGxhYmVsPXtgJHt0KCdnZW5lcmFsU2VjdGlvbi5uYW1lJyl9ICogKCR7dmFsdWVzLmdlbmVyYWwubmFtZS5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMubmFtZX0pYH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLm5hbWVQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVyTmFtZScpfVxuICAgICAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8ubmFtZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVNldEdlbmVyYWxWYWx1ZXN9XG4gICAgICAgICAgICAgIGlucHV0S2V5PVwibmFtZVwiXG4gICAgICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgZm9jdXNlZEZpZWxkPXtmb2N1c2VkRmllbGR9XG4gICAgICAgICAgICAgIG1heExlbmd0aD17dmFsaWRhdGlvbkZpZWxkc1J1bGVzLm5hbWV9XG4gICAgICAgICAgICAgIGlzVHJpbW1lZFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQUdTRmllbGRTdXJmYWNlPlxuICAgICAgICA8L1NDQUdTV3JhcHBlckNvbnRlbnQ+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nPlxuICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgIDxDdXN0b21UZXh0QXJlYVxuICAgICAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW5pdGlhbFByb21wdCcpfSAqICgke3ZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQ/Lmxlbmd0aCB8fCAwfS0ke3ZhbGlkYXRpb25GaWVsZHNSdWxlcy51c2VyUHJvbXB0fSlgfVxuICAgICAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8udXNlclByb21wdH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2hhbmRsZVNldEdlbmVyYWxWYWx1ZXN9XG4gICAgICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgZm9jdXNlZEZpZWxkPXtmb2N1c2VkRmllbGR9XG4gICAgICAgICAgICAgIGlucHV0S2V5PVwidXNlclByb21wdFwiXG4gICAgICAgICAgICAgIG1heExlbmd0aD17dmFsaWRhdGlvbkZpZWxkc1J1bGVzLnVzZXJQcm9tcHR9XG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZT17dCgnZ2VuZXJhbFNlY3Rpb24uZXJyb3IubWF4Q2FyYWN0ZXJJbml0aWFsUHJvbXB0Jyl9XG4gICAgICAgICAgICAgIGN1c3RvbUhlaWdodD17MTcwfVxuICAgICAgICAgICAgICBpc1RyaW1tZWRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQgb25DbGljaz17KCkgPT4gaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24oJ2hvd1RvV3JpdGVQcm9tcHQnKX0+XG4gICAgICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQ+e3QoJ2dlbmVyYWxTZWN0aW9uLmhvd1RvV3JpdGVQcm9tcHQnKX08L1NDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0PnsnICd9XG4gICAgICAgICAgICA8T3BlbiB3aWR0aD17MTJ9IGhlaWdodD17MTJ9IGNvbG9yPVwiIzAwNmZhZlwiIC8+XG4gICAgICAgICAgPC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudD5cbiAgICAgICAgPC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nPlxuICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyU2VsZWN0b3IgcmVmPXtzZWxlY3RvclJlZn0gZGF0YS1zZWxlY3Rvci1tb2RhbD5cbiAgICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgICAgPENVU2VsZWN0XG4gICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2dlbmVyYWxTZWN0aW9uLm1vZGVsQWlMYWJlbCcpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtsb2FkaW5nID8gJ0NhcmdhbmRvIG1vZGVsb3MuLi4nIDogJ1NlbGVjY2lvbmFyIG1vZGVsbyd9XG4gICAgICAgICAgICAgICAgZW5kSWNvbj17PENoZXZyb25Eb3duIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiBjb2xvcj17bG9hZGluZyA/ICcjYmZiZmJmJyA6ICcjOTk5OTk5J30gLz59XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2tBY3Rpb249e2hhbmRsZU9wZW5Nb2RhbEFpTW9kZWx9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LmFpTW9kZWw/LmRpc3BsYXlfbmFtZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlPXtsb2FkaW5nfVxuICAgICAgICAgICAgICAgIG9wZW49e29wZW5Nb2RhbEFpTW9kZWx9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7LyogQ1VTZWxlY3QgZXhpZ2UgY2hpbGRyZW4gcGFyYSBoYWJpbGl0YXIgZWwgY2xpY2s7IGVsIG1lbsO6IHJlYWwgdmEgcG9yIHBvcnRhbC4gKi99XG4gICAgICAgICAgICAgICAgPHNwYW4gaGlkZGVuIGFyaWEtaGlkZGVuIC8+XG4gICAgICAgICAgICAgIDwvQ1VTZWxlY3Q+XG4gICAgICAgICAgICA8L1NDQUdTRmllbGRTdXJmYWNlPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyU2VsZWN0b3I+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50IG9uQ2xpY2s9eygpID0+IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKCd3aGF0SXNNb2RlbEFpJyl9PlxuICAgICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0Pnt0KCdnZW5lcmFsU2VjdGlvbi53aGF0SXNNb2RlbEFpJyl9PC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57JyAnfVxuICAgICAgICAgICAgPE9wZW4gd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSBjb2xvcj1cIiMwMDZmYWZcIiAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgIDwvU0NBR1NHZW5lcmFsQ2FyZD5cbiAgICAgIDxTQ0FHU09wdGlvbmFsRmllbGRzICRpbmRleD17Mn0+XG4gICAgICAgIDxTQ0FHU09wdGlvbmFsTGFiZWw+e3QoJ2dlbmVyYWxTZWN0aW9uLm9wdGlvbmFsTGFiZWwnKX08L1NDQUdTT3B0aW9uYWxMYWJlbD5cbiAgICAgICAgPEN1c3RvbVRleHRBcmVhXG4gICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LmludHJvZHVjdGlvbn1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnZ2VuZXJhbFNlY3Rpb24uaW50cm9kdWN0aW9uUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2hhbmRsZVNldEdlbmVyYWxWYWx1ZXN9XG4gICAgICAgICAgaGFuZGxlRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgZm9jdXNlZEZpZWxkPXtmb2N1c2VkRmllbGR9XG4gICAgICAgICAgaW5wdXRLZXk9XCJpbnRyb2R1Y3Rpb25cIlxuICAgICAgICAgIGxhYmVsPXtgJHt0KCdnZW5lcmFsU2VjdGlvbi5pbnRyb2R1Y3Rpb24nKX0gKCR7dmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uPy5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMuaW50cm9kdWN0aW9ufSlgfVxuICAgICAgICAgIGVycm9yTWVzc2FnZT17dCgnZ2VuZXJhbFNlY3Rpb24uZXJyb3IubWF4Q2FyYWN0ZXJJbnRyb2R1Y3Rpb24nKX1cbiAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnRyb2R1Y3Rpb259XG4gICAgICAgIC8+XG4gICAgICAgIDxDdXN0b21JbnB1dFxuICAgICAgICAgIGxhYmVsPXtgJHt0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyVGl0bGUnKX0gKCR7dmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlcj8ubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmlucHV0UGxhY2Vob2xkZXJ9KWB9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmlucHV0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICBpbnB1dEtleT1cImlucHV0UGxhY2Vob2xkZXJcIlxuICAgICAgICAgIGVycm9yTWVzc2FnZT17dCgnZ2VuZXJhbFNlY3Rpb24uZXJyb3IubWF4SW5wdXRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5pbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICBoYW5kbGVCbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgIG1heExlbmd0aD17dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmlucHV0UGxhY2Vob2xkZXJ9XG4gICAgICAgIC8+XG4gICAgICA8L1NDQUdTT3B0aW9uYWxGaWVsZHM+XG4gICAgICB7cmVuZGVyTW9kZWxEcm9wZG93bigpfVxuICAgIDwvU0NBR1NXcmFwcGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBLE9BQU9BLEtBQUssSUFBSUMsU0FBUyxFQUFFQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxXQUFXLFFBQVEsT0FBTztBQUNoRixTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxRQUFRLFFBQVEsOENBQThDO0FBQ3ZFLFNBQVNDLFdBQVcsUUFBUSw0QkFBNEI7QUFDeEQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUV0RSxTQUFTQyxhQUFhLFFBQVEsaUNBQWlDO0FBQy9ELFNBQVNDLFdBQVcsUUFBUSxtQkFBbUI7QUFDL0MsU0FDRUMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsZ0JBQWdCLEVBQ2hCQyxzQkFBc0IsRUFDdEJDLHlCQUF5QixFQUN6QkMsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFDakJDLG1CQUFtQixFQUNuQkMsZ0JBQWdCLEVBQ2hCQyx3QkFB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
|
|
415
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwiY3JlYXRlUG9ydGFsIiwiUGx1cyIsIkNoZXZyb25Eb3duIiwiT3BlbiIsIkNVU2VsZWN0IiwiQnV0dG9uRW1vamkiLCJ1c2VUcmFuc2xhdGlvbiIsIlRvb2x0aXAiLCJBZ2VudE1haWFJY29uIiwiQ3VzdG9tSW5wdXQiLCJTQ0FHU1dyYXBwZXJTZWxlY3RvciIsIlNDQUdTU2VsZWN0b3JNb2RhbCIsIlNDQUdTT3B0aW9uIiwiU0NBR1NPcHRpb25MYWJlbCIsIlNDQUdTT3B0aW9uRGVzY3JpcHRpb24iLCJTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50IiwiU0NBR1NXcmFwcGVyQ29udGVudCIsIlNDQUdTV3JhcHBlckVtb2ppIiwiU0NBR1NXcmFwcGVyQWRkSWNvbiIsIlNDQUdTQnV0dG9uRW1vamkiLCJTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQiLCJTQ0FHU1dyYXBwZXJFbW9qaUljb24iLCJTQ0FHU1dyYXBwZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZSIsIlNDQUdTV3JhcHBlckhlYWRlckluZm8iLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nIiwiU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQiLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dCIsIlNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQiLCJTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQiLCJTQ0FHU0dlbmVyYWxDYXJkIiwiU0NBR1NGaWVsZFN1cmZhY2UiLCJTQ0FHU05vTW9kZWxzQXZhaWxhYmxlIiwiU0NBR1NPcHRpb25hbEZpZWxkcyIsIlNDQUdTT3B0aW9uYWxMYWJlbCIsIkN1c3RvbVRleHRBcmVhIiwidXNlVXNlciIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlT25ib2FyZGluZ05hdmlnYXRpb24iLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsInZhbGlkYXRpb25GaWVsZHNSdWxlcyIsIm5hbWUiLCJ1c2VyUHJvbXB0IiwiaW5wdXRQbGFjZWhvbGRlciIsImludHJvZHVjdGlvbiIsIk1PREVMX09QVElPTl9IRUlHSFQiLCJNT0RFTF9EUk9QRE9XTl9NQVhfSEVJR0hUIiwiTU9ERUxfRFJPUERPV05fR0FQIiwicmVzb2x2ZURyb3Bkb3duUG9zaXRpb24iLCJhbmNob3IiLCJkcm9wZG93bkhlaWdodCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzcGFjZUJlbG93Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJzcGFjZUFib3ZlIiwidG9wIiwicGxhY2VtZW50IiwibGVmdCIsIndpZHRoIiwiRU1PSklfUE9SVEFMX0lEIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJfcmVmIiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0IiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0MiIsIl92YWx1ZXMkZ2VuZXJhbCR1c2VyUCIsIl9mb3JtVmFsdWVzJGFpTW9kZWw0IiwiX3ZhbHVlcyRnZW5lcmFsJGludHJvIiwiX3ZhbHVlcyRnZW5lcmFsJGlucHV0IiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJhZ2VudE1vZGVscyIsImxvYWRpbmciLCJ0b29sdGlwWkluZGV4IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VPbmJvYXJkaW5nTmF2aWdhdCIsImhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiZW1vamlQb3J0YWxaSW5kZXgiLCJtb2RlbERyb3Bkb3duWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwib3Blbk1vZGFsQWlNb2RlbCIsInNldE9wZW5Nb2RhbEFpTW9kZWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3Bkb3duUG9zaXRpb24iLCJzZXREcm9wZG93blBvc2l0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJmb2N1c2VkRmllbGQiLCJzZXRGb2N1c2VkRmllbGQiLCJzZWxlY3RvclJlZiIsIl91c2VTdGF0ZTciLCJnZW5lcmFsIiwiYWlNb2RlbCIsImVtb2ppIiwiX3VzZVN0YXRlOCIsImZvcm1WYWx1ZXMiLCJzZXRGb3JtVmFsdWVzIiwiYXZhaWxhYmxlQWdlbnRNb2RlbHMiLCJmaWx0ZXIiLCJtb2RlbCIsImlzX2RlcHJlY2F0ZWQiLCJNYXRoIiwibWluIiwibGVuZ3RoIiwidXBkYXRlRHJvcGRvd25Qb3NpdGlvbiIsImN1cnJlbnQiLCJoYW5kbGVPcGVuTW9kYWxBaU1vZGVsIiwic2VsZWN0TW9kZWwiLCJwcmV2IiwiaGFuZGxlU2VsZWN0TW9kZWwiLCJldmVudCIsIl9mb3JtVmFsdWVzJGFpTW9kZWwiLCJzdG9wUHJvcGFnYXRpb24iLCJpZCIsImNob29zZU1vZGVsIiwib3B0aW9uIiwiZGlzcGxheV9uYW1lIiwiX29iamVjdFNwcmVhZCIsImtleSIsInZhbHVlIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiaXNJbk1vZGFsIiwiY2xvc2VzdCIsImlzSW5PcHRpb24iLCJoYW5kbGVLZXlEb3duIiwicHJldmVudERlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5kZWZpbmVkIiwiaGFuZGxlUmVwb3NpdGlvbiIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlZCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwiYm9keSIsImFwcGVuZENoaWxkIiwiekluZGV4IiwiU3RyaW5nIiwiX2NvbnRhaW5lciIsInBhcmVudE5vZGUiLCJoYXNDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGQiLCJoYW5kbGVTZXRHZW5lcmFsVmFsdWVzIiwiaGFuZGxlU2VsZWN0RW1vamkiLCJoYW5kbGVGb2N1cyIsImZpZWxkTmFtZSIsImhhbmRsZUJsdXIiLCJyZW5kZXJNb2RlbERyb3Bkb3duIiwiJGxlZnQiLCIkd2lkdGgiLCIkdG9wIiwiJGJvdHRvbSIsIiR6SW5kZXgiLCIkcGxhY2VtZW50IiwiY2hpbGRyZW4iLCJtYXAiLCJfZm9ybVZhbHVlcyRhaU1vZGVsMiIsIl9mb3JtVmFsdWVzJGFpTW9kZWwzIiwiaXNTZWxlY3RlZCIsIm9uQ2xpY2siLCJrZXl3b3JkIiwiJGluZGV4IiwiY3JlYXRlZF9ieSIsInRpdGxlIiwiaXNfZGVsZXRlZCIsInBvcnRhbElkIiwib25TZWxlY3QiLCJyZW5kZXJDb21wb25lbnQiLCJhIiwicmVmIiwiaWNvblJlZiIsInR5cGUiLCJoYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3QiLCJoZWlnaHQiLCJjb2xvciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ0b1N0cmluZyIsImxhYmVsIiwiY29uY2F0IiwicGxhY2Vob2xkZXIiLCJlcnJvck1lc3NhZ2UiLCJvbkNoYW5nZSIsImlucHV0S2V5IiwibWF4TGVuZ3RoIiwiaXNUcmltbWVkIiwiaGFuZGxlQ2hhbmdlIiwiY3VzdG9tSGVpZ2h0IiwiZW5kSWNvbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwiZGlzYWJsZSIsIm9wZW4iLCJoaWRkZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1HZW5lcmFsU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BsdXMnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgT3BlbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL09wZW4nXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgQnV0dG9uRW1vamkgfSBmcm9tICdAcHJvamVjdGNvci9lbW9qaS1yZWFjdGlvbidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHR5cGUgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQWdlbnRNYWlhSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0FnZW50TWFpYUljb24nXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uLy4uL2F0b21zL0lucHV0J1xuaW1wb3J0IHtcbiAgU0NBR1NXcmFwcGVyU2VsZWN0b3IsXG4gIFNDQUdTU2VsZWN0b3JNb2RhbCxcbiAgU0NBR1NPcHRpb24sXG4gIFNDQUdTT3B0aW9uTGFiZWwsXG4gIFNDQUdTT3B0aW9uRGVzY3JpcHRpb24sXG4gIFNDQUdTU2VsZWN0b3JNb2RhbENvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppLFxuICBTQ0FHU1dyYXBwZXJBZGRJY29uLFxuICBTQ0FHU0J1dHRvbkVtb2ppLFxuICBTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppSWNvbixcbiAgU0NBR1NXcmFwcGVyLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXIsXG4gIFNDQUdTV3JhcHBlckhlYWRlclRpdGxlLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCxcbiAgU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkLFxuICBTQ0FHU0dlbmVyYWxDYXJkLFxuICBTQ0FHU0ZpZWxkU3VyZmFjZSxcbiAgU0NBR1NOb01vZGVsc0F2YWlsYWJsZSxcbiAgU0NBR1NPcHRpb25hbEZpZWxkcyxcbiAgU0NBR1NPcHRpb25hbExhYmVsLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ3VzdG9tVGV4dEFyZWEgfSBmcm9tICcuLi8uLi9hdG9tcy9UZXh0QXJlYS9DdXN0b21UZXh0QXJlYSdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlT25ib2FyZGluZ05hdmlnYXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VPbmJvYXJkaW5nTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuXG5jb25zdCB2YWxpZGF0aW9uRmllbGRzUnVsZXMgPSB7XG4gIG5hbWU6IDE1MCxcbiAgdXNlclByb21wdDogNTAwMCxcbiAgaW5wdXRQbGFjZWhvbGRlcjogMTAwLFxuICBpbnRyb2R1Y3Rpb246IDQwMCxcbn1cblxuY29uc3QgTU9ERUxfT1BUSU9OX0hFSUdIVCA9IDU4XG5jb25zdCBNT0RFTF9EUk9QRE9XTl9NQVhfSEVJR0hUID0gMjQ1XG5jb25zdCBNT0RFTF9EUk9QRE9XTl9HQVAgPSA0XG5cbnR5cGUgRHJvcGRvd25QbGFjZW1lbnQgPSAndG9wJyB8ICdib3R0b20nXG5cbnR5cGUgRHJvcGRvd25Qb3NpdGlvbiA9IHtcbiAgbGVmdDogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgdG9wPzogbnVtYmVyXG4gIGJvdHRvbT86IG51bWJlclxuICBwbGFjZW1lbnQ6IERyb3Bkb3duUGxhY2VtZW50XG59XG5cbmNvbnN0IHJlc29sdmVEcm9wZG93blBvc2l0aW9uID0gKGFuY2hvcjogSFRNTEVsZW1lbnQsIGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIpOiBEcm9wZG93blBvc2l0aW9uID0+IHtcbiAgY29uc3QgcmVjdCA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b21cbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wXG4gIGNvbnN0IHBsYWNlbWVudDogRHJvcGRvd25QbGFjZW1lbnQgPSBzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0IHx8IHNwYWNlQmVsb3cgPj0gc3BhY2VBYm92ZSA/ICdib3R0b20nIDogJ3RvcCdcblxuICBpZiAocGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgIHJldHVybiB7XG4gICAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICAgIHRvcDogcmVjdC5ib3R0b20gKyBNT0RFTF9EUk9QRE9XTl9HQVAsXG4gICAgICBwbGFjZW1lbnQsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiB3aW5kb3cuaW5uZXJIZWlnaHQgLSByZWN0LnRvcCArIE1PREVMX0RST1BET1dOX0dBUCxcbiAgICBwbGFjZW1lbnQsXG4gIH1cbn1cblxuLy8gRWwgcGlja2VyIHNlIHBvcnRlYSBhIHVuIGNvbnRlbmVkb3IgcHJvcGlvIGEgbml2ZWwgZGUgYm9keSBjb24gcG9zaXRpb246Zml4ZWRcbi8vIGVuIGVsIG9yaWdlbiBkZWwgdmlld3BvcnQsIHBhcmEgcXVlIGVsIHBvc2l0aW9uOmFic29sdXRlIHF1ZSBhcGxpY2EgbGEgbGlicmVyw61hXG4vLyBjb2luY2lkYSBjb24gbGFzIGNvb3JkZW5hZGFzIGRlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCAoaW5tdW5lIGFsIHNjcm9sbCkuXG5jb25zdCBFTU9KSV9QT1JUQUxfSUQgPSAnYWJtLWdlbmVyYWwtZW1vamktcG9ydGFsJ1xuXG5leHBvcnQgY29uc3QgQWJtR2VuZXJhbFNlY3Rpb24gPSAoe1xuICB2YWx1ZXMsXG4gIGhhbmRsZVNldEFnZW50VmFsdWVzLFxuICBhZ2VudE1vZGVscyxcbiAgbG9hZGluZyxcbiAgdG9vbHRpcFpJbmRleCxcbn06IHtcbiAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gIGFnZW50TW9kZWxzOiBBZ2VudE1vZGVsW11cbiAgbG9hZGluZzogYm9vbGVhblxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oWydhYm1fYWdlbnRfc2VjdGlvbiddKVxuICBjb25zdCB7IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIH0gPSB1c2VPbmJvYXJkaW5nTmF2aWdhdGlvbigpXG4gIGNvbnN0IGVtb2ppUG9ydGFsWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCBtb2RlbERyb3Bkb3duWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCBbb3Blbk1vZGFsQWlNb2RlbCwgc2V0T3Blbk1vZGFsQWlNb2RlbF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Ryb3Bkb3duUG9zaXRpb24sIHNldERyb3Bkb3duUG9zaXRpb25dID0gdXNlU3RhdGU8RHJvcGRvd25Qb3NpdGlvbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtmb2N1c2VkRmllbGQsIHNldEZvY3VzZWRGaWVsZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBzZWxlY3RvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCBbZm9ybVZhbHVlcywgc2V0Rm9ybVZhbHVlc10gPSB1c2VTdGF0ZTx7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgYWlNb2RlbDogQWdlbnRNb2RlbCB8IG51bGxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgICBpbnRyb2R1Y3Rpb246IHN0cmluZ1xuICAgIHVzZXJQcm9tcHQ6IHN0cmluZ1xuICAgIGVtb2ppOiBzdHJpbmdcbiAgfT4oe1xuICAgIG5hbWU6IHZhbHVlcy5nZW5lcmFsLm5hbWUgfHwgJycsXG4gICAgYWlNb2RlbDogdmFsdWVzLmdlbmVyYWwuYWlNb2RlbCxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiB2YWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyIHx8ICcnLFxuICAgIGludHJvZHVjdGlvbjogdmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uIHx8ICcnLFxuICAgIHVzZXJQcm9tcHQ6IHZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgfHwgJycsXG4gICAgZW1vamk6IHZhbHVlcy5nZW5lcmFsLmVtb2ppIHx8ICcnLFxuICB9KVxuXG4gIGNvbnN0IGF2YWlsYWJsZUFnZW50TW9kZWxzID0gdXNlTWVtbygoKSA9PiBhZ2VudE1vZGVscy5maWx0ZXIobW9kZWwgPT4gIW1vZGVsLmlzX2RlcHJlY2F0ZWQpLCBbYWdlbnRNb2RlbHNdKVxuXG4gIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBNYXRoLm1pbihhdmFpbGFibGVBZ2VudE1vZGVscy5sZW5ndGggKiBNT0RFTF9PUFRJT05fSEVJR0hUICsgMiwgTU9ERUxfRFJPUERPV05fTUFYX0hFSUdIVCksXG4gICAgW2F2YWlsYWJsZUFnZW50TW9kZWxzLmxlbmd0aF1cbiAgKVxuXG4gIGNvbnN0IHVwZGF0ZURyb3Bkb3duUG9zaXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RvclJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBzZXREcm9wZG93blBvc2l0aW9uKHJlc29sdmVEcm9wZG93blBvc2l0aW9uKHNlbGVjdG9yUmVmLmN1cnJlbnQsIGRyb3Bkb3duSGVpZ2h0KSlcbiAgfSwgW2Ryb3Bkb3duSGVpZ2h0XSlcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWxBaU1vZGVsID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5zZWxlY3RNb2RlbClcbiAgICBpZiAoIW9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgIHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKVxuICAgIH1cbiAgICBzZXRPcGVuTW9kYWxBaU1vZGVsKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RNb2RlbCA9IChtb2RlbDogQWdlbnRNb2RlbCwgZXZlbnQ/OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgICBpZiAobW9kZWwuaWQgIT09IGZvcm1WYWx1ZXM/LmFpTW9kZWw/LmlkKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY2hvb3NlTW9kZWwsIHsgb3B0aW9uOiBtb2RlbC5kaXNwbGF5X25hbWUgfSlcbiAgICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBhaU1vZGVsOiBtb2RlbCxcbiAgICAgIH0pKVxuICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMoeyBrZXk6ICdhaU1vZGVsJywgdmFsdWU6IG1vZGVsIH0pXG4gICAgfVxuICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwoZmFsc2UpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGlmIChvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgICBjb25zdCBpc0luTW9kYWwgPSB0YXJnZXQuY2xvc2VzdCgnW2RhdGEtc2VsZWN0b3ItbW9kYWxdJylcbiAgICAgICAgY29uc3QgaXNJbk9wdGlvbiA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1zZWxlY3Rvci1vcHRpb25dJylcblxuICAgICAgICBpZiAoIWlzSW5Nb2RhbCAmJiAhaXNJbk9wdGlvbikge1xuICAgICAgICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiBvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3Blbk1vZGFsQWlNb2RlbCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbb3Blbk1vZGFsQWlNb2RlbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW5Nb2RhbEFpTW9kZWwpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB1cGRhdGVEcm9wZG93blBvc2l0aW9uKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICAvLyBjYXB0dXJlOiBlbCBBQk0gc2Nyb2xsZWEgZW4gY29udGVuZWRvcmVzIGludGVybm9zLCBubyBlbiB3aW5kb3dcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgdHJ1ZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtvcGVuTW9kYWxBaU1vZGVsLCB1cGRhdGVEcm9wZG93blBvc2l0aW9uXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChFTU9KSV9QT1JUQUxfSUQpXG4gICAgY29uc3QgY3JlYXRlZCA9ICFjb250YWluZXJcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICAgIGNvbnRhaW5lci5pZCA9IEVNT0pJX1BPUlRBTF9JRFxuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJ1xuICAgICAgY29udGFpbmVyLnN0eWxlLnRvcCA9ICcwJ1xuICAgICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSAnMCdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKVxuICAgIH1cbiAgICBjb250YWluZXIuc3R5bGUuekluZGV4ID0gU3RyaW5nKGVtb2ppUG9ydGFsWkluZGV4KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoY3JlYXRlZCAmJiBjb250YWluZXI/LnBhcmVudE5vZGUgJiYgIWNvbnRhaW5lci5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udGFpbmVyKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2Vtb2ppUG9ydGFsWkluZGV4XSlcblxuICBjb25zdCBoYW5kbGVTZXRHZW5lcmFsVmFsdWVzID0gKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMoeyBrZXksIHZhbHVlIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RFbW9qaSA9IGVtb2ppID0+IHtcbiAgICBoYW5kbGVTZXRHZW5lcmFsVmFsdWVzKGVtb2ppLmVtb2ppLCAnZW1vamknKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICBzZXRGb2N1c2VkRmllbGQoZmllbGROYW1lKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmx1ciA9ICgpID0+IHtcbiAgICBzZXRGb2N1c2VkRmllbGQobnVsbClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Rm9ybVZhbHVlcyh7XG4gICAgICBuYW1lOiB2YWx1ZXMuZ2VuZXJhbC5uYW1lIHx8ICcnLFxuICAgICAgYWlNb2RlbDogdmFsdWVzLmdlbmVyYWwuYWlNb2RlbCxcbiAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgfHwgJycsXG4gICAgICBpbnRyb2R1Y3Rpb246IHZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbiB8fCAnJyxcbiAgICAgIHVzZXJQcm9tcHQ6IHZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgfHwgJycsXG4gICAgICBlbW9qaTogdmFsdWVzLmdlbmVyYWwuZW1vamkgfHwgJycsXG4gICAgfSlcbiAgfSwgW3ZhbHVlcy5nZW5lcmFsXSlcblxuICBjb25zdCByZW5kZXJNb2RlbERyb3Bkb3duID0gKCkgPT4ge1xuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCB8fCAhZHJvcGRvd25Qb3NpdGlvbikgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgICA8U0NBR1NTZWxlY3Rvck1vZGFsXG4gICAgICAgIGRhdGEtc2VsZWN0b3ItbW9kYWxcbiAgICAgICAgJGxlZnQ9e2Ryb3Bkb3duUG9zaXRpb24ubGVmdH1cbiAgICAgICAgJHdpZHRoPXtkcm9wZG93blBvc2l0aW9uLndpZHRofVxuICAgICAgICAkdG9wPXtkcm9wZG93blBvc2l0aW9uLnRvcH1cbiAgICAgICAgJGJvdHRvbT17ZHJvcGRvd25Qb3NpdGlvbi5ib3R0b219XG4gICAgICAgICR6SW5kZXg9e21vZGVsRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICRwbGFjZW1lbnQ9e2Ryb3Bkb3duUG9zaXRpb24ucGxhY2VtZW50fVxuICAgICAgPlxuICAgICAgICA8U0NBR1NTZWxlY3Rvck1vZGFsQ29udGVudD5cbiAgICAgICAgICB7YXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoID09PSAwICYmICFsb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNDQUdTTm9Nb2RlbHNBdmFpbGFibGU+e3QoJ2dlbmVyYWxTZWN0aW9uLm5vTW9kZWxzQXZhaWxhYmxlJyl9PC9TQ0FHU05vTW9kZWxzQXZhaWxhYmxlPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBhdmFpbGFibGVBZ2VudE1vZGVscy5tYXAobW9kZWwgPT4gKFxuICAgICAgICAgICAgICA8U0NBR1NPcHRpb25cbiAgICAgICAgICAgICAgICBrZXk9e21vZGVsLmlkfVxuICAgICAgICAgICAgICAgIHZhbHVlPXttb2RlbC5pZH1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXttb2RlbC5pZCA9PT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWR9XG4gICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlU2VsZWN0TW9kZWwobW9kZWwsIGV2ZW50KX1cbiAgICAgICAgICAgICAgICBkYXRhLXNlbGVjdG9yLW9wdGlvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQUdTT3B0aW9uTGFiZWwgaXNTZWxlY3RlZD17bW9kZWwuaWQgPT09IGZvcm1WYWx1ZXM/LmFpTW9kZWw/LmlkfT5cbiAgICAgICAgICAgICAgICAgIHttb2RlbC5kaXNwbGF5X25hbWV9XG4gICAgICAgICAgICAgICAgPC9TQ0FHU09wdGlvbkxhYmVsPlxuICAgICAgICAgICAgICAgIHttb2RlbC5rZXl3b3JkICYmIDxTQ0FHU09wdGlvbkRlc2NyaXB0aW9uPnttb2RlbC5rZXl3b3JkfTwvU0NBR1NPcHRpb25EZXNjcmlwdGlvbj59XG4gICAgICAgICAgICAgIDwvU0NBR1NPcHRpb24+XG4gICAgICAgICAgICApKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NBR1NTZWxlY3Rvck1vZGFsQ29udGVudD5cbiAgICAgIDwvU0NBR1NTZWxlY3Rvck1vZGFsPixcbiAgICAgIGRvY3VtZW50LmJvZHlcbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0FHU1dyYXBwZXIgb3Blbk1vZGFsQWlNb2RlbD17b3Blbk1vZGFsQWlNb2RlbH0+XG4gICAgICA8U0NBR1NXcmFwcGVySGVhZGVyICRpbmRleD17MH0+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZT5cbiAgICAgICAgICA8c3Bhbj57dCgnZ2VuZXJhbFNlY3Rpb24uZ2VuZXJhbFNldHRpbmdzJyl9PC9zcGFuPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkPnt0KCdnZW5lcmFsU2VjdGlvbi5yZXF1aXJlZEZpZWxkc0xhYmVsJyl9PC9TQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkPlxuICAgICAgICA8L1NDQUdTV3JhcHBlckhlYWRlclRpdGxlPlxuICAgICAgICA8U0NBR1NXcmFwcGVySGVhZGVySW5mbz57dCgnZ2VuZXJhbFNlY3Rpb24uaW5mb0xhYmVsJyl9PC9TQ0FHU1dyYXBwZXJIZWFkZXJJbmZvPlxuICAgICAgPC9TQ0FHU1dyYXBwZXJIZWFkZXI+XG4gICAgICB7J2NyZWF0ZWRfYnknIGluIHZhbHVlcy5nZW5lcmFsICYmIHZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnkgJiYgKFxuICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICB2YWx1ZXMuZ2VuZXJhbC5jcmVhdGVkX2J5Py5pc19kZWxldGVkXG4gICAgICAgICAgICAgID8gdCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5VG9vbHRpcERlbGV0ZWQnKVxuICAgICAgICAgICAgICA6IHQoJ2dlbmVyYWxTZWN0aW9uLmNyZWF0ZWRCeVRvb2x0aXAnKVxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAge3QoJ2dlbmVyYWxTZWN0aW9uLmNyZWF0ZWRCeScpfXsnICd9XG4gICAgICAgICAgICA8U0NBR1NXcmFwcGVySGVhZGVyQ3JlYXRlZEJ5VGV4dE5hbWU+e3ZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQ+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgICA8U0NBR1NHZW5lcmFsQ2FyZCAkaW5kZXg9ezF9PlxuICAgICAgICA8U0NBR1NXcmFwcGVyQ29udGVudD5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyRW1vamk+XG4gICAgICAgICAgICA8QnV0dG9uRW1vamlcbiAgICAgICAgICAgICAgcG9ydGFsSWQ9e0VNT0pJX1BPUlRBTF9JRH1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdEVtb2ppfVxuICAgICAgICAgICAgICByZW5kZXJDb21wb25lbnQ9e2EgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8U0NBR1NCdXR0b25FbW9qaVxuICAgICAgICAgICAgICAgICAgICByZWY9e2EuaWNvblJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2EuaGFuZGxlT3BlblN1Z2dlc3Rpb25MaXN0fVxuICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1nZW5lcmFsLWVtb2ppLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUdTV3JhcHBlckVtb2ppSWNvbj57Zm9ybVZhbHVlcy5lbW9qaSB8fCA8QWdlbnRNYWlhSWNvbiAvPn08L1NDQUdTV3JhcHBlckVtb2ppSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBR1NXcmFwcGVyQWRkSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gY29sb3I9XCJyZ2JhKDEzNSwgNjQsIDE5MSwgMSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBR1NXcmFwcGVyQWRkSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8L1NDQUdTQnV0dG9uRW1vamk+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjb21wYW55SWQ9e3VzZXIuY29tcGFueV9pZC50b1N0cmluZygpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlckVtb2ppPlxuICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgIDxDdXN0b21JbnB1dFxuICAgICAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24ubmFtZScpfSAqICgke3ZhbHVlcy5nZW5lcmFsLm5hbWUubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLm5hbWV9KWB9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5uYW1lUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlPXt0KCdnZW5lcmFsU2VjdGlvbi5lcnJvci5tYXhDYXJhY3Rlck5hbWUnKX1cbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/Lm5hbWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgICAgICBpbnB1dEtleT1cIm5hbWVcIlxuICAgICAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5uYW1lfVxuICAgICAgICAgICAgICBpc1RyaW1tZWRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgPC9TQ0FHU1dyYXBwZXJDb250ZW50PlxuICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgICA8U0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgICA8Q3VzdG9tVGV4dEFyZWFcbiAgICAgICAgICAgICAgbGFiZWw9e2Ake3QoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHQnKX0gKiAoJHt2YWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0Py5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMudXNlclByb21wdH0pYH1cbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LnVzZXJQcm9tcHR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5pbml0aWFsUHJvbXB0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgICAgICBpbnB1dEtleT1cInVzZXJQcm9tcHRcIlxuICAgICAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy51c2VyUHJvbXB0fVxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVySW5pdGlhbFByb21wdCcpfVxuICAgICAgICAgICAgICBjdXN0b21IZWlnaHQ9ezE3MH1cbiAgICAgICAgICAgICAgaXNUcmltbWVkXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50IG9uQ2xpY2s9eygpID0+IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKCdob3dUb1dyaXRlUHJvbXB0Jyl9PlxuICAgICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0Pnt0KCdnZW5lcmFsU2VjdGlvbi5ob3dUb1dyaXRlUHJvbXB0Jyl9PC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57JyAnfVxuICAgICAgICAgICAgPE9wZW4gd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSBjb2xvcj1cIiMwMDZmYWZcIiAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmc+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlclNlbGVjdG9yIHJlZj17c2VsZWN0b3JSZWZ9IGRhdGEtc2VsZWN0b3ItbW9kYWw+XG4gICAgICAgICAgICA8U0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgICAgIDxDVVNlbGVjdFxuICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdnZW5lcmFsU2VjdGlvbi5tb2RlbEFpTGFiZWwnKX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17bG9hZGluZyA/ICdDYXJnYW5kbyBtb2RlbG9zLi4uJyA6ICdTZWxlY2Npb25hciBtb2RlbG8nfVxuICAgICAgICAgICAgICAgIGVuZEljb249ezxDaGV2cm9uRG93biB3aWR0aD1cIjE2cHhcIiBoZWlnaHQ9XCIxNnB4XCIgY29sb3I9e2xvYWRpbmcgPyAnI2JmYmZiZicgOiAnIzk5OTk5OSd9IC8+fVxuICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrQWN0aW9uPXtoYW5kbGVPcGVuTW9kYWxBaU1vZGVsfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5haU1vZGVsPy5kaXNwbGF5X25hbWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZT17bG9hZGluZ31cbiAgICAgICAgICAgICAgICBvcGVuPXtvcGVuTW9kYWxBaU1vZGVsfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgey8qIENVU2VsZWN0IGV4aWdlIGNoaWxkcmVuIHBhcmEgaGFiaWxpdGFyIGVsIGNsaWNrOyBlbCBtZW7DuiByZWFsIHZhIHBvciBwb3J0YWwuICovfVxuICAgICAgICAgICAgICAgIDxzcGFuIGhpZGRlbiBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgICAgICA8L0NVU2VsZWN0PlxuICAgICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlclNlbGVjdG9yPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbignd2hhdElzTW9kZWxBaScpfT5cbiAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57dCgnZ2VuZXJhbFNlY3Rpb24ud2hhdElzTW9kZWxBaScpfTwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQ+eycgJ31cbiAgICAgICAgICAgIDxPcGVuIHdpZHRoPXsxMn0gaGVpZ2h0PXsxMn0gY29sb3I9XCIjMDA2ZmFmXCIgLz5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50PlxuICAgICAgICA8L1NDQUdTV3JhcHBlck9uYm9hcmRpbmc+XG4gICAgICA8L1NDQUdTR2VuZXJhbENhcmQ+XG4gICAgICA8U0NBR1NPcHRpb25hbEZpZWxkcyAkaW5kZXg9ezJ9PlxuICAgICAgICA8U0NBR1NPcHRpb25hbExhYmVsPnt0KCdnZW5lcmFsU2VjdGlvbi5vcHRpb25hbExhYmVsJyl9PC9TQ0FHU09wdGlvbmFsTGFiZWw+XG4gICAgICAgIDxDdXN0b21UZXh0QXJlYVxuICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5pbnRyb2R1Y3Rpb259XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmludHJvZHVjdGlvblBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICBoYW5kbGVCbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgIGlucHV0S2V5PVwiaW50cm9kdWN0aW9uXCJcbiAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW50cm9kdWN0aW9uJyl9ICgke3ZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbj8ubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmludHJvZHVjdGlvbn0pYH1cbiAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVySW50cm9kdWN0aW9uJyl9XG4gICAgICAgICAgbWF4TGVuZ3RoPXt2YWxpZGF0aW9uRmllbGRzUnVsZXMuaW50cm9kdWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8Q3VzdG9tSW5wdXRcbiAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW5wdXRQbGFjZWhvbGRlclRpdGxlJyl9ICgke3ZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXI/Lmxlbmd0aCB8fCAwfS0ke3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnB1dFBsYWNlaG9sZGVyfSlgfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgaW5wdXRLZXk9XCJpbnB1dFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heElucHV0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8uaW5wdXRQbGFjZWhvbGRlcn1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlU2V0R2VuZXJhbFZhbHVlc31cbiAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICBmb2N1c2VkRmllbGQ9e2ZvY3VzZWRGaWVsZH1cbiAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAvPlxuICAgICAgPC9TQ0FHU09wdGlvbmFsRmllbGRzPlxuICAgICAge3JlbmRlck1vZGVsRHJvcGRvd24oKX1cbiAgICA8L1NDQUdTV3JhcHBlcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxPQUFPQSxLQUFLLElBQUlDLFNBQVMsRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDaEYsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxXQUFXLFFBQVEsOENBQThDO0FBQzFFLFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsUUFB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
|
|
@@ -21,9 +21,27 @@ import { useDownloadKnowledge } from '../../../hooks/useKnowledge/downloadKnowle
|
|
|
21
21
|
import { useOnboardingNavigation } from '../../../hooks/useOnboardingNavigation';
|
|
22
22
|
import { ModalFileExceeds } from '../../organisms/ModalFileExceeds/ModalFileExceeds';
|
|
23
23
|
import { allowedFileTypesForKnowledge, fileTypes } from '../../../constants/formatExtensions';
|
|
24
|
-
import { canPreviewKnowledgeAttachment, computeAttachmentsTotalSize, MAX_KNOWLEDGE_TOTAL_SIZE, processKnowledgeFiles } from './AbmKnowledgeSection.helpers';
|
|
25
24
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
26
|
-
|
|
25
|
+
function getUniqueString(prevStrings, stringToChange) {
|
|
26
|
+
var _stringToChange$split = stringToChange.split('.'),
|
|
27
|
+
_stringToChange$split2 = _slicedToArray(_stringToChange$split, 2),
|
|
28
|
+
filename = _stringToChange$split2[0],
|
|
29
|
+
_stringToChange$split3 = _stringToChange$split2[1],
|
|
30
|
+
extension = _stringToChange$split3 === void 0 ? '' : _stringToChange$split3;
|
|
31
|
+
var ext = extension ? ".".concat(extension) : '';
|
|
32
|
+
if (!(prevStrings !== null && prevStrings !== void 0 && prevStrings.includes(stringToChange))) {
|
|
33
|
+
return stringToChange;
|
|
34
|
+
}
|
|
35
|
+
var counter = 1;
|
|
36
|
+
var newFilename;
|
|
37
|
+
do {
|
|
38
|
+
newFilename = "".concat(filename, "(").concat(counter, ")").concat(ext);
|
|
39
|
+
counter++;
|
|
40
|
+
} while (prevStrings !== null && prevStrings !== void 0 && prevStrings.includes(newFilename));
|
|
41
|
+
return newFilename;
|
|
42
|
+
}
|
|
43
|
+
var MAX_TOTAL_SIZE = 5 * 1024 * 1024; // 5MB total
|
|
44
|
+
|
|
27
45
|
export var AbmKnowledgeSection = function AbmKnowledgeSection(_ref) {
|
|
28
46
|
var handleSetAgentValues = _ref.handleSetAgentValues,
|
|
29
47
|
values = _ref.values,
|
|
@@ -61,7 +79,12 @@ export var AbmKnowledgeSection = function AbmKnowledgeSection(_ref) {
|
|
|
61
79
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
62
80
|
isDragging = _useState8[0],
|
|
63
81
|
setIsDragging = _useState8[1];
|
|
64
|
-
|
|
82
|
+
|
|
83
|
+
// Calcular el tamaño total actual de archivos
|
|
84
|
+
var currentTotalSize = (localAttachments || []).reduce(function (total, attachment) {
|
|
85
|
+
var size = typeof attachment.size === 'number' ? attachment.size : Number(attachment.size);
|
|
86
|
+
return total + (Number.isNaN(size) ? 0 : size);
|
|
87
|
+
}, 0);
|
|
65
88
|
var isAtSizeLimit = currentTotalSize >= MAX_TOTAL_SIZE;
|
|
66
89
|
var handleAttachClick = function handleAttachClick() {
|
|
67
90
|
var _fileInputRef$current;
|
|
@@ -73,21 +96,63 @@ export var AbmKnowledgeSection = function AbmKnowledgeSection(_ref) {
|
|
|
73
96
|
var handleFileSelect = function handleFileSelect(e) {
|
|
74
97
|
var files = e.target.files;
|
|
75
98
|
if (!files) return;
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
99
|
+
var exceededFiles = [];
|
|
100
|
+
var excludedFiles = [];
|
|
101
|
+
var invalidExtensionFiles = [];
|
|
102
|
+
var insertedFiles = [];
|
|
103
|
+
var attachmentsNames = (localAttachments || []).map(function (attachment) {
|
|
104
|
+
return attachment.name;
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// Calcular el tamaño total actual de archivos ya adjuntos
|
|
108
|
+
var existingTotalSize = (localAttachments || []).reduce(function (total, attachment) {
|
|
109
|
+
var size = typeof attachment.size === 'number' ? attachment.size : Number(attachment.size);
|
|
110
|
+
return total + (Number.isNaN(size) ? 0 : size);
|
|
111
|
+
}, 0);
|
|
112
|
+
var runningTotalSize = existingTotalSize;
|
|
113
|
+
Array.from(files).forEach(function (file) {
|
|
114
|
+
var _fileNameParts$pop;
|
|
115
|
+
var fileNameParts = file.name.split('.');
|
|
116
|
+
var fileExtension = fileNameParts.length > 1 ? ".".concat((_fileNameParts$pop = fileNameParts.pop()) === null || _fileNameParts$pop === void 0 ? void 0 : _fileNameParts$pop.toLowerCase()) : '';
|
|
117
|
+
if (!allowedFileTypesForKnowledge.includes(fileExtension)) {
|
|
118
|
+
invalidExtensionFiles.push(file.name);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Verificar si agregar este archivo excedería el límite total de 5MB
|
|
123
|
+
var newTotalSize = runningTotalSize + file.size;
|
|
124
|
+
if (newTotalSize > MAX_TOTAL_SIZE) {
|
|
125
|
+
exceededFiles.push(file.name);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
var typeFile = file.type || fileTypes[fileExtension];
|
|
129
|
+
var uniqueName = getUniqueString(attachmentsNames, file.name);
|
|
130
|
+
var parsedFile = new File([file], uniqueName, {
|
|
131
|
+
type: typeFile
|
|
132
|
+
});
|
|
133
|
+
var attachmentFile = {
|
|
134
|
+
file: parsedFile,
|
|
135
|
+
id: "".concat(Date.now(), "-").concat(Math.random()),
|
|
136
|
+
name: uniqueName,
|
|
137
|
+
size: file.size,
|
|
138
|
+
type: typeFile,
|
|
139
|
+
status: 'started'
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// Solo agregar el archivo si no está en la lista de archivos excedidos
|
|
143
|
+
if (!exceededFiles.includes(file.name)) {
|
|
144
|
+
insertedFiles.push(attachmentFile);
|
|
145
|
+
// Actualizar el tamaño total para la siguiente validación
|
|
146
|
+
runningTotalSize += file.size;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
// Mostrar modal si hay archivos con extensión inválida o que exceden el límite
|
|
151
|
+
var hasErrors = invalidExtensionFiles.length > 0 || exceededFiles.length > 0;
|
|
87
152
|
if (hasErrors) {
|
|
88
153
|
setModalProps({
|
|
89
154
|
isOpen: true,
|
|
90
|
-
excludedFiles:
|
|
155
|
+
excludedFiles: excludedFiles,
|
|
91
156
|
exceededFiles: exceededFiles,
|
|
92
157
|
invalidExtensionFiles: invalidExtensionFiles
|
|
93
158
|
});
|
|
@@ -95,13 +160,15 @@ export var AbmKnowledgeSection = function AbmKnowledgeSection(_ref) {
|
|
|
95
160
|
} else {
|
|
96
161
|
onFileErrorChange === null || onFileErrorChange === void 0 || onFileErrorChange(false);
|
|
97
162
|
}
|
|
163
|
+
|
|
164
|
+
// Solo agregar archivos válidos que no excedan el límite
|
|
98
165
|
if (insertedFiles.length) {
|
|
99
166
|
handleSetAgentValues === null || handleSetAgentValues === void 0 || handleSetAgentValues({
|
|
100
167
|
key: 'knowledge',
|
|
101
168
|
value: insertedFiles
|
|
102
169
|
});
|
|
103
170
|
setLocalAttachments(function (prev) {
|
|
104
|
-
return [].concat(_toConsumableArray(prev || []),
|
|
171
|
+
return [].concat(_toConsumableArray(prev || []), insertedFiles);
|
|
105
172
|
});
|
|
106
173
|
}
|
|
107
174
|
};
|
|
@@ -192,7 +259,12 @@ export var AbmKnowledgeSection = function AbmKnowledgeSection(_ref) {
|
|
|
192
259
|
}
|
|
193
260
|
};
|
|
194
261
|
var handleAttachmentClick = function handleAttachmentClick(attachment) {
|
|
195
|
-
|
|
262
|
+
// Permitir previsualización si tiene archivo local o URLs del backend
|
|
263
|
+
// Solo si no tiene errores (status !== 'failed')
|
|
264
|
+
if (attachment.status === 'failed') {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (attachment.file instanceof File || attachment.originalFile instanceof File || attachment.url_thumbnail || attachment.url_original || attachment.url_file) {
|
|
196
268
|
setPreviewAttachment(attachment);
|
|
197
269
|
}
|
|
198
270
|
};
|
|
@@ -299,4 +371,4 @@ export var AbmKnowledgeSection = function AbmKnowledgeSection(_ref) {
|
|
|
299
371
|
})]
|
|
300
372
|
});
|
|
301
373
|
};
|
|
302
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUb29sdGlwIiwiRmlsZVVwbG9hZCIsIk9wZW4iLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVRyYW5zbGF0aW9uIiwiQXR0YWNobWVudENhcmQiLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiU0NBS1NXcmFwcGVyIiwiU0NBS1NXcmFwcGVySGVhZGVyIiwiU0NBS1NXcmFwcGVyQ29udGVudCIsIlNDQUtTV3JhcHBlckhlYWRlclRpdGxlIiwiU0NBS1NXcmFwcGVySGVhZGVySW5mbyIsIlNDQUtTRmlsZVVwbG9hZFdyYXBwZXJDb250ZW50IiwiU0NBS1NBdHRhY2htZW50c1dyYXBwZXIiLCJTQ0FLU01vcmVJbmZvU3BhbiIsIlNDQUtTTW9yZUluZm9JY29uV3JhcHBlciIsIlNDQUtTRHJvcFpvbmUiLCJTQ0FLU0Ryb3Bab25lSWNvbiIsIlNDQUtTRHJvcFpvbmVUZXh0IiwiU0NBS1NEcm9wWm9uZUluZm8iLCJTQ0FLU0Ryb3Bab25lVGV4dFNwYW4iLCJ1c2VEb3dubG9hZEtub3dsZWRnZSIsInVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiTW9kYWxGaWxlRXhjZWVkcyIsImFsbG93ZWRGaWxlVHlwZXNGb3JLbm93bGVkZ2UiLCJmaWxlVHlwZXMiLCJjYW5QcmV2aWV3S25vd2xlZGdlQXR0YWNobWVudCIsImNvbXB1dGVBdHRhY2htZW50c1RvdGFsU2l6ZSIsIk1BWF9LTk9XTEVER0VfVE9UQUxfU0laRSIsInByb2Nlc3NLbm93bGVkZ2VGaWxlcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIk1BWF9UT1RBTF9TSVpFIiwiQWJtS25vd2xlZGdlU2VjdGlvbiIsIl9yZWYiLCJoYW5kbGVTZXRBZ2VudFZhbHVlcyIsInZhbHVlcyIsIm9uRmlsZUVycm9yQ2hhbmdlIiwidG9vbHRpcFpJbmRleCIsIl91c2VTdGF0ZSIsImtub3dsZWRnZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImxvY2FsQXR0YWNobWVudHMiLCJzZXRMb2NhbEF0dGFjaG1lbnRzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VTdGF0ZTUiLCJpc09wZW4iLCJleGNsdWRlZEZpbGVzIiwiZXhjZWVkZWRGaWxlcyIsImludmFsaWRFeHRlbnNpb25GaWxlcyIsIl91c2VTdGF0ZTYiLCJtb2RhbFByb3BzIiwic2V0TW9kYWxQcm9wcyIsIl91c2VEb3dubG9hZEtub3dsZWRnZSIsImhhbmRsZURvd25sb2FkS25vd2xlZGdlIiwiaXNEb3dubG9hZGluZ1N1Y2Nlc3MiLCJzdWNjZXNzIiwiaXNEb3dubG9hZGluZ0Vycm9yIiwiZXJyb3IiLCJpc0Rvd25sb2FkaW5nIiwiaXNMb2FkaW5nIiwiaGFuZGxlUmVzZXRTdGF0ZXMiLCJfdXNlT25ib2FyZGluZ05hdmlnYXQiLCJoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbiIsImZpbGVJbnB1dFJlZiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNEcmFnZ2luZyIsInNldElzRHJhZ2dpbmciLCJjdXJyZW50VG90YWxTaXplIiwiaXNBdFNpemVMaW1pdCIsImhhbmRsZUF0dGFjaENsaWNrIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiY3VycmVudCIsImNsaWNrIiwiaGFuZGxlRmlsZVNlbGVjdCIsImUiLCJmaWxlcyIsInRhcmdldCIsIl9wcm9jZXNzS25vd2xlZGdlRmlsZSIsIkFycmF5IiwiZnJvbSIsImV4aXN0aW5nQXR0YWNobWVudHMiLCJhbGxvd2VkRXh0ZW5zaW9ucyIsIm1heFRvdGFsU2l6ZSIsImluc2VydGVkRmlsZXMiLCJoYXNFcnJvcnMiLCJsZW5ndGgiLCJrZXkiLCJ2YWx1ZSIsInByZXYiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJoYW5kbGVEcmFnRW50ZXIiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZURyYWdMZWF2ZSIsImhhbmRsZURyYWdPdmVyIiwiaGFuZGxlRHJvcCIsImRhdGFUcmFuc2ZlciIsInN5bnRoZXRpY0V2ZW50IiwiaGFuZGxlRGVsZXRlQXR0YWNobWVudCIsImlkIiwiZmlsZVRvRGVsZXRlIiwibmV3QXR0YWNobWVudHMiLCJmaWx0ZXIiLCJfIiwiaW5kZXgiLCJkZWxldGVLbm93bGVkZ2UiLCJoYW5kbGVEb3dubG9hZEF0dGFjaG1lbnQiLCJmaWxlIiwiYWdlbnRJZCIsImdlbmVyYWwiLCJ0b1N0cmluZyIsImtub3dsZWRnZUlkIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiYmxvYiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwiZG93bmxvYWQiLCJmaWxlbmFtZSIsInN0eWxlIiwiZGlzcGxheSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInNldFRpbWVvdXQiLCJyZW1vdmVDaGlsZCIsInJldm9rZU9iamVjdFVSTCIsImhhbmRsZUFjdGlvbiIsIl9yZWYyIiwiYWN0aW9uIiwiaGFuZGxlQXR0YWNobWVudENsaWNrIiwiYXR0YWNobWVudCIsImhhbmRsZUNsb3NlUHJldmlldyIsImNoaWxkcmVuIiwiJGluZGV4Iiwib25DbGljayIsIndpZHRoIiwiaGVpZ2h0IiwiY29sb3IiLCJ0aXRsZSIsInpJbmRleCIsIm9uRHJhZ0VudGVyIiwib25EcmFnTGVhdmUiLCJvbkRyYWdPdmVyIiwib25Ecm9wIiwibWFwIiwicG9zaXRpb25JbmRleCIsImFibUtub3dsZWRnZVNlY3Rpb24iLCJmdWxsV2lkdGgiLCJuYW1lIiwicmVmIiwidHlwZSIsIm11bHRpcGxlIiwiYWNjZXB0Iiwib25DaGFuZ2UiLCJvbkNsb3NlIiwic2VjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUtub3dsZWRnZVNlY3Rpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGx1c3BsdXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWN5Y2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvRmlsZVVwbG9hZCdcbmltcG9ydCB7IE9wZW4gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9PcGVuJ1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIERyYWdFdmVudCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBNb2RhbFZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7XG4gIFNDQUtTV3JhcHBlcixcbiAgU0NBS1NXcmFwcGVySGVhZGVyLFxuICBTQ0FLU1dyYXBwZXJDb250ZW50LFxuICBTQ0FLU1dyYXBwZXJIZWFkZXJUaXRsZSxcbiAgU0NBS1NXcmFwcGVySGVhZGVySW5mbyxcbiAgU0NBS1NGaWxlVXBsb2FkV3JhcHBlckNvbnRlbnQsXG4gIFNDQUtTQXR0YWNobWVudHNXcmFwcGVyLFxuICBTQ0FLU01vcmVJbmZvU3BhbixcbiAgU0NBS1NNb3JlSW5mb0ljb25XcmFwcGVyLFxuICBTQ0FLU0Ryb3Bab25lLFxuICBTQ0FLU0Ryb3Bab25lSWNvbixcbiAgU0NBS1NEcm9wWm9uZVRleHQsXG4gIFNDQUtTRHJvcFpvbmVJbmZvLFxuICBTQ0FLU0Ryb3Bab25lVGV4dFNwYW4sXG59IGZyb20gJy4vQWJtS25vd2xlZGdlU2VjdGlvbi5zdHlsZXMnXG5pbXBvcnQgeyB1c2VEb3dubG9hZEtub3dsZWRnZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUtub3dsZWRnZS9kb3dubG9hZEtub3dsZWRnZSdcbmltcG9ydCB7IHVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlT25ib2FyZGluZ05hdmlnYXRpb24nXG5pbXBvcnQgeyBNb2RhbEZpbGVFeGNlZWRzIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL01vZGFsRmlsZUV4Y2VlZHMvTW9kYWxGaWxlRXhjZWVkcydcbmltcG9ydCB7IGFsbG93ZWRGaWxlVHlwZXNGb3JLbm93bGVkZ2UsIGZpbGVUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9mb3JtYXRFeHRlbnNpb25zJ1xuaW1wb3J0IHtcbiAgY2FuUHJldmlld0tub3dsZWRnZUF0dGFjaG1lbnQsXG4gIGNvbXB1dGVBdHRhY2htZW50c1RvdGFsU2l6ZSxcbiAgTUFYX0tOT1dMRURHRV9UT1RBTF9TSVpFLFxuICBwcm9jZXNzS25vd2xlZGdlRmlsZXMsXG59IGZyb20gJy4vQWJtS25vd2xlZGdlU2VjdGlvbi5oZWxwZXJzJ1xuXG5jb25zdCBNQVhfVE9UQUxfU0laRSA9IE1BWF9LTk9XTEVER0VfVE9UQUxfU0laRVxuXG5leHBvcnQgY29uc3QgQWJtS25vd2xlZGdlU2VjdGlvbiA9ICh7XG4gIGhhbmRsZVNldEFnZW50VmFsdWVzLFxuICB2YWx1ZXMsXG4gIG9uRmlsZUVycm9yQ2hhbmdlLFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHtcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gICAgZGVsZXRlS25vd2xlZGdlLFxuICB9OiB7XG4gICAga2V5OiBzdHJpbmdcbiAgICB2YWx1ZTogdW5rbm93blxuICAgIGRlbGV0ZUtub3dsZWRnZT86IGJvb2xlYW5cbiAgfSkgPT4gdm9pZFxuICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gIG9uRmlsZUVycm9yQ2hhbmdlPzogKGhhc0Vycm9yczogYm9vbGVhbikgPT4gdm9pZFxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IFtsb2NhbEF0dGFjaG1lbnRzLCBzZXRMb2NhbEF0dGFjaG1lbnRzXSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlW10+KHZhbHVlcy5rbm93bGVkZ2UgfHwgW10pXG4gIGNvbnN0IFtwcmV2aWV3QXR0YWNobWVudCwgc2V0UHJldmlld0F0dGFjaG1lbnRdID0gdXNlU3RhdGU8QXR0YWNobWVudEZpbGUgfCBudWxsPihudWxsKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIGNvbnN0IFttb2RhbFByb3BzLCBzZXRNb2RhbFByb3BzXSA9IHVzZVN0YXRlKHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGV4Y2x1ZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGV4Y2VlZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGludmFsaWRFeHRlbnNpb25GaWxlczogW10gYXMgc3RyaW5nW10sXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBoYW5kbGVEb3dubG9hZEtub3dsZWRnZSxcbiAgICBzdWNjZXNzOiBpc0Rvd25sb2FkaW5nU3VjY2VzcyxcbiAgICBlcnJvcjogaXNEb3dubG9hZGluZ0Vycm9yLFxuICAgIGlzTG9hZGluZzogaXNEb3dubG9hZGluZyxcbiAgICBoYW5kbGVSZXNldFN0YXRlcyxcbiAgfSA9IHVzZURvd25sb2FkS25vd2xlZGdlKClcbiAgY29uc3QgeyBoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbiB9ID0gdXNlT25ib2FyZGluZ05hdmlnYXRpb24oKVxuICBjb25zdCBmaWxlSW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2lzRHJhZ2dpbmcsIHNldElzRHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgY3VycmVudFRvdGFsU2l6ZSA9IGNvbXB1dGVBdHRhY2htZW50c1RvdGFsU2l6ZShsb2NhbEF0dGFjaG1lbnRzIHx8IFtdKVxuICBjb25zdCBpc0F0U2l6ZUxpbWl0ID0gY3VycmVudFRvdGFsU2l6ZSA+PSBNQVhfVE9UQUxfU0laRVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChpc0F0U2l6ZUxpbWl0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVTZWxlY3QgPSAoZTogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB7IGZpbGVzIH0gPSBlLnRhcmdldFxuICAgIGlmICghZmlsZXMpIHJldHVyblxuXG4gICAgY29uc3QgeyBpbnNlcnRlZEZpbGVzLCBleGNlZWRlZEZpbGVzLCBpbnZhbGlkRXh0ZW5zaW9uRmlsZXMsIGhhc0Vycm9ycyB9ID0gcHJvY2Vzc0tub3dsZWRnZUZpbGVzKHtcbiAgICAgIGZpbGVzOiBBcnJheS5mcm9tKGZpbGVzKSxcbiAgICAgIGV4aXN0aW5nQXR0YWNobWVudHM6IGxvY2FsQXR0YWNobWVudHMgfHwgW10sXG4gICAgICBhbGxvd2VkRXh0ZW5zaW9uczogYWxsb3dlZEZpbGVUeXBlc0Zvcktub3dsZWRnZSxcbiAgICAgIGZpbGVUeXBlcyxcbiAgICAgIG1heFRvdGFsU2l6ZTogTUFYX1RPVEFMX1NJWkUsXG4gICAgfSlcblxuICAgIGlmIChoYXNFcnJvcnMpIHtcbiAgICAgIHNldE1vZGFsUHJvcHMoeyBpc09wZW46IHRydWUsIGV4Y2x1ZGVkRmlsZXM6IFtdLCBleGNlZWRlZEZpbGVzLCBpbnZhbGlkRXh0ZW5zaW9uRmlsZXMgfSlcbiAgICAgIG9uRmlsZUVycm9yQ2hhbmdlPy4odHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgb25GaWxlRXJyb3JDaGFuZ2U/LihmYWxzZSlcbiAgICB9XG5cbiAgICBpZiAoaW5zZXJ0ZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgIGhhbmRsZVNldEFnZW50VmFsdWVzPy4oeyBrZXk6ICdrbm93bGVkZ2UnLCB2YWx1ZTogaW5zZXJ0ZWRGaWxlcyB9KVxuICAgICAgc2V0TG9jYWxBdHRhY2htZW50cyhwcmV2ID0+IFsuLi4ocHJldiB8fCBbXSksIC4uLmluc2VydGVkRmlsZXNdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbnRlciA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmICghaXNBdFNpemVMaW1pdCkge1xuICAgICAgc2V0SXNEcmFnZ2luZyh0cnVlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdMZWF2ZSA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnT3ZlciA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG5cbiAgICBpZiAoaXNBdFNpemVMaW1pdCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgeyBmaWxlcyB9ID0gZS5kYXRhVHJhbnNmZXJcbiAgICBpZiAoIWZpbGVzIHx8IGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ3JlYXIgdW4gZXZlbnRvIHNpbnTDqXRpY28gcGFyYSByZXV0aWxpemFyIGxhIGzDs2dpY2EgZGUgaGFuZGxlRmlsZVNlbGVjdFxuICAgIGNvbnN0IHN5bnRoZXRpY0V2ZW50ID0ge1xuICAgICAgdGFyZ2V0OiB7IGZpbGVzIH0sXG4gICAgfSBhcyBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PlxuXG4gICAgaGFuZGxlRmlsZVNlbGVjdChzeW50aGV0aWNFdmVudClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoaWQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGZpbGVUb0RlbGV0ZSA9IGxvY2FsQXR0YWNobWVudHNbaWRdXG4gICAgaWYgKCFmaWxlVG9EZWxldGUpIHJldHVyblxuXG4gICAgY29uc3QgbmV3QXR0YWNobWVudHMgPSAobG9jYWxBdHRhY2htZW50cyB8fCBbXSkuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggIT09IGlkKVxuICAgIHNldExvY2FsQXR0YWNobWVudHMobmV3QXR0YWNobWVudHMpXG5cbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcz8uKHsga2V5OiAna25vd2xlZGdlJywgdmFsdWU6IG5ld0F0dGFjaG1lbnRzLCBkZWxldGVLbm93bGVkZ2U6IHRydWUgfSlcblxuICAgIG9uRmlsZUVycm9yQ2hhbmdlPy4oZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEb3dubG9hZEF0dGFjaG1lbnQgPSAoaWQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSAobG9jYWxBdHRhY2htZW50cyB8fCBbXSlbaWRdXG4gICAgaWYgKCFmaWxlKSByZXR1cm5cblxuICAgIGhhbmRsZURvd25sb2FkS25vd2xlZGdlKHsgYWdlbnRJZDogdmFsdWVzLmdlbmVyYWwuaWQhLnRvU3RyaW5nKCksIGtub3dsZWRnZUlkOiBmaWxlLmlkIH0pXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0Rvd25sb2FkaW5nU3VjY2VzcyAmJiAhaXNEb3dubG9hZGluZ0Vycm9yICYmICFpc0Rvd25sb2FkaW5nKSB7XG4gICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGlzRG93bmxvYWRpbmdTdWNjZXNzLmJsb2IpXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICBsaW5rLmhyZWYgPSB1cmxcbiAgICAgIGxpbmsuZG93bmxvYWQgPSBpc0Rvd25sb2FkaW5nU3VjY2Vzcy5maWxlbmFtZVxuICAgICAgbGluay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgIGxpbmsuY2xpY2soKVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybClcbiAgICAgICAgaGFuZGxlUmVzZXRTdGF0ZXMoKVxuICAgICAgfSwgMTAwKVxuICAgIH1cbiAgfSwgW2lzRG93bmxvYWRpbmdTdWNjZXNzLCBpc0Rvd25sb2FkaW5nRXJyb3IsIGlzRG93bmxvYWRpbmcsIGhhbmRsZVJlc2V0U3RhdGVzXSlcblxuICBjb25zdCBoYW5kbGVBY3Rpb24gPSAoeyBpZCwgYWN0aW9uIH06IHsgaWQ6IG51bWJlcjsgYWN0aW9uOiAnZGVsZXRlJyB8ICdkb3dubG9hZCcgfSkgPT4ge1xuICAgIGlmIChpc0Rvd25sb2FkaW5nKSByZXR1cm5cbiAgICBpZiAoYWN0aW9uID09PSAnZGVsZXRlJykge1xuICAgICAgaGFuZGxlRGVsZXRlQXR0YWNobWVudChpZClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZG93bmxvYWQnKSB7XG4gICAgICBoYW5kbGVEb3dubG9hZEF0dGFjaG1lbnQoaWQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudENsaWNrID0gKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgaWYgKGNhblByZXZpZXdLbm93bGVkZ2VBdHRhY2htZW50KGF0dGFjaG1lbnQpKSB7XG4gICAgICBzZXRQcmV2aWV3QXR0YWNobWVudChhdHRhY2htZW50KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlUHJldmlldyA9ICgpID0+IHtcbiAgICBzZXRQcmV2aWV3QXR0YWNobWVudChudWxsKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFNDQUtTV3JhcHBlcj5cbiAgICAgICAgPFNDQUtTV3JhcHBlckhlYWRlciAkaW5kZXg9ezB9PlxuICAgICAgICAgIDxTQ0FLU1dyYXBwZXJIZWFkZXJUaXRsZT57dCgna25vd2xlZGdlU2VjdGlvbi5rbm93bGVkZ2VUYWInKX08L1NDQUtTV3JhcHBlckhlYWRlclRpdGxlPlxuICAgICAgICAgIDxTQ0FLU1dyYXBwZXJIZWFkZXJJbmZvPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAge3QoJ2tub3dsZWRnZVNlY3Rpb24uaW5mb0xhYmVsJyl9XG4gICAgICAgICAgICAgIDxTQ0FLU01vcmVJbmZvU3BhbiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbignbW9yZUluZm8nKX0+XG4gICAgICAgICAgICAgICAge3QoJ2tub3dsZWRnZVNlY3Rpb24ubW9yZUluZm8nKX1cbiAgICAgICAgICAgICAgICA8U0NBS1NNb3JlSW5mb0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgPE9wZW4gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj1cIiMwMDZGQUZcIiAvPlxuICAgICAgICAgICAgICAgIDwvU0NBS1NNb3JlSW5mb0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgICA8L1NDQUtTTW9yZUluZm9TcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9TQ0FLU1dyYXBwZXJIZWFkZXJJbmZvPlxuICAgICAgICA8L1NDQUtTV3JhcHBlckhlYWRlcj5cbiAgICAgICAgPFNDQUtTV3JhcHBlckNvbnRlbnQgJGluZGV4PXsxfT5cbiAgICAgICAgICA8U0NBS1NGaWxlVXBsb2FkV3JhcHBlckNvbnRlbnQ+XG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17aXNBdFNpemVMaW1pdCA/IHQoJ2tub3dsZWRnZVNlY3Rpb24uZXJyb3IubWF4U2l6ZVRpdGxlJykgOiAnJ30gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgPFNDQUtTRHJvcFpvbmVcbiAgICAgICAgICAgICAgICBpc0F0U2l6ZUxpbWl0PXtpc0F0U2l6ZUxpbWl0fVxuICAgICAgICAgICAgICAgIGlzRHJhZ2dpbmc9e2lzRHJhZ2dpbmd9XG4gICAgICAgICAgICAgICAgb25EcmFnRW50ZXI9e2hhbmRsZURyYWdFbnRlcn1cbiAgICAgICAgICAgICAgICBvbkRyYWdMZWF2ZT17aGFuZGxlRHJhZ0xlYXZlfVxuICAgICAgICAgICAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgICAgICAgICAgIG9uRHJvcD17aGFuZGxlRHJvcH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTQ0FLU0Ryb3Bab25lSWNvbj5cbiAgICAgICAgICAgICAgICAgIDxGaWxlVXBsb2FkIHdpZHRoPXszMH0gaGVpZ2h0PXszMH0gY29sb3I9e2lzQXRTaXplTGltaXQgPyAnIzk5OScgOiAnIzAwNkZBRid9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ0FLU0Ryb3Bab25lSWNvbj5cbiAgICAgICAgICAgICAgICA8U0NBS1NEcm9wWm9uZVRleHQ+XG4gICAgICAgICAgICAgICAgICA8U0NBS1NEcm9wWm9uZVRleHRTcGFuIGlzQXRTaXplTGltaXQ9e2lzQXRTaXplTGltaXR9IGRhdGEtZHJvcHpvbmUtbGluayBvbkNsaWNrPXtoYW5kbGVBdHRhY2hDbGlja30+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdrbm93bGVkZ2VTZWN0aW9uLmRyb3Bab25lVGV4dC4xJyl9XG4gICAgICAgICAgICAgICAgICA8L1NDQUtTRHJvcFpvbmVUZXh0U3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt0KCdrbm93bGVkZ2VTZWN0aW9uLmRyb3Bab25lVGV4dC4yJyl9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvU0NBS1NEcm9wWm9uZVRleHQ+XG4gICAgICAgICAgICAgICAgPFNDQUtTRHJvcFpvbmVJbmZvPnt0KCdrbm93bGVkZ2VTZWN0aW9uLmluZm9GaWxlVHlwZXMnKX08L1NDQUtTRHJvcFpvbmVJbmZvPlxuICAgICAgICAgICAgICA8L1NDQUtTRHJvcFpvbmU+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPC9TQ0FLU0ZpbGVVcGxvYWRXcmFwcGVyQ29udGVudD5cbiAgICAgICAgICA8U0NBS1NBdHRhY2htZW50c1dyYXBwZXI+XG4gICAgICAgICAgICB7KGxvY2FsQXR0YWNobWVudHMgfHwgW10pLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QXR0YWNobWVudENhcmRcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAga2V5PXtgYXR0YWNobWVudC0ke2F0dGFjaG1lbnQ/Lm5hbWV9LSR7YXR0YWNobWVudD8uaWR9LSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVBY3Rpb249e2hhbmRsZUFjdGlvbn1cbiAgICAgICAgICAgICAgICAgIGFibUtub3dsZWRnZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXR0YWNobWVudENsaWNrKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NBS1NBdHRhY2htZW50c1dyYXBwZXI+XG4gICAgICAgIDwvU0NBS1NXcmFwcGVyQ29udGVudD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgYWNjZXB0PVwiLnR4dCwubWQsLmNzdiwuZG9jLC5kb2N4LC5wcHQsLnBwdHgsLnBkZiwucG5nLC5qcGcsLmpwZWcsLnhsc3gsLnhsc1wiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVTZWxlY3R9XG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ25vbmUnIH19XG4gICAgICAgIC8+XG4gICAgICA8L1NDQUtTV3JhcHBlcj5cbiAgICAgIHttb2RhbFByb3BzLmlzT3BlbiAmJiAoXG4gICAgICAgIDxNb2RhbEZpbGVFeGNlZWRzXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogZmFsc2UsIGV4Y2x1ZGVkRmlsZXM6IFtdLCBleGNlZWRlZEZpbGVzOiBbXSwgaW52YWxpZEV4dGVuc2lvbkZpbGVzOiBbXSB9KVxuICAgICAgICAgICAgb25GaWxlRXJyb3JDaGFuZ2U/LihmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjbHVkZWRGaWxlc31cbiAgICAgICAgICBleGNlZWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2VlZGVkRmlsZXN9XG4gICAgICAgICAgaW52YWxpZEV4dGVuc2lvbkZpbGVzPXttb2RhbFByb3BzLmludmFsaWRFeHRlbnNpb25GaWxlc31cbiAgICAgICAgICBzZWN0aW9uPVwiYWJtX2FnZW50XCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8QXR0YWNobWVudFByZXZpZXdNb2RhbFxuICAgICAgICBpc09wZW49eyEhcHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlUHJldmlld31cbiAgICAgICAgYXR0YWNobWVudD17cHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAvPlxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxVQUFVLFFBQVEsNkNBQTZDO0FBQ3hFLFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBaUNDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUMzRSxTQUFTQyxjQUFjLFFB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
|
|
374
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUb29sdGlwIiwiRmlsZVVwbG9hZCIsIk9wZW4iLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVRyYW5zbGF0aW9uIiwiQXR0YWNobWVudENhcmQiLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiU0NBS1NXcmFwcGVyIiwiU0NBS1NXcmFwcGVySGVhZGVyIiwiU0NBS1NXcmFwcGVyQ29udGVudCIsIlNDQUtTV3JhcHBlckhlYWRlclRpdGxlIiwiU0NBS1NXcmFwcGVySGVhZGVySW5mbyIsIlNDQUtTRmlsZVVwbG9hZFdyYXBwZXJDb250ZW50IiwiU0NBS1NBdHRhY2htZW50c1dyYXBwZXIiLCJTQ0FLU01vcmVJbmZvU3BhbiIsIlNDQUtTTW9yZUluZm9JY29uV3JhcHBlciIsIlNDQUtTRHJvcFpvbmUiLCJTQ0FLU0Ryb3Bab25lSWNvbiIsIlNDQUtTRHJvcFpvbmVUZXh0IiwiU0NBS1NEcm9wWm9uZUluZm8iLCJTQ0FLU0Ryb3Bab25lVGV4dFNwYW4iLCJ1c2VEb3dubG9hZEtub3dsZWRnZSIsInVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiTW9kYWxGaWxlRXhjZWVkcyIsImFsbG93ZWRGaWxlVHlwZXNGb3JLbm93bGVkZ2UiLCJmaWxlVHlwZXMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJnZXRVbmlxdWVTdHJpbmciLCJwcmV2U3RyaW5ncyIsInN0cmluZ1RvQ2hhbmdlIiwiX3N0cmluZ1RvQ2hhbmdlJHNwbGl0Iiwic3BsaXQiLCJfc3RyaW5nVG9DaGFuZ2Ukc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJmaWxlbmFtZSIsIl9zdHJpbmdUb0NoYW5nZSRzcGxpdDMiLCJleHRlbnNpb24iLCJleHQiLCJjb25jYXQiLCJpbmNsdWRlcyIsImNvdW50ZXIiLCJuZXdGaWxlbmFtZSIsIk1BWF9UT1RBTF9TSVpFIiwiQWJtS25vd2xlZGdlU2VjdGlvbiIsIl9yZWYiLCJoYW5kbGVTZXRBZ2VudFZhbHVlcyIsInZhbHVlcyIsIm9uRmlsZUVycm9yQ2hhbmdlIiwidG9vbHRpcFpJbmRleCIsIl91c2VTdGF0ZSIsImtub3dsZWRnZSIsIl91c2VTdGF0ZTIiLCJsb2NhbEF0dGFjaG1lbnRzIiwic2V0TG9jYWxBdHRhY2htZW50cyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicHJldmlld0F0dGFjaG1lbnQiLCJzZXRQcmV2aWV3QXR0YWNobWVudCIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlU3RhdGU1IiwiaXNPcGVuIiwiZXhjbHVkZWRGaWxlcyIsImV4Y2VlZGVkRmlsZXMiLCJpbnZhbGlkRXh0ZW5zaW9uRmlsZXMiLCJfdXNlU3RhdGU2IiwibW9kYWxQcm9wcyIsInNldE1vZGFsUHJvcHMiLCJfdXNlRG93bmxvYWRLbm93bGVkZ2UiLCJoYW5kbGVEb3dubG9hZEtub3dsZWRnZSIsImlzRG93bmxvYWRpbmdTdWNjZXNzIiwic3VjY2VzcyIsImlzRG93bmxvYWRpbmdFcnJvciIsImVycm9yIiwiaXNEb3dubG9hZGluZyIsImlzTG9hZGluZyIsImhhbmRsZVJlc2V0U3RhdGVzIiwiX3VzZU9uYm9hcmRpbmdOYXZpZ2F0IiwiaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24iLCJmaWxlSW5wdXRSZWYiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRHJhZ2dpbmciLCJzZXRJc0RyYWdnaW5nIiwiY3VycmVudFRvdGFsU2l6ZSIsInJlZHVjZSIsInRvdGFsIiwiYXR0YWNobWVudCIsInNpemUiLCJOdW1iZXIiLCJpc05hTiIsImlzQXRTaXplTGltaXQiLCJoYW5kbGVBdHRhY2hDbGljayIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImN1cnJlbnQiLCJjbGljayIsImhhbmRsZUZpbGVTZWxlY3QiLCJlIiwiZmlsZXMiLCJ0YXJnZXQiLCJpbnNlcnRlZEZpbGVzIiwiYXR0YWNobWVudHNOYW1lcyIsIm1hcCIsIm5hbWUiLCJleGlzdGluZ1RvdGFsU2l6ZSIsInJ1bm5pbmdUb3RhbFNpemUiLCJBcnJheSIsImZyb20iLCJmb3JFYWNoIiwiZmlsZSIsIl9maWxlTmFtZVBhcnRzJHBvcCIsImZpbGVOYW1lUGFydHMiLCJmaWxlRXh0ZW5zaW9uIiwibGVuZ3RoIiwicG9wIiwidG9Mb3dlckNhc2UiLCJwdXNoIiwibmV3VG90YWxTaXplIiwidHlwZUZpbGUiLCJ0eXBlIiwidW5pcXVlTmFtZSIsInBhcnNlZEZpbGUiLCJGaWxlIiwiYXR0YWNobWVudEZpbGUiLCJpZCIsIkRhdGUiLCJub3ciLCJNYXRoIiwicmFuZG9tIiwic3RhdHVzIiwiaGFzRXJyb3JzIiwia2V5IiwidmFsdWUiLCJwcmV2IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiaGFuZGxlRHJhZ0VudGVyIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVEcmFnTGVhdmUiLCJoYW5kbGVEcmFnT3ZlciIsImhhbmRsZURyb3AiLCJkYXRhVHJhbnNmZXIiLCJzeW50aGV0aWNFdmVudCIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlVG9EZWxldGUiLCJuZXdBdHRhY2htZW50cyIsImZpbHRlciIsIl8iLCJpbmRleCIsImRlbGV0ZUtub3dsZWRnZSIsImhhbmRsZURvd25sb2FkQXR0YWNobWVudCIsImFnZW50SWQiLCJnZW5lcmFsIiwidG9TdHJpbmciLCJrbm93bGVkZ2VJZCIsInVybCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImJsb2IiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsImRvd25sb2FkIiwic3R5bGUiLCJkaXNwbGF5IiwiYm9keSIsImFwcGVuZENoaWxkIiwic2V0VGltZW91dCIsInJlbW92ZUNoaWxkIiwicmV2b2tlT2JqZWN0VVJMIiwiaGFuZGxlQWN0aW9uIiwiX3JlZjIiLCJhY3Rpb24iLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJjaGlsZHJlbiIsIiRpbmRleCIsIm9uQ2xpY2siLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwidGl0bGUiLCJ6SW5kZXgiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsInBvc2l0aW9uSW5kZXgiLCJhYm1Lbm93bGVkZ2VTZWN0aW9uIiwiZnVsbFdpZHRoIiwicmVmIiwibXVsdGlwbGUiLCJhY2NlcHQiLCJvbkNoYW5nZSIsIm9uQ2xvc2UiLCJzZWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0FibVNlY3Rpb24vQWJtS25vd2xlZGdlU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wbHVzcGx1cyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tY3ljbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9GaWxlVXBsb2FkJ1xuaW1wb3J0IHsgT3BlbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL09wZW4nXG5pbXBvcnQgeyBDaGFuZ2VFdmVudCwgRHJhZ0V2ZW50LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmQnXG5pbXBvcnQgeyBBdHRhY2htZW50UHJldmlld01vZGFsIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudFByZXZpZXdNb2RhbCdcbmltcG9ydCB7IE1vZGFsVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnRNb2RhbCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHtcbiAgU0NBS1NXcmFwcGVyLFxuICBTQ0FLU1dyYXBwZXJIZWFkZXIsXG4gIFNDQUtTV3JhcHBlckNvbnRlbnQsXG4gIFNDQUtTV3JhcHBlckhlYWRlclRpdGxlLFxuICBTQ0FLU1dyYXBwZXJIZWFkZXJJbmZvLFxuICBTQ0FLU0ZpbGVVcGxvYWRXcmFwcGVyQ29udGVudCxcbiAgU0NBS1NBdHRhY2htZW50c1dyYXBwZXIsXG4gIFNDQUtTTW9yZUluZm9TcGFuLFxuICBTQ0FLU01vcmVJbmZvSWNvbldyYXBwZXIsXG4gIFNDQUtTRHJvcFpvbmUsXG4gIFNDQUtTRHJvcFpvbmVJY29uLFxuICBTQ0FLU0Ryb3Bab25lVGV4dCxcbiAgU0NBS1NEcm9wWm9uZUluZm8sXG4gIFNDQUtTRHJvcFpvbmVUZXh0U3Bhbixcbn0gZnJvbSAnLi9BYm1Lbm93bGVkZ2VTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB7IHVzZURvd25sb2FkS25vd2xlZGdlIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlS25vd2xlZGdlL2Rvd25sb2FkS25vd2xlZGdlJ1xuaW1wb3J0IHsgdXNlT25ib2FyZGluZ05hdmlnYXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VPbmJvYXJkaW5nTmF2aWdhdGlvbidcbmltcG9ydCB7IE1vZGFsRmlsZUV4Y2VlZHMgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvTW9kYWxGaWxlRXhjZWVkcy9Nb2RhbEZpbGVFeGNlZWRzJ1xuaW1wb3J0IHsgYWxsb3dlZEZpbGVUeXBlc0Zvcktub3dsZWRnZSwgZmlsZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Zvcm1hdEV4dGVuc2lvbnMnXG5cbmZ1bmN0aW9uIGdldFVuaXF1ZVN0cmluZyhwcmV2U3RyaW5nczogc3RyaW5nW10sIHN0cmluZ1RvQ2hhbmdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBbZmlsZW5hbWUsIGV4dGVuc2lvbiA9ICcnXSA9IHN0cmluZ1RvQ2hhbmdlLnNwbGl0KCcuJylcbiAgY29uc3QgZXh0ID0gZXh0ZW5zaW9uID8gYC4ke2V4dGVuc2lvbn1gIDogJydcblxuICBpZiAoIXByZXZTdHJpbmdzPy5pbmNsdWRlcyhzdHJpbmdUb0NoYW5nZSkpIHtcbiAgICByZXR1cm4gc3RyaW5nVG9DaGFuZ2VcbiAgfVxuXG4gIGxldCBjb3VudGVyID0gMVxuICBsZXQgbmV3RmlsZW5hbWVcbiAgZG8ge1xuICAgIG5ld0ZpbGVuYW1lID0gYCR7ZmlsZW5hbWV9KCR7Y291bnRlcn0pJHtleHR9YFxuICAgIGNvdW50ZXIrK1xuICB9IHdoaWxlIChwcmV2U3RyaW5ncz8uaW5jbHVkZXMobmV3RmlsZW5hbWUpKVxuXG4gIHJldHVybiBuZXdGaWxlbmFtZVxufVxuXG5jb25zdCBNQVhfVE9UQUxfU0laRSA9IDUgKiAxMDI0ICogMTAyNCAvLyA1TUIgdG90YWxcblxuZXhwb3J0IGNvbnN0IEFibUtub3dsZWRnZVNlY3Rpb24gPSAoe1xuICBoYW5kbGVTZXRBZ2VudFZhbHVlcyxcbiAgdmFsdWVzLFxuICBvbkZpbGVFcnJvckNoYW5nZSxcbiAgdG9vbHRpcFpJbmRleCxcbn06IHtcbiAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7XG4gICAga2V5LFxuICAgIHZhbHVlLFxuICAgIGRlbGV0ZUtub3dsZWRnZSxcbiAgfToge1xuICAgIGtleTogc3RyaW5nXG4gICAgdmFsdWU6IHVua25vd25cbiAgICBkZWxldGVLbm93bGVkZ2U/OiBib29sZWFuXG4gIH0pID0+IHZvaWRcbiAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICBvbkZpbGVFcnJvckNoYW5nZT86IChoYXNFcnJvcnM6IGJvb2xlYW4pID0+IHZvaWRcbiAgdG9vbHRpcFpJbmRleD86IG51bWJlclxufSkgPT4ge1xuICBjb25zdCBbbG9jYWxBdHRhY2htZW50cywgc2V0TG9jYWxBdHRhY2htZW50c10gPSB1c2VTdGF0ZTxBdHRhY2htZW50RmlsZVtdPih2YWx1ZXMua25vd2xlZGdlIHx8IFtdKVxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbignYWJtX2FnZW50X3NlY3Rpb24nKVxuICBjb25zdCBbbW9kYWxQcm9wcywgc2V0TW9kYWxQcm9wc10gPSB1c2VTdGF0ZSh7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBleGNsdWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBleGNlZWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBpbnZhbGlkRXh0ZW5zaW9uRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICB9KVxuICBjb25zdCB7XG4gICAgaGFuZGxlRG93bmxvYWRLbm93bGVkZ2UsXG4gICAgc3VjY2VzczogaXNEb3dubG9hZGluZ1N1Y2Nlc3MsXG4gICAgZXJyb3I6IGlzRG93bmxvYWRpbmdFcnJvcixcbiAgICBpc0xvYWRpbmc6IGlzRG93bmxvYWRpbmcsXG4gICAgaGFuZGxlUmVzZXRTdGF0ZXMsXG4gIH0gPSB1c2VEb3dubG9hZEtub3dsZWRnZSgpXG4gIGNvbnN0IHsgaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24gfSA9IHVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKClcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtpc0RyYWdnaW5nLCBzZXRJc0RyYWdnaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIC8vIENhbGN1bGFyIGVsIHRhbWHDsW8gdG90YWwgYWN0dWFsIGRlIGFyY2hpdm9zXG4gIGNvbnN0IGN1cnJlbnRUb3RhbFNpemUgPSAobG9jYWxBdHRhY2htZW50cyB8fCBbXSkucmVkdWNlKCh0b3RhbCwgYXR0YWNobWVudCkgPT4ge1xuICAgIGNvbnN0IHNpemUgPSB0eXBlb2YgYXR0YWNobWVudC5zaXplID09PSAnbnVtYmVyJyA/IGF0dGFjaG1lbnQuc2l6ZSA6IE51bWJlcihhdHRhY2htZW50LnNpemUpXG4gICAgcmV0dXJuIHRvdGFsICsgKE51bWJlci5pc05hTihzaXplKSA/IDAgOiBzaXplKVxuICB9LCAwKVxuICBjb25zdCBpc0F0U2l6ZUxpbWl0ID0gY3VycmVudFRvdGFsU2l6ZSA+PSBNQVhfVE9UQUxfU0laRVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChpc0F0U2l6ZUxpbWl0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVTZWxlY3QgPSAoZTogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB7IGZpbGVzIH0gPSBlLnRhcmdldFxuICAgIGlmICghZmlsZXMpIHJldHVyblxuXG4gICAgY29uc3QgZXhjZWVkZWRGaWxlczogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGV4Y2x1ZGVkRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBpbnZhbGlkRXh0ZW5zaW9uRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBpbnNlcnRlZEZpbGVzOiBBdHRhY2htZW50RmlsZVtdID0gW11cbiAgICBjb25zdCBhdHRhY2htZW50c05hbWVzID0gKGxvY2FsQXR0YWNobWVudHMgfHwgW10pLm1hcChhdHRhY2htZW50ID0+IGF0dGFjaG1lbnQubmFtZSlcblxuICAgIC8vIENhbGN1bGFyIGVsIHRhbWHDsW8gdG90YWwgYWN0dWFsIGRlIGFyY2hpdm9zIHlhIGFkanVudG9zXG4gICAgY29uc3QgZXhpc3RpbmdUb3RhbFNpemUgPSAobG9jYWxBdHRhY2htZW50cyB8fCBbXSkucmVkdWNlKCh0b3RhbCwgYXR0YWNobWVudCkgPT4ge1xuICAgICAgY29uc3Qgc2l6ZSA9IHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInID8gYXR0YWNobWVudC5zaXplIDogTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICAgIHJldHVybiB0b3RhbCArIChOdW1iZXIuaXNOYU4oc2l6ZSkgPyAwIDogc2l6ZSlcbiAgICB9LCAwKVxuICAgIGxldCBydW5uaW5nVG90YWxTaXplID0gZXhpc3RpbmdUb3RhbFNpemVcbiAgICBBcnJheS5mcm9tKGZpbGVzKS5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgY29uc3QgZmlsZU5hbWVQYXJ0cyA9IGZpbGUubmFtZS5zcGxpdCgnLicpXG4gICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZU5hbWVQYXJ0cy5sZW5ndGggPiAxID8gYC4ke2ZpbGVOYW1lUGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCl9YCA6ICcnXG5cbiAgICAgIGlmICghYWxsb3dlZEZpbGVUeXBlc0Zvcktub3dsZWRnZS5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBpbnZhbGlkRXh0ZW5zaW9uRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBWZXJpZmljYXIgc2kgYWdyZWdhciBlc3RlIGFyY2hpdm8gZXhjZWRlcsOtYSBlbCBsw61taXRlIHRvdGFsIGRlIDVNQlxuICAgICAgY29uc3QgbmV3VG90YWxTaXplID0gcnVubmluZ1RvdGFsU2l6ZSArIGZpbGUuc2l6ZVxuICAgICAgaWYgKG5ld1RvdGFsU2l6ZSA+IE1BWF9UT1RBTF9TSVpFKSB7XG4gICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0eXBlRmlsZSA9IGZpbGUudHlwZSB8fCBmaWxlVHlwZXNbZmlsZUV4dGVuc2lvbl1cbiAgICAgIGNvbnN0IHVuaXF1ZU5hbWUgPSBnZXRVbmlxdWVTdHJpbmcoYXR0YWNobWVudHNOYW1lcywgZmlsZS5uYW1lKVxuICAgICAgY29uc3QgcGFyc2VkRmlsZSA9IG5ldyBGaWxlKFtmaWxlXSwgdW5pcXVlTmFtZSwgeyB0eXBlOiB0eXBlRmlsZSB9KVxuXG4gICAgICBjb25zdCBhdHRhY2htZW50RmlsZTogQXR0YWNobWVudEZpbGUgPSB7XG4gICAgICAgIGZpbGU6IHBhcnNlZEZpbGUsXG4gICAgICAgIGlkOiBgJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCl9YCxcbiAgICAgICAgbmFtZTogdW5pcXVlTmFtZSxcbiAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxuICAgICAgICB0eXBlOiB0eXBlRmlsZSxcbiAgICAgICAgc3RhdHVzOiAnc3RhcnRlZCcsXG4gICAgICB9XG5cbiAgICAgIC8vIFNvbG8gYWdyZWdhciBlbCBhcmNoaXZvIHNpIG5vIGVzdMOhIGVuIGxhIGxpc3RhIGRlIGFyY2hpdm9zIGV4Y2VkaWRvc1xuICAgICAgaWYgKCFleGNlZWRlZEZpbGVzLmluY2x1ZGVzKGZpbGUubmFtZSkpIHtcbiAgICAgICAgaW5zZXJ0ZWRGaWxlcy5wdXNoKGF0dGFjaG1lbnRGaWxlKVxuICAgICAgICAvLyBBY3R1YWxpemFyIGVsIHRhbWHDsW8gdG90YWwgcGFyYSBsYSBzaWd1aWVudGUgdmFsaWRhY2nDs25cbiAgICAgICAgcnVubmluZ1RvdGFsU2l6ZSArPSBmaWxlLnNpemVcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgLy8gTW9zdHJhciBtb2RhbCBzaSBoYXkgYXJjaGl2b3MgY29uIGV4dGVuc2nDs24gaW52w6FsaWRhIG8gcXVlIGV4Y2VkZW4gZWwgbMOtbWl0ZVxuICAgIGNvbnN0IGhhc0Vycm9ycyA9IGludmFsaWRFeHRlbnNpb25GaWxlcy5sZW5ndGggPiAwIHx8IGV4Y2VlZGVkRmlsZXMubGVuZ3RoID4gMFxuICAgIGlmIChoYXNFcnJvcnMpIHtcbiAgICAgIHNldE1vZGFsUHJvcHMoeyBpc09wZW46IHRydWUsIGV4Y2x1ZGVkRmlsZXMsIGV4Y2VlZGVkRmlsZXMsIGludmFsaWRFeHRlbnNpb25GaWxlcyB9KVxuICAgICAgb25GaWxlRXJyb3JDaGFuZ2U/Lih0cnVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBvbkZpbGVFcnJvckNoYW5nZT8uKGZhbHNlKVxuICAgIH1cblxuICAgIC8vIFNvbG8gYWdyZWdhciBhcmNoaXZvcyB2w6FsaWRvcyBxdWUgbm8gZXhjZWRhbiBlbCBsw61taXRlXG4gICAgaWYgKGluc2VydGVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcz8uKHsga2V5OiAna25vd2xlZGdlJywgdmFsdWU6IGluc2VydGVkRmlsZXMgfSlcbiAgICAgIHNldExvY2FsQXR0YWNobWVudHMocHJldiA9PiBbLi4uKHByZXYgfHwgW10pLCAuLi5pbnNlcnRlZEZpbGVzXSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnRW50ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoIWlzQXRTaXplTGltaXQpIHtcbiAgICAgIHNldElzRHJhZ2dpbmcodHJ1ZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnTGVhdmUgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ092ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyb3AgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKVxuXG4gICAgaWYgKGlzQXRTaXplTGltaXQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHsgZmlsZXMgfSA9IGUuZGF0YVRyYW5zZmVyXG4gICAgaWYgKCFmaWxlcyB8fCBmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIENyZWFyIHVuIGV2ZW50byBzaW50w6l0aWNvIHBhcmEgcmV1dGlsaXphciBsYSBsw7NnaWNhIGRlIGhhbmRsZUZpbGVTZWxlY3RcbiAgICBjb25zdCBzeW50aGV0aWNFdmVudCA9IHtcbiAgICAgIHRhcmdldDogeyBmaWxlcyB9LFxuICAgIH0gYXMgQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD5cblxuICAgIGhhbmRsZUZpbGVTZWxlY3Qoc3ludGhldGljRXZlbnQpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEZWxldGVBdHRhY2htZW50ID0gKGlkOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBmaWxlVG9EZWxldGUgPSBsb2NhbEF0dGFjaG1lbnRzW2lkXVxuICAgIGlmICghZmlsZVRvRGVsZXRlKSByZXR1cm5cblxuICAgIGNvbnN0IG5ld0F0dGFjaG1lbnRzID0gKGxvY2FsQXR0YWNobWVudHMgfHwgW10pLmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICE9PSBpZClcbiAgICBzZXRMb2NhbEF0dGFjaG1lbnRzKG5ld0F0dGFjaG1lbnRzKVxuXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM/Lih7IGtleTogJ2tub3dsZWRnZScsIHZhbHVlOiBuZXdBdHRhY2htZW50cywgZGVsZXRlS25vd2xlZGdlOiB0cnVlIH0pXG5cbiAgICBvbkZpbGVFcnJvckNoYW5nZT8uKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRG93bmxvYWRBdHRhY2htZW50ID0gKGlkOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBmaWxlID0gKGxvY2FsQXR0YWNobWVudHMgfHwgW10pW2lkXVxuICAgIGlmICghZmlsZSkgcmV0dXJuXG5cbiAgICBoYW5kbGVEb3dubG9hZEtub3dsZWRnZSh7IGFnZW50SWQ6IHZhbHVlcy5nZW5lcmFsLmlkIS50b1N0cmluZygpLCBrbm93bGVkZ2VJZDogZmlsZS5pZCB9KVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNEb3dubG9hZGluZ1N1Y2Nlc3MgJiYgIWlzRG93bmxvYWRpbmdFcnJvciAmJiAhaXNEb3dubG9hZGluZykge1xuICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChpc0Rvd25sb2FkaW5nU3VjY2Vzcy5ibG9iKVxuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgbGluay5ocmVmID0gdXJsXG4gICAgICBsaW5rLmRvd25sb2FkID0gaXNEb3dubG9hZGluZ1N1Y2Nlc3MuZmlsZW5hbWVcbiAgICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspXG4gICAgICBsaW5rLmNsaWNrKClcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluaylcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgICAgIGhhbmRsZVJlc2V0U3RhdGVzKClcbiAgICAgIH0sIDEwMClcbiAgICB9XG4gIH0sIFtpc0Rvd25sb2FkaW5nU3VjY2VzcywgaXNEb3dubG9hZGluZ0Vycm9yLCBpc0Rvd25sb2FkaW5nLCBoYW5kbGVSZXNldFN0YXRlc10pXG5cbiAgY29uc3QgaGFuZGxlQWN0aW9uID0gKHsgaWQsIGFjdGlvbiB9OiB7IGlkOiBudW1iZXI7IGFjdGlvbjogJ2RlbGV0ZScgfCAnZG93bmxvYWQnIH0pID0+IHtcbiAgICBpZiAoaXNEb3dubG9hZGluZykgcmV0dXJuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgIGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQoaWQpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2Rvd25sb2FkJykge1xuICAgICAgaGFuZGxlRG93bmxvYWRBdHRhY2htZW50KGlkKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaG1lbnRDbGljayA9IChhdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSkgPT4ge1xuICAgIC8vIFBlcm1pdGlyIHByZXZpc3VhbGl6YWNpw7NuIHNpIHRpZW5lIGFyY2hpdm8gbG9jYWwgbyBVUkxzIGRlbCBiYWNrZW5kXG4gICAgLy8gU29sbyBzaSBubyB0aWVuZSBlcnJvcmVzIChzdGF0dXMgIT09ICdmYWlsZWQnKVxuICAgIGlmIChhdHRhY2htZW50LnN0YXR1cyA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQub3JpZ2luYWxGaWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfZmlsZVxuICAgICkge1xuICAgICAgc2V0UHJldmlld0F0dGFjaG1lbnQoYXR0YWNobWVudClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVByZXZpZXcgPSAoKSA9PiB7XG4gICAgc2V0UHJldmlld0F0dGFjaG1lbnQobnVsbClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTQ0FLU1dyYXBwZXI+XG4gICAgICAgIDxTQ0FLU1dyYXBwZXJIZWFkZXIgJGluZGV4PXswfT5cbiAgICAgICAgICA8U0NBS1NXcmFwcGVySGVhZGVyVGl0bGU+e3QoJ2tub3dsZWRnZVNlY3Rpb24ua25vd2xlZGdlVGFiJyl9PC9TQ0FLU1dyYXBwZXJIZWFkZXJUaXRsZT5cbiAgICAgICAgICA8U0NBS1NXcmFwcGVySGVhZGVySW5mbz5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIHt0KCdrbm93bGVkZ2VTZWN0aW9uLmluZm9MYWJlbCcpfVxuICAgICAgICAgICAgICA8U0NBS1NNb3JlSW5mb1NwYW4gb25DbGljaz17KCkgPT4gaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24oJ21vcmVJbmZvJyl9PlxuICAgICAgICAgICAgICAgIHt0KCdrbm93bGVkZ2VTZWN0aW9uLm1vcmVJbmZvJyl9XG4gICAgICAgICAgICAgICAgPFNDQUtTTW9yZUluZm9JY29uV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgIDxPcGVuIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gY29sb3I9XCIjMDA2RkFGXCIgLz5cbiAgICAgICAgICAgICAgICA8L1NDQUtTTW9yZUluZm9JY29uV3JhcHBlcj5cbiAgICAgICAgICAgICAgPC9TQ0FLU01vcmVJbmZvU3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvU0NBS1NXcmFwcGVySGVhZGVySW5mbz5cbiAgICAgICAgPC9TQ0FLU1dyYXBwZXJIZWFkZXI+XG4gICAgICAgIDxTQ0FLU1dyYXBwZXJDb250ZW50ICRpbmRleD17MX0+XG4gICAgICAgICAgPFNDQUtTRmlsZVVwbG9hZFdyYXBwZXJDb250ZW50PlxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2lzQXRTaXplTGltaXQgPyB0KCdrbm93bGVkZ2VTZWN0aW9uLmVycm9yLm1heFNpemVUaXRsZScpIDogJyd9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgIDxTQ0FLU0Ryb3Bab25lXG4gICAgICAgICAgICAgICAgaXNBdFNpemVMaW1pdD17aXNBdFNpemVMaW1pdH1cbiAgICAgICAgICAgICAgICBpc0RyYWdnaW5nPXtpc0RyYWdnaW5nfVxuICAgICAgICAgICAgICAgIG9uRHJhZ0VudGVyPXtoYW5kbGVEcmFnRW50ZXJ9XG4gICAgICAgICAgICAgICAgb25EcmFnTGVhdmU9e2hhbmRsZURyYWdMZWF2ZX1cbiAgICAgICAgICAgICAgICBvbkRyYWdPdmVyPXtoYW5kbGVEcmFnT3Zlcn1cbiAgICAgICAgICAgICAgICBvbkRyb3A9e2hhbmRsZURyb3B9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U0NBS1NEcm9wWm9uZUljb24+XG4gICAgICAgICAgICAgICAgICA8RmlsZVVwbG9hZCB3aWR0aD17MzB9IGhlaWdodD17MzB9IGNvbG9yPXtpc0F0U2l6ZUxpbWl0ID8gJyM5OTknIDogJyMwMDZGQUYnfSAvPlxuICAgICAgICAgICAgICAgIDwvU0NBS1NEcm9wWm9uZUljb24+XG4gICAgICAgICAgICAgICAgPFNDQUtTRHJvcFpvbmVUZXh0PlxuICAgICAgICAgICAgICAgICAgPFNDQUtTRHJvcFpvbmVUZXh0U3BhbiBpc0F0U2l6ZUxpbWl0PXtpc0F0U2l6ZUxpbWl0fSBkYXRhLWRyb3B6b25lLWxpbmsgb25DbGljaz17aGFuZGxlQXR0YWNoQ2xpY2t9PlxuICAgICAgICAgICAgICAgICAgICB7dCgna25vd2xlZGdlU2VjdGlvbi5kcm9wWm9uZVRleHQuMScpfVxuICAgICAgICAgICAgICAgICAgPC9TQ0FLU0Ryb3Bab25lVGV4dFNwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57dCgna25vd2xlZGdlU2VjdGlvbi5kcm9wWm9uZVRleHQuMicpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L1NDQUtTRHJvcFpvbmVUZXh0PlxuICAgICAgICAgICAgICAgIDxTQ0FLU0Ryb3Bab25lSW5mbz57dCgna25vd2xlZGdlU2VjdGlvbi5pbmZvRmlsZVR5cGVzJyl9PC9TQ0FLU0Ryb3Bab25lSW5mbz5cbiAgICAgICAgICAgICAgPC9TQ0FLU0Ryb3Bab25lPlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgIDwvU0NBS1NGaWxlVXBsb2FkV3JhcHBlckNvbnRlbnQ+XG4gICAgICAgICAgPFNDQUtTQXR0YWNobWVudHNXcmFwcGVyPlxuICAgICAgICAgICAgeyhsb2NhbEF0dGFjaG1lbnRzIHx8IFtdKS5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEF0dGFjaG1lbnRDYXJkXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIGtleT17YGF0dGFjaG1lbnQtJHthdHRhY2htZW50Py5uYW1lfS0ke2F0dGFjaG1lbnQ/LmlkfS0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50PXthdHRhY2htZW50fVxuICAgICAgICAgICAgICAgICAgaGFuZGxlQWN0aW9uPXtoYW5kbGVBY3Rpb259XG4gICAgICAgICAgICAgICAgICBhYm1Lbm93bGVkZ2VTZWN0aW9uXG4gICAgICAgICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUF0dGFjaG1lbnRDbGljayhhdHRhY2htZW50KX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NDQUtTQXR0YWNobWVudHNXcmFwcGVyPlxuICAgICAgICA8L1NDQUtTV3JhcHBlckNvbnRlbnQ+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIGFjY2VwdD1cIi50eHQsLm1kLC5jc3YsLmRvYywuZG9jeCwucHB0LC5wcHR4LC5wZGYsLnBuZywuanBnLC5qcGVnLC54bHN4LC54bHNcIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlU2VsZWN0fVxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgICAvPlxuICAgICAgPC9TQ0FLU1dyYXBwZXI+XG4gICAgICB7bW9kYWxQcm9wcy5pc09wZW4gJiYgKFxuICAgICAgICA8TW9kYWxGaWxlRXhjZWVkc1xuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICAgIHNldE1vZGFsUHJvcHMoeyBpc09wZW46IGZhbHNlLCBleGNsdWRlZEZpbGVzOiBbXSwgZXhjZWVkZWRGaWxlczogW10sIGludmFsaWRFeHRlbnNpb25GaWxlczogW10gfSlcbiAgICAgICAgICAgIG9uRmlsZUVycm9yQ2hhbmdlPy4oZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBleGNsdWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2x1ZGVkRmlsZXN9XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNlZWRlZEZpbGVzfVxuICAgICAgICAgIGludmFsaWRFeHRlbnNpb25GaWxlcz17bW9kYWxQcm9wcy5pbnZhbGlkRXh0ZW5zaW9uRmlsZXN9XG4gICAgICAgICAgc2VjdGlvbj1cImFibV9hZ2VudFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEF0dGFjaG1lbnRQcmV2aWV3TW9kYWxcbiAgICAgICAgaXNPcGVuPXshIXByZXZpZXdBdHRhY2htZW50fVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVByZXZpZXd9XG4gICAgICAgIGF0dGFjaG1lbnQ9e3ByZXZpZXdBdHRhY2htZW50fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsVUFBVSxRQUFRLDZDQUE2QztBQUN4RSxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQWlDQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDM0UsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxzQkFBc0IsUUFBUSxvQ0FBb0M7QUFHM0UsU0FDRUMsWUFBWSxFQUNaQyxrQkFBa0IsRUFDbEJDLG1CQUFtQixFQUNuQkMsdUJBQXVCLEVBQ3ZCQyxzQkFBc0IsRUFDdEJDLDZCQUE2QixFQUM3QkMsdUJBQXVCLEVBQ3ZCQyxpQkFBaUIsRUFDakJDLHdCQUF3QixFQUN4QkMsYUFBYSxFQUNiQyxpQkFBaUIsRUFDakJDLGlCQUFpQixFQUNqQkMsaUJBQWlCLEVBQ2pCQyxxQkFBcUIsUUFDaEIsOEJBQThCO0FBQ3JDLFNBQVNDLG9CQUFvQixRQUFRLCtDQUErQztBQUNwRixTQUFTQyx1QkFBdUIsUUFBUSx3Q0FBd0M7QUFDaEYsU0FBU0MsZ0JBQWdCLFFBQVEsbURBQW1EO0FBQ3BGLFNBQVNDLDRCQUE0QixFQUFFQyxTQUFTLFFBQVEscUNBQXFDO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFFN0YsU0FBU0Ms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
|