@workflow/web-shared 5.0.0-beta.7 → 5.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/error-boundary.js +1 -1
- package/dist/components/event-list-view.d.ts +12 -0
- package/dist/components/event-list-view.d.ts.map +1 -1
- package/dist/components/event-list-view.js +26 -13
- package/dist/components/hook-actions.js +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -1
- package/dist/components/new-trace-viewer/components/copy-button.js +2 -2
- package/dist/components/new-trace-viewer/components/event-list.d.ts +3 -1
- package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/event-list.js +8 -7
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +1 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +1 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +1 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +1 -1
- package/dist/components/new-trace-viewer/components/split-pane.js +1 -1
- package/dist/components/new-trace-viewer/components/timeline.d.ts +4 -1
- package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/timeline.js +6 -5
- package/dist/components/new-trace-viewer/context.js +1 -1
- package/dist/components/new-trace-viewer/detail-panel.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/detail-panel.js +3 -2
- package/dist/components/new-trace-viewer/icons.js +1 -1
- package/dist/components/new-trace-viewer/search.d.ts +19 -0
- package/dist/components/new-trace-viewer/search.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/search.js +134 -0
- package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/trace-viewer.js +62 -35
- package/dist/components/new-trace-viewer/types.js +1 -1
- package/dist/components/new-trace-viewer/util/constants.js +1 -1
- package/dist/components/new-trace-viewer/utils.js +1 -1
- package/dist/components/run-trace-view.js +1 -1
- package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/components/sidebar/attribute-panel.js +99 -73
- package/dist/components/sidebar/conversation-view.js +1 -1
- package/dist/components/sidebar/copyable-data-block.d.ts +1 -0
- package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
- package/dist/components/sidebar/copyable-data-block.js +16 -15
- package/dist/components/sidebar/detail-card.d.ts +5 -6
- package/dist/components/sidebar/detail-card.d.ts.map +1 -1
- package/dist/components/sidebar/detail-card.js +32 -16
- package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
- package/dist/components/sidebar/entity-detail-panel.js +6 -3
- package/dist/components/sidebar/events-list.d.ts.map +1 -1
- package/dist/components/sidebar/events-list.js +21 -15
- package/dist/components/sidebar/resolve-hook-modal.js +1 -1
- package/dist/components/sidebar/sidebar-data-context.js +1 -1
- package/dist/components/stream-viewer.js +1 -1
- package/dist/components/trace-viewer/components/map.js +1 -1
- package/dist/components/trace-viewer/components/markers.js +1 -1
- package/dist/components/trace-viewer/components/node.js +1 -1
- package/dist/components/trace-viewer/components/search-input.js +1 -1
- package/dist/components/trace-viewer/components/search.js +1 -1
- package/dist/components/trace-viewer/components/span-content.js +1 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js +1 -1
- package/dist/components/trace-viewer/components/span-segments.js +1 -1
- package/dist/components/trace-viewer/components/span-strategies.js +1 -1
- package/dist/components/trace-viewer/components/ui.js +1 -1
- package/dist/components/trace-viewer/components/zoom-button.js +1 -1
- package/dist/components/trace-viewer/components/zoom-icons.js +1 -1
- package/dist/components/trace-viewer/context.js +1 -1
- package/dist/components/trace-viewer/index.js +1 -1
- package/dist/components/trace-viewer/trace-viewer.js +1 -1
- package/dist/components/trace-viewer/types.js +1 -1
- package/dist/components/trace-viewer/util/constants.js +1 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js +1 -1
- package/dist/components/trace-viewer/util/timing.js +1 -1
- package/dist/components/trace-viewer/util/tree.js +1 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js +1 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js +1 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js +1 -1
- package/dist/components/trace-viewer/worker.js +1 -1
- package/dist/components/trace-viewer-new.js +1 -1
- package/dist/components/ui/alert.js +1 -1
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +46 -0
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/data-inspector.d.ts +1 -0
- package/dist/components/ui/data-inspector.d.ts.map +1 -1
- package/dist/components/ui/data-inspector.js +4 -9
- package/dist/components/ui/decrypt-button.js +1 -1
- package/dist/components/ui/error-card.js +1 -1
- package/dist/components/ui/error-stack-block.d.ts.map +1 -1
- package/dist/components/ui/error-stack-block.js +4 -18
- package/dist/components/ui/icon-button.d.ts +13 -0
- package/dist/components/ui/icon-button.d.ts.map +1 -0
- package/dist/components/ui/icon-button.js +29 -0
- package/dist/components/ui/inspector-theme.js +1 -1
- package/dist/components/ui/load-more-button.js +1 -1
- package/dist/components/ui/menu-dropdown.js +1 -1
- package/dist/components/ui/skeleton.js +1 -1
- package/dist/components/ui/spinner.js +1 -1
- package/dist/components/ui/timestamp-tooltip.js +1 -1
- package/dist/components/workflow-trace-view.js +1 -1
- package/dist/components/workflow-traces/event-colors.js +1 -1
- package/dist/components/workflow-traces/trace-colors.js +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +1 -1
- package/dist/components/workflow-traces/trace-time-utils.js +1 -1
- package/dist/hooks/use-dark-mode.js +1 -1
- package/dist/hooks/use-reduced-motion.js +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/event-analysis.js +1 -1
- package/dist/lib/event-materialization.js +1 -1
- package/dist/lib/hydration.js +1 -1
- package/dist/lib/stream-display.js +1 -1
- package/dist/lib/toast.js +1 -1
- package/dist/lib/trace-builder.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/styles.css +5 -0
- package/package.json +5 -5
- package/src/components/event-list-view.tsx +29 -13
- package/src/components/index.ts +1 -0
- package/src/components/new-trace-viewer/components/copy-button.tsx +1 -1
- package/src/components/new-trace-viewer/components/event-list.tsx +17 -6
- package/src/components/new-trace-viewer/components/timeline.tsx +11 -2
- package/src/components/new-trace-viewer/detail-panel.tsx +3 -6
- package/src/components/new-trace-viewer/search.ts +178 -0
- package/src/components/new-trace-viewer/trace-viewer.tsx +123 -89
- package/src/components/sidebar/attribute-panel.tsx +212 -235
- package/src/components/sidebar/copyable-data-block.tsx +49 -27
- package/src/components/sidebar/detail-card.tsx +119 -41
- package/src/components/sidebar/entity-detail-panel.tsx +28 -28
- package/src/components/sidebar/events-list.tsx +51 -79
- package/src/components/ui/button.tsx +68 -0
- package/src/components/ui/data-inspector.tsx +9 -18
- package/src/components/ui/error-stack-block.tsx +7 -26
- package/src/components/ui/icon-button.tsx +57 -0
- package/src/styles.css +5 -0
- package/dist/components/error-boundary.js.map +0 -1
- package/dist/components/event-list-view.js.map +0 -1
- package/dist/components/hook-actions.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/new-trace-viewer/components/copy-button.js.map +0 -1
- package/dist/components/new-trace-viewer/components/event-list.js.map +0 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js.map +0 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js.map +0 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js.map +0 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js.map +0 -1
- package/dist/components/new-trace-viewer/components/split-pane.js.map +0 -1
- package/dist/components/new-trace-viewer/components/timeline.js.map +0 -1
- package/dist/components/new-trace-viewer/context.js.map +0 -1
- package/dist/components/new-trace-viewer/detail-panel.js.map +0 -1
- package/dist/components/new-trace-viewer/icons.js.map +0 -1
- package/dist/components/new-trace-viewer/trace-viewer.js.map +0 -1
- package/dist/components/new-trace-viewer/types.js.map +0 -1
- package/dist/components/new-trace-viewer/util/constants.js.map +0 -1
- package/dist/components/new-trace-viewer/utils.js.map +0 -1
- package/dist/components/run-trace-view.js.map +0 -1
- package/dist/components/sidebar/attribute-panel.js.map +0 -1
- package/dist/components/sidebar/conversation-view.js.map +0 -1
- package/dist/components/sidebar/copyable-data-block.js.map +0 -1
- package/dist/components/sidebar/detail-card.js.map +0 -1
- package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
- package/dist/components/sidebar/events-list.js.map +0 -1
- package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
- package/dist/components/sidebar/sidebar-data-context.js.map +0 -1
- package/dist/components/stream-viewer.js.map +0 -1
- package/dist/components/trace-viewer/components/map.js.map +0 -1
- package/dist/components/trace-viewer/components/markers.js.map +0 -1
- package/dist/components/trace-viewer/components/node.js.map +0 -1
- package/dist/components/trace-viewer/components/search-input.js.map +0 -1
- package/dist/components/trace-viewer/components/search.js.map +0 -1
- package/dist/components/trace-viewer/components/span-content.js.map +0 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
- package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
- package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
- package/dist/components/trace-viewer/components/ui.js.map +0 -1
- package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
- package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
- package/dist/components/trace-viewer/context.js.map +0 -1
- package/dist/components/trace-viewer/index.js.map +0 -1
- package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
- package/dist/components/trace-viewer/types.js.map +0 -1
- package/dist/components/trace-viewer/util/constants.js.map +0 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
- package/dist/components/trace-viewer/util/timing.js.map +0 -1
- package/dist/components/trace-viewer/util/tree.js.map +0 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
- package/dist/components/trace-viewer/worker.js.map +0 -1
- package/dist/components/trace-viewer-new.js.map +0 -1
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/data-inspector.js.map +0 -1
- package/dist/components/ui/decrypt-button.js.map +0 -1
- package/dist/components/ui/error-card.js.map +0 -1
- package/dist/components/ui/error-stack-block.js.map +0 -1
- package/dist/components/ui/inspector-theme.js.map +0 -1
- package/dist/components/ui/load-more-button.js.map +0 -1
- package/dist/components/ui/menu-dropdown.js.map +0 -1
- package/dist/components/ui/skeleton.js.map +0 -1
- package/dist/components/ui/spinner.js.map +0 -1
- package/dist/components/ui/timestamp-tooltip.js.map +0 -1
- package/dist/components/workflow-trace-view.js.map +0 -1
- package/dist/components/workflow-traces/event-colors.js.map +0 -1
- package/dist/components/workflow-traces/trace-colors.js.map +0 -1
- package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
- package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
- package/dist/hooks/use-dark-mode.js.map +0 -1
- package/dist/hooks/use-reduced-motion.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/event-analysis.js.map +0 -1
- package/dist/lib/event-materialization.js.map +0 -1
- package/dist/lib/hydration.js.map +0 -1
- package/dist/lib/stream-display.js.map +0 -1
- package/dist/lib/toast.js.map +0 -1
- package/dist/lib/trace-builder.js.map +0 -1
- package/dist/lib/utils.js.map +0 -1
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { parseStepName, parseWorkflowName } from '@workflow/utils/parse-name';
|
|
4
|
-
import { RotateCcw, Search, X, ZoomIn, ZoomOut } from 'lucide-react';
|
|
5
|
-
import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
|
|
4
|
+
import { ChevronDown, ChevronUp, RotateCcw, Search, X, ZoomIn, ZoomOut, } from 'lucide-react';
|
|
5
|
+
import { useCallback, useDeferredValue, useEffect, useMemo, useRef, useState, } from 'react';
|
|
6
6
|
import { useReducedMotion } from '../../hooks/use-reduced-motion';
|
|
7
7
|
import { ErrorBoundary } from '../error-boundary';
|
|
8
8
|
import { EntityDetailPanel, } from '../sidebar/entity-detail-panel';
|
|
9
9
|
import { useSidebarDataOptional } from '../sidebar/sidebar-data-context';
|
|
10
10
|
import { formatDuration, getHighResInMs } from '../trace-viewer/util/timing';
|
|
11
|
-
import {
|
|
11
|
+
import { IconButton } from '../ui/icon-button';
|
|
12
12
|
import EventList from './components/event-list';
|
|
13
13
|
import { SplitPane } from './components/split-pane';
|
|
14
|
-
import { Timeline, TimelineHeader,
|
|
14
|
+
import { TIMELINE_PADDING_PX, Timeline, TimelineHeader, } from './components/timeline';
|
|
15
15
|
import { ActiveSpanProvider, useActiveSpan } from './context';
|
|
16
16
|
import { DetailPanel } from './detail-panel';
|
|
17
|
+
import { searchSpans } from './search';
|
|
17
18
|
import { computeRootBounds, computeTimeMarkers } from './utils';
|
|
18
19
|
const MIN_VIEWPORT_MS = 0.001;
|
|
19
20
|
function useAnimatedViewport(initial) {
|
|
@@ -88,7 +89,7 @@ function useSelectedSpanInfo() {
|
|
|
88
89
|
spanId: activeSpan.spanId,
|
|
89
90
|
rawEvents,
|
|
90
91
|
};
|
|
91
|
-
}, [activeSpan, sidebar
|
|
92
|
+
}, [activeSpan, sidebar]);
|
|
92
93
|
}
|
|
93
94
|
// ---------------------------------------------------------------------------
|
|
94
95
|
// Root component
|
|
@@ -101,12 +102,8 @@ function NewTraceViewerContent({ trace }) {
|
|
|
101
102
|
const sidebar = useSidebarDataOptional();
|
|
102
103
|
const selectedSpan = useSelectedSpanInfo();
|
|
103
104
|
const [searchQuery, setSearchQuery] = useState('');
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
if (!q)
|
|
107
|
-
return trace.spans;
|
|
108
|
-
return trace.spans.filter((s) => s.name.toLowerCase().includes(q) || s.resource.toLowerCase().includes(q));
|
|
109
|
-
}, [trace.spans, searchQuery]);
|
|
105
|
+
const deferredSearchQuery = useDeferredValue(searchQuery);
|
|
106
|
+
const searchResult = useMemo(() => searchSpans(trace.spans, deferredSearchQuery), [trace.spans, deferredSearchQuery]);
|
|
110
107
|
const root = useMemo(() => computeRootBounds(trace.spans), [trace.spans]);
|
|
111
108
|
const { viewport, setViewport, animateTo } = useAnimatedViewport({
|
|
112
109
|
start: root.startTime,
|
|
@@ -129,7 +126,7 @@ function NewTraceViewerContent({ trace }) {
|
|
|
129
126
|
return prev;
|
|
130
127
|
});
|
|
131
128
|
prevRootRef.current = { start: newStart, end: newEnd };
|
|
132
|
-
}, [root.startTime, root.duration]);
|
|
129
|
+
}, [root.startTime, root.duration, setViewport]);
|
|
133
130
|
const viewDuration = viewport.end - viewport.start;
|
|
134
131
|
const timeMarkers = useMemo(() => computeTimeMarkers(viewDuration, viewport.start - root.startTime), [viewDuration, viewport.start, root.startTime]);
|
|
135
132
|
const resetZoom = useCallback(() => {
|
|
@@ -208,14 +205,30 @@ function NewTraceViewerContent({ trace }) {
|
|
|
208
205
|
]);
|
|
209
206
|
const [altHeld, setAltHeld] = useState(false);
|
|
210
207
|
useEffect(() => {
|
|
208
|
+
const handleSidebarNavKey = (e) => {
|
|
209
|
+
const target = e.target;
|
|
210
|
+
if (target instanceof HTMLInputElement ||
|
|
211
|
+
target instanceof HTMLTextAreaElement ||
|
|
212
|
+
target?.isContentEditable) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const targetId = e.key === 'k' ? prevSpanIdRef.current : nextSpanIdRef.current;
|
|
216
|
+
if (targetId) {
|
|
217
|
+
e.preventDefault();
|
|
218
|
+
handleSelectSpanRef.current(targetId);
|
|
219
|
+
}
|
|
220
|
+
};
|
|
211
221
|
const onKeyDown = (e) => {
|
|
212
222
|
if (e.key === 'Escape') {
|
|
213
223
|
clearActiveSpan();
|
|
214
224
|
}
|
|
215
|
-
if (e.key === 'Alt') {
|
|
225
|
+
else if (e.key === 'Alt') {
|
|
216
226
|
e.preventDefault();
|
|
217
227
|
setAltHeld(true);
|
|
218
228
|
}
|
|
229
|
+
else if (e.key === 'j' || e.key === 'k') {
|
|
230
|
+
handleSidebarNavKey(e);
|
|
231
|
+
}
|
|
219
232
|
};
|
|
220
233
|
const onKeyUp = (e) => {
|
|
221
234
|
if (e.key === 'Alt')
|
|
@@ -278,7 +291,8 @@ function NewTraceViewerContent({ trace }) {
|
|
|
278
291
|
if (e.deltaMode === 1)
|
|
279
292
|
dy *= 16;
|
|
280
293
|
const cursorFraction = Math.max(0, Math.min(1, (e.clientX - rect.left - TIMELINE_PADDING_PX) / contentWidth));
|
|
281
|
-
const
|
|
294
|
+
const isMouseWheel = e.deltaMode === 1 || Math.abs(e.deltaY) >= 50;
|
|
295
|
+
const scaleFactor = Math.pow(2, dy / (isMouseWheel ? 200 : 60));
|
|
282
296
|
setViewport((prev) => {
|
|
283
297
|
const prevDuration = prev.end - prev.start;
|
|
284
298
|
const cursorTime = prev.start + cursorFraction * prevDuration;
|
|
@@ -319,7 +333,7 @@ function NewTraceViewerContent({ trace }) {
|
|
|
319
333
|
};
|
|
320
334
|
el.addEventListener('wheel', onWheel, { passive: false });
|
|
321
335
|
return () => el.removeEventListener('wheel', onWheel);
|
|
322
|
-
}, [root.startTime, root.duration]);
|
|
336
|
+
}, [root.startTime, root.duration, setViewport]);
|
|
323
337
|
// Derive the selected span name and metadata for the panel header
|
|
324
338
|
const selectedSpanName = useMemo(() => {
|
|
325
339
|
if (!selectedSpan?.data)
|
|
@@ -337,24 +351,37 @@ function NewTraceViewerContent({ trace }) {
|
|
|
337
351
|
data.hookId ??
|
|
338
352
|
'Details');
|
|
339
353
|
}, [selectedSpan?.data, selectedSpan?.resource]);
|
|
340
|
-
const
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
354
|
+
const { prevSpanId, nextSpanId } = useMemo(() => {
|
|
355
|
+
if (!activeSpanId)
|
|
356
|
+
return { prevSpanId: null, nextSpanId: null };
|
|
357
|
+
const i = trace.spans.findIndex((s) => s.spanId === activeSpanId);
|
|
358
|
+
if (i === -1)
|
|
359
|
+
return { prevSpanId: null, nextSpanId: null };
|
|
360
|
+
return {
|
|
361
|
+
prevSpanId: trace.spans[i - 1]?.spanId ?? null,
|
|
362
|
+
nextSpanId: trace.spans[i + 1]?.spanId ?? null,
|
|
363
|
+
};
|
|
364
|
+
}, [activeSpanId, trace.spans]);
|
|
365
|
+
const handleSelectPrevSpan = useCallback(() => {
|
|
366
|
+
if (prevSpanId)
|
|
367
|
+
handleSelectSpan(prevSpanId);
|
|
368
|
+
}, [prevSpanId, handleSelectSpan]);
|
|
369
|
+
const handleSelectNextSpan = useCallback(() => {
|
|
370
|
+
if (nextSpanId)
|
|
371
|
+
handleSelectSpan(nextSpanId);
|
|
372
|
+
}, [nextSpanId, handleSelectSpan]);
|
|
373
|
+
const prevSpanIdRef = useRef(prevSpanId);
|
|
374
|
+
const nextSpanIdRef = useRef(nextSpanId);
|
|
375
|
+
const handleSelectSpanRef = useRef(handleSelectSpan);
|
|
376
|
+
prevSpanIdRef.current = prevSpanId;
|
|
377
|
+
nextSpanIdRef.current = nextSpanId;
|
|
378
|
+
handleSelectSpanRef.current = handleSelectSpan;
|
|
379
|
+
return (_jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? '' : undefined, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,420px,100%)]", children: [_jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [_jsxs(SplitPane, { startHeader: _jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center pl-4 pr-2 gap-1.5", children: [_jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), _jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: (e) => {
|
|
380
|
+
if (e.key === 'Escape' && searchQuery) {
|
|
381
|
+
e.preventDefault();
|
|
382
|
+
e.stopPropagation();
|
|
383
|
+
setSearchQuery('');
|
|
384
|
+
}
|
|
385
|
+
}, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none" }), searchQuery && (_jsx("button", { type: "button", "aria-label": "Clear search", onClick: () => setSearchQuery(''), className: "-mr-2 hidden h-full max-w-full shrink-0 cursor-pointer items-center rounded-r-md border-0 bg-transparent px-2.5 font-inherit text-base text-gray-900 no-underline transition-colors duration-150 ease-in hover:text-gray-1000 focus-visible:-outline-offset-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] min-[961px]:flex", children: _jsx("kbd", { className: "inline-flex h-5 min-h-5 min-w-5 items-center justify-center rounded border border-gray-alpha-400 bg-background-100 px-1 font-sans text-[13px] font-medium leading-[1.7em] text-gray-900", children: "Esc" }) }))] }), endHeader: _jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo }), children: [_jsx("div", { className: "block overflow-visible", children: _jsx(EventList, { spans: trace.spans, activeSpanId: activeSpanId, searchResult: searchResult, onSelectSpan: handleSelectSpan }) }), _jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: _jsx(Timeline, { spans: trace.spans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, searchResult: searchResult, onSelect: handleSelectSpan, hoverFraction: hoverFraction, altHeld: altHeld }) })] }), _jsxs("div", { className: "absolute right-3 bottom-3 z-[5] flex items-center border border-gray-alpha-400 rounded-md bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [_jsx(IconButton, { variant: "muted", size: "small", onClick: zoomOut, "aria-label": "Zoom out", children: _jsx(ZoomOut, { className: "w-4 h-4" }) }), _jsx(IconButton, { variant: "muted", size: "small", onClick: resetZoom, "aria-label": "Reset zoom", children: _jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), _jsx(IconButton, { variant: "muted", size: "small", onClick: zoomIn, "aria-label": "Zoom in", children: _jsx(ZoomIn, { className: "w-4 h-4" }) })] })] }), activeSpan && sidebar ? (_jsxs("aside", { className: "flex flex-col h-full max-h-full bg-background-100 border-l border-gray-alpha-400 overflow-auto", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 pt-3 pb-3", children: [_jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), _jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [_jsx(IconButton, { "aria-label": "Navigate to previous span", "aria-keyshortcuts": "K", onClick: handleSelectPrevSpan, disabled: !prevSpanId, children: _jsx(ChevronUp, { className: "w-4 h-4" }) }), _jsx(IconButton, { "aria-label": "Navigate to next span", "aria-keyshortcuts": "J", onClick: handleSelectNextSpan, disabled: !nextSpanId, children: _jsx(ChevronDown, { className: "w-4 h-4" }) }), _jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), _jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: clearActiveSpan, children: _jsx(X, { className: "w-4 h-4" }) })] })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: _jsx(ErrorBoundary, { children: _jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, spanDetailData: sidebar.spanDetailData, spanDetailError: sidebar.spanDetailError, spanDetailLoading: sidebar.spanDetailLoading, onSpanSelect: sidebar.onSpanSelect, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan: selectedSpan }) }) })] })) : activeSpan ? (_jsx(DetailPanel, { span: activeSpan, rootStart: root.startTime, onClose: clearActiveSpan })) : null] }));
|
|
359
386
|
}
|
|
360
|
-
//# sourceMappingURL=trace-viewer.js.map
|
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2Utdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci90cmFjZS12aWV3ZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixDQUFDLEVBQ0QsTUFBTSxFQUNOLE9BQU8sR0FDUixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBRUwsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsT0FBTyxFQUNQLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sU0FBUyxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFFBQVEsRUFDUixjQUFjLEdBQ2YsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlELE9BQU8sRUFBRSxX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Y0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQ3RDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUN4QyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsaUJBQWlCLEVBQzVDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxFQUNsQyxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFDcEMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQ3hDLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUNwQyxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFDcEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQzVCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxFQUNsQyxZQUFZLEVBQUUsWUFBWSxHQUMxQixHQUNZLEdBQ1osSUFDQSxDQUNULENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FDZixLQUFDLFdBQVcsSUFDVixJQUFJLEVBQUUsVUFBVSxFQUNoQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFDekIsT0FBTyxFQUFFLGVBQWUsR0FDeEIsQ0FDSCxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQ0osQ0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgcGFyc2VTdGVwTmFtZSwgcGFyc2VXb3JrZmxvd05hbWUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMvcGFyc2UtbmFtZSc7XG5pbXBvcnQge1xuICBDaGV2cm9uRG93bixcbiAgQ2hldnJvblVwLFxuICBSb3RhdGVDY3csXG4gIFNlYXJjaCxcbiAgWCxcbiAgWm9vbUluLFxuICBab29tT3V0LFxufSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHtcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VEZWZlcnJlZFZhbHVlLFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJlZHVjZWRNb3Rpb24gfSBmcm9tICcuLi8uLi9ob29rcy91c2UtcmVkdWNlZC1tb3Rpb24nO1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJy4uL2Vycm9yLWJvdW5kYXJ5JztcbmltcG9ydCB7XG4gIEVudGl0eURldGFpbFBhbmVsLFxuICB0eXBlIFNlbGVjdGVkU3BhbkluZm8sXG59IGZyb20gJy4uL3NpZGViYXIvZW50aXR5LWRldGFpbC1wYW5lbCc7XG5pbXBvcnQgeyB1c2VTaWRlYmFyRGF0YU9wdGlvbmFsIH0gZnJvbSAnLi4vc2lkZWJhci9zaWRlYmFyLWRhdGEtY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IFRyYWNlIH0gZnJvbSAnLi4vdHJhY2Utdmlld2VyL3R5cGVzJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uLCBnZXRIaWdoUmVzSW5NcyB9IGZyb20gJy4uL3RyYWNlLXZpZXdlci91dGlsL3RpbWluZyc7XG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi4vdWkvaWNvbi1idXR0b24nO1xuaW1wb3J0IEV2ZW50TGlzdCBmcm9tICcuL2NvbXBvbmVudHMvZXZlbnQtbGlzdCc7XG5pbXBvcnQgeyBTcGxpdFBhbmUgfSBmcm9tICcuL2NvbXBvbmVudHMvc3BsaXQtcGFuZSc7XG5pbXBvcnQge1xuICBUSU1FTElORV9QQURESU5HX1BYLFxuICBUaW1lbGluZSxcbiAgVGltZWxpbmVIZWFkZXIsXG59IGZyb20gJy4vY29tcG9uZW50cy90aW1lbGluZSc7XG5pbXBvcnQgeyBBY3RpdmVTcGFuUHJvdmlkZXIsIHVzZUFjdGl2ZVNwYW4gfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgRGV0YWlsUGFuZWwgfSBmcm9tICcuL2RldGFpbC1wYW5lbCc7XG5pbXBvcnQgeyBzZWFyY2hTcGFucyB9IGZyb20gJy4vc2VhcmNoJztcbmltcG9ydCB7IGNvbXB1dGVSb290Qm91bmRzLCBjb21wdXRlVGltZU1hcmtlcnMgfSBmcm9tICcuL3V0aWxzJztcblxuaW50ZXJmYWNlIE5ld1RyYWNlVmlld2VyUHJvcHMge1xuICB0cmFjZTogVHJhY2U7XG59XG5cbmNvbnN0IE1JTl9WSUVXUE9SVF9NUyA9IDAuMDAxO1xuXG5pbnRlcmZhY2UgVmlld3BvcnQge1xuICBzdGFydDogbnVtYmVyO1xuICBlbmQ6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gdXNlQW5pbWF0ZWRWaWV3cG9ydChpbml0aWFsOiBWaWV3cG9ydCkge1xuICBjb25zdCBbdmlld3BvcnQsIHNldFZpZXdwb3J0U3RhdGVdID0gdXNlU3RhdGU8Vmlld3BvcnQ+KGluaXRpYWwpO1xuICBjb25zdCBhbmltUmVmID0gdXNlUmVmPHtcbiAgICByYWY6IG51bWJlcjtcbiAgICBmcm9tOiBWaWV3cG9ydDtcbiAgICB0bzogVmlld3BvcnQ7XG4gICAgc3RhcnQ6IG51bWJlcjtcbiAgfSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjdXJyZW50UmVmID0gdXNlUmVmKGluaXRpYWwpO1xuICBjdXJyZW50UmVmLmN1cnJlbnQgPSB2aWV3cG9ydDtcbiAgY29uc3QgcmVkdWNlZE1vdGlvbiA9IHVzZVJlZHVjZWRNb3Rpb24oKTtcblxuICBjb25zdCBjYW5jZWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFuaW1SZWYuY3VycmVudCkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoYW5pbVJlZi5jdXJyZW50LnJhZik7XG4gICAgICBhbmltUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IGFuaW1hdGVUbyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YXJnZXQ6IFZpZXdwb3J0KSA9PiB7XG4gICAgICBjYW5jZWwoKTtcblxuICAgICAgaWYgKHJlZHVjZWRNb3Rpb24pIHtcbiAgICAgICAgY3VycmVudFJlZi5jdXJyZW50ID0gdGFyZ2V0O1xuICAgICAgICBzZXRWaWV3cG9ydFN0YXRlKHRhcmdldCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZnJvbSA9IGN1cnJlbnRSZWYuY3VycmVudDtcbiAgICAgIGNvbnN0IGFuaW0gPSB7IHJhZjogMCwgZnJvbSwgdG86IHRhcmdldCwgc3RhcnQ6IHBlcmZvcm1hbmNlLm5vdygpIH07XG5cbiAgICAgIGNvbnN0IHRpY2sgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHQgPSBNYXRoLm1pbigocGVyZm9ybWFuY2Uubm93KCkgLSBhbmltLnN0YXJ0KSAvIDE1MCwgMSk7XG4gICAgICAgIGNvbnN0IGUgPSAxIC0gKDEgLSB0KSAqICgxIC0gdCk7XG4gICAgICAgIHNldFZpZXdwb3J0U3RhdGUoe1xuICAgICAgICAgIHN0YXJ0OiBhbmltLmZyb20uc3RhcnQgKyAoYW5pbS50by5zdGFydCAtIGFuaW0uZnJvbS5zdGFydCkgKiBlLFxuICAgICAgICAgIGVuZDogYW5pbS5mcm9tLmVuZCArIChhbmltLnRvLmVuZCAtIGFuaW0uZnJvbS5lbmQpICogZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0IDwgMSkgYW5pbS5yYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljayk7XG4gICAgICAgIGVsc2UgYW5pbVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIGFuaW1SZWYuY3VycmVudCA9IGFuaW07XG4gICAgICBhbmltLnJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKTtcbiAgICB9LFxuICAgIFtjYW5jZWwsIHJlZHVjZWRNb3Rpb25dXG4gICk7XG5cbiAgY29uc3Qgc2V0Vmlld3BvcnQgPSB1c2VDYWxsYmFjayhcbiAgICAodXBkYXRlOiBWaWV3cG9ydCB8ICgocHJldjogVmlld3BvcnQpID0+IFZpZXdwb3J0KSkgPT4ge1xuICAgICAgY2FuY2VsKCk7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBzZXRWaWV3cG9ydFN0YXRlKChwcmV2KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHVwZGF0ZShwcmV2KTtcbiAgICAgICAgICBjdXJyZW50UmVmLmN1cnJlbnQgPSBuZXh0O1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRSZWYuY3VycmVudCA9IHVwZGF0ZTtcbiAgICAgICAgc2V0Vmlld3BvcnRTdGF0ZSh1cGRhdGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2NhbmNlbF1cbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2FuY2VsLCBbY2FuY2VsXSk7XG5cbiAgcmV0dXJuIHsgdmlld3BvcnQsIHNldFZpZXdwb3J0LCBhbmltYXRlVG8gfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBIb29rOiBicmlkZ2UgQWN0aXZlU3BhbkNvbnRleHQgKyBTaWRlYmFyRGF0YUNvbnRleHQg4oaSIFNlbGVjdGVkU3BhbkluZm9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiB1c2VTZWxlY3RlZFNwYW5JbmZvKCk6IFNlbGVjdGVkU3BhbkluZm8gfCBudWxsIHtcbiAgY29uc3QgeyBhY3RpdmVTcGFuIH0gPSB1c2VBY3RpdmVTcGFuKCk7XG4gIGNvbnN0IHNpZGViYXIgPSB1c2VTaWRlYmFyRGF0YU9wdGlvbmFsKCk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghYWN0aXZlU3BhbiB8fCAhc2lkZWJhcikgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gYWN0aXZlU3Bhbi5zcGFuSWQ7XG4gICAgY29uc3QgcmF3RXZlbnRzID0gY29ycmVsYXRpb25JZFxuICAgICAgPyBzaWRlYmFyLmV2ZW50cy5maWx0ZXIoKGUpID0+IGUuY29ycmVsYXRpb25JZCA9PT0gY29ycmVsYXRpb25JZClcbiAgICAgIDogW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogYWN0aXZlU3Bhbi5hdHRyaWJ1dGVzPy5kYXRhLFxuICAgICAgcmVzb3VyY2U6IGFjdGl2ZVNwYW4uYXR0cmlidXRlcz8ucmVzb3VyY2UgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgc3BhbklkOiBhY3RpdmVTcGFuLnNwYW5JZCxcbiAgICAgIHJhd0V2ZW50cyxcbiAgICB9O1xuICB9LCBbYWN0aXZlU3Bhbiwgc2lkZWJhcl0pO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJvb3QgY29tcG9uZW50XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIE5ld1RyYWNlVmlld2VyKHsgdHJhY2UgfTogTmV3VHJhY2VWaWV3ZXJQcm9wcyk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPEFjdGl2ZVNwYW5Qcm92aWRlciBzcGFucz17dHJhY2Uuc3BhbnN9PlxuICAgICAgPE5ld1RyYWNlVmlld2VyQ29udGVudCB0cmFjZT17dHJhY2V9IC8+XG4gICAgPC9BY3RpdmVTcGFuUHJvdmlkZXI+XG4gICk7XG59XG5cbmZ1bmN0aW9uIE5ld1RyYWNlVmlld2VyQ29udGVudCh7IHRyYWNlIH06IE5ld1RyYWNlVmlld2VyUHJvcHMpOiBSZWFjdE5vZGUge1xuICBjb25zdCB7IGFjdGl2ZVNwYW4sIGFjdGl2ZVNwYW5JZCwgc2V0QWN0aXZlU3BhbiwgY2xlYXJBY3RpdmVTcGFuIH0gPVxuICAgIHVzZUFjdGl2ZVNwYW4oKTtcblxuICBjb25zdCBzaWRlYmFyID0gdXNlU2lkZWJhckRhdGFPcHRpb25hbCgpO1xuICBjb25zdCBzZWxlY3RlZFNwYW4gPSB1c2VTZWxlY3RlZFNwYW5JbmZvKCk7XG5cbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGRlZmVycmVkU2VhcmNoUXVlcnkgPSB1c2VEZWZlcnJlZFZhbHVlKHNlYXJjaFF1ZXJ5KTtcblxuICBjb25zdCBzZWFyY2hSZXN1bHQgPSB1c2VNZW1vKFxuICAgICgpID0+IHNlYXJjaFNwYW5zKHRyYWNlLnNwYW5zLCBkZWZlcnJlZFNlYXJjaFF1ZXJ5KSxcbiAgICBbdHJhY2Uuc3BhbnMsIGRlZmVycmVkU2VhcmNoUXVlcnldXG4gICk7XG5cbiAgY29uc3Qgcm9vdCA9IHVzZU1lbW8oKCkgPT4gY29tcHV0ZVJvb3RCb3VuZHModHJhY2Uuc3BhbnMpLCBbdHJhY2Uuc3BhbnNdKTtcblxuICBjb25zdCB7IHZpZXdwb3J0LCBzZXRWaWV3cG9ydCwgYW5pbWF0ZVRvIH0gPSB1c2VBbmltYXRlZFZpZXdwb3J0KHtcbiAgICBzdGFydDogcm9vdC5zdGFydFRpbWUsXG4gICAgZW5kOiByb290LnN0YXJ0VGltZSArIHJvb3QuZHVyYXRpb24sXG4gIH0pO1xuXG4gIGNvbnN0IHByZXZSb290UmVmID0gdXNlUmVmPFZpZXdwb3J0Pih7XG4gICAgc3RhcnQ6IHJvb3Quc3RhcnRUaW1lLFxuICAgIGVuZDogcm9vdC5zdGFydFRpbWUgKyByb290LmR1cmF0aW9uLFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHByZXZSb290ID0gcHJldlJvb3RSZWYuY3VycmVudDtcbiAgICBjb25zdCBuZXdTdGFydCA9IHJvb3Quc3RhcnRUaW1lO1xuICAgIGNvbnN0IG5ld0VuZCA9IHJvb3Quc3RhcnRUaW1lICsgcm9vdC5kdXJhdGlvbjtcblxuICAgIHNldFZpZXdwb3J0KChwcmV2KSA9PiB7XG4gICAgICBjb25zdCB3YXNBdEZ1bGxFeHRlbnQgPVxuICAgICAgICBNYXRoLmFicyhwcmV2LnN0YXJ0IC0gcHJldlJvb3Quc3RhcnQpIDwgMC4wMSAmJlxuICAgICAgICBNYXRoLmFicyhwcmV2LmVuZCAtIHByZXZSb290LmVuZCkgPCAwLjAxO1xuXG4gICAgICBpZiAod2FzQXRGdWxsRXh0ZW50KSB7XG4gICAgICAgIHJldHVybiB7IHN0YXJ0OiBuZXdTdGFydCwgZW5kOiBuZXdFbmQgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0pO1xuXG4gICAgcHJldlJvb3RSZWYuY3VycmVudCA9IHsgc3RhcnQ6IG5ld1N0YXJ0LCBlbmQ6IG5ld0VuZCB9O1xuICB9LCBbcm9vdC5zdGFydFRpbWUsIHJvb3QuZHVyYXRpb24sIHNldFZpZXdwb3J0XSk7XG5cbiAgY29uc3Qgdmlld0R1cmF0aW9uID0gdmlld3BvcnQuZW5kIC0gdmlld3BvcnQuc3RhcnQ7XG5cbiAgY29uc3QgdGltZU1hcmtlcnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGNvbXB1dGVUaW1lTWFya2Vycyh2aWV3RHVyYXRpb24sIHZpZXdwb3J0LnN0YXJ0IC0gcm9vdC5zdGFydFRpbWUpLFxuICAgIFt2aWV3RHVyYXRpb24sIHZpZXdwb3J0LnN0YXJ0LCByb290LnN0YXJ0VGltZV1cbiAgKTtcblxuICBjb25zdCByZXNldFpvb20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYW5pbWF0ZVRvKHsgc3RhcnQ6IHJvb3Quc3RhcnRUaW1lLCBlbmQ6IHJvb3Quc3RhcnRUaW1lICsgcm9vdC5kdXJhdGlvbiB9KTtcbiAgfSwgW2FuaW1hdGVUbywgcm9vdC5zdGFydFRpbWUsIHJvb3QuZHVyYXRpb25dKTtcblxuICBjb25zdCBaT09NX0ZBQ1RPUiA9IDAuNTtcblxuICBjb25zdCB6b29tQnkgPSB1c2VDYWxsYmFjayhcbiAgICAoZmFjdG9yOiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RTID0gcm9vdC5zdGFydFRpbWU7XG4gICAgICBjb25zdCByb290RSA9IHJvb3Quc3RhcnRUaW1lICsgcm9vdC5kdXJhdGlvbjtcbiAgICAgIGNvbnN0IHJvb3REID0gcm9vdC5kdXJhdGlvbjtcblxuICAgICAgc2V0Vmlld3BvcnQoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgcHJldkR1cmF0aW9uID0gcHJldi5lbmQgLSBwcmV2LnN0YXJ0O1xuICAgICAgICBjb25zdCBjZW50ZXIgPSAocHJldi5zdGFydCArIHByZXYuZW5kKSAvIDI7XG4gICAgICAgIGNvbnN0IG5ld0R1cmF0aW9uID0gTWF0aC5tYXgoXG4gICAgICAgICAgTUlOX1ZJRVdQT1JUX01TLFxuICAgICAgICAgIE1hdGgubWluKHJvb3RELCBwcmV2RHVyYXRpb24gKiBmYWN0b3IpXG4gICAgICAgICk7XG4gICAgICAgIGxldCBuZXdTdGFydCA9IGNlbnRlciAtIG5ld0R1cmF0aW9uIC8gMjtcbiAgICAgICAgbGV0IG5ld0VuZCA9IGNlbnRlciArIG5ld0R1cmF0aW9uIC8gMjtcblxuICAgICAgICBpZiAobmV3U3RhcnQgPCByb290Uykge1xuICAgICAgICAgIG5ld1N0YXJ0ID0gcm9vdFM7XG4gICAgICAgICAgbmV3RW5kID0gcm9vdFMgKyBuZXdEdXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3RW5kID4gcm9vdEUpIHtcbiAgICAgICAgICBuZXdFbmQgPSByb290RTtcbiAgICAgICAgICBuZXdTdGFydCA9IE1hdGgubWF4KHJvb3RTLCByb290RSAtIG5ld0R1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHN0YXJ0OiBuZXdTdGFydCwgZW5kOiBuZXdFbmQgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW3NldFZpZXdwb3J0LCByb290LnN0YXJ0VGltZSwgcm9vdC5kdXJhdGlvbl1cbiAgKTtcblxuICBjb25zdCB6b29tSW4gPSB1c2VDYWxsYmFjaygoKSA9PiB6b29tQnkoWk9PTV9GQUNUT1IpLCBbem9vbUJ5XSk7XG4gIGNvbnN0IHpvb21PdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB6b29tQnkoMSAvIFpPT01fRkFDVE9SKSwgW3pvb21CeV0pO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNwYW4gPSB1c2VDYWxsYmFjayhcbiAgICAoc3BhbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChzcGFuSWQgPT09IGFjdGl2ZVNwYW5JZCkge1xuICAgICAgICBjbGVhckFjdGl2ZVNwYW4oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0QWN0aXZlU3BhbihzcGFuSWQpO1xuXG4gICAgICBjb25zdCBzcGFuID0gdHJhY2Uuc3BhbnMuZmluZCgocykgPT4gcy5zcGFuSWQgPT09IHNwYW5JZCk7XG4gICAgICBpZiAoIXNwYW4pIHJldHVybjtcblxuICAgICAgY29uc3Qgc3BhblN0YXJ0ID0gZ2V0SGlnaFJlc0luTXMoc3Bhbi5zdGFydFRpbWUpO1xuICAgICAgY29uc3Qgc3BhbkVuZCA9IGdldEhpZ2hSZXNJbk1zKHNwYW4uZW5kVGltZSk7XG4gICAgICBjb25zdCBzcGFuRHVyYXRpb24gPSBzcGFuRW5kIC0gc3BhblN0YXJ0O1xuXG4gICAgICBjb25zdCByb290UyA9IHJvb3Quc3RhcnRUaW1lO1xuICAgICAgY29uc3Qgcm9vdEUgPSByb290LnN0YXJ0VGltZSArIHJvb3QuZHVyYXRpb247XG4gICAgICBjb25zdCByb290RCA9IHJvb3QuZHVyYXRpb247XG5cbiAgICAgIGlmIChzcGFuRHVyYXRpb24gPiByb290RCAqIDAuOCkge1xuICAgICAgICBhbmltYXRlVG8oeyBzdGFydDogcm9vdFMsIGVuZDogcm9vdEUgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFkZGluZyA9IE1hdGgubWF4KHNwYW5EdXJhdGlvbiAqIDAuMiwgTUlOX1ZJRVdQT1JUX01TIC8gMik7XG4gICAgICBsZXQgbmV3U3RhcnQgPSBzcGFuU3RhcnQgLSBwYWRkaW5nO1xuICAgICAgbGV0IG5ld0VuZCA9IHNwYW5FbmQgKyBwYWRkaW5nO1xuXG4gICAgICBpZiAobmV3RW5kIC0gbmV3U3RhcnQgPCBNSU5fVklFV1BPUlRfTVMpIHtcbiAgICAgICAgY29uc3QgY2VudGVyID0gKHNwYW5TdGFydCArIHNwYW5FbmQpIC8gMjtcbiAgICAgICAgbmV3U3RhcnQgPSBjZW50ZXIgLSBNSU5fVklFV1BPUlRfTVMgLyAyO1xuICAgICAgICBuZXdFbmQgPSBjZW50ZXIgKyBNSU5fVklFV1BPUlRfTVMgLyAyO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3U3RhcnQgPCByb290Uykge1xuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IG5ld0VuZCAtIG5ld1N0YXJ0O1xuICAgICAgICBuZXdTdGFydCA9IHJvb3RTO1xuICAgICAgICBuZXdFbmQgPSBNYXRoLm1pbihyb290RSwgcm9vdFMgKyBkdXJhdGlvbik7XG4gICAgICB9XG4gICAgICBpZiAobmV3RW5kID4gcm9vdEUpIHtcbiAgICAgICAgY29uc3QgZHVyYXRpb24gPSBuZXdFbmQgLSBuZXdTdGFydDtcbiAgICAgICAgbmV3RW5kID0gcm9vdEU7XG4gICAgICAgIG5ld1N0YXJ0ID0gTWF0aC5tYXgocm9vdFMsIHJvb3RFIC0gZHVyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBhbmltYXRlVG8oeyBzdGFydDogbmV3U3RhcnQsIGVuZDogbmV3RW5kIH0pO1xuICAgIH0sXG4gICAgW1xuICAgICAgYW5pbWF0ZVRvLFxuICAgICAgc2V0QWN0aXZlU3BhbixcbiAgICAgIGNsZWFyQWN0aXZlU3BhbixcbiAgICAgIGFjdGl2ZVNwYW5JZCxcbiAgICAgIHRyYWNlLnNwYW5zLFxuICAgICAgcm9vdC5zdGFydFRpbWUsXG4gICAgICByb290LmR1cmF0aW9uLFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBbYWx0SGVsZCwgc2V0QWx0SGVsZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTaWRlYmFyTmF2S2V5ID0gKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgIGlmIChcbiAgICAgICAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fFxuICAgICAgICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50IHx8XG4gICAgICAgIHRhcmdldD8uaXNDb250ZW50RWRpdGFibGVcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRJZCA9XG4gICAgICAgIGUua2V5ID09PSAnaycgPyBwcmV2U3BhbklkUmVmLmN1cnJlbnQgOiBuZXh0U3BhbklkUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAodGFyZ2V0SWQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBoYW5kbGVTZWxlY3RTcGFuUmVmLmN1cnJlbnQodGFyZ2V0SWQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbktleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBjbGVhckFjdGl2ZVNwYW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBbHQnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0QWx0SGVsZCh0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdqJyB8fCBlLmtleSA9PT0gJ2snKSB7XG4gICAgICAgIGhhbmRsZVNpZGViYXJOYXZLZXkoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvbktleVVwID0gKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gJ0FsdCcpIHNldEFsdEhlbGQoZmFsc2UpO1xuICAgIH07XG4gICAgY29uc3Qgb25CbHVyID0gKCk6IHZvaWQgPT4gc2V0QWx0SGVsZChmYWxzZSk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgb25LZXlVcCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBvbkJsdXIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBvbktleVVwKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgb25CbHVyKTtcbiAgICB9O1xuICB9LCBbY2xlYXJBY3RpdmVTcGFuXSk7XG5cbiAgY29uc3QgdGltZWxpbmVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbaG92ZXJGcmFjdGlvbiwgc2V0SG92ZXJGcmFjdGlvbl0gPSB1c2VTdGF0ZTxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBob3ZlckluZm8gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaG92ZXJGcmFjdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBhYnNUaW1lID0gdmlld3BvcnQuc3RhcnQgKyBob3ZlckZyYWN0aW9uICogdmlld0R1cmF0aW9uO1xuICAgIGNvbnN0IG9mZnNldCA9IGFic1RpbWUgLSByb290LnN0YXJ0VGltZTtcbiAgICByZXR1cm4geyBmcmFjdGlvbjogaG92ZXJGcmFjdGlvbiwgbGFiZWw6IGZvcm1hdER1cmF0aW9uKG9mZnNldCwgdHJ1ZSkgfTtcbiAgfSwgW2hvdmVyRnJhY3Rpb24sIHZpZXdwb3J0LnN0YXJ0LCB2aWV3RHVyYXRpb24sIHJvb3Quc3RhcnRUaW1lXSk7XG5cbiAgY29uc3QgaGFuZGxlVGltZWxpbmVNb3VzZU1vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGltZWxpbmVSZWYuY3VycmVudDtcbiAgICAgIGlmICghZWwpIHJldHVybjtcbiAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlY3Qud2lkdGggLSBUSU1FTElORV9QQURESU5HX1BYICogMjtcbiAgICAgIGlmIChjb250ZW50V2lkdGggPD0gMCkgcmV0dXJuO1xuICAgICAgY29uc3QgZnJhY3Rpb24gPSBNYXRoLm1heChcbiAgICAgICAgMCxcbiAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgMSxcbiAgICAgICAgICAoZS5jbGllbnRYIC0gcmVjdC5sZWZ0IC0gVElNRUxJTkVfUEFERElOR19QWCkgLyBjb250ZW50V2lkdGhcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHNldEhvdmVyRnJhY3Rpb24oZnJhY3Rpb24pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBoYW5kbGVUaW1lbGluZU1vdXNlTGVhdmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SG92ZXJGcmFjdGlvbihudWxsKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWwgPSB0aW1lbGluZVJlZi5jdXJyZW50O1xuICAgIGlmICghZWwpIHJldHVybjtcblxuICAgIGNvbnN0IHJvb3RTID0gcm9vdC5zdGFydFRpbWU7XG4gICAgY29uc3Qgcm9vdEUgPSByb290LnN0YXJ0VGltZSArIHJvb3QuZHVyYXRpb247XG4gICAgY29uc3Qgcm9vdEQgPSByb290LmR1cmF0aW9uO1xuICAgIGlmIChyb290RCA8PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBvbldoZWVsID0gKGU6IFdoZWVsRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGlzWm9vbUdlc3R1cmUgPSBlLmN0cmxLZXkgfHwgZS5tZXRhS2V5O1xuICAgICAgY29uc3QgaGFzRGVsdGFYID0gTWF0aC5hYnMoZS5kZWx0YVgpID4gTWF0aC5hYnMoZS5kZWx0YVkpO1xuXG4gICAgICBpZiAoIWlzWm9vbUdlc3R1cmUgJiYgIWhhc0RlbHRhWCkgcmV0dXJuO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjb250ZW50V2lkdGggPSByZWN0LndpZHRoIC0gVElNRUxJTkVfUEFERElOR19QWCAqIDI7XG4gICAgICBpZiAoY29udGVudFdpZHRoIDw9IDApIHJldHVybjtcblxuICAgICAgaWYgKGlzWm9vbUdlc3R1cmUpIHtcbiAgICAgICAgbGV0IGR5ID0gZS5kZWx0YVk7XG4gICAgICAgIGlmIChlLmRlbHRhTW9kZSA9PT0gMSkgZHkgKj0gMTY7XG5cbiAgICAgICAgY29uc3QgY3Vyc29yRnJhY3Rpb24gPSBNYXRoLm1heChcbiAgICAgICAgICAwLFxuICAgICAgICAgIE1hdGgubWluKFxuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIChlLmNsaWVudFggLSByZWN0LmxlZnQgLSBUSU1FTElORV9QQURESU5HX1BYKSAvIGNvbnRlbnRXaWR0aFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaXNNb3VzZVdoZWVsID0gZS5kZWx0YU1vZGUgPT09IDEgfHwgTWF0aC5hYnMoZS5kZWx0YVkpID49IDUwO1xuICAgICAgICBjb25zdCBzY2FsZUZhY3RvciA9IE1hdGgucG93KDIsIGR5IC8gKGlzTW91c2VXaGVlbCA/IDIwMCA6IDYwKSk7XG5cbiAgICAgICAgc2V0Vmlld3BvcnQoKHByZXYpID0+IHtcbiAgICAgICAgICBjb25zdCBwcmV2RHVyYXRpb24gPSBwcmV2LmVuZCAtIHByZXYuc3RhcnQ7XG4gICAgICAgICAgY29uc3QgY3Vyc29yVGltZSA9IHByZXYuc3RhcnQgKyBjdXJzb3JGcmFjdGlvbiAqIHByZXZEdXJhdGlvbjtcbiAgICAgICAgICBjb25zdCBuZXdEdXJhdGlvbiA9IE1hdGgubWF4KFxuICAgICAgICAgICAgTUlOX1ZJRVdQT1JUX01TLFxuICAgICAgICAgICAgTWF0aC5taW4ocm9vdEQsIHByZXZEdXJhdGlvbiAqIHNjYWxlRmFjdG9yKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBsZXQgbmV3U3RhcnQgPSBjdXJzb3JUaW1lIC0gY3Vyc29yRnJhY3Rpb24gKiBuZXdEdXJhdGlvbjtcbiAgICAgICAgICBsZXQgbmV3RW5kID0gbmV3U3RhcnQgKyBuZXdEdXJhdGlvbjtcblxuICAgICAgICAgIGlmIChuZXdTdGFydCA8IHJvb3RTKSB7XG4gICAgICAgICAgICBuZXdTdGFydCA9IHJvb3RTO1xuICAgICAgICAgICAgbmV3RW5kID0gcm9vdFMgKyBuZXdEdXJhdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5ld0VuZCA+IHJvb3RFKSB7XG4gICAgICAgICAgICBuZXdFbmQgPSByb290RTtcbiAgICAgICAgICAgIG5ld1N0YXJ0ID0gTWF0aC5tYXgocm9vdFMsIHJvb3RFIC0gbmV3RHVyYXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7IHN0YXJ0OiBuZXdTdGFydCwgZW5kOiBuZXdFbmQgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgZHggPSBlLmRlbHRhWDtcbiAgICAgICAgaWYgKGUuZGVsdGFNb2RlID09PSAxKSBkeCAqPSAxNjtcblxuICAgICAgICBzZXRWaWV3cG9ydCgocHJldikgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZEdXJhdGlvbiA9IHByZXYuZW5kIC0gcHJldi5zdGFydDtcbiAgICAgICAgICBjb25zdCBwYW5BbW91bnQgPSAoZHggLyBjb250ZW50V2lkdGgpICogcHJldkR1cmF0aW9uO1xuXG4gICAgICAgICAgbGV0IG5ld1N0YXJ0ID0gcHJldi5zdGFydCArIHBhbkFtb3VudDtcbiAgICAgICAgICBsZXQgbmV3RW5kID0gcHJldi5lbmQgKyBwYW5BbW91bnQ7XG5cbiAgICAgICAgICBpZiAobmV3U3RhcnQgPCByb290Uykge1xuICAgICAgICAgICAgbmV3U3RhcnQgPSByb290UztcbiAgICAgICAgICAgIG5ld0VuZCA9IHJvb3RTICsgcHJldkR1cmF0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmV3RW5kID4gcm9vdEUpIHtcbiAgICAgICAgICAgIG5ld0VuZCA9IHJvb3RFO1xuICAgICAgICAgICAgbmV3U3RhcnQgPSBNYXRoLm1heChyb290Uywgcm9vdEUgLSBwcmV2RHVyYXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7IHN0YXJ0OiBuZXdTdGFydCwgZW5kOiBuZXdFbmQgfTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICByZXR1cm4gKCkgPT4gZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsKTtcbiAgfSwgW3Jvb3Quc3RhcnRUaW1lLCByb290LmR1cmF0aW9uLCBzZXRWaWV3cG9ydF0pO1xuXG4gIC8vIERlcml2ZSB0aGUgc2VsZWN0ZWQgc3BhbiBuYW1lIGFuZCBtZXRhZGF0YSBmb3IgdGhlIHBhbmVsIGhlYWRlclxuICBjb25zdCBzZWxlY3RlZFNwYW5OYW1lID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZFNwYW4/LmRhdGEpIHJldHVybiAnRGV0YWlscyc7XG4gICAgY29uc3QgZGF0YSA9IHNlbGVjdGVkU3Bhbi5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmIChzZWxlY3RlZFNwYW4ucmVzb3VyY2UgPT09ICdob29rJykge1xuICAgICAgcmV0dXJuIChkYXRhLnRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gKGRhdGEuaG9va0lkIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RlcE5hbWUgPSBkYXRhLnN0ZXBOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPSBkYXRhLndvcmtmbG93TmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChcbiAgICAgIChzdGVwTmFtZSA/IHBhcnNlU3RlcE5hbWUoc3RlcE5hbWUpPy5zaG9ydE5hbWUgOiB1bmRlZmluZWQpID8/XG4gICAgICAod29ya2Zsb3dOYW1lID8gcGFyc2VXb3JrZmxvd05hbWUod29ya2Zsb3dOYW1lKT8uc2hvcnROYW1lIDogdW5kZWZpbmVkKSA/P1xuICAgICAgc3RlcE5hbWUgPz9cbiAgICAgIHdvcmtmbG93TmFtZSA/P1xuICAgICAgKGRhdGEuaG9va0lkIGFzIHN0cmluZykgPz9cbiAgICAgICdEZXRhaWxzJ1xuICAgICk7XG4gIH0sIFtzZWxlY3RlZFNwYW4/LmRhdGEsIHNlbGVjdGVkU3Bhbj8ucmVzb3VyY2VdKTtcblxuICBjb25zdCB7IHByZXZTcGFuSWQsIG5leHRTcGFuSWQgfSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghYWN0aXZlU3BhbklkKSByZXR1cm4geyBwcmV2U3BhbklkOiBudWxsLCBuZXh0U3BhbklkOiBudWxsIH07XG4gICAgY29uc3QgaSA9IHRyYWNlLnNwYW5zLmZpbmRJbmRleCgocykgPT4gcy5zcGFuSWQgPT09IGFjdGl2ZVNwYW5JZCk7XG4gICAgaWYgKGkgPT09IC0xKSByZXR1cm4geyBwcmV2U3BhbklkOiBudWxsLCBuZXh0U3BhbklkOiBudWxsIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByZXZTcGFuSWQ6IHRyYWNlLnNwYW5zW2kgLSAxXT8uc3BhbklkID8/IG51bGwsXG4gICAgICBuZXh0U3BhbklkOiB0cmFjZS5zcGFuc1tpICsgMV0/LnNwYW5JZCA/PyBudWxsLFxuICAgIH07XG4gIH0sIFthY3RpdmVTcGFuSWQsIHRyYWNlLnNwYW5zXSk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UHJldlNwYW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHByZXZTcGFuSWQpIGhhbmRsZVNlbGVjdFNwYW4ocHJldlNwYW5JZCk7XG4gIH0sIFtwcmV2U3BhbklkLCBoYW5kbGVTZWxlY3RTcGFuXSk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0TmV4dFNwYW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG5leHRTcGFuSWQpIGhhbmRsZVNlbGVjdFNwYW4obmV4dFNwYW5JZCk7XG4gIH0sIFtuZXh0U3BhbklkLCBoYW5kbGVTZWxlY3RTcGFuXSk7XG5cbiAgY29uc3QgcHJldlNwYW5JZFJlZiA9IHVzZVJlZihwcmV2U3BhbklkKTtcbiAgY29uc3QgbmV4dFNwYW5JZFJlZiA9IHVzZVJlZihuZXh0U3BhbklkKTtcbiAgY29uc3QgaGFuZGxlU2VsZWN0U3BhblJlZiA9IHVzZVJlZihoYW5kbGVTZWxlY3RTcGFuKTtcbiAgcHJldlNwYW5JZFJlZi5jdXJyZW50ID0gcHJldlNwYW5JZDtcbiAgbmV4dFNwYW5JZFJlZi5jdXJyZW50ID0gbmV4dFNwYW5JZDtcbiAgaGFuZGxlU2VsZWN0U3BhblJlZi5jdXJyZW50ID0gaGFuZGxlU2VsZWN0U3BhbjtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtcGFuZT1cInBhbmUtcm9vdFwiXG4gICAgICBkYXRhLWhhcy1kZXRhaWw9e2FjdGl2ZVNwYW4gPyAnJyA6IHVuZGVmaW5lZH1cbiAgICAgIGNsYXNzTmFtZT1cImdyaWQgdy1mdWxsIGgtZnVsbCBtYXgtaC1mdWxsIGdyaWQtY29scy1bbWlubWF4KDEwMHB4LDFmcildIGRhdGEtW2hhcy1kZXRhaWxdOmdyaWQtY29scy1bbWlubWF4KDEwMHB4LDFmcilfY2xhbXAoMjgwcHgsNDIwcHgsMTAwJSldXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGlkPVwidHJhY2UtcGFyZW50XCJcbiAgICAgICAgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLXJvd3MtWzFmcl0gaC1mdWxsIG1pbi1oLTAgb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlIGJnLWJhY2tncm91bmQtMTAwXCJcbiAgICAgID5cbiAgICAgICAgPFNwbGl0UGFuZVxuICAgICAgICAgIHN0YXJ0SGVhZGVyPXtcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctYmFja2dyb3VuZC0xMDAgYm9yZGVyLWIgYm9yZGVyLWdyYXktYWxwaGEtNDAwIGgtMTAgbWluLWgtMTAgZmxleCBpdGVtcy1jZW50ZXIgcGwtNCBwci0yIGdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgPFNlYXJjaCBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNSBzaHJpbmstMCB0ZXh0LWdyYXktODAwXCIgLz5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJ0cmFjZS12aWV3ZXItc2VhcmNoXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwidHJhY2Utdmlld2VyLXNlYXJjaFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtzZWFyY2hRdWVyeX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFF1ZXJ5KGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnICYmIHNlYXJjaFF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUXVlcnkoJycpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggc3BhbnMuLi5cIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWFyY2ggc3BhbnNcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSBtaW4tdy0wIGJnLXRyYW5zcGFyZW50IHRleHQtc20gdGV4dC1ncmF5LTEwMDAgcGxhY2Vob2xkZXI6dGV4dC1ncmF5LTgwMCBvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7c2VhcmNoUXVlcnkgJiYgKFxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWFyY2hRdWVyeSgnJyl9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCItbXItMiBoaWRkZW4gaC1mdWxsIG1heC13LWZ1bGwgc2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHJvdW5kZWQtci1tZCBib3JkZXItMCBiZy10cmFuc3BhcmVudCBweC0yLjUgZm9udC1pbmhlcml0IHRleHQtYmFzZSB0ZXh0LWdyYXktOTAwIG5vLXVuZGVybGluZSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgZWFzZS1pbiBob3Zlcjp0ZXh0LWdyYXktMTAwMCBmb2N1cy12aXNpYmxlOi1vdXRsaW5lLW9mZnNldC0xIGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtW3ZhcigtLWRzLWZvY3VzLWNvbG9yKV0gbWluLVs5NjFweF06ZmxleFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBoLTUgbWluLWgtNSBtaW4tdy01IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkIGJvcmRlciBib3JkZXItZ3JheS1hbHBoYS00MDAgYmctYmFja2dyb3VuZC0xMDAgcHgtMSBmb250LXNhbnMgdGV4dC1bMTNweF0gZm9udC1tZWRpdW0gbGVhZGluZy1bMS43ZW1dIHRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgRXNjXG4gICAgICAgICAgICAgICAgICA8L2tiZD5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBlbmRIZWFkZXI9e1xuICAgICAgICAgICAgPFRpbWVsaW5lSGVhZGVyIG1hcmtlcnM9e3RpbWVNYXJrZXJzfSBob3ZlckluZm89e2hvdmVySW5mb30gLz5cbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2NrIG92ZXJmbG93LXZpc2libGVcIj5cbiAgICAgICAgICAgIDxFdmVudExpc3RcbiAgICAgICAgICAgICAgc3BhbnM9e3RyYWNlLnNwYW5zfVxuICAgICAgICAgICAgICBhY3RpdmVTcGFuSWQ9e2FjdGl2ZVNwYW5JZH1cbiAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0PXtzZWFyY2hSZXN1bHR9XG4gICAgICAgICAgICAgIG9uU2VsZWN0U3Bhbj17aGFuZGxlU2VsZWN0U3Bhbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey8qIGJpb21lLWlnbm9yZSBsaW50L2ExMXkvbm9TdGF0aWNFbGVtZW50SW50ZXJhY3Rpb25zOiB0aW1lbGluZSBob3ZlciBhbmQgd2hlZWwgZ2VzdHVyZXMgYXJlIHBvaW50ZXItb25seSBhbm5vdGF0aW9ucyAqL31cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICByZWY9e3RpbWVsaW5lUmVmfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgbWluLWgtMCBvdmVyZmxvdy12aXNpYmxlIHJlbGF0aXZlXCJcbiAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e3Jlc2V0Wm9vbX1cbiAgICAgICAgICAgIG9uTW91c2VNb3ZlPXtoYW5kbGVUaW1lbGluZU1vdXNlTW92ZX1cbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17aGFuZGxlVGltZWxpbmVNb3VzZUxlYXZlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUaW1lbGluZVxuICAgICAgICAgICAgICBzcGFucz17dHJhY2Uuc3BhbnN9XG4gICAgICAgICAgICAgIHZpZXdTdGFydD17dmlld3BvcnQuc3RhcnR9XG4gICAgICAgICAgICAgIHZpZXdFbmQ9e3ZpZXdwb3J0LmVuZH1cbiAgICAgICAgICAgICAgbWFya2Vycz17dGltZU1hcmtlcnN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSWQ9e2FjdGl2ZVNwYW5JZH1cbiAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0PXtzZWFyY2hSZXN1bHR9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVTZWxlY3RTcGFufVxuICAgICAgICAgICAgICBob3ZlckZyYWN0aW9uPXtob3ZlckZyYWN0aW9ufVxuICAgICAgICAgICAgICBhbHRIZWxkPXthbHRIZWxkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9TcGxpdFBhbmU+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcmlnaHQtMyBib3R0b20tMyB6LVs1XSBmbGV4IGl0ZW1zLWNlbnRlciBib3JkZXIgYm9yZGVyLWdyYXktYWxwaGEtNDAwIHJvdW5kZWQtbWQgYmctYmFja2dyb3VuZC0xMDAgc2hhZG93LXNtIG92ZXJmbG93LWhpZGRlbiBkaXZpZGUteCBkaXZpZGUtZ3JheS1hbHBoYS00MDBcIj5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cIm11dGVkXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXt6b29tT3V0fVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlpvb20gb3V0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Wm9vbU91dCBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJtdXRlZFwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgb25DbGljaz17cmVzZXRab29tfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlJlc2V0IHpvb21cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSb3RhdGVDY3cgY2xhc3NOYW1lPVwidy0zLjUgaC0zLjVcIiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cIm11dGVkXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXt6b29tSW59XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiWm9vbSBpblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFpvb21JbiBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBEZXRhaWwgcGFuZWwgKi99XG4gICAgICB7YWN0aXZlU3BhbiAmJiBzaWRlYmFyID8gKFxuICAgICAgICA8YXNpZGUgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGwgbWF4LWgtZnVsbCBiZy1iYWNrZ3JvdW5kLTEwMCBib3JkZXItbCBib3JkZXItZ3JheS1hbHBoYS00MDAgb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICAgIHsvKiBQYW5lbCBoZWFkZXIgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIgc2hyaW5rLTAgcHgtNCBwdC0zIHBiLTNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGFiZWwtMTQgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTEwMDAgdHJ1bmNhdGUgYmxvY2tcIj5cbiAgICAgICAgICAgICAge3NlbGVjdGVkU3Bhbk5hbWV9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0wLjUgc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTmF2aWdhdGUgdG8gcHJldmlvdXMgc3BhblwiXG4gICAgICAgICAgICAgICAgYXJpYS1rZXlzaG9ydGN1dHM9XCJLXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZWxlY3RQcmV2U3Bhbn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXByZXZTcGFuSWR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblVwIGNsYXNzTmFtZT1cInctNCBoLTRcIiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk5hdmlnYXRlIHRvIG5leHQgc3BhblwiXG4gICAgICAgICAgICAgICAgYXJpYS1rZXlzaG9ydGN1dHM9XCJKXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZWxlY3ROZXh0U3Bhbn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IW5leHRTcGFuSWR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBhcmlhLWhpZGRlbiBjbGFzc05hbWU9XCJ3LXB4IGgtNCBiZy1ncmF5LWFscGhhLTQwMCBteC0xXCIgLz5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2Ugc3BhbiBkZXRhaWxzXCJcbiAgICAgICAgICAgICAgICBhcmlhLWtleXNob3J0Y3V0cz1cIkVzY2FwZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJBY3RpdmVTcGFufVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFggY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvKiBQYW5lbCBib2R5ICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0b1wiPlxuICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAgICAgIDxFbnRpdHlEZXRhaWxQYW5lbFxuICAgICAgICAgICAgICAgIHJ1bj17c2lkZWJhci5ydW59XG4gICAgICAgICAgICAgICAgb25TdHJlYW1DbGljaz17c2lkZWJhci5vblN0cmVhbUNsaWNrfVxuICAgICAgICAgICAgICAgIG9uUnVuQ2xpY2s9e3NpZGViYXIub25SdW5DbGlja31cbiAgICAgICAgICAgICAgICBzcGFuRGV0YWlsRGF0YT17c2lkZWJhci5zcGFuRGV0YWlsRGF0YX1cbiAgICAgICAgICAgICAgICBzcGFuRGV0YWlsRXJyb3I9e3NpZGViYXIuc3BhbkRldGFpbEVycm9yfVxuICAgICAgICAgICAgICAgIHNwYW5EZXRhaWxMb2FkaW5nPXtzaWRlYmFyLnNwYW5EZXRhaWxMb2FkaW5nfVxuICAgICAgICAgICAgICAgIG9uU3BhblNlbGVjdD17c2lkZWJhci5vblNwYW5TZWxlY3R9XG4gICAgICAgICAgICAgICAgb25XYWtlVXBTbGVlcD17c2lkZWJhci5vbldha2VVcFNsZWVwfVxuICAgICAgICAgICAgICAgIG9uTG9hZEV2ZW50RGF0YT17c2lkZWJhci5vbkxvYWRFdmVudERhdGF9XG4gICAgICAgICAgICAgICAgb25SZXNvbHZlSG9vaz17c2lkZWJhci5vblJlc29sdmVIb29rfVxuICAgICAgICAgICAgICAgIGVuY3J5cHRpb25LZXk9e3NpZGViYXIuZW5jcnlwdGlvbktleX1cbiAgICAgICAgICAgICAgICBvbkRlY3J5cHQ9e3NpZGViYXIub25EZWNyeXB0fVxuICAgICAgICAgICAgICAgIGlzRGVjcnlwdGluZz17c2lkZWJhci5pc0RlY3J5cHRpbmd9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTcGFuPXtzZWxlY3RlZFNwYW59XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXNpZGU+XG4gICAgICApIDogYWN0aXZlU3BhbiA/IChcbiAgICAgICAgPERldGFpbFBhbmVsXG4gICAgICAgICAgc3Bhbj17YWN0aXZlU3Bhbn1cbiAgICAgICAgICByb290U3RhcnQ9e3Jvb3Quc3RhcnRUaW1lfVxuICAgICAgICAgIG9uQ2xvc2U9e2NsZWFyQWN0aXZlU3Bhbn1cbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIiXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci91dGlsL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiIl19
|
|
@@ -327,4 +327,4 @@ export function computeSpanSegments(span) {
|
|
|
327
327
|
return [];
|
|
328
328
|
}
|
|
329
329
|
}
|
|
330
|
-
//# sourceMappingURL=utils.js.map
|
|
330
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFZN0UsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWE7SUFDN0MsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0lBQ3hDLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztJQUV0QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxRQUFRO1lBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxNQUFNO1lBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxD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QVEsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZTtRQUN4QyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDdEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUVkLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLEtBQUssTUFBTTtZQUNULE9BQU8sMkJBQTJCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckUsS0FBSyxNQUFNO1lBQ1QsT0FBTywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxLQUFLLE9BQU87WUFDVixPQUFPLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLEtBQUssS0FBSztZQUNSLE9BQU8sMEJBQTBCLENBQy9CLE9BQU8sRUFDUCxRQUFRLEVBQ1IsYUFBYSxFQUNiLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztRQUNKO1lBQ0UsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3BhbiwgU3BhbkV2ZW50IH0gZnJvbSAnLi4vdHJhY2Utdmlld2VyL3R5cGVzJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uLCBnZXRIaWdoUmVzSW5NcyB9IGZyb20gJy4uL3RyYWNlLXZpZXdlci91dGlsL3RpbWluZyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUm9vdCBib3VuZHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvb3RCb3VuZHMge1xuICBzdGFydFRpbWU6IG51bWJlcjtcbiAgZW5kVGltZTogbnVtYmVyO1xuICBkdXJhdGlvbjogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVJvb3RCb3VuZHMoc3BhbnM6IFNwYW5bXSk6IFJvb3RCb3VuZHMge1xuICBsZXQgbWluU3RhcnQgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIGxldCBtYXhFbmQgPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG5cbiAgZm9yIChjb25zdCBzcGFuIG9mIHNwYW5zKSB7XG4gICAgY29uc3QgcyA9IGdldEhpZ2hSZXNJbk1zKHNwYW4uc3RhcnRUaW1lKTtcbiAgICBjb25zdCBlID0gZ2V0SGlnaFJlc0luTXMoc3Bhbi5lbmRUaW1lKTtcbiAgICBpZiAocyA8IG1pblN0YXJ0KSBtaW5TdGFydCA9IHM7XG4gICAgaWYgKGUgPiBtYXhFbmQpIG1heEVuZCA9IGU7XG4gIH1cblxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShtaW5TdGFydCkgfHwgIU51bWJlci5pc0Zpbml0ZShtYXhFbmQpKSB7XG4gICAgcmV0dXJuIHsgc3RhcnRUaW1lOiAwLCBlbmRUaW1lOiAxLCBkdXJhdGlvbjogMSB9O1xuICB9XG5cbiAgY29uc3QgZHVyYXRpb24gPSBNYXRoLm1heChtYXhFbmQgLSBtaW5TdGFydCwgMSk7XG4gIHJldHVybiB7IHN0YXJ0VGltZTogbWluU3RhcnQsIGVuZFRpbWU6IG1heEVuZCwgZHVyYXRpb24gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwYW5EdXJhdGlvbk1zKHNwYW46IFNwYW4pOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5tYXgoXG4gICAgMCxcbiAgICBnZXRIaWdoUmVzSW5NcyhzcGFuLmVuZFRpbWUpIC0gZ2V0SGlnaFJlc0luTXMoc3Bhbi5zdGFydFRpbWUpXG4gICk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGltZSBtYXJrZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBUaW1lTWFya2VyIHtcbiAgcG9zaXRpb246IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuY29uc3QgTklDRV9JTlRFUlZBTFMgPSBbXG4gIDEsIDIsIDUsIDEwLCAyMCwgNTAsIDEwMCwgMjAwLCA1MDAsIDFfMDAwLCAyXzAwMCwgNV8wMDAsIDEwXzAwMCwgMjBfMDAwLFxuICA1MF8wMDAsIDEwMF8wMDAsIDIwMF8wMDAsIDUwMF8wMDAsIDFfMDAwXzAwMCwgMl8wMDBfMDAwLCA1XzAwMF8wMDAsXG4gIDEwXzAwMF8wMDAsIDIwXzAwMF8wMDAsIDUwXzAwMF8wMDAsIDEwMF8wMDBfMDAwLCAyMDBfMDAwXzAwMCwgNTAwXzAwMF8wMDAsXG4gIDFfMDAwXzAwMF8wMDAsIDJfMDAwXzAwMF8wMDAsIDVfMDAwXzAwMF8wMDAsXG5dO1xuXG5jb25zdCBNQVhfTUFSS0VSUyA9IDg7XG5cbmZ1bmN0aW9uIHBpY2tJbnRlcnZhbCh2aWV3RHVyYXRpb246IG51bWJlciwgbWF4VGlja3M6IG51bWJlcik6IG51bWJlciB7XG4gIGZvciAoY29uc3QgaW50ZXJ2YWwgb2YgTklDRV9JTlRFUlZBTFMpIHtcbiAgICBpZiAodmlld0R1cmF0aW9uIC8gaW50ZXJ2YWwgPD0gbWF4VGlja3MpIHJldHVybiBpbnRlcnZhbDtcbiAgfVxuICByZXR1cm4gTklDRV9JTlRFUlZBTFNbTklDRV9JTlRFUlZBTFMubGVuZ3RoIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlVGltZU1hcmtlcnMoXG4gIHZpZXdEdXJhdGlvbjogbnVtYmVyLFxuICBvZmZzZXQ6IG51bWJlclxuKTogVGltZU1hcmtlcltdIHtcbiAgaWYgKHZpZXdEdXJhdGlvbiA8PSAwKSByZXR1cm4gW107XG5cbiAgY29uc3QgbWF4VGlja3MgPSA2O1xuICBjb25zdCBpbnRlcnZhbCA9IHBpY2tJbnRlcnZhbCh2aWV3RHVyYXRpb24sIG1heFRpY2tzKTtcblxuICBjb25zdCBmaXJzdFRpY2sgPSBNYXRoLmNlaWwob2Zmc2V0IC8gaW50ZXJ2YWwpICogaW50ZXJ2YWw7XG4gIGNvbnN0IG1hcmtlcnM6IFRpbWVNYXJrZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IHQgPSBmaXJzdFRpY2s7IHQgPD0gb2Zmc2V0ICsgdmlld0R1cmF0aW9uOyB0ICs9IGludGVydmFsKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSAodCAtIG9mZnNldCkgLyB2aWV3RHVyYXRpb247XG4gICAgaWYgKHBvc2l0aW9uIDwgLTAuMDEgfHwgcG9zaXRpb24gPiAxLjAxKSBjb250aW51ZTtcbiAgICBtYXJrZXJzLnB1c2goe1xuICAgICAgcG9zaXRpb246IE1hdGgubWluKE1hdGgubWF4KHBvc2l0aW9uLCAwKSwgMSksXG4gICAgICBsYWJlbDogZm9ybWF0RHVyYXRpb24oTWF0aC5hYnModCksIHRydWUpLFxuICAgICAgdmFsdWU6IHQsXG4gICAgfSk7XG4gICAgaWYgKG1hcmtlcnMubGVuZ3RoID49IE1BWF9NQVJLRVJTKSBicmVhaztcbiAgfVxuXG4gIHJldHVybiBtYXJrZXJzO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNwYW4gZ2FwcyDigJQgdGltZSBkZWx0YXMgYmV0d2VlbiBjb25zZWN1dGl2ZSBzcGFucyAoQWx0LWtleSBvdmVybGF5KVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BhbkdhcCB7XG4gIGdhcE1zOiBudW1iZXI7XG4gIGxlZnRGcmFjOiBudW1iZXI7XG4gIHJpZ2h0RnJhYzogbnVtYmVyO1xuICByb3dJbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNwYW5HYXBzKFxuICBzcGFuczogU3BhbltdLFxuICB2aWV3U3RhcnQ6IG51bWJlcixcbiAgdmlld0VuZDogbnVtYmVyXG4pOiBTcGFuR2FwW10ge1xuICBjb25zdCByYW5nZSA9IHZpZXdFbmQgLSB2aWV3U3RhcnQ7XG4gIGlmIChyYW5nZSA8PSAwKSByZXR1cm4gW107XG5cbiAgY29uc3QgZ2FwczogU3BhbkdhcFtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3BhbnMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgY29uc3QgZW5kVGltZSA9IGdldEhpZ2hSZXNJbk1zKHNwYW5zW2ldLmVuZFRpbWUpO1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IGdldEhpZ2hSZXNJbk1zKHNwYW5zW2kgKyAxXS5zdGFydFRpbWUpO1xuICAgIGNvbnN0IGdhcE1zID0gc3RhcnRUaW1lIC0gZW5kVGltZTtcbiAgICBpZiAoZ2FwTXMgPD0gMCkgY29udGludWU7XG5cbiAgICBjb25zdCBsZWZ0RnJhYyA9IE1hdGgubWluKE1hdGgubWF4KChlbmRUaW1lIC0gdmlld1N0YXJ0KSAvIHJhbmdlLCAwKSwgMSk7XG4gICAgY29uc3QgcmlnaHRGcmFjID0gTWF0aC5taW4oTWF0aC5tYXgoKHN0YXJ0VGltZSAtIHZpZXdTdGFydCkgLyByYW5nZSwgMCksIDEpO1xuICAgIGlmIChyaWdodEZyYWMgLSBsZWZ0RnJhYyA8IDAuMDAxKSBjb250aW51ZTtcblxuICAgIGdhcHMucHVzaCh7IGdhcE1zLCBsZWZ0RnJhYywgcmlnaHRGcmFjLCByb3dJbmRleDogaSB9KTtcbiAgfVxuICByZXR1cm4gZ2Fwcztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXNvdXJjZSBjb2xvcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgUkVTT1VSQ0VfQ09MT1JTOiBSZWNvcmQ8XG4gIHN0cmluZyxcbiAge1xuICAgIGJnOiBzdHJpbmc7XG4gICAgYm9yZGVyOiBzdHJpbmc7XG4gICAgZXJyb3JCZz86IHN0cmluZztcbiAgICBlcnJvckJvcmRlcj86IHN0cmluZztcbiAgfVxuPiA9IHtcbiAgcnVuOiB7XG4gICAgYmc6ICd2YXIoLS1kcy1ibHVlLTIwMCknLFxuICAgIGJvcmRlcjogJ3ZhcigtLWRzLWJsdWUtNTAwKScsXG4gICAgZXJyb3JCZzogJ3ZhcigtLWRzLXJlZC0yMDApJyxcbiAgICBlcnJvckJvcmRlcjogJ3ZhcigtLWRzLXJlZC01MDApJyxcbiAgfSxcbiAgc3RlcDoge1xuICAgIGJnOiAndmFyKC0tZHMtZ3JlZW4tMjAwKScsXG4gICAgYm9yZGVyOiAndmFyKC0tZHMtZ3JlZW4tNTAwKScsXG4gICAgZXJyb3JCZzogJ3ZhcigtLWRzLXJlZC0yMDApJyxcbiAgICBlcnJvckJvcmRlcjogJ3ZhcigtLWRzLXJlZC01MDApJyxcbiAgfSxcbiAgaG9vazoge1xuICAgIGJnOiAndmFyKC0tZHMtYW1iZXItMjAwKScsXG4gICAgYm9yZGVyOiAndmFyKC0tZHMtYW1iZXItNTAwKScsXG4gICAgZXJyb3JCZzogJ3ZhcigtLWRzLXJlZC0yMDApJyxcbiAgICBlcnJvckJvcmRlcjogJ3ZhcigtLWRzLXJlZC01MDApJyxcbiAgfSxcbiAgc2xlZXA6IHtcbiAgICBiZzogJ3ZhcigtLWRzLXB1cnBsZS0yMDApJyxcbiAgICBib3JkZXI6ICd2YXIoLS1kcy1wdXJwbGUtNTAwKScsXG4gICAgZXJyb3JCZzogJ3ZhcigtLWRzLXJlZC0yMDApJyxcbiAgICBlcnJvckJvcmRlcjogJ3ZhcigtLWRzLXJlZC01MDApJyxcbiAgfSxcbiAgZGVmYXVsdDoge1xuICAgIGJnOiAndmFyKC0tZHMtZ3JheS0yMDApJyxcbiAgICBib3JkZXI6ICd2YXIoLS1kcy1ncmF5LTUwMCknLFxuICAgIGVycm9yQmc6ICd2YXIoLS1kcy1yZWQtMjAwKScsXG4gICAgZXJyb3JCb3JkZXI6ICd2YXIoLS1kcy1yZWQtNTAwKScsXG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VDb2xvcihyZXNvdXJjZTogc3RyaW5nKToge1xuICBiZzogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgZXJyb3JCZz86IHN0cmluZztcbiAgZXJyb3JCb3JkZXI/OiBzdHJpbmc7XG59IHtcbiAgcmV0dXJuIFJFU09VUkNFX0NPTE9SU1tyZXNvdXJjZV0gPz8gUkVTT1VSQ0VfQ09MT1JTLmRlZmF1bHQ7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3BhbiBzZWdtZW50cyDigJQgc3BsaXQgYSB0aW1lbGluZSBiYXIgaW50byBjb2xvcmVkIHNlY3Rpb25zIGJ5IGV2ZW50IHN0YXRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHR5cGUgU2VnbWVudFN0YXR1cyA9XG4gIHwgJ3F1ZXVlZCdcbiAgfCAncnVubmluZydcbiAgfCAnZmFpbGVkJ1xuICB8ICdyZXRyeWluZydcbiAgfCAnc3VjY2VlZGVkJ1xuICB8ICd3YWl0aW5nJ1xuICB8ICdzbGVlcGluZydcbiAgfCAncmVjZWl2ZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlZ21lbnQge1xuICBzdGFydEZyYWN0aW9uOiBudW1iZXI7XG4gIGVuZEZyYWN0aW9uOiBudW1iZXI7XG4gIHN0YXR1czogU2VnbWVudFN0YXR1cztcbn1cblxuZnVuY3Rpb24gY2xhbXBGcmFjdGlvbih2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIHRpbWVUb0ZyYWN0aW9uKFxuICB0aW1lOiBudW1iZXIsXG4gIHNwYW5TdGFydDogbnVtYmVyLFxuICBzcGFuRHVyYXRpb246IG51bWJlclxuKTogbnVtYmVyIHtcbiAgaWYgKHNwYW5EdXJhdGlvbiA8PSAwKSByZXR1cm4gMDtcbiAgcmV0dXJuIGNsYW1wRnJhY3Rpb24oKHRpbWUgLSBzcGFuU3RhcnQpIC8gc3BhbkR1cmF0aW9uKTtcbn1cblxuaW50ZXJmYWNlIEV2ZW50TWFyayB7XG4gIHRpbWU6IG51bWJlcjtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBzb3J0ZWRFdmVudE1hcmtzKFxuICBldmVudHM6IFNwYW5FdmVudFtdLFxuICByZWxldmFudE5hbWVzOiBzdHJpbmdbXVxuKTogRXZlbnRNYXJrW10ge1xuICByZXR1cm4gZXZlbnRzXG4gICAgLmZpbHRlcigoZSkgPT4gcmVsZXZhbnROYW1lcy5pbmNsdWRlcyhlLm5hbWUpKVxuICAgIC5tYXAoKGUpID0+ICh7IHRpbWU6IGdldEhpZ2hSZXNJbk1zKGUudGltZXN0YW1wKSwgdHlwZTogZS5uYW1lIH0pKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhLnRpbWUgLSBiLnRpbWUpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU3RlcFNlZ21lbnRzRnJvbVNwYW4oXG4gIHN0YXJ0TXM6IG51bWJlcixcbiAgZHVyYXRpb246IG51bWJlcixcbiAgZXZlbnRzOiBTcGFuRXZlbnRbXVxuKTogU2VnbWVudFtdIHtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuIHNlZ21lbnRzO1xuXG4gIGNvbnN0IG1hcmtzID0gc29ydGVkRXZlbnRNYXJrcyhldmVudHMsIFtcbiAgICAnc3RlcF9zdGFydGVkJyxcbiAgICAnc3RlcF9yZXRyeWluZycsXG4gICAgJ3N0ZXBfZmFpbGVkJyxcbiAgICAnc3RlcF9jb21wbGV0ZWQnLFxuICBdKTtcblxuICBpZiAobWFya3MubGVuZ3RoID09PSAwKSB7XG4gICAgc2VnbWVudHMucHVzaCh7IHN0YXJ0RnJhY3Rpb246IDAsIGVuZEZyYWN0aW9uOiAxLCBzdGF0dXM6ICdydW5uaW5nJyB9KTtcbiAgICByZXR1cm4gc2VnbWVudHM7XG4gIH1cblxuICBjb25zdCBmaXJzdEZyYWN0aW9uID0gdGltZVRvRnJhY3Rpb24obWFya3NbMF0udGltZSwgc3RhcnRNcywgZHVyYXRpb24pO1xuICBpZiAoZmlyc3RGcmFjdGlvbiA+IDAuMDAxKSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiAwLFxuICAgICAgZW5kRnJhY3Rpb246IGZpcnN0RnJhY3Rpb24sXG4gICAgICBzdGF0dXM6ICdxdWV1ZWQnLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXJrcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1hcmsgPSBtYXJrc1tpXTtcbiAgICBjb25zdCBtYXJrRnJhYyA9IHRpbWVUb0ZyYWN0aW9uKG1hcmsudGltZSwgc3RhcnRNcywgZHVyYXRpb24pO1xuICAgIGNvbnN0IG5leHRNYXJrID0gbWFya3NbaSArIDFdO1xuICAgIGNvbnN0IG5leHRGcmFjID0gbmV4dE1hcmtcbiAgICAgID8gdGltZVRvRnJhY3Rpb24obmV4dE1hcmsudGltZSwgc3RhcnRNcywgZHVyYXRpb24pXG4gICAgICA6IDE7XG5cbiAgICBpZiAobWFyay50eXBlID09PSAnc3RlcF9zdGFydGVkJykge1xuICAgICAgaWYgKGkgPT09IG1hcmtzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgICAgc3RhcnRGcmFjdGlvbjogbWFya0ZyYWMsXG4gICAgICAgICAgZW5kRnJhY3Rpb246IDEsXG4gICAgICAgICAgc3RhdHVzOiAnc3VjY2VlZGVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuZXh0VHlwZSA9IG5leHRNYXJrLnR5cGU7XG4gICAgICAgIGNvbnN0IGF0dGVtcHRTdGF0dXM6IFNlZ21lbnRTdGF0dXMgPVxuICAgICAgICAgIG5leHRUeXBlID09PSAnc3RlcF9yZXRyeWluZycgfHwgbmV4dFR5cGUgPT09ICdzdGVwX2ZhaWxlZCdcbiAgICAgICAgICAgID8gJ2ZhaWxlZCdcbiAgICAgICAgICAgIDogbmV4dFR5cGUgPT09ICdzdGVwX2NvbXBsZXRlZCdcbiAgICAgICAgICAgICAgPyAnc3VjY2VlZGVkJ1xuICAgICAgICAgICAgICA6ICdydW5uaW5nJztcbiAgICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgICAgc3RhcnRGcmFjdGlvbjogbWFya0ZyYWMsXG4gICAgICAgICAgZW5kRnJhY3Rpb246IG5leHRGcmFjLFxuICAgICAgICAgIHN0YXR1czogYXR0ZW1wdFN0YXR1cyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtYXJrLnR5cGUgPT09ICdzdGVwX3JldHJ5aW5nJykge1xuICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgIHN0YXJ0RnJhY3Rpb246IG1hcmtGcmFjLFxuICAgICAgICBlbmRGcmFjdGlvbjogbmV4dEZyYWMsXG4gICAgICAgIHN0YXR1czogJ3JldHJ5aW5nJyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAobWFyay50eXBlID09PSAnc3RlcF9mYWlsZWQnKSB7XG4gICAgICBpZiAobWFya0ZyYWMgPCAwLjk5OSkge1xuICAgICAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgICAgICBzdGFydEZyYWN0aW9uOiBtYXJrRnJhYyxcbiAgICAgICAgICBlbmRGcmFjdGlvbjogMSxcbiAgICAgICAgICBzdGF0dXM6ICdmYWlsZWQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VnbWVudHM7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVIb29rU2VnbWVudHNGcm9tU3BhbihcbiAgc3RhcnRNczogbnVtYmVyLFxuICBkdXJhdGlvbjogbnVtYmVyLFxuICBldmVudHM6IFNwYW5FdmVudFtdXG4pOiBTZWdtZW50W10ge1xuICBjb25zdCBzZWdtZW50czogU2VnbWVudFtdID0gW107XG4gIGlmIChkdXJhdGlvbiA8PSAwKSByZXR1cm4gc2VnbWVudHM7XG5cbiAgY29uc3Qgc29ydGVkID0gWy4uLmV2ZW50c11cbiAgICAubWFwKChlKSA9PiAoeyBuYW1lOiBlLm5hbWUsIHRpbWU6IGdldEhpZ2hSZXNJbk1zKGUudGltZXN0YW1wKSB9KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTtcblxuICBjb25zdCByZWNlaXZlZCA9IHNvcnRlZC5maW5kKChlKSA9PiBlLm5hbWUgPT09ICdob29rX3JlY2VpdmVkJyk7XG4gIGNvbnN0IGRpc3Bvc2VkID0gc29ydGVkLmZpbmQoKGUpID0+IGUubmFtZSA9PT0gJ2hvb2tfZGlzcG9zZWQnKTtcblxuICBpZiAoIXJlY2VpdmVkICYmICFkaXNwb3NlZCkge1xuICAgIHNlZ21lbnRzLnB1c2goeyBzdGFydEZyYWN0aW9uOiAwLCBlbmRGcmFjdGlvbjogMSwgc3RhdHVzOiAnd2FpdGluZycgfSk7XG4gICAgcmV0dXJuIHNlZ21lbnRzO1xuICB9XG5cbiAgY29uc3QgcmVjZWl2ZWRGcmFjID0gcmVjZWl2ZWRcbiAgICA/IHRpbWVUb0ZyYWN0aW9uKHJlY2VpdmVkLnRpbWUsIHN0YXJ0TXMsIGR1cmF0aW9uKVxuICAgIDogbnVsbDtcbiAgY29uc3QgZGlzcG9zZWRGcmFjID0gZGlzcG9zZWRcbiAgICA/IHRpbWVUb0ZyYWN0aW9uKGRpc3Bvc2VkLnRpbWUsIHN0YXJ0TXMsIGR1cmF0aW9uKVxuICAgIDogbnVsbDtcblxuICBpZiAocmVjZWl2ZWRGcmFjICE9PSBudWxsICYmIHJlY2VpdmVkRnJhYyA+IDAuMDAxKSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiAwLFxuICAgICAgZW5kRnJhY3Rpb246IHJlY2VpdmVkRnJhYyxcbiAgICAgIHN0YXR1czogJ3dhaXRpbmcnLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHJlY2VpdmVkRnJhYyA9PT0gbnVsbCAmJiBkaXNwb3NlZEZyYWMgIT09IG51bGwpIHtcbiAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgIHN0YXJ0RnJhY3Rpb246IDAsXG4gICAgICBlbmRGcmFjdGlvbjogZGlzcG9zZWRGcmFjLFxuICAgICAgc3RhdHVzOiAnd2FpdGluZycsXG4gICAgfSk7XG4gIH1cblxuICBpZiAocmVjZWl2ZWRGcmFjICE9PSBudWxsKSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiByZWNlaXZlZEZyYWMsXG4gICAgICBlbmRGcmFjdGlvbjogZGlzcG9zZWRGcmFjID8/IDEsXG4gICAgICBzdGF0dXM6ICdyZWNlaXZlZCcsXG4gICAgfSk7XG4gIH1cblxuICBpZiAoZGlzcG9zZWRGcmFjICE9PSBudWxsICYmIGRpc3Bvc2VkRnJhYyA8IDAuOTk5KSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiBkaXNwb3NlZEZyYWMsXG4gICAgICBlbmRGcmFjdGlvbjogMSxcbiAgICAgIHN0YXR1czogJ3N1Y2NlZWRlZCcsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2VnbWVudHM7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTbGVlcFNlZ21lbnRzRnJvbVNwYW4oXG4gIF9zdGFydE1zOiBudW1iZXIsXG4gIGR1cmF0aW9uOiBudW1iZXIsXG4gIF9ldmVudHM6IFNwYW5FdmVudFtdXG4pOiBTZWdtZW50W10ge1xuICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuIFtdO1xuICByZXR1cm4gW3sgc3RhcnRGcmFjdGlvbjogMCwgZW5kRnJhY3Rpb246IDEsIHN0YXR1czogJ3NsZWVwaW5nJyB9XTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVJ1blNlZ21lbnRzRnJvbVNwYW4oXG4gIHN0YXJ0TXM6IG51bWJlcixcbiAgZHVyYXRpb246IG51bWJlcixcbiAgYWN0aXZlU3RhcnRNczogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBldmVudHM6IFNwYW5FdmVudFtdLFxuICBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogU2VnbWVudFtdIHtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuIHNlZ21lbnRzO1xuXG4gIGNvbnN0IHNvcnRlZCA9IFsuLi5ldmVudHNdXG4gICAgLm1hcCgoZSkgPT4gKHsgbmFtZTogZS5uYW1lLCB0aW1lOiBnZXRIaWdoUmVzSW5NcyhlLnRpbWVzdGFtcCkgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGEudGltZSAtIGIudGltZSk7XG5cbiAgY29uc3QgaGFzUnVuQ3JlYXRlZCA9IHNvcnRlZC5zb21lKChlKSA9PiBlLm5hbWUgPT09ICdydW5fY3JlYXRlZCcpO1xuXG4gIGlmICghaGFzUnVuQ3JlYXRlZCkge1xuICAgIGNvbnN0IHJ1bkRhdGEgPSBhdHRyaWJ1dGVzPy5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJ1blN0YXR1cyA9IHJ1bkRhdGE/LnN0YXR1cyBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGNvbXB1dGVWMVJ1blNlZ21lbnRzKHN0YXJ0TXMsIGR1cmF0aW9uLCBhY3RpdmVTdGFydE1zLCBydW5TdGF0dXMpO1xuICB9XG5cbiAgY29uc3QgZmFpbGVkRXZlbnQgPSBzb3J0ZWQuZmluZCgoZSkgPT4gZS5uYW1lID09PSAncnVuX2ZhaWxlZCcpO1xuXG4gIGxldCBjdXJzb3IgPSAwO1xuICBpZiAoYWN0aXZlU3RhcnRNcyAhPT0gdW5kZWZpbmVkICYmIGFjdGl2ZVN0YXJ0TXMgPiBzdGFydE1zKSB7XG4gICAgY29uc3QgcXVldWVkRnJhYyA9IHRpbWVUb0ZyYWN0aW9uKGFjdGl2ZVN0YXJ0TXMsIHN0YXJ0TXMsIGR1cmF0aW9uKTtcbiAgICBpZiAocXVldWVkRnJhYyA+IDAuMDAxKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgICAgc3RhcnRGcmFjdGlvbjogMCxcbiAgICAgICAgZW5kRnJhY3Rpb246IHF1ZXVlZEZyYWMsXG4gICAgICAgIHN0YXR1czogJ3F1ZXVlZCcsXG4gICAgICB9KTtcbiAgICAgIGN1cnNvciA9IHF1ZXVlZEZyYWM7XG4gICAgfVxuICB9XG5cbiAgc2VnbWVudHMucHVzaCh7XG4gICAgc3RhcnRGcmFjdGlvbjogY3Vyc29yLFxuICAgIGVuZEZyYWN0aW9uOiAxLFxuICAgIHN0YXR1czogZmFpbGVkRXZlbnQgPyAnZmFpbGVkJyA6ICdydW5uaW5nJyxcbiAgfSk7XG5cbiAgcmV0dXJuIHNlZ21lbnRzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlVjFSdW5TZWdtZW50cyhcbiAgc3RhcnRNczogbnVtYmVyLFxuICBkdXJhdGlvbjogbnVtYmVyLFxuICBhY3RpdmVTdGFydE1zOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIHJ1blN0YXR1czogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBTZWdtZW50W10ge1xuICBjb25zdCBzZWdtZW50czogU2VnbWVudFtdID0gW107XG5cbiAgbGV0IGN1cnNvciA9IDA7XG4gIGlmIChhY3RpdmVTdGFydE1zICE9PSB1bmRlZmluZWQgJiYgYWN0aXZlU3RhcnRNcyA+IHN0YXJ0TXMpIHtcbiAgICBjb25zdCBxdWV1ZWRGcmFjID0gdGltZVRvRnJhY3Rpb24oYWN0aXZlU3RhcnRNcywgc3RhcnRNcywgZHVyYXRpb24pO1xuICAgIGlmIChxdWV1ZWRGcmFjID4gMC4wMDEpIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgICBzdGFydEZyYWN0aW9uOiAwLFxuICAgICAgICBlbmRGcmFjdGlvbjogcXVldWVkRnJhYyxcbiAgICAgICAgc3RhdHVzOiAncXVldWVkJyxcbiAgICAgIH0pO1xuICAgICAgY3Vyc29yID0gcXVldWVkRnJhYztcbiAgICB9XG4gIH1cblxuICBzZWdtZW50cy5wdXNoKHtcbiAgICBzdGFydEZyYWN0aW9uOiBjdXJzb3IsXG4gICAgZW5kRnJhY3Rpb246IDEsXG4gICAgc3RhdHVzOiBydW5TdGF0dXMgPT09ICdmYWlsZWQnID8gJ2ZhaWxlZCcgOiAncnVubmluZycsXG4gIH0pO1xuXG4gIHJldHVybiBzZWdtZW50cztcbn1cblxuLyoqXG4gKiBDb21wdXRlIGV2ZW50LWJhc2VkIHNlZ21lbnRzIGZvciBhIHNwYW4uIERpc3BhdGNoZXMgb24gYHNwYW4ucmVzb3VyY2VgXG4gKiB0byB0aGUgYXBwcm9wcmlhdGUgcmVzb3VyY2UtdHlwZS1zcGVjaWZpYyBzZWdtZW50IGJ1aWxkZXIuXG4gKiBSZXR1cm5zIGFuIGVtcHR5IGFycmF5IGZvciBnZW5lcmljIChub24td29ya2Zsb3cpIHNwYW5zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNwYW5TZWdtZW50cyhzcGFuOiBTcGFuKTogU2VnbWVudFtdIHtcbiAgY29uc3Qgc3RhcnRNcyA9IGdldEhpZ2hSZXNJbk1zKHNwYW4uc3RhcnRUaW1lKTtcbiAgY29uc3QgZHVyYXRpb24gPSBnZXRTcGFuRHVyYXRpb25NcyhzcGFuKTtcbiAgY29uc3QgYWN0aXZlU3RhcnRNcyA9IHNwYW4uYWN0aXZlU3RhcnRUaW1lXG4gICAgPyBnZXRIaWdoUmVzSW5NcyhzcGFuLmFjdGl2ZVN0YXJ0VGltZSlcbiAgICA6IHVuZGVmaW5lZDtcblxuICBzd2l0Y2ggKHNwYW4ucmVzb3VyY2UpIHtcbiAgICBjYXNlICdzdGVwJzpcbiAgICAgIHJldHVybiBjb21wdXRlU3RlcFNlZ21lbnRzRnJvbVNwYW4oc3RhcnRNcywgZHVyYXRpb24sIHNwYW4uZXZlbnRzKTtcbiAgICBjYXNlICdob29rJzpcbiAgICAgIHJldHVybiBjb21wdXRlSG9va1NlZ21lbnRzRnJvbVNwYW4oc3RhcnRNcywgZHVyYXRpb24sIHNwYW4uZXZlbnRzKTtcbiAgICBjYXNlICdzbGVlcCc6XG4gICAgICByZXR1cm4gY29tcHV0ZVNsZWVwU2VnbWVudHNGcm9tU3BhbihzdGFydE1zLCBkdXJhdGlvbiwgc3Bhbi5ldmVudHMpO1xuICAgIGNhc2UgJ3J1bic6XG4gICAgICByZXR1cm4gY29tcHV0ZVJ1blNlZ21lbnRzRnJvbVNwYW4oXG4gICAgICAgIHN0YXJ0TXMsXG4gICAgICAgIGR1cmF0aW9uLFxuICAgICAgICBhY3RpdmVTdGFydE1zLFxuICAgICAgICBzcGFuLmV2ZW50cyxcbiAgICAgICAgc3Bhbi5hdHRyaWJ1dGVzXG4gICAgICApO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cbiJdfQ==
|
|
@@ -8,4 +8,4 @@ export function RunTraceView({ run, events, isLoading, error, spanDetailData, sp
|
|
|
8
8
|
}
|
|
9
9
|
return (_jsx("div", { className: "w-full h-full relative", children: _jsx(WorkflowTraceViewer, { error: error, events: events, run: run, isLoading: isLoading, spanDetailData: spanDetailData, spanDetailLoading: spanDetailLoading, spanDetailError: spanDetailError, onWakeUpSleep: onWakeUpSleep, onResolveHook: onResolveHook, onCancelRun: onCancelRun, onStreamClick: onStreamClick, onRunClick: onRunClick, onSpanSelect: onSpanSelect, onLoadMoreSpans: onLoadMoreSpans, hasMoreSpans: hasMoreSpans, isLoadingMoreSpans: isLoadingMoreSpans }) }));
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXRyYWNlLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9ydW4tdHJhY2Utdmlldy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUE0QjVELE1BQU0sVUFBVSxZQUFZLENBQUMsRUFDM0IsR0FBRyxFQUNILE1BQU0sRUFDTixTQUFTLEVBQ1QsS0FBSyxFQUNMLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGFBQWEsRUFDYixhQUFhLEVBQ2IsV0FBVyxFQUNYLGFBQWEsRUFDYixVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsRUFDZixZQUFZLEVBQ1osa0JBQWtCLEdBQ0E7SUFDbEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUMsS0FBSyxhQUNsQixLQUFDLFdBQVcsSUFBQyxTQUFTLEVBQUMsU0FBUyxHQUFHLEVBQ25DLHFEQUFpQyxFQUNqQyxzQkFBSSxLQUFLLENBQUMsT0FBTyxHQUFLLElBQ2xCLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQ0wsY0FBSyxTQUFTLEVBQUMsd0JBQXdCLFlBQ3JDLEtBQUMsbUJBQW1CLElBQ2xCLEtBQUssRUFBRSxLQUFLLEVBQ1osTUFBTSxFQUFFLE1BQU0sRUFDZCxHQUFHLEVBQUUsR0FBRyxFQUNSLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLGNBQWMsRUFBRSxjQUFjLEVBQzlCLGlCQUFpQixFQUFFLGlCQUFpQixFQUNwQyxlQUFlLEVBQUUsZUFBZSxFQUNoQyxhQUFhLEVBQUUsYUFBYSxFQUM1QixhQUFhLEVBQUUsYUFBYSxFQUM1QixXQUFXLEVBQUUsV0FBVyxFQUN4QixhQUFhLEVBQUUsYUFBYSxFQUM1QixVQUFVLEVBQUUsVUFBVSxFQUN0QixZQUFZLEVBQUUsWUFBWSxFQUMxQixlQUFlLEVBQUUsZUFBZSxFQUNoQyxZQUFZLEVBQUUsWUFBWSxFQUMxQixrQkFBa0IsRUFBRSxrQkFBa0IsR0FDdEMsR0FDRSxDQUNQLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgdHlwZSB7IEV2ZW50LCBIb29rLCBTdGVwLCBXb3JrZmxvd1J1biB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBBbGVydENpcmNsZSB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7IFNwYW5TZWxlY3Rpb25JbmZvIH0gZnJvbSAnLi9zaWRlYmFyL2VudGl0eS1kZXRhaWwtcGFuZWwnO1xuaW1wb3J0IHsgV29ya2Zsb3dUcmFjZVZpZXdlciB9IGZyb20gJy4vd29ya2Zsb3ctdHJhY2Utdmlldyc7XG5cbmludGVyZmFjZSBSdW5UcmFjZVZpZXdQcm9wcyB7XG4gIHJ1bjogV29ya2Zsb3dSdW47XG4gIGV2ZW50czogRXZlbnRbXTtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgZXJyb3I/OiBFcnJvciB8IG51bGw7XG4gIHNwYW5EZXRhaWxEYXRhPzogV29ya2Zsb3dSdW4gfCBTdGVwIHwgSG9vayB8IEV2ZW50IHwgbnVsbDtcbiAgc3BhbkRldGFpbExvYWRpbmc/OiBib29sZWFuO1xuICBzcGFuRGV0YWlsRXJyb3I/OiBFcnJvciB8IG51bGw7XG4gIG9uV2FrZVVwU2xlZXA/OiAoXG4gICAgcnVuSWQ6IHN0cmluZyxcbiAgICBjb3JyZWxhdGlvbklkOiBzdHJpbmdcbiAgKSA9PiBQcm9taXNlPHsgc3RvcHBlZENvdW50OiBudW1iZXIgfT47XG4gIG9uUmVzb2x2ZUhvb2s/OiAoXG4gICAgaG9va1Rva2VuOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogdW5rbm93bixcbiAgICBob29rPzogSG9va1xuICApID0+IFByb21pc2U8dm9pZD47XG4gIG9uQ2FuY2VsUnVuPzogKHJ1bklkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIG9uU3RyZWFtQ2xpY2s/OiAoc3RyZWFtSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgb25SdW5DbGljaz86IChydW5JZDogc3RyaW5nKSA9PiB2b2lkO1xuICBvblNwYW5TZWxlY3Q/OiAoaW5mbzogU3BhblNlbGVjdGlvbkluZm8pID0+IHZvaWQ7XG4gIG9uTG9hZE1vcmVTcGFucz86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBoYXNNb3JlU3BhbnM/OiBib29sZWFuO1xuICBpc0xvYWRpbmdNb3JlU3BhbnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUnVuVHJhY2VWaWV3KHtcbiAgcnVuLFxuICBldmVudHMsXG4gIGlzTG9hZGluZyxcbiAgZXJyb3IsXG4gIHNwYW5EZXRhaWxEYXRhLFxuICBzcGFuRGV0YWlsTG9hZGluZyxcbiAgc3BhbkRldGFpbEVycm9yLFxuICBvbldha2VVcFNsZWVwLFxuICBvblJlc29sdmVIb29rLFxuICBvbkNhbmNlbFJ1bixcbiAgb25TdHJlYW1DbGljayxcbiAgb25SdW5DbGljayxcbiAgb25TcGFuU2VsZWN0LFxuICBvbkxvYWRNb3JlU3BhbnMsXG4gIGhhc01vcmVTcGFucyxcbiAgaXNMb2FkaW5nTW9yZVNwYW5zLFxufTogUnVuVHJhY2VWaWV3UHJvcHMpIHtcbiAgaWYgKGVycm9yICYmICFydW4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtLTRcIj5cbiAgICAgICAgPEFsZXJ0Q2lyY2xlIGNsYXNzTmFtZT1cImgtNCB3LTRcIiAvPlxuICAgICAgICA8cD5FcnJvciBsb2FkaW5nIHdvcmtmbG93IHJ1bjwvcD5cbiAgICAgICAgPHA+e2Vycm9yLm1lc3NhZ2V9PC9wPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIHJlbGF0aXZlXCI+XG4gICAgICA8V29ya2Zsb3dUcmFjZVZpZXdlclxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIGV2ZW50cz17ZXZlbnRzfVxuICAgICAgICBydW49e3J1bn1cbiAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgIHNwYW5EZXRhaWxEYXRhPXtzcGFuRGV0YWlsRGF0YX1cbiAgICAgICAgc3BhbkRldGFpbExvYWRpbmc9e3NwYW5EZXRhaWxMb2FkaW5nfVxuICAgICAgICBzcGFuRGV0YWlsRXJyb3I9e3NwYW5EZXRhaWxFcnJvcn1cbiAgICAgICAgb25XYWtlVXBTbGVlcD17b25XYWtlVXBTbGVlcH1cbiAgICAgICAgb25SZXNvbHZlSG9vaz17b25SZXNvbHZlSG9va31cbiAgICAgICAgb25DYW5jZWxSdW49e29uQ2FuY2VsUnVufVxuICAgICAgICBvblN0cmVhbUNsaWNrPXtvblN0cmVhbUNsaWNrfVxuICAgICAgICBvblJ1bkNsaWNrPXtvblJ1bkNsaWNrfVxuICAgICAgICBvblNwYW5TZWxlY3Q9e29uU3BhblNlbGVjdH1cbiAgICAgICAgb25Mb2FkTW9yZVNwYW5zPXtvbkxvYWRNb3JlU3BhbnN9XG4gICAgICAgIGhhc01vcmVTcGFucz17aGFzTW9yZVNwYW5zfVxuICAgICAgICBpc0xvYWRpbmdNb3JlU3BhbnM9e2lzTG9hZGluZ01vcmVTcGFuc31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"AAgWA,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,MAQrD,CAAC;AAoBF,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAmPD,eAAO,MAAM,cAAc,GAAI,mDAM5B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,mDAyEA,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,uHAW5B;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,4CAyNA,CAAC"}
|