@projectcor/maia-components 2.49.0-beta.1 → 2.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.js +37 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +3 -37
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +117 -0
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +31 -101
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +91 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +49 -140
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +257 -0
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +53 -205
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.js +4 -0
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +2 -4
- package/lib/components/atoms/ClientSelector/ClientSelector.helpers.js +26 -0
- package/lib/components/atoms/ClientSelector/ClientSelector.js +12 -21
- package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.js +227 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +15 -255
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +59 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +12 -57
- package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +74 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +184 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.js +127 -176
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +96 -0
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +40 -113
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.js +17 -0
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +3 -15
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +3 -4
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +3 -11
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.js +6 -1
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +2 -3
- package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.js +10 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.js +101 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +21 -77
- package/lib/components/atoms/TextArea/TextArea.helpers.js +23 -0
- package/lib/components/atoms/TextArea/TextArea.js +11 -20
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.js +37 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +6 -29
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +68 -0
- package/lib/components/molecules/AbmSection/AbmGeneralSection.js +17 -56
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +133 -0
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +31 -112
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.js +17 -0
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +5 -15
- package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.js +370 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +197 -233
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +398 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +209 -235
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +515 -4
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +228 -344
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.js +5 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +3 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.js +49 -0
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +36 -33
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.js +39 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +30 -33
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.js +41 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +9 -35
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.js +48 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +9 -44
- package/lib/components/molecules/Sidebar/Sidebar.helpers.js +43 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +25 -22
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +512 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +309 -643
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.js +37 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +13 -25
- package/lib/constants/formatExtensions.js +7 -8
- package/lib/dev/DevReasoningTimeline.js +8 -50
- package/lib/hooks/useAgentModel/useCreateAgent.helpers.js +144 -0
- package/lib/hooks/useAgentModel/useCreateAgent.js +38 -102
- package/lib/hooks/useChatManager/useChatManager.helpers.js +902 -0
- package/lib/hooks/useChatManager/useChatManager.js +267 -741
- package/lib/hooks/useChatMessages/useChatMessages.helpers.js +365 -0
- package/lib/hooks/useChatMessages/useChatMessages.js +59 -285
- package/lib/hooks/useClientSearch.helpers.js +36 -0
- package/lib/hooks/useClientSearch.js +4 -32
- package/lib/hooks/useContextMentions.helpers.js +212 -0
- package/lib/hooks/useContextMentions.js +5 -223
- package/lib/hooks/useContextMentions.types.js +2 -0
- package/lib/hooks/useContextPinPopover.helpers.js +95 -0
- package/lib/hooks/useContextPinPopover.js +16 -75
- package/lib/hooks/useEntitySearch.helpers.js +407 -0
- package/lib/hooks/useEntitySearch.js +52 -436
- package/lib/hooks/useMentionPopover.helpers.js +41 -0
- package/lib/hooks/useMentionPopover.js +9 -35
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.js +47 -0
- package/lib/hooks/useMinimizedPillBottomOffset.js +15 -45
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.js +86 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +8 -82
- package/lib/hooks/useProjectSearch.helpers.js +61 -0
- package/lib/hooks/useProjectSearch.js +4 -58
- package/lib/hooks/useProjectSummaryConfig.helpers.js +62 -0
- package/lib/hooks/useProjectSummaryConfig.js +14 -52
- package/lib/hooks/useReasoningTrace/reasoningStore.js +8 -39
- package/lib/hooks/useRecentClientsSearch.helpers.js +33 -0
- package/lib/hooks/useRecentClientsSearch.js +4 -32
- package/lib/lang/br/index.js +1 -7
- package/lib/lang/en/index.js +1 -7
- package/lib/lang/es/index.js +1 -7
- package/lib/lang/fr/index.js +1 -7
- package/lib/services/maia/Agents/getAgents.helpers.js +241 -0
- package/lib/services/maia/Agents/getAgents.js +90 -282
- package/lib/services/maia/Orchestrator/orchestrator.helpers.js +130 -0
- package/lib/services/maia/Orchestrator/orchestrator.js +38 -121
- package/lib/services/utils/mapChatMessages.helpers.js +223 -0
- package/lib/services/utils/mapChatMessages.js +25 -254
- package/lib/store/sessions/sessionNotifications.helpers.js +45 -0
- package/lib/store/sessions/sessionNotifications.js +35 -41
- package/lib/store/sessions/sessionStreamManager.helpers.js +134 -0
- package/lib/store/sessions/sessionStreamManager.js +172 -236
- package/lib/test/mockSseStream.js +121 -0
- package/lib/test/streamdownCodeMock.js +6 -0
- package/lib/test/streamdownMock.js +12 -0
- package/lib/types/Chat.js +1 -1
- package/lib/types/agentModal.js +1 -1
- package/lib/types/reasoning.js +1 -1
- package/lib/utils/imagePreprocessor.helpers.js +28 -0
- package/lib/utils/imagePreprocessor.js +12 -37
- package/lib/utils/renderContextMentions.helpers.js +110 -0
- package/lib/utils/renderContextMentions.js +4 -110
- package/lib/utils/streamActivityMessages.helpers.js +222 -0
- package/lib/utils/streamActivityMessages.js +4 -221
- package/package.json +2 -2
- package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.js +0 -53
- package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.styles.js +0 -8
- package/lib/components/atoms/ContextCompactedNotice/index.js +0 -2
- package/lib/types/contextCompaction.js +0 -48
- package/lib/types/jest-dom.d.js +0 -2
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/** Líneas visuales con wrap de palabras al ancho dado (aprox. el navegador en LTR). */
|
|
2
|
+
export var countVisualLinesWrapped = function countVisualLinesWrapped(raw, contentWidthPx, measureTextWidth) {
|
|
3
|
+
if (contentWidthPx <= 1) {
|
|
4
|
+
return 1;
|
|
5
|
+
}
|
|
6
|
+
var paragraphs = raw.split('\n');
|
|
7
|
+
var total = paragraphs.reduce(function (sum, paragraph) {
|
|
8
|
+
if (paragraph.length === 0) {
|
|
9
|
+
return sum + 1;
|
|
10
|
+
}
|
|
11
|
+
var words = paragraph.split(/\s+/).filter(function (word) {
|
|
12
|
+
return word.length > 0;
|
|
13
|
+
});
|
|
14
|
+
var _words$reduce = words.reduce(function (state, word, index) {
|
|
15
|
+
var wordWidth = measureTextWidth(word);
|
|
16
|
+
var spaceWidth = index > 0 ? measureTextWidth(' ') : 0;
|
|
17
|
+
if (wordWidth > contentWidthPx) {
|
|
18
|
+
var lines = state.linesInParagraph,
|
|
19
|
+
currentLineWidth = state.currentLineWidth;
|
|
20
|
+
if (currentLineWidth > 0) {
|
|
21
|
+
lines += 1;
|
|
22
|
+
currentLineWidth = 0;
|
|
23
|
+
}
|
|
24
|
+
lines += Math.ceil(wordWidth / contentWidthPx) - 1;
|
|
25
|
+
return {
|
|
26
|
+
linesInParagraph: lines,
|
|
27
|
+
currentLineWidth: 0
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
var candidateWidth = state.currentLineWidth === 0 ? wordWidth : state.currentLineWidth + spaceWidth + wordWidth;
|
|
31
|
+
if (candidateWidth > contentWidthPx && state.currentLineWidth > 0) {
|
|
32
|
+
return {
|
|
33
|
+
linesInParagraph: state.linesInParagraph + 1,
|
|
34
|
+
currentLineWidth: wordWidth
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
linesInParagraph: state.linesInParagraph,
|
|
39
|
+
currentLineWidth: candidateWidth
|
|
40
|
+
};
|
|
41
|
+
}, {
|
|
42
|
+
linesInParagraph: 1,
|
|
43
|
+
currentLineWidth: 0
|
|
44
|
+
}),
|
|
45
|
+
linesInParagraph = _words$reduce.linesInParagraph;
|
|
46
|
+
return sum + linesInParagraph;
|
|
47
|
+
}, 0);
|
|
48
|
+
return Math.max(1, total);
|
|
49
|
+
};
|
|
50
|
+
export var resolveSingleLineOuterHeight = function resolveSingleLineOuterHeight(metrics) {
|
|
51
|
+
return Math.round(metrics.lineHeight + metrics.paddingTop + metrics.paddingBottom + metrics.borderTop + metrics.borderBottom);
|
|
52
|
+
};
|
|
53
|
+
export var detectMultilineFromCanvas = function detectMultilineFromCanvas(text, wrapCheckWidth, measureSegmentWidth, scrollHeight, singleLineHeight) {
|
|
54
|
+
var lines = text.split('\n');
|
|
55
|
+
if (lines.length > 1) return true;
|
|
56
|
+
if (lines.some(function (line) {
|
|
57
|
+
return line.trim() !== '' && measureSegmentWidth(line) > wrapCheckWidth;
|
|
58
|
+
})) return true;
|
|
59
|
+
return scrollHeight > singleLineHeight * 2.05;
|
|
60
|
+
};
|
|
61
|
+
export var resolveVisualLineCounts = function resolveVisualLineCounts(params) {
|
|
62
|
+
var visualLinesAtWrapWidth = 1;
|
|
63
|
+
var visualLinesAtCurrentWidth = 1;
|
|
64
|
+
if (!params.isEmpty && params.canvasContext) {
|
|
65
|
+
visualLinesAtWrapWidth = countVisualLinesWrapped(params.text, params.wrapCheckWidth, params.measureSegmentWidth);
|
|
66
|
+
visualLinesAtCurrentWidth = countVisualLinesWrapped(params.text, params.textareaWidth, params.measureSegmentWidth);
|
|
67
|
+
} else if (!params.isEmpty && !params.canvasContext) {
|
|
68
|
+
visualLinesAtWrapWidth = params.scrollHeight > params.singleLineHeight * 1.85 ? Math.ceil(params.scrollHeight / params.singleLineHeight) : 1;
|
|
69
|
+
visualLinesAtCurrentWidth = visualLinesAtWrapWidth;
|
|
70
|
+
}
|
|
71
|
+
var linesForHeight = !params.isEmpty && params.canvasContext ? visualLinesAtCurrentWidth : visualLinesAtWrapWidth;
|
|
72
|
+
return {
|
|
73
|
+
visualLinesAtWrapWidth: visualLinesAtWrapWidth,
|
|
74
|
+
visualLinesAtCurrentWidth: visualLinesAtCurrentWidth,
|
|
75
|
+
linesForHeight: linesForHeight
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
export var resolveTextareaContentHeight = function resolveTextareaContentHeight(params) {
|
|
79
|
+
var isEmpty = params.isEmpty,
|
|
80
|
+
hasMultipleVisualLines = params.hasMultipleVisualLines,
|
|
81
|
+
linesForHeight = params.linesForHeight,
|
|
82
|
+
scrollHeight = params.scrollHeight,
|
|
83
|
+
minHeight = params.minHeight,
|
|
84
|
+
maxHeight = params.maxHeight,
|
|
85
|
+
singleLineOuterHeight = params.singleLineOuterHeight,
|
|
86
|
+
lineHeight = params.lineHeight,
|
|
87
|
+
paddingTop = params.paddingTop,
|
|
88
|
+
paddingBottom = params.paddingBottom,
|
|
89
|
+
borderTop = params.borderTop,
|
|
90
|
+
borderBottom = params.borderBottom;
|
|
91
|
+
if (isEmpty || !hasMultipleVisualLines) return singleLineOuterHeight;
|
|
92
|
+
if (linesForHeight <= 1) return Math.min(Math.max(singleLineOuterHeight, minHeight), maxHeight);
|
|
93
|
+
var snappedHeight = paddingTop + paddingBottom + borderTop + borderBottom + linesForHeight * lineHeight;
|
|
94
|
+
return Math.min(Math.max(Math.min(scrollHeight, snappedHeight), minHeight), maxHeight);
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3VudFZpc3VhbExpbmVzV3JhcHBlZCIsInJhdyIsImNvbnRlbnRXaWR0aFB4IiwibWVhc3VyZVRleHRXaWR0aCIsInBhcmFncmFwaHMiLCJzcGxpdCIsInRvdGFsIiwicmVkdWNlIiwic3VtIiwicGFyYWdyYXBoIiwibGVuZ3RoIiwid29yZHMiLCJmaWx0ZXIiLCJ3b3JkIiwiX3dvcmRzJHJlZHVjZSIsInN0YXRlIiwiaW5kZXgiLCJ3b3JkV2lkdGgiLCJzcGFjZVdpZHRoIiwibGluZXMiLCJsaW5lc0luUGFyYWdyYXBoIiwiY3VycmVudExpbmVXaWR0aCIsIk1hdGgiLCJjZWlsIiwiY2FuZGlkYXRlV2lkdGgiLCJtYXgiLCJyZXNvbHZlU2luZ2xlTGluZU91dGVySGVpZ2h0IiwibWV0cmljcyIsInJvdW5kIiwibGluZUhlaWdodCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiYm9yZGVyVG9wIiwiYm9yZGVyQm90dG9tIiwiZGV0ZWN0TXVsdGlsaW5lRnJvbUNhbnZhcyIsInRleHQiLCJ3cmFwQ2hlY2tXaWR0aCIsIm1lYXN1cmVTZWdtZW50V2lkdGgiLCJzY3JvbGxIZWlnaHQiLCJzaW5nbGVMaW5lSGVpZ2h0Iiwic29tZSIsImxpbmUiLCJ0cmltIiwicmVzb2x2ZVZpc3VhbExpbmVDb3VudHMiLCJwYXJhbXMiLCJ2aXN1YWxMaW5lc0F0V3JhcFdpZHRoIiwidmlzdWFsTGluZXNBdEN1cnJlbnRXaWR0aCIsImlzRW1wdHkiLCJjYW52YXNDb250ZXh0IiwidGV4dGFyZWFXaWR0aCIsImxpbmVzRm9ySGVpZ2h0IiwicmVzb2x2ZVRleHRhcmVhQ29udGVudEhlaWdodCIsImhhc011bHRpcGxlVmlzdWFsTGluZXMiLCJtaW5IZWlnaHQiLCJtYXhIZWlnaHQiLCJzaW5nbGVMaW5lT3V0ZXJIZWlnaHQiLCJtaW4iLCJzbmFwcGVkSGVpZ2h0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dEVkaXRvci5oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBMw61uZWFzIHZpc3VhbGVzIGNvbiB3cmFwIGRlIHBhbGFicmFzIGFsIGFuY2hvIGRhZG8gKGFwcm94LiBlbCBuYXZlZ2Fkb3IgZW4gTFRSKS4gKi9cbmV4cG9ydCBjb25zdCBjb3VudFZpc3VhbExpbmVzV3JhcHBlZCA9IChcbiAgcmF3OiBzdHJpbmcsXG4gIGNvbnRlbnRXaWR0aFB4OiBudW1iZXIsXG4gIG1lYXN1cmVUZXh0V2lkdGg6IChzZWdtZW50OiBzdHJpbmcpID0+IG51bWJlclxuKTogbnVtYmVyID0+IHtcbiAgaWYgKGNvbnRlbnRXaWR0aFB4IDw9IDEpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGNvbnN0IHBhcmFncmFwaHMgPSByYXcuc3BsaXQoJ1xcbicpXG5cbiAgY29uc3QgdG90YWwgPSBwYXJhZ3JhcGhzLnJlZHVjZSgoc3VtLCBwYXJhZ3JhcGgpID0+IHtcbiAgICBpZiAocGFyYWdyYXBoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHN1bSArIDFcbiAgICB9XG5cbiAgICBjb25zdCB3b3JkcyA9IHBhcmFncmFwaC5zcGxpdCgvXFxzKy8pLmZpbHRlcih3b3JkID0+IHdvcmQubGVuZ3RoID4gMClcblxuICAgIGNvbnN0IHsgbGluZXNJblBhcmFncmFwaCB9ID0gd29yZHMucmVkdWNlKFxuICAgICAgKHN0YXRlLCB3b3JkLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB3b3JkV2lkdGggPSBtZWFzdXJlVGV4dFdpZHRoKHdvcmQpXG4gICAgICAgIGNvbnN0IHNwYWNlV2lkdGggPSBpbmRleCA+IDAgPyBtZWFzdXJlVGV4dFdpZHRoKCcgJykgOiAwXG5cbiAgICAgICAgaWYgKHdvcmRXaWR0aCA+IGNvbnRlbnRXaWR0aFB4KSB7XG4gICAgICAgICAgbGV0IHsgbGluZXNJblBhcmFncmFwaDogbGluZXMsIGN1cnJlbnRMaW5lV2lkdGggfSA9IHN0YXRlXG4gICAgICAgICAgaWYgKGN1cnJlbnRMaW5lV2lkdGggPiAwKSB7XG4gICAgICAgICAgICBsaW5lcyArPSAxXG4gICAgICAgICAgICBjdXJyZW50TGluZVdpZHRoID0gMFxuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5lcyArPSBNYXRoLmNlaWwod29yZFdpZHRoIC8gY29udGVudFdpZHRoUHgpIC0gMVxuICAgICAgICAgIHJldHVybiB7IGxpbmVzSW5QYXJhZ3JhcGg6IGxpbmVzLCBjdXJyZW50TGluZVdpZHRoOiAwIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZVdpZHRoID1cbiAgICAgICAgICBzdGF0ZS5jdXJyZW50TGluZVdpZHRoID09PSAwID8gd29yZFdpZHRoIDogc3RhdGUuY3VycmVudExpbmVXaWR0aCArIHNwYWNlV2lkdGggKyB3b3JkV2lkdGhcbiAgICAgICAgaWYgKGNhbmRpZGF0ZVdpZHRoID4gY29udGVudFdpZHRoUHggJiYgc3RhdGUuY3VycmVudExpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4geyBsaW5lc0luUGFyYWdyYXBoOiBzdGF0ZS5saW5lc0luUGFyYWdyYXBoICsgMSwgY3VycmVudExpbmVXaWR0aDogd29yZFdpZHRoIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBsaW5lc0luUGFyYWdyYXBoOiBzdGF0ZS5saW5lc0luUGFyYWdyYXBoLCBjdXJyZW50TGluZVdpZHRoOiBjYW5kaWRhdGVXaWR0aCB9XG4gICAgICB9LFxuICAgICAgeyBsaW5lc0luUGFyYWdyYXBoOiAxLCBjdXJyZW50TGluZVdpZHRoOiAwIH1cbiAgICApXG5cbiAgICByZXR1cm4gc3VtICsgbGluZXNJblBhcmFncmFwaFxuICB9LCAwKVxuXG4gIHJldHVybiBNYXRoLm1heCgxLCB0b3RhbClcbn1cblxuZXhwb3J0IHR5cGUgVGV4dGFyZWFCb3hNZXRyaWNzID0ge1xuICBsaW5lSGVpZ2h0OiBudW1iZXJcbiAgcGFkZGluZ1RvcDogbnVtYmVyXG4gIHBhZGRpbmdCb3R0b206IG51bWJlclxuICBib3JkZXJUb3A6IG51bWJlclxuICBib3JkZXJCb3R0b206IG51bWJlclxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVNpbmdsZUxpbmVPdXRlckhlaWdodCA9IChtZXRyaWNzOiBUZXh0YXJlYUJveE1ldHJpY3MpOiBudW1iZXIgPT5cbiAgTWF0aC5yb3VuZChtZXRyaWNzLmxpbmVIZWlnaHQgKyBtZXRyaWNzLnBhZGRpbmdUb3AgKyBtZXRyaWNzLnBhZGRpbmdCb3R0b20gKyBtZXRyaWNzLmJvcmRlclRvcCArIG1ldHJpY3MuYm9yZGVyQm90dG9tKVxuXG5leHBvcnQgY29uc3QgZGV0ZWN0TXVsdGlsaW5lRnJvbUNhbnZhcyA9IChcbiAgdGV4dDogc3RyaW5nLFxuICB3cmFwQ2hlY2tXaWR0aDogbnVtYmVyLFxuICBtZWFzdXJlU2VnbWVudFdpZHRoOiAoc2VnbWVudDogc3RyaW5nKSA9PiBudW1iZXIsXG4gIHNjcm9sbEhlaWdodDogbnVtYmVyLFxuICBzaW5nbGVMaW5lSGVpZ2h0OiBudW1iZXJcbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpXG4gIGlmIChsaW5lcy5sZW5ndGggPiAxKSByZXR1cm4gdHJ1ZVxuICBpZiAobGluZXMuc29tZShsaW5lID0+IGxpbmUudHJpbSgpICE9PSAnJyAmJiBtZWFzdXJlU2VnbWVudFdpZHRoKGxpbmUpID4gd3JhcENoZWNrV2lkdGgpKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gc2Nyb2xsSGVpZ2h0ID4gc2luZ2xlTGluZUhlaWdodCAqIDIuMDVcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVWaXN1YWxMaW5lQ291bnRzID0gKHBhcmFtczoge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGNhbnZhc0NvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGxcbiAgdGV4dDogc3RyaW5nXG4gIHdyYXBDaGVja1dpZHRoOiBudW1iZXJcbiAgdGV4dGFyZWFXaWR0aDogbnVtYmVyXG4gIG1lYXN1cmVTZWdtZW50V2lkdGg6IChzZWdtZW50OiBzdHJpbmcpID0+IG51bWJlclxuICBzY3JvbGxIZWlnaHQ6IG51bWJlclxuICBzaW5nbGVMaW5lSGVpZ2h0OiBudW1iZXJcbn0pOiB7IHZpc3VhbExpbmVzQXRXcmFwV2lkdGg6IG51bWJlcjsgdmlzdWFsTGluZXNBdEN1cnJlbnRXaWR0aDogbnVtYmVyOyBsaW5lc0ZvckhlaWdodDogbnVtYmVyIH0gPT4ge1xuICBsZXQgdmlzdWFsTGluZXNBdFdyYXBXaWR0aCA9IDFcbiAgbGV0IHZpc3VhbExpbmVzQXRDdXJyZW50V2lkdGggPSAxXG5cbiAgaWYgKCFwYXJhbXMuaXNFbXB0eSAmJiBwYXJhbXMuY2FudmFzQ29udGV4dCkge1xuICAgIHZpc3VhbExpbmVzQXRXcmFwV2lkdGggPSBjb3VudFZpc3VhbExpbmVzV3JhcHBlZChwYXJhbXMudGV4dCwgcGFyYW1zLndyYXBDaGVja1dpZHRoLCBwYXJhbXMubWVhc3VyZVNlZ21lbnRXaWR0aClcbiAgICB2aXN1YWxMaW5lc0F0Q3VycmVudFdpZHRoID0gY291bnRWaXN1YWxMaW5lc1dyYXBwZWQocGFyYW1zLnRleHQsIHBhcmFtcy50ZXh0YXJlYVdpZHRoLCBwYXJhbXMubWVhc3VyZVNlZ21lbnRXaWR0aClcbiAgfSBlbHNlIGlmICghcGFyYW1zLmlzRW1wdHkgJiYgIXBhcmFtcy5jYW52YXNDb250ZXh0KSB7XG4gICAgdmlzdWFsTGluZXNBdFdyYXBXaWR0aCA9XG4gICAgICBwYXJhbXMuc2Nyb2xsSGVpZ2h0ID4gcGFyYW1zLnNpbmdsZUxpbmVIZWlnaHQgKiAxLjg1XG4gICAgICAgID8gTWF0aC5jZWlsKHBhcmFtcy5zY3JvbGxIZWlnaHQgLyBwYXJhbXMuc2luZ2xlTGluZUhlaWdodClcbiAgICAgICAgOiAxXG4gICAgdmlzdWFsTGluZXNBdEN1cnJlbnRXaWR0aCA9IHZpc3VhbExpbmVzQXRXcmFwV2lkdGhcbiAgfVxuXG4gIGNvbnN0IGxpbmVzRm9ySGVpZ2h0ID0gIXBhcmFtcy5pc0VtcHR5ICYmIHBhcmFtcy5jYW52YXNDb250ZXh0ID8gdmlzdWFsTGluZXNBdEN1cnJlbnRXaWR0aCA6IHZpc3VhbExpbmVzQXRXcmFwV2lkdGhcblxuICByZXR1cm4geyB2aXN1YWxMaW5lc0F0V3JhcFdpZHRoLCB2aXN1YWxMaW5lc0F0Q3VycmVudFdpZHRoLCBsaW5lc0ZvckhlaWdodCB9XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlVGV4dGFyZWFDb250ZW50SGVpZ2h0ID0gKHBhcmFtczoge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGhhc011bHRpcGxlVmlzdWFsTGluZXM6IGJvb2xlYW5cbiAgbGluZXNGb3JIZWlnaHQ6IG51bWJlclxuICBzY3JvbGxIZWlnaHQ6IG51bWJlclxuICBtaW5IZWlnaHQ6IG51bWJlclxuICBtYXhIZWlnaHQ6IG51bWJlclxuICBzaW5nbGVMaW5lT3V0ZXJIZWlnaHQ6IG51bWJlclxuICBsaW5lSGVpZ2h0OiBudW1iZXJcbiAgcGFkZGluZ1RvcDogbnVtYmVyXG4gIHBhZGRpbmdCb3R0b206IG51bWJlclxuICBib3JkZXJUb3A6IG51bWJlclxuICBib3JkZXJCb3R0b206IG51bWJlclxufSk6IG51bWJlciA9PiB7XG4gIGNvbnN0IHtcbiAgICBpc0VtcHR5LFxuICAgIGhhc011bHRpcGxlVmlzdWFsTGluZXMsXG4gICAgbGluZXNGb3JIZWlnaHQsXG4gICAgc2Nyb2xsSGVpZ2h0LFxuICAgIG1pbkhlaWdodCxcbiAgICBtYXhIZWlnaHQsXG4gICAgc2luZ2xlTGluZU91dGVySGVpZ2h0LFxuICAgIGxpbmVIZWlnaHQsXG4gICAgcGFkZGluZ1RvcCxcbiAgICBwYWRkaW5nQm90dG9tLFxuICAgIGJvcmRlclRvcCxcbiAgICBib3JkZXJCb3R0b20sXG4gIH0gPSBwYXJhbXNcblxuICBpZiAoaXNFbXB0eSB8fCAhaGFzTXVsdGlwbGVWaXN1YWxMaW5lcykgcmV0dXJuIHNpbmdsZUxpbmVPdXRlckhlaWdodFxuICBpZiAobGluZXNGb3JIZWlnaHQgPD0gMSkgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHNpbmdsZUxpbmVPdXRlckhlaWdodCwgbWluSGVpZ2h0KSwgbWF4SGVpZ2h0KVxuXG4gIGNvbnN0IHNuYXBwZWRIZWlnaHQgPSBwYWRkaW5nVG9wICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlclRvcCArIGJvcmRlckJvdHRvbSArIGxpbmVzRm9ySGVpZ2h0ICogbGluZUhlaWdodFxuICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoTWF0aC5taW4oc2Nyb2xsSGVpZ2h0LCBzbmFwcGVkSGVpZ2h0KSwgbWluSGVpZ2h0KSwgbWF4SGVpZ2h0KVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLE9BQU8sSUFBTUEsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FDbENDLEdBQVcsRUFDWEMsY0FBc0IsRUFDdEJDLGdCQUE2QyxFQUNsQztFQUNYLElBQUlELGNBQWMsSUFBSSxDQUFDLEVBQUU7SUFDdkIsT0FBTyxDQUFDO0VBQ1Y7RUFDQSxJQUFNRSxVQUFVLEdBQUdILEdBQUcsQ0FBQ0ksS0FBSyxDQUFDLElBQUksQ0FBQztFQUVsQyxJQUFNQyxLQUFLLEdBQUdGLFVBQVUsQ0FBQ0csTUFBTSxDQUFDLFVBQUNDLEdBQUcsRUFBRUMsU0FBUyxFQUFLO0lBQ2xELElBQUlBLFNBQVMsQ0FBQ0MsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUMxQixPQUFPRixHQUFHLEdBQUcsQ0FBQztJQUNoQjtJQUVBLElBQU1HLEtBQUssR0FBR0YsU0FBUyxDQUFDSixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUNPLE1BQU0sQ0FBQyxVQUFBQyxJQUFJO01BQUEsT0FBSUEsSUFBSSxDQUFDSCxNQUFNLEdBQUcsQ0FBQztJQUFBLEVBQUM7SUFFcEUsSUFBQUksYUFBQSxHQUE2QkgsS0FBSyxDQUFDSixNQUFNLENBQ3ZDLFVBQUNRLEtBQUssRUFBRUYsSUFBSSxFQUFFRyxLQUFLLEVBQUs7UUFDdEIsSUFBTUMsU0FBUyxHQUFHZCxnQkFBZ0IsQ0FBQ1UsSUFBSSxDQUFDO1FBQ3hDLElBQU1LLFVBQVUsR0FB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
|
|
@@ -1,67 +1,12 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
3
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
2
|
/* eslint-disable no-restricted-syntax */
|
|
6
3
|
/* eslint-disable no-continue */
|
|
7
4
|
/* eslint-disable no-void */
|
|
8
5
|
/* eslint-disable prefer-destructuring */
|
|
9
6
|
import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
7
|
+
import { detectMultilineFromCanvas, resolveSingleLineOuterHeight, resolveTextareaContentHeight, resolveVisualLineCounts } from './MAIAInputEditor.helpers';
|
|
10
8
|
import { StyledMAIAInput } from './styles';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Líneas visuales con wrap de palabras al ancho dado (aprox. el navegador en LTR).
|
|
14
|
-
*/
|
|
15
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
|
-
function countVisualLinesWrapped(raw, contentWidthPx, measureTextWidth) {
|
|
17
|
-
if (contentWidthPx <= 1) {
|
|
18
|
-
return 1;
|
|
19
|
-
}
|
|
20
|
-
var paragraphs = raw.split('\n');
|
|
21
|
-
var total = 0;
|
|
22
|
-
var _iterator = _createForOfIteratorHelper(paragraphs),
|
|
23
|
-
_step;
|
|
24
|
-
try {
|
|
25
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
26
|
-
var paragraph = _step.value;
|
|
27
|
-
if (paragraph.length === 0) {
|
|
28
|
-
total += 1;
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
var words = paragraph.split(/\s+/).filter(function (w) {
|
|
32
|
-
return w.length > 0;
|
|
33
|
-
});
|
|
34
|
-
var linesInParagraph = 1;
|
|
35
|
-
var currentLineWidth = 0;
|
|
36
|
-
for (var i = 0; i < words.length; i += 1) {
|
|
37
|
-
var word = words[i];
|
|
38
|
-
var wordWidth = measureTextWidth(word);
|
|
39
|
-
var spaceWidth = i > 0 ? measureTextWidth(' ') : 0;
|
|
40
|
-
if (wordWidth > contentWidthPx) {
|
|
41
|
-
if (currentLineWidth > 0) {
|
|
42
|
-
linesInParagraph += 1;
|
|
43
|
-
currentLineWidth = 0;
|
|
44
|
-
}
|
|
45
|
-
linesInParagraph += Math.ceil(wordWidth / contentWidthPx) - 1;
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
var candidateWidth = currentLineWidth === 0 ? wordWidth : currentLineWidth + spaceWidth + wordWidth;
|
|
49
|
-
if (candidateWidth > contentWidthPx && currentLineWidth > 0) {
|
|
50
|
-
linesInParagraph += 1;
|
|
51
|
-
currentLineWidth = wordWidth;
|
|
52
|
-
} else {
|
|
53
|
-
currentLineWidth = candidateWidth;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
total += linesInParagraph;
|
|
57
|
-
}
|
|
58
|
-
} catch (err) {
|
|
59
|
-
_iterator.e(err);
|
|
60
|
-
} finally {
|
|
61
|
-
_iterator.f();
|
|
62
|
-
}
|
|
63
|
-
return Math.max(1, total);
|
|
64
|
-
}
|
|
65
10
|
export var MAIAInputEditor = function MAIAInputEditor(_ref) {
|
|
66
11
|
var inputRef = _ref.inputRef,
|
|
67
12
|
disabled = _ref.disabled,
|
|
@@ -105,7 +50,14 @@ export var MAIAInputEditor = function MAIAInputEditor(_ref) {
|
|
|
105
50
|
var paddingBottom = parseFloat(computedStyle.paddingBottom) || 0;
|
|
106
51
|
var borderTop = parseFloat(computedStyle.borderTopWidth) || 0;
|
|
107
52
|
var borderBottom = parseFloat(computedStyle.borderBottomWidth) || 0;
|
|
108
|
-
var
|
|
53
|
+
var boxMetrics = {
|
|
54
|
+
lineHeight: lineHeight,
|
|
55
|
+
paddingTop: paddingTop,
|
|
56
|
+
paddingBottom: paddingBottom,
|
|
57
|
+
borderTop: borderTop,
|
|
58
|
+
borderBottom: borderBottom
|
|
59
|
+
};
|
|
60
|
+
var singleLineHeight = resolveSingleLineOuterHeight(boxMetrics);
|
|
109
61
|
var isEmpty = textarea.value.trim() === '';
|
|
110
62
|
var paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;
|
|
111
63
|
var paddingRight = parseFloat(computedStyle.paddingRight) || 0;
|
|
@@ -116,69 +68,44 @@ export var MAIAInputEditor = function MAIAInputEditor(_ref) {
|
|
|
116
68
|
textareaMinContentWidthSeenRef.current = textareaMinContentWidthSeenRef.current === null ? textareaWidth : Math.min(textareaMinContentWidthSeenRef.current, textareaWidth);
|
|
117
69
|
}
|
|
118
70
|
var wrapCheckWidth = (_textareaMinContentWi = textareaMinContentWidthSeenRef.current) !== null && _textareaMinContentWi !== void 0 ? _textareaMinContentWi : textareaWidth;
|
|
119
|
-
var canvasMeasureIndicatesMultiline = false;
|
|
120
71
|
var canvas = document.createElement('canvas');
|
|
121
72
|
var canvasContext = canvas.getContext('2d');
|
|
122
73
|
var text = textarea.value || '';
|
|
123
|
-
|
|
124
|
-
if (!canvasContext) {
|
|
125
|
-
canvasMeasureIndicatesMultiline = scrollHeight > singleLineHeight * 2.05;
|
|
126
|
-
} else {
|
|
74
|
+
if (canvasContext) {
|
|
127
75
|
var textareaStyles = window.getComputedStyle(textarea);
|
|
128
76
|
canvasContext.font = "".concat(textareaStyles.fontWeight, " ").concat(textareaStyles.fontSize, " ").concat(textareaStyles.fontFamily);
|
|
129
|
-
if (lines.length > 1) {
|
|
130
|
-
canvasMeasureIndicatesMultiline = true;
|
|
131
|
-
} else {
|
|
132
|
-
var _iterator2 = _createForOfIteratorHelper(lines),
|
|
133
|
-
_step2;
|
|
134
|
-
try {
|
|
135
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
136
|
-
var line = _step2.value;
|
|
137
|
-
if (line.trim() === '') continue;
|
|
138
|
-
if (canvasContext.measureText(line).width > wrapCheckWidth) {
|
|
139
|
-
canvasMeasureIndicatesMultiline = true;
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
} catch (err) {
|
|
144
|
-
_iterator2.e(err);
|
|
145
|
-
} finally {
|
|
146
|
-
_iterator2.f();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
77
|
}
|
|
78
|
+
var measureSegmentWidth = function measureSegmentWidth(segment) {
|
|
79
|
+
return canvasContext ? canvasContext.measureText(segment).width : 0;
|
|
80
|
+
};
|
|
81
|
+
var canvasMeasureIndicatesMultiline = canvasContext ? detectMultilineFromCanvas(text, wrapCheckWidth, measureSegmentWidth, scrollHeight, singleLineHeight) : scrollHeight > singleLineHeight * 2.05;
|
|
150
82
|
var hasMultipleVisualLines = canvasMeasureIndicatesMultiline;
|
|
151
83
|
var nextMultiline = !isEmpty && hasMultipleVisualLines;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
newHeight = Math.min(Math.max(snappedSingleLineOuterHeight, minHeight), maxHeight);
|
|
178
|
-
} else {
|
|
179
|
-
var snappedHeight = paddingTop + paddingBottom + borderTop + borderBottom + linesForHeight * lineHeight;
|
|
180
|
-
newHeight = Math.min(Math.max(Math.min(scrollHeight, snappedHeight), minHeight), maxHeight);
|
|
181
|
-
}
|
|
84
|
+
var _resolveVisualLineCou = resolveVisualLineCounts({
|
|
85
|
+
isEmpty: isEmpty,
|
|
86
|
+
canvasContext: canvasContext,
|
|
87
|
+
text: text,
|
|
88
|
+
wrapCheckWidth: wrapCheckWidth,
|
|
89
|
+
textareaWidth: textareaWidth,
|
|
90
|
+
measureSegmentWidth: measureSegmentWidth,
|
|
91
|
+
scrollHeight: scrollHeight,
|
|
92
|
+
singleLineHeight: singleLineHeight
|
|
93
|
+
}),
|
|
94
|
+
linesForHeight = _resolveVisualLineCou.linesForHeight;
|
|
95
|
+
var newHeight = resolveTextareaContentHeight({
|
|
96
|
+
isEmpty: isEmpty,
|
|
97
|
+
hasMultipleVisualLines: hasMultipleVisualLines,
|
|
98
|
+
linesForHeight: linesForHeight,
|
|
99
|
+
scrollHeight: scrollHeight,
|
|
100
|
+
minHeight: minHeight,
|
|
101
|
+
maxHeight: maxHeight,
|
|
102
|
+
singleLineOuterHeight: singleLineHeight,
|
|
103
|
+
lineHeight: lineHeight,
|
|
104
|
+
paddingTop: paddingTop,
|
|
105
|
+
paddingBottom: paddingBottom,
|
|
106
|
+
borderTop: borderTop,
|
|
107
|
+
borderBottom: borderBottom
|
|
108
|
+
});
|
|
182
109
|
setIsTextMultiline(function (prev) {
|
|
183
110
|
return prev === nextMultiline ? prev : nextMultiline;
|
|
184
111
|
});
|
|
@@ -263,4 +190,4 @@ export var MAIAInputEditor = function MAIAInputEditor(_ref) {
|
|
|
263
190
|
onBlur: handleBlur
|
|
264
191
|
});
|
|
265
192
|
};
|
|
266
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiU3R5bGVkTUFJQUlucHV0IiwianN4IiwiX2pzeCIsImNvdW50VmlzdWFsTGluZXNXcmFwcGVkIiwicmF3IiwiY29udGVudFdpZHRoUHgiLCJtZWFzdXJlVGV4dFdpZHRoIiwicGFyYWdyYXBocyIsInNwbGl0IiwidG90YWwiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwicGFyYWdyYXBoIiwidmFsdWUiLCJsZW5ndGgiLCJ3b3JkcyIsImZpbHRlciIsInciLCJsaW5lc0luUGFyYWdyYXBoIiwiY3VycmVudExpbmVXaWR0aCIsImkiLCJ3b3JkIiwid29yZFdpZHRoIiwic3BhY2VXaWR0aCIsIk1hdGgiLCJjZWlsIiwiY2FuZGlkYXRlV2lkdGgiLCJlcnIiLCJlIiwiZiIsIm1heCIsIk1BSUFJbnB1dEVkaXRvciIsIl9yZWYiLCJpbnB1dFJlZiIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJhbGlnbkJ1dHRvbnMiLCJzZXRJc1RleHRNdWx0aWxpbmUiLCJjaGF0SWQiLCJuZXdDaGF0S2V5IiwiY2xlYXJTZXEiLCJzZW5kRGlzYWJsZWQiLCJvblR5cGluZ1ByZXNlbmNlQ2hhbmdlIiwib25FbnRlclNlbmQiLCJvbkNoYW5nZVByb3AiLCJ0ZXh0YXJlYU1pbkNvbnRlbnRXaWR0aFNlZW5SZWYiLCJwcmVzZW5jZVByZXZSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJyZXNpemVFcG9jaCIsInNldFJlc2l6ZUVwb2NoIiwiaGFuZGxlUmVzaXplIiwiX3RleHRhcmVhTWluQ29udGVudFdpIiwidGV4dGFyZWEiLCJjdXJyZW50IiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwicHJldmlvdXNNaW5IZWlnaHQiLCJzdHlsZSIsInByZXZpb3VzTWF4SGVpZ2h0IiwiaGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0Iiwic2Nyb2xsSGVpZ2h0IiwiY29tcHV0ZWRTdHlsZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJsaW5lSGVpZ2h0IiwicGFyc2VGbG9hdCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiYm9yZGVyVG9wIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJCb3R0b20iLCJib3JkZXJCb3R0b21XaWR0aCIsInNpbmdsZUxpbmVIZWlnaHQiLCJpc0VtcHR5IiwidHJpbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiYm9yZGVyTGVmdCIsImJvcmRlckxlZnRXaWR0aCIsImJvcmRlclJpZ2h0IiwiYm9yZGVyUmlnaHRXaWR0aCIsInRleHRhcmVhV2lkdGgiLCJvZmZzZXRXaWR0aCIsIm1pbiIsIndyYXBDaGVja1dpZHRoIiwiY2FudmFzTWVhc3VyZUluZGljYXRlc011bHRpbGluZSIsImNhbnZhcyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNhbnZhc0NvbnRleHQiLCJnZXRDb250ZXh0IiwidGV4dCIsImxpbmVzIiwidGV4dGFyZWFTdHlsZXMiLCJmb250IiwiY29uY2F0IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJsaW5lIiwibWVhc3VyZVRleHQiLCJ3aWR0aCIsImhhc011bHRpcGxlVmlzdWFsTGluZXMiLCJuZXh0TXVsdGlsaW5lIiwidmlzdWFsTGluZXNBdFdyYXBXaWR0aCIsInZpc3VhbExpbmVzQXRDdXJyZW50V2lkdGgiLCJzZWdtZW50IiwibGluZXNGb3JIZWlnaHQiLCJuZXdIZWlnaHQiLCJzbmFwcGVkU2luZ2xlTGluZU91dGVySGVpZ2h0Iiwicm91bmQiLCJzbmFwcGVkSGVpZ2h0IiwicHJldiIsIl9pbnB1dFJlZiRjdXJyZW50IiwiZm9jdXMiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpZCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiaGFuZGxlQ2hhbmdlIiwiaGFzVHJpbSIsInRhcmdldCIsIngiLCJoYW5kbGVCbHVyIiwiX2lucHV0UmVmJGN1cnJlbnQkdmFsIiwiX2lucHV0UmVmJGN1cnJlbnQyIiwidiIsImhhbmRsZUtleURvd24iLCJrZXkiLCJzaGlmdEtleSIsInByZXZlbnREZWZhdWx0IiwicmVmIiwib25DaGFuZ2UiLCJvbktleURvd24iLCIkdG9vbGJhckxheW91dFZhcmlhbnQiLCJvbkJsdXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9NQUlBSW5wdXQvTUFJQUlucHV0RWRpdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29udGludWUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXZvaWQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG5pbXBvcnQgeyBDaGFuZ2VFdmVudCwgS2V5Ym9hcmRFdmVudCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IERpc3BhdGNoLCBSZWZPYmplY3QsIFNldFN0YXRlQWN0aW9uIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFN0eWxlZE1BSUFJbnB1dCB9IGZyb20gJy4vc3R5bGVzJ1xuXG4vKipcbiAqIEzDrW5lYXMgdmlzdWFsZXMgY29uIHdyYXAgZGUgcGFsYWJyYXMgYWwgYW5jaG8gZGFkbyAoYXByb3guIGVsIG5hdmVnYWRvciBlbiBMVFIpLlxuICovXG5mdW5jdGlvbiBjb3VudFZpc3VhbExpbmVzV3JhcHBlZChyYXc6IHN0cmluZywgY29udGVudFdpZHRoUHg6IG51bWJlciwgbWVhc3VyZVRleHRXaWR0aDogKHM6IHN0cmluZykgPT4gbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKGNvbnRlbnRXaWR0aFB4IDw9IDEpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGNvbnN0IHBhcmFncmFwaHMgPSByYXcuc3BsaXQoJ1xcbicpXG4gIGxldCB0b3RhbCA9IDBcbiAgZm9yIChjb25zdCBwYXJhZ3JhcGggb2YgcGFyYWdyYXBocykge1xuICAgIGlmIChwYXJhZ3JhcGgubGVuZ3RoID09PSAwKSB7XG4gICAgICB0b3RhbCArPSAxXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCB3b3JkcyA9IHBhcmFncmFwaC5zcGxpdCgvXFxzKy8pLmZpbHRlcih3ID0+IHcubGVuZ3RoID4gMClcbiAgICBsZXQgbGluZXNJblBhcmFncmFwaCA9IDFcbiAgICBsZXQgY3VycmVudExpbmVXaWR0aCA9IDBcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCB3b3JkID0gd29yZHNbaV1cbiAgICAgIGNvbnN0IHdvcmRXaWR0aCA9IG1lYXN1cmVUZXh0V2lkdGgod29yZClcbiAgICAgIGNvbnN0IHNwYWNlV2lkdGggPSBpID4gMCA/IG1lYXN1cmVUZXh0V2lkdGgoJyAnKSA6IDBcblxuICAgICAgaWYgKHdvcmRXaWR0aCA+IGNvbnRlbnRXaWR0aFB4KSB7XG4gICAgICAgIGlmIChjdXJyZW50TGluZVdpZHRoID4gMCkge1xuICAgICAgICAgIGxpbmVzSW5QYXJhZ3JhcGggKz0gMVxuICAgICAgICAgIGN1cnJlbnRMaW5lV2lkdGggPSAwXG4gICAgICAgIH1cbiAgICAgICAgbGluZXNJblBhcmFncmFwaCArPSBNYXRoLmNlaWwod29yZFdpZHRoIC8gY29udGVudFdpZHRoUHgpIC0gMVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjYW5kaWRhdGVXaWR0aCA9IGN1cnJlbnRMaW5lV2lkdGggPT09IDAgPyB3b3JkV2lkdGggOiBjdXJyZW50TGluZVdpZHRoICsgc3BhY2VXaWR0aCArIHdvcmRXaWR0aFxuICAgICAgaWYgKGNhbmRpZGF0ZVdpZHRoID4gY29udGVudFdpZHRoUHggJiYgY3VycmVudExpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgbGluZXNJblBhcmFncmFwaCArPSAxXG4gICAgICAgIGN1cnJlbnRMaW5lV2lkdGggPSB3b3JkV2lkdGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRMaW5lV2lkdGggPSBjYW5kaWRhdGVXaWR0aFxuICAgICAgfVxuICAgIH1cbiAgICB0b3RhbCArPSBsaW5lc0luUGFyYWdyYXBoXG4gIH1cbiAgcmV0dXJuIE1hdGgubWF4KDEsIHRvdGFsKVxufVxuXG5leHBvcnQgdHlwZSBNQUlBSW5wdXRFZGl0b3JQcm9wcyA9IHtcbiAgaW5wdXRSZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbD5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIGFsaWduQnV0dG9ucz86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcbiAgc2V0SXNUZXh0TXVsdGlsaW5lOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxib29sZWFuPj5cbiAgY2hhdElkPzogc3RyaW5nXG4gIG5ld0NoYXRLZXk/OiBudW1iZXJcbiAgLyoqIEluY3JlbWVudGFyIGRlc2RlIGVsIHBhZHJlIHRyYXMgZW52aWFyIC8gY2FtYmlhciBzZXNpw7NuIHBhcmEgc2luY3Jvbml6YXIgbWVkaWNpw7NuIHNpbiBlc3RhZG8gZGVsIHRleHRvIGVuIGVsIHBhZHJlLiAqL1xuICBjbGVhclNlcTogbnVtYmVyXG4gIHNlbmREaXNhYmxlZDogYm9vbGVhblxuICBvblR5cGluZ1ByZXNlbmNlQ2hhbmdlOiAoaGFzVHJpbW1lZFRleHQ6IGJvb2xlYW4pID0+IHZvaWRcbiAgb25FbnRlclNlbmQ6ICgpID0+IHZvaWRcbiAgb25DaGFuZ2VQcm9wPzogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3QgTUFJQUlucHV0RWRpdG9yID0gKHtcbiAgaW5wdXRSZWYsXG4gIGRpc2FibGVkLFxuICBwbGFjZWhvbGRlcixcbiAgYWxpZ25CdXR0b25zLFxuICBzZXRJc1RleHRNdWx0aWxpbmUsXG4gIGNoYXRJZCxcbiAgbmV3Q2hhdEtleSxcbiAgY2xlYXJTZXEsXG4gIHNlbmREaXNhYmxlZCxcbiAgb25UeXBpbmdQcmVzZW5jZUNoYW5nZSxcbiAgb25FbnRlclNlbmQsXG4gIG9uQ2hhbmdlUHJvcCxcbn06IE1BSUFJbnB1dEVkaXRvclByb3BzKSA9PiB7XG4gIGNvbnN0IHRleHRhcmVhTWluQ29udGVudFdpZHRoU2VlblJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBwcmVzZW5jZVByZXZSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIC8qKiBTb2xvIHBhcmEgcmUtYWdlbmRhciBtZWRpY2nDs24gZGUgYWx0byBzaW4gZ3VhcmRhciBlbCBzdHJpbmcgZW4gZWwgcGFkcmUgKGFpc2xhIHJlLXJlbmRlcnMgZGVsIHRvb2xiYXIpLiAqL1xuICBjb25zdCBbcmVzaXplRXBvY2gsIHNldFJlc2l6ZUVwb2NoXSA9IHVzZVN0YXRlKDApXG5cbiAgY29uc3QgaGFuZGxlUmVzaXplID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHRleHRhcmVhID0gaW5wdXRSZWYuY3VycmVudFxuICAgIGlmICghdGV4dGFyZWEpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8qKiBDb2luY2lkZSBjb24gU3R5bGVkTUFJQUlucHV0OiBsaW5lLWhlaWdodCAyMHB4IHNvYnJlIGZ1ZW50ZSAxNHB4ICh+dW5hIGzDrW5lYSBkZSB0ZXh0byB2aXNpYmxlKS4gKi9cbiAgICBjb25zdCBtaW5IZWlnaHQgPSAyMFxuICAgIGNvbnN0IG1heEhlaWdodCA9IDE3MFxuXG4gICAgY29uc3QgcHJldmlvdXNNaW5IZWlnaHQgPSB0ZXh0YXJlYS5zdHlsZS5taW5IZWlnaHRcbiAgICBjb25zdCBwcmV2aW91c01heEhlaWdodCA9IHRleHRhcmVhLnN0eWxlLm1heEhlaWdodFxuXG4gICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nXG4gICAgdGV4dGFyZWEuc3R5bGUubWluSGVpZ2h0ID0gJzBweCdcbiAgICB0ZXh0YXJlYS5zdHlsZS5tYXhIZWlnaHQgPSAnbm9uZSdcblxuICAgIHZvaWQgdGV4dGFyZWEub2Zmc2V0SGVpZ2h0XG5cbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSB0ZXh0YXJlYS5zY3JvbGxIZWlnaHRcblxuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0YXJlYSlcbiAgICBjb25zdCBsaW5lSGVpZ2h0ID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmxpbmVIZWlnaHQpIHx8IDIwXG4gICAgY29uc3QgcGFkZGluZ1RvcCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nVG9wKSB8fCAwXG4gICAgY29uc3QgcGFkZGluZ0JvdHRvbSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nQm90dG9tKSB8fCAwXG4gICAgY29uc3QgYm9yZGVyVG9wID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmJvcmRlclRvcFdpZHRoKSB8fCAwXG4gICAgY29uc3QgYm9yZGVyQm90dG9tID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKSB8fCAwXG5cbiAgICBjb25zdCBzaW5nbGVMaW5lSGVpZ2h0ID0gbGluZUhlaWdodCArIHBhZGRpbmdUb3AgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyVG9wICsgYm9yZGVyQm90dG9tXG5cbiAgICBjb25zdCBpc0VtcHR5ID0gdGV4dGFyZWEudmFsdWUudHJpbSgpID09PSAnJ1xuXG4gICAgY29uc3QgcGFkZGluZ0xlZnQgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUucGFkZGluZ0xlZnQpIHx8IDBcbiAgICBjb25zdCBwYWRkaW5nUmlnaHQgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUucGFkZGluZ1JpZ2h0KSB8fCAwXG4gICAgY29uc3QgYm9yZGVyTGVmdCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5ib3JkZXJMZWZ0V2lkdGgpIHx8IDBcbiAgICBjb25zdCBib3JkZXJSaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5ib3JkZXJSaWdodFdpZHRoKSB8fCAwXG4gICAgY29uc3QgdGV4dGFyZWFXaWR0aCA9IHRleHRhcmVhLm9mZnNldFdpZHRoIC0gcGFkZGluZ0xlZnQgLSBwYWRkaW5nUmlnaHQgLSBib3JkZXJMZWZ0IC0gYm9yZGVyUmlnaHRcblxuICAgIGlmICghaXNFbXB0eSkge1xuICAgICAgdGV4dGFyZWFNaW5Db250ZW50V2lkdGhTZWVuUmVmLmN1cnJlbnQgPVxuICAgICAgICB0ZXh0YXJlYU1pbkNvbnRlbnRXaWR0aFNlZW5SZWYuY3VycmVudCA9PT0gbnVsbFxuICAgICAgICAgID8gdGV4dGFyZWFXaWR0aFxuICAgICAgICAgIDogTWF0aC5taW4odGV4dGFyZWFNaW5Db250ZW50V2lkdGhTZWVuUmVmLmN1cnJlbnQsIHRleHRhcmVhV2lkdGgpXG4gICAgfVxuXG4gICAgY29uc3Qgd3JhcENoZWNrV2lkdGggPSB0ZXh0YXJlYU1pbkNvbnRlbnRXaWR0aFNlZW5SZWYuY3VycmVudCA/PyB0ZXh0YXJlYVdpZHRoXG5cbiAgICBsZXQgY2FudmFzTWVhc3VyZUluZGljYXRlc011bHRpbGluZSA9IGZhbHNlXG5cbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxuICAgIGNvbnN0IGNhbnZhc0NvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxuICAgIGNvbnN0IHRleHQgPSB0ZXh0YXJlYS52YWx1ZSB8fCAnJ1xuICAgIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJylcblxuICAgIGlmICghY2FudmFzQ29udGV4dCkge1xuICAgICAgY2FudmFzTWVhc3VyZUluZGljYXRlc011bHRpbGluZSA9IHNjcm9sbEhlaWdodCA+IHNpbmdsZUxpbmVIZWlnaHQgKiAyLjA1XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRleHRhcmVhU3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGV4dGFyZWEpXG4gICAgICBjYW52YXNDb250ZXh0LmZvbnQgPSBgJHt0ZXh0YXJlYVN0eWxlcy5mb250V2VpZ2h0fSAke3RleHRhcmVhU3R5bGVzLmZvbnRTaXplfSAke3RleHRhcmVhU3R5bGVzLmZvbnRGYW1pbHl9YFxuICAgICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY2FudmFzTWVhc3VyZUluZGljYXRlc011bHRpbGluZSA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG4gICAgICAgICAgaWYgKGNhbnZhc0NvbnRleHQubWVhc3VyZVRleHQobGluZSkud2lkdGggPiB3cmFwQ2hlY2tXaWR0aCkge1xuICAgICAgICAgICAgY2FudmFzTWVhc3VyZUluZGljYXRlc011bHRpbGluZSA9IHRydWVcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFzTXVsdGlwbGVWaXN1YWxMaW5lcyA9IGNhbnZhc01lYXN1cmVJbmRpY2F0ZXNNdWx0aWxpbmVcblxuICAgIGNvbnN0IG5leHRNdWx0aWxpbmUgPSAhaXNFbXB0eSAmJiBoYXNNdWx0aXBsZVZpc3VhbExpbmVzXG5cbiAgICAvKiogTMOtbmVhcyBzZWfDum4gYW5jaG8gZXN0cmVjaG8gKGhpc3RvcnkgbWluKSDigJQgdG9vbGJhciBjb21wYWN0byB5IGRldGVjY2nDs24gbXVsdGlsaW5lICovXG4gICAgbGV0IHZpc3VhbExpbmVzQXRXcmFwV2lkdGggPSAxXG4gICAgLyoqIEzDrW5lYXMgYWwgYW5jaG8gYWN0dWFsIGRlbCB0ZXh0YXJlYSDigJQgZW4gc3RhY2tlZCBzdWVsZSBzZXIgbWF5b3IgcXVlIHdyYXBDaGVja1dpZHRoICovXG4gICAgbGV0IHZpc3VhbExpbmVzQXRDdXJyZW50V2lkdGggPSAxXG4gICAgaWYgKCFpc0VtcHR5ICYmIGNhbnZhc0NvbnRleHQpIHtcbiAgICAgIHZpc3VhbExpbmVzQXRXcmFwV2lkdGggPSBjb3VudFZpc3VhbExpbmVzV3JhcHBlZChcbiAgICAgICAgdGV4dCxcbiAgICAgICAgd3JhcENoZWNrV2lkdGgsXG4gICAgICAgIHNlZ21lbnQgPT4gY2FudmFzQ29udGV4dC5tZWFzdXJlVGV4dChzZWdtZW50KS53aWR0aFxuICAgICAgKVxuICAgICAgdmlzdWFsTGluZXNBdEN1cnJlbnRXaWR0aCA9IGNvdW50VmlzdWFsTGluZXNXcmFwcGVkKFxuICAgICAgICB0ZXh0LFxuICAgICAgICB0ZXh0YXJlYVdpZHRoLFxuICAgICAgICBzZWdtZW50ID0+IGNhbnZhc0NvbnRleHQubWVhc3VyZVRleHQoc2VnbWVudCkud2lkdGhcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKCFpc0VtcHR5ICYmICFjYW52YXNDb250ZXh0KSB7XG4gICAgICB2aXN1YWxMaW5lc0F0V3JhcFdpZHRoID0gc2Nyb2xsSGVpZ2h0ID4gc2luZ2xlTGluZUhlaWdodCAqIDEuODUgPyBNYXRoLmNlaWwoc2Nyb2xsSGVpZ2h0IC8gc2luZ2xlTGluZUhlaWdodCkgOiAxXG4gICAgICB2aXN1YWxMaW5lc0F0Q3VycmVudFdpZHRoID0gdmlzdWFsTGluZXNBdFdyYXBXaWR0aFxuICAgIH1cblxuICAgIGNvbnN0IGxpbmVzRm9ySGVpZ2h0ID0gIWlzRW1wdHkgJiYgY2FudmFzQ29udGV4dCA/IHZpc3VhbExpbmVzQXRDdXJyZW50V2lkdGggOiB2aXN1YWxMaW5lc0F0V3JhcFdpZHRoXG5cbiAgICBsZXQgbmV3SGVpZ2h0OiBudW1iZXJcbiAgICAvKiogVW5hIGzDrW5lYSBhbCBhbmNobyBhY3R1YWw6IGFsdHVyYSBmaWphZGEgcG9yIHRpcG9ncmFmw61hICgrIHBhZGRpbmcvYm9yZGUpLCBubyBzY3JvbGxIZWlnaHQg4oCUIGV2aXRhIH4zOXB4IGFsIHBhc2FyIGEgc3RhY2tlZCBjdWFuZG8gZWwgY2FudmFzIHlhIGN1ZW50YSAxIGzDrW5lYSBhIGFuY2hvIGFtcGxpbyBwZXJvIHNjcm9sbEhlaWdodCBhw7puIHZpZW5lIGRlIGzDrW5lYXMgdmllamFzL3dyYXAgYW50ZXJpb3IuICovXG4gICAgY29uc3Qgc25hcHBlZFNpbmdsZUxpbmVPdXRlckhlaWdodCA9IE1hdGgucm91bmQoc2luZ2xlTGluZUhlaWdodClcbiAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgbmV3SGVpZ2h0ID0gc25hcHBlZFNpbmdsZUxpbmVPdXRlckhlaWdodFxuICAgIH0gZWxzZSBpZiAoIWhhc011bHRpcGxlVmlzdWFsTGluZXMpIHtcbiAgICAgIG5ld0hlaWdodCA9IHNuYXBwZWRTaW5nbGVMaW5lT3V0ZXJIZWlnaHRcbiAgICB9IGVsc2UgaWYgKGxpbmVzRm9ySGVpZ2h0IDw9IDEpIHtcbiAgICAgIG5ld0hlaWdodCA9IE1hdGgubWluKE1hdGgubWF4KHNuYXBwZWRTaW5nbGVMaW5lT3V0ZXJIZWlnaHQsIG1pbkhlaWdodCksIG1heEhlaWdodClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc25hcHBlZEhlaWdodCA9IHBhZGRpbmdUb3AgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyVG9wICsgYm9yZGVyQm90dG9tICsgbGluZXNGb3JIZWlnaHQgKiBsaW5lSGVpZ2h0XG4gICAgICBuZXdIZWlnaHQgPSBNYXRoLm1pbihNYXRoLm1heChNYXRoLm1pbihzY3JvbGxIZWlnaHQsIHNuYXBwZWRIZWlnaHQpLCBtaW5IZWlnaHQpLCBtYXhIZWlnaHQpXG4gICAgfVxuXG4gICAgc2V0SXNUZXh0TXVsdGlsaW5lKHByZXYgPT4gKHByZXYgPT09IG5leHRNdWx0aWxpbmUgPyBwcmV2IDogbmV4dE11bHRpbGluZSkpXG5cbiAgICB0ZXh0YXJlYS5zdHlsZS5taW5IZWlnaHQgPSBwcmV2aW91c01pbkhlaWdodCB8fCBgJHttaW5IZWlnaHR9cHhgXG4gICAgdGV4dGFyZWEuc3R5bGUubWF4SGVpZ2h0ID0gcHJldmlvdXNNYXhIZWlnaHQgfHwgJzE3MHB4J1xuXG4gICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gYCR7bmV3SGVpZ2h0fXB4YFxuICB9LCBbaW5wdXRSZWYsIHNldElzVGV4dE11bHRpbGluZV0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBoYW5kbGVSZXNpemUoKVxuICB9LCBbaGFuZGxlUmVzaXplXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFJlZi5jdXJyZW50Py52YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICB0ZXh0YXJlYU1pbkNvbnRlbnRXaWR0aFNlZW5SZWYuY3VycmVudCA9IG51bGxcbiAgICB9XG4gIH0sIFtyZXNpemVFcG9jaF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB0ZXh0YXJlYU1pbkNvbnRlbnRXaWR0aFNlZW5SZWYuY3VycmVudCA9IG51bGxcbiAgfSwgW2NoYXRJZCwgbmV3Q2hhdEtleV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRSZWYuY3VycmVudCAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIGlucHV0UmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaGFuZGxlUmVzaXplKClcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbZGlzYWJsZWQsIGhhbmRsZVJlc2l6ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2xlYXJTZXEgPT09IDApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0ZXh0YXJlYU1pbkNvbnRlbnRXaWR0aFNlZW5SZWYuY3VycmVudCA9IG51bGxcbiAgICBwcmVzZW5jZVByZXZSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGhhbmRsZVJlc2l6ZSgpXG4gICAgfSlcbiAgfSwgW2NsZWFyU2VxLCBoYW5kbGVSZXNpemVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgaGFuZGxlUmVzaXplKClcbiAgICB9KVxuICAgIHJldHVybiAoKSA9PiBjYW5jZWxBbmltYXRpb25GcmFtZShpZClcbiAgfSwgW3Jlc2l6ZUVwb2NoLCBoYW5kbGVSZXNpemVdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBDaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGhhc1RyaW0gPSBlLnRhcmdldC52YWx1ZS50cmltKCkubGVuZ3RoID4gMFxuICAgIGlmIChoYXNUcmltICE9PSBwcmVzZW5jZVByZXZSZWYuY3VycmVudCkge1xuICAgICAgcHJlc2VuY2VQcmV2UmVmLmN1cnJlbnQgPSBoYXNUcmltXG4gICAgICBvblR5cGluZ1ByZXNlbmNlQ2hhbmdlKGhhc1RyaW0pXG4gICAgfVxuICAgIHNldFJlc2l6ZUVwb2NoKHggPT4geCArIDEpXG4gICAgb25DaGFuZ2VQcm9wPy4oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmx1ciA9ICgpID0+IHtcbiAgICBjb25zdCB2ID0gaW5wdXRSZWYuY3VycmVudD8udmFsdWUgPz8gJydcbiAgICBjb25zdCBoYXNUcmltID0gdi50cmltKCkubGVuZ3RoID4gMFxuICAgIGlmIChoYXNUcmltICE9PSBwcmVzZW5jZVByZXZSZWYuY3VycmVudCkge1xuICAgICAgcHJlc2VuY2VQcmV2UmVmLmN1cnJlbnQgPSBoYXNUcmltXG4gICAgICBvblR5cGluZ1ByZXNlbmNlQ2hhbmdlKGhhc1RyaW0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChlOiBLZXlib2FyZEV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmICFlLnNoaWZ0S2V5KSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGlmICghc2VuZERpc2FibGVkICYmICFkaXNhYmxlZCkge1xuICAgICAgICBvbkVudGVyU2VuZCgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkTUFJQUlucHV0XG4gICAgICByZWY9e2lucHV0UmVmIGFzIFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50Pn1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICBhbGlnbkJ1dHRvbnM9e2FsaWduQnV0dG9uc31cbiAgICAgICR0b29sYmFyTGF5b3V0VmFyaWFudD1cInN0YWNrZWRSb3dzXCJcbiAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQXFDQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsZUFBZSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBRzdHLFNBQVNDLGVBQWUsUUFBUSxVQUFVOztBQUUxQztBQUNBO0FBQ0E7QUFGQSxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFHQSxTQUFTQyx1QkFBdUJBLENBQUNDLEdBQVcsRUFBRUMsY0FBc0IsRUFBRUMsZ0JBQXVDLEVBQVU7RUFDckgsSUFBSUQsY0FBYyxJQUFJLENBQUMsRUFBRTtJQUN2QixPQUFPLENBQUM7RUFDVjtFQUNBLElBQU1FLFVBQVUsR0FBR0gsR0FBRyxDQUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDO0VBQ2xDLElBQUlDLEtBQUssR0FBRyxDQUFDO0VBQUEsSUFBQUMsU0FBQSxHQUFBQywwQkFBQSxDQUNXSixV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
|
|
193
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiZGV0ZWN0TXVsdGlsaW5lRnJvbUNhbnZhcyIsInJlc29sdmVTaW5nbGVMaW5lT3V0ZXJIZWlnaHQiLCJyZXNvbHZlVGV4dGFyZWFDb250ZW50SGVpZ2h0IiwicmVzb2x2ZVZpc3VhbExpbmVDb3VudHMiLCJTdHlsZWRNQUlBSW5wdXQiLCJqc3giLCJfanN4IiwiTUFJQUlucHV0RWRpdG9yIiwiX3JlZiIsImlucHV0UmVmIiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsImFsaWduQnV0dG9ucyIsInNldElzVGV4dE11bHRpbGluZSIsImNoYXRJZCIsIm5ld0NoYXRLZXkiLCJjbGVhclNlcSIsInNlbmREaXNhYmxlZCIsIm9uVHlwaW5nUHJlc2VuY2VDaGFuZ2UiLCJvbkVudGVyU2VuZCIsIm9uQ2hhbmdlUHJvcCIsInRleHRhcmVhTWluQ29udGVudFdpZHRoU2VlblJlZiIsInByZXNlbmNlUHJldlJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInJlc2l6ZUVwb2NoIiwic2V0UmVzaXplRXBvY2giLCJoYW5kbGVSZXNpemUiLCJfdGV4dGFyZWFNaW5Db250ZW50V2kiLCJ0ZXh0YXJlYSIsImN1cnJlbnQiLCJtaW5IZWlnaHQiLCJtYXhIZWlnaHQiLCJwcmV2aW91c01pbkhlaWdodCIsInN0eWxlIiwicHJldmlvdXNNYXhIZWlnaHQiLCJoZWlnaHQiLCJvZmZzZXRIZWlnaHQiLCJzY3JvbGxIZWlnaHQiLCJjb21wdXRlZFN0eWxlIiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImxpbmVIZWlnaHQiLCJwYXJzZUZsb2F0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJib3JkZXJUb3AiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlckJvdHRvbSIsImJvcmRlckJvdHRvbVdpZHRoIiwiYm94TWV0cmljcyIsInNpbmdsZUxpbmVIZWlnaHQiLCJpc0VtcHR5IiwidmFsdWUiLCJ0cmltIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJib3JkZXJMZWZ0IiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHQiLCJib3JkZXJSaWdodFdpZHRoIiwidGV4dGFyZWFXaWR0aCIsIm9mZnNldFdpZHRoIiwiTWF0aCIsIm1pbiIsIndyYXBDaGVja1dpZHRoIiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2FudmFzQ29udGV4dCIsImdldENvbnRleHQiLCJ0ZXh0IiwidGV4dGFyZWFTdHlsZXMiLCJmb250IiwiY29uY2F0IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsIm1lYXN1cmVTZWdtZW50V2lkdGgiLCJzZWdtZW50IiwibWVhc3VyZVRleHQiLCJ3aWR0aCIsImNhbnZhc01lYXN1cmVJbmRpY2F0ZXNNdWx0aWxpbmUiLCJoYXNNdWx0aXBsZVZpc3VhbExpbmVzIiwibmV4dE11bHRpbGluZSIsIl9yZXNvbHZlVmlzdWFsTGluZUNvdSIsImxpbmVzRm9ySGVpZ2h0IiwibmV3SGVpZ2h0Iiwic2luZ2xlTGluZU91dGVySGVpZ2h0IiwicHJldiIsIl9pbnB1dFJlZiRjdXJyZW50IiwiZm9jdXMiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpZCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiaGFuZGxlQ2hhbmdlIiwiZSIsImhhc1RyaW0iLCJ0YXJnZXQiLCJsZW5ndGgiLCJ4IiwiaGFuZGxlQmx1ciIsIl9pbnB1dFJlZiRjdXJyZW50JHZhbCIsIl9pbnB1dFJlZiRjdXJyZW50MiIsInYiLCJoYW5kbGVLZXlEb3duIiwia2V5Iiwic2hpZnRLZXkiLCJwcmV2ZW50RGVmYXVsdCIsInJlZiIsIm9uQ2hhbmdlIiwib25LZXlEb3duIiwiJHRvb2xiYXJMYXlvdXRWYXJpYW50Iiwib25CbHVyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dEVkaXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12b2lkICovXG4vKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZyAqL1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIEtleWJvYXJkRXZlbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgUmVmT2JqZWN0LCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQge1xuICBkZXRlY3RNdWx0aWxpbmVGcm9tQ2FudmFzLFxuICByZXNvbHZlU2luZ2xlTGluZU91dGVySGVpZ2h0LFxuICByZXNvbHZlVGV4dGFyZWFDb250ZW50SGVpZ2h0LFxuICByZXNvbHZlVmlzdWFsTGluZUNvdW50cyxcbn0gZnJvbSAnLi9NQUlBSW5wdXRFZGl0b3IuaGVscGVycydcbmltcG9ydCB7IFN0eWxlZE1BSUFJbnB1dCB9IGZyb20gJy4vc3R5bGVzJ1xuXG5leHBvcnQgdHlwZSBNQUlBSW5wdXRFZGl0b3JQcm9wcyA9IHtcbiAgaW5wdXRSZWY6IFJlZk9iamVjdDxIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbD5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIGFsaWduQnV0dG9ucz86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcbiAgc2V0SXNUZXh0TXVsdGlsaW5lOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxib29sZWFuPj5cbiAgY2hhdElkPzogc3RyaW5nXG4gIG5ld0NoYXRLZXk/OiBudW1iZXJcbiAgLyoqIEluY3JlbWVudGFyIGRlc2RlIGVsIHBhZHJlIHRyYXMgZW52aWFyIC8gY2FtYmlhciBzZXNpw7NuIHBhcmEgc2luY3Jvbml6YXIgbWVkaWNpw7NuIHNpbiBlc3RhZG8gZGVsIHRleHRvIGVuIGVsIHBhZHJlLiAqL1xuICBjbGVhclNlcTogbnVtYmVyXG4gIHNlbmREaXNhYmxlZDogYm9vbGVhblxuICBvblR5cGluZ1ByZXNlbmNlQ2hhbmdlOiAoaGFzVHJpbW1lZFRleHQ6IGJvb2xlYW4pID0+IHZvaWRcbiAgb25FbnRlclNlbmQ6ICgpID0+IHZvaWRcbiAgb25DaGFuZ2VQcm9wPzogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3QgTUFJQUlucHV0RWRpdG9yID0gKHtcbiAgaW5wdXRSZWYsXG4gIGRpc2FibGVkLFxuICBwbGFjZWhvbGRlcixcbiAgYWxpZ25CdXR0b25zLFxuICBzZXRJc1RleHRNdWx0aWxpbmUsXG4gIGNoYXRJZCxcbiAgbmV3Q2hhdEtleSxcbiAgY2xlYXJTZXEsXG4gIHNlbmREaXNhYmxlZCxcbiAgb25UeXBpbmdQcmVzZW5jZUNoYW5nZSxcbiAgb25FbnRlclNlbmQsXG4gIG9uQ2hhbmdlUHJvcCxcbn06IE1BSUFJbnB1dEVkaXRvclByb3BzKSA9PiB7XG4gIGNvbnN0IHRleHRhcmVhTWluQ29udGVudFdpZHRoU2VlblJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBwcmVzZW5jZVByZXZSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIC8qKiBTb2xvIHBhcmEgcmUtYWdlbmRhciBtZWRpY2nDs24gZGUgYWx0byBzaW4gZ3VhcmRhciBlbCBzdHJpbmcgZW4gZWwgcGFkcmUgKGFpc2xhIHJlLXJlbmRlcnMgZGVsIHRvb2xiYXIpLiAqL1xuICBjb25zdCBbcmVzaXplRXBvY2gsIHNldFJlc2l6ZUVwb2NoXSA9IHVzZVN0YXRlKDApXG5cbiAgY29uc3QgaGFuZGxlUmVzaXplID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHRleHRhcmVhID0gaW5wdXRSZWYuY3VycmVudFxuICAgIGlmICghdGV4dGFyZWEpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8qKiBDb2luY2lkZSBjb24gU3R5bGVkTUFJQUlucHV0OiBsaW5lLWhlaWdodCAyMHB4IHNvYnJlIGZ1ZW50ZSAxNHB4ICh+dW5hIGzDrW5lYSBkZSB0ZXh0byB2aXNpYmxlKS4gKi9cbiAgICBjb25zdCBtaW5IZWlnaHQgPSAyMFxuICAgIGNvbnN0IG1heEhlaWdodCA9IDE3MFxuXG4gICAgY29uc3QgcHJldmlvdXNNaW5IZWlnaHQgPSB0ZXh0YXJlYS5zdHlsZS5taW5IZWlnaHRcbiAgICBjb25zdCBwcmV2aW91c01heEhlaWdodCA9IHRleHRhcmVhLnN0eWxlLm1heEhlaWdodFxuXG4gICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nXG4gICAgdGV4dGFyZWEuc3R5bGUubWluSGVpZ2h0ID0gJzBweCdcbiAgICB0ZXh0YXJlYS5zdHlsZS5tYXhIZWlnaHQgPSAnbm9uZSdcblxuICAgIHZvaWQgdGV4dGFyZWEub2Zmc2V0SGVpZ2h0XG5cbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSB0ZXh0YXJlYS5zY3JvbGxIZWlnaHRcblxuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0YXJlYSlcbiAgICBjb25zdCBsaW5lSGVpZ2h0ID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmxpbmVIZWlnaHQpIHx8IDIwXG4gICAgY29uc3QgcGFkZGluZ1RvcCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nVG9wKSB8fCAwXG4gICAgY29uc3QgcGFkZGluZ0JvdHRvbSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nQm90dG9tKSB8fCAwXG4gICAgY29uc3QgYm9yZGVyVG9wID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmJvcmRlclRvcFdpZHRoKSB8fCAwXG4gICAgY29uc3QgYm9yZGVyQm90dG9tID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKSB8fCAwXG5cbiAgICBjb25zdCBib3hNZXRyaWNzID0geyBsaW5lSGVpZ2h0LCBwYWRkaW5nVG9wLCBwYWRkaW5nQm90dG9tLCBib3JkZXJUb3AsIGJvcmRlckJvdHRvbSB9XG4gICAgY29uc3Qgc2luZ2xlTGluZUhlaWdodCA9IHJlc29sdmVTaW5nbGVMaW5lT3V0ZXJIZWlnaHQoYm94TWV0cmljcylcblxuICAgIGNvbnN0IGlzRW1wdHkgPSB0ZXh0YXJlYS52YWx1ZS50cmltKCkgPT09ICcnXG5cbiAgICBjb25zdCBwYWRkaW5nTGVmdCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nTGVmdCkgfHwgMFxuICAgIGNvbnN0IHBhZGRpbmdSaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nUmlnaHQpIHx8IDBcbiAgICBjb25zdCBib3JkZXJMZWZ0ID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmJvcmRlckxlZnRXaWR0aCkgfHwgMFxuICAgIGNvbnN0IGJvcmRlclJpZ2h0ID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLmJvcmRlclJpZ2h0V2lkdGgpIHx8IDBcbiAgICBjb25zdCB0ZXh0YXJlYVdpZHRoID0gdGV4dGFyZWEub2Zmc2V0V2lkdGggLSBwYWRkaW5nTGVmdCAtIHBhZGRpbmdSaWdodCAtIGJvcmRlckxlZnQgLSBib3JkZXJSaWdodFxuXG4gICAgaWYgKCFpc0VtcHR5KSB7XG4gICAgICB0ZXh0YXJlYU1pbkNvbnRlbnRXaWR0aFNlZW5SZWYuY3VycmVudCA9XG4gICAgICAgIHRleHRhcmVhTWluQ29udGVudFdpZHRoU2VlblJlZi5jdXJyZW50ID09PSBudWxsXG4gICAgICAgICAgPyB0ZXh0YXJlYVdpZHRoXG4gICAgICAgICAgOiBNYXRoLm1pbih0ZXh0YXJlYU1pbkNvbnRlbnRXaWR0aFNlZW5SZWYuY3VycmVudCwgdGV4dGFyZWFXaWR0aClcbiAgICB9XG5cbiAgICBjb25zdCB3cmFwQ2hlY2tXaWR0aCA9IHRleHRhcmVhTWluQ29udGVudFdpZHRoU2VlblJlZi5jdXJyZW50ID8/IHRleHRhcmVhV2lkdGhcblxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpXG4gICAgY29uc3QgY2FudmFzQ29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXG4gICAgY29uc3QgdGV4dCA9IHRleHRhcmVhLnZhbHVlIHx8ICcnXG5cbiAgICBpZiAoY2FudmFzQ29udGV4dCkge1xuICAgICAgY29uc3QgdGV4dGFyZWFTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0YXJlYSlcbiAgICAgIGNhbnZhc0NvbnRleHQuZm9udCA9IGAke3RleHRhcmVhU3R5bGVzLmZvbnRXZWlnaHR9ICR7dGV4dGFyZWFTdHlsZXMuZm9udFNpemV9ICR7dGV4dGFyZWFTdHlsZXMuZm9udEZhbWlseX1gXG4gICAgfVxuXG4gICAgY29uc3QgbWVhc3VyZVNlZ21lbnRXaWR0aCA9IChzZWdtZW50OiBzdHJpbmcpID0+IChjYW52YXNDb250ZXh0ID8gY2FudmFzQ29udGV4dC5tZWFzdXJlVGV4dChzZWdtZW50KS53aWR0aCA6IDApXG5cbiAgICBjb25zdCBjYW52YXNNZWFzdXJlSW5kaWNhdGVzTXVsdGlsaW5lID0gY2FudmFzQ29udGV4dFxuICAgICAgPyBkZXRlY3RNdWx0aWxpbmVGcm9tQ2FudmFzKHRleHQsIHdyYXBDaGVja1dpZHRoLCBtZWFzdXJlU2VnbWVudFdpZHRoLCBzY3JvbGxIZWlnaHQsIHNpbmdsZUxpbmVIZWlnaHQpXG4gICAgICA6IHNjcm9sbEhlaWdodCA+IHNpbmdsZUxpbmVIZWlnaHQgKiAyLjA1XG5cbiAgICBjb25zdCBoYXNNdWx0aXBsZVZpc3VhbExpbmVzID0gY2FudmFzTWVhc3VyZUluZGljYXRlc011bHRpbGluZVxuXG4gICAgY29uc3QgbmV4dE11bHRpbGluZSA9ICFpc0VtcHR5ICYmIGhhc011bHRpcGxlVmlzdWFsTGluZXNcblxuICAgIGNvbnN0IHsgbGluZXNGb3JIZWlnaHQgfSA9IHJlc29sdmVWaXN1YWxMaW5lQ291bnRzKHtcbiAgICAgIGlzRW1wdHksXG4gICAgICBjYW52YXNDb250ZXh0LFxuICAgICAgdGV4dCxcbiAgICAgIHdyYXBDaGVja1dpZHRoLFxuICAgICAgdGV4dGFyZWFXaWR0aCxcbiAgICAgIG1lYXN1cmVTZWdtZW50V2lkdGgsXG4gICAgICBzY3JvbGxIZWlnaHQsXG4gICAgICBzaW5nbGVMaW5lSGVpZ2h0LFxuICAgIH0pXG5cbiAgICBjb25zdCBuZXdIZWlnaHQgPSByZXNvbHZlVGV4dGFyZWFDb250ZW50SGVpZ2h0KHtcbiAgICAgIGlzRW1wdHksXG4gICAgICBoYXNNdWx0aXBsZVZpc3VhbExpbmVzLFxuICAgICAgbGluZXNGb3JIZWlnaHQsXG4gICAgICBzY3JvbGxIZWlnaHQsXG4gICAgICBtaW5IZWlnaHQsXG4gICAgICBtYXhIZWlnaHQsXG4gICAgICBzaW5nbGVMaW5lT3V0ZXJIZWlnaHQ6IHNpbmdsZUxpbmVIZWlnaHQsXG4gICAgICBsaW5lSGVpZ2h0LFxuICAgICAgcGFkZGluZ1RvcCxcbiAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICBib3JkZXJUb3AsXG4gICAgICBib3JkZXJCb3R0b20sXG4gICAgfSlcblxuICAgIHNldElzVGV4dE11bHRpbGluZShwcmV2ID0+IChwcmV2ID09PSBuZXh0TXVsdGlsaW5lID8gcHJldiA6IG5leHRNdWx0aWxpbmUpKVxuXG4gICAgdGV4dGFyZWEuc3R5bGUubWluSGVpZ2h0ID0gcHJldmlvdXNNaW5IZWlnaHQgfHwgYCR7bWluSGVpZ2h0fXB4YFxuICAgIHRleHRhcmVhLnN0eWxlLm1heEhlaWdodCA9IHByZXZpb3VzTWF4SGVpZ2h0IHx8ICcxNzBweCdcblxuICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9IGAke25ld0hlaWdodH1weGBcbiAgfSwgW2lucHV0UmVmLCBzZXRJc1RleHRNdWx0aWxpbmVdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaGFuZGxlUmVzaXplKClcbiAgfSwgW2hhbmRsZVJlc2l6ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRSZWYuY3VycmVudD8udmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgdGV4dGFyZWFNaW5Db250ZW50V2lkdGhTZWVuUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICB9LCBbcmVzaXplRXBvY2hdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdGV4dGFyZWFNaW5Db250ZW50V2lkdGhTZWVuUmVmLmN1cnJlbnQgPSBudWxsXG4gIH0sIFtjaGF0SWQsIG5ld0NoYXRLZXldKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0UmVmLmN1cnJlbnQgJiYgIWRpc2FibGVkKSB7XG4gICAgICBpbnB1dFJlZi5jdXJyZW50LmZvY3VzKClcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGhhbmRsZVJlc2l6ZSgpXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW2Rpc2FibGVkLCBoYW5kbGVSZXNpemVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNsZWFyU2VxID09PSAwKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGV4dGFyZWFNaW5Db250ZW50V2lkdGhTZWVuUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcHJlc2VuY2VQcmV2UmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBoYW5kbGVSZXNpemUoKVxuICAgIH0pXG4gIH0sIFtjbGVhclNlcSwgaGFuZGxlUmVzaXplXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGhhbmRsZVJlc2l6ZSgpXG4gICAgfSlcbiAgICByZXR1cm4gKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpXG4gIH0sIFtyZXNpemVFcG9jaCwgaGFuZGxlUmVzaXplXSlcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBoYXNUcmltID0gZS50YXJnZXQudmFsdWUudHJpbSgpLmxlbmd0aCA+IDBcbiAgICBpZiAoaGFzVHJpbSAhPT0gcHJlc2VuY2VQcmV2UmVmLmN1cnJlbnQpIHtcbiAgICAgIHByZXNlbmNlUHJldlJlZi5jdXJyZW50ID0gaGFzVHJpbVxuICAgICAgb25UeXBpbmdQcmVzZW5jZUNoYW5nZShoYXNUcmltKVxuICAgIH1cbiAgICBzZXRSZXNpemVFcG9jaCh4ID0+IHggKyAxKVxuICAgIG9uQ2hhbmdlUHJvcD8uKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUJsdXIgPSAoKSA9PiB7XG4gICAgY29uc3QgdiA9IGlucHV0UmVmLmN1cnJlbnQ/LnZhbHVlID8/ICcnXG4gICAgY29uc3QgaGFzVHJpbSA9IHYudHJpbSgpLmxlbmd0aCA+IDBcbiAgICBpZiAoaGFzVHJpbSAhPT0gcHJlc2VuY2VQcmV2UmVmLmN1cnJlbnQpIHtcbiAgICAgIHByZXNlbmNlUHJldlJlZi5jdXJyZW50ID0gaGFzVHJpbVxuICAgICAgb25UeXBpbmdQcmVzZW5jZUNoYW5nZShoYXNUcmltKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiAhZS5zaGlmdEtleSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBpZiAoIXNlbmREaXNhYmxlZCAmJiAhZGlzYWJsZWQpIHtcbiAgICAgICAgb25FbnRlclNlbmQoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZE1BSUFJbnB1dFxuICAgICAgcmVmPXtpbnB1dFJlZiBhcyBSZWZPYmplY3Q8SFRNTFRleHRBcmVhRWxlbWVudD59XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgYWxpZ25CdXR0b25zPXthbGlnbkJ1dHRvbnN9XG4gICAgICAkdG9vbGJhckxheW91dFZhcmlhbnQ9XCJzdGFja2VkUm93c1wiXG4gICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgLz5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFxQ0EsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUc3RyxTQUNFQyx5QkFBeUIsRUFDekJDLDRCQUE0QixFQUM1QkMsNEJBQTRCLEVBQzVCQyx1QkFBdUIsUUFDbEIsMkJBQTJCO0FBQ2xDLFNBQVNDLGVBQWUsUUFBUSxVQUFVO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBa0IxQyxPQUFPLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQUMsSUFBQSxFQWFBO0VBQUEsSUFaMUJDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO0lBQ1JDLFFBQVEsR0FBQUYsSUFBQSxDQUFSRSxRQUFRO0lBQ1JDLFdBQVcsR0FBQUgsSUFBQSxDQUFYRyxXQUFXO0lBQ1hDLFlBQVksR0FBQUosSUFBQSxDQUFaSSxZQUFZO0lBQ1pDLGtCQUFrQixHQUFBTCxJQUFBLENBQWxCSyxrQkFBa0I7SUFDbEJDLE1BQU0sR0FBQU4sSUFBQSxDQUFOTSxNQUFNO0lBQ05DLFVBQVUsR0FBQVAsSUFBQSxDQUFWTyxVQUFVO0lBQ1ZDLFFBQVEsR0FBQVIsSUFBQSxDQUFSUSxRQUFRO0lBQ1JDLFlBQVksR0FBQVQsSUFBQSxDQUFaUyxZQUFZO0lBQ1pDLHNCQUFzQixHQUFB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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export var throttle = function throttle(fn, delay) {
|
|
2
|
+
var last = 0;
|
|
3
|
+
return function () {
|
|
4
|
+
var now = Date.now();
|
|
5
|
+
if (now - last >= delay) {
|
|
6
|
+
last = now;
|
|
7
|
+
fn.apply(void 0, arguments);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export var computeOnboardingPortalPosition = function computeOnboardingPortalPosition(rect, viewportHeight) {
|
|
12
|
+
return {
|
|
13
|
+
left: rect.left,
|
|
14
|
+
bottom: viewportHeight - rect.bottom
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0aHJvdHRsZSIsImZuIiwiZGVsYXkiLCJsYXN0Iiwibm93IiwiRGF0ZSIsImFwcGx5IiwiYXJndW1lbnRzIiwiY29tcHV0ZU9uYm9hcmRpbmdQb3J0YWxQb3NpdGlvbiIsInJlY3QiLCJ2aWV3cG9ydEhlaWdodCIsImxlZnQiLCJib3R0b20iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9PbmJvYXJkaW5nTW9kYWxCdXR0b24vT25ib2FyZGluZ01vZGFsQnV0dG9uLmhlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRocm90dGxlID0gPFQgZXh0ZW5kcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkPihmbjogVCwgZGVsYXk6IG51bWJlcik6IFQgPT4ge1xuICBsZXQgbGFzdCA9IDBcbiAgcmV0dXJuICgoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICBpZiAobm93IC0gbGFzdCA+PSBkZWxheSkge1xuICAgICAgbGFzdCA9IG5vd1xuICAgICAgZm4oLi4uYXJncylcbiAgICB9XG4gIH0pIGFzIFRcbn1cblxuZXhwb3J0IGNvbnN0IGNvbXB1dGVPbmJvYXJkaW5nUG9ydGFsUG9zaXRpb24gPSAoXG4gIHJlY3Q6IFBpY2s8RE9NUmVjdCwgJ2xlZnQnIHwgJ2JvdHRvbSc+LFxuICB2aWV3cG9ydEhlaWdodDogbnVtYmVyXG4pOiB7IGxlZnQ6IG51bWJlcjsgYm90dG9tOiBudW1iZXIgfSA9PiAoe1xuICBsZWZ0OiByZWN0LmxlZnQsXG4gIGJvdHRvbTogdmlld3BvcnRIZWlnaHQgLSByZWN0LmJvdHRvbSxcbn0pXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBTUEsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQTRDQyxFQUFLLEVBQUVDLEtBQWEsRUFBUTtFQUMzRixJQUFJQyxJQUFJLEdBQUcsQ0FBQztFQUNaLE9BQVEsWUFBNEI7SUFDbEMsSUFBTUMsR0FBRyxHQUFHQyxJQUFJLENBQUNELEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLElBQUlBLEdBQUcsR0FBR0QsSUFBSSxJQUFJRCxLQUFLLEVBQUU7TUFDdkJDLElBQUksR0FBR0MsR0FBRztNQUNWSCxFQUFFLENBQUFLLEtBQUEsU0FBQUMsU0FBUSxDQUFDO0lBQ2I7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVELE9BQU8sSUFBTUMsK0JBQStCLEdBQUcsU0FBbENBLCtCQUErQkEsQ0FDMUNDLElBQXNDLEVBQ3RDQyxjQUFzQjtFQUFBLE9BQ2dCO0lBQ3RDQyxJQUFJLEVBQUVGLElBQUksQ0FBQ0UsSUFBSTtJQUNmQyxNQUFNLEVBQUVGLGNBQWMsR0FBR0QsSUFBSSxDQUFDRztFQUNoQyxDQUFDO0FBQUEsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -12,18 +12,9 @@ import { SCSWrapperOnboardingModalButton, SCSWrapperOnboardingModalPortal, Style
|
|
|
12
12
|
import { useT } from '../../../hooks/useT';
|
|
13
13
|
import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
|
|
14
14
|
import { MAIA_TASK_PANEL_OVERLAY_ATTR } from '../../../constants/maiaTaskPanelOutsideClick';
|
|
15
|
+
import { computeOnboardingPortalPosition, throttle } from './OnboardingModalButton.helpers';
|
|
15
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
17
|
var PORTAL_POSITION_THROTTLE_MS = 150;
|
|
17
|
-
function throttle(fn, delay) {
|
|
18
|
-
var last = 0;
|
|
19
|
-
return function () {
|
|
20
|
-
var now = Date.now();
|
|
21
|
-
if (now - last >= delay) {
|
|
22
|
-
last = now;
|
|
23
|
-
fn.apply(void 0, arguments);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
18
|
var mockData = {
|
|
28
19
|
0: {
|
|
29
20
|
elementId: 'modal-portal-video-onboarding',
|
|
@@ -121,10 +112,7 @@ export var OnboardingModalButton = function OnboardingModalButton() {
|
|
|
121
112
|
var updatePosition = useCallback(function () {
|
|
122
113
|
if (buttonRef.current) {
|
|
123
114
|
var rect = buttonRef.current.getBoundingClientRect();
|
|
124
|
-
setPortalPosition(
|
|
125
|
-
left: rect.left,
|
|
126
|
-
bottom: window.innerHeight - rect.bottom
|
|
127
|
-
});
|
|
115
|
+
setPortalPosition(computeOnboardingPortalPosition(rect, window.innerHeight));
|
|
128
116
|
}
|
|
129
117
|
}, []);
|
|
130
118
|
useEffect(function () {
|
|
@@ -177,4 +165,4 @@ export var OnboardingModalButton = function OnboardingModalButton() {
|
|
|
177
165
|
}))]
|
|
178
166
|
});
|
|
179
167
|
};
|
|
180
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiUmVhY3RET00iLCJDVUJ1dHRvbiIsIlZpZGVvTGlnaHRib3hQb3J0YWwiLCJUb29sdGlwIiwiT25ib2FyZGluZ01vZGFsIiwiU0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbEJ1dHRvbiIsIlNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxQb3J0YWwiLCJTdHlsZWRIZWxwSWNvbiIsInVzZVQiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiTUFJQV9UQVNLX1BBTkVMX09WRVJMQVlfQVRUUiIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJQT1JUQUxfUE9TSVRJT05fVEhST1RUTEVfTVMiLCJ0aHJvdHRsZSIsImZuIiwiZGVsYXkiLCJsYXN0Iiwibm93IiwiRGF0ZSIsImFwcGx5IiwiYXJndW1lbnRzIiwibW9ja0RhdGEiLCJlbGVtZW50SWQiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwidGh1bWJuYWlsIiwiYWx0IiwidmlkZW9VcmwiLCJjb2xsYXBzZWREZXNjcmlwdGlvbiIsIk9uYm9hcmRpbmdNb2RhbEJ1dHRvbiIsIl91c2VUIiwidCIsIm9uYm9hcmRpbmdQb3J0YWxaSW5kZXgiLCJ0b29sdGlwWkluZGV4IiwiYnV0dG9uUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd01vZGFsT25ib2FyZGluZyIsInNldFNob3dNb2RhbE9uYm9hcmRpbmciLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInBvcnRhbFBvc2l0aW9uIiwic2V0UG9ydGFsUG9zaXRpb24iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dWaWRlbyIsInNldFNob3dWaWRlbyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VsZWN0ZWRWaWRlb0RhdGEiLCJzZXRTZWxlY3RlZFZpZGVvRGF0YSIsImhhbmRsZU9uYm9hcmRpbmdBY3Rpb24iLCJhY3Rpb25Qb3NpdGlvbiIsInNldFRpbWVvdXQiLCJoYW5kbGVWaWRlb0FjdGlvbiIsImUiLCJwcmV2Iiwic3RvcFByb3BhZ2F0aW9uIiwiZXZhbENsaWNrIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZUNsaWNrT3V0c2lkZU9uYm9hcmRpbmciLCJldmVudCIsInRhcmdldCIsImNsb3Nlc3QiLCJ1cGRhdGVQb3NpdGlvbiIsImN1cnJlbnQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsImJvdHRvbSIsIndpbmRvdyIsImlubmVySGVpZ2h0IiwidW5kZWZpbmVkIiwidGhyb3R0bGVkVXBkYXRlUG9zaXRpb24iLCJyZWYiLCJjaGlsZHJlbiIsInpJbmRleCIsInZhcmlhbnQiLCJzaXplIiwiaWNvbk9ubHkiLCJvbkNsaWNrIiwiY29sb3IiLCJjcmVhdGVQb3J0YWwiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwiJGxlZnQiLCIkYm90dG9tIiwiJHpJbmRleCIsImhhbmRsZUNsaWNrQWN0aW9uIiwiYm9keSIsIm9uQ2xvc2VWaWRlbyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL09uYm9hcmRpbmdNb2RhbEJ1dHRvbi9PbmJvYXJkaW5nTW9kYWxCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IFZpZGVvTGlnaHRib3hQb3J0YWwgfSBmcm9tICdAcHJvamVjdGNvci9jb3ItY29tbW9ucy9saWIvY29tcG9uZW50cy92aWRlby1vbmJvYXJkaW5nL3ZpZGVvLWxpZ2h0Ym94J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgT25ib2FyZGluZ01vZGFsIH0gZnJvbSAnLi9PbmJvYXJkaW5nTW9kYWwnXG5pbXBvcnQge1xuICBTQ1NXcmFwcGVyT25ib2FyZGluZ01vZGFsQnV0dG9uLFxuICBTQ1NXcmFwcGVyT25ib2FyZGluZ01vZGFsUG9ydGFsLFxuICBTdHlsZWRIZWxwSWNvbixcbn0gZnJvbSAnLi9PbmJvYXJkaW5nTW9kYWxCdXR0b24uc3R5bGVzJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IE1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvbWFpYVRhc2tQYW5lbE91dHNpZGVDbGljaydcblxuY29uc3QgUE9SVEFMX1BPU0lUSU9OX1RIUk9UVExFX01TID0gMTUwXG5cbmZ1bmN0aW9uIHRocm90dGxlPFQgZXh0ZW5kcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkPihmbjogVCwgZGVsYXk6IG51bWJlcik6IFQge1xuICBsZXQgbGFzdCA9IDBcbiAgcmV0dXJuICgoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICBpZiAobm93IC0gbGFzdCA+PSBkZWxheSkge1xuICAgICAgbGFzdCA9IG5vd1xuICAgICAgZm4oLi4uYXJncylcbiAgICB9XG4gIH0pIGFzIFRcbn1cblxuY29uc3QgbW9ja0RhdGEgPSB7XG4gIDA6IHtcbiAgICBlbGVtZW50SWQ6ICdtb2RhbC1wb3J0YWwtdmlkZW8tb25ib2FyZGluZycsXG4gICAgdGl0bGU6ICdNYWlhJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdEZXNjdWJyZSBjw7NtbyBmdW5jaW9uYSBNYWlhLCBudWVzdHJvIGFzaXN0ZW50ZSBkZSBpbnRlbGlnZW5jaWEgYXJ0aWZpY2lhbCBxdWUgdGUgYXl1ZGEgYSBnZXN0aW9uYXIgcHJveWVjdG9zIGRlIG1hbmVyYSBtw6FzIGVmaWNpZW50ZS4nLFxuICAgIHRodW1ibmFpbDogJ2h0dHBzOi8vaS55dGltZy5jb20vdmkvOS1NcnRZdUlvaUUvbWF4cmVzZGVmYXVsdC5qcGcnLFxuICAgIGFsdDogJ3RodW1ibmFpbCBNYWlhJyxcbiAgICB2aWRlb1VybDogJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1FFTHVfcFBTSVRnP3NpPTk2c0JQeTA5OThWc0dOQ2YnLFxuICAgIGNvbGxhcHNlZERlc2NyaXB0aW9uOiAnVmVyIHZpZGVvIGRlIE1haWEnLFxuICB9LFxuICAxOiB7XG4gICAgZWxlbWVudElkOiAnbW9kYWwtcG9ydGFsLXZpZGVvLW9uYm9hcmRpbmcnLFxuICAgIHRpdGxlOiAnQWdlbnRlcyBDdXN0b20nLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0FwcmVuZGUgYSBjcmVhciB5IGNvbmZpZ3VyYXIgYWdlbnRlcyBwZXJzb25hbGl6YWRvcyBwYXJhIGF1dG9tYXRpemFyIHRhcmVhcyBlc3BlY8OtZmljYXMgZW4gdHUgZmx1am8gZGUgdHJhYmFqby4nLFxuICAgIHRodW1ibmFpbDogJ2h0dHBzOi8vaS55dGltZy5jb20vdmkvOS1NcnRZdUlvaUUvbWF4cmVzZGVmYXVsdC5qcGcnLFxuICAgIGFsdDogJ3RodW1ibmFpbCBBZ2VudGVzIEN1c3RvbScsXG4gICAgdmlkZW9Vcmw6ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9nMkJFSE9XTVpiND9zaT1LQjZyYkpGVmhVYS1lRUlTJyxcbiAgICBjb2xsYXBzZWREZXNjcmlwdGlvbjogJ1ZlciB2aWRlbyBkZSBBZ2VudGVzIEN1c3RvbScsXG4gIH0sXG4gIDI6IHtcbiAgICBlbGVtZW50SWQ6ICdtb2RhbC1wb3J0YWwtdmlkZW8tb25ib2FyZGluZycsXG4gICAgdGl0bGU6ICfCv0PDs21vIGNyZWFyIHVuIGFnZW50ZT8nLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0d1w61hIHBhc28gYSBwYXNvIHBhcmEgY3JlYXIgdHUgcHJpbWVyIGFnZW50ZSBwZXJzb25hbGl6YWRvIHkgY29uZmlndXJhcmxvIHNlZ8O6biB0dXMgbmVjZXNpZGFkZXMgZXNwZWPDrWZpY2FzLicsXG4gICAgdGh1bWJuYWlsOiAnaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85LU1ydFl1SW9pRS9tYXhyZXNkZWZhdWx0LmpwZycsXG4gICAgYWx0OiAndGh1bWJuYWlsIENyZWFyIEFnZW50ZScsXG4gICAgdmlkZW9Vcmw6ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kTlpwQjN2VEM4UT9zaT1GQno4VW84ZXlBeURvTmVpJyxcbiAgICBjb2xsYXBzZWREZXNjcmlwdGlvbjogJ1ZlciB2aWRlbyBkZSBDcmVhciBBZ2VudGUnLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgT25ib2FyZGluZ01vZGFsQnV0dG9uID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBvbmJvYXJkaW5nUG9ydGFsWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMjAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICdvdmVybGF5JylcbiAgY29uc3QgYnV0dG9uUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbc2hvd01vZGFsT25ib2FyZGluZywgc2V0U2hvd01vZGFsT25ib2FyZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3BvcnRhbFBvc2l0aW9uLCBzZXRQb3J0YWxQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IGxlZnQ6IG51bWJlcjsgYm90dG9tOiBudW1iZXIgfSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzaG93VmlkZW8sIHNldFNob3dWaWRlb10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlbGVjdGVkVmlkZW9EYXRhLCBzZXRTZWxlY3RlZFZpZGVvRGF0YV0gPSB1c2VTdGF0ZShudWxsKVxuXG4gIGNvbnN0IGhhbmRsZU9uYm9hcmRpbmdBY3Rpb24gPSAoYWN0aW9uUG9zaXRpb246IG51bWJlcikgPT4ge1xuICAgIHNldFNob3dNb2RhbE9uYm9hcmRpbmcoZmFsc2UpXG4gICAgc2V0U2VsZWN0ZWRWaWRlb0RhdGEobW9ja0RhdGFbYWN0aW9uUG9zaXRpb25dKVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0U2hvd1ZpZGVvKHRydWUpXG4gICAgfSwgMTAwKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVmlkZW9BY3Rpb24gPSBlID0+IHtcbiAgICBzZXRTaG93VmlkZW8ocHJldiA9PiAhcHJldilcbiAgICBpZiAoc2hvd1ZpZGVvKSB7XG4gICAgICBzZXRTZWxlY3RlZFZpZGVvRGF0YShudWxsKVxuICAgIH1cbiAgICBpZiAoZSAmJiBlLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXZhbENsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKHNob3dWaWRlbykge1xuICAgICAgICBzZXRTaG93VmlkZW8oZmFsc2UpXG4gICAgICAgIHNldFNlbGVjdGVkVmlkZW9EYXRhKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZhbENsaWNrKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGV2YWxDbGljaylcbiAgICB9XG4gIH0sIFtzaG93VmlkZW9dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlT25ib2FyZGluZyA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHNob3dNb2RhbE9uYm9hcmRpbmcgJiYgIShldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnW2RhdGEtb25ib2FyZGluZy1tb2RhbF0nKSkge1xuICAgICAgICBzZXRTaG93TW9kYWxPbmJvYXJkaW5nKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzaG93TW9kYWxPbmJvYXJkaW5nKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGVPbmJvYXJkaW5nKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGVPbmJvYXJkaW5nKVxuICAgIH1cbiAgfSwgW3Nob3dNb2RhbE9uYm9hcmRpbmddKVxuXG4gIGNvbnN0IHVwZGF0ZVBvc2l0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChidXR0b25SZWYuY3VycmVudCkge1xuICAgICAgY29uc3QgcmVjdCA9IGJ1dHRvblJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBzZXRQb3J0YWxQb3NpdGlvbih7XG4gICAgICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICAgICAgYm90dG9tOiB3aW5kb3cuaW5uZXJIZWlnaHQgLSByZWN0LmJvdHRvbSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd01vZGFsT25ib2FyZGluZyB8fCAhYnV0dG9uUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNldFBvcnRhbFBvc2l0aW9uKG51bGwpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHRocm90dGxlZFVwZGF0ZVBvc2l0aW9uID0gdGhyb3R0bGUodXBkYXRlUG9zaXRpb24sIFBPUlRBTF9QT1NJVElPTl9USFJPVFRMRV9NUylcbiAgICB1cGRhdGVQb3NpdGlvbigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRocm90dGxlZFVwZGF0ZVBvc2l0aW9uLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aHJvdHRsZWRVcGRhdGVQb3NpdGlvbilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRocm90dGxlZFVwZGF0ZVBvc2l0aW9uLCB0cnVlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRocm90dGxlZFVwZGF0ZVBvc2l0aW9uKVxuICAgIH1cbiAgfSwgW3Nob3dNb2RhbE9uYm9hcmRpbmcsIHVwZGF0ZVBvc2l0aW9uXSlcblxuICByZXR1cm4gKFxuICAgIDxTQ1NXcmFwcGVyT25ib2FyZGluZ01vZGFsQnV0dG9uIHJlZj17YnV0dG9uUmVmfSBkYXRhLW9uYm9hcmRpbmctbW9kYWw+XG4gICAgICA8VG9vbHRpcCB0aXRsZT17dCgnb25ib2FyZGluZy50b29sdGlwJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgaWNvbk9ubHlcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgc2V0U2hvd01vZGFsT25ib2FyZGluZyhwcmV2ID0+ICFwcmV2KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkSGVscEljb24gY29sb3I9XCIjNjY2NjY2XCIgLz5cbiAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvVG9vbHRpcD5cbiAgICAgIHtzaG93TW9kYWxPbmJvYXJkaW5nICYmXG4gICAgICAgIHBvcnRhbFBvc2l0aW9uICYmXG4gICAgICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxTQ1NXcmFwcGVyT25ib2FyZGluZ01vZGFsUG9ydGFsXG4gICAgICAgICAgICBkYXRhLW9uYm9hcmRpbmctbW9kYWxcbiAgICAgICAgICAgIHsuLi57IFtNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSXTogJycgfX1cbiAgICAgICAgICAgICRsZWZ0PXtwb3J0YWxQb3NpdGlvbi5sZWZ0fVxuICAgICAgICAgICAgJGJvdHRvbT17cG9ydGFsUG9zaXRpb24uYm90dG9tfVxuICAgICAgICAgICAgJHpJbmRleD17b25ib2FyZGluZ1BvcnRhbFpJbmRleH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T25ib2FyZGluZ01vZGFsIHQ9e3R9IGhhbmRsZUNsaWNrQWN0aW9uPXtoYW5kbGVPbmJvYXJkaW5nQWN0aW9ufSAvPlxuICAgICAgICAgIDwvU0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbFBvcnRhbD4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgICAge3Nob3dWaWRlbyAmJiBzZWxlY3RlZFZpZGVvRGF0YSAmJiAoXG4gICAgICAgIDxWaWRlb0xpZ2h0Ym94UG9ydGFsIHsuLi4oc2VsZWN0ZWRWaWRlb0RhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pfSBvbkNsb3NlVmlkZW89e2hhbmRsZVZpZGVvQWN0aW9ufSAvPlxuICAgICAgKX1cbiAgICA8L1NDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxCdXR0b24+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxN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
|
|
168
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiUmVhY3RET00iLCJDVUJ1dHRvbiIsIlZpZGVvTGlnaHRib3hQb3J0YWwiLCJUb29sdGlwIiwiT25ib2FyZGluZ01vZGFsIiwiU0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbEJ1dHRvbiIsIlNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxQb3J0YWwiLCJTdHlsZWRIZWxwSWNvbiIsInVzZVQiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiTUFJQV9UQVNLX1BBTkVMX09WRVJMQVlfQVRUUiIsImNvbXB1dGVPbmJvYXJkaW5nUG9ydGFsUG9zaXRpb24iLCJ0aHJvdHRsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJQT1JUQUxfUE9TSVRJT05fVEhST1RUTEVfTVMiLCJtb2NrRGF0YSIsImVsZW1lbnRJZCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJ0aHVtYm5haWwiLCJhbHQiLCJ2aWRlb1VybCIsImNvbGxhcHNlZERlc2NyaXB0aW9uIiwiT25ib2FyZGluZ01vZGFsQnV0dG9uIiwiX3VzZVQiLCJ0Iiwib25ib2FyZGluZ1BvcnRhbFpJbmRleCIsInRvb2x0aXBaSW5kZXgiLCJidXR0b25SZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzaG93TW9kYWxPbmJvYXJkaW5nIiwic2V0U2hvd01vZGFsT25ib2FyZGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9ydGFsUG9zaXRpb24iLCJzZXRQb3J0YWxQb3NpdGlvbiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd1ZpZGVvIiwic2V0U2hvd1ZpZGVvIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWxlY3RlZFZpZGVvRGF0YSIsInNldFNlbGVjdGVkVmlkZW9EYXRhIiwiaGFuZGxlT25ib2FyZGluZ0FjdGlvbiIsImFjdGlvblBvc2l0aW9uIiwic2V0VGltZW91dCIsImhhbmRsZVZpZGVvQWN0aW9uIiwiZSIsInByZXYiLCJzdG9wUHJvcGFnYXRpb24iLCJldmFsQ2xpY2siLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2xpY2tPdXRzaWRlT25ib2FyZGluZyIsImV2ZW50IiwidGFyZ2V0IiwiY2xvc2VzdCIsInVwZGF0ZVBvc2l0aW9uIiwiY3VycmVudCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsInVuZGVmaW5lZCIsInRocm90dGxlZFVwZGF0ZVBvc2l0aW9uIiwicmVmIiwiY2hpbGRyZW4iLCJ6SW5kZXgiLCJ2YXJpYW50Iiwic2l6ZSIsImljb25Pbmx5Iiwib25DbGljayIsImNvbG9yIiwiY3JlYXRlUG9ydGFsIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsIiRsZWZ0IiwibGVmdCIsIiRib3R0b20iLCJib3R0b20iLCIkekluZGV4IiwiaGFuZGxlQ2xpY2tBY3Rpb24iLCJib2R5Iiwib25DbG9zZVZpZGVvIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvT25ib2FyZGluZ01vZGFsQnV0dG9uL09uYm9hcmRpbmdNb2RhbEJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgVmlkZW9MaWdodGJveFBvcnRhbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2Nvci1jb21tb25zL2xpYi9jb21wb25lbnRzL3ZpZGVvLW9uYm9hcmRpbmcvdmlkZW8tbGlnaHRib3gnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBPbmJvYXJkaW5nTW9kYWwgfSBmcm9tICcuL09uYm9hcmRpbmdNb2RhbCdcbmltcG9ydCB7XG4gIFNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxCdXR0b24sXG4gIFNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxQb3J0YWwsXG4gIFN0eWxlZEhlbHBJY29uLFxufSBmcm9tICcuL09uYm9hcmRpbmdNb2RhbEJ1dHRvbi5zdHlsZXMnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgTUFJQV9UQVNLX1BBTkVMX09WRVJMQVlfQVRUUiB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9tYWlhVGFza1BhbmVsT3V0c2lkZUNsaWNrJ1xuXG5pbXBvcnQgeyBjb21wdXRlT25ib2FyZGluZ1BvcnRhbFBvc2l0aW9uLCB0aHJvdHRsZSB9IGZyb20gJy4vT25ib2FyZGluZ01vZGFsQnV0dG9uLmhlbHBlcnMnXG5cbmNvbnN0IFBPUlRBTF9QT1NJVElPTl9USFJPVFRMRV9NUyA9IDE1MFxuXG5jb25zdCBtb2NrRGF0YSA9IHtcbiAgMDoge1xuICAgIGVsZW1lbnRJZDogJ21vZGFsLXBvcnRhbC12aWRlby1vbmJvYXJkaW5nJyxcbiAgICB0aXRsZTogJ01haWEnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0Rlc2N1YnJlIGPDs21vIGZ1bmNpb25hIE1haWEsIG51ZXN0cm8gYXNpc3RlbnRlIGRlIGludGVsaWdlbmNpYSBhcnRpZmljaWFsIHF1ZSB0ZSBheXVkYSBhIGdlc3Rpb25hciBwcm95ZWN0b3MgZGUgbWFuZXJhIG3DoXMgZWZpY2llbnRlLicsXG4gICAgdGh1bWJuYWlsOiAnaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85LU1ydFl1SW9pRS9tYXhyZXNkZWZhdWx0LmpwZycsXG4gICAgYWx0OiAndGh1bWJuYWlsIE1haWEnLFxuICAgIHZpZGVvVXJsOiAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvUUVMdV9wUFNJVGc/c2k9OTZzQlB5MDk5OFZzR05DZicsXG4gICAgY29sbGFwc2VkRGVzY3JpcHRpb246ICdWZXIgdmlkZW8gZGUgTWFpYScsXG4gIH0sXG4gIDE6IHtcbiAgICBlbGVtZW50SWQ6ICdtb2RhbC1wb3J0YWwtdmlkZW8tb25ib2FyZGluZycsXG4gICAgdGl0bGU6ICdBZ2VudGVzIEN1c3RvbScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQXByZW5kZSBhIGNyZWFyIHkgY29uZmlndXJhciBhZ2VudGVzIHBlcnNvbmFsaXphZG9zIHBhcmEgYXV0b21hdGl6YXIgdGFyZWFzIGVzcGVjw61maWNhcyBlbiB0dSBmbHVqbyBkZSB0cmFiYWpvLicsXG4gICAgdGh1bWJuYWlsOiAnaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85LU1ydFl1SW9pRS9tYXhyZXNkZWZhdWx0LmpwZycsXG4gICAgYWx0OiAndGh1bWJuYWlsIEFnZW50ZXMgQ3VzdG9tJyxcbiAgICB2aWRlb1VybDogJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2cyQkVIT1dNWmI0P3NpPUtCNnJiSkZWaFVhLWVFSVMnLFxuICAgIGNvbGxhcHNlZERlc2NyaXB0aW9uOiAnVmVyIHZpZGVvIGRlIEFnZW50ZXMgQ3VzdG9tJyxcbiAgfSxcbiAgMjoge1xuICAgIGVsZW1lbnRJZDogJ21vZGFsLXBvcnRhbC12aWRlby1vbmJvYXJkaW5nJyxcbiAgICB0aXRsZTogJ8K/Q8OzbW8gY3JlYXIgdW4gYWdlbnRlPycsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnR3XDrWEgcGFzbyBhIHBhc28gcGFyYSBjcmVhciB0dSBwcmltZXIgYWdlbnRlIHBlcnNvbmFsaXphZG8geSBjb25maWd1cmFybG8gc2Vnw7puIHR1cyBuZWNlc2lkYWRlcyBlc3BlY8OtZmljYXMuJyxcbiAgICB0aHVtYm5haWw6ICdodHRwczovL2kueXRpbWcuY29tL3ZpLzktTXJ0WXVJb2lFL21heHJlc2RlZmF1bHQuanBnJyxcbiAgICBhbHQ6ICd0aHVtYm5haWwgQ3JlYXIgQWdlbnRlJyxcbiAgICB2aWRlb1VybDogJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2ROWnBCM3ZUQzhRP3NpPUZCejhVbzhleUF5RG9OZWknLFxuICAgIGNvbGxhcHNlZERlc2NyaXB0aW9uOiAnVmVyIHZpZGVvIGRlIENyZWFyIEFnZW50ZScsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBPbmJvYXJkaW5nTW9kYWxCdXR0b24gPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IG9uYm9hcmRpbmdQb3J0YWxaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuICBjb25zdCBidXR0b25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzaG93TW9kYWxPbmJvYXJkaW5nLCBzZXRTaG93TW9kYWxPbmJvYXJkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcG9ydGFsUG9zaXRpb24sIHNldFBvcnRhbFBvc2l0aW9uXSA9IHVzZVN0YXRlPHsgbGVmdDogbnVtYmVyOyBib3R0b206IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3Nob3dWaWRlbywgc2V0U2hvd1ZpZGVvXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VsZWN0ZWRWaWRlb0RhdGEsIHNldFNlbGVjdGVkVmlkZW9EYXRhXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgY29uc3QgaGFuZGxlT25ib2FyZGluZ0FjdGlvbiA9IChhY3Rpb25Qb3NpdGlvbjogbnVtYmVyKSA9PiB7XG4gICAgc2V0U2hvd01vZGFsT25ib2FyZGluZyhmYWxzZSlcbiAgICBzZXRTZWxlY3RlZFZpZGVvRGF0YShtb2NrRGF0YVthY3Rpb25Qb3NpdGlvbl0pXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRTaG93VmlkZW8odHJ1ZSlcbiAgICB9LCAxMDApXG4gIH1cblxuICBjb25zdCBoYW5kbGVWaWRlb0FjdGlvbiA9IGUgPT4ge1xuICAgIHNldFNob3dWaWRlbyhwcmV2ID0+ICFwcmV2KVxuICAgIGlmIChzaG93VmlkZW8pIHtcbiAgICAgIHNldFNlbGVjdGVkVmlkZW9EYXRhKG51bGwpXG4gICAgfVxuICAgIGlmIChlICYmIGUuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBldmFsQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoc2hvd1ZpZGVvKSB7XG4gICAgICAgIHNldFNob3dWaWRlbyhmYWxzZSlcbiAgICAgICAgc2V0U2VsZWN0ZWRWaWRlb0RhdGEobnVsbClcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmFsQ2xpY2spXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZhbENsaWNrKVxuICAgIH1cbiAgfSwgW3Nob3dWaWRlb10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGVPbmJvYXJkaW5nID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoc2hvd01vZGFsT25ib2FyZGluZyAmJiAhKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbG9zZXN0KCdbZGF0YS1vbmJvYXJkaW5nLW1vZGFsXScpKSB7XG4gICAgICAgIHNldFNob3dNb2RhbE9uYm9hcmRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNob3dNb2RhbE9uYm9hcmRpbmcpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZU9uYm9hcmRpbmcpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZU9uYm9hcmRpbmcpXG4gICAgfVxuICB9LCBbc2hvd01vZGFsT25ib2FyZGluZ10pXG5cbiAgY29uc3QgdXBkYXRlUG9zaXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGJ1dHRvblJlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCByZWN0ID0gYnV0dG9uUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIHNldFBvcnRhbFBvc2l0aW9uKGNvbXB1dGVPbmJvYXJkaW5nUG9ydGFsUG9zaXRpb24ocmVjdCwgd2luZG93LmlubmVySGVpZ2h0KSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93TW9kYWxPbmJvYXJkaW5nIHx8ICFidXR0b25SZWYuY3VycmVudCkge1xuICAgICAgc2V0UG9ydGFsUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgY29uc3QgdGhyb3R0bGVkVXBkYXRlUG9zaXRpb24gPSB0aHJvdHRsZSh1cGRhdGVQb3NpdGlvbiwgUE9SVEFMX1BPU0lUSU9OX1RIUk9UVExFX01TKVxuICAgIHVwZGF0ZVBvc2l0aW9uKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhyb3R0bGVkVXBkYXRlUG9zaXRpb24sIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRocm90dGxlZFVwZGF0ZVBvc2l0aW9uKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhyb3R0bGVkVXBkYXRlUG9zaXRpb24sIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhyb3R0bGVkVXBkYXRlUG9zaXRpb24pXG4gICAgfVxuICB9LCBbc2hvd01vZGFsT25ib2FyZGluZywgdXBkYXRlUG9zaXRpb25dKVxuXG4gIHJldHVybiAoXG4gICAgPFNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxCdXR0b24gcmVmPXtidXR0b25SZWZ9IGRhdGEtb25ib2FyZGluZy1tb2RhbD5cbiAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdvbmJvYXJkaW5nLnRvb2x0aXAnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBpY29uT25seVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBzZXRTaG93TW9kYWxPbmJvYXJkaW5nKHByZXYgPT4gIXByZXYpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRIZWxwSWNvbiBjb2xvcj1cIiM2NjY2NjZcIiAvPlxuICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Ub29sdGlwPlxuICAgICAge3Nob3dNb2RhbE9uYm9hcmRpbmcgJiZcbiAgICAgICAgcG9ydGFsUG9zaXRpb24gJiZcbiAgICAgICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxQb3J0YWxcbiAgICAgICAgICAgIGRhdGEtb25ib2FyZGluZy1tb2RhbFxuICAgICAgICAgICAgey4uLnsgW01BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFJdOiAnJyB9fVxuICAgICAgICAgICAgJGxlZnQ9e3BvcnRhbFBvc2l0aW9uLmxlZnR9XG4gICAgICAgICAgICAkYm90dG9tPXtwb3J0YWxQb3NpdGlvbi5ib3R0b219XG4gICAgICAgICAgICAkekluZGV4PXtvbmJvYXJkaW5nUG9ydGFsWkluZGV4fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPbmJvYXJkaW5nTW9kYWwgdD17dH0gaGFuZGxlQ2xpY2tBY3Rpb249e2hhbmRsZU9uYm9hcmRpbmdBY3Rpb259IC8+XG4gICAgICAgICAgPC9TQ1NXcmFwcGVyT25ib2FyZGluZ01vZGFsUG9ydGFsPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5XG4gICAgICAgICl9XG4gICAgICB7c2hvd1ZpZGVvICYmIHNlbGVjdGVkVmlkZW9EYXRhICYmIChcbiAgICAgICAgPFZpZGVvTGlnaHRib3hQb3J0YWwgey4uLihzZWxlY3RlZFZpZGVvRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPil9IG9uQ2xvc2VWaWRlbz17aGFuZGxlVmlkZW9BY3Rpb259IC8+XG4gICAgICApfVxuICAgIDwvU0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbEJ1dHRvbj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEUsT0FBT0MsUUFBUSxNQUFNLFdBQVc7QUFDaEMsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxtQkFBbUIsUUFBUSx3RUFBd0U7QUFDNUcsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxlQUFlLFFBQVEsbUJBQW1CO0FBQ25ELFNBQ0VDLCtCQUErQixFQUMvQkMsK0JBQStCLEVBQy9CQyxjQUFjLFFB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
|