530 lines
59 KiB
Plaintext
530 lines
59 KiB
Plaintext
import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue");/* Injection by vite-plugin-vue-inspector Start */
|
|
import { createElementBlock as __createElementBlock,createElementVNode as __createElementVNode,createVNode as __createVNode } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"
|
|
function _interopVNode(vnode) {
|
|
if (vnode && vnode.props && 'data-v-inspector' in vnode.props) {
|
|
const data = vnode.props['data-v-inspector']
|
|
delete vnode.props['data-v-inspector']
|
|
Object.defineProperty(vnode.props, '__v_inspector', { value: data, enumerable: false })
|
|
}
|
|
return vnode
|
|
}
|
|
function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) }
|
|
function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) }
|
|
function _createVNode(...args) { return _interopVNode(__createVNode(...args)) }
|
|
/* Injection by vite-plugin-vue-inspector End */
|
|
import { defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
import { computed, onMounted, reactive, ref, watchEffect } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
import { settings } from "/_nuxt/node_modules/@nuxt/devtools/dist/runtime/settings.js?v=e4f18c29";
|
|
import FrameBox from "/_nuxt/node_modules/@nuxt/devtools/dist/runtime/plugins/view/FrameBox.vue";
|
|
import { state } from "/_nuxt/node_modules/@nuxt/devtools/dist/runtime/plugins/view/state.js?v=e4f18c29";
|
|
import { millisecondToHumanreadable, useElementBounding, useEventListener, useScreenSafeArea } from "/_nuxt/node_modules/@nuxt/devtools/dist/runtime/plugins/view/utils.js?v=e4f18c29";
|
|
const SNAP_THRESHOLD = 2;
|
|
const _sfc_main = /* @__PURE__ */ _defineComponent({
|
|
__name: "Main",
|
|
props: {
|
|
client: { type: Object, required: true }
|
|
},
|
|
setup(__props, { expose: __expose }) {
|
|
__expose();
|
|
const props = __props;
|
|
const panelMargins = reactive({
|
|
left: 10,
|
|
top: 10,
|
|
right: 10,
|
|
bottom: 10
|
|
});
|
|
const safeArea = useScreenSafeArea();
|
|
const isSafari = navigator.userAgent.includes("Safari") && !navigator.userAgent.includes("Chrome");
|
|
let isInit = true;
|
|
watchEffect(() => {
|
|
if (state.value.open)
|
|
isInit = false;
|
|
});
|
|
watchEffect(() => {
|
|
panelMargins.left = safeArea.left.value + 10;
|
|
panelMargins.top = safeArea.top.value + 10;
|
|
panelMargins.right = safeArea.right.value + 10;
|
|
panelMargins.bottom = safeArea.bottom.value + 10;
|
|
});
|
|
const vars = computed(() => {
|
|
const dark = props.client.app.colorMode.value === "dark";
|
|
return {
|
|
"--nuxt-devtools-widget-bg": dark ? "#111" : "#ffffff",
|
|
"--nuxt-devtools-widget-fg": dark ? "#F5F5F5" : "#111",
|
|
"--nuxt-devtools-widget-border": dark ? "#3336" : "#efefef",
|
|
"--nuxt-devtools-widget-shadow": dark ? "rgba(0,0,0,0.3)" : "rgba(128,128,128,0.1)"
|
|
};
|
|
});
|
|
const frameBox = ref();
|
|
const panelEl = ref();
|
|
const anchorEl = ref();
|
|
const windowSize = reactive({ width: 0, height: 0 });
|
|
const isDragging = ref(false);
|
|
const draggingOffset = reactive({ x: 0, y: 0 });
|
|
const mousePosition = reactive({ x: 0, y: 0 });
|
|
function onPointerDown(e) {
|
|
if (!panelEl.value)
|
|
return;
|
|
isDragging.value = true;
|
|
const { left, top, width, height } = panelEl.value.getBoundingClientRect();
|
|
draggingOffset.x = e.clientX - left - width / 2;
|
|
draggingOffset.y = e.clientY - top - height / 2;
|
|
}
|
|
onMounted(() => {
|
|
windowSize.width = window.innerWidth;
|
|
windowSize.height = window.innerHeight;
|
|
useEventListener(window, "resize", () => {
|
|
windowSize.width = window.innerWidth;
|
|
windowSize.height = window.innerHeight;
|
|
});
|
|
useEventListener(window, "pointermove", (e) => {
|
|
if (!isDragging.value)
|
|
return;
|
|
const centerX = windowSize.width / 2;
|
|
const centerY = windowSize.height / 2;
|
|
const x = e.clientX - draggingOffset.x;
|
|
const y = e.clientY - draggingOffset.y;
|
|
mousePosition.x = x;
|
|
mousePosition.y = y;
|
|
const deg = Math.atan2(y - centerY, x - centerX);
|
|
const HORIZONTAL_MARGIN = 70;
|
|
const TL = Math.atan2(0 - centerY + HORIZONTAL_MARGIN, 0 - centerX);
|
|
const TR = Math.atan2(0 - centerY + HORIZONTAL_MARGIN, windowSize.width - centerX);
|
|
const BL = Math.atan2(windowSize.height - HORIZONTAL_MARGIN - centerY, 0 - centerX);
|
|
const BR = Math.atan2(windowSize.height - HORIZONTAL_MARGIN - centerY, windowSize.width - centerX);
|
|
state.value.position = deg >= TL && deg <= TR ? "top" : deg >= TR && deg <= BR ? "right" : deg >= BR && deg <= BL ? "bottom" : "left";
|
|
state.value.left = snapToPoints(x / windowSize.width * 100);
|
|
state.value.top = snapToPoints(y / windowSize.height * 100);
|
|
});
|
|
useEventListener(window, "pointerup", () => {
|
|
isDragging.value = false;
|
|
});
|
|
useEventListener(window, "pointerleave", () => {
|
|
isDragging.value = false;
|
|
});
|
|
});
|
|
function snapToPoints(value) {
|
|
if (value < 5)
|
|
return 0;
|
|
if (value > 95)
|
|
return 100;
|
|
if (Math.abs(value - 50) < SNAP_THRESHOLD)
|
|
return 50;
|
|
return value;
|
|
}
|
|
function clamp(value, min, max) {
|
|
return Math.min(Math.max(value, min), max);
|
|
}
|
|
const isHovering = ref(false);
|
|
const isVertical = computed(() => state.value.position === "left" || state.value.position === "right");
|
|
const anchorPos = computed(() => {
|
|
const halfWidth = (panelEl.value?.clientWidth || 0) / 2;
|
|
const halfHeight = (panelEl.value?.clientHeight || 0) / 2;
|
|
const left = state.value.left * windowSize.width / 100;
|
|
const top = state.value.top * windowSize.height / 100;
|
|
switch (state.value.position) {
|
|
case "top":
|
|
return {
|
|
left: clamp(left, halfWidth + panelMargins.left, windowSize.width - halfWidth - panelMargins.right),
|
|
top: panelMargins.top + halfHeight
|
|
};
|
|
case "right":
|
|
return {
|
|
left: windowSize.width - panelMargins.right - halfHeight,
|
|
top: clamp(top, halfWidth + panelMargins.top, windowSize.height - halfWidth - panelMargins.bottom)
|
|
};
|
|
case "left":
|
|
return {
|
|
left: panelMargins.left + halfHeight,
|
|
top: clamp(top, halfWidth + panelMargins.top, windowSize.height - halfWidth - panelMargins.bottom)
|
|
};
|
|
case "bottom":
|
|
default:
|
|
return {
|
|
left: clamp(left, halfWidth + panelMargins.left, windowSize.width - halfWidth - panelMargins.right),
|
|
top: windowSize.height - panelMargins.bottom - halfHeight
|
|
};
|
|
}
|
|
});
|
|
let _timer = null;
|
|
function bringUp() {
|
|
isHovering.value = true;
|
|
if (state.value.minimizePanelInactive < 0)
|
|
return;
|
|
if (_timer)
|
|
clearTimeout(_timer);
|
|
_timer = setTimeout(() => {
|
|
isHovering.value = false;
|
|
}, +state.value.minimizePanelInactive || 0);
|
|
}
|
|
const isHidden = computed(() => {
|
|
if (state.value.open)
|
|
return false;
|
|
if (settings.ui.showPanel === true)
|
|
return false;
|
|
if (settings.ui.showPanel === false)
|
|
return true;
|
|
return isInit;
|
|
});
|
|
const isMinimized = computed(() => {
|
|
if (state.value.minimizePanelInactive < 0)
|
|
return false;
|
|
if (state.value.minimizePanelInactive === 0)
|
|
return true;
|
|
const isTouchDevice = "ontouchstart" in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
|
|
return !isDragging.value && !state.value.open && !isHovering.value && !isTouchDevice && state.value.minimizePanelInactive;
|
|
});
|
|
const anchorStyle = computed(() => {
|
|
return {
|
|
left: `${anchorPos.value.left}px`,
|
|
top: `${anchorPos.value.top}px`,
|
|
pointerEvents: isHidden.value ? "none" : "auto"
|
|
};
|
|
});
|
|
const panelStyle = computed(() => {
|
|
const style = {
|
|
transform: isVertical.value ? `translate(${isMinimized.value ? `calc(-50% ${state.value.position === "right" ? "+" : "-"} 15px)` : "-50%"}, -50%) rotate(90deg)` : `translate(-50%, ${isMinimized.value ? `calc(-50% ${state.value.position === "top" ? "-" : "+"} 15px)` : "-50%"})`
|
|
};
|
|
if (isHidden.value) {
|
|
style.opacity = 0;
|
|
style.pointerEvents = "none";
|
|
}
|
|
if (isMinimized.value) {
|
|
switch (state.value.position) {
|
|
case "top":
|
|
case "right":
|
|
style.borderTopLeftRadius = "0";
|
|
style.borderTopRightRadius = "0";
|
|
break;
|
|
case "bottom":
|
|
case "left":
|
|
style.borderBottomLeftRadius = "0";
|
|
style.borderBottomRightRadius = "0";
|
|
break;
|
|
}
|
|
}
|
|
if (isDragging.value)
|
|
style.transition = "none !important";
|
|
return style;
|
|
});
|
|
const { width: frameWidth, height: frameHeight } = useElementBounding(frameBox);
|
|
const iframeStyle = computed(() => {
|
|
mousePosition.x, mousePosition.y;
|
|
const halfHeight = (panelEl.value?.clientHeight || 0) / 2;
|
|
const frameMargin = {
|
|
left: panelMargins.left + halfHeight,
|
|
top: panelMargins.top + halfHeight,
|
|
right: panelMargins.right + halfHeight,
|
|
bottom: panelMargins.bottom + halfHeight
|
|
};
|
|
const marginHorizontal = frameMargin.left + frameMargin.right;
|
|
const marginVertical = frameMargin.top + frameMargin.bottom;
|
|
const maxWidth = windowSize.width - marginHorizontal;
|
|
const maxHeight = windowSize.height - marginVertical;
|
|
const style = {
|
|
position: "fixed",
|
|
zIndex: -1,
|
|
pointerEvents: isDragging.value || !state.value.open ? "none" : "auto",
|
|
width: `min(${state.value.width}vw, calc(100vw - ${marginHorizontal}px))`,
|
|
height: `min(${state.value.height}vh, calc(100vh - ${marginVertical}px))`
|
|
};
|
|
const anchor = anchorPos.value;
|
|
const width = Math.min(maxWidth, state.value.width * windowSize.width / 100);
|
|
const height = Math.min(maxHeight, state.value.height * windowSize.height / 100);
|
|
const anchorX = anchor?.left || 0;
|
|
const anchorY = anchor?.top || 0;
|
|
switch (state.value.position) {
|
|
case "top":
|
|
case "bottom":
|
|
style.left = `${-frameWidth.value / 2}px`;
|
|
style.transform = "translate(0, 0)";
|
|
if (anchorX - frameMargin.left < width / 2)
|
|
style.left = `${width / 2 - anchorX + frameMargin.left - frameWidth.value / 2}px`;
|
|
else if (windowSize.width - anchorX - frameMargin.right < width / 2)
|
|
style.left = `${windowSize.width - anchorX - width / 2 - frameMargin.right - frameWidth.value / 2}px`;
|
|
break;
|
|
case "right":
|
|
case "left":
|
|
style.top = `${-frameHeight.value / 2}px`;
|
|
style.transform = "translate(0, 0)";
|
|
if (anchorY - frameMargin.top < height / 2)
|
|
style.top = `${height / 2 - anchorY + frameMargin.top - frameHeight.value / 2}px`;
|
|
else if (windowSize.height - anchorY - frameMargin.bottom < height / 2)
|
|
style.top = `${windowSize.height - anchorY - height / 2 - frameMargin.bottom - frameHeight.value / 2}px`;
|
|
break;
|
|
}
|
|
switch (state.value.position) {
|
|
case "top":
|
|
style.top = 0;
|
|
break;
|
|
case "right":
|
|
style.right = 0;
|
|
break;
|
|
case "left":
|
|
style.left = 0;
|
|
break;
|
|
case "bottom":
|
|
default:
|
|
style.bottom = 0;
|
|
break;
|
|
}
|
|
return style;
|
|
});
|
|
const time = computed(() => {
|
|
let type = "";
|
|
const metric = props.client.metrics.loading();
|
|
let time2 = -1;
|
|
if (metric.pageEnd && metric.pageStart) {
|
|
time2 = metric.pageEnd - metric.pageStart;
|
|
type = "Page";
|
|
} else if (metric.appLoad && metric.appInit) {
|
|
time2 = metric.appLoad - metric.appInit;
|
|
type = "App";
|
|
}
|
|
bringUp();
|
|
if (time2 < 0)
|
|
return [type, "", "-"];
|
|
return [type, ...millisecondToHumanreadable(time2)];
|
|
});
|
|
onMounted(() => {
|
|
bringUp();
|
|
});
|
|
const __returned__ = { props, panelMargins, safeArea, isSafari, get isInit() {
|
|
return isInit;
|
|
}, set isInit(v) {
|
|
isInit = v;
|
|
}, SNAP_THRESHOLD, vars, frameBox, panelEl, anchorEl, windowSize, isDragging, draggingOffset, mousePosition, onPointerDown, snapToPoints, clamp, isHovering, isVertical, anchorPos, get _timer() {
|
|
return _timer;
|
|
}, set _timer(v) {
|
|
_timer = v;
|
|
}, bringUp, isHidden, isMinimized, anchorStyle, panelStyle, frameWidth, frameHeight, iframeStyle, time, FrameBox, get state() {
|
|
return state;
|
|
} };
|
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
return __returned__;
|
|
}
|
|
});
|
|
import { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, Fragment as _Fragment, vShow as _vShow, withDirectives as _withDirectives, normalizeClass as _normalizeClass } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
|
|
const _hoisted_1 = {
|
|
viewBox: "0 0 324 324",
|
|
fill: "none",
|
|
xmlns: "http://www.w3.org/2000/svg",
|
|
style: { "margin-top": "-1px", "height": "1.2em", "width": "1.2em" },
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:367:9"
|
|
};
|
|
const _hoisted_2 = ["title"];
|
|
const _hoisted_3 = {
|
|
class: "nuxt-devtools-label-main",
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:382:9"
|
|
};
|
|
const _hoisted_4 = {
|
|
class: "nuxt-devtools-label-secondary",
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:385:9"
|
|
};
|
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
return _openBlock(), _createElementBlock(
|
|
"div",
|
|
{
|
|
id: "nuxt-devtools-anchor",
|
|
ref: "anchorEl",
|
|
style: _normalizeStyle([$setup.anchorStyle, $setup.vars]),
|
|
class: _normalizeClass({
|
|
"nuxt-devtools-vertical": $setup.isVertical,
|
|
"nuxt-devtools-hide": $setup.isMinimized
|
|
}),
|
|
onMousemove: $setup.bringUp,
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:340:3"
|
|
},
|
|
[
|
|
!$setup.isSafari ? (_openBlock(), _createElementBlock(
|
|
"div",
|
|
{
|
|
key: 0,
|
|
class: "nuxt-devtools-glowing",
|
|
style: _normalizeStyle($setup.isDragging ? "opacity: 0.6 !important" : ""),
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:350:5"
|
|
},
|
|
null,
|
|
4
|
|
/* STYLE */
|
|
)) : _createCommentVNode("v-if", true),
|
|
_createElementVNode(
|
|
"div",
|
|
{
|
|
ref: "panelEl",
|
|
class: "nuxt-devtools-panel",
|
|
style: _normalizeStyle($setup.panelStyle),
|
|
onPointerdown: $setup.onPointerDown,
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:355:5"
|
|
},
|
|
[
|
|
_createElementVNode(
|
|
"button",
|
|
{
|
|
class: "nuxt-devtools-icon-button nuxt-devtools-nuxt-button",
|
|
title: "Toggle Nuxt DevTools",
|
|
style: _normalizeStyle($setup.state.open ? "" : "filter:saturate(0)"),
|
|
onClick: _cache[0] || (_cache[0] = ($event) => $props.client.devtools.toggle()),
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:361:7"
|
|
},
|
|
[
|
|
(_openBlock(), _createElementBlock("svg", _hoisted_1, [..._cache[2] || (_cache[2] = [
|
|
_createElementVNode(
|
|
"path",
|
|
{
|
|
d: "M181.767 270H302.211C306.037 270 309.795 269.003 313.108 267.107C316.421 265.211 319.172 262.484 321.084 259.2C322.996 255.915 324.002 252.19 324 248.399C323.998 244.607 322.989 240.883 321.074 237.601L240.187 98.7439C238.275 95.4607 235.525 92.7342 232.213 90.8385C228.901 88.9429 225.143 87.9449 221.318 87.9449C217.494 87.9449 213.736 88.9429 210.424 90.8385C207.112 92.7342 204.361 95.4607 202.449 98.7439L181.767 134.272L141.329 64.7975C139.416 61.5145 136.664 58.7884 133.351 56.8931C130.038 54.9978 126.28 54 122.454 54C118.629 54 114.871 54.9978 111.558 56.8931C108.245 58.7884 105.493 61.5145 103.58 64.7975L2.92554 237.601C1.01067 240.883 0.00166657 244.607 2.06272e-06 248.399C-0.00166244 252.19 1.00407 255.915 2.91605 259.2C4.82803 262.484 7.57884 265.211 10.8918 267.107C14.2047 269.003 17.963 270 21.7886 270H97.3936C127.349 270 149.44 256.959 164.641 231.517L201.546 168.172L221.313 134.272L280.637 236.1H201.546L181.767 270ZM96.1611 236.065L43.3984 236.054L122.49 100.291L161.953 168.172L135.531 213.543C125.436 230.051 113.968 236.065 96.1611 236.065Z",
|
|
fill: "#00DC82",
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:371:11"
|
|
},
|
|
null,
|
|
-1
|
|
/* CACHED */
|
|
)
|
|
])]))
|
|
],
|
|
4
|
|
/* STYLE */
|
|
),
|
|
_cache[5] || (_cache[5] = _createElementVNode(
|
|
"div",
|
|
{
|
|
style: { "border-left": "1px solid #8883", "width": "1px", "height": "10px" },
|
|
class: "nuxt-devtools-panel-content",
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:374:7"
|
|
},
|
|
null,
|
|
-1
|
|
/* CACHED */
|
|
)),
|
|
_createElementVNode("div", {
|
|
class: "nuxt-devtools-panel-content nuxt-devtools-label",
|
|
title: `${$setup.time[0]} load time`,
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:378:7"
|
|
}, [
|
|
_createElementVNode(
|
|
"div",
|
|
_hoisted_3,
|
|
_toDisplayString($setup.time[1]),
|
|
1
|
|
/* TEXT */
|
|
),
|
|
_createElementVNode(
|
|
"span",
|
|
_hoisted_4,
|
|
_toDisplayString($setup.time[2]),
|
|
1
|
|
/* TEXT */
|
|
)
|
|
], 8, _hoisted_2),
|
|
$props.client.inspector ? (_openBlock(), _createElementBlock(
|
|
_Fragment,
|
|
{ key: 0 },
|
|
[
|
|
_cache[4] || (_cache[4] = _createElementVNode(
|
|
"div",
|
|
{
|
|
style: { "border-left": "1px solid #8883", "width": "1px", "height": "10px" },
|
|
class: "nuxt-devtools-panel-content",
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:390:9"
|
|
},
|
|
null,
|
|
-1
|
|
/* CACHED */
|
|
)),
|
|
_createElementVNode("button", {
|
|
class: "nuxt-devtools-icon-button nuxt-devtools-panel-content",
|
|
title: "Toggle Component Inspector",
|
|
onClick: _cache[1] || (_cache[1] = (...args) => $props.client.inspector.toggle && $props.client.inspector.toggle(...args)),
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:394:9"
|
|
}, [
|
|
(_openBlock(), _createElementBlock(
|
|
"svg",
|
|
{
|
|
xmlns: "http://www.w3.org/2000/svg",
|
|
style: _normalizeStyle([{ "height": "1.2em", "width": "1.2em", "opacity": "0.5" }, $props.client.inspector.isEnabled.value ? "opacity:1;color:#00dc82" : ""]),
|
|
viewBox: "0 0 24 24",
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:395:11"
|
|
},
|
|
[..._cache[3] || (_cache[3] = [
|
|
_createElementVNode(
|
|
"g",
|
|
{
|
|
fill: "none",
|
|
stroke: "currentColor",
|
|
"stroke-linecap": "round",
|
|
"stroke-linejoin": "round",
|
|
"stroke-width": "2",
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:401:13"
|
|
},
|
|
[
|
|
_createElementVNode("circle", {
|
|
cx: "12",
|
|
cy: "12",
|
|
r: ".5",
|
|
fill: "currentColor",
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:401:114"
|
|
}),
|
|
_createElementVNode("path", {
|
|
d: "M5 12a7 7 0 1 0 14 0a7 7 0 1 0-14 0m7-9v2m-9 7h2m7 7v2m7-9h2",
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:401:167"
|
|
})
|
|
],
|
|
-1
|
|
/* CACHED */
|
|
)
|
|
])],
|
|
4
|
|
/* STYLE */
|
|
))
|
|
])
|
|
],
|
|
64
|
|
/* STABLE_FRAGMENT */
|
|
)) : _createCommentVNode("v-if", true)
|
|
],
|
|
36
|
|
/* STYLE, NEED_HYDRATION */
|
|
),
|
|
_withDirectives(_createElementVNode(
|
|
"div",
|
|
{
|
|
ref: "frameBox",
|
|
style: _normalizeStyle($setup.iframeStyle),
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:407:5"
|
|
},
|
|
[
|
|
_createVNode($setup["FrameBox"], {
|
|
client: $props.client,
|
|
"is-dragging": $setup.isDragging,
|
|
"data-v-inspector": "node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue:412:7"
|
|
}, null, 8, ["client", "is-dragging"])
|
|
],
|
|
4
|
|
/* STYLE */
|
|
), [
|
|
[_vShow, !$props.client.inspector?.isEnabled.value]
|
|
])
|
|
],
|
|
38
|
|
/* CLASS, STYLE, NEED_HYDRATION */
|
|
);
|
|
}
|
|
import "/_nuxt/node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue?vue&type=style&index=0&scoped=ed978889&lang.css";
|
|
_sfc_main.__hmrId = "ed978889";
|
|
typeof __VUE_HMR_RUNTIME__ !== "undefined" && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main);
|
|
import.meta.hot.on("file-changed", ({ file }) => {
|
|
__VUE_HMR_RUNTIME__.CHANGED_FILE = file;
|
|
});
|
|
import.meta.hot.accept((mod) => {
|
|
if (!mod) return;
|
|
const { default: updated, _rerender_only } = mod;
|
|
if (_rerender_only) {
|
|
__VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render);
|
|
} else {
|
|
__VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated);
|
|
}
|
|
});
|
|
import _export_sfc from "/_nuxt/@id/__x00__plugin-vue:export-helper";
|
|
export default /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-ed978889"], ["__file", "D:/speckle-server/packages/frontend-2/node_modules/@nuxt/devtools/dist/runtime/plugins/view/Main.vue"]]);
|
|
|
|
//# sourceMappingURL=data:application/json;base64,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QTtBQUFBLG9CQU5KLE9BQU07QUFBQSxvQkFDTixPQUFpRCxpQkFBakQsMkRBQ1EsY0FBTyxVQUFVLFVBQVUsUUFBSztBQUFBLG9CQUN4QyxTQUFRO0FBQUEsb0JBQVksb0JBQWlCO0FBQUE7O29CQUVyQztBQUFBLHNCQUFvZjtBQUFBO0FBQUEsd0JBQWpmLE1BQUs7QUFBQSx3QkFBTyxRQUFPO0FBQUEsd0JBQWUsa0JBQWU7QUFBQSx3QkFBUSxtQkFBZ0I7QUFBQSx3QkFBUSxnQkFBYTtBQUFBLHdCQUFJLG9CQUFpQjtBQUFBOzt3QkFBd0Usb0JBQStJO0FBQUEsMEJBQXZJLElBQUc7QUFBQSwwQkFBSyxJQUFHO0FBQUEsMEJBQUssR0FBRTtBQUFBLDBCQUFLLE1BQUs7QUFBQSwwQkFBZSxvQkFBaUI7QUFBQTt3QkFBMkUsb0JBQW1LO0FBQUEsMEJBQTdKLEdBQUU7QUFBQSwwQkFBK0Qsb0JBQWlCO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFNN2E7QUFBQSxRQVNNO0FBQUE7QUFBQSxVQVBKLEtBQUk7QUFBQSxVQUNILE9BQUssZ0JBQUUsa0JBQVc7QUFBQSxVQUFFLG9CQUFpQjtBQUFBOztVQUV0QyxhQUdFO0FBQUEsWUFGQyxRQUFRO0FBQUEsWUFDUixlQUFhO0FBQUEsWUFBWSxvQkFBaUI7QUFBQTs7Ozs7a0JBTnBDLGNBQU8sV0FBVyxVQUFVLEtBQUs7QUFBQSIsIm5hbWVzIjpbInRpbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiTWFpbi52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB0eXBlIHsgTnV4dERldnRvb2xzSG9zdENsaWVudCB9IGZyb20gJ0BudXh0L2RldnRvb2xzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzIH0gZnJvbSAndnVlJ1xuaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgcmVhY3RpdmUsIHJlZiwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnXG5pbXBvcnQgeyBzZXR0aW5ncyB9IGZyb20gJy4uLy4uL3NldHRpbmdzJ1xuaW1wb3J0IEZyYW1lQm94IGZyb20gJy4vRnJhbWVCb3gudnVlJ1xuaW1wb3J0IHsgc3RhdGUgfSBmcm9tICcuL3N0YXRlJ1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRUb0h1bWFucmVhZGFibGUsIHVzZUVsZW1lbnRCb3VuZGluZywgdXNlRXZlbnRMaXN0ZW5lciwgdXNlU2NyZWVuU2FmZUFyZWEgfSBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPHtcbiAgY2xpZW50OiBOdXh0RGV2dG9vbHNIb3N0Q2xpZW50XG59PigpXG5cbmNvbnN0IHBhbmVsTWFyZ2lucyA9IHJlYWN0aXZlKHtcbiAgbGVmdDogMTAsXG4gIHRvcDogMTAsXG4gIHJpZ2h0OiAxMCxcbiAgYm90dG9tOiAxMCxcbn0pXG5cbmNvbnN0IHNhZmVBcmVhID0gdXNlU2NyZWVuU2FmZUFyZWEoKVxuXG5jb25zdCBpc1NhZmFyaSA9IG5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoJ1NhZmFyaScpICYmICFuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCdDaHJvbWUnKVxubGV0IGlzSW5pdCA9IHRydWVcblxud2F0Y2hFZmZlY3QoKCkgPT4ge1xuICBpZiAoc3RhdGUudmFsdWUub3BlbilcbiAgICBpc0luaXQgPSBmYWxzZVxufSlcblxud2F0Y2hFZmZlY3QoKCkgPT4ge1xuICBwYW5lbE1hcmdpbnMubGVmdCA9IHNhZmVBcmVhLmxlZnQudmFsdWUgKyAxMFxuICBwYW5lbE1hcmdpbnMudG9wID0gc2FmZUFyZWEudG9wLnZhbHVlICsgMTBcbiAgcGFuZWxNYXJnaW5zLnJpZ2h0ID0gc2FmZUFyZWEucmlnaHQudmFsdWUgKyAxMFxuICBwYW5lbE1hcmdpbnMuYm90dG9tID0gc2FmZUFyZWEuYm90dG9tLnZhbHVlICsgMTBcbn0pXG5cbmNvbnN0IFNOQVBfVEhSRVNIT0xEID0gMlxuXG5jb25zdCB2YXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBkYXJrID0gcHJvcHMuY2xpZW50LmFwcC5jb2xvck1vZGUudmFsdWUgPT09ICdkYXJrJ1xuICByZXR1cm4ge1xuICAgICctLW51eHQtZGV2dG9vbHMtd2lkZ2V0LWJnJzogZGFyayA/ICcjMTExJyA6ICcjZmZmZmZmJyxcbiAgICAnLS1udXh0LWRldnRvb2xzLXdpZGdldC1mZyc6IGRhcmsgPyAnI0Y1RjVGNScgOiAnIzExMScsXG4gICAgJy0tbnV4dC1kZXZ0b29scy13aWRnZXQtYm9yZGVyJzogZGFyayA/ICcjMzMzNicgOiAnI2VmZWZlZicsXG4gICAgJy0tbnV4dC1kZXZ0b29scy13aWRnZXQtc2hhZG93JzogZGFyayA/ICdyZ2JhKDAsMCwwLDAuMyknIDogJ3JnYmEoMTI4LDEyOCwxMjgsMC4xKScsXG4gIH1cbn0pXG5cbmNvbnN0IGZyYW1lQm94ID0gcmVmPEhUTUxEaXZFbGVtZW50PigpXG5jb25zdCBwYW5lbEVsID0gcmVmPEhUTUxEaXZFbGVtZW50PigpXG5jb25zdCBhbmNob3JFbCA9IHJlZjxIVE1MRGl2RWxlbWVudD4oKVxuXG5jb25zdCB3aW5kb3dTaXplID0gcmVhY3RpdmUoeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0pXG5jb25zdCBpc0RyYWdnaW5nID0gcmVmKGZhbHNlKVxuY29uc3QgZHJhZ2dpbmdPZmZzZXQgPSByZWFjdGl2ZSh7IHg6IDAsIHk6IDAgfSlcbmNvbnN0IG1vdXNlUG9zaXRpb24gPSByZWFjdGl2ZSh7IHg6IDAsIHk6IDAgfSlcblxuZnVuY3Rpb24gb25Qb2ludGVyRG93bihlOiBQb2ludGVyRXZlbnQpIHtcbiAgaWYgKCFwYW5lbEVsLnZhbHVlKVxuICAgIHJldHVyblxuICBpc0RyYWdnaW5nLnZhbHVlID0gdHJ1ZVxuICBjb25zdCB7IGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCB9ID0gcGFuZWxFbC52YWx1ZSEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgZHJhZ2dpbmdPZmZzZXQueCA9IGUuY2xpZW50WCAtIGxlZnQgLSB3aWR0aCAvIDJcbiAgZHJhZ2dpbmdPZmZzZXQueSA9IGUuY2xpZW50WSAtIHRvcCAtIGhlaWdodCAvIDJcbn1cblxub25Nb3VudGVkKCgpID0+IHtcbiAgd2luZG93U2l6ZS53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoXG4gIHdpbmRvd1NpemUuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0XG5cbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csICdyZXNpemUnLCAoKSA9PiB7XG4gICAgd2luZG93U2l6ZS53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgd2luZG93U2l6ZS5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgfSlcblxuICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgJ3BvaW50ZXJtb3ZlJywgKGU6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgIGlmICghaXNEcmFnZ2luZy52YWx1ZSlcbiAgICAgIHJldHVyblxuXG4gICAgY29uc3QgY2VudGVyWCA9IHdpbmRvd1NpemUud2lkdGggLyAyXG4gICAgY29uc3QgY2VudGVyWSA9IHdpbmRvd1NpemUuaGVpZ2h0IC8gMlxuXG4gICAgY29uc3QgeCA9IGUuY2xpZW50WCAtIGRyYWdnaW5nT2Zmc2V0LnhcbiAgICBjb25zdCB5ID0gZS5jbGllbnRZIC0gZHJhZ2dpbmdPZmZzZXQueVxuXG4gICAgbW91c2VQb3NpdGlvbi54ID0geFxuICAgIG1vdXNlUG9zaXRpb24ueSA9IHlcblxuICAgIC8vIEdldCBwb3NpdGlvblxuICAgIGNvbnN0IGRlZyA9IE1hdGguYXRhbjIoeSAtIGNlbnRlclksIHggLSBjZW50ZXJYKVxuICAgIGNvbnN0IEhPUklaT05UQUxfTUFSR0lOID0gNzBcbiAgICBjb25zdCBUTCA9IE1hdGguYXRhbjIoMCAtIGNlbnRlclkgKyBIT1JJWk9OVEFMX01BUkdJTiwgMCAtIGNlbnRlclgpXG4gICAgY29uc3QgVFIgPSBNYXRoLmF0YW4yKDAgLSBjZW50ZXJZICsgSE9SSVpPTlRBTF9NQVJHSU4sIHdpbmRvd1NpemUud2lkdGggLSBjZW50ZXJYKVxuICAgIGNvbnN0IEJMID0gTWF0aC5hdGFuMih3aW5kb3dTaXplLmhlaWdodCAtIEhPUklaT05UQUxfTUFSR0lOIC0gY2VudGVyWSwgMCAtIGNlbnRlclgpXG4gICAgY29uc3QgQlIgPSBNYXRoLmF0YW4yKHdpbmRvd1NpemUuaGVpZ2h0IC0gSE9SSVpPTlRBTF9NQVJHSU4gLSBjZW50ZXJZLCB3aW5kb3dTaXplLndpZHRoIC0gY2VudGVyWClcblxuICAgIHN0YXRlLnZhbHVlLnBvc2l0aW9uID0gZGVnID49IFRMICYmIGRlZyA8PSBUUlxuICAgICAgPyAndG9wJ1xuICAgICAgOiBkZWcgPj0gVFIgJiYgZGVnIDw9IEJSXG4gICAgICAgID8gJ3JpZ2h0J1xuICAgICAgICA6IGRlZyA+PSBCUiAmJiBkZWcgPD0gQkxcbiAgICAgICAgICA/ICdib3R0b20nXG4gICAgICAgICAgOiAnbGVmdCdcblxuICAgIHN0YXRlLnZhbHVlLmxlZnQgPSBzbmFwVG9Qb2ludHMoeCAvIHdpbmRvd1NpemUud2lkdGggKiAxMDApXG4gICAgc3RhdGUudmFsdWUudG9wID0gc25hcFRvUG9pbnRzKHkgLyB3aW5kb3dTaXplLmhlaWdodCAqIDEwMClcbiAgfSlcbiAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csICdwb2ludGVydXAnLCAoKSA9PiB7XG4gICAgaXNEcmFnZ2luZy52YWx1ZSA9IGZhbHNlXG4gIH0pXG4gIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCAncG9pbnRlcmxlYXZlJywgKCkgPT4ge1xuICAgIGlzRHJhZ2dpbmcudmFsdWUgPSBmYWxzZVxuICB9KVxufSlcblxuZnVuY3Rpb24gc25hcFRvUG9pbnRzKHZhbHVlOiBudW1iZXIpIHtcbiAgaWYgKHZhbHVlIDwgNSlcbiAgICByZXR1cm4gMFxuICBpZiAodmFsdWUgPiA5NSlcbiAgICByZXR1cm4gMTAwXG4gIGlmIChNYXRoLmFicyh2YWx1ZSAtIDUwKSA8IFNOQVBfVEhSRVNIT0xEKVxuICAgIHJldHVybiA1MFxuICByZXR1cm4gdmFsdWVcbn1cblxuZnVuY3Rpb24gY2xhbXAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSwgbWluKSwgbWF4KVxufVxuXG5jb25zdCBpc0hvdmVyaW5nID0gcmVmKGZhbHNlKVxuY29uc3QgaXNWZXJ0aWNhbCA9IGNvbXB1dGVkKCgpID0+IHN0YXRlLnZhbHVlLnBvc2l0aW9uID09PSAnbGVmdCcgfHwgc3RhdGUudmFsdWUucG9zaXRpb24gPT09ICdyaWdodCcpXG5cbmNvbnN0IGFuY2hvclBvcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgaGFsZldpZHRoID0gKHBhbmVsRWwudmFsdWU/LmNsaWVudFdpZHRoIHx8IDApIC8gMlxuICBjb25zdCBoYWxmSGVpZ2h0ID0gKHBhbmVsRWwudmFsdWU/LmNsaWVudEhlaWdodCB8fCAwKSAvIDJcblxuICBjb25zdCBsZWZ0ID0gc3RhdGUudmFsdWUubGVmdCAqIHdpbmRvd1NpemUud2lkdGggLyAxMDBcbiAgY29uc3QgdG9wID0gc3RhdGUudmFsdWUudG9wICogd2luZG93U2l6ZS5oZWlnaHQgLyAxMDBcblxuICBzd2l0Y2ggKHN0YXRlLnZhbHVlLnBvc2l0aW9uKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IGNsYW1wKGxlZnQsIGhhbGZXaWR0aCArIHBhbmVsTWFyZ2lucy5sZWZ0LCB3aW5kb3dTaXplLndpZHRoIC0gaGFsZldpZHRoIC0gcGFuZWxNYXJnaW5zLnJpZ2h0KSxcbiAgICAgICAgdG9wOiBwYW5lbE1hcmdpbnMudG9wICsgaGFsZkhlaWdodCxcbiAgICAgIH1cbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiB3aW5kb3dTaXplLndpZHRoIC0gcGFuZWxNYXJnaW5zLnJpZ2h0IC0gaGFsZkhlaWdodCxcbiAgICAgICAgdG9wOiBjbGFtcCh0b3AsIGhhbGZXaWR0aCArIHBhbmVsTWFyZ2lucy50b3AsIHdpbmRvd1NpemUuaGVpZ2h0IC0gaGFsZldpZHRoIC0gcGFuZWxNYXJnaW5zLmJvdHRvbSksXG4gICAgICB9XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiBwYW5lbE1hcmdpbnMubGVmdCArIGhhbGZIZWlnaHQsXG4gICAgICAgIHRvcDogY2xhbXAodG9wLCBoYWxmV2lkdGggKyBwYW5lbE1hcmdpbnMudG9wLCB3aW5kb3dTaXplLmhlaWdodCAtIGhhbGZXaWR0aCAtIHBhbmVsTWFyZ2lucy5ib3R0b20pLFxuICAgICAgfVxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IGNsYW1wKGxlZnQsIGhhbGZXaWR0aCArIHBhbmVsTWFyZ2lucy5sZWZ0LCB3aW5kb3dTaXplLndpZHRoIC0gaGFsZldpZHRoIC0gcGFuZWxNYXJnaW5zLnJpZ2h0KSxcbiAgICAgICAgdG9wOiB3aW5kb3dTaXplLmhlaWdodCAtIHBhbmVsTWFyZ2lucy5ib3R0b20gLSBoYWxmSGVpZ2h0LFxuICAgICAgfVxuICB9XG59KVxuXG5sZXQgX3RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsXG5mdW5jdGlvbiBicmluZ1VwKCkge1xuICBpc0hvdmVyaW5nLnZhbHVlID0gdHJ1ZVxuICBpZiAoc3RhdGUudmFsdWUubWluaW1pemVQYW5lbEluYWN0aXZlIDwgMClcbiAgICByZXR1cm5cbiAgaWYgKF90aW1lcilcbiAgICBjbGVhclRpbWVvdXQoX3RpbWVyKVxuICBfdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBpc0hvdmVyaW5nLnZhbHVlID0gZmFsc2VcbiAgfSwgK3N0YXRlLnZhbHVlLm1pbmltaXplUGFuZWxJbmFjdGl2ZSB8fCAwKVxufVxuXG5jb25zdCBpc0hpZGRlbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKHN0YXRlLnZhbHVlLm9wZW4pXG4gICAgcmV0dXJuIGZhbHNlXG4gIGlmIChzZXR0aW5ncy51aS5zaG93UGFuZWwgPT09IHRydWUpXG4gICAgcmV0dXJuIGZhbHNlXG4gIGlmIChzZXR0aW5ncy51aS5zaG93UGFuZWwgPT09IGZhbHNlKVxuICAgIHJldHVybiB0cnVlXG4gIC8vIElmIG5vdCBleHBsaWNpdGx5IHNldCwgaGlkZSB0aGUgcGFuZWwgb24gZmlyc3QgbG9hZFxuICByZXR1cm4gaXNJbml0XG59KVxuXG5jb25zdCBpc01pbmltaXplZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKHN0YXRlLnZhbHVlLm1pbmltaXplUGFuZWxJbmFjdGl2ZSA8IDApXG4gICAgcmV0dXJuIGZhbHNlXG4gIGlmIChzdGF0ZS52YWx1ZS5taW5pbWl6ZVBhbmVsSW5hY3RpdmUgPT09IDApXG4gICAgcmV0dXJuIHRydWVcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBjb21wYXRpYmlsaXR5XG4gIGNvbnN0IGlzVG91Y2hEZXZpY2UgPSAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMCB8fCBuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyA+IDBcbiAgcmV0dXJuICFpc0RyYWdnaW5nLnZhbHVlXG4gICAgJiYgIXN0YXRlLnZhbHVlLm9wZW5cbiAgICAmJiAhaXNIb3ZlcmluZy52YWx1ZVxuICAgICYmICFpc1RvdWNoRGV2aWNlXG4gICAgJiYgc3RhdGUudmFsdWUubWluaW1pemVQYW5lbEluYWN0aXZlXG59KVxuXG5jb25zdCBhbmNob3JTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiBgJHthbmNob3JQb3MudmFsdWUubGVmdH1weGAsXG4gICAgdG9wOiBgJHthbmNob3JQb3MudmFsdWUudG9wfXB4YCxcbiAgICBwb2ludGVyRXZlbnRzOiBpc0hpZGRlbi52YWx1ZSA/ICdub25lJyA6ICdhdXRvJyxcbiAgfSBhcyBjb25zdFxufSlcblxuY29uc3QgcGFuZWxTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3Qgc3R5bGU6IGFueSA9IHtcbiAgICB0cmFuc2Zvcm06IGlzVmVydGljYWwudmFsdWVcbiAgICAgID8gYHRyYW5zbGF0ZSgke2lzTWluaW1pemVkLnZhbHVlID8gYGNhbGMoLTUwJSAke3N0YXRlLnZhbHVlLnBvc2l0aW9uID09PSAncmlnaHQnID8gJysnIDogJy0nfSAxNXB4KWAgOiAnLTUwJSd9LCAtNTAlKSByb3RhdGUoOTBkZWcpYFxuICAgICAgOiBgdHJhbnNsYXRlKC01MCUsICR7aXNNaW5pbWl6ZWQudmFsdWUgPyBgY2FsYygtNTAlICR7c3RhdGUudmFsdWUucG9zaXRpb24gPT09ICd0b3AnID8gJy0nIDogJysnfSAxNXB4KWAgOiAnLTUwJSd9KWAsXG4gIH1cbiAgaWYgKGlzSGlkZGVuLnZhbHVlKSB7XG4gICAgc3R5bGUub3BhY2l0eSA9IDBcbiAgICBzdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnXG4gIH1cbiAgaWYgKGlzTWluaW1pemVkLnZhbHVlKSB7XG4gICAgc3dpdGNoIChzdGF0ZS52YWx1ZS5wb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgc3R5bGUuYm9yZGVyVG9wTGVmdFJhZGl1cyA9ICcwJ1xuICAgICAgICBzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cyA9ICcwJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzID0gJzAnXG4gICAgICAgIHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzID0gJzAnXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIGlmIChpc0RyYWdnaW5nLnZhbHVlKVxuICAgIHN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSAhaW1wb3J0YW50J1xuICByZXR1cm4gc3R5bGVcbn0pXG5cbmNvbnN0IHsgd2lkdGg6IGZyYW1lV2lkdGgsIGhlaWdodDogZnJhbWVIZWlnaHQgfSA9IHVzZUVsZW1lbnRCb3VuZGluZyhmcmFtZUJveClcblxuY29uc3QgaWZyYW1lU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZXF1ZW5jZXMsIHRzL25vLXVudXNlZC1leHByZXNzaW9uc1xuICBtb3VzZVBvc2l0aW9uLngsIG1vdXNlUG9zaXRpb24ueVxuXG4gIGNvbnN0IGhhbGZIZWlnaHQgPSAocGFuZWxFbC52YWx1ZT8uY2xpZW50SGVpZ2h0IHx8IDApIC8gMlxuXG4gIGNvbnN0IGZyYW1lTWFyZ2luID0ge1xuICAgIGxlZnQ6IHBhbmVsTWFyZ2lucy5sZWZ0ICsgaGFsZkhlaWdodCxcbiAgICB0b3A6IHBhbmVsTWFyZ2lucy50b3AgKyBoYWxmSGVpZ2h0LFxuICAgIHJpZ2h0OiBwYW5lbE1hcmdpbnMucmlnaHQgKyBoYWxmSGVpZ2h0LFxuICAgIGJvdHRvbTogcGFuZWxNYXJnaW5zLmJvdHRvbSArIGhhbGZIZWlnaHQsXG4gIH1cblxuICBjb25zdCBtYXJnaW5Ib3Jpem9udGFsID0gZnJhbWVNYXJnaW4ubGVmdCArIGZyYW1lTWFyZ2luLnJpZ2h0XG4gIGNvbnN0IG1hcmdpblZlcnRpY2FsID0gZnJhbWVNYXJnaW4udG9wICsgZnJhbWVNYXJnaW4uYm90dG9tXG5cbiAgY29uc3QgbWF4V2lkdGggPSB3aW5kb3dTaXplLndpZHRoIC0gbWFyZ2luSG9yaXpvbnRhbFxuICBjb25zdCBtYXhIZWlnaHQgPSB3aW5kb3dTaXplLmhlaWdodCAtIG1hcmdpblZlcnRpY2FsXG5cbiAgY29uc3Qgc3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgekluZGV4OiAtMSxcbiAgICBwb2ludGVyRXZlbnRzOiBpc0RyYWdnaW5nLnZhbHVlIHx8ICFzdGF0ZS52YWx1ZS5vcGVuID8gJ25vbmUnIDogJ2F1dG8nLFxuICAgIHdpZHRoOiBgbWluKCR7c3RhdGUudmFsdWUud2lkdGh9dncsIGNhbGMoMTAwdncgLSAke21hcmdpbkhvcml6b250YWx9cHgpKWAsXG4gICAgaGVpZ2h0OiBgbWluKCR7c3RhdGUudmFsdWUuaGVpZ2h0fXZoLCBjYWxjKDEwMHZoIC0gJHttYXJnaW5WZXJ0aWNhbH1weCkpYCxcbiAgfVxuXG4gIGNvbnN0IGFuY2hvciA9IGFuY2hvclBvcy52YWx1ZVxuICBjb25zdCB3aWR0aCA9IE1hdGgubWluKG1heFdpZHRoLCBzdGF0ZS52YWx1ZS53aWR0aCAqIHdpbmRvd1NpemUud2lkdGggLyAxMDApXG4gIGNvbnN0IGhlaWdodCA9IE1hdGgubWluKG1heEhlaWdodCwgc3RhdGUudmFsdWUuaGVpZ2h0ICogd2luZG93U2l6ZS5oZWlnaHQgLyAxMDApXG5cbiAgY29uc3QgYW5jaG9yWCA9IGFuY2hvcj8ubGVmdCB8fCAwXG4gIGNvbnN0IGFuY2hvclkgPSBhbmNob3I/LnRvcCB8fCAwXG5cbiAgc3dpdGNoIChzdGF0ZS52YWx1ZS5wb3NpdGlvbikge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIHN0eWxlLmxlZnQgPSBgJHstZnJhbWVXaWR0aC52YWx1ZSAvIDJ9cHhgXG4gICAgICBzdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKDAsIDApJ1xuICAgICAgaWYgKChhbmNob3JYIC0gZnJhbWVNYXJnaW4ubGVmdCkgPCB3aWR0aCAvIDIpXG4gICAgICAgIHN0eWxlLmxlZnQgPSBgJHt3aWR0aCAvIDIgLSBhbmNob3JYICsgZnJhbWVNYXJnaW4ubGVmdCAtIGZyYW1lV2lkdGgudmFsdWUgLyAyfXB4YFxuICAgICAgZWxzZSBpZiAoKHdpbmRvd1NpemUud2lkdGggLSBhbmNob3JYIC0gZnJhbWVNYXJnaW4ucmlnaHQpIDwgd2lkdGggLyAyKVxuICAgICAgICBzdHlsZS5sZWZ0ID0gYCR7d2luZG93U2l6ZS53aWR0aCAtIGFuY2hvclggLSB3aWR0aCAvIDIgLSBmcmFtZU1hcmdpbi5yaWdodCAtIGZyYW1lV2lkdGgudmFsdWUgLyAyfXB4YFxuICAgICAgYnJlYWtcbiAgICBjYXNlICdyaWdodCc6XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICBzdHlsZS50b3AgPSBgJHstZnJhbWVIZWlnaHQudmFsdWUgLyAyfXB4YFxuICAgICAgc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgwLCAwKSdcbiAgICAgIGlmICgoYW5jaG9yWSAtIGZyYW1lTWFyZ2luLnRvcCkgPCBoZWlnaHQgLyAyKVxuICAgICAgICBzdHlsZS50b3AgPSBgJHtoZWlnaHQgLyAyIC0gYW5jaG9yWSArIGZyYW1lTWFyZ2luLnRvcCAtIGZyYW1lSGVpZ2h0LnZhbHVlIC8gMn1weGBcbiAgICAgIGVsc2UgaWYgKCh3aW5kb3dTaXplLmhlaWdodCAtIGFuY2hvclkgLSBmcmFtZU1hcmdpbi5ib3R0b20pIDwgaGVpZ2h0IC8gMilcbiAgICAgICAgc3R5bGUudG9wID0gYCR7d2luZG93U2l6ZS5oZWlnaHQgLSBhbmNob3JZIC0gaGVpZ2h0IC8gMiAtIGZyYW1lTWFyZ2luLmJvdHRvbSAtIGZyYW1lSGVpZ2h0LnZhbHVlIC8gMn1weGBcbiAgICAgIGJyZWFrXG4gIH1cblxuICBzd2l0Y2ggKHN0YXRlLnZhbHVlLnBvc2l0aW9uKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHN0eWxlLnRvcCA9IDBcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgc3R5bGUucmlnaHQgPSAwXG4gICAgICBicmVha1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgc3R5bGUubGVmdCA9IDBcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICBkZWZhdWx0OlxuICAgICAgc3R5bGUuYm90dG9tID0gMFxuICAgICAgYnJlYWtcbiAgfVxuXG4gIHJldHVybiBzdHlsZVxufSlcblxuY29uc3QgdGltZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgbGV0IHR5cGUgPSAnJ1xuICBjb25zdCBtZXRyaWMgPSBwcm9wcy5jbGllbnQubWV0cmljcy5sb2FkaW5nKClcbiAgbGV0IHRpbWUgPSAtMVxuICBpZiAobWV0cmljLnBhZ2VFbmQgJiYgbWV0cmljLnBhZ2VTdGFydCkge1xuICAgIHRpbWUgPSBtZXRyaWMucGFnZUVuZCAtIG1ldHJpYy5wYWdlU3RhcnRcbiAgICB0eXBlID0gJ1BhZ2UnXG4gIH1cbiAgZWxzZSBpZiAobWV0cmljLmFwcExvYWQgJiYgbWV0cmljLmFwcEluaXQpIHtcbiAgICB0aW1lID0gbWV0cmljLmFwcExvYWQgLSBtZXRyaWMuYXBwSW5pdFxuICAgIHR5cGUgPSAnQXBwJ1xuICB9XG4gIGJyaW5nVXAoKVxuICBpZiAodGltZSA8IDApXG4gICAgcmV0dXJuIFt0eXBlLCAnJywgJy0nXVxuICByZXR1cm4gW3R5cGUsIC4uLm1pbGxpc2Vjb25kVG9IdW1hbnJlYWRhYmxlKHRpbWUpXVxufSlcblxub25Nb3VudGVkKCgpID0+IHtcbiAgYnJpbmdVcCgpXG59KVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGlkPVwibnV4dC1kZXZ0b29scy1hbmNob3JcIlxuICAgIHJlZj1cImFuY2hvckVsXCJcbiAgICA6c3R5bGU9XCJbYW5jaG9yU3R5bGUsIHZhcnNdXCJcbiAgICA6Y2xhc3M9XCJ7XG4gICAgICAnbnV4dC1kZXZ0b29scy12ZXJ0aWNhbCc6IGlzVmVydGljYWwsXG4gICAgICAnbnV4dC1kZXZ0b29scy1oaWRlJzogaXNNaW5pbWl6ZWQsXG4gICAgfVwiXG4gICAgQG1vdXNlbW92ZT1cImJyaW5nVXBcIiBkYXRhLXYtaW5zcGVjdG9yPVwibm9kZV9tb2R1bGVzL0BudXh0L2RldnRvb2xzL2Rpc3QvcnVudGltZS9wbHVnaW5zL3ZpZXcvTWFpbi52dWU6MzQwOjNcIlxuICA+XG4gICAgPGRpdlxuICAgICAgdi1pZj1cIiFpc1NhZmFyaVwiXG4gICAgICBjbGFzcz1cIm51eHQtZGV2dG9vbHMtZ2xvd2luZ1wiXG4gICAgICA6c3R5bGU9XCJpc0RyYWdnaW5nID8gJ29wYWNpdHk6IDAuNiAhaW1wb3J0YW50JyA6ICcnXCIgZGF0YS12LWluc3BlY3Rvcj1cIm5vZGVfbW9kdWxlcy9AbnV4dC9kZXZ0b29scy9kaXN0L3J1bnRpbWUvcGx1Z2lucy92aWV3L01haW4udnVlOjM1MDo1XCJcbiAgICAvPlxuICAgIDxkaXZcbiAgICAgIHJlZj1cInBhbmVsRWxcIlxuICAgICAgY2xhc3M9XCJudXh0LWRldnRvb2xzLXBhbmVsXCJcbiAgICAgIDpzdHlsZT1cInBhbmVsU3R5bGVcIlxuICAgICAgQHBvaW50ZXJkb3duPVwib25Qb2ludGVyRG93blwiIGRhdGEtdi1pbnNwZWN0b3I9XCJub2RlX21vZHVsZXMvQG51eHQvZGV2dG9vbHMvZGlzdC9ydW50aW1lL3BsdWdpbnMvdmlldy9NYWluLnZ1ZTozNTU6NVwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cIm51eHQtZGV2dG9vbHMtaWNvbi1idXR0b24gbnV4dC1kZXZ0b29scy1udXh0LWJ1dHRvblwiXG4gICAgICAgIHRpdGxlPVwiVG9nZ2xlIE51eHQgRGV2VG9vbHNcIlxuICAgICAgICA6c3R5bGU9XCJzdGF0ZS5vcGVuID8gJycgOiAnZmlsdGVyOnNhdHVyYXRlKDApJ1wiXG4gICAgICAgIEBjbGljaz1cImNsaWVudC5kZXZ0b29scy50b2dnbGUoKVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJub2RlX21vZHVsZXMvQG51eHQvZGV2dG9vbHMvZGlzdC9ydW50aW1lL3BsdWdpbnMvdmlldy9NYWluLnZ1ZTozNjE6N1wiXG4gICAgICA+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDMyNCAzMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDotMXB4OyBoZWlnaHQ6IDEuMmVtOyB3aWR0aDogMS4yZW07XCIgZGF0YS12LWluc3BlY3Rvcj1cIm5vZGVfbW9kdWxlcy9AbnV4dC9kZXZ0b29scy9kaXN0L3J1bnRpbWUvcGx1Z2lucy92aWV3L01haW4udnVlOjM2Nzo5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTgxLjc2NyAyNzBIMzAyLjIxMUMzMDYuMDM3IDI3MCAzMDkuNzk1IDI2OS4wMDMgMzEzLjEwOCAyNjcuMTA3QzMxNi40MjEgMjY1LjIxMSAzMTkuMTcyIDI2Mi40ODQgMzIxLjA4NCAyNTkuMkMzMjIuOTk2IDI1NS45MTUgMzI0LjAwMiAyNTIuMTkgMzI0IDI0OC4zOTlDMzIzLjk5OCAyNDQuNjA3IDMyMi45ODkgMjQwLjg4MyAzMjEuMDc0IDIzNy42MDFMMjQwLjE4NyA5OC43NDM5QzIzOC4yNzUgOTUuNDYwNyAyMzUuNTI1IDkyLjczNDIgMjMyLjIxMyA5MC44Mzg1QzIyOC45MDEgODguOTQyOSAyMjUuMTQzIDg3Ljk0NDkgMjIxLjMxOCA4Ny45NDQ5QzIxNy40OTQgODcuOTQ0OSAyMTMuNzM2IDg4Ljk0MjkgMjEwLjQyNCA5MC44Mzg1QzIwNy4xMTIgOTIuNzM0MiAyMDQuMzYxIDk1LjQ2MDcgMjAyLjQ0OSA5OC43NDM5TDE4MS43NjcgMTM0LjI3MkwxNDEuMzI5IDY0Ljc5NzVDMTM5LjQxNiA2MS41MTQ1IDEzNi42NjQgNTguNzg4NCAxMzMuMzUxIDU2Ljg5MzFDMTMwLjAzOCA1NC45OTc4IDEyNi4yOCA1NCAxMjIuNDU0IDU0QzExOC42MjkgNTQgMTE0Ljg3MSA1NC45OTc4IDExMS41NTggNTYuODkzMUMxMDguMjQ1IDU4Ljc4ODQgMTA1LjQ5MyA2MS41MTQ1IDEwMy41OCA2NC43OTc1TDIuOTI1NTQgMjM3LjYwMUMxLjAxMDY3IDI0MC44ODMgMC4wMDE2NjY1NyAyNDQuNjA3IDIuMDYyNzJlLTA2IDI0OC4zOTlDLTAuMDAxNjYyNDQgMjUyLjE5IDEuMDA0MDcgMjU1LjkxNSAyLjkxNjA1IDI1OS4yQzQuODI4MDMgMjYyLjQ4NCA3LjU3ODg0IDI2NS4yMTEgMTAuODkxOCAyNjcuMTA3QzE0LjIwNDcgMjY5LjAwMyAxNy45NjMgMjcwIDIxLjc4ODYgMjcwSDk3LjM5MzZDMTI3LjM0OSAyNzAgMTQ5LjQ0IDI1Ni45NTkgMTY0LjY0MSAyMzEuNTE3TDIwMS41NDYgMTY4LjE3MkwyMjEuMzEzIDEzNC4yNzJMMjgwLjYzNyAyMzYuMUgyMDEuNTQ2TDE4MS43NjcgMjcwWk05Ni4xNjExIDIzNi4wNjVMNDMuMzk4NCAyMzYuMDU0TDEyMi40OSAxMDAuMjkxTDE2MS45NTMgMTY4LjE3MkwxMzUuNTMxIDIxMy41NDNDMTI1LjQzNiAyMzAuMDUxIDExMy45NjggMjM2LjA2NSA5Ni4xNjExIDIzNi4wNjVaXCIgZmlsbD1cIiMwMERDODJcIiBkYXRhLXYtaW5zcGVjdG9yPVwibm9kZV9tb2R1bGVzL0BudXh0L2RldnRvb2xzL2Rpc3QvcnVudGltZS9wbHVnaW5zL3ZpZXcvTWFpbi52dWU6MzcxOjExXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9XCJib3JkZXItbGVmdDogMXB4IHNvbGlkICM4ODgzO3dpZHRoOjFweDtoZWlnaHQ6MTBweDtcIlxuICAgICAgICBjbGFzcz1cIm51eHQtZGV2dG9vbHMtcGFuZWwtY29udGVudFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJub2RlX21vZHVsZXMvQG51eHQvZGV2dG9vbHMvZGlzdC9ydW50aW1lL3BsdWdpbnMvdmlldy9NYWluLnZ1ZTozNzQ6N1wiXG4gICAgICAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm51eHQtZGV2dG9vbHMtcGFuZWwtY29udGVudCBudXh0LWRldnRvb2xzLWxhYmVsXCJcbiAgICAgICAgOnRpdGxlPVwiYCR7dGltZVswXX0gbG9hZCB0aW1lYFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJub2RlX21vZHVsZXMvQG51eHQvZGV2dG9vbHMvZGlzdC9ydW50aW1lL3BsdWdpbnMvdmlldy9NYWluLnZ1ZTozNzg6N1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJudXh0LWRldnRvb2xzLWxhYmVsLW1haW5cIiBkYXRhLXYtaW5zcGVjdG9yPVwibm9kZV9tb2R1bGVzL0BudXh0L2RldnRvb2xzL2Rpc3QvcnVudGltZS9wbHVnaW5zL3ZpZXcvTWFpbi52dWU6MzgyOjlcIj5cbiAgICAgICAgICB7eyB0aW1lWzFdIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm51eHQtZGV2dG9vbHMtbGFiZWwtc2Vjb25kYXJ5XCIgZGF0YS12LWluc3BlY3Rvcj1cIm5vZGVfbW9kdWxlcy9AbnV4dC9kZXZ0b29scy9kaXN0L3J1bnRpbWUvcGx1Z2lucy92aWV3L01haW4udnVlOjM4NTo5XCI+XG4gICAgICAgICAge3sgdGltZVsyXSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiY2xpZW50Lmluc3BlY3RvclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9XCJib3JkZXItbGVmdDogMXB4IHNvbGlkICM4ODgzO3dpZHRoOjFweDtoZWlnaHQ6MTBweDtcIlxuICAgICAgICAgIGNsYXNzPVwibnV4dC1kZXZ0b29scy1wYW5lbC1jb250ZW50XCIgZGF0YS12LWluc3BlY3Rvcj1cIm5vZGVfbW9kdWxlcy9AbnV4dC9kZXZ0b29scy9kaXN0L3J1bnRpbWUvcGx1Z2lucy92aWV3L01haW4udnVlOjM5MDo5XCJcbiAgICAgICAgLz5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm51eHQtZGV2dG9vbHMtaWNvbi1idXR0b24gbnV4dC1kZXZ0b29scy1wYW5lbC1jb250ZW50XCIgdGl0bGU9XCJUb2dnbGUgQ29tcG9uZW50IEluc3BlY3RvclwiIEBjbGljaz1cImNsaWVudC5pbnNwZWN0b3IudG9nZ2xlXCIgZGF0YS12LWluc3BlY3Rvcj1cIm5vZGVfbW9kdWxlcy9AbnV4dC9kZXZ0b29scy9kaXN0L3J1bnRpbWUvcGx1Z2lucy92aWV3L01haW4udnVlOjM5NDo5XCI+XG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMS4yZW07IHdpZHRoOiAxLjJlbTsgb3BhY2l0eTowLjU7XCJcbiAgICAgICAgICAgIDpzdHlsZT1cImNsaWVudC5pbnNwZWN0b3IuaXNFbmFibGVkLnZhbHVlID8gJ29wYWNpdHk6MTtjb2xvcjojMDBkYzgyJyA6ICcnXCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBkYXRhLXYtaW5zcGVjdG9yPVwibm9kZV9tb2R1bGVzL0BudXh0L2RldnRvb2xzL2Rpc3QvcnVudGltZS9wbHVnaW5zL3ZpZXcvTWFpbi52dWU6Mzk1OjExXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZyBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkYXRhLXYtaW5zcGVjdG9yPVwibm9kZV9tb2R1bGVzL0BudXh0L2RldnRvb2xzL2Rpc3QvcnVudGltZS9wbHVnaW5zL3ZpZXcvTWFpbi52dWU6NDAxOjEzXCI+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkYXRhLXYtaW5zcGVjdG9yPVwibm9kZV9tb2R1bGVzL0BudXh0L2RldnRvb2xzL2Rpc3QvcnVudGltZS9wbHVnaW5zL3ZpZXcvTWFpbi52dWU6NDAxOjExNFwiIC8+PHBhdGggZD1cIk01IDEyYTcgNyAwIDEgMCAxNCAwYTcgNyAwIDEgMC0xNCAwbTctOXYybS05IDdoMm03IDd2Mm03LTloMlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJub2RlX21vZHVsZXMvQG51eHQvZGV2dG9vbHMvZGlzdC9ydW50aW1lL3BsdWdpbnMvdmlldy9NYWluLnZ1ZTo0MDE6MTY3XCIgLz48L2c+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIHYtc2hvdz1cIiFjbGllbnQuaW5zcGVjdG9yPy5pc0VuYWJsZWQudmFsdWVcIlxuICAgICAgcmVmPVwiZnJhbWVCb3hcIlxuICAgICAgOnN0eWxlPVwiaWZyYW1lU3R5bGVcIiBkYXRhLXYtaW5zcGVjdG9yPVwibm9kZV9tb2R1bGVzL0BudXh0L2RldnRvb2xzL2Rpc3QvcnVudGltZS9wbHVnaW5zL3ZpZXcvTWFpbi52dWU6NDA3OjVcIlxuICAgID5cbiAgICAgIDxGcmFtZUJveFxuICAgICAgICA6Y2xpZW50PVwiY2xpZW50XCJcbiAgICAgICAgOmlzLWRyYWdnaW5nPVwiaXNEcmFnZ2luZ1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJub2RlX21vZHVsZXMvQG51eHQvZGV2dG9vbHMvZGlzdC9ydW50aW1lL3BsdWdpbnMvdmlldy9NYWluLnZ1ZTo0MTI6N1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4jbnV4dC1kZXZ0b29scy1hbmNob3J7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4IWltcG9ydGFudDtwb3NpdGlvbjpmaXhlZDt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKDApO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGNlbnRlcjt3aWR0aDowO3otaW5kZXg6MjE0NzQ4MzY0NX0jbnV4dC1kZXZ0b29scy1hbmNob3IgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9I251eHQtZGV2dG9vbHMtYW5jaG9yIGJ1dHRvbntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjttYXJnaW46MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowfSNudXh0LWRldnRvb2xzLWFuY2hvciAubnV4dC1kZXZ0b29scy1sYWJlbHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTouOGVtO2dhcDozcHg7anVzdGlmeS1pdGVtczpjZW50ZXI7bGluZS1oZWlnaHQ6MWVtO3BhZGRpbmc6MCA3cHggMCA4cHh9I251eHQtZGV2dG9vbHMtYW5jaG9yIC5udXh0LWRldnRvb2xzLWxhYmVsIC5udXh0LWRldnRvb2xzLWxhYmVsLW1haW57b3BhY2l0eTouOH0jbnV4dC1kZXZ0b29scy1hbmNob3IgLm51eHQtZGV2dG9vbHMtbGFiZWwgLm51eHQtZGV2dG9vbHMtbGFiZWwtc2Vjb25kYXJ5e2ZvbnQtc2l6ZTouOGVtO2xpbmUtaGVpZ2h0Oi42ZW07b3BhY2l0eTouNX0jbnV4dC1kZXZ0b29scy1hbmNob3IgLm51eHQtZGV2dG9vbHMtbnV4dC1idXR0b257ZmxleDpub25lfSNudXh0LWRldnRvb2xzLWFuY2hvci5udXh0LWRldnRvb2xzLXZlcnRpY2FsIC5udXh0LWRldnRvb2xzLW51eHQtYnV0dG9ue3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKX0jbnV4dC1kZXZ0b29scy1hbmNob3IubnV4dC1kZXZ0b29scy12ZXJ0aWNhbCAubnV4dC1kZXZ0b29scy1sYWJlbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweDtwYWRkaW5nOjAgMTBweDt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyl9I251eHQtZGV2dG9vbHMtYW5jaG9yIC5udXh0LWRldnRvb2xzLXBhbmVse2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjpibHVyKDEwcHgpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDEwcHgpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tbnV4dC1kZXZ0b29scy13aWRnZXQtYmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbnV4dC1kZXZ0b29scy13aWRnZXQtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEwMHB4O2JveC1zaGFkb3c6MnB4IDJweCA4cHggdmFyKC0tbnV4dC1kZXZ0b29scy13aWRnZXQtc2hhZG93KTtjb2xvcjp2YXIoLS1udXh0LWRldnRvb2xzLXdpZGdldC1mZyk7ZGlzcGxheTpmbGV4O2dhcDoycHg7aGVpZ2h0OjMwcHg7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bGVmdDowO21heC13aWR0aDoxNTBweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzoycHggMnB4IDJweCAyLjVweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt0b3VjaC1hY3Rpb246bm9uZTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNpdGlvbjphbGwgLjZzIGVhc2UsbWF4LXdpZHRoIC42cyBlYXNlLHBhZGRpbmcgLjVzIGVhc2UsdHJhbnNmb3JtIC40cyBlYXNlLG9wYWNpdHkgLjJzIGVhc2U7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfSNudXh0LWRldnRvb2xzLWFuY2hvci5udXh0LWRldnRvb2xzLWhpZGUgLm51eHQtZGV2dG9vbHMtcGFuZWx7bWF4LXdpZHRoOjMycHg7cGFkZGluZzoycHggMH0jbnV4dC1kZXZ0b29scy1hbmNob3IubnV4dC1kZXZ0b29scy12ZXJ0aWNhbCAubnV4dC1kZXZ0b29scy1wYW5lbHtib3gtc2hhZG93OjJweCAtMnB4IDhweCB2YXIoLS1udXh0LWRldnRvb2xzLXdpZGdldC1zaGFkb3cpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSByb3RhdGUoOTBkZWcpfSNudXh0LWRldnRvb2xzLWFuY2hvciAubnV4dC1kZXZ0b29scy1wYW5lbC1jb250ZW50e3RyYW5zaXRpb246b3BhY2l0eSAuNHMgZWFzZX0jbnV4dC1kZXZ0b29scy1hbmNob3IubnV4dC1kZXZ0b29scy1oaWRlIC5udXh0LWRldnRvb2xzLXBhbmVsLWNvbnRlbnR7b3BhY2l0eTowfSNudXh0LWRldnRvb2xzLWFuY2hvciAubnV4dC1kZXZ0b29scy1pY29uLWJ1dHRvbnthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czoxMDAlO2JvcmRlci13aWR0aDowO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO29wYWNpdHk6Ljg7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLWluLW91dDt3aWR0aDozMHB4fSNudXh0LWRldnRvb2xzLWFuY2hvciAubnV4dC1kZXZ0b29scy1pY29uLWJ1dHRvbjpob3ZlcntvcGFjaXR5OjF9I251eHQtZGV2dG9vbHMtYW5jaG9yOmhvdmVyIC5udXh0LWRldnRvb2xzLWdsb3dpbmd7b3BhY2l0eTouNn0jbnV4dC1kZXZ0b29scy1hbmNob3IgLm51eHQtZGV2dG9vbHMtZ2xvd2luZ3tiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg0NWRlZywjMDBkYzgyLCMwMGRjODIsIzAwZGM4Mik7Ym9yZGVyLXJhZGl1czo5OTk5cHg7ZmlsdGVyOmJsdXIoNjBweCk7aGVpZ2h0OjE2MHB4O2xlZnQ6MDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNpdGlvbjphbGwgMXMgZWFzZTt3aWR0aDoxNjBweDt6LWluZGV4Oi0xfUBtZWRpYSBwcmludHsjbnV4dC1kZXZ0b29scy1hbmNob3J7ZGlzcGxheTpub25lfX1cbjwvc3R5bGU+XG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvbm9kZV9tb2R1bGVzL0BudXh0L2RldnRvb2xzL2Rpc3QvcnVudGltZS9wbHVnaW5zL3ZpZXcvTWFpbi52dWUiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19 |