wxw
3 天以前 423911c9dd6e202667a05c63c75b0e296a580519
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
// vite.config.ts
import vue from "file:///E:/Program/WCSNet6/Web/node_modules/.pnpm/@vitejs+plugin-vue@5.1.2_vite@5.4.0_@types+node@20.14.15_less@4.2.0_sass@1.77.8_terser@5.31.5_7wlbl3myi44lr6pake5qnpaxfe/node_modules/@vitejs/plugin-vue/dist/index.mjs";
import { resolve } from "path";
import { defineConfig, loadEnv } from "file:///E:/Program/WCSNet6/Web/node_modules/.pnpm/vite@5.4.0_@types+node@20.14.15_less@4.2.0_sass@1.77.8_terser@5.31.5/node_modules/vite/dist/node/index.js";
import vueSetupExtend from "file:///E:/Program/WCSNet6/Web/node_modules/.pnpm/vite-plugin-vue-setup-extend@0.4.0_vite@5.4.0_@types+node@20.14.15_less@4.2.0_sass@1.77.8_terser@5.31.5_/node_modules/vite-plugin-vue-setup-extend/dist/index.mjs";
import compression from "file:///E:/Program/WCSNet6/Web/node_modules/.pnpm/vite-plugin-compression2@1.1.3_rollup@4.20.0/node_modules/vite-plugin-compression2/dist/index.mjs";
 
// src/utils/build.ts
import importToCDN from "file:///E:/Program/WCSNet6/Web/node_modules/.pnpm/vite-plugin-cdn-import@1.0.1_rollup@4.20.0_vite@5.4.0_@types+node@20.14.15_less@4.2.0_sass@1.77.8_terser@5.31.5_/node_modules/vite-plugin-cdn-import/dist/index.js";
var buildConfig = {
  cdn() {
    return importToCDN({
      prodUrl: "https://unpkg.com/{name}@{version}/{path}",
      modules: [
        // autoComplete('vue'),
        // autoComplete('axios'),
        {
          name: "vue",
          var: "Vue",
          path: "dist/vue.global.js"
        },
        {
          name: "vue-demi",
          var: "VueDemi",
          path: "lib/index.iife.js"
        },
        {
          name: "vue-router",
          var: "VueRouter",
          path: "dist/vue-router.global.js"
        },
        {
          name: "element-plus",
          var: "ElementPlus",
          path: "dist/index.full.js"
        }
        // {
        //     name: '@element-plus/icons-vue',
        //     var: 'ElementPlusIconsVue',
        //     path: 'dist/index.iife.min.js',
        // },
        // {
        //     name: 'echarts',
        //     var: 'echarts',
        //     path: 'dist/echarts.min.js',
        // },
        // {
        //     name: 'echarts-gl',
        //     var: 'echarts-gl',
        //     path: 'dist/echarts-gl.min.js',
        // },
        // {
        //     name: 'echarts-wordcloud',
        //     var: 'echarts-wordcloud',
        //     path: 'dist/echarts-wordcloud.min.js',
        // },
        // {
        //     name: 'vue-i18n',
        //     var: 'VueI18n',
        //     path: 'dist/vue-i18n.global.min.js',
        // },
        // {
        //     name: 'jsplumb',
        //     var: 'jsPlumb',
        //     path: 'dist/js/jsplumb.min.js',
        // },
        // {
        //     name: 'cropperjs',
        //     var: 'Cropper',
        //     path: 'dist/cropper.min.js',
        // },
        // {
        //     name: 'sortablejs',
        //     var: 'Sortable',
        //     path: 'Sortable.min.js',
        // },
        // {
        //     name: 'qrcodejs2-fixes',
        //     var: 'QRCode',
        //     path: 'qrcode.min.js',
        // },
        // {
        //     name: 'print-js',
        //     var: 'printJS',
        //     path: 'dist/print.min.js',
        // },
        // {
        //     name: '@wangeditor/editor',
        //     var: 'wangEditor',
        //     path: 'dist/index.min.js',
        // },
        // {
        //     name: '@wangeditor/editor-for-vue',
        //     var: 'WangEditorForVue',
        //     path: 'dist/index.min.js',
        // },
        // {
        //     name: 'vue-grid-layout',
        //     var: 'VueGridLayout',
        //     path: 'https://cdn.jsdelivr.net/npm/vue-grid-layout@3.0.0-beta1/dist/vue-grid-layout.umd.min.js',
        // },
      ]
    });
  },
  external: [
    "vue",
    // 'axios',
    "vue-router",
    "element-plus"
    // '@element-plus/icons-vue',
    // 'echarts',
    // 'echarts-gl',
    // 'echarts-wordcloud',
    // 'vue-i18n',
    // 'jsplumb',
    // 'cropperjs',
    // 'sortablejs',
    // 'qrcodejs2-fixes',
    // 'print-js',
    // '@wangeditor/editor',
    // '@wangeditor/editor-for-vue',
    // 'vue-grid-layout',
  ]
};
 
// vite.config.ts
import vueJsx from "file:///E:/Program/WCSNet6/Web/node_modules/.pnpm/@vitejs+plugin-vue-jsx@4.0.0_vite@5.4.0_@types+node@20.14.15_less@4.2.0_sass@1.77.8_terser@5._vqcre5lhodczxhk6uzbtdrliei/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs";
import { CodeInspectorPlugin } from "file:///E:/Program/WCSNet6/Web/node_modules/.pnpm/code-inspector-plugin@0.15.2/node_modules/code-inspector-plugin/dist/index.mjs";
import fs from "fs";
import { visualizer } from "file:///E:/Program/WCSNet6/Web/node_modules/.pnpm/rollup-plugin-visualizer@5.12.0_rollup@4.20.0/node_modules/rollup-plugin-visualizer/dist/plugin/index.js";
import { webUpdateNotice } from "file:///E:/Program/WCSNet6/Web/node_modules/.pnpm/@plugin-web-update-notification+vite@1.7.1_vite@5.4.0_@types+node@20.14.15_less@4.2.0_sass@1.77.8_terser@5.31.5_/node_modules/@plugin-web-update-notification/vite/dist/index.js";
var __vite_injected_original_dirname = "E:\\Program\\WCSNet6\\Web";
var pathResolve = (dir) => {
  return resolve(__vite_injected_original_dirname, ".", dir);
};
var alias = {
  "/@": pathResolve("./src/"),
  "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js"
};
var viteConfig = defineConfig((mode) => {
  const env = loadEnv(mode.mode, process.cwd());
  fs.writeFileSync("./public/config.js", `window.__env__ = ${JSON.stringify(env, null, 2)} `);
  return {
    plugins: [
      visualizer({ open: false }),
      // 开启可视化分析页面
      CodeInspectorPlugin({
        bundler: "vite",
        hotKeys: ["shiftKey"]
      }),
      vue(),
      vueJsx(),
      webUpdateNotice({
        versionType: "build_timestamp",
        notificationConfig: {
          placement: "topLeft"
        },
        notificationProps: {
          title: "\u{1F4E2} \u7CFB\u7EDF\u66F4\u65B0",
          description: "\u7CFB\u7EDF\u66F4\u65B0\u5566\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\uFF01",
          buttonText: "\u5237\u65B0",
          dismissButtonText: "\u5FFD\u7565"
        }
      }),
      vueSetupExtend(),
      compression({
        deleteOriginalAssets: false,
        // 是否删除源文件
        threshold: 5120,
        // 对大于 5KB 文件进行 gzip 压缩,单位Bytes
        skipIfLargerOrEqual: true
        // 如果压缩后的文件大小等于或大于原始文件,则跳过压缩
        // algorithm: 'gzip', // 压缩算法,可选[‘gzip’,‘brotliCompress’,‘deflate’,‘deflateRaw’]
        // exclude: [/\.(br)$/, /\.(gz)$/], // 排除指定文件
      }),
      JSON.parse(env.VITE_OPEN_CDN) ? buildConfig.cdn() : null
    ],
    root: process.cwd(),
    resolve: { alias },
    base: mode.command === "serve" ? "./" : env.VITE_PUBLIC_PATH,
    optimizeDeps: { exclude: ["vue-demi"] },
    server: {
      host: "0.0.0.0",
      port: env.VITE_PORT,
      open: JSON.parse(env.VITE_OPEN),
      hmr: true,
      proxy: {
        "^/[Uu]pload": {
          target: env.VITE_API_URL,
          changeOrigin: true
        }
      }
    },
    build: {
      outDir: "dist",
      chunkSizeWarningLimit: 1500,
      assetsInlineLimit: 5e3,
      // 小于此阈值的导入或引用资源将内联为 base64 编码
      sourcemap: false,
      // 构建后是否生成 source map 文件
      extractComments: false,
      // 移除注释
      minify: "terser",
      // 启用后 terserOptions 配置才有效
      terserOptions: {
        compress: {
          drop_console: true,
          // 生产环境时移除console
          drop_debugger: true
        }
      },
      rollupOptions: {
        output: {
          chunkFileNames: "assets/js/[name]-[hash].js",
          // 引入文件名的名称
          entryFileNames: "assets/js/[name]-[hash].js",
          // 包的入口文件名称
          assetFileNames: "assets/[ext]/[name]-[hash].[ext]",
          // 资源文件像 字体,图片等
          manualChunks(id) {
            if (id.includes("node_modules")) {
              return id.toString().match(/\/node_modules\/(?!.pnpm)(?<moduleName>[^\/]*)\//)?.groups.moduleName ?? "vender";
            }
          }
        },
        ...JSON.parse(env.VITE_OPEN_CDN) ? { external: buildConfig.external } : {}
      }
    },
    css: { preprocessorOptions: { css: { charset: false } } },
    define: {
      __VUE_I18N_LEGACY_API__: JSON.stringify(false),
      __VUE_I18N_FULL_INSTALL__: JSON.stringify(false),
      __INTLIFY_PROD_DEVTOOLS__: JSON.stringify(false),
      __NEXT_VERSION__: JSON.stringify(process.env.npm_package_version),
      __NEXT_NAME__: JSON.stringify(process.env.npm_package_name)
    }
  };
});
var vite_config_default = viteConfig;
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAic3JjL3V0aWxzL2J1aWxkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRTpcXFxcUHJvZ3JhbVxcXFxXQ1NOZXQ2XFxcXFdlYlwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcUHJvZ3JhbVxcXFxXQ1NOZXQ2XFxcXFdlYlxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovUHJvZ3JhbS9XQ1NOZXQ2L1dlYi92aXRlLmNvbmZpZy50c1wiO2ltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJztcclxuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgeyBkZWZpbmVDb25maWcsIGxvYWRFbnYsIENvbmZpZ0VudiB9IGZyb20gJ3ZpdGUnO1xyXG5pbXBvcnQgdnVlU2V0dXBFeHRlbmQgZnJvbSAndml0ZS1wbHVnaW4tdnVlLXNldHVwLWV4dGVuZCc7XHJcbmltcG9ydCBjb21wcmVzc2lvbiBmcm9tICd2aXRlLXBsdWdpbi1jb21wcmVzc2lvbjInO1xyXG5pbXBvcnQgeyBidWlsZENvbmZpZyB9IGZyb20gJy4vc3JjL3V0aWxzL2J1aWxkJztcclxuaW1wb3J0IHZ1ZUpzeCBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUtanN4JztcclxuaW1wb3J0IHsgQ29kZUluc3BlY3RvclBsdWdpbiB9IGZyb20gJ2NvZGUtaW5zcGVjdG9yLXBsdWdpbic7XHJcbmltcG9ydCBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCB7IHZpc3VhbGl6ZXIgfSBmcm9tICdyb2xsdXAtcGx1Z2luLXZpc3VhbGl6ZXInO1xyXG5pbXBvcnQgeyB3ZWJVcGRhdGVOb3RpY2UgfSBmcm9tICdAcGx1Z2luLXdlYi11cGRhdGUtbm90aWZpY2F0aW9uL3ZpdGUnO1xyXG5jb25zdCBwYXRoUmVzb2x2ZSA9IChkaXI6IHN0cmluZykgPT4ge1xyXG5cdHJldHVybiByZXNvbHZlKF9fZGlybmFtZSwgJy4nLCBkaXIpO1xyXG59O1xyXG5cclxuY29uc3QgYWxpYXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcblx0Jy9AJzogcGF0aFJlc29sdmUoJy4vc3JjLycpLFxyXG5cdCd2dWUtaTE4bic6ICd2dWUtaTE4bi9kaXN0L3Z1ZS1pMThuLmNqcy5qcycsXHJcbn07XHJcblxyXG5jb25zdCB2aXRlQ29uZmlnID0gZGVmaW5lQ29uZmlnKChtb2RlOiBDb25maWdFbnYpID0+IHtcclxuXHRjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUubW9kZSwgcHJvY2Vzcy5jd2QoKSk7XHJcblx0ZnMud3JpdGVGaWxlU3luYygnLi9wdWJsaWMvY29uZmlnLmpzJywgYHdpbmRvdy5fX2Vudl9fID0gJHtKU09OLnN0cmluZ2lmeShlbnYsIG51bGwsIDIpfSBgKTtcclxuXHRyZXR1cm4ge1xyXG5cdFx0cGx1Z2luczogW1xyXG5cdFx0XHR2aXN1YWxpemVyKHsgb3BlbjogZmFsc2UgfSksIC8vIFx1NUYwMFx1NTQyRlx1NTNFRlx1ODlDNlx1NTMxNlx1NTIwNlx1Njc5MFx1OTg3NVx1OTc2MlxyXG5cdFx0XHRDb2RlSW5zcGVjdG9yUGx1Z2luKHtcclxuXHRcdFx0XHRidW5kbGVyOiAndml0ZScsXHJcblx0XHRcdFx0aG90S2V5czogWydzaGlmdEtleSddLFxyXG5cdFx0XHR9KSxcclxuXHRcdFx0dnVlKCksXHJcblx0XHRcdHZ1ZUpzeCgpLFxyXG5cdFx0XHR3ZWJVcGRhdGVOb3RpY2Uoe1xyXG5cdFx0XHRcdHZlcnNpb25UeXBlOiAnYnVpbGRfdGltZXN0YW1wJyxcclxuXHRcdFx0XHRub3RpZmljYXRpb25Db25maWc6IHtcclxuXHRcdFx0XHRcdHBsYWNlbWVudDogJ3RvcExlZnQnLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0bm90aWZpY2F0aW9uUHJvcHM6IHtcclxuXHRcdFx0XHRcdHRpdGxlOiAnXHVEODNEXHVEQ0UyIFx1N0NGQlx1N0VERlx1NjZGNFx1NjVCMCcsXHJcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogJ1x1N0NGQlx1N0VERlx1NjZGNFx1NjVCMFx1NTU2Nlx1RkYwQ1x1OEJGN1x1NTIzN1x1NjVCMFx1OTg3NVx1OTc2Mlx1RkYwMScsXHJcblx0XHRcdFx0XHRidXR0b25UZXh0OiAnXHU1MjM3XHU2NUIwJyxcclxuXHRcdFx0XHRcdGRpc21pc3NCdXR0b25UZXh0OiAnXHU1RkZEXHU3NTY1JyxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9KSxcclxuXHRcdFx0dnVlU2V0dXBFeHRlbmQoKSxcclxuXHRcdFx0Y29tcHJlc3Npb24oe1xyXG5cdFx0XHRcdGRlbGV0ZU9yaWdpbmFsQXNzZXRzOiBmYWxzZSwgLy8gXHU2NjJGXHU1NDI2XHU1MjIwXHU5NjY0XHU2RTkwXHU2NTg3XHU0RUY2XHJcblx0XHRcdFx0dGhyZXNob2xkOiA1MTIwLCAvLyBcdTVCRjlcdTU5MjdcdTRFOEUgNUtCIFx1NjU4N1x1NEVGNlx1OEZEQlx1ODg0QyBnemlwIFx1NTM4Qlx1N0YyOVx1RkYwQ1x1NTM1NVx1NEY0REJ5dGVzXHJcblx0XHRcdFx0c2tpcElmTGFyZ2VyT3JFcXVhbDogdHJ1ZSwgLy8gXHU1OTgyXHU2NzlDXHU1MzhCXHU3RjI5XHU1NDBFXHU3Njg0XHU2NTg3XHU0RUY2XHU1OTI3XHU1QzBGXHU3QjQ5XHU0RThFXHU2MjE2XHU1OTI3XHU0RThFXHU1MzlGXHU1OUNCXHU2NTg3XHU0RUY2XHVGRjBDXHU1MjE5XHU4REYzXHU4RkM3XHU1MzhCXHU3RjI5XHJcblx0XHRcdFx0Ly8gYWxnb3JpdGhtOiAnZ3ppcCcsIC8vIFx1NTM4Qlx1N0YyOVx1N0I5N1x1NkNENVx1RkYwQ1x1NTNFRlx1OTAwOVtcdTIwMThnemlwXHUyMDE5XHVGRjBDXHUyMDE4YnJvdGxpQ29tcHJlc3NcdTIwMTlcdUZGMENcdTIwMThkZWZsYXRlXHUyMDE5XHVGRjBDXHUyMDE4ZGVmbGF0ZVJhd1x1MjAxOV1cclxuXHRcdFx0XHQvLyBleGNsdWRlOiBbL1xcLihicikkLywgL1xcLihneikkL10sIC8vIFx1NjM5Mlx1OTY2NFx1NjMwN1x1NUI5QVx1NjU4N1x1NEVGNlxyXG5cdFx0XHR9KSxcclxuXHRcdFx0SlNPTi5wYXJzZShlbnYuVklURV9PUEVOX0NETikgPyBidWlsZENvbmZpZy5jZG4oKSA6IG51bGwsXHJcblx0XHRdLFxyXG5cdFx0cm9vdDogcHJvY2Vzcy5jd2QoKSxcclxuXHRcdHJlc29sdmU6IHsgYWxpYXMgfSxcclxuXHRcdGJhc2U6IG1vZGUuY29tbWFuZCA9PT0gJ3NlcnZlJyA/ICcuLycgOiBlbnYuVklURV9QVUJMSUNfUEFUSCxcclxuXHRcdG9wdGltaXplRGVwczogeyBleGNsdWRlOiBbJ3Z1ZS1kZW1pJ10gfSxcclxuXHRcdHNlcnZlcjoge1xyXG5cdFx0XHRob3N0OiAnMC4wLjAuMCcsXHJcblx0XHRcdHBvcnQ6IGVudi5WSVRFX1BPUlQgYXMgdW5rbm93biBhcyBudW1iZXIsXHJcblx0XHRcdG9wZW46IEpTT04ucGFyc2UoZW52LlZJVEVfT1BFTiksXHJcblx0XHRcdGhtcjogdHJ1ZSxcclxuXHRcdFx0cHJveHk6IHtcclxuXHRcdFx0XHQnXi9bVXVdcGxvYWQnOiB7XHJcblx0XHRcdFx0XHR0YXJnZXQ6IGVudi5WSVRFX0FQSV9VUkwsXHJcblx0XHRcdFx0XHRjaGFuZ2VPcmlnaW46IHRydWUsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRidWlsZDoge1xyXG5cdFx0XHRvdXREaXI6ICdkaXN0JyxcclxuXHRcdFx0Y2h1bmtTaXplV2FybmluZ0xpbWl0OiAxNTAwLFxyXG5cdFx0XHRhc3NldHNJbmxpbmVMaW1pdDogNTAwMCwgLy8gXHU1QzBGXHU0RThFXHU2QjY0XHU5NjA4XHU1MDNDXHU3Njg0XHU1QkZDXHU1MTY1XHU2MjE2XHU1RjE1XHU3NTI4XHU4RDQ0XHU2RTkwXHU1QzA2XHU1MTg1XHU4MDU0XHU0RTNBIGJhc2U2NCBcdTdGMTZcdTc4MDFcclxuXHRcdFx0c291cmNlbWFwOiBmYWxzZSwgLy8gXHU2Nzg0XHU1RUZBXHU1NDBFXHU2NjJGXHU1NDI2XHU3NTFGXHU2MjEwIHNvdXJjZSBtYXAgXHU2NTg3XHU0RUY2XHJcblx0XHRcdGV4dHJhY3RDb21tZW50czogZmFsc2UsIC8vIFx1NzlGQlx1OTY2NFx1NkNFOFx1OTFDQVxyXG5cdFx0XHRtaW5pZnk6ICd0ZXJzZXInLCAvLyBcdTU0MkZcdTc1MjhcdTU0MEUgdGVyc2VyT3B0aW9ucyBcdTkxNERcdTdGNkVcdTYyNERcdTY3MDlcdTY1NDhcclxuXHRcdFx0dGVyc2VyT3B0aW9uczoge1xyXG5cdFx0XHRcdGNvbXByZXNzOiB7XHJcblx0XHRcdFx0XHRkcm9wX2NvbnNvbGU6IHRydWUsIC8vIFx1NzUxRlx1NEVBN1x1NzNBRlx1NTg4M1x1NjVGNlx1NzlGQlx1OTY2NGNvbnNvbGVcclxuXHRcdFx0XHRcdGRyb3BfZGVidWdnZXI6IHRydWUsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0cm9sbHVwT3B0aW9uczoge1xyXG5cdFx0XHRcdG91dHB1dDoge1xyXG5cdFx0XHRcdFx0Y2h1bmtGaWxlTmFtZXM6ICdhc3NldHMvanMvW25hbWVdLVtoYXNoXS5qcycsIC8vIFx1NUYxNVx1NTE2NVx1NjU4N1x1NEVGNlx1NTQwRFx1NzY4NFx1NTQwRFx1NzlGMFxyXG5cdFx0XHRcdFx0ZW50cnlGaWxlTmFtZXM6ICdhc3NldHMvanMvW25hbWVdLVtoYXNoXS5qcycsIC8vIFx1NTMwNVx1NzY4NFx1NTE2NVx1NTNFM1x1NjU4N1x1NEVGNlx1NTQwRFx1NzlGMFxyXG5cdFx0XHRcdFx0YXNzZXRGaWxlTmFtZXM6ICdhc3NldHMvW2V4dF0vW25hbWVdLVtoYXNoXS5bZXh0XScsIC8vIFx1OEQ0NFx1NkU5MFx1NjU4N1x1NEVGNlx1NTBDRiBcdTVCNTdcdTRGNTNcdUZGMENcdTU2RkVcdTcyNDdcdTdCNDlcclxuXHRcdFx0XHRcdG1hbnVhbENodW5rcyhpZCkge1xyXG5cdFx0XHRcdFx0XHRpZiAoaWQuaW5jbHVkZXMoJ25vZGVfbW9kdWxlcycpKSB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGlkLnRvU3RyaW5nKCkubWF0Y2goL1xcL25vZGVfbW9kdWxlc1xcLyg/IS5wbnBtKSg/PG1vZHVsZU5hbWU+W15cXC9dKilcXC8vKT8uZ3JvdXBzIS5tb2R1bGVOYW1lID8/ICd2ZW5kZXInO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Li4uKEpTT04ucGFyc2UoZW52LlZJVEVfT1BFTl9DRE4pID8geyBleHRlcm5hbDogYnVpbGRDb25maWcuZXh0ZXJuYWwgfSA6IHt9KSxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRjc3M6IHsgcHJlcHJvY2Vzc29yT3B0aW9uczogeyBjc3M6IHsgY2hhcnNldDogZmFsc2UgfSB9IH0sXHJcblx0XHRkZWZpbmU6IHtcclxuXHRcdFx0X19WVUVfSTE4Tl9MRUdBQ1lfQVBJX186IEpTT04uc3RyaW5naWZ5KGZhbHNlKSxcclxuXHRcdFx0X19WVUVfSTE4Tl9GVUxMX0lOU1RBTExfXzogSlNPTi5zdHJpbmdpZnkoZmFsc2UpLFxyXG5cdFx0XHRfX0lOVExJRllfUFJPRF9ERVZUT09MU19fOiBKU09OLnN0cmluZ2lmeShmYWxzZSksXHJcblx0XHRcdF9fTkVYVF9WRVJTSU9OX186IEpTT04uc3RyaW5naWZ5KHByb2Nlc3MuZW52Lm5wbV9wYWNrYWdlX3ZlcnNpb24pLFxyXG5cdFx0XHRfX05FWFRfTkFNRV9fOiBKU09OLnN0cmluZ2lmeShwcm9jZXNzLmVudi5ucG1fcGFja2FnZV9uYW1lKSxcclxuXHRcdH0sXHJcblx0fTtcclxufSk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCB2aXRlQ29uZmlnO1xyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXFByb2dyYW1cXFxcV0NTTmV0NlxcXFxXZWJcXFxcc3JjXFxcXHV0aWxzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxQcm9ncmFtXFxcXFdDU05ldDZcXFxcV2ViXFxcXHNyY1xcXFx1dGlsc1xcXFxidWlsZC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovUHJvZ3JhbS9XQ1NOZXQ2L1dlYi9zcmMvdXRpbHMvYnVpbGQudHNcIjtpbXBvcnQgaW1wb3J0VG9DRE4gZnJvbSAndml0ZS1wbHVnaW4tY2RuLWltcG9ydCc7XHJcblxyXG4vKipcclxuICogXHU2MjUzXHU1MzA1XHU3NkY4XHU1MTczXHJcbiAqIFx1NkNFOFx1NjEwRiBwcm9kVXJsXHVGRjFBXHU0RjdGXHU3NTI4XHU3Njg0XHU2NjJGIGpzZGVsaXZyIFx1OEZEOFx1NjYyRiB1bnBrZ1x1MzAwMlx1NUI4M1x1NEVFQ1x1NzY4NCBwYXRoIFx1NTNFRlx1ODBGRFx1NEUwRFx1NEUwMFx1ODFGNFxyXG4gKiBcdTY1ODdcdTdBRTBcdTk0RkVcdTYzQTVcdUZGMUFodHRwczovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQ0NTA3NDEvYXJ0aWNsZS9kZXRhaWxzLzEyOTc2NjY3Nlx1RkYwQ1x1NEY3Rlx1NzUyOFx1NzY4NFx1NjYyRiBqc2RlbGl2clxyXG4gKiBAZGVzY3JpcHRpb24gaW1wb3J0VG9DRE4gaHR0cHM6Ly9naXRodWIuY29tL21tZi1mZS92aXRlLXBsdWdpbi1jZG4taW1wb3J0XHJcbiAqIEBkZXNjcmlwdGlvbiBjZG4gXHU1NzI4XHU3RUJGXHU1RjE1XHU1MTY1XHU3Njg0IGNkbiBcdTU3MzBcdTU3NDBcdTkxNERcdTdGNkVcdTMwMDJwYXRoXHVGRjFBaHR0cHM6Ly93d3cuanNkZWxpdnIuY29tLyB8fCBodHRwczovL3VucGtnLmNvbS9cclxuICogQGRlc2NyaXB0aW9uIGV4dGVybmFsIFx1NjI1M1x1NTMwNVx1NjVGNlx1RkYwQ1x1OEZDN1x1NkVFNFx1NTMwNVx1NUJGQ1x1NTE2NVx1MzAwMlx1NTNDMlx1ODAwM1x1RkYxQWh0dHBzOi8vcm9sbHVwanMub3JnL2NvbmZpZ3VyYXRpb24tb3B0aW9ucy8jZXh0ZXJuYWxcclxuICovXHJcbmV4cG9ydCBjb25zdCBidWlsZENvbmZpZyA9IHtcclxuXHRjZG4oKSB7XHJcblx0XHRyZXR1cm4gaW1wb3J0VG9DRE4oe1xyXG5cdFx0XHRwcm9kVXJsOiAnaHR0cHM6Ly91bnBrZy5jb20ve25hbWV9QHt2ZXJzaW9ufS97cGF0aH0nLFxyXG5cdFx0XHRtb2R1bGVzOiBbXHJcblx0XHRcdFx0Ly8gYXV0b0NvbXBsZXRlKCd2dWUnKSxcclxuXHRcdFx0XHQvLyBhdXRvQ29tcGxldGUoJ2F4aW9zJyksXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0bmFtZTogJ3Z1ZScsXHJcblx0XHRcdFx0XHR2YXI6ICdWdWUnLFxyXG5cdFx0XHRcdFx0cGF0aDogJ2Rpc3QvdnVlLmdsb2JhbC5qcycsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHR7XHJcblx0XHRcdFx0XHRuYW1lOiAndnVlLWRlbWknLFxyXG5cdFx0XHRcdFx0dmFyOiAnVnVlRGVtaScsXHJcblx0XHRcdFx0XHRwYXRoOiAnbGliL2luZGV4LmlpZmUuanMnLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0bmFtZTogJ3Z1ZS1yb3V0ZXInLFxyXG5cdFx0XHRcdFx0dmFyOiAnVnVlUm91dGVyJyxcclxuXHRcdFx0XHRcdHBhdGg6ICdkaXN0L3Z1ZS1yb3V0ZXIuZ2xvYmFsLmpzJyxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHtcclxuXHRcdFx0XHRcdG5hbWU6ICdlbGVtZW50LXBsdXMnLFxyXG5cdFx0XHRcdFx0dmFyOiAnRWxlbWVudFBsdXMnLFxyXG5cdFx0XHRcdFx0cGF0aDogJ2Rpc3QvaW5kZXguZnVsbC5qcycsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQvLyB7XHJcblx0XHRcdFx0Ly8gXHRuYW1lOiAnQGVsZW1lbnQtcGx1cy9pY29ucy12dWUnLFxyXG5cdFx0XHRcdC8vIFx0dmFyOiAnRWxlbWVudFBsdXNJY29uc1Z1ZScsXHJcblx0XHRcdFx0Ly8gXHRwYXRoOiAnZGlzdC9pbmRleC5paWZlLm1pbi5qcycsXHJcblx0XHRcdFx0Ly8gfSxcclxuXHRcdFx0XHQvLyB7XHJcblx0XHRcdFx0Ly8gXHRuYW1lOiAnZWNoYXJ0cycsXHJcblx0XHRcdFx0Ly8gXHR2YXI6ICdlY2hhcnRzJyxcclxuXHRcdFx0XHQvLyBcdHBhdGg6ICdkaXN0L2VjaGFydHMubWluLmpzJyxcclxuXHRcdFx0XHQvLyB9LFxyXG5cdFx0XHRcdC8vIHtcclxuXHRcdFx0XHQvLyBcdG5hbWU6ICdlY2hhcnRzLWdsJyxcclxuXHRcdFx0XHQvLyBcdHZhcjogJ2VjaGFydHMtZ2wnLFxyXG5cdFx0XHRcdC8vIFx0cGF0aDogJ2Rpc3QvZWNoYXJ0cy1nbC5taW4uanMnLFxyXG5cdFx0XHRcdC8vIH0sXHJcblx0XHRcdFx0Ly8ge1xyXG5cdFx0XHRcdC8vIFx0bmFtZTogJ2VjaGFydHMtd29yZGNsb3VkJyxcclxuXHRcdFx0XHQvLyBcdHZhcjogJ2VjaGFydHMtd29yZGNsb3VkJyxcclxuXHRcdFx0XHQvLyBcdHBhdGg6ICdkaXN0L2VjaGFydHMtd29yZGNsb3VkLm1pbi5qcycsXHJcblx0XHRcdFx0Ly8gfSxcclxuXHRcdFx0XHQvLyB7XHJcblx0XHRcdFx0Ly8gXHRuYW1lOiAndnVlLWkxOG4nLFxyXG5cdFx0XHRcdC8vIFx0dmFyOiAnVnVlSTE4bicsXHJcblx0XHRcdFx0Ly8gXHRwYXRoOiAnZGlzdC92dWUtaTE4bi5nbG9iYWwubWluLmpzJyxcclxuXHRcdFx0XHQvLyB9LFxyXG5cdFx0XHRcdC8vIHtcclxuXHRcdFx0XHQvLyBcdG5hbWU6ICdqc3BsdW1iJyxcclxuXHRcdFx0XHQvLyBcdHZhcjogJ2pzUGx1bWInLFxyXG5cdFx0XHRcdC8vIFx0cGF0aDogJ2Rpc3QvanMvanNwbHVtYi5taW4uanMnLFxyXG5cdFx0XHRcdC8vIH0sXHJcblx0XHRcdFx0Ly8ge1xyXG5cdFx0XHRcdC8vIFx0bmFtZTogJ2Nyb3BwZXJqcycsXHJcblx0XHRcdFx0Ly8gXHR2YXI6ICdDcm9wcGVyJyxcclxuXHRcdFx0XHQvLyBcdHBhdGg6ICdkaXN0L2Nyb3BwZXIubWluLmpzJyxcclxuXHRcdFx0XHQvLyB9LFxyXG5cdFx0XHRcdC8vIHtcclxuXHRcdFx0XHQvLyBcdG5hbWU6ICdzb3J0YWJsZWpzJyxcclxuXHRcdFx0XHQvLyBcdHZhcjogJ1NvcnRhYmxlJyxcclxuXHRcdFx0XHQvLyBcdHBhdGg6ICdTb3J0YWJsZS5taW4uanMnLFxyXG5cdFx0XHRcdC8vIH0sXHJcblx0XHRcdFx0Ly8ge1xyXG5cdFx0XHRcdC8vIFx0bmFtZTogJ3FyY29kZWpzMi1maXhlcycsXHJcblx0XHRcdFx0Ly8gXHR2YXI6ICdRUkNvZGUnLFxyXG5cdFx0XHRcdC8vIFx0cGF0aDogJ3FyY29kZS5taW4uanMnLFxyXG5cdFx0XHRcdC8vIH0sXHJcblx0XHRcdFx0Ly8ge1xyXG5cdFx0XHRcdC8vIFx0bmFtZTogJ3ByaW50LWpzJyxcclxuXHRcdFx0XHQvLyBcdHZhcjogJ3ByaW50SlMnLFxyXG5cdFx0XHRcdC8vIFx0cGF0aDogJ2Rpc3QvcHJpbnQubWluLmpzJyxcclxuXHRcdFx0XHQvLyB9LFxyXG5cdFx0XHRcdC8vIHtcclxuXHRcdFx0XHQvLyBcdG5hbWU6ICdAd2FuZ2VkaXRvci9lZGl0b3InLFxyXG5cdFx0XHRcdC8vIFx0dmFyOiAnd2FuZ0VkaXRvcicsXHJcblx0XHRcdFx0Ly8gXHRwYXRoOiAnZGlzdC9pbmRleC5taW4uanMnLFxyXG5cdFx0XHRcdC8vIH0sXHJcblx0XHRcdFx0Ly8ge1xyXG5cdFx0XHRcdC8vIFx0bmFtZTogJ0B3YW5nZWRpdG9yL2VkaXRvci1mb3ItdnVlJyxcclxuXHRcdFx0XHQvLyBcdHZhcjogJ1dhbmdFZGl0b3JGb3JWdWUnLFxyXG5cdFx0XHRcdC8vIFx0cGF0aDogJ2Rpc3QvaW5kZXgubWluLmpzJyxcclxuXHRcdFx0XHQvLyB9LFxyXG5cdFx0XHRcdC8vIHtcclxuXHRcdFx0XHQvLyBcdG5hbWU6ICd2dWUtZ3JpZC1sYXlvdXQnLFxyXG5cdFx0XHRcdC8vIFx0dmFyOiAnVnVlR3JpZExheW91dCcsXHJcblx0XHRcdFx0Ly8gXHRwYXRoOiAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS92dWUtZ3JpZC1sYXlvdXRAMy4wLjAtYmV0YTEvZGlzdC92dWUtZ3JpZC1sYXlvdXQudW1kLm1pbi5qcycsXHJcblx0XHRcdFx0Ly8gfSxcclxuXHRcdFx0XSxcclxuXHRcdH0pO1xyXG5cdH0sXHJcblx0ZXh0ZXJuYWw6IFtcclxuXHRcdCd2dWUnLFxyXG5cdFx0Ly8gJ2F4aW9zJyxcclxuXHRcdCd2dWUtcm91dGVyJyxcclxuXHRcdCdlbGVtZW50LXBsdXMnLFxyXG5cdFx0Ly8gJ0BlbGVtZW50LXBsdXMvaWNvbnMtdnVlJyxcclxuXHRcdC8vICdlY2hhcnRzJyxcclxuXHRcdC8vICdlY2hhcnRzLWdsJyxcclxuXHRcdC8vICdlY2hhcnRzLXdvcmRjbG91ZCcsXHJcblx0XHQvLyAndnVlLWkxOG4nLFxyXG5cdFx0Ly8gJ2pzcGx1bWInLFxyXG5cdFx0Ly8gJ2Nyb3BwZXJqcycsXHJcblx0XHQvLyAnc29ydGFibGVqcycsXHJcblx0XHQvLyAncXJjb2RlanMyLWZpeGVzJyxcclxuXHRcdC8vICdwcmludC1qcycsXHJcblx0XHQvLyAnQHdhbmdlZGl0b3IvZWRpdG9yJyxcclxuXHRcdC8vICdAd2FuZ2VkaXRvci9lZGl0b3ItZm9yLXZ1ZScsXHJcblx0XHQvLyAndnVlLWdyaWQtbGF5b3V0JyxcclxuXHRdLFxyXG59O1xyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQTRQLE9BQU8sU0FBUztBQUM1USxTQUFTLGVBQWU7QUFDeEIsU0FBUyxjQUFjLGVBQTBCO0FBQ2pELE9BQU8sb0JBQW9CO0FBQzNCLE9BQU8saUJBQWlCOzs7QUNKMFAsT0FBTyxpQkFBaUI7QUFVblMsSUFBTSxjQUFjO0FBQUEsRUFDMUIsTUFBTTtBQUNMLFdBQU8sWUFBWTtBQUFBLE1BQ2xCLFNB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LFNBQVMsQ0FBQyxVQUFVLEVBQUU7QUFBQSxJQUN0QyxRQUFRO0FBQUEsTUFDUCxNQUFNO0FBQUEsTUFDTixNQUFNLElBQUk7QUFBQSxNQUNWLE1BQU0sS0FBSyxNQUFNLElBQUksU0FBUztBQUFBLE1BQzlCLEtBQUs7QUFBQSxNQUNMLE9BQU87QUFBQSxRQUNOLGVBQWU7QUFBQSxVQUNkLFFBQVEsSUFBSTtBQUFBLFVBQ1osY0FBYztBQUFBLFFBQ2Y7QUFBQSxNQUNEO0FBQUEsSUFDRDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsdUJBQXVCO0FBQUEsTUFDdkIsbUJBQW1CO0FBQUE7QUFBQSxNQUNuQixXQUFXO0FBQUE7QUFBQSxNQUNYLGlCQUFpQjtBQUFBO0FBQUEsTUFDakIsUUFBUTtBQUFBO0FBQUEsTUFDUixlQUFlO0FBQUEsUUFDZCxVQUFVO0FBQUEsVUFDVCxjQUFjO0FBQUE7QUFBQSxVQUNkLGVBQWU7QUFBQSxRQUNoQjtBQUFBLE1BQ0Q7QUFBQSxNQUNBLGVBQWU7QUFBQSxRQUNkLFFBQVE7QUFBQSxVQUNQLGdCQUFnQjtBQUFBO0FBQUEsVUFDaEIsZ0JBQWdCO0FBQUE7QUFBQSxVQUNoQixnQkFBZ0I7QUFBQTtBQUFBLFVBQ2hCLGFBQWEsSUFBSTtBQUNoQixnQkFBSSxHQUFHLFNBQVMsY0FBYyxHQUFHO0FBQ2hDLHFCQUFPLEdBQUcsU0FBUyxFQUFFLE1BQU0sa0RBQWtELEdBQUcsT0FBUSxjQUFjO0FBQUEsWUFDdkc7QUFBQSxVQUNEO0FBQUEsUUFDRDtBQUFBLFFBQ0EsR0FBSSxLQUFLLE1BQU0sSUFBSSxhQUFhLElBQUksRUFBRSxVQUFVLFlBQVksU0FBUyxJQUFJLENBQUM7QUFBQSxNQUMzRTtBQUFBLElBQ0Q7QUFBQSxJQUNBLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxNQUFNLEVBQUUsRUFBRTtBQUFBLElBQ3hELFFBQVE7QUFBQSxNQUNQLHlCQUF5QixLQUFLLFVBQVUsS0FBSztBQUFBLE1BQzdDLDJCQUEyQixLQUFLLFVBQVUsS0FBSztBQUFBLE1BQy9DLDJCQUEyQixLQUFLLFVBQVUsS0FBSztBQUFBLE1BQy9DLGtCQUFrQixLQUFLLFVBQVUsUUFBUSxJQUFJLG1CQUFtQjtBQUFBLE1BQ2hFLGVBQWUsS0FBSyxVQUFVLFFBQVEsSUFBSSxnQkFBZ0I7QUFBQSxJQUMzRDtBQUFBLEVBQ0Q7QUFDRCxDQUFDO0FBRUQsSUFBTyxzQkFBUTsiLAogICJuYW1lcyI6IFtdCn0K