@projectcor/maia-components 2.11.36-4 → 2.11.36-6

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 (97) hide show
  1. package/lib/App.js +24 -11
  2. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +28 -0
  3. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +84 -0
  4. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +123 -0
  5. package/lib/components/atoms/ContextMentionChip/index.js +4 -0
  6. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +85 -0
  7. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +6 -0
  8. package/lib/components/atoms/ContextMentionEditor/index.js +2 -0
  9. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +188 -0
  10. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +98 -0
  11. package/lib/components/atoms/ContextMentionItem/index.js +2 -0
  12. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +131 -0
  13. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +63 -0
  14. package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
  15. package/lib/components/atoms/MAIAInput/MAIAInput.js +61 -191
  16. package/lib/components/atoms/icons/NotionIcon.js +36 -0
  17. package/lib/components/atoms/icons/RocketIcon.js +31 -0
  18. package/lib/components/atoms/icons/WrenchIcon.js +1 -1
  19. package/lib/components/atoms/icons/index.js +3 -1
  20. package/lib/components/index.js +2 -1
  21. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
  22. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +483 -0
  23. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +238 -0
  24. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +437 -0
  25. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +3 -0
  26. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +3 -3
  27. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
  28. package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +80 -0
  29. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +105 -44
  30. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +40 -19
  31. package/lib/components/molecules/AbmSection/index.js +2 -2
  32. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +7 -1
  33. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +8 -4
  34. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +3 -39
  35. package/lib/components/molecules/ChatAIHome/styles.js +1 -37
  36. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +21 -2
  37. package/lib/components/molecules/ChatAIMessages/newStyles.js +2 -2
  38. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +27 -96
  39. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  40. package/lib/components/molecules/ChatFooter/ChatFooter.js +5 -4
  41. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +55 -0
  42. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
  43. package/lib/components/molecules/ContextMentionInput/index.js +2 -0
  44. package/lib/components/molecules/SchedulesPage/SchedulesPage.js +226 -233
  45. package/lib/components/molecules/Sidebar/Sidebar.js +28 -11
  46. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +6 -2
  47. package/lib/components/molecules/SkillsPage/SkillsPage.js +708 -0
  48. package/lib/components/molecules/SkillsPage/index.js +2 -0
  49. package/lib/components/molecules/maiaSectionModalStyles.js +91 -0
  50. package/lib/components/molecules/maiaSectionUiTokens.js +31 -0
  51. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +183 -48
  52. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
  53. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +5 -2
  54. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +6 -3
  55. package/lib/constants/taskLinkIcon.js +6 -0
  56. package/lib/dev/DevAbmAgentModal.js +114 -0
  57. package/lib/dev/DevContextMentionInput.js +65 -0
  58. package/lib/dev/Providers.js +11 -6
  59. package/lib/dev/mocks/abmModalMocks.js +193 -0
  60. package/lib/hooks/useCaretPosition.js +35 -0
  61. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  62. package/lib/hooks/useChatManager/useChatManager.js +21 -11
  63. package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
  64. package/lib/hooks/useChatMessages/useChatMessages.js +30 -14
  65. package/lib/hooks/useContextMentions.js +204 -0
  66. package/lib/hooks/useEntitySearch.js +405 -0
  67. package/lib/hooks/useEvent.js +5 -1
  68. package/lib/hooks/useMentionAllowedTypes.js +86 -0
  69. package/lib/hooks/useMentionPopover.js +284 -0
  70. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
  71. package/lib/lang/br/index.js +139 -1
  72. package/lib/lang/en/index.js +139 -1
  73. package/lib/lang/es/index.js +139 -1
  74. package/lib/lang/fr/index.js +147 -9
  75. package/lib/services/maia/Agents/connectors.js +89 -0
  76. package/lib/services/maia/Agents/skills.js +164 -0
  77. package/lib/services/maia/Chats/getChatMessages.js +29 -4
  78. package/lib/services/maia/Orchestrator/orchestrator.js +7 -5
  79. package/lib/services/maia/RecentProjects/getRecentProjects.js +12 -4
  80. package/lib/services/maia/Schedules/getMySchedules.js +1 -1
  81. package/lib/services/maia/Schedules/index.js +1 -1
  82. package/lib/services/query/entitySearchQuery.js +16 -0
  83. package/lib/services/query/usersDirectoryQuery.js +19 -0
  84. package/lib/services/utils/mapChatMessages.js +12 -5
  85. package/lib/types/Chat.js +1 -1
  86. package/lib/types/agent.js +1 -1
  87. package/lib/types/agentModal.js +1 -1
  88. package/lib/types/agentSkill.js +2 -0
  89. package/lib/types/attachment.js +2 -0
  90. package/lib/types/contextMention.js +37 -0
  91. package/lib/utils/contextMentionIcons.js +115 -0
  92. package/lib/utils/contextMentionLabel.js +4 -0
  93. package/lib/utils/contextMentionTypeLabel.js +17 -0
  94. package/lib/utils/renderContextMentions.js +216 -0
  95. package/package.json +1 -1
  96. package/lib/components/molecules/AbmSection/AbmActionsSection.js +0 -136
  97. package/lib/components/molecules/AbmSection/AbmActionsSection.styles.js +0 -74
@@ -0,0 +1,284 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { ContextMentionPopover, SCMPAnchor } from '../components/atoms/ContextMentionPopover';
5
+ import { useGlobalContext } from '../context/global-context';
6
+ import { useT } from './useT';
7
+ // eslint-disable-next-line import/no-cycle
8
+ import { useEntitySearch } from './useEntitySearch';
9
+ import { useMentionAllowedTypes } from './useMentionAllowedTypes';
10
+ import { useCaretPosition } from './useCaretPosition';
11
+ import { EVENTS, useEvent } from './useEvent';
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ var POPOVER_WIDTH = 438;
14
+ /**
15
+ * Encapsula toda la lógica del popover de @-mentions para consumirla desde
16
+ * componentes que integren el `ContextMentionEditor`:
17
+ *
18
+ * - estado del popover (abierto, posición, activeIndex, activeType)
19
+ * - fetch de entidades por tab (clients / projects / tasks / users)
20
+ * - emisión de analytics (`aiChatMentionOpen/Select/TypeSwitch`)
21
+ * - reposicionamiento en scroll/resize
22
+ * - reseteo de activeIndex al cambiar items/tab
23
+ *
24
+ * El consumer sigue siendo dueño del `ContextMentionEditor`, del send, de los
25
+ * attachments y del resto del layout; este hook sólo resuelve la UX de mention.
26
+ */
27
+ /**
28
+ * Deriva el scope (clientId/projectId) que debe aplicarse a recents y search,
29
+ * leyendo el contexto global (project/client seleccionado o entityValues por URL).
30
+ *
31
+ * Reglas:
32
+ * - Si en el contexto hay `projectId`, las tabs `task`/`user` se filtran por él.
33
+ * - Si hay `clientId` (con o sin projectId), las queries lo propagan.
34
+ * - El tab `project` sólo usa `clientId` (filtrar projects por projectId rompería la lista;
35
+ * el filtrado por type lo hace `useEntitySearch.buildFiltersForType`).
36
+ *
37
+ * Se respeta independientemente de `agent.entity` para cubrir casos donde el
38
+ * usuario navega dentro de un proyecto/cliente aunque el agente sea 'global'.
39
+ */
40
+ var useDerivedScope = function useDerivedScope() {
41
+ var _ref, _ctx$client$id, _ctx$client, _ctx$entityValues, _ref2, _ctx$project$id, _ctx$project, _ctx$entityValues2, _ctx$agent$connectors, _ctx$agent;
42
+ var ctx = useGlobalContext();
43
+ var clientId = (_ref = (_ctx$client$id = (_ctx$client = ctx.client) === null || _ctx$client === void 0 ? void 0 : _ctx$client.id) !== null && _ctx$client$id !== void 0 ? _ctx$client$id : (_ctx$entityValues = ctx.entityValues) === null || _ctx$entityValues === void 0 ? void 0 : _ctx$entityValues.clientId) !== null && _ref !== void 0 ? _ref : null;
44
+ var projectId = (_ref2 = (_ctx$project$id = (_ctx$project = ctx.project) === null || _ctx$project === void 0 ? void 0 : _ctx$project.id) !== null && _ctx$project$id !== void 0 ? _ctx$project$id : (_ctx$entityValues2 = ctx.entityValues) === null || _ctx$entityValues2 === void 0 ? void 0 : _ctx$entityValues2.projectId) !== null && _ref2 !== void 0 ? _ref2 : null;
45
+ var mcpSlugsKey = ((_ctx$agent$connectors = (_ctx$agent = ctx.agent) === null || _ctx$agent === void 0 || (_ctx$agent = _ctx$agent.connectors) === null || _ctx$agent === void 0 || (_ctx$agent = _ctx$agent.find(function (c) {
46
+ return c.group === 'MCP';
47
+ })) === null || _ctx$agent === void 0 ? void 0 : _ctx$agent.slugs) !== null && _ctx$agent$connectors !== void 0 ? _ctx$agent$connectors : []).join('|');
48
+ var mcpSlugs = useMemo(function () {
49
+ var _ctx$agent$connectors2, _ctx$agent2;
50
+ var raw = (_ctx$agent$connectors2 = (_ctx$agent2 = ctx.agent) === null || _ctx$agent2 === void 0 || (_ctx$agent2 = _ctx$agent2.connectors) === null || _ctx$agent2 === void 0 || (_ctx$agent2 = _ctx$agent2.find(function (c) {
51
+ return c.group === 'MCP';
52
+ })) === null || _ctx$agent2 === void 0 ? void 0 : _ctx$agent2.slugs) !== null && _ctx$agent$connectors2 !== void 0 ? _ctx$agent$connectors2 : [];
53
+ return _toConsumableArray(new Set(raw.filter(function (s) {
54
+ return typeof s === 'string' && s.trim().length > 0;
55
+ }))).sort();
56
+ }, [mcpSlugsKey]);
57
+ return useMemo(function () {
58
+ return {
59
+ clientId: clientId,
60
+ projectId: projectId,
61
+ mcpSlugs: mcpSlugs
62
+ };
63
+ }, [clientId, projectId, mcpSlugs]);
64
+ };
65
+ export var useMentionPopover = function useMentionPopover(_ref3) {
66
+ var editorRef = _ref3.editorRef,
67
+ enabledTypes = _ref3.enabledTypes,
68
+ onMentionAdded = _ref3.onMentionAdded;
69
+ var _useT = useT(),
70
+ t = _useT.t;
71
+ var event = useEvent();
72
+ var _useMentionAllowedTyp = useMentionAllowedTypes(enabledTypes),
73
+ allowedTypes = _useMentionAllowedTyp.allowedTypes,
74
+ defaultType = _useMentionAllowedTyp.defaultType;
75
+ var _useState = useState(defaultType),
76
+ _useState2 = _slicedToArray(_useState, 2),
77
+ activeType = _useState2[0],
78
+ setActiveType = _useState2[1];
79
+ var _useState3 = useState(false),
80
+ _useState4 = _slicedToArray(_useState3, 2),
81
+ popoverOpen = _useState4[0],
82
+ setPopoverOpen = _useState4[1];
83
+ var _useState5 = useState({
84
+ left: 0
85
+ }),
86
+ _useState6 = _slicedToArray(_useState5, 2),
87
+ popoverPos = _useState6[0],
88
+ setPopoverPos = _useState6[1];
89
+ var _useState7 = useState(0),
90
+ _useState8 = _slicedToArray(_useState7, 2),
91
+ activeIndex = _useState8[0],
92
+ setActiveIndex = _useState8[1];
93
+ var hasEmittedOpen = useRef(false);
94
+ var popoverRef = useRef(null);
95
+ var getCaretRect = useCaretPosition();
96
+ var scope = useDerivedScope();
97
+ var _useEntitySearch = useEntitySearch(activeType, scope),
98
+ items = _useEntitySearch.items,
99
+ loading = _useEntitySearch.loading,
100
+ error = _useEntitySearch.error,
101
+ searchValue = _useEntitySearch.searchValue,
102
+ updateSearchValue = _useEntitySearch.updateSearchValue;
103
+ useEffect(function () {
104
+ if (!allowedTypes.includes(activeType)) {
105
+ setActiveType(defaultType);
106
+ }
107
+ }, [allowedTypes, activeType, defaultType]);
108
+ var positionPopover = useCallback(function () {
109
+ var rect = getCaretRect();
110
+ if (!rect) return;
111
+ var viewportH = window.innerHeight;
112
+ var viewportW = window.innerWidth;
113
+ var openUp = rect.top > viewportH - rect.bottom;
114
+ var left = Math.max(8, Math.min(viewportW - POPOVER_WIDTH - 8, rect.left));
115
+ if (openUp) {
116
+ setPopoverPos({
117
+ bottom: viewportH - rect.top + 4,
118
+ left: left
119
+ });
120
+ } else {
121
+ setPopoverPos({
122
+ top: rect.bottom + 4,
123
+ left: left
124
+ });
125
+ }
126
+ }, [getCaretRect]);
127
+ var close = useCallback(function () {
128
+ setPopoverOpen(false);
129
+ updateSearchValue('');
130
+ hasEmittedOpen.current = false;
131
+ }, [updateSearchValue]);
132
+ var handleTrigger = useCallback(function (trigger) {
133
+ if (allowedTypes.length === 0) {
134
+ if (popoverOpen) close();
135
+ return;
136
+ }
137
+ if (trigger.active) {
138
+ if (!popoverOpen) {
139
+ setPopoverOpen(true);
140
+ positionPopover();
141
+ if (!hasEmittedOpen.current) {
142
+ event(EVENTS.aiChatMentionOpen, {
143
+ default_type: activeType
144
+ });
145
+ hasEmittedOpen.current = true;
146
+ }
147
+ } else {
148
+ positionPopover();
149
+ }
150
+ updateSearchValue(trigger.query);
151
+ } else if (popoverOpen) {
152
+ close();
153
+ }
154
+ }, [allowedTypes.length, popoverOpen, positionPopover, updateSearchValue, activeType, event, close]);
155
+ var insertSelectedItem = useCallback(function (item) {
156
+ var _item$raw$clientId, _item$raw$clientName, _item$raw$projectName, _item$raw$feeId, _item$raw$totalProyec, _item$raw$picture, _item$raw$positionNam, _item$raw$email, _editorRef$current;
157
+ var mention = {
158
+ id: item.id,
159
+ type: item.type,
160
+ label: item.primary,
161
+ metadata: {
162
+ clientId: (_item$raw$clientId = item.raw.clientId) !== null && _item$raw$clientId !== void 0 ? _item$raw$clientId : null,
163
+ clientName: (_item$raw$clientName = item.raw.clientName) !== null && _item$raw$clientName !== void 0 ? _item$raw$clientName : null,
164
+ projectName: (_item$raw$projectName = item.raw.projectName) !== null && _item$raw$projectName !== void 0 ? _item$raw$projectName : null,
165
+ feeId: (_item$raw$feeId = item.raw.feeId) !== null && _item$raw$feeId !== void 0 ? _item$raw$feeId : null,
166
+ totalProyectos: (_item$raw$totalProyec = item.raw.totalProyectos) !== null && _item$raw$totalProyec !== void 0 ? _item$raw$totalProyec : null,
167
+ picture: (_item$raw$picture = item.raw.picture) !== null && _item$raw$picture !== void 0 ? _item$raw$picture : null,
168
+ positionName: (_item$raw$positionNam = item.raw.positionName) !== null && _item$raw$positionNam !== void 0 ? _item$raw$positionNam : null,
169
+ email: (_item$raw$email = item.raw.email) !== null && _item$raw$email !== void 0 ? _item$raw$email : null
170
+ }
171
+ };
172
+ (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 || _editorRef$current.insertMention(mention);
173
+ onMentionAdded === null || onMentionAdded === void 0 || onMentionAdded(mention);
174
+ event(EVENTS.aiChatMentionSelect, {
175
+ result_type: mention.type,
176
+ id: String(mention.id)
177
+ });
178
+ close();
179
+ }, [editorRef, onMentionAdded, event, close]);
180
+ var handleTypeChange = useCallback(function (type) {
181
+ setActiveType(type);
182
+ event(EVENTS.aiChatMentionTypeSwitch, {
183
+ result_type: type
184
+ });
185
+ }, [event]);
186
+ var handleKeyDown = useCallback(function (e) {
187
+ if (!popoverOpen || allowedTypes.length === 0) return false;
188
+ if (e.key === 'Escape') {
189
+ e.preventDefault();
190
+ close();
191
+ return true;
192
+ }
193
+ if ((e.key === 'ArrowRight' || e.key === 'ArrowLeft') && (e.metaKey || e.altKey || e.ctrlKey && !e.shiftKey)) {
194
+ e.preventDefault();
195
+ var idx = allowedTypes.indexOf(activeType);
196
+ var delta = e.key === 'ArrowRight' ? 1 : -1;
197
+ var nextIdx = (idx + delta + allowedTypes.length) % allowedTypes.length;
198
+ handleTypeChange(allowedTypes[nextIdx]);
199
+ return true;
200
+ }
201
+ if (items.length === 0) return false;
202
+ if (e.key === 'ArrowDown') {
203
+ e.preventDefault();
204
+ setActiveIndex(function (prev) {
205
+ return (prev + 1) % items.length;
206
+ });
207
+ return true;
208
+ }
209
+ if (e.key === 'ArrowUp') {
210
+ e.preventDefault();
211
+ setActiveIndex(function (prev) {
212
+ return (prev - 1 + items.length) % items.length;
213
+ });
214
+ return true;
215
+ }
216
+ if (e.key === 'Enter' || e.key === 'Tab') {
217
+ e.preventDefault();
218
+ insertSelectedItem(items[activeIndex]);
219
+ return true;
220
+ }
221
+ return false;
222
+ }, [popoverOpen, items, allowedTypes, activeType, activeIndex, insertSelectedItem, close, handleTypeChange]);
223
+ useEffect(function () {
224
+ if (!popoverOpen) return undefined;
225
+ var handler = function handler() {
226
+ return positionPopover();
227
+ };
228
+ window.addEventListener('scroll', handler, true);
229
+ window.addEventListener('resize', handler);
230
+ return function () {
231
+ window.removeEventListener('scroll', handler, true);
232
+ window.removeEventListener('resize', handler);
233
+ };
234
+ }, [popoverOpen, positionPopover]);
235
+ useEffect(function () {
236
+ if (!popoverOpen) return undefined;
237
+ var handlePointerDownOutside = function handlePointerDownOutside(mouseEvent) {
238
+ var _popoverRef$current;
239
+ var target = mouseEvent.target;
240
+ if (!target) return;
241
+ if ((_popoverRef$current = popoverRef.current) !== null && _popoverRef$current !== void 0 && _popoverRef$current.contains(target)) return;
242
+ close();
243
+ };
244
+ document.addEventListener('mousedown', handlePointerDownOutside);
245
+ return function () {
246
+ return document.removeEventListener('mousedown', handlePointerDownOutside);
247
+ };
248
+ }, [popoverOpen, close]);
249
+ useEffect(function () {
250
+ setActiveIndex(0);
251
+ }, [items.length, activeType]);
252
+ var popoverNode = useMemo(function () {
253
+ if (!popoverOpen) return null;
254
+ return /*#__PURE__*/_jsx(SCMPAnchor, {
255
+ $top: popoverPos.top,
256
+ $bottom: popoverPos.bottom,
257
+ $left: popoverPos.left,
258
+ children: /*#__PURE__*/_jsx(ContextMentionPopover, {
259
+ ref: popoverRef,
260
+ allowedTypes: allowedTypes,
261
+ activeType: activeType,
262
+ onTypeChange: handleTypeChange,
263
+ items: items,
264
+ loading: loading,
265
+ error: error,
266
+ searchValue: searchValue,
267
+ keyboardHint: t('contextMention.keyboardHint', {
268
+ defaultValue: "Alt/Ctrl/Cmd + \u2190/\u2192 cambia de tab"
269
+ }),
270
+ onItemSelected: insertSelectedItem,
271
+ activeIndex: activeIndex,
272
+ onActiveIndexChange: setActiveIndex
273
+ })
274
+ });
275
+ }, [popoverOpen, popoverPos, allowedTypes, activeType, handleTypeChange, items, loading, error, searchValue, insertSelectedItem, activeIndex]);
276
+ return {
277
+ popoverOpen: popoverOpen,
278
+ handleTrigger: handleTrigger,
279
+ handleKeyDown: handleKeyDown,
280
+ popoverNode: popoverNode,
281
+ close: close
282
+ };
283
+ };
284
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIlNDTVBBbmNob3IiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVCIsInVzZUVudGl0eVNlYXJjaCIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJ1c2VDYXJldFBvc2l0aW9uIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJqc3giLCJfanN4IiwiUE9QT1ZFUl9XSURUSCIsInVzZURlcml2ZWRTY29wZSIsIl9yZWYiLCJfY3R4JGNsaWVudCRpZCIsIl9jdHgkY2xpZW50IiwiX2N0eCRlbnRpdHlWYWx1ZXMiLCJfcmVmMiIsIl9jdHgkcHJvamVjdCRpZCIsIl9jdHgkcHJvamVjdCIsIl9jdHgkZW50aXR5VmFsdWVzMiIsIl9jdHgkYWdlbnQkY29ubmVjdG9ycyIsIl9jdHgkYWdlbnQiLCJjdHgiLCJjbGllbnRJZCIsImNsaWVudCIsImlkIiwiZW50aXR5VmFsdWVzIiwicHJvamVjdElkIiwicHJvamVjdCIsIm1jcFNsdWdzS2V5IiwiYWdlbnQiLCJjb25uZWN0b3JzIiwiZmluZCIsImMiLCJncm91cCIsInNsdWdzIiwiam9pbiIsIm1jcFNsdWdzIiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzMiIsIl9jdHgkYWdlbnQyIiwicmF3IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiU2V0IiwiZmlsdGVyIiwicyIsInRyaW0iLCJsZW5ndGgiLCJzb3J0IiwidXNlTWVudGlvblBvcG92ZXIiLCJfcmVmMyIsImVkaXRvclJlZiIsImVuYWJsZWRUeXBlcyIsIm9uTWVudGlvbkFkZGVkIiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJfdXNlTWVudGlvbkFsbG93ZWRUeXAiLCJhbGxvd2VkVHlwZXMiLCJkZWZhdWx0VHlwZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGl2ZVR5cGUiLCJzZXRBY3RpdmVUeXBlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwb3BvdmVyT3BlbiIsInNldFBvcG92ZXJPcGVuIiwiX3VzZVN0YXRlNSIsImxlZnQiLCJfdXNlU3RhdGU2IiwicG9wb3ZlclBvcyIsInNldFBvcG92ZXJQb3MiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJoYXNFbWl0dGVkT3BlbiIsInBvcG92ZXJSZWYiLCJnZXRDYXJldFJlY3QiLCJzY29wZSIsIl91c2VFbnRpdHlTZWFyY2giLCJpdGVtcyIsImxvYWRpbmciLCJlcnJvciIsInNlYXJjaFZhbHVlIiwidXBkYXRlU2VhcmNoVmFsdWUiLCJpbmNsdWRlcyIsInBvc2l0aW9uUG9wb3ZlciIsInJlY3QiLCJ2aWV3cG9ydEgiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsInZpZXdwb3J0VyIsImlubmVyV2lkdGgiLCJvcGVuVXAiLCJ0b3AiLCJib3R0b20iLCJNYXRoIiwibWF4IiwibWluIiwiY2xvc2UiLCJjdXJyZW50IiwiaGFuZGxlVHJpZ2dlciIsInRyaWdnZXIiLCJhY3RpdmUiLCJhaUNoYXRNZW50aW9uT3BlbiIsImRlZmF1bHRfdHlwZSIsInF1ZXJ5IiwiaW5zZXJ0U2VsZWN0ZWRJdGVtIiwiaXRlbSIsIl9pdGVtJHJhdyRjbGllbnRJZCIsIl9pdGVtJHJhdyRjbGllbnROYW1lIiwiX2l0ZW0kcmF3JHByb2plY3ROYW1lIiwiX2l0ZW0kcmF3JGZlZUlkIiwiX2l0ZW0kcmF3JHRvdGFsUHJveWVjIiwiX2l0ZW0kcmF3JHBpY3R1cmUiLCJfaXRlbSRyYXckcG9zaXRpb25OYW0iLCJfaXRlbSRyYXckZW1haWwiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJtZW50aW9uIiwidHlwZSIsImxhYmVsIiwicHJpbWFyeSIsIm1ldGFkYXRhIiwiY2xpZW50TmFtZSIsInByb2plY3ROYW1lIiwiZmVlSWQiLCJ0b3RhbFByb3llY3RvcyIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJlbWFpbCIsImluc2VydE1lbnRpb24iLCJhaUNoYXRNZW50aW9uU2VsZWN0IiwicmVzdWx0X3R5cGUiLCJTdHJpbmciLCJoYW5kbGVUeXBlQ2hhbmdlIiwiYWlDaGF0TWVudGlvblR5cGVTd2l0Y2giLCJoYW5kbGVLZXlEb3duIiwiZSIsImtleSIsInByZXZlbnREZWZhdWx0IiwibWV0YUtleSIsImFsdEtleSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImlkeCIsImluZGV4T2YiLCJkZWx0YSIsIm5leHRJZHgiLCJwcmV2IiwidW5kZWZpbmVkIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlIiwibW91c2VFdmVudCIsIl9wb3BvdmVyUmVmJGN1cnJlbnQiLCJ0YXJnZXQiLCJjb250YWlucyIsImRvY3VtZW50IiwicG9wb3Zlck5vZGUiLCIkdG9wIiwiJGJvdHRvbSIsIiRsZWZ0IiwiY2hpbGRyZW4iLCJyZWYiLCJvblR5cGVDaGFuZ2UiLCJrZXlib2FyZEhpbnQiLCJkZWZhdWx0VmFsdWUiLCJvbkl0ZW1TZWxlY3RlZCIsIm9uQWN0aXZlSW5kZXhDaGFuZ2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvblBvcG92ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleWJvYXJkRXZlbnQsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25FZGl0b3InXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvblBvcG92ZXIsIFNDTVBBbmNob3IgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IEVudGl0eVNlYXJjaFNjb3BlLCB1c2VFbnRpdHlTZWFyY2ggfSBmcm9tICcuL3VzZUVudGl0eVNlYXJjaCdcbmltcG9ydCB7IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMgfSBmcm9tICcuL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMnXG5pbXBvcnQgeyB1c2VDYXJldFBvc2l0aW9uIH0gZnJvbSAnLi91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4vdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24sIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5jb25zdCBQT1BPVkVSX1dJRFRIID0gNDM4XG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyA9IHtcbiAgZWRpdG9yUmVmOiBSZWZPYmplY3Q8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+XG4gIC8qKiBPdmVycmlkZSBkZWwgc2V0IGRlIHRhYnMgcGVybWl0aWRhczsgc2kgbm8gc2UgcGFzYSBzZSBkZXJpdmEgZGVsIGFnZW50LiAqL1xuICBlbmFibGVkVHlwZXM/OiBDb250ZXh0RW50aXR5VHlwZVtdXG4gIC8qKiBDYWxsYmFjayBjdWFuZG8gZWwgdXN1YXJpbyBpbnNlcnRhIHVuYSBtZW50aW9uIHbDrWEgY2xpY2svdGVjbGFkby4gKi9cbiAgb25NZW50aW9uQWRkZWQ/OiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPSB7XG4gIHBvcG92ZXJPcGVuOiBib29sZWFuXG4gIC8qKiBQcm9jZXNhIGVsIHRyaWdnZXIgcHJvdmVuaWVudGUgZGVsIGBDb250ZXh0TWVudGlvbkVkaXRvci5vbklucHV0YC4gKi9cbiAgaGFuZGxlVHJpZ2dlcjogKHRyaWdnZXI6IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nIH0pID0+IHZvaWRcbiAgLyoqXG4gICAqIE1hbmVqbyBkZSB0ZWNsYXMgcmVsYXRpdmFzIGFsIHBvcG92ZXIgKG5hdmVnYWNpw7NuLCBzZWxlY2Npw7NuLCBjYW1iaW8gZGVcbiAgICogdGFiIHkgZXNjYXBlKS4gRGV2dWVsdmUgYHRydWVgIHNpIGNvbnN1bWnDsyBsYSBrZXksIHBhcmEgcXVlIGVsIGNvbnN1bWVyXG4gICAqIHB1ZWRhIGRlY2lkaXIgc2kgc2VndWlyIHByb2Nlc2FuZG8gb3RyYXMgdGVjbGFzIChwLmVqLiBFbnRlciBwYXJhIGVudmlhcikuXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IGJvb2xlYW5cbiAgLyoqIE5vZG8gZGVsIHBvcG92ZXI7IGVsIGNvbnN1bWVyIGRlYmUgcG9ydGFybG8gY29uIGBjcmVhdGVQb3J0YWxgLiAqL1xuICBwb3BvdmVyTm9kZTogUmVhY3ROb2RlIHwgbnVsbFxuICAvKiogQ2llcnJhIGVsIHBvcG92ZXIgeSBsaW1waWEgZWwgcXVlcnkuICovXG4gIGNsb3NlOiAoKSA9PiB2b2lkXG59XG5cbi8qKlxuICogRW5jYXBzdWxhIHRvZGEgbGEgbMOzZ2ljYSBkZWwgcG9wb3ZlciBkZSBALW1lbnRpb25zIHBhcmEgY29uc3VtaXJsYSBkZXNkZVxuICogY29tcG9uZW50ZXMgcXVlIGludGVncmVuIGVsIGBDb250ZXh0TWVudGlvbkVkaXRvcmA6XG4gKlxuICogICAtIGVzdGFkbyBkZWwgcG9wb3ZlciAoYWJpZXJ0bywgcG9zaWNpw7NuLCBhY3RpdmVJbmRleCwgYWN0aXZlVHlwZSlcbiAqICAgLSBmZXRjaCBkZSBlbnRpZGFkZXMgcG9yIHRhYiAoY2xpZW50cyAvIHByb2plY3RzIC8gdGFza3MgLyB1c2VycylcbiAqICAgLSBlbWlzacOzbiBkZSBhbmFseXRpY3MgKGBhaUNoYXRNZW50aW9uT3Blbi9TZWxlY3QvVHlwZVN3aXRjaGApXG4gKiAgIC0gcmVwb3NpY2lvbmFtaWVudG8gZW4gc2Nyb2xsL3Jlc2l6ZVxuICogICAtIHJlc2V0ZW8gZGUgYWN0aXZlSW5kZXggYWwgY2FtYmlhciBpdGVtcy90YWJcbiAqXG4gKiBFbCBjb25zdW1lciBzaWd1ZSBzaWVuZG8gZHVlw7FvIGRlbCBgQ29udGV4dE1lbnRpb25FZGl0b3JgLCBkZWwgc2VuZCwgZGUgbG9zXG4gKiBhdHRhY2htZW50cyB5IGRlbCByZXN0byBkZWwgbGF5b3V0OyBlc3RlIGhvb2sgc8OzbG8gcmVzdWVsdmUgbGEgVVggZGUgbWVudGlvbi5cbiAqL1xuLyoqXG4gKiBEZXJpdmEgZWwgc2NvcGUgKGNsaWVudElkL3Byb2plY3RJZCkgcXVlIGRlYmUgYXBsaWNhcnNlIGEgcmVjZW50cyB5IHNlYXJjaCxcbiAqIGxleWVuZG8gZWwgY29udGV4dG8gZ2xvYmFsIChwcm9qZWN0L2NsaWVudCBzZWxlY2Npb25hZG8gbyBlbnRpdHlWYWx1ZXMgcG9yIFVSTCkuXG4gKlxuICogUmVnbGFzOlxuICogICAtIFNpIGVuIGVsIGNvbnRleHRvIGhheSBgcHJvamVjdElkYCwgbGFzIHRhYnMgYHRhc2tgL2B1c2VyYCBzZSBmaWx0cmFuIHBvciDDqWwuXG4gKiAgIC0gU2kgaGF5IGBjbGllbnRJZGAgKGNvbiBvIHNpbiBwcm9qZWN0SWQpLCBsYXMgcXVlcmllcyBsbyBwcm9wYWdhbi5cbiAqICAgLSBFbCB0YWIgYHByb2plY3RgIHPDs2xvIHVzYSBgY2xpZW50SWRgIChmaWx0cmFyIHByb2plY3RzIHBvciBwcm9qZWN0SWQgcm9tcGVyw61hIGxhIGxpc3RhO1xuICogICAgIGVsIGZpbHRyYWRvIHBvciB0eXBlIGxvIGhhY2UgYHVzZUVudGl0eVNlYXJjaC5idWlsZEZpbHRlcnNGb3JUeXBlYCkuXG4gKlxuICogU2UgcmVzcGV0YSBpbmRlcGVuZGllbnRlbWVudGUgZGUgYGFnZW50LmVudGl0eWAgcGFyYSBjdWJyaXIgY2Fzb3MgZG9uZGUgZWxcbiAqIHVzdWFyaW8gbmF2ZWdhIGRlbnRybyBkZSB1biBwcm95ZWN0by9jbGllbnRlIGF1bnF1ZSBlbCBhZ2VudGUgc2VhICdnbG9iYWwnLlxuICovXG5jb25zdCB1c2VEZXJpdmVkU2NvcGUgPSAoKTogRW50aXR5U2VhcmNoU2NvcGUgPT4ge1xuICBjb25zdCBjdHggPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgY2xpZW50SWQgPSBjdHguY2xpZW50Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5jbGllbnRJZCA/PyBudWxsXG4gIGNvbnN0IHByb2plY3RJZCA9IGN0eC5wcm9qZWN0Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5wcm9qZWN0SWQgPz8gbnVsbFxuICBjb25zdCBtY3BTbHVnc0tleSA9IChjdHguYWdlbnQ/LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJyk/LnNsdWdzID8/IFtdKS5qb2luKCd8JylcblxuICBjb25zdCBtY3BTbHVncyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJhdyA9IGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW11cbiAgICByZXR1cm4gWy4uLm5ldyBTZXQocmF3LmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHR5cGVvZiBzID09PSAnc3RyaW5nJyAmJiBzLnRyaW0oKS5sZW5ndGggPiAwKSldLnNvcnQoKVxuICB9LCBbbWNwU2x1Z3NLZXldKVxuXG4gIHJldHVybiB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPigoKSA9PiAoeyBjbGllbnRJZCwgcHJvamVjdElkLCBtY3BTbHVncyB9KSwgW2NsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzXSlcbn1cblxuZXhwb3J0IGNvbnN0IHVzZU1lbnRpb25Qb3BvdmVyID0gKHtcbiAgZWRpdG9yUmVmLFxuICBlbmFibGVkVHlwZXMsXG4gIG9uTWVudGlvbkFkZGVkLFxufTogVXNlTWVudGlvblBvcG92ZXJPcHRpb25zKTogVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlIH0gPSB1c2VNZW50aW9uQWxsb3dlZFR5cGVzKGVuYWJsZWRUeXBlcylcbiAgY29uc3QgW2FjdGl2ZVR5cGUsIHNldEFjdGl2ZVR5cGVdID0gdXNlU3RhdGU8Q29udGV4dEVudGl0eVR5cGU+KGRlZmF1bHRUeXBlKVxuICBjb25zdCBbcG9wb3Zlck9wZW4sIHNldFBvcG92ZXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcG9wb3ZlclBvcywgc2V0UG9wb3ZlclBvc10gPSB1c2VTdGF0ZTx7IHRvcD86IG51bWJlcjsgYm90dG9tPzogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfT4oeyBsZWZ0OiAwIH0pXG4gIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgaGFzRW1pdHRlZE9wZW4gPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHBvcG92ZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcblxuICBjb25zdCBzY29wZSA9IHVzZURlcml2ZWRTY29wZSgpXG4gIGNvbnN0IHsgaXRlbXMsIGxvYWRpbmcsIGVycm9yLCBzZWFyY2hWYWx1ZSwgdXBkYXRlU2VhcmNoVmFsdWUgfSA9IHVzZUVudGl0eVNlYXJjaChhY3RpdmVUeXBlLCBzY29wZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGFjdGl2ZVR5cGUpKSB7XG4gICAgICBzZXRBY3RpdmVUeXBlKGRlZmF1bHRUeXBlKVxuICAgIH1cbiAgfSwgW2FsbG93ZWRUeXBlcywgYWN0aXZlVHlwZSwgZGVmYXVsdFR5cGVdKVxuXG4gIGNvbnN0IHBvc2l0aW9uUG9wb3ZlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2FyZXRSZWN0KClcbiAgICBpZiAoIXJlY3QpIHJldHVyblxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgY29uc3Qgb3BlblVwID0gcmVjdC50b3AgPiB2aWV3cG9ydEggLSByZWN0LmJvdHRvbVxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbih2aWV3cG9ydFcgLSBQT1BPVkVSX1dJRFRIIC0gOCwgcmVjdC5sZWZ0KSlcbiAgICBpZiAob3BlblVwKSB7XG4gICAgICBzZXRQb3BvdmVyUG9zKHsgYm90dG9tOiB2aWV3cG9ydEggLSByZWN0LnRvcCArIDQsIGxlZnQgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0UG9wb3ZlclBvcyh7IHRvcDogcmVjdC5ib3R0b20gKyA0LCBsZWZ0IH0pXG4gICAgfVxuICB9LCBbZ2V0Q2FyZXRSZWN0XSlcblxuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRQb3BvdmVyT3BlbihmYWxzZSlcbiAgICB1cGRhdGVTZWFyY2hWYWx1ZSgnJylcbiAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW3VwZGF0ZVNlYXJjaFZhbHVlXSlcblxuICBjb25zdCBoYW5kbGVUcmlnZ2VyID0gdXNlQ2FsbGJhY2soXG4gICAgKHRyaWdnZXI6IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nIH0pID0+IHtcbiAgICAgIGlmIChhbGxvd2VkVHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChwb3BvdmVyT3BlbikgY2xvc2UoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHRyaWdnZXIuYWN0aXZlKSB7XG4gICAgICAgIGlmICghcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICBzZXRQb3BvdmVyT3Blbih0cnVlKVxuICAgICAgICAgIHBvc2l0aW9uUG9wb3ZlcigpXG4gICAgICAgICAgaWYgKCFoYXNFbWl0dGVkT3Blbi5jdXJyZW50KSB7XG4gICAgICAgICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvbk9wZW4sIHsgZGVmYXVsdF90eXBlOiBhY3RpdmVUeXBlIH0pXG4gICAgICAgICAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVNlYXJjaFZhbHVlKHRyaWdnZXIucXVlcnkpXG4gICAgICB9IGVsc2UgaWYgKHBvcG92ZXJPcGVuKSB7XG4gICAgICAgIGNsb3NlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthbGxvd2VkVHlwZXMubGVuZ3RoLCBwb3BvdmVyT3BlbiwgcG9zaXRpb25Qb3BvdmVyLCB1cGRhdGVTZWFyY2hWYWx1ZSwgYWN0aXZlVHlwZSwgZXZlbnQsIGNsb3NlXVxuICApXG5cbiAgY29uc3QgaW5zZXJ0U2VsZWN0ZWRJdGVtID0gdXNlQ2FsbGJhY2soXG4gICAgKGl0ZW06IENvbnRleHRNZW50aW9uSXRlbSkgPT4ge1xuICAgICAgY29uc3QgbWVudGlvbjogQ29udGV4dE1lbnRpb24gPSB7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXG4gICAgICAgIGxhYmVsOiBpdGVtLnByaW1hcnksXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgY2xpZW50SWQ6IGl0ZW0ucmF3LmNsaWVudElkID8/IG51bGwsXG4gICAgICAgICAgY2xpZW50TmFtZTogaXRlbS5yYXcuY2xpZW50TmFtZSA/PyBudWxsLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnJhdy5wcm9qZWN0TmFtZSA/PyBudWxsLFxuICAgICAgICAgIGZlZUlkOiBpdGVtLnJhdy5mZWVJZCA/PyBudWxsLFxuICAgICAgICAgIHRvdGFsUHJveWVjdG9zOiBpdGVtLnJhdy50b3RhbFByb3llY3RvcyA/PyBudWxsLFxuICAgICAgICAgIHBpY3R1cmU6IGl0ZW0ucmF3LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgICAgICBwb3NpdGlvbk5hbWU6IGl0ZW0ucmF3LnBvc2l0aW9uTmFtZSA/PyBudWxsLFxuICAgICAgICAgIGVtYWlsOiBpdGVtLnJhdy5lbWFpbCA/PyBudWxsLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydE1lbnRpb24obWVudGlvbilcbiAgICAgIG9uTWVudGlvbkFkZGVkPy4obWVudGlvbilcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uU2VsZWN0LCB7IHJlc3VsdF90eXBlOiBtZW50aW9uLnR5cGUsIGlkOiBTdHJpbmcobWVudGlvbi5pZCkgfSlcbiAgICAgIGNsb3NlKClcbiAgICB9LFxuICAgIFtlZGl0b3JSZWYsIG9uTWVudGlvbkFkZGVkLCBldmVudCwgY2xvc2VdXG4gIClcblxuICBjb25zdCBoYW5kbGVUeXBlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlKSA9PiB7XG4gICAgICBzZXRBY3RpdmVUeXBlKHR5cGUpXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvblR5cGVTd2l0Y2gsIHsgcmVzdWx0X3R5cGU6IHR5cGUgfSlcbiAgICB9LFxuICAgIFtldmVudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pOiBib29sZWFuID0+IHtcbiAgICAgIGlmICghcG9wb3Zlck9wZW4gfHwgYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNsb3NlKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKChlLmtleSA9PT0gJ0Fycm93UmlnaHQnIHx8IGUua2V5ID09PSAnQXJyb3dMZWZ0JykgJiYgKGUubWV0YUtleSB8fCBlLmFsdEtleSB8fCAoZS5jdHJsS2V5ICYmICFlLnNoaWZ0S2V5KSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGNvbnN0IGlkeCA9IGFsbG93ZWRUeXBlcy5pbmRleE9mKGFjdGl2ZVR5cGUpXG4gICAgICAgIGNvbnN0IGRlbHRhID0gZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyA/IDEgOiAtMVxuICAgICAgICBjb25zdCBuZXh0SWR4ID0gKGlkeCArIGRlbHRhICsgYWxsb3dlZFR5cGVzLmxlbmd0aCkgJSBhbGxvd2VkVHlwZXMubGVuZ3RoXG4gICAgICAgIGhhbmRsZVR5cGVDaGFuZ2UoYWxsb3dlZFR5cGVzW25leHRJZHhdKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldiA9PiAocHJldiArIDEpICUgaXRlbXMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYgPT4gKHByZXYgLSAxICsgaXRlbXMubGVuZ3RoKSAlIGl0ZW1zLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGluc2VydFNlbGVjdGVkSXRlbShpdGVtc1thY3RpdmVJbmRleF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxuICAgIFtwb3BvdmVyT3BlbiwgaXRlbXMsIGFsbG93ZWRUeXBlcywgYWN0aXZlVHlwZSwgYWN0aXZlSW5kZXgsIGluc2VydFNlbGVjdGVkSXRlbSwgY2xvc2UsIGhhbmRsZVR5cGVDaGFuZ2VdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25Qb3BvdmVyKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtwb3BvdmVyT3BlbiwgcG9zaXRpb25Qb3BvdmVyXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSA9IChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBtb3VzZUV2ZW50LnRhcmdldCBhcyBOb2RlIHwgbnVsbFxuICAgICAgaWYgKCF0YXJnZXQpIHJldHVyblxuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudD8uY29udGFpbnModGFyZ2V0KSkgcmV0dXJuXG4gICAgICBjbG9zZSgpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gIH0sIFtwb3BvdmVyT3BlbiwgY2xvc2VdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0QWN0aXZlSW5kZXgoMClcbiAgfSwgW2l0ZW1zLmxlbmd0aCwgYWN0aXZlVHlwZV0pXG5cbiAgY29uc3QgcG9wb3Zlck5vZGUgPSB1c2VNZW1vPFJlYWN0Tm9kZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8U0NNUEFuY2hvciAkdG9wPXtwb3BvdmVyUG9zLnRvcH0gJGJvdHRvbT17cG9wb3ZlclBvcy5ib3R0b219ICRsZWZ0PXtwb3BvdmVyUG9zLmxlZnR9PlxuICAgICAgICA8Q29udGV4dE1lbnRpb25Qb3BvdmVyXG4gICAgICAgICAgcmVmPXtwb3BvdmVyUmVmfVxuICAgICAgICAgIGFsbG93ZWRUeXBlcz17YWxsb3dlZFR5cGVzfVxuICAgICAgICAgIGFjdGl2ZVR5cGU9e2FjdGl2ZVR5cGV9XG4gICAgICAgICAgb25UeXBlQ2hhbmdlPXtoYW5kbGVUeXBlQ2hhbmdlfVxuICAgICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBzZWFyY2hWYWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAga2V5Ym9hcmRIaW50PXt0KCdjb250ZXh0TWVudGlvbi5rZXlib2FyZEhpbnQnLCB7XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdBbHQvQ3RybC9DbWQgKyBcXHUyMTkwL1xcdTIxOTIgY2FtYmlhIGRlIHRhYicsXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25JdGVtU2VsZWN0ZWQ9e2luc2VydFNlbGVjdGVkSXRlbX1cbiAgICAgICAgICBhY3RpdmVJbmRleD17YWN0aXZlSW5kZXh9XG4gICAgICAgICAgb25BY3RpdmVJbmRleENoYW5nZT17c2V0QWN0aXZlSW5kZXh9XG4gICAgICAgIC8+XG4gICAgICA8L1NDTVBBbmNob3I+XG4gICAgKVxuICB9LCBbXG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcG9wb3ZlclBvcyxcbiAgICBhbGxvd2VkVHlwZXMsXG4gICAgYWN0aXZlVHlwZSxcbiAgICBoYW5kbGVUeXBlQ2hhbmdlLFxuICAgIGl0ZW1zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgc2VhcmNoVmFsdWUsXG4gICAgaW5zZXJ0U2VsZWN0ZWRJdGVtLFxuICAgIGFjdGl2ZUluZGV4LFxuICBdKVxuXG4gIHJldHVybiB7IHBvcG92ZXJPcGVuLCBoYW5kbGVUcmlnZ2VyLCBoYW5kbGVLZXlEb3duLCBwb3BvdmVyTm9kZSwgY2xvc2UgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQThDQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBRTlHLFNBQVNDLHFCQUFxQixFQUFFQyxVQUFVLFFBQVEsMkNBQTJDO0FBQzdGLFNBQVNDLGdCQUFnQixRQUFRLDJCQUEyQjtBQUM1RCxTQUFTQyxJQUFJLFFBQVEsUUFBUTtBQUM3QjtBQUNBLFNBQTRCQyxlQUFlLFFBQVEsbUJBQW1CO0FBQ3RFLFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyxnQkFBZ0IsUUFB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QUFPO01BQUEsT0FBTUssUUFBUSxDQUFDTixtQkFBbUIsQ0FBQyxXQUFXLEVBQUVDLHdCQUF3QixDQUFDO0lBQUE7RUFDbEYsQ0FBQyxFQUFFLENBQUN6RixXQUFXLEVBQUVtQyxLQUFLLENBQUMsQ0FBQztFQUV4QjFHLFNBQVMsQ0FBQyxZQUFNO0lBQ2RpRixjQUFjLENBQUMsQ0FBQyxDQUFDO0VBQ25CLENBQUMsRUFBRSxDQUFDTSxLQUFLLENBQUNwQyxNQUFNLEVBQUVnQixVQUFVLENBQUMsQ0FBQztFQUU5QixJQUFNbUcsV0FBVyxHQUFHckssT0FBTyxDQUFtQixZQUFNO0lBQ2xELElBQUksQ0FBQ3NFLFdBQVcsRUFBRSxPQUFPLElBQUk7SUFDN0Isb0JBQ0V6RCxJQUFBLENBQUNULFVBQVU7TUFBQ2tLLElBQUksRUFBRTNGLFVBQVUsQ0FBQ3lCLEdBQUk7TUFBQ21FLE9BQU8sRUFBRTVGLFVBQVUsQ0FBQzBCLE1BQU87TUFBQ21FLEtBQUssRUFBRTdGLFVBQVUsQ0FBQ0YsSUFBSztNQUFBZ0csUUFBQSxlQUNuRjVKLElBQUEsQ0FBQ1YscUJBQXFCO1FBQ3BCdUssR0FBRyxFQUFFeEYsVUFBVztRQUNoQnJCLFlBQVksRUFBRUEsWUFBYTtRQUMzQkssVUFBVSxFQUFFQSxVQUFXO1FBQ3ZCeUcsWUFBWSxFQUFFL0IsZ0JBQWlCO1FBQy9CdEQsS0FBSyxFQUFFQSxLQUFNO1FBQ2JDLE9BQU8sRUFBRUEsT0FBUTtRQUNqQkMsS0FBSyxFQUFFQSxLQUFNO1FBQ2JDLFdBQVcsRUFBRUEsV0FBWTtRQUN6Qm1GLFlBQVksRUFBRWxILENBQUMsQ0FBQyw2QkFBNkIsRUFBRTtVQUM3Q21ILFlBQVksRUFBRTtRQUNoQixDQUFDLENBQUU7UUFDSEMsY0FBYyxFQUFFN0Qsa0JBQW1CO1FBQ25DbEMsV0FBVyxFQUFFQSxXQUFZO1FBQ3pCZ0csbUJBQW1CLEVBQUUvRjtNQUFlLENBQ3JDO0lBQUMsQ0FDUSxDQUFDO0VBRWpCLENBQUMsRUFBRSxDQUNEVixXQUFXLEVBQ1hLLFVBQVUsRUFDVmQsWUFBWSxFQUNaSyxVQUFVLEVBQ1YwRSxnQkFBZ0IsRUFDaEJ0RCxLQUFLLEVBQ0xDLE9BQU8sRUFDUEMsS0FBSyxFQUNMQyxXQUFXLEVBQ1h3QixrQkFBa0IsRUFDbEJsQyxXQUFXLENBQ1osQ0FBQztFQUVGLE9BQU87SUFBRVQsV0FBVyxFQUFYQSxXQUFXO0lBQUVxQyxhQUFhLEVBQWJBLGFBQWE7SUFBRW1DLGFBQWEsRUFBYkEsYUFBYTtJQUFFdUIsV0FBVyxFQUFYQSxXQUFXO0lBQUU1RCxLQUFLLEVBQUxBO0VBQU0sQ0FBQztBQUMxRSxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -285,11 +285,11 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
285
285
  }(), [t]);
286
286
  var askMaia = /*#__PURE__*/function () {
287
287
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref3) {
288
- var message, history, projectId, lang, userId, firstName, lastName, companyId, chatId, messageId, clientId, clientName, feeId, agentName, agentId, isWebSearchActive, isDeepSearchActive, attachments, projectName, faqId, agentSuggestionId, agentEntity, _abortControllerRef$c, response, _onErrorRef$current3, _t5;
288
+ var message, history, projectId, lang, userId, firstName, lastName, companyId, chatId, messageId, clientId, clientName, feeId, agentName, agentId, isWebSearchActive, isDeepSearchActive, attachments, projectName, faqId, agentSuggestionId, agentEntity, contextMessage, _abortControllerRef$c, response, _onErrorRef$current3, _t5;
289
289
  return _regeneratorRuntime.wrap(function (_context2) {
290
290
  while (1) switch (_context2.prev = _context2.next) {
291
291
  case 0:
292
- message = _ref3.message, history = _ref3.history, projectId = _ref3.projectId, lang = _ref3.lang, userId = _ref3.userId, firstName = _ref3.firstName, lastName = _ref3.lastName, companyId = _ref3.companyId, chatId = _ref3.chatId, messageId = _ref3.messageId, clientId = _ref3.clientId, clientName = _ref3.clientName, feeId = _ref3.feeId, agentName = _ref3.agentName, agentId = _ref3.agentId, isWebSearchActive = _ref3.isWebSearchActive, isDeepSearchActive = _ref3.isDeepSearchActive, attachments = _ref3.attachments, projectName = _ref3.projectName, faqId = _ref3.faqId, agentSuggestionId = _ref3.agentSuggestionId, agentEntity = _ref3.agentEntity;
292
+ message = _ref3.message, history = _ref3.history, projectId = _ref3.projectId, lang = _ref3.lang, userId = _ref3.userId, firstName = _ref3.firstName, lastName = _ref3.lastName, companyId = _ref3.companyId, chatId = _ref3.chatId, messageId = _ref3.messageId, clientId = _ref3.clientId, clientName = _ref3.clientName, feeId = _ref3.feeId, agentName = _ref3.agentName, agentId = _ref3.agentId, isWebSearchActive = _ref3.isWebSearchActive, isDeepSearchActive = _ref3.isDeepSearchActive, attachments = _ref3.attachments, projectName = _ref3.projectName, faqId = _ref3.faqId, agentSuggestionId = _ref3.agentSuggestionId, agentEntity = _ref3.agentEntity, contextMessage = _ref3.contextMessage;
293
293
  _context2.prev = 1;
294
294
  setLoading(true);
295
295
  setIsWriting(false);
@@ -299,7 +299,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
299
299
 
300
300
  abortControllerRef.current = new AbortController();
301
301
  _context2.next = 2;
302
- return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
302
+ return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
303
303
  input: message,
304
304
  history: history,
305
305
  lang: lang,
@@ -334,6 +334,8 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
334
334
  agentSuggestionId: agentSuggestionId
335
335
  } : {}), agentEntity != null ? {
336
336
  agentEntity: agentEntity
337
+ } : {}), contextMessage ? {
338
+ contextMessage: contextMessage
337
339
  } : {}), (_abortControllerRef$c = abortControllerRef.current) === null || _abortControllerRef$c === void 0 ? void 0 : _abortControllerRef$c.signal);
338
340
  case 2:
339
341
  response = _context2.sent;
@@ -420,4 +422,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
420
422
  handleSSEStream: handleSSEStream // Exponer para poder usarlo en continue-thread
421
423
  };
422
424
  };
423
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJfcmVmIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RhcnRXcml0aW5nIiwib25TdG9wIiwib25FcnJvciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJkYXRhIiwic2V0RGF0YSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNMb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJsb2FkaW5nTWVzc2FnZSIsInNldExvYWRpbmdNZXNzYWdlIiwiYWJvcnRDb250cm9sbGVyUmVmIiwiaXNTdG9wcGVkUmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfZGF0YSRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsIl9vbkVycm9yUmVmJGN1cnJlbnQiLCJwZW5kaW5nQ29udGVudCIsInJhZklkIiwiZW1pdFRocm90dGxlZCIsImZsdXNoUGVuZGluZyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsIl9kYXRhIiwiX29uU3RhcnRXcml0aW5nUmVmJGN1Iiwibm9kZU1lc3NhZ2UiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiYXR0YWNobWVudHMiLCJzdWdnZXN0aW9ucyIsImFnZW50SWRSYXciLCJjb21wbGV0ZWRBZ2VudElkIiwiX29uRXJyb3JSZWYkY3VycmVudDIiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiY29udGVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdTIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsImNhbmNlbCIsImFicnVwdCIsInJlYWQiLCJzZW50IiwiZGVjb2RlIiwic3RyZWFtIiwic3BsaXQiLCJwb3AiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInMiLCJuIiwidHJpbSIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3RfcmVwbHkiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJTdHJpbmciLCJjb25zb2xlIiwiZXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsImFnZW50RW50aXR5IiwiX2Fib3J0Q29udHJvbGxlclJlZiRjIiwiX29uRXJyb3JSZWYkY3VycmVudDMiLCJfdDUiLCJfY29udGV4dDIiLCJBYm9ydENvbnRyb2xsZXIiLCJPcmNoZXN0cmF0b3IiLCJvcmNoZXN0cmF0b3IiLCJfb2JqZWN0U3ByZWFkIiwiaW5wdXQiLCJzaWduYWwiLCJfeDIiLCJzdG9wU3RyZWFtaW5nIiwiX29uU3RvcFJlZiRjdXJyZW50IiwiYWJvcnQiLCJhYm9ydFN0cmVhbVNpbGVudGx5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcyB9IGZyb20gJy4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLmludGVyZmFjZSdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxufTogVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2UsIHNldExvYWRpbmdNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlclJlZiA9IHVzZVJlZjxBYm9ydENvbnRyb2xsZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1N0b3BwZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyByQUYtdGhyb3R0bGU6IGV2aXRhIGVtaXRpciBvblN0cmVhbVVwZGF0ZSBtw6FzIGRlIHVuYSB2ZXogcG9yIGZyYW1lLlxuICAgICAgLy8gQWN1bXVsYSBlbCDDumx0aW1vIHZhbG9yIHkgbG8gbGliZXJhIGVuIGVsIHByw7N4aW1vIHJlcXVlc3RBbmltYXRpb25GcmFtZS5cbiAgICAgIC8vIE5vdGE6IG5vIHRvY2Ftb3MgZWwgc3RhdGUgYGRhdGFgIGVuIGVsIGhvdCBwYXRoIChzb2xvIHNlIGFjdHVhbGl6YSBlblxuICAgICAgLy8gYGNvbXBsZXRlYC9yZXNldHMpIHBhcmEgbm8gcmUtcmVuZGVyaXphciBhIGxvcyBjb25zdW1pZG9yZXMgZGVsIGhvb2tcbiAgICAgIC8vIGVuIGNhZGEgZnJhbWU7IGVsIHRleHRvIGVuIHZpdm8gdmlhamEgcG9yIGVsIHN0cmVhbWluZ1N0b3JlLlxuICAgICAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSByZXR1cm5cbiAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJhZklkID0gbnVsbFxuICAgICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpXG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gICAgICAgIGlmICghcmVhZGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICAgICAgICBsZXQgYnVmZmVyID0gJydcbiAgICAgICAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgICAgIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgICAgICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcblxuICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Rva2VuJzpcbiAgICAgICAgICAgICAgICAgIGlmICghaGFzU3RhcnRlZFdyaXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZSh0KCdjaGF0LndyaXRpbmcnKSlcbiAgICAgICAgICAgICAgICAgICAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudD8uKClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29udGVudCArPSBkYXRhLmNvbnRlbnRcbiAgICAgICAgICAgICAgICAgIGVtaXRUaHJvdHRsZWQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICAgICAgLy8gU2kgZWwgZXZlbnRvIG5vZGUgdGllbmUgdW4gbWVuc2FqZSwgYWN0dWFsaXphcmxvIHBhcmEgbW9zdHJhcmxvIGVuIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubWVzc2FnZSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBc2VndXJhciBxdWUgaXNMb2FkaW5nIGVzdMOpIGVuIHRydWUgcGFyYSBtb3N0cmFyIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIC8vIE1vc3RyYXIgbm9tYnJlIHNvbG8gcGFyYSBjcmVhdGVfdGFzayAvIGNsb25lX3Rhc2ssIGVsIHJlc3RvIG11ZXN0cmEgZ2Vuw6lyaWNvXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lc3NhZ2UuaW5jbHVkZXMoJ2NyZWF0ZV90YXNrJykgfHwgZGF0YS5tZXNzYWdlLmluY2x1ZGVzKCdjbG9uZV90YXNrJylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZGF0YS5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJylcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2Uobm9kZU1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gZGF0YS5jb250ZW50IHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlcyA9IGRhdGEuc291cmNlcyB8fCBudWxsXG4gICAgICAgICAgICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSBkYXRhLm1lbW9yeV9zZXNzaW9uX2lkIHx8ICcnXG4gICAgICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZGF0YS5hdHRhY2htZW50cykgPyBkYXRhLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgICAgICAgICAgICAgbGV0IHN1Z2dlc3Rpb25zID0gbnVsbFxuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyA9IGRhdGEuc3VnZ2VzdF9yZXBseVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gZGF0YS5zdWdnZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGRhdGEuYWdlbnRfaWQgPz8gZGF0YS5hZ2VudElkXG4gICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXREYXRhKGZpbmFsQ29udGVudClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gc2UgY29tcGxldGFcbiAgICAgICAgICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihcbiAgICAgICAgICAgICAgICAgICAgZmluYWxDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VzLFxuICAgICAgICAgICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkQWdlbnRJZFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzpcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBzZSByZXF1aWVyZSBhcHJvYmFjacOzblxuICAgICAgICAgICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQ/LihkYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBoYXkgZXJyb3JcbiAgICAgICAgICAgICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBvbkVycm9yIHNpIG5vIGZ1ZSB1biBzdG9wIGludGVuY2lvbmFsXG4gICAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIFt0XVxuICApXG5cbiAgY29uc3QgYXNrTWFpYSA9IGFzeW5jICh7XG4gICAgbWVzc2FnZSxcbiAgICBoaXN0b3J5LFxuICAgIHByb2plY3RJZCxcbiAgICBsYW5nLFxuICAgIHVzZXJJZCxcbiAgICBmaXJzdE5hbWUsXG4gICAgbGFzdE5hbWUsXG4gICAgY29tcGFueUlkLFxuICAgIGNoYXRJZCxcbiAgICBtZXNzYWdlSWQsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50TmFtZSxcbiAgICBmZWVJZCxcbiAgICBhZ2VudE5hbWUsXG4gICAgYWdlbnRJZCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgYXR0YWNobWVudHMsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgZmFxSWQsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQsXG4gICAgYWdlbnRFbnRpdHksXG4gIH06IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBoaXN0b3J5OiBDaGF0SGlzdG9yeVtdXG4gICAgcHJvamVjdElkOiBudW1iZXIgfCBudWxsXG4gICAgbGFuZzogc3RyaW5nXG4gICAgdXNlcklkOiBzdHJpbmdcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgICBsYXN0TmFtZT86IHN0cmluZ1xuICAgIGNvbXBhbnlJZDogc3RyaW5nXG4gICAgY2hhdElkOiBzdHJpbmdcbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGNsaWVudElkPzogbnVtYmVyXG4gICAgY2xpZW50TmFtZT86IHN0cmluZ1xuICAgIGZlZUlkPzogbnVtYmVyXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldERhdGEobnVsbClcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlIC8vIFJlc2V0ZWFyIGZsYWcgYWwgaW5pY2lhciBudWV2YSBwZXRpY2nDs25cblxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5vcmNoZXN0cmF0b3IoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dDogbWVzc2FnZSxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIC4uLihmaXJzdE5hbWUgPyB7IGZpcnN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihsYXN0TmFtZSA/IHsgbGFzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICBjb21wYW55SWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAuLi4oZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQgfSA6IHt9KSxcbiAgICAgICAgICBhZ2VudE5hbWUsXG4gICAgICAgICAgYWdlbnRJZCxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCA/IHsgcHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgIC4uLihwcm9qZWN0TmFtZSA/IHsgcHJvamVjdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50TmFtZSA/IHsgY2xpZW50TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50RW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5IH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50Py5zaWduYWxcbiAgICAgIClcblxuICAgICAgYXdhaXQgaGFuZGxlU1NFU3RyZWFtKHJlc3BvbnNlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaSBmdWUgdW4gYWJvcnQgaW50ZW5jaW9uYWwgKHN0b3AgbWFudWFsIG8gY2FtYmlvIGRlIGNoYXQpLCBubyBkaXNwYXJhciBvbkVycm9yXG4gICAgICAvLyBwb3JxdWUgZXNvIGluc2VydGEgdW4gXCJtZW5zYWplIGRlIGVycm9yXCIgZW4gZWwgY2hhdCBhbCBxdWUgYWNhYmFtb3MgZGUgbmF2ZWdhci5cbiAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgfVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdG9wU3RyZWFtaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKipcbiAgICogQWJvcnRhIGVsIHN0cmVhbSBlbiBjdXJzbyAoc2kgZXhpc3RlKSBzaW4gZGlzcGFyYXIgYG9uU3RvcGAuXG4gICAqIMOac2VsbyBlbiBjYXNvcyBkb25kZSBubyBxdWVyZW1vcyBhZ3JlZ2FyIGVsIG1lbnNhamUgZGUgXCJjYW5jZWxhZG9cIlxuICAgKiAocG9yIGVqZW1wbG8sIGFsIGNhbWJpYXIgZGUgY2hhdCkuXG4gICAqL1xuICBjb25zdCBhYm9ydFN0cmVhbVNpbGVudGx5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQ2xlYW51cCBhbCBkZXNtb250YXI6IHNpIHF1ZWRhIHVuIHN0cmVhbSBhY3Rpdm8sIGFib3J0YXJsbyBwYXJhIGV2aXRhclxuICAvLyBxdWUgaW50ZW50ZSBhY3R1YWxpemFyIGVzdGFkbyBlbiB1biBjb21wb25lbnRlIHlhIGRlc21vbnRhZG8gKGZ1Z2FzIGRlXG4gIC8vIG1lbW9yaWEgeSB3YXJuaW5ncykuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RGF0YShudWxsKVxuICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc2tNYWlhLFxuICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgIGlzTG9hZGluZyxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgcmVzZXQsXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICAgIGhhbmRsZVNTRVN0cmVhbSwgLy8gRXhwb25lciBwYXJhIHBvZGVyIHVzYXJsbyBlbiBjb250aW51ZS10aHJlYWRcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUl0QyxTQUFTQyxRQUFRLFFBQVEsd0JBQXdCO0FBRWpELE9BQU8sSUFBTUMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBQUMsSUFBQSxFQU9BO0VBQUEsSUFOaENDLGNBQWMsR0FBQUQsSUFBQSxDQUFkQyxjQUFjO0lBQ2RDLGNBQWMsR0FBQUYsSUFBQSxDQUFkRSxjQUFjO0lBQ2RDLGNBQWMsR0FBQUgsSUFBQSxDQUFkRyxjQUFjO0lBQ2RDLE1BQU0sR0FBQUosSUFBQSxDQUFOSSxNQUFNO0lBQ05DLE9BQU8sR0FBQUwsSUFBQSxDQUFQSyxPQUFPO0lBQ1BDLGtCQUFrQixHQUFBTixJQUFBLENB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
425
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJfcmVmIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RhcnRXcml0aW5nIiwib25TdG9wIiwib25FcnJvciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJkYXRhIiwic2V0RGF0YSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNMb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJsb2FkaW5nTWVzc2FnZSIsInNldExvYWRpbmdNZXNzYWdlIiwiYWJvcnRDb250cm9sbGVyUmVmIiwiaXNTdG9wcGVkUmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfZGF0YSRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsIl9vbkVycm9yUmVmJGN1cnJlbnQiLCJwZW5kaW5nQ29udGVudCIsInJhZklkIiwiZW1pdFRocm90dGxlZCIsImZsdXNoUGVuZGluZyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsIl9kYXRhIiwiX29uU3RhcnRXcml0aW5nUmVmJGN1Iiwibm9kZU1lc3NhZ2UiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiYXR0YWNobWVudHMiLCJzdWdnZXN0aW9ucyIsImFnZW50SWRSYXciLCJjb21wbGV0ZWRBZ2VudElkIiwiX29uRXJyb3JSZWYkY3VycmVudDIiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiY29udGVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdTIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsImNhbmNlbCIsImFicnVwdCIsInJlYWQiLCJzZW50IiwiZGVjb2RlIiwic3RyZWFtIiwic3BsaXQiLCJwb3AiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInMiLCJuIiwidHJpbSIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3RfcmVwbHkiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJTdHJpbmciLCJjb25zb2xlIiwiZXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsImFnZW50RW50aXR5IiwiY29udGV4dE1lc3NhZ2UiLCJfYWJvcnRDb250cm9sbGVyUmVmJGMiLCJfb25FcnJvclJlZiRjdXJyZW50MyIsIl90NSIsIl9jb250ZXh0MiIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsIl9vYmplY3RTcHJlYWQiLCJpbnB1dCIsInNpZ25hbCIsIl94MiIsInN0b3BTdHJlYW1pbmciLCJfb25TdG9wUmVmJGN1cnJlbnQiLCJhYm9ydCIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJyZXNldCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VPcmNoZXN0cmF0b3JTdHJlYW0vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnN0YW50LWNvbmRpdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29udGludWUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgQ2hhdEhpc3RvcnkgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgQWdlbnRFbnRpdHkgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcyB9IGZyb20gJy4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLmludGVyZmFjZSdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxufTogVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2UsIHNldExvYWRpbmdNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlclJlZiA9IHVzZVJlZjxBYm9ydENvbnRyb2xsZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1N0b3BwZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyByQUYtdGhyb3R0bGU6IGV2aXRhIGVtaXRpciBvblN0cmVhbVVwZGF0ZSBtw6FzIGRlIHVuYSB2ZXogcG9yIGZyYW1lLlxuICAgICAgLy8gQWN1bXVsYSBlbCDDumx0aW1vIHZhbG9yIHkgbG8gbGliZXJhIGVuIGVsIHByw7N4aW1vIHJlcXVlc3RBbmltYXRpb25GcmFtZS5cbiAgICAgIC8vIE5vdGE6IG5vIHRvY2Ftb3MgZWwgc3RhdGUgYGRhdGFgIGVuIGVsIGhvdCBwYXRoIChzb2xvIHNlIGFjdHVhbGl6YSBlblxuICAgICAgLy8gYGNvbXBsZXRlYC9yZXNldHMpIHBhcmEgbm8gcmUtcmVuZGVyaXphciBhIGxvcyBjb25zdW1pZG9yZXMgZGVsIGhvb2tcbiAgICAgIC8vIGVuIGNhZGEgZnJhbWU7IGVsIHRleHRvIGVuIHZpdm8gdmlhamEgcG9yIGVsIHN0cmVhbWluZ1N0b3JlLlxuICAgICAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSByZXR1cm5cbiAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJhZklkID0gbnVsbFxuICAgICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpXG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gICAgICAgIGlmICghcmVhZGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICAgICAgICBsZXQgYnVmZmVyID0gJydcbiAgICAgICAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgICAgIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgICAgICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcblxuICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Rva2VuJzpcbiAgICAgICAgICAgICAgICAgIGlmICghaGFzU3RhcnRlZFdyaXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZSh0KCdjaGF0LndyaXRpbmcnKSlcbiAgICAgICAgICAgICAgICAgICAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudD8uKClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29udGVudCArPSBkYXRhLmNvbnRlbnRcbiAgICAgICAgICAgICAgICAgIGVtaXRUaHJvdHRsZWQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICAgICAgLy8gU2kgZWwgZXZlbnRvIG5vZGUgdGllbmUgdW4gbWVuc2FqZSwgYWN0dWFsaXphcmxvIHBhcmEgbW9zdHJhcmxvIGVuIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubWVzc2FnZSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBc2VndXJhciBxdWUgaXNMb2FkaW5nIGVzdMOpIGVuIHRydWUgcGFyYSBtb3N0cmFyIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIC8vIE1vc3RyYXIgbm9tYnJlIHNvbG8gcGFyYSBjcmVhdGVfdGFzayAvIGNsb25lX3Rhc2ssIGVsIHJlc3RvIG11ZXN0cmEgZ2Vuw6lyaWNvXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lc3NhZ2UuaW5jbHVkZXMoJ2NyZWF0ZV90YXNrJykgfHwgZGF0YS5tZXNzYWdlLmluY2x1ZGVzKCdjbG9uZV90YXNrJylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZGF0YS5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJylcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2Uobm9kZU1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gZGF0YS5jb250ZW50IHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlcyA9IGRhdGEuc291cmNlcyB8fCBudWxsXG4gICAgICAgICAgICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSBkYXRhLm1lbW9yeV9zZXNzaW9uX2lkIHx8ICcnXG4gICAgICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZGF0YS5hdHRhY2htZW50cykgPyBkYXRhLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgICAgICAgICAgICAgbGV0IHN1Z2dlc3Rpb25zID0gbnVsbFxuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyA9IGRhdGEuc3VnZ2VzdF9yZXBseVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gZGF0YS5zdWdnZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGRhdGEuYWdlbnRfaWQgPz8gZGF0YS5hZ2VudElkXG4gICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXREYXRhKGZpbmFsQ29udGVudClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gc2UgY29tcGxldGFcbiAgICAgICAgICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihcbiAgICAgICAgICAgICAgICAgICAgZmluYWxDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VzLFxuICAgICAgICAgICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkQWdlbnRJZFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzpcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBzZSByZXF1aWVyZSBhcHJvYmFjacOzblxuICAgICAgICAgICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQ/LihkYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBoYXkgZXJyb3JcbiAgICAgICAgICAgICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBvbkVycm9yIHNpIG5vIGZ1ZSB1biBzdG9wIGludGVuY2lvbmFsXG4gICAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIFt0XVxuICApXG5cbiAgY29uc3QgYXNrTWFpYSA9IGFzeW5jICh7XG4gICAgbWVzc2FnZSxcbiAgICBoaXN0b3J5LFxuICAgIHByb2plY3RJZCxcbiAgICBsYW5nLFxuICAgIHVzZXJJZCxcbiAgICBmaXJzdE5hbWUsXG4gICAgbGFzdE5hbWUsXG4gICAgY29tcGFueUlkLFxuICAgIGNoYXRJZCxcbiAgICBtZXNzYWdlSWQsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50TmFtZSxcbiAgICBmZWVJZCxcbiAgICBhZ2VudE5hbWUsXG4gICAgYWdlbnRJZCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgYXR0YWNobWVudHMsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgZmFxSWQsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQsXG4gICAgYWdlbnRFbnRpdHksXG4gICAgY29udGV4dE1lc3NhZ2UsXG4gIH06IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBoaXN0b3J5OiBDaGF0SGlzdG9yeVtdXG4gICAgcHJvamVjdElkOiBudW1iZXIgfCBudWxsXG4gICAgbGFuZzogc3RyaW5nXG4gICAgdXNlcklkOiBzdHJpbmdcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgICBsYXN0TmFtZT86IHN0cmluZ1xuICAgIGNvbXBhbnlJZDogc3RyaW5nXG4gICAgY2hhdElkOiBzdHJpbmdcbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGNsaWVudElkPzogbnVtYmVyXG4gICAgY2xpZW50TmFtZT86IHN0cmluZ1xuICAgIGZlZUlkPzogbnVtYmVyXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICAgIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXREYXRhKG51bGwpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZSAvLyBSZXNldGVhciBmbGFnIGFsIGluaWNpYXIgbnVldmEgcGV0aWNpw7NuXG5cbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yKFxuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQ6IG1lc3NhZ2UsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBsYW5nLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICAuLi4oZmlyc3ROYW1lID8geyBmaXJzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4obGFzdE5hbWUgPyB7IGxhc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgY29tcGFueUlkLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgLi4uKGZlZUlkICE9IG51bGwgPyB7IGZlZUlkIH0gOiB7fSksXG4gICAgICAgICAgYWdlbnROYW1lLFxuICAgICAgICAgIGFnZW50SWQsXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIC4uLihwcm9qZWN0SWQgPyB7IHByb2plY3RJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocHJvamVjdE5hbWUgPyB7IHByb2plY3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudE5hbWUgPyB7IGNsaWVudE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudEVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eSB9IDoge30pLFxuICAgICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQ/LnNpZ25hbFxuICAgICAgKVxuXG4gICAgICBhd2FpdCBoYW5kbGVTU0VTdHJlYW0ocmVzcG9uc2UpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFNpIGZ1ZSB1biBhYm9ydCBpbnRlbmNpb25hbCAoc3RvcCBtYW51YWwgbyBjYW1iaW8gZGUgY2hhdCksIG5vIGRpc3BhcmFyIG9uRXJyb3JcbiAgICAgIC8vIHBvcnF1ZSBlc28gaW5zZXJ0YSB1biBcIm1lbnNhamUgZGUgZXJyb3JcIiBlbiBlbCBjaGF0IGFsIHF1ZSBhY2FiYW1vcyBkZSBuYXZlZ2FyLlxuICAgICAgaWYgKCFpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICB9XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0b3BTdHJlYW1pbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgICBvblN0b3BSZWYuY3VycmVudD8uKClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBBYm9ydGEgZWwgc3RyZWFtIGVuIGN1cnNvIChzaSBleGlzdGUpIHNpbiBkaXNwYXJhciBgb25TdG9wYC5cbiAgICogw5pzZWxvIGVuIGNhc29zIGRvbmRlIG5vIHF1ZXJlbW9zIGFncmVnYXIgZWwgbWVuc2FqZSBkZSBcImNhbmNlbGFkb1wiXG4gICAqIChwb3IgZWplbXBsbywgYWwgY2FtYmlhciBkZSBjaGF0KS5cbiAgICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBDbGVhbnVwIGFsIGRlc21vbnRhcjogc2kgcXVlZGEgdW4gc3RyZWFtIGFjdGl2bywgYWJvcnRhcmxvIHBhcmEgZXZpdGFyXG4gIC8vIHF1ZSBpbnRlbnRlIGFjdHVhbGl6YXIgZXN0YWRvIGVuIHVuIGNvbXBvbmVudGUgeWEgZGVzbW9udGFkbyAoZnVnYXMgZGVcbiAgLy8gbWVtb3JpYSB5IHdhcm5pbmdzKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICBzZXREYXRhKG51bGwpXG4gICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFza01haWEsXG4gICAgcmVzcG9uc2U6IGRhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICByZXNldCxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gICAgaGFuZGxlU1NFU3RyZWFtLCAvLyBFeHBvbmVyIHBhcmEgcG9kZXIgdXNhcmxvIGVuIGNvbnRpbnVlLXRocmVhZFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUU5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBS3RDLFNBQVNDLFFBQVEsUUFBUSx3QkFBd0I7QUFFakQsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFBQyxJQUFBLEVBT0E7RUFB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