@projectcor/maia-components 2.11.39 → 2.11.40-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.
Files changed (75) hide show
  1. package/lib/App.js +22 -11
  2. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +36 -0
  3. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +181 -0
  4. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +39 -0
  5. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +322 -0
  6. package/lib/components/atoms/ContextMentionChip/index.js +4 -0
  7. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +191 -0
  8. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +6 -0
  9. package/lib/components/atoms/ContextMentionEditor/index.js +2 -0
  10. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +283 -0
  11. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +114 -0
  12. package/lib/components/atoms/ContextMentionItem/index.js +2 -0
  13. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +142 -0
  14. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +75 -0
  15. package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
  16. package/lib/components/atoms/MAIAInput/MAIAInput.js +238 -321
  17. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +269 -0
  18. package/lib/components/atoms/MAIAInput/styles.js +75 -46
  19. package/lib/components/atoms/icons/NotionIcon.js +36 -0
  20. package/lib/components/atoms/icons/SubtaskIcon.js +36 -0
  21. package/lib/components/atoms/icons/index.js +2 -1
  22. package/lib/components/index.js +2 -1
  23. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +8 -4
  24. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +31 -3
  25. package/lib/components/molecules/ChatAIMessages/newStyles.js +5 -2
  26. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +8 -6
  27. package/lib/components/molecules/ChatFooter/ChatFooter.js +5 -4
  28. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +68 -0
  29. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
  30. package/lib/components/molecules/ContextMentionInput/index.js +2 -0
  31. package/lib/components/molecules/Sidebar/Sidebar.js +9 -5
  32. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +6 -2
  33. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +5 -2
  34. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +6 -3
  35. package/lib/constants/taskLinkIcon.js +6 -0
  36. package/lib/context/cor-user.js +1 -1
  37. package/lib/dev/DevContextMentionInput.js +65 -0
  38. package/lib/dev/Providers.js +11 -6
  39. package/lib/hooks/useCaretPosition.js +35 -0
  40. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  41. package/lib/hooks/useChatManager/useChatManager.js +21 -11
  42. package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
  43. package/lib/hooks/useChatMessages/useChatMessages.js +30 -14
  44. package/lib/hooks/useContextMentions.js +270 -0
  45. package/lib/hooks/useEntitySearch.js +535 -0
  46. package/lib/hooks/useEvent.js +6 -1
  47. package/lib/hooks/useMentionAllowedTypes.js +103 -0
  48. package/lib/hooks/useMentionPopover.js +319 -0
  49. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
  50. package/lib/hooks/useTaskPanel.js +3 -10
  51. package/lib/hooks/useTextOverflowEllipsisTooltip.js +35 -0
  52. package/lib/lang/br/index.js +24 -1
  53. package/lib/lang/en/index.js +24 -1
  54. package/lib/lang/es/index.js +24 -1
  55. package/lib/lang/fr/index.js +23 -1
  56. package/lib/services/maia/Chats/getChatMessages.js +29 -4
  57. package/lib/services/maia/Orchestrator/orchestrator.js +8 -5
  58. package/lib/services/maia/RecentProjects/getRecentProjects.js +12 -4
  59. package/lib/services/maia/RecentTasks/getRecentTasks.js +43 -0
  60. package/lib/services/maia/RecentTasks/index.js +6 -0
  61. package/lib/services/maia/RecentUsers/getRecentUsers.js +59 -0
  62. package/lib/services/maia/RecentUsers/index.js +6 -0
  63. package/lib/services/query/entitySearchQuery.js +16 -0
  64. package/lib/services/query/usersDirectoryQuery.js +19 -0
  65. package/lib/services/utils/mapChatMessages.js +12 -5
  66. package/lib/types/Chat.js +1 -1
  67. package/lib/types/agent.js +1 -1
  68. package/lib/types/contextMention.js +37 -0
  69. package/lib/utils/contextMentionIcons.js +115 -0
  70. package/lib/utils/contextMentionLabel.js +4 -0
  71. package/lib/utils/contextMentionTypeLabel.js +17 -0
  72. package/lib/utils/maiaStreamdownRehypePlugins.js +27 -0
  73. package/lib/utils/openTaskInCorPanel.js +18 -0
  74. package/lib/utils/renderContextMentions.js +293 -0
  75. package/package.json +1 -1
@@ -0,0 +1,322 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import { createElement } from 'react';
5
+ import { flushSync } from 'react-dom';
6
+ import { createRoot } from 'react-dom/client';
7
+ import { CONTEXT_MENTION_CHIP_CLASS } from '../../../types/contextMention';
8
+ import { getContextMentionIcon } from '../../../utils/contextMentionIcons';
9
+ import { normalizeContextMentionLabel } from '../../../utils/contextMentionLabel';
10
+ import { openTaskInCorPanel } from '../../../utils/openTaskInCorPanel';
11
+ import { applyMentionChipStyles, MENTION_CHIP_COLORS } from './ContextMentionChip.styles';
12
+ var EDITABLE_NON_TASK_LABEL_STYLE = {
13
+ display: 'inline',
14
+ lineHeight: '20px',
15
+ alignSelf: 'baseline',
16
+ minWidth: 0,
17
+ maxWidth: '100%',
18
+ whiteSpace: 'normal',
19
+ overflowWrap: 'break-word',
20
+ wordBreak: 'break-word'
21
+ };
22
+
23
+ /** Texto de tarea: sin borde inferior; el aspecto de enlace lo da el CSS global (::before + color). */
24
+ var EDITABLE_TASK_LABEL_STYLE = {
25
+ display: 'inline',
26
+ fontSize: '14px',
27
+ lineHeight: '20px',
28
+ fontWeight: '600',
29
+ color: 'inherit',
30
+ minWidth: 0,
31
+ maxWidth: '100%',
32
+ whiteSpace: 'normal',
33
+ overflowWrap: 'break-word',
34
+ wordBreak: 'break-word'
35
+ };
36
+ var createEditableMentionLabelEl = function createEditableMentionLabelEl(isTask, mentionLabel) {
37
+ if (!isTask) {
38
+ return /*#__PURE__*/createElement('span', {
39
+ style: EDITABLE_NON_TASK_LABEL_STYLE
40
+ }, mentionLabel);
41
+ }
42
+ return /*#__PURE__*/createElement('span', {
43
+ style: EDITABLE_TASK_LABEL_STYLE
44
+ }, mentionLabel);
45
+ };
46
+ var EditableMentionChip = function EditableMentionChip(_ref) {
47
+ var mention = _ref.mention;
48
+ var mentionLabel = normalizeContextMentionLabel(mention.label);
49
+ var iconColor = MENTION_CHIP_COLORS[mention.type].fg;
50
+ var isTask = mention.type === 'task';
51
+ var iconSize = isTask ? 16 : 14;
52
+ var labelEl = createEditableMentionLabelEl(isTask, mentionLabel);
53
+ var outerStyle = {
54
+ position: 'relative',
55
+ display: 'inline',
56
+ lineHeight: '20px',
57
+ boxSizing: 'border-box',
58
+ verticalAlign: 'baseline',
59
+ maxWidth: '100%'
60
+ };
61
+ if (isTask) {
62
+ return /*#__PURE__*/createElement('span', {
63
+ style: outerStyle
64
+ }, labelEl);
65
+ }
66
+ return /*#__PURE__*/createElement('span', {
67
+ style: outerStyle
68
+ }, /*#__PURE__*/createElement('span', {
69
+ style: {
70
+ display: 'inline-block',
71
+ verticalAlign: 'middle',
72
+ marginRight: '2px',
73
+ lineHeight: '1',
74
+ width: '14px'
75
+ }
76
+ }, getContextMentionIcon(mention.type, iconColor, mention.id, iconSize)), labelEl);
77
+ };
78
+ var initialsFromName = function initialsFromName(name) {
79
+ var _parts$2;
80
+ var trimmed = name.trim();
81
+ if (!trimmed) return '?';
82
+ var parts = trimmed.split(/\s+/).filter(Boolean);
83
+ if (parts.length >= 2) {
84
+ var _parts$0$charAt, _parts$, _parts$charAt, _parts;
85
+ var first = (_parts$0$charAt = (_parts$ = parts[0]) === null || _parts$ === void 0 ? void 0 : _parts$.charAt(0)) !== null && _parts$0$charAt !== void 0 ? _parts$0$charAt : '';
86
+ var last = (_parts$charAt = (_parts = parts[parts.length - 1]) === null || _parts === void 0 ? void 0 : _parts.charAt(0)) !== null && _parts$charAt !== void 0 ? _parts$charAt : '';
87
+ return "".concat(first).concat(last).toUpperCase();
88
+ }
89
+ var single = (_parts$2 = parts[0]) !== null && _parts$2 !== void 0 ? _parts$2 : '';
90
+ return single.length >= 2 ? single.slice(0, 2).toUpperCase() : (single.charAt(0) || '?').toUpperCase();
91
+ };
92
+ var TOOLTIP_FONT = "var(--cor-typography-font-family, 'Work Sans')";
93
+ var TOOLTIP_SECONDARY_COLOR = 'var(--Text-Secondary-Dark, #666)';
94
+ var TOOLTIP_SECONDARY_STYLE = {
95
+ fontFamily: TOOLTIP_FONT,
96
+ fontSize: '14px',
97
+ fontWeight: '400',
98
+ lineHeight: '20px',
99
+ color: TOOLTIP_SECONDARY_COLOR
100
+ };
101
+ var createUserTooltipEl = function createUserTooltipEl(mention) {
102
+ var _metadata$picture, _metadata$positionNam, _metadata$positionNam2, _metadata$email$trim, _metadata$email;
103
+ var label = mention.label,
104
+ metadata = mention.metadata;
105
+ var picture = (_metadata$picture = metadata === null || metadata === void 0 ? void 0 : metadata.picture) !== null && _metadata$picture !== void 0 ? _metadata$picture : null;
106
+ var positionName = (_metadata$positionNam = metadata === null || metadata === void 0 || (_metadata$positionNam2 = metadata.positionName) === null || _metadata$positionNam2 === void 0 ? void 0 : _metadata$positionNam2.trim()) !== null && _metadata$positionNam !== void 0 ? _metadata$positionNam : '';
107
+ var email = (_metadata$email$trim = metadata === null || metadata === void 0 || (_metadata$email = metadata.email) === null || _metadata$email === void 0 ? void 0 : _metadata$email.trim()) !== null && _metadata$email$trim !== void 0 ? _metadata$email$trim : '';
108
+ var tooltip = document.createElement('div');
109
+ Object.assign(tooltip.style, {
110
+ position: 'fixed',
111
+ zIndex: '9999',
112
+ width: '292px',
113
+ padding: '12px 8px',
114
+ display: 'flex',
115
+ flexDirection: 'column',
116
+ alignItems: 'flex-start',
117
+ borderRadius: '4px',
118
+ border: '1px solid var(--Color-Light-Gray, #E0E0E0)',
119
+ background: '#FFF',
120
+ boxShadow: '0 1px 4px 0 rgba(0,0,0,0.08), 0 1px 4px 0 rgba(0,0,0,0.04)',
121
+ boxSizing: 'border-box',
122
+ pointerEvents: 'none'
123
+ });
124
+ var row = document.createElement('div');
125
+ Object.assign(row.style, {
126
+ display: 'flex',
127
+ alignItems: 'center',
128
+ gap: '8px',
129
+ width: '100%'
130
+ });
131
+
132
+ // Avatar circular (foto o iniciales)
133
+ var avatarWrap = document.createElement('div');
134
+ Object.assign(avatarWrap.style, {
135
+ width: '24px',
136
+ height: '24px',
137
+ minWidth: '24px',
138
+ borderRadius: '24px',
139
+ overflow: 'hidden',
140
+ display: 'flex',
141
+ alignItems: 'center',
142
+ justifyContent: 'center',
143
+ background: '#e8f4ff',
144
+ flexShrink: '0'
145
+ });
146
+ var initials = initialsFromName(label);
147
+ var createInitialsFallback = function createInitialsFallback() {
148
+ var fb = document.createElement('span');
149
+ fb.textContent = initials;
150
+ Object.assign(fb.style, {
151
+ fontSize: '10px',
152
+ fontWeight: '600',
153
+ color: '#2d77bd',
154
+ lineHeight: '1',
155
+ fontFamily: TOOLTIP_FONT
156
+ });
157
+ return fb;
158
+ };
159
+ if (picture) {
160
+ var img = document.createElement('img');
161
+ img.src = picture;
162
+ img.alt = '';
163
+ img.draggable = false;
164
+ Object.assign(img.style, {
165
+ width: '24px',
166
+ height: '24px',
167
+ objectFit: 'cover',
168
+ display: 'block',
169
+ borderRadius: '24px'
170
+ });
171
+ img.onerror = function () {
172
+ img.remove();
173
+ avatarWrap.appendChild(createInitialsFallback());
174
+ };
175
+ avatarWrap.appendChild(img);
176
+ } else {
177
+ avatarWrap.appendChild(createInitialsFallback());
178
+ }
179
+
180
+ // Columna de info
181
+ var infoCol = document.createElement('div');
182
+ Object.assign(infoCol.style, {
183
+ display: 'flex',
184
+ flexDirection: 'column',
185
+ justifyContent: 'center',
186
+ alignItems: 'flex-start',
187
+ gap: '2px',
188
+ minWidth: '0',
189
+ flex: '1'
190
+ });
191
+
192
+ // Fila: nombre + separador + posición
193
+ var nameRow = document.createElement('div');
194
+ Object.assign(nameRow.style, {
195
+ display: 'flex',
196
+ alignItems: 'flex-start',
197
+ gap: '4px'
198
+ });
199
+ var nameSpan = document.createElement('span');
200
+ nameSpan.textContent = label;
201
+ Object.assign(nameSpan.style, {
202
+ overflow: 'hidden',
203
+ textOverflow: 'ellipsis',
204
+ whiteSpace: 'nowrap',
205
+ color: 'var(--Text-Primary-Dark, #20201F)',
206
+ fontFamily: TOOLTIP_FONT,
207
+ fontSize: '14px',
208
+ fontWeight: '500',
209
+ lineHeight: '130%'
210
+ });
211
+ nameRow.appendChild(nameSpan);
212
+ if (positionName) {
213
+ var sep = document.createElement('span');
214
+ sep.textContent = '|';
215
+ Object.assign(sep.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
216
+ flexShrink: '0'
217
+ }));
218
+ nameRow.appendChild(sep);
219
+ var posSpan = document.createElement('span');
220
+ posSpan.textContent = positionName;
221
+ Object.assign(posSpan.style, TOOLTIP_SECONDARY_STYLE);
222
+ nameRow.appendChild(posSpan);
223
+ }
224
+ infoCol.appendChild(nameRow);
225
+ if (email) {
226
+ var emailSpan = document.createElement('span');
227
+ emailSpan.textContent = email;
228
+ Object.assign(emailSpan.style, TOOLTIP_SECONDARY_STYLE);
229
+ infoCol.appendChild(emailSpan);
230
+ }
231
+ row.appendChild(avatarWrap);
232
+ row.appendChild(infoCol);
233
+ tooltip.appendChild(row);
234
+ return tooltip;
235
+ };
236
+
237
+ /**
238
+ * Crea un `<span>` atómico listo para insertarse dentro del contenteditable
239
+ * del `ContextMentionEditor`. Se marca con los `data-mention*` necesarios para
240
+ * que `useContextMentions.serialize()` pueda volver a extraer la mention.
241
+ *
242
+ * Comparte los estilos con el componente `ContextMentionChip` via
243
+ * `applyMentionChipStyles`, asegurando una única fuente de verdad visual.
244
+ */
245
+ export var buildChipElement = function buildChipElement(mention) {
246
+ var chip = document.createElement('span');
247
+ chip.setAttribute('contenteditable', 'false');
248
+ chip.setAttribute('data-mention-chip', 'true');
249
+ chip.className = CONTEXT_MENTION_CHIP_CLASS;
250
+ chip.setAttribute('data-mention-type', mention.type);
251
+ chip.setAttribute('data-mention-surface', 'editor');
252
+ applyMentionChipStyles(chip, mention.type);
253
+ var isTask = mention.type === 'task';
254
+ var common = {
255
+ boxSizing: 'border-box',
256
+ verticalAlign: 'baseline',
257
+ overflow: 'visible',
258
+ maxWidth: '100%'
259
+ };
260
+ if (isTask) {
261
+ Object.assign(chip.style, common, {
262
+ lineHeight: '20px',
263
+ height: 'auto',
264
+ minHeight: 'auto',
265
+ maxHeight: 'none'
266
+ });
267
+ } else {
268
+ Object.assign(chip.style, common, {
269
+ lineHeight: '20px',
270
+ height: 'auto',
271
+ minHeight: 'auto',
272
+ maxHeight: 'none'
273
+ });
274
+ }
275
+ var mountNode = document.createElement('span');
276
+ mountNode.style.display = 'inline';
277
+ mountNode.style.maxWidth = '100%';
278
+ mountNode.style.verticalAlign = 'baseline';
279
+ mountNode.style.boxSizing = 'border-box';
280
+ chip.appendChild(mountNode);
281
+ var root = createRoot(mountNode);
282
+ flushSync(function () {
283
+ root.render(/*#__PURE__*/createElement(EditableMentionChip, {
284
+ mention: mention
285
+ }));
286
+ });
287
+ if (mention.type === 'task') {
288
+ chip.style.cursor = 'pointer';
289
+ chip.onclick = function (e) {
290
+ e.preventDefault();
291
+ e.stopPropagation();
292
+ openTaskInCorPanel(mention.id, 'detail');
293
+ };
294
+ } else if (mention.type === 'project') {
295
+ chip.style.cursor = 'pointer';
296
+ chip.onclick = function (e) {
297
+ e.preventDefault();
298
+ e.stopPropagation();
299
+ window.open("/project/".concat(mention.id, "/dashboard"), '_blank');
300
+ };
301
+ } else if (mention.type === 'user') {
302
+ var tooltipEl = null;
303
+ chip.addEventListener('mouseenter', function () {
304
+ if (tooltipEl) return;
305
+ tooltipEl = createUserTooltipEl(mention);
306
+ var rect = chip.getBoundingClientRect();
307
+ var left = Math.max(8, Math.min(window.innerWidth - 300, rect.left));
308
+ tooltipEl.style.top = "".concat(rect.top, "px");
309
+ tooltipEl.style.left = "".concat(left, "px");
310
+ tooltipEl.style.transform = 'translateY(calc(-100% - 4px))';
311
+ document.body.appendChild(tooltipEl);
312
+ });
313
+ chip.addEventListener('mouseleave', function () {
314
+ if (tooltipEl) {
315
+ tooltipEl.remove();
316
+ tooltipEl = null;
317
+ }
318
+ });
319
+ }
320
+ return chip;
321
+ };
322
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVFbGVtZW50IiwiZmx1c2hTeW5jIiwiY3JlYXRlUm9vdCIsIkNPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTIiwiZ2V0Q29udGV4dE1lbnRpb25JY29uIiwibm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbCIsIm9wZW5UYXNrSW5Db3JQYW5lbCIsImFwcGx5TWVudGlvbkNoaXBTdHlsZXMiLCJNRU5USU9OX0NISVBfQ09MT1JTIiwiRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEUiLCJkaXNwbGF5IiwibGluZUhlaWdodCIsImFsaWduU2VsZiIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJ3aGl0ZVNwYWNlIiwib3ZlcmZsb3dXcmFwIiwid29yZEJyZWFrIiwiRURJVEFCTEVfVEFTS19MQUJFTF9TVFlMRSIsImZvbnRTaXplIiwiZm9udFdlaWdodCIsImNvbG9yIiwiY3JlYXRlRWRpdGFibGVNZW50aW9uTGFiZWxFbCIsImlzVGFzayIsIm1lbnRpb25MYWJlbCIsInN0eWxlIiwiRWRpdGFibGVNZW50aW9uQ2hpcCIsIl9yZWYiLCJtZW50aW9uIiwibGFiZWwiLCJpY29uQ29sb3IiLCJ0eXBlIiwiZmciLCJpY29uU2l6ZSIsImxhYmVsRWwiLCJvdXRlclN0eWxlIiwicG9zaXRpb24iLCJib3hTaXppbmciLCJ2ZXJ0aWNhbEFsaWduIiwibWFyZ2luUmlnaHQiLCJ3aWR0aCIsImlkIiwiaW5pdGlhbHNGcm9tTmFtZSIsIm5hbWUiLCJfcGFydHMkMiIsInRyaW1tZWQiLCJ0cmltIiwicGFydHMiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJsZW5ndGgiLCJfcGFydHMkMCRjaGFyQXQiLCJfcGFydHMkIiwiX3BhcnRzJGNoYXJBdCIsIl9wYXJ0cyIsImZpcnN0IiwiY2hhckF0IiwibGFzdCIsImNvbmNhdCIsInRvVXBwZXJDYXNlIiwic2luZ2xlIiwic2xpY2UiLCJUT09MVElQX0ZPTlQiLCJUT09MVElQX1NFQ09OREFSWV9DT0xPUiIsIlRPT0xUSVBfU0VDT05EQVJZX1NUWUxFIiwiZm9udEZhbWlseSIsImNyZWF0ZVVzZXJUb29sdGlwRWwiLCJfbWV0YWRhdGEkcGljdHVyZSIsIl9tZXRhZGF0YSRwb3NpdGlvbk5hbSIsIl9tZXRhZGF0YSRwb3NpdGlvbk5hbTIiLCJfbWV0YWRhdGEkZW1haWwkdHJpbSIsIl9tZXRhZGF0YSRlbWFpbCIsIm1ldGFkYXRhIiwicGljdHVyZSIsInBvc2l0aW9uTmFtZSIsImVtYWlsIiwidG9vbHRpcCIsImRvY3VtZW50IiwiT2JqZWN0IiwiYXNzaWduIiwiekluZGV4IiwicGFkZGluZyIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyIiwiYmFja2dyb3VuZCIsImJveFNoYWRvdyIsInBvaW50ZXJFdmVudHMiLCJyb3ciLCJnYXAiLCJhdmF0YXJXcmFwIiwiaGVpZ2h0Iiwib3ZlcmZsb3ciLCJqdXN0aWZ5Q29udGVudCIsImZsZXhTaHJpbmsiLCJpbml0aWFscyIsImNyZWF0ZUluaXRpYWxzRmFsbGJhY2siLCJmYiIsInRleHRDb250ZW50IiwiaW1nIiwic3JjIiwiYWx0IiwiZHJhZ2dhYmxlIiwib2JqZWN0Rml0Iiwib25lcnJvciIsInJlbW92ZSIsImFwcGVuZENoaWxkIiwiaW5mb0NvbCIsImZsZXgiLCJuYW1lUm93IiwibmFtZVNwYW4iLCJ0ZXh0T3ZlcmZsb3ciLCJzZXAiLCJfb2JqZWN0U3ByZWFkIiwicG9zU3BhbiIsImVtYWlsU3BhbiIsImJ1aWxkQ2hpcEVsZW1lbnQiLCJjaGlwIiwic2V0QXR0cmlidXRlIiwiY2xhc3NOYW1lIiwiY29tbW9uIiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwibW91bnROb2RlIiwicm9vdCIsInJlbmRlciIsImN1cnNvciIsIm9uY2xpY2siLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJ3aW5kb3ciLCJvcGVuIiwidG9vbHRpcEVsIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJsZWZ0IiwiTWF0aCIsIm1heCIsIm1pbiIsImlubmVyV2lkdGgiLCJ0b3AiLCJ0cmFuc2Zvcm0iLCJib2R5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25DaGlwL2J1aWxkQ2hpcEVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdHlwZSBDU1NQcm9wZXJ0aWVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBmbHVzaFN5bmMgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBjcmVhdGVSb290IH0gZnJvbSAncmVhY3QtZG9tL2NsaWVudCdcbmltcG9ydCB7IENPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTLCBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZ2V0Q29udGV4dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29udGV4dE1lbnRpb25JY29ucydcbmltcG9ydCB7IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb3BlblRhc2tJbkNvclBhbmVsJ1xuaW1wb3J0IHsgYXBwbHlNZW50aW9uQ2hpcFN0eWxlcywgTUVOVElPTl9DSElQX0NPTE9SUyB9IGZyb20gJy4vQ29udGV4dE1lbnRpb25DaGlwLnN0eWxlcydcblxuY29uc3QgRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEU6IENTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdpbmxpbmUnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGFsaWduU2VsZjogJ2Jhc2VsaW5lJyxcbiAgbWluV2lkdGg6IDAsXG4gIG1heFdpZHRoOiAnMTAwJScsXG4gIHdoaXRlU3BhY2U6ICdub3JtYWwnLFxuICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59XG5cbi8qKiBUZXh0byBkZSB0YXJlYTogc2luIGJvcmRlIGluZmVyaW9yOyBlbCBhc3BlY3RvIGRlIGVubGFjZSBsbyBkYSBlbCBDU1MgZ2xvYmFsICg6OmJlZm9yZSArIGNvbG9yKS4gKi9cbmNvbnN0IEVESVRBQkxFX1RBU0tfTEFCRUxfU1RZTEU6IENTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdpbmxpbmUnLFxuICBmb250U2l6ZTogJzE0cHgnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGZvbnRXZWlnaHQ6ICc2MDAnLFxuICBjb2xvcjogJ2luaGVyaXQnLFxuICBtaW5XaWR0aDogMCxcbiAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gIG92ZXJmbG93V3JhcDogJ2JyZWFrLXdvcmQnLFxuICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbn1cblxuY29uc3QgY3JlYXRlRWRpdGFibGVNZW50aW9uTGFiZWxFbCA9IChpc1Rhc2s6IGJvb2xlYW4sIG1lbnRpb25MYWJlbDogc3RyaW5nKSA9PiB7XG4gIGlmICghaXNUYXNrKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBFRElUQUJMRV9OT05fVEFTS19MQUJFTF9TVFlMRSB9LCBtZW50aW9uTGFiZWwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBFRElUQUJMRV9UQVNLX0xBQkVMX1NUWUxFIH0sIG1lbnRpb25MYWJlbClcbn1cblxudHlwZSBFZGl0YWJsZU1lbnRpb25DaGlwUHJvcHMgPSB7XG4gIG1lbnRpb246IENvbnRleHRNZW50aW9uXG59XG5cbmNvbnN0IEVkaXRhYmxlTWVudGlvbkNoaXAgPSAoeyBtZW50aW9uIH06IEVkaXRhYmxlTWVudGlvbkNoaXBQcm9wcykgPT4ge1xuICBjb25zdCBtZW50aW9uTGFiZWwgPSBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKG1lbnRpb24ubGFiZWwpXG4gIGNvbnN0IGljb25Db2xvciA9IE1FTlRJT05fQ0hJUF9DT0xPUlNbbWVudGlvbi50eXBlXS5mZ1xuICBjb25zdCBpc1Rhc2sgPSBtZW50aW9uLnR5cGUgPT09ICd0YXNrJ1xuICBjb25zdCBpY29uU2l6ZSA9IGlzVGFzayA/IDE2IDogMTRcbiAgY29uc3QgbGFiZWxFbCA9IGNyZWF0ZUVkaXRhYmxlTWVudGlvbkxhYmVsRWwoaXNUYXNrLCBtZW50aW9uTGFiZWwpXG5cbiAgY29uc3Qgb3V0ZXJTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBkaXNwbGF5OiAnaW5saW5lJyxcbiAgICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgdmVydGljYWxBbGlnbjogJ2Jhc2VsaW5lJyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICB9XG5cbiAgaWYgKGlzVGFzaykge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogb3V0ZXJTdHlsZSB9LCBsYWJlbEVsKVxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXG4gICAgJ3NwYW4nLFxuICAgIHsgc3R5bGU6IG91dGVyU3R5bGUgfSxcbiAgICBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3NwYW4nLFxuICAgICAge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAgICAgICAgIG1hcmdpblJpZ2h0OiAnMnB4JyxcbiAgICAgICAgICBsaW5lSGVpZ2h0OiAnMScsXG4gICAgICAgICAgd2lkdGg6ICcxNHB4JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBnZXRDb250ZXh0TWVudGlvbkljb24obWVudGlvbi50eXBlLCBpY29uQ29sb3IsIG1lbnRpb24uaWQsIGljb25TaXplKVxuICAgICksXG4gICAgbGFiZWxFbFxuICApXG59XG5cbmNvbnN0IGluaXRpYWxzRnJvbU5hbWUgPSAobmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdHJpbW1lZCA9IG5hbWUudHJpbSgpXG4gIGlmICghdHJpbW1lZCkgcmV0dXJuICc/J1xuICBjb25zdCBwYXJ0cyA9IHRyaW1tZWQuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbilcbiAgaWYgKHBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgY29uc3QgZmlyc3QgPSBwYXJ0c1swXT8uY2hhckF0KDApID8/ICcnXG4gICAgY29uc3QgbGFzdCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdPy5jaGFyQXQoMCkgPz8gJydcbiAgICByZXR1cm4gYCR7Zmlyc3R9JHtsYXN0fWAudG9VcHBlckNhc2UoKVxuICB9XG4gIGNvbnN0IHNpbmdsZSA9IHBhcnRzWzBdID8/ICcnXG4gIHJldHVybiBzaW5nbGUubGVuZ3RoID49IDIgPyBzaW5nbGUuc2xpY2UoMCwgMikudG9VcHBlckNhc2UoKSA6IChzaW5nbGUuY2hhckF0KDApIHx8ICc/JykudG9VcHBlckNhc2UoKVxufVxuXG5jb25zdCBUT09MVElQX0ZPTlQgPSBgdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKWBcbmNvbnN0IFRPT0xUSVBfU0VDT05EQVJZX0NPTE9SID0gJ3ZhcigtLVRleHQtU2Vjb25kYXJ5LURhcmssICM2NjYpJ1xuY29uc3QgVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUgPSB7XG4gIGZvbnRGYW1pbHk6IFRPT0xUSVBfRk9OVCxcbiAgZm9udFNpemU6ICcxNHB4JyxcbiAgZm9udFdlaWdodDogJzQwMCcsXG4gIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgY29sb3I6IFRPT0xUSVBfU0VDT05EQVJZX0NPTE9SLFxufVxuXG5jb25zdCBjcmVhdGVVc2VyVG9vbHRpcEVsID0gKG1lbnRpb246IENvbnRleHRNZW50aW9uKTogSFRNTEVsZW1lbnQgPT4ge1xuICBjb25zdCB7IGxhYmVsLCBtZXRhZGF0YSB9ID0gbWVudGlvblxuICBjb25zdCBwaWN0dXJlID0gbWV0YWRhdGE/LnBpY3R1cmUgPz8gbnVsbFxuICBjb25zdCBwb3NpdGlvbk5hbWUgPSBtZXRhZGF0YT8ucG9zaXRpb25OYW1lPy50cmltKCkgPz8gJydcbiAgY29uc3QgZW1haWwgPSBtZXRhZGF0YT8uZW1haWw/LnRyaW0oKSA/PyAnJ1xuXG4gIGNvbnN0IHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICBPYmplY3QuYXNzaWduKHRvb2x0aXAuc3R5bGUsIHtcbiAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICB6SW5kZXg6ICc5OTk5JyxcbiAgICB3aWR0aDogJzI5MnB4JyxcbiAgICBwYWRkaW5nOiAnMTJweCA4cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgdmFyKC0tQ29sb3ItTGlnaHQtR3JheSwgI0UwRTBFMCknLFxuICAgIGJhY2tncm91bmQ6ICcjRkZGJyxcbiAgICBib3hTaGFkb3c6ICcwIDFweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpLCAwIDFweCA0cHggMCByZ2JhKDAsMCwwLDAuMDQpJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIH0pXG5cbiAgY29uc3Qgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbihyb3cuc3R5bGUsIHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZ2FwOiAnOHB4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9KVxuXG4gIC8vIEF2YXRhciBjaXJjdWxhciAoZm90byBvIGluaWNpYWxlcylcbiAgY29uc3QgYXZhdGFyV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24oYXZhdGFyV3JhcC5zdHlsZSwge1xuICAgIHdpZHRoOiAnMjRweCcsXG4gICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgbWluV2lkdGg6ICcyNHB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICcyNHB4JyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBiYWNrZ3JvdW5kOiAnI2U4ZjRmZicsXG4gICAgZmxleFNocmluazogJzAnLFxuICB9KVxuXG4gIGNvbnN0IGluaXRpYWxzID0gaW5pdGlhbHNGcm9tTmFtZShsYWJlbClcblxuICBjb25zdCBjcmVhdGVJbml0aWFsc0ZhbGxiYWNrID0gKCk6IEhUTUxFbGVtZW50ID0+IHtcbiAgICBjb25zdCBmYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICAgIGZiLnRleHRDb250ZW50ID0gaW5pdGlhbHNcbiAgICBPYmplY3QuYXNzaWduKGZiLnN0eWxlLCB7XG4gICAgICBmb250U2l6ZTogJzEwcHgnLFxuICAgICAgZm9udFdlaWdodDogJzYwMCcsXG4gICAgICBjb2xvcjogJyMyZDc3YmQnLFxuICAgICAgbGluZUhlaWdodDogJzEnLFxuICAgICAgZm9udEZhbWlseTogVE9PTFRJUF9GT05ULFxuICAgIH0pXG4gICAgcmV0dXJuIGZiXG4gIH1cblxuICBpZiAocGljdHVyZSkge1xuICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpXG4gICAgaW1nLnNyYyA9IHBpY3R1cmVcbiAgICBpbWcuYWx0ID0gJydcbiAgICBpbWcuZHJhZ2dhYmxlID0gZmFsc2VcbiAgICBPYmplY3QuYXNzaWduKGltZy5zdHlsZSwge1xuICAgICAgd2lkdGg6ICcyNHB4JyxcbiAgICAgIGhlaWdodDogJzI0cHgnLFxuICAgICAgb2JqZWN0Rml0OiAnY292ZXInLFxuICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzI0cHgnLFxuICAgIH0pXG4gICAgaW1nLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICBpbWcucmVtb3ZlKClcbiAgICAgIGF2YXRhcldyYXAuYXBwZW5kQ2hpbGQoY3JlYXRlSW5pdGlhbHNGYWxsYmFjaygpKVxuICAgIH1cbiAgICBhdmF0YXJXcmFwLmFwcGVuZENoaWxkKGltZylcbiAgfSBlbHNlIHtcbiAgICBhdmF0YXJXcmFwLmFwcGVuZENoaWxkKGNyZWF0ZUluaXRpYWxzRmFsbGJhY2soKSlcbiAgfVxuXG4gIC8vIENvbHVtbmEgZGUgaW5mb1xuICBjb25zdCBpbmZvQ29sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbihpbmZvQ29sLnN0eWxlLCB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgZ2FwOiAnMnB4JyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIGZsZXg6ICcxJyxcbiAgfSlcblxuICAvLyBGaWxhOiBub21icmUgKyBzZXBhcmFkb3IgKyBwb3NpY2nDs25cbiAgY29uc3QgbmFtZVJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24obmFtZVJvdy5zdHlsZSwge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgZ2FwOiAnNHB4JyxcbiAgfSlcblxuICBjb25zdCBuYW1lU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBuYW1lU3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsXG4gIE9iamVjdC5hc3NpZ24obmFtZVNwYW4uc3R5bGUsIHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIGNvbG9yOiAndmFyKC0tVGV4dC1QcmltYXJ5LURhcmssICMyMDIwMUYpJyxcbiAgICBmb250RmFtaWx5OiBUT09MVElQX0ZPTlQsXG4gICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICBmb250V2VpZ2h0OiAnNTAwJyxcbiAgICBsaW5lSGVpZ2h0OiAnMTMwJScsXG4gIH0pXG4gIG5hbWVSb3cuYXBwZW5kQ2hpbGQobmFtZVNwYW4pXG5cbiAgaWYgKHBvc2l0aW9uTmFtZSkge1xuICAgIGNvbnN0IHNlcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICAgIHNlcC50ZXh0Q29udGVudCA9ICd8J1xuICAgIE9iamVjdC5hc3NpZ24oc2VwLnN0eWxlLCB7IC4uLlRPT0xUSVBfU0VDT05EQVJZX1NUWUxFLCBmbGV4U2hyaW5rOiAnMCcgfSlcbiAgICBuYW1lUm93LmFwcGVuZENoaWxkKHNlcClcblxuICAgIGNvbnN0IHBvc1NwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgICBwb3NTcGFuLnRleHRDb250ZW50ID0gcG9zaXRpb25OYW1lXG4gICAgT2JqZWN0LmFzc2lnbihwb3NTcGFuLnN0eWxlLCBUT09MVElQX1NFQ09OREFSWV9TVFlMRSlcbiAgICBuYW1lUm93LmFwcGVuZENoaWxkKHBvc1NwYW4pXG4gIH1cblxuICBpbmZvQ29sLmFwcGVuZENoaWxkKG5hbWVSb3cpXG5cbiAgaWYgKGVtYWlsKSB7XG4gICAgY29uc3QgZW1haWxTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gICAgZW1haWxTcGFuLnRleHRDb250ZW50ID0gZW1haWxcbiAgICBPYmplY3QuYXNzaWduKGVtYWlsU3Bhbi5zdHlsZSwgVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUpXG4gICAgaW5mb0NvbC5hcHBlbmRDaGlsZChlbWFpbFNwYW4pXG4gIH1cblxuICByb3cuYXBwZW5kQ2hpbGQoYXZhdGFyV3JhcClcbiAgcm93LmFwcGVuZENoaWxkKGluZm9Db2wpXG4gIHRvb2x0aXAuYXBwZW5kQ2hpbGQocm93KVxuXG4gIHJldHVybiB0b29sdGlwXG59XG5cbi8qKlxuICogQ3JlYSB1biBgPHNwYW4+YCBhdMOzbWljbyBsaXN0byBwYXJhIGluc2VydGFyc2UgZGVudHJvIGRlbCBjb250ZW50ZWRpdGFibGVcbiAqIGRlbCBgQ29udGV4dE1lbnRpb25FZGl0b3JgLiBTZSBtYXJjYSBjb24gbG9zIGBkYXRhLW1lbnRpb24qYCBuZWNlc2FyaW9zIHBhcmFcbiAqIHF1ZSBgdXNlQ29udGV4dE1lbnRpb25zLnNlcmlhbGl6ZSgpYCBwdWVkYSB2b2x2ZXIgYSBleHRyYWVyIGxhIG1lbnRpb24uXG4gKlxuICogQ29tcGFydGUgbG9zIGVzdGlsb3MgY29uIGVsIGNvbXBvbmVudGUgYENvbnRleHRNZW50aW9uQ2hpcGAgdmlhXG4gKiBgYXBwbHlNZW50aW9uQ2hpcFN0eWxlc2AsIGFzZWd1cmFuZG8gdW5hIMO6bmljYSBmdWVudGUgZGUgdmVyZGFkIHZpc3VhbC5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkQ2hpcEVsZW1lbnQgPSAobWVudGlvbjogQ29udGV4dE1lbnRpb24pOiBIVE1MU3BhbkVsZW1lbnQgPT4ge1xuICBjb25zdCBjaGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gIGNoaXAuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKVxuICBjaGlwLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLWNoaXAnLCAndHJ1ZScpXG4gIGNoaXAuY2xhc3NOYW1lID0gQ09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1NcbiAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi10eXBlJywgbWVudGlvbi50eXBlKVxuICBjaGlwLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXN1cmZhY2UnLCAnZWRpdG9yJylcbiAgYXBwbHlNZW50aW9uQ2hpcFN0eWxlcyhjaGlwLCBtZW50aW9uLnR5cGUpXG4gIGNvbnN0IGlzVGFzayA9IG1lbnRpb24udHlwZSA9PT0gJ3Rhc2snXG4gIGNvbnN0IGNvbW1vbiA9IHtcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnYmFzZWxpbmUnLFxuICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgfSBhcyBjb25zdFxuICBpZiAoaXNUYXNrKSB7XG4gICAgT2JqZWN0LmFzc2lnbihjaGlwLnN0eWxlLCBjb21tb24sIHtcbiAgICAgIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgbWluSGVpZ2h0OiAnYXV0bycsXG4gICAgICBtYXhIZWlnaHQ6ICdub25lJyxcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIE9iamVjdC5hc3NpZ24oY2hpcC5zdHlsZSwgY29tbW9uLCB7XG4gICAgICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gICAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICAgIG1pbkhlaWdodDogJ2F1dG8nLFxuICAgICAgbWF4SGVpZ2h0OiAnbm9uZScsXG4gICAgfSlcbiAgfVxuICBjb25zdCBtb3VudE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgbW91bnROb2RlLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJ1xuICBtb3VudE5vZGUuc3R5bGUubWF4V2lkdGggPSAnMTAwJSdcbiAgbW91bnROb2RlLnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAnYmFzZWxpbmUnXG4gIG1vdW50Tm9kZS5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCdcbiAgY2hpcC5hcHBlbmRDaGlsZChtb3VudE5vZGUpXG4gIGNvbnN0IHJvb3QgPSBjcmVhdGVSb290KG1vdW50Tm9kZSlcblxuICBmbHVzaFN5bmMoKCkgPT4ge1xuICAgIHJvb3QucmVuZGVyKGNyZWF0ZUVsZW1lbnQoRWRpdGFibGVNZW50aW9uQ2hpcCwgeyBtZW50aW9uIH0pKVxuICB9KVxuXG4gIGlmIChtZW50aW9uLnR5cGUgPT09ICd0YXNrJykge1xuICAgIGNoaXAuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInXG4gICAgY2hpcC5vbmNsaWNrID0gZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIG9wZW5UYXNrSW5Db3JQYW5lbChtZW50aW9uLmlkLCAnZGV0YWlsJylcbiAgICB9XG4gIH0gZWxzZSBpZiAobWVudGlvbi50eXBlID09PSAncHJvamVjdCcpIHtcbiAgICBjaGlwLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJ1xuICAgIGNoaXAub25jbGljayA9IGUgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICB3aW5kb3cub3BlbihgL3Byb2plY3QvJHttZW50aW9uLmlkfS9kYXNoYm9hcmRgLCAnX2JsYW5rJylcbiAgICB9XG4gIH0gZWxzZSBpZiAobWVudGlvbi50eXBlID09PSAndXNlcicpIHtcbiAgICBsZXQgdG9vbHRpcEVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsXG5cbiAgICBjaGlwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICBpZiAodG9vbHRpcEVsKSByZXR1cm5cbiAgICAgIHRvb2x0aXBFbCA9IGNyZWF0ZVVzZXJUb29sdGlwRWwobWVudGlvbilcbiAgICAgIGNvbnN0IHJlY3QgPSBjaGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4od2luZG93LmlubmVyV2lkdGggLSAzMDAsIHJlY3QubGVmdCkpXG4gICAgICB0b29sdGlwRWwuc3R5bGUudG9wID0gYCR7cmVjdC50b3B9cHhgXG4gICAgICB0b29sdGlwRWwuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgXG4gICAgICB0b29sdGlwRWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVkoY2FsYygtMTAwJSAtIDRweCkpJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b29sdGlwRWwpXG4gICAgfSlcblxuICAgIGNoaXAuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgIGlmICh0b29sdGlwRWwpIHtcbiAgICAgICAgdG9vbHRpcEVsLnJlbW92ZSgpXG4gICAgICAgIHRvb2x0aXBFbCA9IG51bGxcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGNoaXBcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBU0EsYUFBYSxRQUE0QixPQUFPO0FBQ3pELFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVNDLFVBQVUsUUFBUSxrQkFBa0I7QUFDN0MsU0FBU0MsMEJBQTBCLFFBQXdCLCtCQUErQjtBQUMxRixTQUFTQyxxQkFBcUIsUUFBUSxvQ0FBb0M7QUFDMUUsU0FBU0MsNEJBQTRCLFFBQVEsb0NBQW9DO0FBQ2pGLFNBQVNDLGtCQUFrQixRQUFRLG1DQUFtQztBQUN0RSxTQUFTQyxzQkFBc0IsRUFBRUMsbUJBQW1CLFFBQVEsNkJBQTZCO0FBRXpGLElBQU1DLDZCQUE0QyxHQUFHO0VBQ25EQyxPQUFPLEVBQUUsUUFBUTtFQUNqQkMsVUFBVSxFQUFFLE1BQU07RUFDbEJDLFNBQVMsRUFBRSxVQUFVO0VBQ3JCQyxRQUFRLEVBQUUsQ0FBQztFQUNYQyxRQUFRLEVBQUUsTUFBTTtFQUNoQkMsVUFBVSxFQUFFLFFBQVE7RUFDcEJDLFlBQVksRUFBRSxZQUFZO0VBQzFCQyxT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
@@ -0,0 +1,4 @@
1
+ export { ContextMentionChip } from './ContextMentionChip';
2
+ export { buildChipElement } from './buildChipElement';
3
+ export { MENTION_CHIP_COLORS, applyMentionChipStyles, ContextMentionChipGlobalStyles, MENTION_CHIP_NON_TASK_HOVER_BG, MENTION_CHIP_TASK_HOVER_BG } from './ContextMentionChip.styles';
4
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0TWVudGlvbkNoaXAiLCJidWlsZENoaXBFbGVtZW50IiwiTUVOVElPTl9DSElQX0NPTE9SUyIsImFwcGx5TWVudGlvbkNoaXBTdHlsZXMiLCJDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJNRU5USU9OX0NISVBfVEFTS19IT1ZFUl9CRyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uQ2hpcC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDb250ZXh0TWVudGlvbkNoaXAgfSBmcm9tICcuL0NvbnRleHRNZW50aW9uQ2hpcCdcbmV4cG9ydCB7IGJ1aWxkQ2hpcEVsZW1lbnQgfSBmcm9tICcuL2J1aWxkQ2hpcEVsZW1lbnQnXG5leHBvcnQge1xuICBNRU5USU9OX0NISVBfQ09MT1JTLFxuICBhcHBseU1lbnRpb25DaGlwU3R5bGVzLFxuICBDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMsXG4gIE1FTlRJT05fQ0hJUF9OT05fVEFTS19IT1ZFUl9CRyxcbiAgTUVOVElPTl9DSElQX1RBU0tfSE9WRVJfQkcsXG59IGZyb20gJy4vQ29udGV4dE1lbnRpb25DaGlwLnN0eWxlcydcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esa0JBQWtCLFFBQVEsc0JBQXNCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLG9CQUFvQjtBQUNyRCxTQUNFQyxtQkFBbUIsRUFDbkJDLHNCQUFzQixFQUN0QkMsOEJBQThCLEVBQzlCQyw4QkFBOEIsRUFDOUJDLDBCQUEwQixRQUNyQiw2QkFBNkIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,191 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ import { forwardRef, useCallback, useImperativeHandle, useLayoutEffect, useRef, useState } from 'react';
6
+ import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
7
+ import { useContextMentions } from '../../../hooks/useContextMentions';
8
+ import { buildChipElement } from '../ContextMentionChip';
9
+ import { ContextMentionChipGlobalStyles } from '../ContextMentionChip/ContextMentionChip.styles';
10
+ import { SCMEEditable } from './ContextMentionEditor.styles';
11
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
12
+ var isPlaceholderTruncatedInEditor = function isPlaceholderTruncatedInEditor(editor, placeholder) {
13
+ var trimmed = placeholder.trim();
14
+ if (!trimmed) {
15
+ return false;
16
+ }
17
+ var clientWidth = editor.clientWidth;
18
+ if (clientWidth <= 4) {
19
+ return false;
20
+ }
21
+ var styles = window.getComputedStyle(editor);
22
+ var ctx = document.createElement('canvas').getContext('2d');
23
+ if (!ctx) {
24
+ return false;
25
+ }
26
+ ctx.font = "".concat(styles.fontWeight, " ").concat(styles.fontSize, " ").concat(styles.fontFamily);
27
+ var measured = ctx.measureText(trimmed).width;
28
+ var paddingLeft = parseFloat(styles.paddingLeft) || 0;
29
+ var paddingRight = parseFloat(styles.paddingRight) || 0;
30
+ var borderLeft = parseFloat(styles.borderLeftWidth) || 0;
31
+ var borderRight = parseFloat(styles.borderRightWidth) || 0;
32
+ var available = Math.max(0, clientWidth - paddingLeft - paddingRight - borderLeft - borderRight);
33
+ return measured > available + 1;
34
+ };
35
+ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
36
+ var _placeholder$trim2;
37
+ var placeholder = _ref.placeholder,
38
+ disabled = _ref.disabled,
39
+ className = _ref.className,
40
+ onInput = _ref.onInput,
41
+ onKeyDown = _ref.onKeyDown,
42
+ onFocus = _ref.onFocus,
43
+ onBlur = _ref.onBlur;
44
+ var _useContextMentions = useContextMentions(),
45
+ editorRef = _useContextMentions.editorRef,
46
+ updateTrigger = _useContextMentions.updateTrigger,
47
+ replaceTriggerWithChip = _useContextMentions.replaceTriggerWithChip,
48
+ syncTriggerAtRunLength = _useContextMentions.syncTriggerAtRunLength,
49
+ serialize = _useContextMentions.serialize,
50
+ clearEditorDom = _useContextMentions.clear,
51
+ focus = _useContextMentions.focus;
52
+ var skipNextInput = useRef(false);
53
+ var _useState = useState(false),
54
+ _useState2 = _slicedToArray(_useState, 2),
55
+ placeholderTruncated = _useState2[0],
56
+ setPlaceholderTruncated = _useState2[1];
57
+ var _useState3 = useState(true),
58
+ _useState4 = _slicedToArray(_useState3, 2),
59
+ logicalEmpty = _useState4[0],
60
+ setLogicalEmpty = _useState4[1];
61
+ var recomputePlaceholderTruncation = useCallback(function () {
62
+ var _placeholder$trim;
63
+ var el = editorRef.current;
64
+ var ph = (_placeholder$trim = placeholder === null || placeholder === void 0 ? void 0 : placeholder.trim()) !== null && _placeholder$trim !== void 0 ? _placeholder$trim : '';
65
+ var isEditorLogicallyEmpty = serialize().text.trim() === '';
66
+ if (!el || !ph || !isEditorLogicallyEmpty) {
67
+ setPlaceholderTruncated(false);
68
+ return;
69
+ }
70
+ setPlaceholderTruncated(isPlaceholderTruncatedInEditor(el, ph));
71
+ }, [placeholder, serialize]);
72
+ useLayoutEffect(function () {
73
+ recomputePlaceholderTruncation();
74
+ var el = editorRef.current;
75
+ if (!el) {
76
+ return undefined;
77
+ }
78
+ var ro = new ResizeObserver(function () {
79
+ queueMicrotask(recomputePlaceholderTruncation);
80
+ });
81
+ ro.observe(el);
82
+ return function () {
83
+ return ro.disconnect();
84
+ };
85
+ }, [placeholder, disabled, recomputePlaceholderTruncation]);
86
+ useImperativeHandle(ref, function () {
87
+ return {
88
+ focus: focus,
89
+ clear: function clear() {
90
+ clearEditorDom();
91
+ setLogicalEmpty(true);
92
+ queueMicrotask(recomputePlaceholderTruncation);
93
+ },
94
+ serialize: serialize,
95
+ syncTriggerAtRunLength: syncTriggerAtRunLength,
96
+ hasVisualMultiline: function hasVisualMultiline() {
97
+ var _editor$textContent$t, _editor$textContent;
98
+ var editor = editorRef.current;
99
+ if (!editor) {
100
+ return false;
101
+ }
102
+ var text = (_editor$textContent$t = (_editor$textContent = editor.textContent) === null || _editor$textContent === void 0 ? void 0 : _editor$textContent.trim()) !== null && _editor$textContent$t !== void 0 ? _editor$textContent$t : '';
103
+ if (!text) {
104
+ return false;
105
+ }
106
+ var styles = window.getComputedStyle(editor);
107
+ var lineHeight = parseFloat(styles.lineHeight) || 20;
108
+ var editorHeight = editor.getBoundingClientRect().height;
109
+ var isMultiline = editorHeight > lineHeight * 1.5;
110
+ return isMultiline;
111
+ },
112
+ getEditorClientRect: function getEditorClientRect() {
113
+ var _editorRef$current$ge, _editorRef$current;
114
+ return (_editorRef$current$ge = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getBoundingClientRect()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : null;
115
+ },
116
+ insertMention: function insertMention(mention) {
117
+ var chip = buildChipElement(mention);
118
+ replaceTriggerWithChip(chip, mention);
119
+ skipNextInput.current = true;
120
+ var state = serialize();
121
+ onInput === null || onInput === void 0 || onInput(_objectSpread(_objectSpread({}, state), {}, {
122
+ trigger: {
123
+ active: false,
124
+ query: '',
125
+ atRunLength: 0
126
+ }
127
+ }));
128
+ setLogicalEmpty(state.text.trim() === '');
129
+ queueMicrotask(recomputePlaceholderTruncation);
130
+ }
131
+ };
132
+ }, [focus, clearEditorDom, serialize, syncTriggerAtRunLength, replaceTriggerWithChip, onInput, recomputePlaceholderTruncation]);
133
+ var handleInput = function handleInput() {
134
+ if (skipNextInput.current) {
135
+ skipNextInput.current = false;
136
+ return;
137
+ }
138
+ var trig = updateTrigger();
139
+ var state = serialize();
140
+ onInput === null || onInput === void 0 || onInput(_objectSpread(_objectSpread({}, state), {}, {
141
+ trigger: {
142
+ active: trig.active,
143
+ query: trig.query,
144
+ atRunLength: trig.atRunLength
145
+ }
146
+ }));
147
+ setLogicalEmpty(state.text.trim() === '');
148
+ queueMicrotask(recomputePlaceholderTruncation);
149
+ };
150
+ var handlePaste = function handlePaste(e) {
151
+ e.preventDefault();
152
+ var text = e.clipboardData.getData('text/plain');
153
+ var selection = window.getSelection();
154
+ if (!selection || selection.rangeCount === 0) return;
155
+ selection.deleteFromDocument();
156
+ selection.getRangeAt(0).insertNode(document.createTextNode(text));
157
+ selection.collapseToEnd();
158
+ handleInput();
159
+ };
160
+ var trimmedPlaceholder = (_placeholder$trim2 = placeholder === null || placeholder === void 0 ? void 0 : placeholder.trim()) !== null && _placeholder$trim2 !== void 0 ? _placeholder$trim2 : '';
161
+ var placeholderTooltipTitle = logicalEmpty && placeholderTruncated && trimmedPlaceholder ? trimmedPlaceholder : '';
162
+ return /*#__PURE__*/_jsxs(_Fragment, {
163
+ children: [/*#__PURE__*/_jsx(ContextMentionChipGlobalStyles, {}), /*#__PURE__*/_jsx(Tooltip, {
164
+ title: placeholderTooltipTitle,
165
+ children: /*#__PURE__*/_jsx("span", {
166
+ style: {
167
+ display: 'block',
168
+ width: '100%',
169
+ minWidth: 0
170
+ },
171
+ children: /*#__PURE__*/_jsx(SCMEEditable, {
172
+ ref: editorRef,
173
+ className: className,
174
+ "data-placeholder": placeholder,
175
+ contentEditable: !disabled,
176
+ "data-disabled": String(!!disabled),
177
+ suppressContentEditableWarning: true,
178
+ role: "textbox",
179
+ "aria-multiline": "true",
180
+ onInput: handleInput,
181
+ onKeyDown: onKeyDown,
182
+ onPaste: handlePaste,
183
+ onFocus: onFocus,
184
+ onBlur: onBlur
185
+ })
186
+ })
187
+ })]
188
+ });
189
+ });
190
+ ContextMentionEditor.displayName = 'ContextMentionEditor';
191
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3J3YXJkUmVmIiwidXNlQ2FsbGJhY2siLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlTGF5b3V0RWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJUb29sdGlwIiwidXNlQ29udGV4dE1lbnRpb25zIiwiYnVpbGRDaGlwRWxlbWVudCIsIkNvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyIsIlNDTUVFZGl0YWJsZSIsImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImlzUGxhY2Vob2xkZXJUcnVuY2F0ZWRJbkVkaXRvciIsImVkaXRvciIsInBsYWNlaG9sZGVyIiwidHJpbW1lZCIsInRyaW0iLCJjbGllbnRXaWR0aCIsInN0eWxlcyIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJjdHgiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRDb250ZXh0IiwiZm9udCIsImNvbmNhdCIsImZvbnRXZWlnaHQiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJtZWFzdXJlZCIsIm1lYXN1cmVUZXh0Iiwid2lkdGgiLCJwYWRkaW5nTGVmdCIsInBhcnNlRmxvYXQiLCJwYWRkaW5nUmlnaHQiLCJib3JkZXJMZWZ0IiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHQiLCJib3JkZXJSaWdodFdpZHRoIiwiYXZhaWxhYmxlIiwiTWF0aCIsIm1heCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwiX3JlZiIsInJlZiIsIl9wbGFjZWhvbGRlciR0cmltMiIsImRpc2FibGVkIiwiY2xhc3NOYW1lIiwib25JbnB1dCIsIm9uS2V5RG93biIsIm9uRm9jdXMiLCJvbkJsdXIiLCJfdXNlQ29udGV4dE1lbnRpb25zIiwiZWRpdG9yUmVmIiwidXBkYXRlVHJpZ2dlciIsInJlcGxhY2VUcmlnZ2VyV2l0aENoaXAiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwic2VyaWFsaXplIiwiY2xlYXJFZGl0b3JEb20iLCJjbGVhciIsImZvY3VzIiwic2tpcE5leHRJbnB1dCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInBsYWNlaG9sZGVyVHJ1bmNhdGVkIiwic2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvZ2ljYWxFbXB0eSIsInNldExvZ2ljYWxFbXB0eSIsInJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbiIsIl9wbGFjZWhvbGRlciR0cmltIiwiZWwiLCJjdXJyZW50IiwicGgiLCJpc0VkaXRvckxvZ2ljYWxseUVtcHR5IiwidGV4dCIsInVuZGVmaW5lZCIsInJvIiwiUmVzaXplT2JzZXJ2ZXIiLCJxdWV1ZU1pY3JvdGFzayIsIm9ic2VydmUiLCJkaXNjb25uZWN0IiwiaGFzVmlzdWFsTXVsdGlsaW5lIiwiX2VkaXRvciR0ZXh0Q29udGVudCR0IiwiX2VkaXRvciR0ZXh0Q29udGVudCIsInRleHRDb250ZW50IiwibGluZUhlaWdodCIsImVkaXRvckhlaWdodCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImhlaWdodCIsImlzTXVsdGlsaW5lIiwiZ2V0RWRpdG9yQ2xpZW50UmVjdCIsIl9lZGl0b3JSZWYkY3VycmVudCRnZSIsIl9lZGl0b3JSZWYkY3VycmVudCIsImluc2VydE1lbnRpb24iLCJtZW50aW9uIiwiY2hpcCIsInN0YXRlIiwiX29iamVjdFNwcmVhZCIsInRyaWdnZXIiLCJhY3RpdmUiLCJxdWVyeSIsImF0UnVuTGVuZ3RoIiwiaGFuZGxlSW5wdXQiLCJ0cmlnIiwiaGFuZGxlUGFzdGUiLCJlIiwicHJldmVudERlZmF1bHQiLCJjbGlwYm9hcmREYXRhIiwiZ2V0RGF0YSIsInNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsInJhbmdlQ291bnQiLCJkZWxldGVGcm9tRG9jdW1lbnQiLCJnZXRSYW5nZUF0IiwiaW5zZXJ0Tm9kZSIsImNyZWF0ZVRleHROb2RlIiwiY29sbGFwc2VUb0VuZCIsInRyaW1tZWRQbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyVG9vbHRpcFRpdGxlIiwiY2hpbGRyZW4iLCJ0aXRsZSIsInN0eWxlIiwiZGlzcGxheSIsIm1pbldpZHRoIiwiY29udGVudEVkaXRhYmxlIiwiU3RyaW5nIiwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiwicm9sZSIsIm9uUGFzdGUiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yL0NvbnRleHRNZW50aW9uRWRpdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDbGlwYm9hcmRFdmVudCxcbiAgZm9yd2FyZFJlZixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyB1c2VDb250ZXh0TWVudGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDb250ZXh0TWVudGlvbnMnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgYnVpbGRDaGlwRWxlbWVudCB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uQ2hpcCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uQ2hpcC9Db250ZXh0TWVudGlvbkNoaXAuc3R5bGVzJ1xuaW1wb3J0IHsgU0NNRUVkaXRhYmxlIH0gZnJvbSAnLi9Db250ZXh0TWVudGlvbkVkaXRvci5zdHlsZXMnXG5cbmNvbnN0IGlzUGxhY2Vob2xkZXJUcnVuY2F0ZWRJbkVkaXRvciA9IChlZGl0b3I6IEhUTUxFbGVtZW50LCBwbGFjZWhvbGRlcjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBwbGFjZWhvbGRlci50cmltKClcbiAgaWYgKCF0cmltbWVkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY29uc3QgeyBjbGllbnRXaWR0aCB9ID0gZWRpdG9yXG4gIGlmIChjbGllbnRXaWR0aCA8PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlZGl0b3IpXG4gIGNvbnN0IGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJylcbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjdHguZm9udCA9IGAke3N0eWxlcy5mb250V2VpZ2h0fSAke3N0eWxlcy5mb250U2l6ZX0gJHtzdHlsZXMuZm9udEZhbWlseX1gXG4gIGNvbnN0IG1lYXN1cmVkID0gY3R4Lm1lYXN1cmVUZXh0KHRyaW1tZWQpLndpZHRoXG5cbiAgY29uc3QgcGFkZGluZ0xlZnQgPSBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nTGVmdCkgfHwgMFxuICBjb25zdCBwYWRkaW5nUmlnaHQgPSBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nUmlnaHQpIHx8IDBcbiAgY29uc3QgYm9yZGVyTGVmdCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlckxlZnRXaWR0aCkgfHwgMFxuICBjb25zdCBib3JkZXJSaWdodCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlclJpZ2h0V2lkdGgpIHx8IDBcbiAgY29uc3QgYXZhaWxhYmxlID0gTWF0aC5tYXgoMCwgY2xpZW50V2lkdGggLSBwYWRkaW5nTGVmdCAtIHBhZGRpbmdSaWdodCAtIGJvcmRlckxlZnQgLSBib3JkZXJSaWdodClcblxuICByZXR1cm4gbWVhc3VyZWQgPiBhdmFpbGFibGUgKyAxXG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlID0ge1xuICBmb2N1czogKCkgPT4gdm9pZFxuICBjbGVhcjogKCkgPT4gdm9pZFxuICBpbnNlcnRNZW50aW9uOiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHZvaWRcbiAgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aDogKGF0UnVuTGVuZ3RoOiBudW1iZXIpID0+IHZvaWRcbiAgc2VyaWFsaXplOiAoKSA9PiB7IHRleHQ6IHN0cmluZzsgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW10gfVxuICBoYXNWaXN1YWxNdWx0aWxpbmU6ICgpID0+IGJvb2xlYW5cbiAgLyoqIFJlY3QgZGVsIMOhcmVhIGVkaXRhYmxlICh2aWV3cG9ydCk7IGxvIHVzYSBlbCBwb3BvdmVyIGRlIEAgcGFyYSBhbGluZWFyIGFuY2hvL29yaWdlbi4gKi9cbiAgZ2V0RWRpdG9yQ2xpZW50UmVjdDogKCkgPT4gRE9NUmVjdCB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dE1lbnRpb25FZGl0b3JQcm9wcyA9IHtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBvbklucHV0PzogKHN0YXRlOiB7XG4gICAgdGV4dDogc3RyaW5nXG4gICAgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW11cbiAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9XG4gIH0pID0+IHZvaWRcbiAgb25LZXlEb3duPzogKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRm9jdXM/OiAoKSA9PiB2b2lkXG4gIG9uQmx1cj86ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IENvbnRleHRNZW50aW9uRWRpdG9yID0gZm9yd2FyZFJlZjxDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSwgQ29udGV4dE1lbnRpb25FZGl0b3JQcm9wcz4oXG4gICh7IHBsYWNlaG9sZGVyLCBkaXNhYmxlZCwgY2xhc3NOYW1lLCBvbklucHV0LCBvbktleURvd24sIG9uRm9jdXMsIG9uQmx1ciB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBlZGl0b3JSZWYsXG4gICAgICB1cGRhdGVUcmlnZ2VyLFxuICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCxcbiAgICAgIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgsXG4gICAgICBzZXJpYWxpemUsXG4gICAgICBjbGVhcjogY2xlYXJFZGl0b3JEb20sXG4gICAgICBmb2N1cyxcbiAgICB9ID0gdXNlQ29udGV4dE1lbnRpb25zKClcbiAgICBjb25zdCBza2lwTmV4dElucHV0ID0gdXNlUmVmKGZhbHNlKVxuICAgIGNvbnN0IFtwbGFjZWhvbGRlclRydW5jYXRlZCwgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW2xvZ2ljYWxFbXB0eSwgc2V0TG9naWNhbEVtcHR5XSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgICBjb25zdCByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICBjb25zdCBwaCA9IHBsYWNlaG9sZGVyPy50cmltKCkgPz8gJydcbiAgICAgIGNvbnN0IGlzRWRpdG9yTG9naWNhbGx5RW1wdHkgPSBzZXJpYWxpemUoKS50ZXh0LnRyaW0oKSA9PT0gJydcblxuICAgICAgaWYgKCFlbCB8fCAhcGggfHwgIWlzRWRpdG9yTG9naWNhbGx5RW1wdHkpIHtcbiAgICAgICAgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzZXRQbGFjZWhvbGRlclRydW5jYXRlZChpc1BsYWNlaG9sZGVyVHJ1bmNhdGVkSW5FZGl0b3IoZWwsIHBoKSlcbiAgICB9LCBbcGxhY2Vob2xkZXIsIHNlcmlhbGl6ZV0pXG5cbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKClcbiAgICAgIGNvbnN0IGVsID0gZWRpdG9yUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZWwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgY29uc3Qgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzayhyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24pXG4gICAgICB9KVxuICAgICAgcm8ub2JzZXJ2ZShlbClcbiAgICAgIHJldHVybiAoKSA9PiByby5kaXNjb25uZWN0KClcbiAgICB9LCBbcGxhY2Vob2xkZXIsIGRpc2FibGVkLCByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb25dKVxuXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShcbiAgICAgIHJlZixcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGZvY3VzLFxuICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgIGNsZWFyRWRpdG9yRG9tKClcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkodHJ1ZSlcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzayhyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24pXG4gICAgICAgIH0sXG4gICAgICAgIHNlcmlhbGl6ZSxcbiAgICAgICAgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aCxcbiAgICAgICAgaGFzVmlzdWFsTXVsdGlsaW5lOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWRpdG9yID0gZWRpdG9yUmVmLmN1cnJlbnRcbiAgICAgICAgICBpZiAoIWVkaXRvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdGV4dCA9IGVkaXRvci50ZXh0Q29udGVudD8udHJpbSgpID8/ICcnXG4gICAgICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlZGl0b3IpXG4gICAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IHBhcnNlRmxvYXQoc3R5bGVzLmxpbmVIZWlnaHQpIHx8IDIwXG4gICAgICAgICAgY29uc3QgZWRpdG9ySGVpZ2h0ID0gZWRpdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodFxuICAgICAgICAgIGNvbnN0IGlzTXVsdGlsaW5lID0gZWRpdG9ySGVpZ2h0ID4gbGluZUhlaWdodCAqIDEuNVxuXG4gICAgICAgICAgcmV0dXJuIGlzTXVsdGlsaW5lXG4gICAgICAgIH0sXG4gICAgICAgIGdldEVkaXRvckNsaWVudFJlY3Q6ICgpID0+IGVkaXRvclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA/PyBudWxsLFxuICAgICAgICBpbnNlcnRNZW50aW9uOiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlwID0gYnVpbGRDaGlwRWxlbWVudChtZW50aW9uKVxuICAgICAgICAgIHJlcGxhY2VUcmlnZ2VyV2l0aENoaXAoY2hpcCwgbWVudGlvbilcbiAgICAgICAgICBza2lwTmV4dElucHV0LmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgY29uc3Qgc3RhdGUgPSBzZXJpYWxpemUoKVxuICAgICAgICAgIG9uSW5wdXQ/Lih7IC4uLnN0YXRlLCB0cmlnZ2VyOiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAgfSB9KVxuICAgICAgICAgIHNldExvZ2ljYWxFbXB0eShzdGF0ZS50ZXh0LnRyaW0oKSA9PT0gJycpXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2socmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKVxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBbXG4gICAgICAgIGZvY3VzLFxuICAgICAgICBjbGVhckVkaXRvckRvbSxcbiAgICAgICAgc2VyaWFsaXplLFxuICAgICAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgICAgICByZXBsYWNlVHJpZ2dlcldpdGhDaGlwLFxuICAgICAgICBvbklucHV0LFxuICAgICAgICByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24sXG4gICAgICBdXG4gICAgKVxuXG4gICAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgICBpZiAoc2tpcE5leHRJbnB1dC5jdXJyZW50KSB7XG4gICAgICAgIHNraXBOZXh0SW5wdXQuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3QgdHJpZyA9IHVwZGF0ZVRyaWdnZXIoKVxuICAgICAgY29uc3Qgc3RhdGUgPSBzZXJpYWxpemUoKVxuICAgICAgb25JbnB1dD8uKHsgLi4uc3RhdGUsIHRyaWdnZXI6IHsgYWN0aXZlOiB0cmlnLmFjdGl2ZSwgcXVlcnk6IHRyaWcucXVlcnksIGF0UnVuTGVuZ3RoOiB0cmlnLmF0UnVuTGVuZ3RoIH0gfSlcbiAgICAgIHNldExvZ2ljYWxFbXB0eShzdGF0ZS50ZXh0LnRyaW0oKSA9PT0gJycpXG4gICAgICBxdWV1ZU1pY3JvdGFzayhyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24pXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlUGFzdGUgPSAoZTogQ2xpcGJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGNvbnN0IHRleHQgPSBlLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSByZXR1cm5cbiAgICAgIHNlbGVjdGlvbi5kZWxldGVGcm9tRG9jdW1lbnQoKVxuICAgICAgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCkuaW5zZXJ0Tm9kZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSlcbiAgICAgIHNlbGVjdGlvbi5jb2xsYXBzZVRvRW5kKClcbiAgICAgIGhhbmRsZUlucHV0KClcbiAgICB9XG5cbiAgICBjb25zdCB0cmltbWVkUGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcj8udHJpbSgpID8/ICcnXG4gICAgY29uc3QgcGxhY2Vob2xkZXJUb29sdGlwVGl0bGUgPSBsb2dpY2FsRW1wdHkgJiYgcGxhY2Vob2xkZXJUcnVuY2F0ZWQgJiYgdHJpbW1lZFBsYWNlaG9sZGVyID8gdHJpbW1lZFBsYWNlaG9sZGVyIDogJydcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8Q29udGV4dE1lbnRpb25DaGlwR2xvYmFsU3R5bGVzIC8+XG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXtwbGFjZWhvbGRlclRvb2x0aXBUaXRsZX0+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2Jsb2NrJywgd2lkdGg6ICcxMDAlJywgbWluV2lkdGg6IDAgfX0+XG4gICAgICAgICAgICA8U0NNRUVkaXRhYmxlXG4gICAgICAgICAgICAgIHJlZj17ZWRpdG9yUmVmfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgZGF0YS1wbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGNvbnRlbnRFZGl0YWJsZT17IWRpc2FibGVkfVxuICAgICAgICAgICAgICBkYXRhLWRpc2FibGVkPXtTdHJpbmcoISFkaXNhYmxlZCl9XG4gICAgICAgICAgICAgIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1xuICAgICAgICAgICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICAgICAgICAgIGFyaWEtbXVsdGlsaW5lPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIG9uSW5wdXQ9e2hhbmRsZUlucHV0fVxuICAgICAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgICAgICAgb25QYXN0ZT17aGFuZGxlUGFzdGV9XG4gICAgICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgIDwvPlxuICAgIClcbiAgfVxuKVxuXG5Db250ZXh0TWVudGlvbkVkaXRvci5kaXNwbGF5TmFtZSA9ICdDb250ZXh0TWVudGlvbkVkaXRvcidcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBRUVBLFVBQVUsRUFFVkMsV0FBVyxFQUNYQyxtQkFBbUIsRUFDbkJDLGVBQWUsRUFDZkMsTUFBTSxFQUNOQyxRQUFRLFFBQ0gsT0FBTztBQUNkLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0Msa0JBQWtCLFFBQVEsbUNBQW1DO0FBRXRFLFNBQVNDLGdCQUFnQixRQUFRLHVCQUF1QjtBQUN4RCxTQUFTQyw4QkFBOEIsUUFBUSxpREFBaUQ7QUFDaEcsU0FBU0MsWUFBWSxRQUFRLCtCQUErQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBO0FBRTVELElBQU1DLDhCQUE4QixHQUFHLFNBQWpDQSw4QkFBOEJBLENBQUlDLE1BQW1CLEVBQUVDLFdBQW1CLEVBQWM7RUFDNUYsSUFBTUMsT0FBTyxHQUFHRCxXQUFXLENBQUNFLElBQUksQ0FBQyxDQUFDO0VBQ2xDLElBQUksQ0FBQ0QsT0FBTyxFQUFFO0lBQ1osT0FBTyxLQUFLO0VBQ2Q7RUFDQSxJQUFRRSxXQUFXLEdBQUtKLE1BQU0sQ0FBdEJJLFdBQVc7RUFDbkIsSUFBSUEsV0FBVyxJQUFJLENBQUMsRUFBRTtJQUNwQixPQUFPLEtBQUs7RUFDZDtFQUVBLElBQU1DLE1BQU0sR0FBR0MsTUFBTSxDQUFDQyxnQkFBZ0IsQ0FBQ1AsTUFBTSxDQUFDO0VBQzlDLElBQU1RLEdBQUcsR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUNDLFVBQVUsQ0FBQyxJQUFJLENBQUM7RUFDN0QsSUFBSSxDQUFDSCxHQUFHLEVBQUU7SUFDUixPQUFPLEtBQUs7RUFDZDtFQUNBQSxHQUFHLENBQUNJLElBQUksTUFBQUMsTUFBQSxDQUFNUixNQUFNLENBQUNTLFVBQVUsT0FBQUQsTUFBQSxDQUFJUixNQUFNLENBQUNVLFFBQVEsT0FBQUYsTUFBQSxDQUFJUixNQUFNLENBQUNXLFVBQVUsQ0FBRTtFQUN6RSxJQUFNQyxRQUFRLEdBQUdULEdBQUcsQ0FBQ1UsV0FBVyxDQUFDaEIsT0FBTyxDQUFDLENBQUNpQixLQUFLO0VBRS9DLElBQU1DLFdBQVcsR0FBR0MsVUFBVSxDQUFDaEIsTUFBTSxDQUFDZSxXQUFXLENBQUMsSUFBSSxDQUFDO0VBQ3ZELElBQU1FLFlBQVksR0FBR0QsVUFBVSxDQUFDaEIsTUFBTSxDQUFDaUIsWUFBWSxDQUFDLElBQUksQ0FBQztFQUN6RCxJQUFNQyxVQUFVLEdBQUdGLFVBQVUsQ0FBQ2hCLE1BQU0sQ0FBQ21CLGVBQWUsQ0FBQyxJQUFJLENBQUM7RUFDMUQsSUFBTUMsV0FBVyxHQUFHSixVQUFVLENBQUNoQixNQUFNLENBQUNxQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7RUFDNUQsSUFBTUMsU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUV6QixXQUFXLEdBQUdnQixXQUFXLEdBQUdFLFlBQVksR0FBR0MsVUFBVSxHQUFHRSxXQUFXLENBQUM7RUFFbEcsT0FBT1IsUUFBUSxHQUFHVSxTQUFTLEdBQUcsQ0FBQztBQUNqQyxDQUFDO0FBMkJELE9BQU8sSUFBTUcsb0JBQW9CLGdCQUFHaEQsVUFBVSxDQUM1QyxVQUFBaUQsSUFBQSxFQUE0RUMsR0FBRyxFQUFLO0VBQUEsSUFBQUMsa0JBQUE7RUFBQSxJQUFqRmhDLFdBQVcsR0FBQThCLElBQUEsQ0FBWDlCLFdBQVc7SUFBRWlDLFFBQVEsR0FBQUgsSUFBQSxDQUFSRyxRQUFRO0lBQUVDLFNBQVMsR0FBQUosSUFBQSxDQUFUSSxTQUFTO0lBQUVDLE9BQU8sR0FBQUwsSUFBQSxDQUFQSyxPQUFPO0lBQUVDLFNBQVMsR0FBQU4sSUFBQSxDQUFUTSxTQUFTO0lBQUVDLE9BQU8sR0FBQVAsSUFBQSxDQUFQTyxPQUFPO0lBQUVDLE1BQU0sR0FBQVIsSUFBQSxDQUFOUSxNQUFNO0VBQ3RFLElBQUFDLG1CQUFBLEdBUUluRCxrQkFBa0IsQ0FBQyxDQUFDO0lBUHRCb0QsU0FBUyxHQUFBRCxtQkFBQSxDQUFUQyxTQUFTO0lBQ1RDLGFBQWEsR0FBQUYsbUJBQUEsQ0FBYkUsYUFBYTtJQUNiQyxzQkFBc0IsR0FBQUgsbUJBQUEsQ0FBdEJHLHNCQUFzQjtJQUN0QkMsc0JBQXNCLEdBQUFKLG1CQUFBLENBQXRCSSxzQkFBc0I7SUFDdEJDLFNBQVMsR0FBQUwsbUJBQUEsQ0FBVEssU0FBUztJQUNGQyxjQUFjLEdBQUFOLG1CQUFBLENBQXJCTyxLQUFLO0lBQ0xDLEtBQUssR0FBQVIsbUJBQUEsQ0FBTFEsS0FBSztFQUVQLElBQU1DLGFBQWEsR0FBRy9ELE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDbkMsSUFBQWdFLFNBQUEsR0FBd0QvRCxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUFnRSxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUFoRUcsb0JBQW9CLEdBQUFGLFVBQUE7SUFBRUcsdUJBQXVCLEdBQUFILFVBQUE7RUFDcEQsSUFBQUksVUFBQSxHQUF3Q3BFLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFBQXFFLFVBQUEsR0FBQUosY0FBQSxDQUFBRyxVQUFBO0lBQS9DRSxZQUFZLEdBQUFELFVBQUE7SUFBRUUsZUFBZSxHQUFBRixVQUFBO0VBRXBDLElBQU1HLDhCQUE4QixHQUFHNUUsV0FBVyxDQUFDLFlBQU07SUFBQSxJQUFBNkUsaUJBQUE7SUFDdkQsSUFBTUMsRUFBRSxHQUFHcEIsU0FBUyxDQUFDcUIsT0FBTztJQUM1QixJQUFNQyxFQUFFLElBQUFILGlCQUFBLEdBQUczRCxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUUsSUFBSSxDQUFDLENBQUMsY0FBQXlELGlCQUFBLGNBQUFBLGlCQUFBLEdBQUksRUFBRTtJQUNwQyxJQUFNSSxzQkFBc0IsR0FBR25CLFNBQVMsQ0FBQyxDQUFDLENBQUNvQixJQUFJLENBQUM5RCxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7SUFFN0QsSUFBSSxDQUFDMEQsRUFBRSxJQUFJLENBQUNFLEVBQUUsSUFBSSxDQUFDQyxzQkFBc0IsRUFBRTtNQUN6Q1YsdUJBQXVCLENBQUMsS0FBSyxDQUFDO01BQzlCO0lBQ0Y7SUFFQUEsdUJBQXVCLENBQUN2RCw4QkFBOEIsQ0FBQzhELEVBQUUsRUFBRUUsRUFBRSxDQUFDLENBQUM7RUFDakUsQ0FBQyxFQUFFLENBQUM5RCxXQUFXLEVBQUU0QyxTQUFTLENBQUMsQ0FBQztFQUU1QjVELGVBQWUsQ0FBQyxZQUFNO0lBQ3BCMEUsOEJBQThCLENBQUMsQ0FBQztJQUNoQyxJQUFNRSxFQUFFLEdBQUdwQixTQUFTLENBQUNxQixPQUFPO0lBQzVCLElBQUksQ0FBQ0QsRUFBRSxFQUFFO01BQ1AsT0FBT0ssU0FBUztJQUNsQjtJQUNBLElBQU1DLEVBQUUsR0FBRyxJQUFJQyxjQUFjLENBQUMsWUFBTTtNQUNsQ0MsY0FBYyxDQUFDViw4QkFBOEIsQ0FBQztJQUNoRCxDQUFDLENBQUM7SUFDRlEsRUFBRSxDQUFDRyxPQUFPLENBQUNULEVBQUUsQ0FBQztJQUNkLE9BQU87TUFBQSxPQUFNTSxFQUFFLENBQUNJLFVBQVUsQ0FBQyxDQUFDO0lBQUE7RUFDOUIsQ0FBQyxFQUFFLENBQUN0RSxXQUFXLEVBQUVpQyxRQUFRLEVBQUV5Qiw4QkFBOEIsQ0FBQyxDQUFDO0VBRTNEM0UsbUJBQW1CLENBQ2pCZ0QsR0FBRyxFQUNIO0lBQUEsT0FBTztNQUNMZ0IsS0FBSyxFQUFMQSxLQUFLO01BQ0xELEtBQUssRUFBRSxTQUFQQSxLQUFLQSxDQUFBLEVBQVE7UUFDWEQsY0FBYyxDQUFDLENBQUM7UUFDaEJZLGVBQWUsQ0FBQyxJQUFJLENBQUM7UUFDckJXLGNBQWMsQ0FBQ1YsOEJBQThCLENBQUM7TUFDaEQsQ0FBQztNQUNEZCxTQUFTLEVBQVRBLFNBQVM7TUFDVEQsc0JBQXNCLEVBQXRCQSxzQkFBc0I7TUFDdEI0QixrQkFBa0IsRUFBRSxTQUFwQkEsa0JBQWtCQSxDQUFBLEVBQVE7UUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxtQkFBQTtRQUN4QixJQUFNMUUsTUFBTSxHQUFHeUMsU0FBUyxDQUFDcUIsT0FBTztRQUNoQyxJQUFJLENBQUM5RCxNQUFNLEVBQUU7VUFDWCxPQUFPLEtBQUs7UUFDZDtRQUVBLElBQU1pRSxJQUFJLElBQUFRLHFCQUFBLElBQUFDLG1CQUFBLEdBQUcxRSxNQUFNLENBQUMyRSxXQUFXLGNBQUFELG1CQUFBLHVCQUFsQkEsbUJBQUEsQ0FBb0J2RSxJQUFJLENBQUMsQ0FBQyxjQUFBc0UscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxFQUFFO1FBQzdDLElBQUksQ0FBQ1IsSUFBSSxFQUFFO1VBQ1QsT0FBTyxLQUFLO1FBQ2Q7UUFFQSxJQUFNNUQsTUFBTSxHQUFHQyxNQUFNLENBQUNDLGdCQUFnQixDQUFDUCxNQUFNLENBQUM7UUFDOUMsSUFBTTRFLFVBQVUsR0FBR3ZELFVBQVUsQ0FBQ2hCLE1BQU0sQ0FBQ3VFLFVBQVUsQ0FBQyxJQUFJLEVBQUU7UUFDdEQsSUFBTUMsWUFBWSxHQUFHN0UsTUFBTSxDQUFDOEUscUJBQXFCLENBQUMsQ0FBQyxDQUFDQyxNQUFNO1FBQzFELElBQU1DLFdBQVcsR0FBR0gsWUFBWSxHQUFHRCxVQUFVLEdBQUcsR0FBRztRQUVuRCxPQUFPSSxXQUFXO01BQ3BCLENBQUM7TUFDREMsbUJBQW1CLEVBQUUsU0FBckJBLG1CQUFtQkEsQ0FBQTtRQUFBLElBQUFDLHFCQUFBLEVBQUFDLGtCQUFBO1FBQUEsUUFBQUQscUJBQUEsSUFBQUMsa0JBQUEsR0FBUTFDLFNBQVMsQ0FBQ3FCLE9BQU8sY0FBQXFCLGtCQUFBLHVCQUFqQkEsa0JBQUEsQ0FBbUJMLHFCQUFxQixDQUFDLENBQUMsY0FBQUkscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxJQUFJO01BQUE7TUFDN0VFLGFBQWEsRUFBRSxTQUFmQSxhQUFhQSxDQUFHQyxPQUF1QixFQUFLO1FBQzFDLElBQU1DLElBQUksR0FBR2hHLGdCQUFnQixDQUFDK0YsT0FBTyxDQUFDO1FBQ3RDMUMsc0JBQXNCLENBQUMyQyxJQUFJLEVBQUVELE9BQU8sQ0FBQztRQUNyQ3BDLGFBQWEsQ0FBQ2EsT0FBTyxHQUFHLElBQUk7UUFDNUIsSUFBTXlCLEtBQUssR0FBRzFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pCVCxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFBb0QsYUFBQSxDQUFBQSxhQUFBLEtBQVFELEtBQUs7VUFBRUUsT0FBTyxFQUFFO1lBQUVDLE1BQU0sRUFBRSxLQUFLO1lBQUVDLEtBQUssRUFBRSxFQUFFO1lBQUVDLFdBQVcsRUFBRTtVQUFFO1FBQUMsRUFBRSxDQUFDO1FBQzlFbEMsZUFBZSxDQUFDNkIsS0FBSyxDQUFDdEIsSUFBSSxDQUFDOUQsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekNrRSxjQUFjLENBQUNWLDhCQUE4QixDQUFDO01BQ2hEO0lBQ0YsQ0FBQztFQUFBLENBQUMsRUFDRixDQUNFWCxLQUFLLEVBQ0xGLGNBQWMsRUFDZEQsU0FBUyxFQUNURCxzQkFBc0IsRUFDdEJELHNCQUFzQixFQUN0QlAsT0FBTyxFQUNQdUIsOEJBQThCLENBRWxDLENBQUM7RUFFRCxJQUFNa0MsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUEsRUFBUztJQUN4QixJQUFJNUMsYUFBYSxDQUFDYSxPQUFPLEVBQUU7TUFDekJiLGFBQWEsQ0FBQ2EsT0FBTyxHQUFHLEtBQUs7TUFDN0I7SUFDRjtJQUNBLElBQU1nQyxJQUFJLEdBQUdwRCxhQUFhLENBQUMsQ0FBQztJQUM1QixJQUFNNkMsS0FBSyxHQUFHMUMsU0FBUyxDQUFDLENBQUM7SUFDekJULE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUFvRCxhQUFBLENBQUFBLGFBQUEsS0FBUUQsS0FBSztNQUFFRSxPQUFPLEVBQUU7UUFBRUMsTUFBTSxFQUFFSSxJQUFJLENBQUNKLE1BQU07UUFBRUMsS0FBSyxFQUFFRyxJQUFJLENBQUNILEtBQUs7UUFBRUMsV0FBVyxFQUFFRSxJQUFJLENBQUNGO01BQVk7SUFBQyxFQUFFLENBQUM7SUFDM0dsQyxlQUFlLENBQUM2QixLQUFLLENBQUN0QixJQUFJLENBQUM5RCxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6Q2tFLGNBQWMsQ0FBQ1YsOEJBQThCLENBQUM7RUFDaEQsQ0FBQztFQUVELElBQU1vQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSUMsQ0FBaUMsRUFBSztJQUN6REEsQ0FBQyxDQUFDQyxjQUFjLENBQUMsQ0FBQztJQUNsQixJQUFNaEMsSUFBSSxHQUFHK0IsQ0FBQyxDQUFDRSxhQUFhLENBQUNDLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDbEQsSUFBTUMsU0FBUyxHQUFHOUYsTUFBTSxDQUFDK0YsWUFBWSxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDRCxTQUFTLElBQUlBLFNBQVMsQ0FBQ0UsVUFBVSxLQUFLLENBQUMsRUFBRTtJQUM5Q0YsU0FBUyxDQUFDRyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlCSCxTQUFTLENBQUNJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsVUFBVSxDQUFDaEcsUUFBUSxDQUFDaUcsY0FBYyxDQUFDekMsSUFBSSxDQUFDLENBQUM7SUFDakVtQyxTQUFTLENBQUNPLGFBQWEsQ0FBQyxDQUFDO0lBQ3pCZCxXQUFXLENBQUMsQ0FBQztFQUNmLENBQUM7RUFFRCxJQUFNZSxrQkFBa0IsSUFBQTNFLGtCQUFBLEdBQUdoQyxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUUsSUFBSSxDQUFDLENBQUMsY0FBQThCLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUksRUFBRTtFQUNwRCxJQUFNNEUsdUJBQXVCLEdBQUdwRCxZQUFZLElBQUlKLG9CQUFvQixJQUFJdUQsa0JBQWtCLEdBQUdBLGtCQUFrQixHQUFHLEVBQUU7RUFFcEgsb0JBQ0U5RyxLQUFBLENBQUFGLFNBQUE7SUFBQWtILFFBQUEsZ0JBQ0VwSCxJQUFBLENBQUNILDhCQUE4QixJQUFFLENBQUMsZUFDbENHLElBQUEsQ0FBQ04sT0FBTztNQUFDMkgsS0FBSyxFQUFFRix1QkFBd0I7TUFBQUMsUUFBQSxlQUN0Q3BILElBQUE7UUFBTXNILEtBQUssRUFBRTtVQUFFQyxPQUFPLEVBQUUsT0FBTztVQUFFOUYsS0FBSyxFQUFFLE1BQU07VUFBRStGLFFBQVEsRUFBRTtRQUFFLENBQUU7UUFBQUosUUFBQSxlQUM1RHBILElBQUEsQ0FBQ0YsWUFBWTtVQUNYd0MsR0FBRyxFQUFFUyxTQUFVO1VBQ2ZOLFNBQVMsRUFBRUEsU0FBVTtVQUNyQixvQkFBa0JsQyxXQUFZO1VBQzlCa0gsZUFBZSxFQUFFLENBQUNqRixRQUFTO1VBQzNCLGlCQUFla0YsTUFBTSxDQUFDLENBQUMsQ0FBQ2xGLFFBQVEsQ0FBRTtVQUNsQ21GLDhCQUE4QjtVQUM5QkMsSUFBSSxFQUFDLFNBQVM7VUFDZCxrQkFBZSxNQUFNO1VBQ3JCbEYsT0FBTyxFQUFFeUQsV0FBWTtVQUNyQnhELFNBQVMsRUFBRUEsU0FBVTtVQUNyQmtGLE9BQU8sRUFBRXhCLFdBQVk7VUFDckJ6RCxPQUFPLEVBQUVBLE9BQVE7VUFDakJDLE1BQU0sRUFBRUE7UUFBTyxDQUNoQjtNQUFDLENBQ0U7SUFBQyxDQUNBLENBQUM7RUFBQSxDQUNWLENBQUM7QUFFUCxDQUNGLENBQUM7QUFFRFQsb0JBQW9CLENBQUMwRixXQUFXLEdBQUcsc0JBQXNCIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,6 @@
1
+ import styled from 'styled-components';
2
+ export var SCMEEditable = styled.div.withConfig({
3
+ displayName: "ContextMentionEditorstyles__SCMEEditable",
4
+ componentId: "sc-vz0osf-0"
5
+ })(["box-sizing:border-box;min-width:0;width:100%;min-height:24px;max-height:200px;overflow-y:auto;color:var(--Text-Primary-Dark,#20201f);font-family:var(--cor-typography-font-family,'Work Sans');font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:0;outline:none;word-break:break-word;&:empty{overflow-x:hidden;}&:empty::before{content:attr(data-placeholder);display:block;max-width:100%;color:var(--Text-Secondary-Dark,#666);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}&[data-disabled='true']{opacity:0.5;pointer-events:none;}&::-webkit-scrollbar{width:6px;}&::-webkit-scrollbar-thumb{background:#d0d0d0;border-radius:3px;}"]);
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJTQ01FRWRpdGFibGUiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yL0NvbnRleHRNZW50aW9uRWRpdG9yLnN0eWxlcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcblxuZXhwb3J0IGNvbnN0IFNDTUVFZGl0YWJsZSA9IHN0eWxlZC5kaXZgXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi13aWR0aDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDI0cHg7XG4gIG1heC1oZWlnaHQ6IDIwMHB4O1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBjb2xvcjogdmFyKC0tVGV4dC1QcmltYXJ5LURhcmssICMyMDIwMWYpO1xuICBmb250LWZhbWlseTogdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgb3V0bGluZTogbm9uZTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcblxuICAmOmVtcHR5IHtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIH1cblxuICAmOmVtcHR5OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1wbGFjZWhvbGRlcik7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGNvbG9yOiB2YXIoLS1UZXh0LVNlY29uZGFyeS1EYXJrLCAjNjY2KTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIH1cblxuICAmW2RhdGEtZGlzYWJsZWQ9J3RydWUnXSB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG4gIH1cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICNkMGQwZDA7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICB9XG5gXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQU0sTUFBTSxtQkFBbUI7QUFFdEMsT0FBTyxJQUFNQyxZQUFZLEdBQUdELE1BQU0sQ0FBQ0UsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLG1yQkE0Q3JDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,2 @@
1
+ export { ContextMentionEditor } from './ContextMentionEditor';
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0TWVudGlvbkVkaXRvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9yIH0gZnJvbSAnLi9Db250ZXh0TWVudGlvbkVkaXRvcidcbmV4cG9ydCB0eXBlIHsgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUsIENvbnRleHRNZW50aW9uRWRpdG9yUHJvcHMgfSBmcm9tICcuL0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxvQkFBb0IsUUFBUSx3QkFBd0IiLCJpZ25vcmVMaXN0IjpbXX0=