Files
speckle-server/scratch/edge-debug-selection/Default/Cache/Cache_Data/f_00016f
T

221 lines
21 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/saved-views/panel/view/EditDialog.vue");import { FormTextInput as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { FormTextArea as __nuxt_component_1 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { default as __nuxt_component_2 } from "/_nuxt/components/form/select/SavedViewGroup.vue";
import { FormRadioGroup as __nuxt_component_3 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { LayoutDialog as __nuxt_component_4 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
/* Injection by vite-plugin-vue-inspector Start */
import { createVNode as __createVNode,createElementBlock as __createElementBlock,createElementVNode as __createElementVNode,createBlock as __createBlock } 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 _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) }
function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) }
function _createBlock(...args) { return _interopVNode(__createBlock(...args)) }
/* Injection by vite-plugin-vue-inspector End */
import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
import { useForm } from "/_nuxt/node_modules/.cache/vite/client/deps/vee-validate.js?v=e4f18c29";
import { graphql } from "/_nuxt/lib/common/generated/gql/index.ts";
import { isRequired, isStringOfLength } from "/_nuxt/lib/common/helpers/validation.ts";
import { useUpdateSavedView } from "/_nuxt/lib/viewer/composables/savedViews/management.ts";
import { useInjectedViewerState } from "/_nuxt/lib/viewer/composables/setup.ts";
import { isUndefined } from "/_nuxt/node_modules/.cache/vite/client/deps/lodash-es.js?v=e4f18c29";
import { useSavedViewValidationHelpers } from "/_nuxt/lib/viewer/composables/savedViews/validation.ts";
import { computed, watch, markRaw } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "ViewerSavedViewsPanelViewEditDialog",
props: /* @__PURE__ */ _mergeModels({
view: { type: null, required: true }
}, {
"open": { type: Boolean, ...{
required: true
} },
"openModifiers": {}
}),
emits: ["update:open"],
setup(__props, { expose: __expose }) {
__expose();
graphql(`
fragment ViewerSavedViewsPanelViewEditDialog_SavedView on SavedView {
id
name
description
visibility
group {
...FormSelectSavedViewGroup_SavedViewGroup
}
...UseUpdateSavedView_SavedView
...UseSavedViewValidationHelpers_SavedView
}
`);
const props = __props;
const open = _useModel(__props, "open");
const { handleSubmit, setValues } = useForm();
const {
projectId,
resources: {
request: { resourceIdString }
}
} = useInjectedViewerState();
const updateView = useUpdateSavedView();
const { validateVisibility, visibilityOptions, canToggleVisibility } = useSavedViewValidationHelpers({
view: computed(() => props.view)
});
const buttons = computed(() => [
{
id: "cancel",
text: "Cancel",
props: {
color: "outline"
},
onClick: () => {
open.value = false;
}
},
{
id: "save",
text: "Save",
submit: true
}
]);
const onSubmit = handleSubmit(async (values) => {
if (!props.view) return;
const name = values.name.trim() && values.name.trim() !== props.view.name ? values.name.trim() : void 0;
const description = values.description?.trim() !== (props.view.description || void 0) ? values.description?.trim() || "" : void 0;
const visibility = values.visibility !== props.view.visibility ? values.visibility : void 0;
const groupId = values.group.id !== props.view.group.id ? values.group.id : void 0;
const coreInput = {
...isUndefined(name) ? {} : { name },
...isUndefined(description) ? {} : { description },
...isUndefined(visibility) ? {} : { visibility },
...isUndefined(groupId) ? {} : { groupId }
};
if (!Object.keys(coreInput).length) {
open.value = false;
return;
}
const res = await updateView({
view: props.view,
input: {
...coreInput,
id: props.view.id,
projectId: props.view.projectId
}
});
if (res?.id) {
open.value = false;
}
});
watch(open, (newVal, oldVal) => {
if (!props.view) return;
if (newVal && !oldVal) {
setValues({
name: props.view.name,
description: props.view.description,
visibility: props.view.visibility,
group: markRaw({ ...props.view.group })
// vue-validate doesnt like this read-only proxified object
});
}
});
const __returned__ = { props, open, handleSubmit, setValues, projectId, resourceIdString, updateView, validateVisibility, visibilityOptions, canToggleVisibility, buttons, onSubmit, get isRequired() {
return isRequired;
}, get isStringOfLength() {
return isStringOfLength;
} };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { resolveComponent as _resolveComponent, resolveDirective as _resolveDirective, openBlock as _openBlock, withDirectives as _withDirectives, withCtx as _withCtx, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = {
class: "flex flex-col gap-4",
"data-v-inspector": "components/viewer/saved-views/panel/view/EditDialog.vue:9:5"
};
const _hoisted_2 = { "data-v-inspector": "components/viewer/saved-views/panel/view/EditDialog.vue:33:7" };
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_FormTextInput = __nuxt_component_0;
const _component_FormTextArea = __nuxt_component_1;
const _component_FormSelectSavedViewGroup = __nuxt_component_2;
const _component_FormRadioGroup = __nuxt_component_3;
const _component_LayoutDialog = __nuxt_component_4;
const _directive_tippy = _resolveDirective("tippy");
return _openBlock(), _createBlock(_component_LayoutDialog, {
open: $setup.open,
"onUpdate:open": _cache[0] || (_cache[0] = ($event) => $setup.open = $event),
title: "Edit view",
"max-width": "sm",
buttons: $setup.buttons,
"on-submit": $setup.onSubmit,
"data-v-inspector": "components/viewer/saved-views/panel/view/EditDialog.vue:2:3"
}, {
default: _withCtx(() => [
_createElementVNode("div", _hoisted_1, [
_createVNode(_component_FormTextInput, {
name: "name",
label: "Name",
"show-label": "",
color: "foundation",
"auto-focus": "",
rules: [$setup.isRequired, $setup.isStringOfLength({ maxLength: 255 })],
"data-v-inspector": "components/viewer/saved-views/panel/view/EditDialog.vue:10:7"
}, null, 8, ["rules"]),
_createVNode(_component_FormTextArea, {
name: "description",
label: "Description",
"show-label": "",
color: "foundation",
placeholder: "Add a description...",
rules: [$setup.isStringOfLength({ maxLength: 1e3 })],
"data-v-inspector": "components/viewer/saved-views/panel/view/EditDialog.vue:18:7"
}, null, 8, ["rules"]),
_createVNode(_component_FormSelectSavedViewGroup, {
name: "group",
"show-label": "",
"project-id": $setup.projectId,
"resource-id-string": $setup.resourceIdString,
rules: [$setup.isRequired],
"data-v-inspector": "components/viewer/saved-views/panel/view/EditDialog.vue:26:7"
}, null, 8, ["project-id", "resource-id-string", "rules"]),
_withDirectives((_openBlock(), _createElementBlock("div", _hoisted_2, [
_createVNode(_component_FormRadioGroup, {
options: $setup.visibilityOptions,
disabled: !$setup.canToggleVisibility.authorized,
size: "sm",
name: "visibility",
rules: [$setup.isRequired, $setup.validateVisibility],
"data-v-inspector": "components/viewer/saved-views/panel/view/EditDialog.vue:34:9"
}, null, 8, ["options", "disabled", "rules"])
])), [
[_directive_tippy, $setup.canToggleVisibility.message]
])
])
]),
_: 1
/* STABLE */
}, 8, ["open", "buttons", "on-submit"]);
}
_sfc_main.__hmrId = "79d14619";
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/saved-views/panel/view/EditDialog.vue"]]);
//# sourceMappingURL=data:application/json;base64,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QWtCO0FBQUEsWUFBRyxvQkFBaUI7QUFBQTs7NkJBTmpELDJCQUFvQixPQUFPO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIkVkaXREaWFsb2cudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8TGF5b3V0RGlhbG9nXHJcbiAgICB2LW1vZGVsOm9wZW49XCJvcGVuXCJcclxuICAgIHRpdGxlPVwiRWRpdCB2aWV3XCJcclxuICAgIG1heC13aWR0aD1cInNtXCJcclxuICAgIDpidXR0b25zPVwiYnV0dG9uc1wiXHJcbiAgICA6b24tc3VibWl0PVwib25TdWJtaXRcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvc2F2ZWQtdmlld3MvcGFuZWwvdmlldy9FZGl0RGlhbG9nLnZ1ZToyOjNcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL3NhdmVkLXZpZXdzL3BhbmVsL3ZpZXcvRWRpdERpYWxvZy52dWU6OTo1XCI+XHJcbiAgICAgIDxGb3JtVGV4dElucHV0XHJcbiAgICAgICAgbmFtZT1cIm5hbWVcIlxyXG4gICAgICAgIGxhYmVsPVwiTmFtZVwiXHJcbiAgICAgICAgc2hvdy1sYWJlbFxyXG4gICAgICAgIGNvbG9yPVwiZm91bmRhdGlvblwiXHJcbiAgICAgICAgYXV0by1mb2N1c1xyXG4gICAgICAgIDpydWxlcz1cIltpc1JlcXVpcmVkLCBpc1N0cmluZ09mTGVuZ3RoKHsgbWF4TGVuZ3RoOiAyNTUgfSldXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL3NhdmVkLXZpZXdzL3BhbmVsL3ZpZXcvRWRpdERpYWxvZy52dWU6MTA6N1wiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxGb3JtVGV4dEFyZWFcclxuICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgIGxhYmVsPVwiRGVzY3JpcHRpb25cIlxyXG4gICAgICAgIHNob3ctbGFiZWxcclxuICAgICAgICBjb2xvcj1cImZvdW5kYXRpb25cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiQWRkIGEgZGVzY3JpcHRpb24uLi5cIlxyXG4gICAgICAgIDpydWxlcz1cIltpc1N0cmluZ09mTGVuZ3RoKHsgbWF4TGVuZ3RoOiAxMDAwIH0pXVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9zYXZlZC12aWV3cy9wYW5lbC92aWV3L0VkaXREaWFsb2cudnVlOjE4OjdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8Rm9ybVNlbGVjdFNhdmVkVmlld0dyb3VwXHJcbiAgICAgICAgbmFtZT1cImdyb3VwXCJcclxuICAgICAgICBzaG93LWxhYmVsXHJcbiAgICAgICAgOnByb2plY3QtaWQ9XCJwcm9qZWN0SWRcIlxyXG4gICAgICAgIDpyZXNvdXJjZS1pZC1zdHJpbmc9XCJyZXNvdXJjZUlkU3RyaW5nXCJcclxuICAgICAgICA6cnVsZXM9XCJbaXNSZXF1aXJlZF1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvc2F2ZWQtdmlld3MvcGFuZWwvdmlldy9FZGl0RGlhbG9nLnZ1ZToyNjo3XCJcclxuICAgICAgLz5cclxuICAgICAgPGRpdiB2LXRpcHB5PVwiY2FuVG9nZ2xlVmlzaWJpbGl0eS5tZXNzYWdlXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL3NhdmVkLXZpZXdzL3BhbmVsL3ZpZXcvRWRpdERpYWxvZy52dWU6MzM6N1wiPlxyXG4gICAgICAgIDxGb3JtUmFkaW9Hcm91cFxyXG4gICAgICAgICAgOm9wdGlvbnM9XCJ2aXNpYmlsaXR5T3B0aW9uc1wiXHJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCIhY2FuVG9nZ2xlVmlzaWJpbGl0eS5hdXRob3JpemVkXCJcclxuICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICBuYW1lPVwidmlzaWJpbGl0eVwiXHJcbiAgICAgICAgICA6cnVsZXM9XCJbaXNSZXF1aXJlZCwgdmFsaWRhdGVWaXNpYmlsaXR5XVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9zYXZlZC12aWV3cy9wYW5lbC92aWV3L0VkaXREaWFsb2cudnVlOjM0OjlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9MYXlvdXREaWFsb2c+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB0eXBlIHsgTGF5b3V0RGlhbG9nQnV0dG9uIH0gZnJvbSAnQHNwZWNrbGUvdWktY29tcG9uZW50cydcclxuaW1wb3J0IHsgdXNlRm9ybSB9IGZyb20gJ3ZlZS12YWxpZGF0ZSdcclxuaW1wb3J0IHsgZ3JhcGhxbCB9IGZyb20gJ34vbGliL2NvbW1vbi9nZW5lcmF0ZWQvZ3FsJ1xyXG5pbXBvcnQgeyBpc1JlcXVpcmVkLCBpc1N0cmluZ09mTGVuZ3RoIH0gZnJvbSAnfi9saWIvY29tbW9uL2hlbHBlcnMvdmFsaWRhdGlvbidcclxuaW1wb3J0IHsgdXNlVXBkYXRlU2F2ZWRWaWV3IH0gZnJvbSAnfi9saWIvdmlld2VyL2NvbXBvc2FibGVzL3NhdmVkVmlld3MvbWFuYWdlbWVudCdcclxuaW1wb3J0IHsgdXNlSW5qZWN0ZWRWaWV3ZXJTdGF0ZSB9IGZyb20gJ34vbGliL3ZpZXdlci9jb21wb3NhYmxlcy9zZXR1cCdcclxuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tICdsb2Rhc2gtZXMnXHJcbmltcG9ydCB7IHVzZVNhdmVkVmlld1ZhbGlkYXRpb25IZWxwZXJzIH0gZnJvbSAnfi9saWIvdmlld2VyL2NvbXBvc2FibGVzL3NhdmVkVmlld3MvdmFsaWRhdGlvbidcclxuaW1wb3J0IHR5cGUge1xyXG4gIEZvcm1TZWxlY3RTYXZlZFZpZXdHcm91cF9TYXZlZFZpZXdHcm91cEZyYWdtZW50LFxyXG4gIFNhdmVkVmlld1Zpc2liaWxpdHksXHJcbiAgVmlld2VyU2F2ZWRWaWV3c1BhbmVsVmlld0VkaXREaWFsb2dfU2F2ZWRWaWV3RnJhZ21lbnRcclxufSBmcm9tICd+L2xpYi9jb21tb24vZ2VuZXJhdGVkL2dxbC9ncmFwaHFsJ1xyXG5cclxuZ3JhcGhxbChgXHJcbiAgZnJhZ21lbnQgVmlld2VyU2F2ZWRWaWV3c1BhbmVsVmlld0VkaXREaWFsb2dfU2F2ZWRWaWV3IG9uIFNhdmVkVmlldyB7XHJcbiAgICBpZFxyXG4gICAgbmFtZVxyXG4gICAgZGVzY3JpcHRpb25cclxuICAgIHZpc2liaWxpdHlcclxuICAgIGdyb3VwIHtcclxuICAgICAgLi4uRm9ybVNlbGVjdFNhdmVkVmlld0dyb3VwX1NhdmVkVmlld0dyb3VwXHJcbiAgICB9XHJcbiAgICAuLi5Vc2VVcGRhdGVTYXZlZFZpZXdfU2F2ZWRWaWV3XHJcbiAgICAuLi5Vc2VTYXZlZFZpZXdWYWxpZGF0aW9uSGVscGVyc19TYXZlZFZpZXdcclxuICB9XHJcbmApXHJcblxyXG50eXBlIEZvcm1UeXBlID0ge1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXHJcbiAgdmlzaWJpbGl0eTogU2F2ZWRWaWV3VmlzaWJpbGl0eVxyXG4gIGdyb3VwOiBGb3JtU2VsZWN0U2F2ZWRWaWV3R3JvdXBfU2F2ZWRWaWV3R3JvdXBGcmFnbWVudFxyXG59XHJcblxyXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPHtcclxuICB2aWV3OiBWaWV3ZXJTYXZlZFZpZXdzUGFuZWxWaWV3RWRpdERpYWxvZ19TYXZlZFZpZXdGcmFnbWVudCB8IHVuZGVmaW5lZFxyXG59PigpXHJcblxyXG5jb25zdCBvcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oJ29wZW4nLCB7XHJcbiAgcmVxdWlyZWQ6IHRydWVcclxufSlcclxuY29uc3QgeyBoYW5kbGVTdWJtaXQsIHNldFZhbHVlcyB9ID0gdXNlRm9ybTxGb3JtVHlwZT4oKVxyXG5jb25zdCB7XHJcbiAgcHJvamVjdElkLFxyXG4gIHJlc291cmNlczoge1xyXG4gICAgcmVxdWVzdDogeyByZXNvdXJjZUlkU3RyaW5nIH1cclxuICB9XHJcbn0gPSB1c2VJbmplY3RlZFZpZXdlclN0YXRlKClcclxuY29uc3QgdXBkYXRlVmlldyA9IHVzZVVwZGF0ZVNhdmVkVmlldygpXHJcbmNvbnN0IHsgdmFsaWRhdGVWaXNpYmlsaXR5LCB2aXNpYmlsaXR5T3B0aW9ucywgY2FuVG9nZ2xlVmlzaWJpbGl0eSB9ID1cclxuICB1c2VTYXZlZFZpZXdWYWxpZGF0aW9uSGVscGVycyh7XHJcbiAgICB2aWV3OiBjb21wdXRlZCgoKSA9PiBwcm9wcy52aWV3KVxyXG4gIH0pXHJcblxyXG5jb25zdCBidXR0b25zID0gY29tcHV0ZWQoKCk6IExheW91dERpYWxvZ0J1dHRvbltdID0+IFtcclxuICB7XHJcbiAgICBpZDogJ2NhbmNlbCcsXHJcbiAgICB0ZXh0OiAnQ2FuY2VsJyxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgIGNvbG9yOiAnb3V0bGluZSdcclxuICAgIH0sXHJcbiAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgIG9wZW4udmFsdWUgPSBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAge1xyXG4gICAgaWQ6ICdzYXZlJyxcclxuICAgIHRleHQ6ICdTYXZlJyxcclxuICAgIHN1Ym1pdDogdHJ1ZVxyXG4gIH1cclxuXSlcclxuXHJcbmNvbnN0IG9uU3VibWl0ID0gaGFuZGxlU3VibWl0KGFzeW5jICh2YWx1ZXMpID0+IHtcclxuICBpZiAoIXByb3BzLnZpZXcpIHJldHVyblxyXG5cclxuICBjb25zdCBuYW1lID1cclxuICAgIHZhbHVlcy5uYW1lLnRyaW0oKSAmJiB2YWx1ZXMubmFtZS50cmltKCkgIT09IHByb3BzLnZpZXcubmFtZVxyXG4gICAgICA/IHZhbHVlcy5uYW1lLnRyaW0oKVxyXG4gICAgICA6IHVuZGVmaW5lZFxyXG4gIGNvbnN0IGRlc2NyaXB0aW9uID1cclxuICAgIHZhbHVlcy5kZXNjcmlwdGlvbj8udHJpbSgpICE9PSAocHJvcHMudmlldy5kZXNjcmlwdGlvbiB8fCB1bmRlZmluZWQpXHJcbiAgICAgID8gdmFsdWVzLmRlc2NyaXB0aW9uPy50cmltKCkgfHwgJydcclxuICAgICAgOiB1bmRlZmluZWRcclxuICBjb25zdCB2aXNpYmlsaXR5ID1cclxuICAgIHZhbHVlcy52aXNpYmlsaXR5ICE9PSBwcm9wcy52aWV3LnZpc2liaWxpdHkgPyB2YWx1ZXMudmlzaWJpbGl0eSA6IHVuZGVmaW5lZFxyXG4gIGNvbnN0IGdyb3VwSWQgPSB2YWx1ZXMuZ3JvdXAuaWQgIT09IHByb3BzLnZpZXcuZ3JvdXAuaWQgPyB2YWx1ZXMuZ3JvdXAuaWQgOiB1bmRlZmluZWRcclxuXHJcbiAgY29uc3QgY29yZUlucHV0ID0ge1xyXG4gICAgLi4uKGlzVW5kZWZpbmVkKG5hbWUpID8ge30gOiB7IG5hbWUgfSksXHJcbiAgICAuLi4oaXNVbmRlZmluZWQoZGVzY3JpcHRpb24pID8ge30gOiB7IGRlc2NyaXB0aW9uIH0pLFxyXG4gICAgLi4uKGlzVW5kZWZpbmVkKHZpc2liaWxpdHkpID8ge30gOiB7IHZpc2liaWxpdHkgfSksXHJcbiAgICAuLi4oaXNVbmRlZmluZWQoZ3JvdXBJZCkgPyB7fSA6IHsgZ3JvdXBJZCB9KVxyXG4gIH1cclxuICBpZiAoIU9iamVjdC5rZXlzKGNvcmVJbnB1dCkubGVuZ3RoKSB7XHJcbiAgICBvcGVuLnZhbHVlID0gZmFsc2VcclxuICAgIHJldHVyblxyXG4gIH1cclxuXHJcbiAgY29uc3QgcmVzID0gYXdhaXQgdXBkYXRlVmlldyh7XHJcbiAgICB2aWV3OiBwcm9wcy52aWV3LFxyXG4gICAgaW5wdXQ6IHtcclxuICAgICAgLi4uY29yZUlucHV0LFxyXG4gICAgICBpZDogcHJvcHMudmlldy5pZCxcclxuICAgICAgcHJvamVjdElkOiBwcm9wcy52aWV3LnByb2plY3RJZFxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIGlmIChyZXM/LmlkKSB7XHJcbiAgICBvcGVuLnZhbHVlID0gZmFsc2VcclxuICB9XHJcbn0pXHJcblxyXG53YXRjaChvcGVuLCAobmV3VmFsLCBvbGRWYWwpID0+IHtcclxuICBpZiAoIXByb3BzLnZpZXcpIHJldHVyblxyXG5cclxuICBpZiAobmV3VmFsICYmICFvbGRWYWwpIHtcclxuICAgIC8vIFJlc2V0IGZvcm0gc3RhdGUgd2hlbiBkaWFsb2cgb3BlbnNcclxuICAgIHNldFZhbHVlcyh7XHJcbiAgICAgIG5hbWU6IHByb3BzLnZpZXcubmFtZSxcclxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLnZpZXcuZGVzY3JpcHRpb24sXHJcbiAgICAgIHZpc2liaWxpdHk6IHByb3BzLnZpZXcudmlzaWJpbGl0eSxcclxuICAgICAgZ3JvdXA6IG1hcmtSYXcoeyAuLi5wcm9wcy52aWV3Lmdyb3VwIH0pIC8vIHZ1ZS12YWxpZGF0ZSBkb2VzbnQgbGlrZSB0aGlzIHJlYWQtb25seSBwcm94aWZpZWQgb2JqZWN0XHJcbiAgICB9KVxyXG4gIH1cclxufSlcclxuPC9zY3JpcHQ+XHJcbiJdLCJmaWxlIjoiRDovc3BlY2tsZS1zZXJ2ZXIvcGFja2FnZXMvZnJvbnRlbmQtMi9jb21wb25lbnRzL3ZpZXdlci9zYXZlZC12aWV3cy9wYW5lbC92aWV3L0VkaXREaWFsb2cudnVlIn0=