// vite.config.ts import vue from "file:///E:/softstoneFile/ry-das/ui/dasadmin/node_modules/@vitejs/plugin-vue/dist/index.mjs"; import { resolve } from "path"; import { loadEnv } from "file:///E:/softstoneFile/ry-das/ui/dasadmin/node_modules/vite/dist/node/index.js"; // src/utils/vite.ts var customHotUpdate = () => { const closeHmr = /* @__PURE__ */ new Map(); return { name: "vite-plugin-custom-hot-update", configureServer(server) { server.ws.on("custom:close-hot", (data) => { closeHmr.set(data.type, true); server.watcher.removeAllListeners("add"); server.watcher.removeAllListeners("unlink"); }); server.ws.on("custom:open-hot", (data) => { closeHmr.set(data.type, false); server.watcher.on("add", () => { server.restart(); }); server.watcher.on("unlink", () => { server.restart(); }); }); server.ws.on("custom:reload-hot", () => { server.restart(); }); }, handleHotUpdate() { const closeHmrs = Array.from(closeHmr.values()); let closeHmrsBool = false; for (const key in closeHmrs) { closeHmrsBool = closeHmrsBool || closeHmrs[key]; } if (closeHmrsBool) return []; } }; }; // src/components/icon/svg/index.ts import { readFileSync, readdirSync } from "fs"; var idPerfix = ""; var iconNames = []; var svgTitle = /+].*?)>/; var clearHeightWidth = /(width|height)="([^>+].*?)"/g; var hasViewBox = /(viewBox="[^>+].*?")/g; var clearReturn = /(\r)|(\n)/g; var clearFill = /(fill="[^>+].*?")/g; function findSvgFile(dir) { const svgRes = []; const dirents = readdirSync(dir, { withFileTypes: true }); for (const dirent of dirents) { iconNames.push(`${idPerfix}-${dirent.name.replace(".svg", "")}`); if (dirent.isDirectory()) { svgRes.push(...findSvgFile(dir + dirent.name + "/")); } else { const svg = readFileSync(dir + dirent.name).toString().replace(clearReturn, "").replace(clearFill, 'fill=""').replace(svgTitle, ($1, $2) => { let width = 0; let height = 0; let content = $2.replace(clearHeightWidth, (s1, s2, s3) => { if (s2 === "width") { width = s3; } else if (s2 === "height") { height = s3; } return ""; }); if (!hasViewBox.test($2)) { content += `viewBox="0 0 ${width} ${height}"`; } return ``; }).replace("", ""); svgRes.push(svg); } } return svgRes; } var svgBuilder = (path, perfix = "local") => { if (path === "") return; idPerfix = perfix; const res = findSvgFile(path); return { name: "svg-transform", transformIndexHtml(html) { return html.replace( "", ` ${res.join("")} ` ); } }; }; // vite.config.ts var __vite_injected_original_dirname = "E:\\softstoneFile\\ry-das\\ui\\dasadmin"; var pathResolve = (dir) => { return resolve(__vite_injected_original_dirname, ".", dir); }; var viteConfig = ({ mode }) => { const { VITE_PORT, VITE_OPEN, VITE_BASE_PATH, VITE_OUT_DIR, VITE_APP_PROXY } = loadEnv(mode, process.cwd()); const alias = { "/@": pathResolve("./src/"), assets: pathResolve("./src/assets"), "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js" }; const createProxy = (proxyList) => { const ret = {}; if (proxyList) { proxyList = JSON.parse(proxyList); for (const [prefix, target] of proxyList) { ret[prefix] = { target, changeOrigin: true, rewrite: (path) => path.replace(new RegExp(`^${prefix}`), "") }; } } return ret; }; return { plugins: [vue(), svgBuilder("./src/assets/icons/"), customHotUpdate()], root: process.cwd(), resolve: { alias }, base: VITE_BASE_PATH, server: { port: parseInt(VITE_PORT), open: VITE_OPEN != "false", proxy: { ...createProxy(VITE_APP_PROXY) } }, build: { cssCodeSplit: false, sourcemap: false, outDir: VITE_OUT_DIR, emptyOutDir: true, chunkSizeWarningLimit: 1500, terserOptions: { compress: { keep_infinity: true, // Used to delete console in production environment drop_console: true, drop_debugger: true }, output: { comments: true // 去掉注释内容 } }, rollupOptions: { output: { manualChunks: { // 分包配置,配置完成自动按需加载 vue: ["vue", "vue-router", "pinia", "vue-i18n", "element-plus"], echarts: ["echarts"] } } } } }; }; var vite_config_default = viteConfig; export { vite_config_default as default }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAic3JjL3V0aWxzL3ZpdGUudHMiLCAic3JjL2NvbXBvbmVudHMvaWNvbi9zdmcvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxzb2Z0c3RvbmVGaWxlXFxcXHJ5LWRhc1xcXFx1aVxcXFxkYXNhZG1pblwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcc29mdHN0b25lRmlsZVxcXFxyeS1kYXNcXFxcdWlcXFxcZGFzYWRtaW5cXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0U6L3NvZnRzdG9uZUZpbGUvcnktZGFzL3VpL2Rhc2FkbWluL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHZ1ZSBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUnXHJcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdwYXRoJ1xyXG5pbXBvcnQgeyBsb2FkRW52IH0gZnJvbSAndml0ZSdcclxuaW1wb3J0IHR5cGUgeyBVc2VyQ29uZmlnLCBDb25maWdFbnYsIFByb3h5T3B0aW9ucyB9IGZyb20gJ3ZpdGUnXHJcbmltcG9ydCB7IGlzUHJvZCwgY3VzdG9tSG90VXBkYXRlIH0gZnJvbSAnL0AvdXRpbHMvdml0ZSdcclxuaW1wb3J0IHsgc3ZnQnVpbGRlciB9IGZyb20gJy9AL2NvbXBvbmVudHMvaWNvbi9zdmcvaW5kZXgnXHJcblxyXG5jb25zdCBwYXRoUmVzb2x2ZSA9IChkaXI6IHN0cmluZyk6IGFueSA9PiB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZShfX2Rpcm5hbWUsICcuJywgZGlyKVxyXG59XHJcblxyXG4vLyBodHRwczovL3ZpdGVqcy5jbi9jb25maWcvXHJcbmNvbnN0IHZpdGVDb25maWcgPSAoeyBtb2RlIH06IENvbmZpZ0Vudik6IFVzZXJDb25maWcgPT4ge1xyXG4gICAgY29uc3QgeyBWSVRFX1BPUlQsIFZJVEVfT1BFTiwgVklURV9CQVNFX1BBVEgsIFZJVEVfT1VUX0RJUiwgVklURV9BUFBfUFJPWFkgfSA9IGxvYWRFbnYobW9kZSwgcHJvY2Vzcy5jd2QoKSlcclxuXHJcbiAgICBjb25zdCBhbGlhczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgICAnL0AnOiBwYXRoUmVzb2x2ZSgnLi9zcmMvJyksXHJcbiAgICAgICAgYXNzZXRzOiBwYXRoUmVzb2x2ZSgnLi9zcmMvYXNzZXRzJyksXHJcbiAgICAgICAgJ3Z1ZS1pMThuJzogJ3Z1ZS1pMThuL2Rpc3QvdnVlLWkxOG4uY2pzLmpzJyxcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjcmVhdGVQcm94eSA9IChwcm94eUxpc3Q6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IHt9IGFzIFJlY29yZDxzdHJpbmcsIFByb3h5T3B0aW9ucz5cclxuICAgICAgICBpZiAocHJveHlMaXN0KSB7XHJcbiAgICAgICAgICAgIHByb3h5TGlzdCA9IEpTT04ucGFyc2UocHJveHlMaXN0KVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtwcmVmaXgsIHRhcmdldF0gb2YgcHJveHlMaXN0KSB7XHJcbiAgICAgICAgICAgICAgICByZXRbcHJlZml4XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldCxcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKGBeJHtwcmVmaXh9YCksICcnKSxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJldFxyXG4gICAgfVxyXG5cclxuICAgIC8vIGxldCBwcm94eTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgUHJveHlPcHRpb25zPiA9IHt9XHJcbiAgICAvLyBpZiAoVklURV9QUk9YWV9VUkwpIHtcclxuICAgIC8vICAgICBwcm94eSA9IHtcclxuICAgIC8vICAgICAgICAgJy8nOiB7XHJcbiAgICAvLyAgICAgICAgICAgICB0YXJnZXQ6IFZJVEVfUFJPWFlfVVJMLFxyXG4gICAgLy8gICAgICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgLy8gICAgICAgICB9LFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHBsdWdpbnM6IFt2dWUoKSwgc3ZnQnVpbGRlcignLi9zcmMvYXNzZXRzL2ljb25zLycpLCBjdXN0b21Ib3RVcGRhdGUoKV0sXHJcbiAgICAgICAgcm9vdDogcHJvY2Vzcy5jd2QoKSxcclxuICAgICAgICByZXNvbHZlOiB7IGFsaWFzIH0sXHJcbiAgICAgICAgYmFzZTogVklURV9CQVNFX1BBVEgsXHJcbiAgICAgICAgc2VydmVyOiB7XHJcbiAgICAgICAgICAgIHBvcnQ6IHBhcnNlSW50KFZJVEVfUE9SVCksXHJcbiAgICAgICAgICAgIG9wZW46IFZJVEVfT1BFTiAhPSAnZmFsc2UnLFxyXG4gICAgICAgICAgICBwcm94eToge1xyXG4gICAgICAgICAgICAgICAgLi4uY3JlYXRlUHJveHkoVklURV9BUFBfUFJPWFkpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYnVpbGQ6IHtcclxuICAgICAgICAgICAgY3NzQ29kZVNwbGl0OiBmYWxzZSxcclxuICAgICAgICAgICAgc291cmNlbWFwOiBmYWxzZSxcclxuICAgICAgICAgICAgb3V0RGlyOiBWSVRFX09VVF9ESVIsXHJcbiAgICAgICAgICAgIGVtcHR5T3V0RGlyOiB0cnVlLFxyXG4gICAgICAgICAgICBjaHVua1NpemVXYXJuaW5nTGltaXQ6IDE1MDAsXHJcbiAgICAgICAgICAgIHRlcnNlck9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIGNvbXByZXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAga2VlcF9pbmZpbml0eTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAvLyBVc2VkIHRvIGRlbGV0ZSBjb25zb2xlIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcclxuICAgICAgICAgICAgICAgICAgICBkcm9wX2NvbnNvbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZHJvcF9kZWJ1Z2dlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvdXRwdXQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb21tZW50czogdHJ1ZSwgLy8gXHU1M0JCXHU2Mzg5XHU2Q0U4XHU5MUNBXHU1MTg1XHU1QkI5XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByb2xsdXBPcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICBvdXRwdXQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBtYW51YWxDaHVua3M6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gXHU1MjA2XHU1MzA1XHU5MTREXHU3RjZFXHVGRjBDXHU5MTREXHU3RjZFXHU1QjhDXHU2MjEwXHU4MUVBXHU1MkE4XHU2MzA5XHU5NzAwXHU1MkEwXHU4RjdEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZ1ZTogWyd2dWUnLCAndnVlLXJvdXRlcicsICdwaW5pYScsICd2dWUtaTE4bicsICdlbGVtZW50LXBsdXMnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWNoYXJ0czogWydlY2hhcnRzJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgdml0ZUNvbmZpZ1xyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXHNvZnRzdG9uZUZpbGVcXFxccnktZGFzXFxcXHVpXFxcXGRhc2FkbWluXFxcXHNyY1xcXFx1dGlsc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcc29mdHN0b25lRmlsZVxcXFxyeS1kYXNcXFxcdWlcXFxcZGFzYWRtaW5cXFxcc3JjXFxcXHV0aWxzXFxcXHZpdGUudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0U6L3NvZnRzdG9uZUZpbGUvcnktZGFzL3VpL2Rhc2FkbWluL3NyYy91dGlscy92aXRlLnRzXCI7aW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAndml0ZSdcclxuXHJcbi8qKlxyXG4gKiBcdTY2MkZcdTU0MjZcdTU3MjhcdTVGMDBcdTUzRDFcdTczQUZcdTU4ODNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0Rldihtb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBtb2RlID09PSAnZGV2ZWxvcG1lbnQnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBcdTY2MkZcdTU0MjZcdTU3MjhcdTc1MUZcdTRFQTdcdTczQUZcdTU4ODNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1Byb2QobW9kZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbW9kZSA9PT0gJ3Byb2R1Y3Rpb24nXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBcdTgxRUFcdTVCOUFcdTRFNDlcdTcwRURcdTY2RjRcdTY1QjBcdTU5MDRcdTc0MDZcdTYzRDJcdTRFRjZcclxuICovXHJcbmV4cG9ydCBjb25zdCBjdXN0b21Ib3RVcGRhdGUgPSAoKTogUGx1Z2luID0+IHtcclxuICAgIGNvbnN0IGNsb3NlSG1yID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KClcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6ICd2aXRlLXBsdWdpbi1jdXN0b20taG90LXVwZGF0ZScsXHJcbiAgICAgICAgY29uZmlndXJlU2VydmVyKHNlcnZlcikge1xyXG4gICAgICAgICAgICBzZXJ2ZXIud3Mub24oJ2N1c3RvbTpjbG9zZS1ob3QnLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2xvc2VIbXIuc2V0KGRhdGEudHlwZSwgdHJ1ZSlcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBcdTUxNzNcdTk1RURcdTY1ODdcdTRFRjZcdTZERkJcdTUyQTBcdTU0OENcdTUyMjBcdTk2NjRcdTc2ODRcdTc2RDFcdTU0MkNcclxuICAgICAgICAgICAgICAgIHNlcnZlci53YXRjaGVyLnJlbW92ZUFsbExpc3RlbmVycygnYWRkJylcclxuICAgICAgICAgICAgICAgIHNlcnZlci53YXRjaGVyLnJlbW92ZUFsbExpc3RlbmVycygndW5saW5rJylcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgc2VydmVyLndzLm9uKCdjdXN0b206b3Blbi1ob3QnLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2xvc2VIbXIuc2V0KGRhdGEudHlwZSwgZmFsc2UpXHJcblxyXG4gICAgICAgICAgICAgICAgc2VydmVyLndhdGNoZXIub24oJ2FkZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdGFydCgpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgc2VydmVyLndhdGNoZXIub24oJ3VubGluaycsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdGFydCgpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBzZXJ2ZXIud3Mub24oJ2N1c3RvbTpyZWxvYWQtaG90JywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VydmVyLnJlc3RhcnQoKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFuZGxlSG90VXBkYXRlKCkge1xyXG4gICAgICAgICAgICBjb25zdCBjbG9zZUhtcnMgPSBBcnJheS5mcm9tKGNsb3NlSG1yLnZhbHVlcygpKVxyXG4gICAgICAgICAgICBsZXQgY2xvc2VIbXJzQm9vbCA9IGZhbHNlXHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGNsb3NlSG1ycykge1xyXG4gICAgICAgICAgICAgICAgY2xvc2VIbXJzQm9vbCA9IGNsb3NlSG1yc0Jvb2wgfHwgY2xvc2VIbXJzW2tleV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2xvc2VIbXJzQm9vbCkgcmV0dXJuIFtdXHJcbiAgICAgICAgfSxcclxuICAgIH1cclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXHNvZnRzdG9uZUZpbGVcXFxccnktZGFzXFxcXHVpXFxcXGRhc2FkbWluXFxcXHNyY1xcXFxjb21wb25lbnRzXFxcXGljb25cXFxcc3ZnXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxzb2Z0c3RvbmVGaWxlXFxcXHJ5LWRhc1xcXFx1aVxcXFxkYXNhZG1pblxcXFxzcmNcXFxcY29tcG9uZW50c1xcXFxpY29uXFxcXHN2Z1xcXFxpbmRleC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovc29mdHN0b25lRmlsZS9yeS1kYXMvdWkvZGFzYWRtaW4vc3JjL2NvbXBvbmVudHMvaWNvbi9zdmcvaW5kZXgudHNcIjtpbXBvcnQgeyByZWFkRmlsZVN5bmMsIHJlYWRkaXJTeW5jIH0gZnJvbSAnZnMnXHJcblxyXG5sZXQgaWRQZXJmaXggPSAnJ1xyXG5jb25zdCBpY29uTmFtZXM6IHN0cmluZ1tdID0gW11cclxuY29uc3Qgc3ZnVGl0bGUgPSAvPHN2ZyhbXj4rXS4qPyk+L1xyXG5jb25zdCBjbGVhckhlaWdodFdpZHRoID0gLyh3aWR0aHxoZWlnaHQpPVwiKFtePitdLio/KVwiL2dcclxuY29uc3QgaGFzVmlld0JveCA9IC8odmlld0JveD1cIltePitdLio/XCIpL2dcclxuY29uc3QgY2xlYXJSZXR1cm4gPSAvKFxccil8KFxcbikvZ1xyXG4vLyBcdTZFMDVcdTc0MDYgc3ZnIFx1NzY4NCBmaWxsXHJcbmNvbnN0IGNsZWFyRmlsbCA9IC8oZmlsbD1cIltePitdLio/XCIpL2dcclxuXHJcbmZ1bmN0aW9uIGZpbmRTdmdGaWxlKGRpcjogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3Qgc3ZnUmVzID0gW11cclxuICAgIGNvbnN0IGRpcmVudHMgPSByZWFkZGlyU3luYyhkaXIsIHtcclxuICAgICAgICB3aXRoRmlsZVR5cGVzOiB0cnVlLFxyXG4gICAgfSlcclxuICAgIGZvciAoY29uc3QgZGlyZW50IG9mIGRpcmVudHMpIHtcclxuICAgICAgICBpY29uTmFtZXMucHVzaChgJHtpZFBlcmZpeH0tJHtkaXJlbnQubmFtZS5yZXBsYWNlKCcuc3ZnJywgJycpfWApXHJcbiAgICAgICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICAgIHN2Z1Jlcy5wdXNoKC4uLmZpbmRTdmdGaWxlKGRpciArIGRpcmVudC5uYW1lICsgJy8nKSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBzdmcgPSByZWFkRmlsZVN5bmMoZGlyICsgZGlyZW50Lm5hbWUpXHJcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoY2xlYXJSZXR1cm4sICcnKVxyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoY2xlYXJGaWxsLCAnZmlsbD1cIlwiJylcclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKHN2Z1RpdGxlLCAoJDEsICQyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHdpZHRoID0gMFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSAwXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSAkMi5yZXBsYWNlKGNsZWFySGVpZ2h0V2lkdGgsIChzMTogc3RyaW5nLCBzMjogc3RyaW5nLCBzMzogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMiA9PT0gJ3dpZHRoJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzM1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMyID09PSAnaGVpZ2h0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gczNcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJydcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzVmlld0JveC50ZXN0KCQyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ICs9IGB2aWV3Qm94PVwiMCAwICR7d2lkdGh9ICR7aGVpZ2h0fVwiYFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxzeW1ib2wgaWQ9XCIke2lkUGVyZml4fS0ke2RpcmVudC5uYW1lLnJlcGxhY2UoJy5zdmcnLCAnJyl9XCIgJHtjb250ZW50fT5gXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJzwvc3ZnPicsICc8L3N5bWJvbD4nKVxyXG4gICAgICAgICAgICBzdmdSZXMucHVzaChzdmcpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN2Z1Jlc1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgc3ZnQnVpbGRlciA9IChwYXRoOiBzdHJpbmcsIHBlcmZpeCA9ICdsb2NhbCcpID0+IHtcclxuICAgIGlmIChwYXRoID09PSAnJykgcmV0dXJuXHJcbiAgICBpZFBlcmZpeCA9IHBlcmZpeFxyXG4gICAgY29uc3QgcmVzID0gZmluZFN2Z0ZpbGUocGF0aClcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogJ3N2Zy10cmFuc2Zvcm0nLFxyXG4gICAgICAgIHRyYW5zZm9ybUluZGV4SHRtbChodG1sOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgICAgICAgICAgcmV0dXJuIGh0bWwucmVwbGFjZShcclxuICAgICAgICAgICAgICAgICc8Ym9keT4nLFxyXG4gICAgICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICAgICAgPGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIGlkPVwibG9jYWwtaWNvblwiIGRhdGEtaWNvbi1uYW1lPVwiJHtpY29uTmFtZXMuam9pbihcclxuICAgICAgICAgICAgICAgICAgICAnLCdcclxuICAgICAgICAgICAgICAgICl9XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMDsgaGVpZ2h0OiAwXCI+XHJcbiAgICAgICAgICAgICAgICAke3Jlcy5qb2luKCcnKX1cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cclxuICAgICAgICB9LFxyXG4gICAgfVxyXG59XHJcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBcVMsT0FBTyxTQUFTO0FBQ3JULFNBQVMsZUFBZTtBQUN4QixTQUFTLGVBQWU7OztB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