import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/controls/Right.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/viewer/controls/ButtonToggle.vue"; import { default as __nuxt_component_1 } from "/_nuxt/components/viewer/controls/ButtonGroup.vue"; import { default as __nuxt_component_2 } from "/_nuxt/components/viewer/camera/Menu.vue"; /* Injection by vite-plugin-vue-inspector Start */ import { createVNode as __createVNode,createElementVNode as __createElementVNode,createElementBlock as __createElementBlock } 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 _createVNode(...args) { return _interopVNode(__createVNode(...args)) } function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) } function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...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 { useCameraUtilities, useViewerShortcuts } from "/_nuxt/lib/viewer/composables/ui.ts"; import { useMixpanel } from "/_nuxt/lib/core/composables/mp.ts"; import { onClickOutside, useBreakpoints } from "/_nuxt/node_modules/@vueuse/core/index.mjs?v=e4f18c29"; import { TailwindBreakpoints } from "/_nuxt/lib/common/helpers/tailwind.ts"; import { useEmbed } from "/_nuxt/lib/viewer/composables/setup/embed.ts"; import { Fullscreen, Video } from "/_nuxt/node_modules/.cache/vite/client/deps/lucide-vue-next.js?v=e4f18c29"; import { useSmartTooltipDelay } from "/_nuxt/composables/tooltips.ts"; import { ref, computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "ViewerControlsRight", props: { sidebarOpen: { type: Boolean, required: false, default: false }, sidebarWidth: { type: Number, required: false, default: 280 } }, setup(__props, { expose: __expose }) { __expose(); const props = __props; const { zoomExtentsOrSelection } = useCameraUtilities(); const { registerShortcuts, getShortcutDisplayText, shortcuts } = useViewerShortcuts(); const mixpanel = useMixpanel(); const { getTooltipProps } = useSmartTooltipDelay(); const { isEnabled: isEmbedEnabled } = useEmbed(); const breakpoints = useBreakpoints(TailwindBreakpoints); const isSmOrLarger = breakpoints.greaterOrEqual("sm"); const isLgOrLarger = breakpoints.greaterOrEqual("lg"); const activePanel = ref("none"); const menuContainer = ref(null); const buttonContainer = ref(null); const dynamicStyles = computed(() => { if (props.sidebarOpen) { const offset = isSmOrLarger.value && !isLgOrLarger.value ? 1 : 0.75; return { right: `${props.sidebarWidth / 16 + offset}rem` }; } else { return { right: "0.75rem" }; } }); const toggleActivePanel = (panel) => { activePanel.value = activePanel.value === panel ? "none" : panel; }; const trackAndzoomExtentsOrSelection = () => { zoomExtentsOrSelection(); mixpanel.track("Viewer Action", { type: "action", name: "zoom", source: "button" }); }; registerShortcuts({ ZoomExtentsOrSelection: () => trackAndzoomExtentsOrSelection() }); onClickOutside( menuContainer, () => { activePanel.value = "none"; }, { ignore: [buttonContainer] } ); const __returned__ = { props, zoomExtentsOrSelection, registerShortcuts, getShortcutDisplayText, shortcuts, mixpanel, getTooltipProps, isEmbedEnabled, breakpoints, isSmOrLarger, isLgOrLarger, activePanel, menuContainer, buttonContainer, dynamicStyles, toggleActivePanel, trackAndzoomExtentsOrSelection, get Fullscreen() { return Fullscreen; }, get Video() { return Video; } }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { resolveComponent as _resolveComponent, resolveDirective as _resolveDirective, withDirectives as _withDirectives, withCtx as _withCtx, vShow as _vShow, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_ViewerControlsButtonToggle = __nuxt_component_0; const _component_ViewerControlsButtonGroup = __nuxt_component_1; const _component_ViewerCameraMenu = __nuxt_component_2; const _directive_tippy = _resolveDirective("tippy"); return _openBlock(), _createElementBlock( "aside", { ref: "buttonContainer", class: _normalizeClass([ "absolute z-20", $setup.isEmbedEnabled ? "top-[0.5rem]" : "top-[3.75rem] sm:top-[3.5rem] lg:top-[3.75rem]" ]), style: _normalizeStyle($setup.dynamicStyles), "data-v-inspector": "components/viewer/controls/Right.vue:2:3" }, [ _createVNode( _component_ViewerControlsButtonGroup, { ref: "buttonContainer", direction: "vertical", "data-v-inspector": "components/viewer/controls/Right.vue:10:5" }, { default: _withCtx(() => [ _withDirectives(_createVNode(_component_ViewerControlsButtonToggle, { icon: $setup.Fullscreen, onClick: _cache[0] || (_cache[0] = ($event) => $setup.trackAndzoomExtentsOrSelection()), "data-v-inspector": "components/viewer/controls/Right.vue:11:7" }, null, 8, ["icon"]), [ [ _directive_tippy, $setup.getTooltipProps( $setup.getShortcutDisplayText($setup.shortcuts.ZoomExtentsOrSelection, { format: "separate" }), { placement: "left" } ) ] ]), _withDirectives(_createVNode(_component_ViewerControlsButtonToggle, { icon: $setup.Video, active: $setup.activePanel === "cameraControls", onClick: _cache[1] || (_cache[1] = ($event) => $setup.toggleActivePanel("cameraControls")), "data-v-inspector": "components/viewer/controls/Right.vue:25:7" }, null, 8, ["icon", "active"]), [ [_directive_tippy, $setup.getTooltipProps("Camera controls", { placement: "left" })] ]) ]), _: 1 /* STABLE */ }, 512 /* NEED_PATCH */ ), _createElementVNode( "div", { ref: "menuContainer", class: _normalizeClass(["absolute right-[2.875rem]", $setup.isEmbedEnabled ? "top-0" : "top-[2.5rem]"]), "data-v-inspector": "components/viewer/controls/Right.vue:33:5" }, [ _withDirectives(_createVNode( _component_ViewerCameraMenu, { "data-v-inspector": "components/viewer/controls/Right.vue:38:7" }, null, 512 /* NEED_PATCH */ ), [ [_vShow, $setup.activePanel === "cameraControls"] ]) ], 2 /* CLASS */ ) ], 6 /* CLASS, STYLE */ ); } _sfc_main.__hmrId = "11b3783b"; 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], ["__file", "D:/speckle-server/packages/frontend-2/components/viewer/controls/Right.vue"]]); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkNBLFNBQVMsb0JBQW9CLDBCQUEwQjtBQUN2RCxTQUFTLG1CQUFtQjtBQUM1QixTQUFTLGdCQUFnQixzQkFBc0I7QUFDL0MsU0FBUywyQkFBMkI7QUFFcEMsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxZQUFZLGFBQWE7Ozs7Ozs7Ozs7OztBQVNsQyxVQUFNLFFBQVE7QUFLZCxVQUFNLEVBQUUsdUJBQXVCLElBQUksbUJBQW1CO0FBQ3RELFVBQU0sRUFBRSxtQkFBbUIsd0JBQXdCLFVBQVUsSUFBSSxtQkFBbUI7QUFDcEYsVUFBTSxXQUFXLFlBQVk7QUFDN0IsVUFBTSxFQUFFLGdCQUFnQixJQUFJLHFCQUFxQjtBQUNqRCxVQUFNLEVBQUUsV0FBVyxlQUFlLElBQUksU0FBUztBQUUvQyxVQUFNLGNBQWMsZUFBZSxtQkFBbUI7QUFDdEQsVUFBTSxlQUFlLFlBQVksZUFBZSxJQUFJO0FBQ3BELFVBQU0sZUFBZSxZQUFZLGVBQWUsSUFBSTtBQUVwRCxVQUFNLGNBQWMsSUFBaUIsTUFBTTtBQUMzQyxVQUFNLGdCQUFnQixJQUEyQixJQUFJO0FBQ3JELFVBQU0sa0JBQWtCLElBQTJCLElBQUk7QUFFdkQsVUFBTSxnQkFBZ0IsU0FBUyxNQUFNO0FBQ25DLFVBQUksTUFBTSxhQUFhO0FBQ3JCLGNBQU0sU0FBUyxhQUFhLFNBQVMsQ0FBQyxhQUFhLFFBQVEsSUFBSTtBQUMvRCxlQUFPO0FBQUEsVUFDTCxPQUFPLEdBQUcsTUFBTSxlQUFlLEtBQUssTUFBTTtBQUFBLFFBQzVDO0FBQUEsTUFDRixPQUFPO0FBQ0wsZUFBTztBQUFBLFVBQ0wsT0FBTztBQUFBLFFBQ1Q7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBRUQsVUFBTSxvQkFBb0IsQ0FBQyxVQUF1QjtBQUNoRCxrQkFBWSxRQUFRLFlBQVksVUFBVSxRQUFRLFNBQVM7QUFBQSxJQUM3RDtBQUVBLFVBQU0saUNBQWlDLE1BQU07QUFDM0MsNkJBQXVCO0FBQ3ZCLGVBQVMsTUFBTSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsTUFBTSxRQUFRLFFBQVEsU0FBUyxDQUFDO0FBQUEsSUFDcEY7QUFFQSxzQkFBa0I7QUFBQSxNQUNoQix3QkFBd0IsTUFBTSwrQkFBK0I7QUFBQSxJQUMvRCxDQUFDO0FBRUQ7QUFBQSxNQUNFO0FBQUEsTUFDQSxNQUFNO0FBQ0osb0JBQVksUUFBUTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsUUFBUSxDQUFDLGVBQWU7QUFBQSxNQUMxQjtBQUFBLElBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBOUdFO0FBQUEsSUFzQ1E7QUFBQTtBQUFBLE1BckNOLEtBQUk7QUFBQSxNQUNKLE9BQUs7QUFBQSxRQUFDO0FBQUEsUUFDVSx3QkFBYztBQUFBO01BRzdCLE9BQUssZ0JBQUUsb0JBQWE7QUFBQSxNQUFFLG9CQUFpQjtBQUFBOztNQUV4QztBQUFBLFFBcUI0QjtBQUFBO0FBQUEsVUFyQkQsS0FBSTtBQUFBLFVBQWtCLFdBQVU7QUFBQSxVQUFXLG9CQUFpQjtBQUFBOzs0QkFDckYsTUFhRTtBQUFBLDRCQWJGLGFBYUU7QUFBQSxjQUZDLE1BQU07QUFBQSxjQUNOLFNBQUssc0NBQUUsc0NBQThCO0FBQUEsY0FBSSxvQkFBaUI7QUFBQTs7O2dCQVh0QztBQUFBLGtCQUE4Qiw4QkFBdUIsaUJBQVUsd0JBQXNCO0FBQUE7Ozs7Ozs7OzRCQWE1RyxhQUtFO0FBQUEsY0FIQyxNQUFNO0FBQUEsY0FDTixRQUFRLHVCQUFXO0FBQUEsY0FDbkIsU0FBSyxzQ0FBRSx5QkFBaUI7QUFBQSxjQUFvQixvQkFBaUI7QUFBQTtpQ0FIckQsdUJBQWU7QUFBQTs7Ozs7Ozs7TUFPNUI7QUFBQSxRQU1NO0FBQUE7QUFBQSxVQUxKLEtBQUk7QUFBQSxVQUNKLE9BQUssaUJBQUMsNkJBQ0Usd0JBQWM7QUFBQSxVQUE2QixvQkFBaUI7QUFBQTs7MEJBRXBFO0FBQUEsWUFBMkg7QUFBQSxjQUEvRCxvQkFBaUIsNENBQTJDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQkFBOUYsdUJBQVc7QUFBQSIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiUmlnaHQudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8YXNpZGVcclxuICAgIHJlZj1cImJ1dHRvbkNvbnRhaW5lclwiXHJcbiAgICBjbGFzcz1cImFic29sdXRlIHotMjBcIlxyXG4gICAgOmNsYXNzPVwiXHJcbiAgICAgIGlzRW1iZWRFbmFibGVkID8gJ3RvcC1bMC41cmVtXScgOiAndG9wLVszLjc1cmVtXSBzbTp0b3AtWzMuNXJlbV0gbGc6dG9wLVszLjc1cmVtXSdcclxuICAgIFwiXHJcbiAgICA6c3R5bGU9XCJkeW5hbWljU3R5bGVzXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2NvbnRyb2xzL1JpZ2h0LnZ1ZToyOjNcIlxyXG4gID5cclxuICAgIDxWaWV3ZXJDb250cm9sc0J1dHRvbkdyb3VwIHJlZj1cImJ1dHRvbkNvbnRhaW5lclwiIGRpcmVjdGlvbj1cInZlcnRpY2FsXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2NvbnRyb2xzL1JpZ2h0LnZ1ZToxMDo1XCI+XHJcbiAgICAgIDxWaWV3ZXJDb250cm9sc0J1dHRvblRvZ2dsZVxyXG4gICAgICAgIHYtdGlwcHk9XCJcclxuICAgICAgICAgIGdldFRvb2x0aXBQcm9wcyhcclxuICAgICAgICAgICAgZ2V0U2hvcnRjdXREaXNwbGF5VGV4dChzaG9ydGN1dHMuWm9vbUV4dGVudHNPclNlbGVjdGlvbiwge1xyXG4gICAgICAgICAgICAgIGZvcm1hdDogJ3NlcGFyYXRlJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBsYWNlbWVudDogJ2xlZnQnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICAgIDppY29uPVwiRnVsbHNjcmVlblwiXHJcbiAgICAgICAgQGNsaWNrPVwidHJhY2tBbmR6b29tRXh0ZW50c09yU2VsZWN0aW9uKClcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvY29udHJvbHMvUmlnaHQudnVlOjExOjdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8Vmlld2VyQ29udHJvbHNCdXR0b25Ub2dnbGVcclxuICAgICAgICB2LXRpcHB5PVwiZ2V0VG9vbHRpcFByb3BzKCdDYW1lcmEgY29udHJvbHMnLCB7IHBsYWNlbWVudDogJ2xlZnQnIH0pXCJcclxuICAgICAgICA6aWNvbj1cIlZpZGVvXCJcclxuICAgICAgICA6YWN0aXZlPVwiYWN0aXZlUGFuZWwgPT09ICdjYW1lcmFDb250cm9scydcIlxyXG4gICAgICAgIEBjbGljaz1cInRvZ2dsZUFjdGl2ZVBhbmVsKCdjYW1lcmFDb250cm9scycpXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2NvbnRyb2xzL1JpZ2h0LnZ1ZToyNTo3XCJcclxuICAgICAgLz5cclxuICAgIDwvVmlld2VyQ29udHJvbHNCdXR0b25Hcm91cD5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIHJlZj1cIm1lbnVDb250YWluZXJcIlxyXG4gICAgICBjbGFzcz1cImFic29sdXRlIHJpZ2h0LVsyLjg3NXJlbV1cIlxyXG4gICAgICA6Y2xhc3M9XCJpc0VtYmVkRW5hYmxlZCA/ICd0b3AtMCcgOiAndG9wLVsyLjVyZW1dJ1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9jb250cm9scy9SaWdodC52dWU6MzM6NVwiXHJcbiAgICA+XHJcbiAgICAgIDxWaWV3ZXJDYW1lcmFNZW51IHYtc2hvdz1cImFjdGl2ZVBhbmVsID09PSAnY2FtZXJhQ29udHJvbHMnXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2NvbnRyb2xzL1JpZ2h0LnZ1ZTozODo3XCIgLz5cclxuICAgIDwvZGl2PlxyXG4gIDwvYXNpZGU+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyB1c2VDYW1lcmFVdGlsaXRpZXMsIHVzZVZpZXdlclNob3J0Y3V0cyB9IGZyb20gJ35+L2xpYi92aWV3ZXIvY29tcG9zYWJsZXMvdWknXHJcbmltcG9ydCB7IHVzZU1peHBhbmVsIH0gZnJvbSAnfn4vbGliL2NvcmUvY29tcG9zYWJsZXMvbXAnXHJcbmltcG9ydCB7IG9uQ2xpY2tPdXRzaWRlLCB1c2VCcmVha3BvaW50cyB9IGZyb20gJ0B2dWV1c2UvY29yZSdcclxuaW1wb3J0IHsgVGFpbHdpbmRCcmVha3BvaW50cyB9IGZyb20gJ35+L2xpYi9jb21tb24vaGVscGVycy90YWlsd2luZCdcclxuaW1wb3J0IHR5cGUgeyBOdWxsYWJsZSB9IGZyb20gJ0BzcGVja2xlL3NoYXJlZCdcclxuaW1wb3J0IHsgdXNlRW1iZWQgfSBmcm9tICd+L2xpYi92aWV3ZXIvY29tcG9zYWJsZXMvc2V0dXAvZW1iZWQnXHJcbmltcG9ydCB7IEZ1bGxzY3JlZW4sIFZpZGVvIH0gZnJvbSAnbHVjaWRlLXZ1ZS1uZXh0J1xyXG5cclxudHlwZSBBY3RpdmVQYW5lbCA9ICdub25lJyB8ICdjYW1lcmFDb250cm9scydcclxuXHJcbmludGVyZmFjZSBQcm9wcyB7XHJcbiAgc2lkZWJhck9wZW4/OiBib29sZWFuXHJcbiAgc2lkZWJhcldpZHRoPzogbnVtYmVyXHJcbn1cclxuXHJcbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XHJcbiAgc2lkZWJhck9wZW46IGZhbHNlLFxyXG4gIHNpZGViYXJXaWR0aDogMjgwXHJcbn0pXHJcblxyXG5jb25zdCB7IHpvb21FeHRlbnRzT3JTZWxlY3Rpb24gfSA9IHVzZUNhbWVyYVV0aWxpdGllcygpXHJcbmNvbnN0IHsgcmVnaXN0ZXJTaG9ydGN1dHMsIGdldFNob3J0Y3V0RGlzcGxheVRleHQsIHNob3J0Y3V0cyB9ID0gdXNlVmlld2VyU2hvcnRjdXRzKClcclxuY29uc3QgbWl4cGFuZWwgPSB1c2VNaXhwYW5lbCgpXHJcbmNvbnN0IHsgZ2V0VG9vbHRpcFByb3BzIH0gPSB1c2VTbWFydFRvb2x0aXBEZWxheSgpXHJcbmNvbnN0IHsgaXNFbmFibGVkOiBpc0VtYmVkRW5hYmxlZCB9ID0gdXNlRW1iZWQoKVxyXG5cclxuY29uc3QgYnJlYWtwb2ludHMgPSB1c2VCcmVha3BvaW50cyhUYWlsd2luZEJyZWFrcG9pbnRzKVxyXG5jb25zdCBpc1NtT3JMYXJnZXIgPSBicmVha3BvaW50cy5ncmVhdGVyT3JFcXVhbCgnc20nKVxyXG5jb25zdCBpc0xnT3JMYXJnZXIgPSBicmVha3BvaW50cy5ncmVhdGVyT3JFcXVhbCgnbGcnKVxyXG5cclxuY29uc3QgYWN0aXZlUGFuZWwgPSByZWY8QWN0aXZlUGFuZWw+KCdub25lJylcclxuY29uc3QgbWVudUNvbnRhaW5lciA9IHJlZjxOdWxsYWJsZTxIVE1MRWxlbWVudD4+KG51bGwpXHJcbmNvbnN0IGJ1dHRvbkNvbnRhaW5lciA9IHJlZjxOdWxsYWJsZTxIVE1MRWxlbWVudD4+KG51bGwpXHJcblxyXG5jb25zdCBkeW5hbWljU3R5bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGlmIChwcm9wcy5zaWRlYmFyT3Blbikge1xyXG4gICAgY29uc3Qgb2Zmc2V0ID0gaXNTbU9yTGFyZ2VyLnZhbHVlICYmICFpc0xnT3JMYXJnZXIudmFsdWUgPyAxIDogMC43NVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmlnaHQ6IGAke3Byb3BzLnNpZGViYXJXaWR0aCAvIDE2ICsgb2Zmc2V0fXJlbWBcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmlnaHQ6ICcwLjc1cmVtJ1xyXG4gICAgfVxyXG4gIH1cclxufSlcclxuXHJcbmNvbnN0IHRvZ2dsZUFjdGl2ZVBhbmVsID0gKHBhbmVsOiBBY3RpdmVQYW5lbCkgPT4ge1xyXG4gIGFjdGl2ZVBhbmVsLnZhbHVlID0gYWN0aXZlUGFuZWwudmFsdWUgPT09IHBhbmVsID8gJ25vbmUnIDogcGFuZWxcclxufVxyXG5cclxuY29uc3QgdHJhY2tBbmR6b29tRXh0ZW50c09yU2VsZWN0aW9uID0gKCkgPT4ge1xyXG4gIHpvb21FeHRlbnRzT3JTZWxlY3Rpb24oKVxyXG4gIG1peHBhbmVsLnRyYWNrKCdWaWV3ZXIgQWN0aW9uJywgeyB0eXBlOiAnYWN0aW9uJywgbmFtZTogJ3pvb20nLCBzb3VyY2U6ICdidXR0b24nIH0pXHJcbn1cclxuXHJcbnJlZ2lzdGVyU2hvcnRjdXRzKHtcclxuICBab29tRXh0ZW50c09yU2VsZWN0aW9uOiAoKSA9PiB0cmFja0FuZHpvb21FeHRlbnRzT3JTZWxlY3Rpb24oKVxyXG59KVxyXG5cclxub25DbGlja091dHNpZGUoXHJcbiAgbWVudUNvbnRhaW5lcixcclxuICAoKSA9PiB7XHJcbiAgICBhY3RpdmVQYW5lbC52YWx1ZSA9ICdub25lJ1xyXG4gIH0sXHJcbiAge1xyXG4gICAgaWdub3JlOiBbYnV0dG9uQ29udGFpbmVyXVxyXG4gIH1cclxuKVxyXG48L3NjcmlwdD5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvdmlld2VyL2NvbnRyb2xzL1JpZ2h0LnZ1ZSJ9