| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455 |
- // vite.config.ts
- import { loadEnv } from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/vite@5.1.3_@types+node@17.0.45_less@4.1.3_sass@1.53.0/node_modules/vite/dist/node/index.js";
- import path, { resolve } from "path";
- // build/utils.ts
- import dotenv from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/dotenv@16.0.1/node_modules/dotenv/lib/main.js";
- function isReportMode() {
- return process.env.REPORT === "true";
- }
- function wrapperEnv(envConf) {
- const ret = {};
- for (const envName of Object.keys(envConf)) {
- let realName = envConf[envName].replace(/\\n/g, "\n");
- realName = realName === "true" ? true : realName === "false" ? false : realName;
- if (envName === "VITE_PORT") {
- realName = Number(realName);
- }
- if (envName === "VITE_PROXY") {
- try {
- realName = JSON.parse(realName);
- } catch (error) {
- }
- }
- ret[envName] = realName;
- process.env[envName] = realName;
- }
- return ret;
- }
- // build/vite/plugin/index.ts
- import vue from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/@vitejs+plugin-vue@2.3.3_vite@5.1.3_vue@3.3.4/node_modules/@vitejs/plugin-vue/dist/index.js";
- import vueJsx from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/@vitejs+plugin-vue-jsx@1.3.10/node_modules/@vitejs/plugin-vue-jsx/index.js";
- import VueSetupExtend from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/vite-plugin-vue-setup-extend@0.4.0_vite@5.1.3/node_modules/vite-plugin-vue-setup-extend/dist/index.mjs";
- // build/vite/plugin/html.ts
- import { createHtmlPlugin } from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/vite-plugin-html@3.2.2_vite@5.1.3/node_modules/vite-plugin-html/dist/index.mjs";
- // package.json
- var package_default = {
- name: "skyeye-admin-fe",
- version: "1.3.9",
- private: true,
- type: "module",
- scripts: {
- bootstrap: "pnpm install",
- serve: "pnpm run dev",
- dev: "vite",
- createConfig: "esno ./build/script/postBuild.ts",
- build: "cross-env NODE_ENV=production vite build",
- "build:test": "cross-env vite build --mode test && esno ./build/script/postBuild.ts",
- "build:no-cache": "pnpm clean:cache && pnpm run build",
- report: "cross-env REPORT=true pnpm run build",
- "type:check": "vue-tsc --noEmit --skipLibCheck",
- preview: "pnpm run build && vite preview",
- "preview:dist": "vite preview",
- "clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
- "clean:lib": "rimraf node_modules",
- "lint:eslint": 'eslint "{src,mock}/**/*.{vue,ts,tsx}" --fix',
- "lint:prettier": 'prettier --write --loglevel warn "src/**/*.{js,json,tsx,css,less,scss,vue,html,md}"',
- "lint:stylelint": 'stylelint --fix "**/*.{vue,less,postcss,css,scss}" --cache --cache-location node_modules/.cache/stylelint/',
- "lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js",
- "lint:pretty": "pretty-quick --staged",
- "test prod gzip": "http-server dist --cors --gzip -c-1",
- reinstall: "rimraf pnpm-lock.yaml && rimraf package.lock.json && rimraf node_modules && pnpm run bootstrap",
- "build typecheck": "vuedx-typecheck . && vite build",
- deploy: "gh-pages -d dist",
- publish: "esno ./build/publish/publish.ts"
- },
- dependencies: {
- "@element-plus/icons-vue": "2.0.9",
- "@types/fabric": "5.3.6",
- "@vicons/antd": "0.12.0",
- "@vicons/ionicons5": "0.12.0",
- "@vueup/vue-quill": "1.0.0-beta.8",
- "@vueuse/core": "8.9.4",
- "@vueuse/router": "10.6.1",
- "@wangeditor/editor": "5.1.23",
- "@wangeditor/editor-for-vue": "5.1.12",
- "animate.css": "4.1.1",
- archiver: "^7.0.1",
- axios: "0.27.2",
- "blueimp-md5": "2.19.0",
- canvg: "4.0.1",
- cropperjs: "1.5.12",
- dayjs: "1.11.4",
- echarts: "5.3.3",
- "element-plus": "2.7.1",
- "element-resize-detector": "1.2.4",
- "form-data": "^4.0.0",
- html2canvas: "1.0.0",
- konva: "9.3.0",
- "lodash-es": "4.17.21",
- mockjs: "1.1.0",
- "mpegts.js": "1.7.3",
- nprogress: "0.2.0",
- "number-precision": "1.6.0",
- "perfect-scrollbar": "1.5.5",
- pinia: "2.0.16",
- "print-js": "1.6.0",
- qrcode: "1.5.1",
- qs: "6.11.0",
- uid: "2.0.2",
- "url-join": "5.0.0",
- vue: "3.3.4",
- "vue-echarts": "^6.6.8",
- "vue-hooks-plus": "1.8.6",
- "vue-konva": "3.0.2",
- "vue-router": "4.1.2",
- "vue-types": "4.1.1",
- vuedraggable: "4.1.0",
- xlsx: "0.18.5"
- },
- devDependencies: {
- "@commitlint/cli": "17.0.3",
- "@commitlint/config-conventional": "17.0.3",
- "@types/element-resize-detector": "1.1.3",
- "@types/intro.js": "3.0.2",
- "@types/lodash-es": "4.17.6",
- "@types/node": "17.0.45",
- "@types/qrcode": "1.4.2",
- "@typescript-eslint/eslint-plugin": "5.30.7",
- "@typescript-eslint/parser": "5.30.7",
- "@vitejs/plugin-vue": "2.3.3",
- "@vitejs/plugin-vue-jsx": "1.3.10",
- "@vue/compiler-sfc": "3.3.4",
- autoprefixer: "10.4.7",
- chalk: "5.3.0",
- colors: "1.4.0",
- commitizen: "4.2.5",
- "core-js": "3.23.5",
- "cross-env": "7.0.3",
- dotenv: "16.0.1",
- eslint: "8.20.0",
- "eslint-config-prettier": "8.5.0",
- "eslint-define-config": "1.5.1",
- "eslint-plugin-prettier": "4.2.1",
- "eslint-plugin-vue": "8.7.1",
- esno: "0.16.3",
- "fast-glob": "3.3.1",
- "fs-extra": "10.1.0",
- "gh-pages": "4.0.0",
- husky: "8.0.1",
- less: "4.1.3",
- "less-loader": "11.1.3",
- "lint-staged": "13.0.3",
- picocolors: "1.0.0",
- postcss: "8.4.14",
- "postcss-px-to-viewport": "1.1.1",
- prettier: "2.7.1",
- "pretty-quick": "3.1.3",
- rimraf: "3.0.2",
- "rollup-plugin-visualizer": "5.8.3",
- sass: "1.53.0",
- "simple-git": "3.22.0",
- stylelint: "14.9.1",
- "stylelint-config-prettier": "9.0.3",
- "stylelint-config-standard": "25.0.0",
- "stylelint-order": "5.0.0",
- "stylelint-scss": "4.3.0",
- tailwindcss: "3.3.2",
- "ts-node": "10.9.1",
- typescript: "4.7.4",
- vconsole: "3.15.1",
- vite: "5.1.3",
- "vite-plugin-compression": "0.5.1",
- "vite-plugin-html": "3.2.2",
- "vite-plugin-mock": "2.9.6",
- "vite-plugin-style-import": "2.0.0",
- "vite-plugin-svg-icons": "2.0.1",
- "vite-plugin-vconsole": "1.3.1",
- "vite-plugin-vue-setup-extend": "0.4.0",
- "vue-eslint-parser": "9.0.3",
- "vue-tsc": "0.35.2"
- },
- "lint-staged": {
- "*.{vue,js,ts,tsx}": "eslint --fix"
- },
- config: {
- commitizen: {
- path: "./node_modules/cz-customizable"
- }
- },
- keywords: [
- "vue",
- "naive-ui",
- "naive-ui-admin",
- "vue3",
- "ts",
- "tsx",
- "admin",
- "typescript"
- ],
- engines: {
- node: "12 || >=14"
- },
- pnpm: {
- peerDependencyRules: {
- ignoreMissing: [
- "rollup",
- "webpack"
- ]
- }
- }
- };
- // build/constant.ts
- var GLOB_CONFIG_FILE_NAME = "app.config.js";
- var OUTPUT_DIR = "dist";
- // build/vite/plugin/html.ts
- import { simpleGit } from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/simple-git@3.22.0/node_modules/simple-git/dist/esm/index.js";
- var git = simpleGit();
- async function getLatestHash() {
- const gitLog = await git.log();
- const lastStrNum = 8;
- return gitLog.latest?.hash.substring(-lastStrNum, lastStrNum);
- }
- function configHtmlPlugin(env, isBuild) {
- const { VITE_GLOB_APP_TITLE } = env;
- const path2 = "./";
- const getAppConfigSrc = () => {
- return `${path2 || "/"}${GLOB_CONFIG_FILE_NAME}?v=${package_default.version}-${(/* @__PURE__ */ new Date()).getTime()}`;
- };
- return new Promise((resolve2) => {
- getLatestHash().then((hash) => {
- const htmlPlugin = createHtmlPlugin({
- minify: isBuild,
- inject: {
- // Inject data into ejs template
- data: {
- title: VITE_GLOB_APP_TITLE,
- hash
- },
- // Embed the generated app.config.js file
- tags: isBuild ? [
- {
- tag: "script",
- attrs: {
- src: getAppConfigSrc()
- }
- }
- ] : []
- }
- });
- resolve2(htmlPlugin);
- });
- });
- }
- // build/vite/plugin/mock.ts
- import { viteMockServe } from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/vite-plugin-mock@2.9.6_mockjs@1.1.0_vite@5.1.3/node_modules/vite-plugin-mock/dist/index.js";
- function configMockPlugin(isBuild, prodMock) {
- return viteMockServe({
- ignore: /^\_/,
- mockPath: "mock",
- localEnabled: !isBuild,
- prodEnabled: isBuild && prodMock,
- injectCode: `
- import { setupProdMockServer } from '../mock/_createProductionServer';
-
- setupProdMockServer();
- `
- });
- }
- // build/vite/plugin/compress.ts
- import compressPlugin from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/vite-plugin-compression@0.5.1_vite@5.1.3/node_modules/vite-plugin-compression/dist/index.mjs";
- function configCompressPlugin(compress, deleteOriginFile = false) {
- const compressList = compress.split(",");
- const plugins = [];
- if (compressList.includes("gzip")) {
- plugins.push(
- compressPlugin({
- ext: ".gz",
- deleteOriginFile
- })
- );
- }
- if (compressList.includes("brotli")) {
- plugins.push(
- compressPlugin({
- ext: ".br",
- algorithm: "brotliCompress",
- deleteOriginFile
- })
- );
- }
- return plugins;
- }
- // build/vite/plugin/visualizer.ts
- import { visualizer } from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/rollup-plugin-visualizer@5.8.3/node_modules/rollup-plugin-visualizer/dist/plugin/index.js";
- function configVisualizerPlugin() {
- if (isReportMode()) {
- return visualizer({
- filename: "./node_modules/.cache/visualizer/stats.html",
- open: true,
- gzipSize: true,
- brotliSize: true
- });
- }
- return [];
- }
- // build/vite/plugin/index.ts
- function createVitePlugins(viteEnv, isBuild, prodMock) {
- const { VITE_USE_MOCK, VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv;
- const vitePlugins = [
- // have to
- vue(),
- // have to
- vueJsx(),
- VueSetupExtend()
- // ElementPlus({
- // // 引入的样式的类型,可以是css、sass、less等,
- // importStyle: 'sass',
- // useSource: true,
- // }),
- // 按需引入element且自动创建组件声明
- // AutoImport({
- // resolvers: [ElementPlusResolver()],
- // }),
- // Components({
- // resolvers: [ElementPlusResolver()],
- // }),
- ];
- vitePlugins.push(configHtmlPlugin(viteEnv, isBuild));
- VITE_USE_MOCK && vitePlugins.push(configMockPlugin(isBuild, prodMock));
- vitePlugins.push(configVisualizerPlugin());
- if (isBuild) {
- vitePlugins.push(
- configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE)
- );
- }
- return vitePlugins;
- }
- // build/vite/proxy.ts
- var httpsRE = /^https:\/\//;
- function createProxy(list = []) {
- const ret = {};
- for (const [prefix, target] of list) {
- const isHttps = httpsRE.test(target);
- ret[prefix] = {
- target,
- changeOrigin: true,
- ws: true,
- rewrite: (path2) => path2.replace(new RegExp(`^${prefix}`), ""),
- // https is require secure=false
- ...isHttps ? { secure: false } : {}
- };
- }
- return ret;
- }
- // src/utils/dateUtil.ts
- import dayjs from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/dayjs@1.11.4/node_modules/dayjs/dayjs.min.js";
- var DATE_TIME_FORMAT = "YYYY-MM-DD HH:mm";
- function formatToDateTime(date, formatStr = DATE_TIME_FORMAT) {
- return dayjs(date).format(formatStr);
- }
- // vite.config.ts
- import { createSvgIconsPlugin } from "file:///C:/comac/skyeye/skyeye-admin-fe/node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_vite@5.1.3/node_modules/vite-plugin-svg-icons/dist/index.mjs";
- var __vite_injected_original_dirname = "C:\\comac\\skyeye\\skyeye-admin-fe";
- var svg = createSvgIconsPlugin({
- // 要缓存的图标文件夹
- iconDirs: [path.resolve(__vite_injected_original_dirname, "src/assets/icons")],
- // 执行 icon name 的格式
- symbolId: "icon-[name]"
- });
- var { dependencies, devDependencies, name, version } = package_default;
- var __APP_INFO__ = {
- pkg: { dependencies, devDependencies, name, version },
- lastBuildTime: formatToDateTime(/* @__PURE__ */ new Date())
- };
- function pathResolve(dir) {
- return resolve(process.cwd(), ".", dir);
- }
- var vite_config_default = ({ command, mode }) => {
- const root = process.cwd();
- const env = loadEnv(mode, root);
- const viteEnv = wrapperEnv(env);
- const { VITE_PORT, VITE_GLOB_PROD_MOCK, VITE_PROXY } = viteEnv;
- const prodMock = VITE_GLOB_PROD_MOCK;
- const isBuild = command === "build";
- return {
- base: "./",
- esbuild: {},
- resolve: {
- alias: [
- {
- find: /\/#\//,
- replacement: pathResolve("types") + "/"
- },
- {
- find: "@",
- replacement: pathResolve("src") + "/"
- }
- ],
- dedupe: ["vue"]
- },
- plugins: [createVitePlugins(viteEnv, isBuild, prodMock), svg],
- define: {
- __APP_INFO__: JSON.stringify(__APP_INFO__)
- },
- css: {
- devSourcemap: true,
- preprocessorOptions: {
- scss: {
- modifyVars: {},
- javascriptEnabled: true,
- additionalData: `@import "src/styles/var.scss";`
- }
- }
- },
- server: {
- host: true,
- port: VITE_PORT,
- proxy: createProxy(VITE_PROXY)
- // proxy: {
- // '/api': {
- // target: '',
- // changeOrigin: true,
- // rewrite: (path) => path.replace(/^\/api/, '/api/v1')
- // }
- // }
- },
- optimizeDeps: {
- include: ["dayjs", "@vicons/ionicons5", "@vicons/antd", "@element-plus/icons-vue"],
- exclude: []
- },
- build: {
- target: "es2015",
- outDir: OUTPUT_DIR,
- minify: "terser",
- /**
- * 当 minify 为 minify 或 terser 打开注释
- */
- terserOptions: {
- compress: {
- keep_infinity: true,
- drop_console: true
- }
- },
- reportCompressedSize: false,
- chunkSizeWarningLimit: 2e3
- }
- };
- };
- export {
- vite_config_default as default
- };
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAiYnVpbGQvdXRpbHMudHMiLCAiYnVpbGQvdml0ZS9wbHVnaW4vaW5kZXgudHMiLCAiYnVpbGQvdml0ZS9wbHVnaW4vaHRtbC50cyIsICJwYWNrYWdlLmpzb24iLCAiYnVpbGQvY29uc3RhbnQudHMiLCAiYnVpbGQvdml0ZS9wbHVnaW4vbW9jay50cyIsICJidWlsZC92aXRlL3BsdWdpbi9jb21wcmVzcy50cyIsICJidWlsZC92aXRlL3BsdWdpbi92aXN1YWxpemVyLnRzIiwgImJ1aWxkL3ZpdGUvcHJveHkudHMiLCAic3JjL3V0aWxzL2RhdGVVdGlsLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiQzpcXFxcY29tYWNcXFxcc2t5ZXllXFxcXHNreWV5ZS1hZG1pbi1mZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcY29tYWNcXFxcc2t5ZXllXFxcXHNreWV5ZS1hZG1pbi1mZVxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vQzovY29tYWMvc2t5ZXllL3NreWV5ZS1hZG1pbi1mZS92aXRlLmNvbmZpZy50c1wiO2ltcG9ydCB0eXBlIHsgVXNlckNvbmZpZywgQ29uZmlnRW52IH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgeyBsb2FkRW52IH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgcGF0aCwgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyB3cmFwcGVyRW52IH0gZnJvbSAnLi9idWlsZC91dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVWaXRlUGx1Z2lucyB9IGZyb20gJy4vYnVpbGQvdml0ZS9wbHVnaW4nO1xuaW1wb3J0IHsgT1VUUFVUX0RJUiB9IGZyb20gJy4vYnVpbGQvY29uc3RhbnQnO1xuaW1wb3J0IHsgY3JlYXRlUHJveHkgfSBmcm9tICcuL2J1aWxkL3ZpdGUvcHJveHknO1xuaW1wb3J0IHBrZyBmcm9tICcuL3BhY2thZ2UuanNvbic7XG5pbXBvcnQgeyBmb3JtYXRUb0RhdGVUaW1lIH0gZnJvbSAnLi9zcmMvdXRpbHMvZGF0ZVV0aWwnO1xuaW1wb3J0IHsgY3JlYXRlU3ZnSWNvbnNQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1zdmctaWNvbnMnO1xuXG5jb25zdCBzdmcgPSBjcmVhdGVTdmdJY29uc1BsdWdpbih7XG4gIC8vIFx1ODk4MVx1N0YxM1x1NUI1OFx1NzY4NFx1NTZGRVx1NjgwN1x1NjU4N1x1NEVGNlx1NTkzOVxuICBpY29uRGlyczogW3BhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdzcmMvYXNzZXRzL2ljb25zJyldLFxuICAvLyBcdTYyNjdcdTg4NEMgaWNvbiBuYW1lIFx1NzY4NFx1NjgzQ1x1NUYwRlxuICBzeW1ib2xJZDogJ2ljb24tW25hbWVdJyxcbn0pO1xuXG5jb25zdCB7IGRlcGVuZGVuY2llcywgZGV2RGVwZW5kZW5jaWVzLCBuYW1lLCB2ZXJzaW9uIH0gPSBwa2c7XG5cbmNvbnN0IF9fQVBQX0lORk9fXyA9IHtcbiAgcGtnOiB7IGRlcGVuZGVuY2llcywgZGV2RGVwZW5kZW5jaWVzLCBuYW1lLCB2ZXJzaW9uIH0sXG4gIGxhc3RCdWlsZFRpbWU6IGZvcm1hdFRvRGF0ZVRpbWUobmV3IERhdGUoKSksXG59O1xuXG5mdW5jdGlvbiBwYXRoUmVzb2x2ZShkaXI6IHN0cmluZykge1xuICByZXR1cm4gcmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnLicsIGRpcik7XG59XG5cbmV4cG9ydCBkZWZhdWx0ICh7IGNvbW1hbmQsIG1vZGUgfTogQ29uZmlnRW52KTogVXNlckNvbmZpZyA9PiB7XG4gIGNvbnN0IHJvb3QgPSBwcm9jZXNzLmN3ZCgpO1xuICBjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHJvb3QpO1xuICBjb25zdCB2aXRlRW52ID0gd3JhcHBlckVudihlbnYpO1xuICBjb25zdCB7IFZJVEVfUE9SVCwgVklURV9HTE9CX1BST0RfTU9DSywgVklURV9QUk9YWSB9ID0gdml0ZUVudjtcbiAgY29uc3QgcHJvZE1vY2sgPSBWSVRFX0dMT0JfUFJPRF9NT0NLO1xuICBjb25zdCBpc0J1aWxkID0gY29tbWFuZCA9PT0gJ2J1aWxkJztcbiAgcmV0dXJuIHtcbiAgICBiYXNlOiAnLi8nLFxuICAgIGVzYnVpbGQ6IHt9LFxuICAgIHJlc29sdmU6IHtcbiAgICAgIGFsaWFzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaW5kOiAvXFwvI1xcLy8sXG4gICAgICAgICAgcmVwbGFjZW1lbnQ6IHBhdGhSZXNvbHZlKCd0eXBlcycpICsgJy8nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmluZDogJ0AnLFxuICAgICAgICAgIHJlcGxhY2VtZW50OiBwYXRoUmVzb2x2ZSgnc3JjJykgKyAnLycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGVkdXBlOiBbJ3Z1ZSddLFxuICAgIH0sXG4gICAgcGx1Z2luczogW2NyZWF0ZVZpdGVQbHVnaW5zKHZpdGVFbnYsIGlzQnVpbGQsIHByb2RNb2NrKSwgc3ZnXSxcbiAgICBkZWZpbmU6IHtcbiAgICAgIF9fQVBQX0lORk9fXzogSlNPTi5zdHJpbmdpZnkoX19BUFBfSU5GT19fKSxcbiAgICB9LFxuICAgIGNzczoge1xuICAgICAgZGV2U291cmNlbWFwOiB0cnVlLFxuICAgICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xuICAgICAgICBzY3NzOiB7XG4gICAgICAgICAgbW9kaWZ5VmFyczoge30sXG4gICAgICAgICAgamF2YXNjcmlwdEVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgYWRkaXRpb25hbERhdGE6IGBAaW1wb3J0IFwic3JjL3N0eWxlcy92YXIuc2Nzc1wiO2AsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2VydmVyOiB7XG4gICAgICBob3N0OiB0cnVlLFxuICAgICAgcG9ydDogVklURV9QT1JULFxuICAgICAgcHJveHk6IGNyZWF0ZVByb3h5KFZJVEVfUFJPWFkpLFxuICAgICAgLy8gcHJveHk6IHtcbiAgICAgIC8vICAgICAnL2FwaSc6IHtcbiAgICAgIC8vICAgICAgICAgdGFyZ2V0OiAnJyxcbiAgICAgIC8vICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgLy8gICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKC9eXFwvYXBpLywgJy9hcGkvdjEnKVxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vIH1cbiAgICB9LFxuICAgIG9wdGltaXplRGVwczoge1xuICAgICAgaW5jbHVkZTogWydkYXlqcycsICdAdmljb25zL2lvbmljb25zNScsICdAdmljb25zL2FudGQnLCAnQGVsZW1lbnQtcGx1cy9pY29ucy12dWUnXSxcbiAgICAgIGV4Y2x1ZGU6IFtdLFxuICAgIH0sXG4gICAgYnVpbGQ6IHtcbiAgICAgIHRhcmdldDogJ2VzMjAxNScsXG4gICAgICBvdXREaXI6IE9VVFBVVF9ESVIsXG4gICAgICBtaW5pZnk6ICd0ZXJzZXInLFxuICAgICAgLyoqXG4gICAgICAgKiBcdTVGNTMgbWluaWZ5IFx1NEUzQSBtaW5pZnkgXHU2MjE2IHRlcnNlciBcdTYyNTNcdTVGMDBcdTZDRThcdTkxQ0FcbiAgICAgICAqL1xuICAgICAgdGVyc2VyT3B0aW9uczoge1xuICAgICAgICBjb21wcmVzczoge1xuICAgICAgICAgIGtlZXBfaW5maW5pdHk6IHRydWUsXG4gICAgICAgICAgZHJvcF9jb25zb2xlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlcG9ydENvbXByZXNzZWRTaXplOiBmYWxzZSxcbiAgICAgIGNodW5rU2l6ZVdhcm5pbmdMaW1pdDogMjAwMCxcbiAgICB9LFxuICB9O1xufTtcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiQzpcXFxcY29tYWNcXFxcc2t5ZXllXFxcXHNreWV5ZS1hZG1pbi1mZVxcXFxidWlsZFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcY29tYWNcXFxcc2t5ZXllXFxcXHNreWV5ZS1hZG1pbi1mZVxcXFxidWlsZFxcXFx1dGlscy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vQzovY29tYWMvc2t5ZXllL3NreWV5ZS1hZG1pbi1mZS9idWlsZC91dGlscy50c1wiO2ltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBkb3RlbnYgZnJvbSAnZG90ZW52JztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGV2Rm4obW9kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBtb2RlID09PSAnZGV2ZWxvcG1lbnQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9kRm4obW9kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBtb2RlID09PSAncHJvZHVjdGlvbic7XG59XG5cbi8qKlxuICogV2hldGhlciB0byBnZW5lcmF0ZSBwYWNrYWdlIHByZXZpZXdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVwb3J0TW9kZSgpOiBib29sZWFuIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LlJFUE9SVCA9PT0gJ3RydWUnO1xufVxuXG4vLyBSZWFkIGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHByb2Nlc3MuZW52XG5leHBvcnQgZnVuY3Rpb24gd3JhcHBlckVudihlbnZDb25mOiBSZWNvcmRhYmxlKTogVml0ZUVudiB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG5cbiAgZm9yIChjb25zdCBlbnZOYW1lIG9mIE9iamVjdC5rZXlzKGVudkNvbmYpKSB7XG4gICAgbGV0IHJlYWxOYW1lID0gZW52Q29uZltlbnZOYW1lXS5yZXBsYWNlKC9cXFxcbi9nLCAnXFxuJyk7XG4gICAgcmVhbE5hbWUgPSByZWFsTmFtZSA9PT0gJ3RydWUnID8gdHJ1ZSA6IHJlYWxOYW1lID09PSAnZmFsc2UnID8gZmFsc2UgOiByZWFsTmFtZTtcblxuICAgIGlmIChlbnZOYW1lID09PSAnVklURV9QT1JUJykge1xuICAgICAgcmVhbE5hbWUgPSBOdW1iZXIocmVhbE5hbWUpO1xuICAgIH1cbiAgICBpZiAoZW52TmFtZSA9PT0gJ1ZJVEVfUFJPWFknKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZWFsTmFtZSA9IEpTT04ucGFyc2UocmVhbE5hbWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgfVxuICAgIHJldFtlbnZOYW1lXSA9IHJlYWxOYW1lO1xuICAgIHByb2Nlc3MuZW52W2Vudk5hbWVdID0gcmVhbE5hbWU7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBzdGFydGluZyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4XG4gKiBAcGFyYW0gbWF0Y2ggcHJlZml4XG4gKiBAcGFyYW0gY29uZkZpbGVzIGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW52Q29uZmlnKG1hdGNoID0gJ1ZJVEVfR0xPQl8nLCBjb25mRmlsZXMgPSBbJy5lbnYnLCAnLmVudi5wcm9kdWN0aW9uJ10pIHtcbiAgbGV0IGVudkNvbmZpZyA9IHt9O1xuICBjb25mRmlsZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbnYgPSBkb3RlbnYucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBpdGVtKSkpO1xuICAgICAgZW52Q29uZmlnID0geyAuLi5lbnZDb25maWcsIC4uLmVudiB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICB9KTtcblxuICBPYmplY3Qua2V5cyhlbnZDb25maWcpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYF4oJHttYXRjaH0pYCk7XG4gICAgaWYgKCFyZWcudGVzdChrZXkpKSB7XG4gICAgICBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KGVudkNvbmZpZywga2V5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZW52Q29uZmlnO1xufVxuXG4vKipcbiAqIEdldCB1c2VyIHJvb3QgZGlyZWN0b3J5XG4gKiBAcGFyYW0gZGlyIGZpbGUgcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFBhdGgoLi4uZGlyOiBzdHJpbmdbXSkge1xuICByZXR1cm4gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIC4uLmRpcik7XG59XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkM6XFxcXGNvbWFjXFxcXHNreWV5ZVxcXFxza3lleWUtYWRtaW4tZmVcXFxcYnVpbGRcXFxcdml0ZVxcXFxwbHVnaW5cIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkM6XFxcXGNvbWFjXFxcXHNreWV5ZVxcXFxza3lleWUtYWRtaW4tZmVcXFxcYnVpbGRcXFxcdml0ZVxcXFxwbHVnaW5cXFxcaW5kZXgudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0M6L2NvbWFjL3NreWV5ZS9za3lleWUtYWRtaW4tZmUvYnVpbGQvdml0ZS9wbHVnaW4vaW5kZXgudHNcIjtpbXBvcnQgdHlwZSB7IFBsdWdpbk9wdGlvbiB9IGZyb20gJ3ZpdGUnO1xuXG5pbXBvcnQgdnVlIGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZSc7XG5pbXBvcnQgdnVlSnN4IGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZS1qc3gnO1xuaW1wb3J0IFZ1ZVNldHVwRXh0ZW5kIGZyb20gJ3ZpdGUtcGx1Z2luLXZ1ZS1zZXR1cC1leHRlbmQnO1xuLy8gXHU4MUVBXHU1MkE4XHU2MzA5XHU5NzAwXHU1QkZDXHU1MTY1XHVGRjBDXHU2ODM5XHU2MzZFXHU4MUVBXHU4RUFCXHU2MEM1XHU1MUI1XHU5MDA5XHU2MkU5XG4vLyBpbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJztcbi8vIGltcG9ydCBDb21wb25lbnRzIGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGUnO1xuLy8gaW1wb3J0IHsgRWxlbWVudFBsdXNSZXNvbHZlciB9IGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVycyc7XG4vLyBpbXBvcnQgQ29tcG9uZW50cyBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy92aXRlJztcbi8vIGltcG9ydCBFbGVtZW50UGx1cyBmcm9tICd1bnBsdWdpbi1lbGVtZW50LXBsdXMvdml0ZSc7XG5cbmltcG9ydCB7IGNvbmZpZ0h0bWxQbHVnaW4gfSBmcm9tICcuL2h0bWwnO1xuaW1wb3J0IHsgY29uZmlnTW9ja1BsdWdpbiB9IGZyb20gJy4vbW9jayc7XG5pbXBvcnQgeyBjb25maWdDb21wcmVzc1BsdWdpbiB9IGZyb20gJy4vY29tcHJlc3MnO1xuaW1wb3J0IHsgY29uZmlnVmlzdWFsaXplclBsdWdpbiB9IGZyb20gJy4vdmlzdWFsaXplcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWaXRlUGx1Z2lucyh2aXRlRW52OiBWaXRlRW52LCBpc0J1aWxkOiBib29sZWFuLCBwcm9kTW9jaykge1xuICBjb25zdCB7IFZJVEVfVVNFX01PQ0ssIFZJVEVfQlVJTERfQ09NUFJFU1MsIFZJVEVfQlVJTERfQ09NUFJFU1NfREVMRVRFX09SSUdJTl9GSUxFIH0gPSB2aXRlRW52O1xuXG4gIGNvbnN0IHZpdGVQbHVnaW5zOiAoUGx1Z2luT3B0aW9uIHwgUGx1Z2luT3B0aW9uW10pW10gPSBbXG4gICAgLy8gaGF2ZSB0b1xuICAgIHZ1ZSgpLFxuICAgIC8vIGhhdmUgdG9cbiAgICB2dWVKc3goKSxcbiAgICBWdWVTZXR1cEV4dGVuZCgpLFxuICAgIC8vIEVsZW1lbnRQbHVzKHtcbiAgICAvLyAgIC8vIFx1NUYxNVx1NTE2NVx1NzY4NFx1NjgzN1x1NUYwRlx1NzY4NFx1N0M3Qlx1NTc4Qlx1RkYwQ1x1NTNFRlx1NEVFNVx1NjYyRmNzc1x1MzAwMXNhc3NcdTMwMDFsZXNzXHU3QjQ5XHVGRjBDXG4gICAgLy8gICBpbXBvcnRTdHlsZTogJ3Nhc3MnLFxuICAgIC8vICAgdXNlU291cmNlOiB0cnVlLFxuICAgIC8vIH0pLFxuICAgIC8vIFx1NjMwOVx1OTcwMFx1NUYxNVx1NTE2NWVsZW1lbnRcdTRFMTRcdTgxRUFcdTUyQThcdTUyMUJcdTVFRkFcdTdFQzRcdTRFRjZcdTU4RjBcdTY2MEVcbiAgICAvLyBBdXRvSW1wb3J0KHtcbiAgICAvLyAgIHJlc29sdmVyczogW0VsZW1lbnRQbHVzUmVzb2x2ZXIoKV0sXG4gICAgLy8gfSksXG4gICAgLy8gQ29tcG9uZW50cyh7XG4gICAgLy8gICByZXNvbHZlcnM6IFtFbGVtZW50UGx1c1Jlc29sdmVyKCldLFxuICAgIC8vIH0pLFxuICBdO1xuXG4gIC8vIHZpdGUtcGx1Z2luLWh0bWxcbiAgdml0ZVBsdWdpbnMucHVzaChjb25maWdIdG1sUGx1Z2luKHZpdGVFbnYsIGlzQnVpbGQpKTtcblxuICAvLyB2aXRlLXBsdWdpbi1tb2NrXG4gIFZJVEVfVVNFX01PQ0sgJiYgdml0ZVBsdWdpbnMucHVzaChjb25maWdNb2NrUGx1Z2luKGlzQnVpbGQsIHByb2RNb2NrKSk7XG5cbiAgLy8gcm9sbHVwLXBsdWdpbi12aXN1YWxpemVyXG4gIHZpdGVQbHVnaW5zLnB1c2goY29uZmlnVmlzdWFsaXplclBsdWdpbigpKTtcblxuICBpZiAoaXNCdWlsZCkge1xuICAgIC8vIHJvbGx1cC1wbHVnaW4tZ3ppcFxuICAgIHZpdGVQbHVnaW5zLnB1c2goXG4gICAgICBjb25maWdDb21wcmVzc1BsdWdpbihWSVRFX0JVSUxEX0NPTVBSRVNTLCBWSVRFX0JVSUxEX0NPTVBSRVNTX0RFTEVURV9PUklHSU5fRklMRSksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB2aXRlUGx1Z2lucztcbn1cbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiQzpcXFxcY29tYWNcXFxcc2t5ZXllXFxcXHNreWV5ZS1hZG1pbi1mZVxcXFxidWlsZFxcXFx2aXRlXFxcXHBsdWdpblwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcY29tYWNcXFxcc2t5ZXllXFxcXHNreWV5ZS1hZG1pbi1mZVxcXFxidWlsZFxcXFx2aXRlXFxcXHBsdWdpblxcXFxodG1sLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9jb21hYy9za3lleWUvc2t5ZXllLWFkbWluLWZlL2J1aWxkL3ZpdGUvcGx1Z2luL2h0bWwudHNcIjsvKipcbiAqIFBsdWdpbiB0byBtaW5pbWl6ZSBhbmQgdXNlIGVqcyB0ZW1wbGF0ZSBzeW50YXggaW4gaW5kZXguaHRtbC5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbm5jd2Ivdml0ZS1wbHVnaW4taHRtbFxuICovXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk9wdGlvbiB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHsgY3JlYXRlSHRtbFBsdWdpbiB9IGZyb20gJ3ZpdGUtcGx1Z2luLWh0bWwnO1xuaW1wb3J0IHBrZyBmcm9tICcuLi8uLi8uLi9wYWNrYWdlLmpzb24nO1xuaW1wb3J0IHsgR0xPQl9DT05GSUdfRklMRV9OQU1FIH0gZnJvbSAnLi4vLi4vY29uc3RhbnQnO1xuaW1wb3J0IHsgc2ltcGxlR2l0IH0gZnJvbSAnc2ltcGxlLWdpdCc7XG5jb25zdCBnaXQgPSBzaW1wbGVHaXQoKTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0SGFzaCgpIHtcbiAgY29uc3QgZ2l0TG9nID0gYXdhaXQgZ2l0LmxvZygpO1xuICAvKiogXHU2MjJBXHU1M0Q2Z2l0IGhhc2hcdTUwM0NcdTY3MDBcdTU0MEU4XHU0RjREICovXG4gIGNvbnN0IGxhc3RTdHJOdW0gPSA4O1xuICByZXR1cm4gZ2l0TG9nLmxhdGVzdD8uaGFzaC5zdWJzdHJpbmcoLWxhc3RTdHJOdW0sIGxhc3RTdHJOdW0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnSHRtbFBsdWdpbihlbnY6IFZpdGVFbnYsIGlzQnVpbGQ6IGJvb2xlYW4pOiBQcm9taXNlPFBsdWdpbk9wdGlvbltdPiB7XG4gIGNvbnN0IHsgVklURV9HTE9CX0FQUF9USVRMRSB9ID0gZW52O1xuXG4gIGNvbnN0IHBhdGggPSAnLi8nO1xuXG4gIGNvbnN0IGdldEFwcENvbmZpZ1NyYyA9ICgpID0+IHtcbiAgICByZXR1cm4gYCR7cGF0aCB8fCAnLyd9JHtHTE9CX0NPTkZJR19GSUxFX05BTUV9P3Y9JHtwa2cudmVyc2lvbn0tJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gO1xuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGdldExhdGVzdEhhc2goKS50aGVuKChoYXNoKSA9PiB7XG4gICAgICBjb25zdCBodG1sUGx1Z2luOiBQbHVnaW5PcHRpb25bXSA9IGNyZWF0ZUh0bWxQbHVnaW4oe1xuICAgICAgICBtaW5pZnk6IGlzQnVpbGQsXG4gICAgICAgIGluamVjdDoge1xuICAgICAgICAgIC8vIEluamVjdCBkYXRhIGludG8gZWpzIHRlbXBsYXRlXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGl0bGU6IFZJVEVfR0xPQl9BUFBfVElUTEUsXG4gICAgICAgICAgICBoYXNoLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gRW1iZWQgdGhlIGdlbmVyYXRlZCBhcHAuY29uZmlnLmpzIGZpbGVcbiAgICAgICAgICB0YWdzOiBpc0J1aWxkXG4gICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0YWc6ICdzY3JpcHQnLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgc3JjOiBnZXRBcHBDb25maWdTcmMoKSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgcmVzb2x2ZShodG1sUGx1Z2luKTtcbiAgICB9KTtcbiAgfSk7XG59XG4iLCAie1xuICBcIm5hbWVcIjogXCJza3lleWUtYWRtaW4tZmVcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMS4zLjlcIixcbiAgXCJwcml2YXRlXCI6IHRydWUsXG4gIFwidHlwZVwiOiBcIm1vZHVsZVwiLFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiYm9vdHN0cmFwXCI6IFwicG5wbSBpbnN0YWxsXCIsXG4gICAgXCJzZXJ2ZVwiOiBcInBucG0gcnVuIGRldlwiLFxuICAgIFwiZGV2XCI6IFwidml0ZVwiLFxuICAgIFwiY3JlYXRlQ29uZmlnXCI6IFwiZXNubyAuL2J1aWxkL3NjcmlwdC9wb3N0QnVpbGQudHNcIixcbiAgICBcImJ1aWxkXCI6IFwiY3Jvc3MtZW52IE5PREVfRU5WPXByb2R1Y3Rpb24gdml0ZSBidWlsZFwiLFxuICAgIFwiYnVpbGQ6dGVzdFwiOiBcImNyb3NzLWVudiB2aXRlIGJ1aWxkIC0tbW9kZSB0ZXN0ICYmIGVzbm8gLi9idWlsZC9zY3JpcHQvcG9zdEJ1aWxkLnRzXCIsXG4gICAgXCJidWlsZDpuby1jYWNoZVwiOiBcInBucG0gY2xlYW46Y2FjaGUgJiYgcG5wbSBydW4gYnVpbGRcIixcbiAgICBcInJlcG9ydFwiOiBcImNyb3NzLWVudiBSRVBPUlQ9dHJ1ZSBwbnBtIHJ1biBidWlsZFwiLFxuICAgIFwidHlwZTpjaGVja1wiOiBcInZ1ZS10c2MgLS1ub0VtaXQgLS1za2lwTGliQ2hlY2tcIixcbiAgICBcInByZXZpZXdcIjogXCJwbnBtIHJ1biBidWlsZCAmJiB2aXRlIHByZXZpZXdcIixcbiAgICBcInByZXZpZXc6ZGlzdFwiOiBcInZpdGUgcHJldmlld1wiLFxuICAgIFwiY2xlYW46Y2FjaGVcIjogXCJyaW1yYWYgbm9kZV9tb2R1bGVzLy5jYWNoZS8gJiYgcmltcmFmIG5vZGVfbW9kdWxlcy8udml0ZVwiLFxuICAgIFwiY2xlYW46bGliXCI6IFwicmltcmFmIG5vZGVfbW9kdWxlc1wiLFxuICAgIFwibGludDplc2xpbnRcIjogXCJlc2xpbnQgXFxcIntzcmMsbW9ja30vKiovKi57dnVlLHRzLHRzeH1cXFwiIC0tZml4XCIsXG4gICAgXCJsaW50OnByZXR0aWVyXCI6IFwicHJldHRpZXIgLS13cml0ZSAtLWxvZ2xldmVsIHdhcm4gXFxcInNyYy8qKi8qLntqcyxqc29uLHRzeCxjc3MsbGVzcyxzY3NzLHZ1ZSxodG1sLG1kfVxcXCJcIixcbiAgICBcImxpbnQ6c3R5bGVsaW50XCI6IFwic3R5bGVsaW50IC0tZml4IFxcXCIqKi8qLnt2dWUsbGVzcyxwb3N0Y3NzLGNzcyxzY3NzfVxcXCIgLS1jYWNoZSAtLWNhY2hlLWxvY2F0aW9uIG5vZGVfbW9kdWxlcy8uY2FjaGUvc3R5bGVsaW50L1wiLFxuICAgIFwibGludDpsaW50LXN0YWdlZFwiOiBcImxpbnQtc3RhZ2VkIC1jIC4vLmh1c2t5L2xpbnRzdGFnZWRyYy5qc1wiLFxuICAgIFwibGludDpwcmV0dHlcIjogXCJwcmV0dHktcXVpY2sgLS1zdGFnZWRcIixcbiAgICBcInRlc3QgcHJvZCBnemlwXCI6IFwiaHR0cC1zZXJ2ZXIgZGlzdCAtLWNvcnMgLS1nemlwIC1jLTFcIixcbiAgICBcInJlaW5zdGFsbFwiOiBcInJpbXJhZiBwbnBtLWxvY2sueWFtbCAmJiByaW1yYWYgcGFja2FnZS5sb2NrLmpzb24gJiYgcmltcmFmIG5vZGVfbW9kdWxlcyAmJiBwbnBtIHJ1biBib290c3RyYXBcIixcbiAgICBcImJ1aWxkIHR5cGVjaGVja1wiOiBcInZ1ZWR4LXR5cGVjaGVjayAuICYmIHZpdGUgYnVpbGRcIixcbiAgICBcImRlcGxveVwiOiBcImdoLXBhZ2VzIC1kIGRpc3RcIixcbiAgICBcInB1Ymxpc2hcIjogXCJlc25vIC4vYnVpbGQvcHVibGlzaC9wdWJsaXNoLnRzXCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGVsZW1lbnQtcGx1cy9pY29ucy12dWVcIjogXCIyLjAuOVwiLFxuICAgIFwiQHR5cGVzL2ZhYnJpY1wiOiBcIjUuMy42XCIsXG4gICAgXCJAdmljb25zL2FudGRcIjogXCIwLjEyLjBcIixcbiAgICBcIkB2aWNvbnMvaW9uaWNvbnM1XCI6IFwiMC4xMi4wXCIsXG4gICAgXCJAdnVldXAvdnVlLXF1aWxsXCI6IFwiMS4wLjAtYmV0YS44XCIsXG4gICAgXCJAdnVldXNlL2NvcmVcIjogXCI4LjkuNFwiLFxuICAgIFwiQHZ1ZXVzZS9yb3V0ZXJcIjogXCIxMC42LjFcIixcbiAgICBcIkB3YW5nZWRpdG9yL2VkaXRvclwiOiBcIjUuMS4yM1wiLFxuICAgIFwiQHdhbmdlZGl0b3IvZWRpdG9yLWZvci12dWVcIjogXCI1LjEuMTJcIixcbiAgICBcImFuaW1hdGUuY3NzXCI6IFwiNC4xLjFcIixcbiAgICBcImFyY2hpdmVyXCI6IFwiXjcuMC4xXCIsXG4gICAgXCJheGlvc1wiOiBcIjAuMjcuMlwiLFxuICAgIFwiYmx1ZWltcC1tZDVcIjogXCIyLjE5LjBcIixcbiAgICBcImNhbnZnXCI6IFwiNC4wLjFcIixcbiAgICBcImNyb3BwZXJqc1wiOiBcIjEuNS4xMlwiLFxuICAgIFwiZGF5anNcIjogXCIxLjExLjRcIixcbiAgICBcImVjaGFydHNcIjogXCI1LjMuM1wiLFxuICAgIFwiZWxlbWVudC1wbHVzXCI6IFwiMi43LjFcIixcbiAgICBcImVsZW1lbnQtcmVzaXplLWRldGVjdG9yXCI6IFwiMS4yLjRcIixcbiAgICBcImZvcm0tZGF0YVwiOiBcIl40LjAuMFwiLFxuICAgIFwiaHRtbDJjYW52YXNcIjogXCIxLjAuMFwiLFxuICAgIFwia29udmFcIjogXCI5LjMuMFwiLFxuICAgIFwibG9kYXNoLWVzXCI6IFwiNC4xNy4yMVwiLFxuICAgIFwibW9ja2pzXCI6IFwiMS4xLjBcIixcbiAgICBcIm1wZWd0cy5qc1wiOiBcIjEuNy4zXCIsXG4gICAgXCJucHJvZ3Jlc3NcIjogXCIwLjIuMFwiLFxuICAgIFwibnVtYmVyLXByZWNpc2lvblwiOiBcIjEuNi4wXCIsXG4gICAgXCJwZXJmZWN0LXNjcm9sbGJhclwiOiBcIjEuNS41XCIsXG4gICAgXCJwaW5pYVwiOiBcIjIuMC4xNlwiLFxuICAgIFwicHJpbnQtanNcIjogXCIxLjYuMFwiLFxuICAgIFwicXJjb2RlXCI6IFwiMS41LjFcIixcbiAgICBcInFzXCI6IFwiNi4xMS4wXCIsXG4gICAgXCJ1aWRcIjogXCIyLjAuMlwiLFxuICAgIFwidXJsLWpvaW5cIjogXCI1LjAuMFwiLFxuICAgIFwidnVlXCI6IFwiMy4zLjRcIixcbiAgICBcInZ1ZS1lY2hhcnRzXCI6IFwiXjYuNi44XCIsXG4gICAgXCJ2dWUtaG9va3MtcGx1c1wiOiBcIjEuOC42XCIsXG4gICAgXCJ2dWUta29udmFcIjogXCIzLjAuMlwiLFxuICAgIFwidnVlLXJvdXRlclwiOiBcIjQuMS4yXCIsXG4gICAgXCJ2dWUtdHlwZXNcIjogXCI0LjEuMVwiLFxuICAgIFwidnVlZHJhZ2dhYmxlXCI6IFwiNC4xLjBcIixcbiAgICBcInhsc3hcIjogXCIwLjE4LjVcIlxuICB9LFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAY29tbWl0bGludC9jbGlcIjogXCIxNy4wLjNcIixcbiAgICBcIkBjb21taXRsaW50L2NvbmZpZy1jb252ZW50aW9uYWxcIjogXCIxNy4wLjNcIixcbiAgICBcIkB0eXBlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3RvclwiOiBcIjEuMS4zXCIsXG4gICAgXCJAdHlwZXMvaW50cm8uanNcIjogXCIzLjAuMlwiLFxuICAgIFwiQHR5cGVzL2xvZGFzaC1lc1wiOiBcIjQuMTcuNlwiLFxuICAgIFwiQHR5cGVzL25vZGVcIjogXCIxNy4wLjQ1XCIsXG4gICAgXCJAdHlwZXMvcXJjb2RlXCI6IFwiMS40LjJcIixcbiAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9lc2xpbnQtcGx1Z2luXCI6IFwiNS4zMC43XCIsXG4gICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyXCI6IFwiNS4zMC43XCIsXG4gICAgXCJAdml0ZWpzL3BsdWdpbi12dWVcIjogXCIyLjMuM1wiLFxuICAgIFwiQHZpdGVqcy9wbHVnaW4tdnVlLWpzeFwiOiBcIjEuMy4xMFwiLFxuICAgIFwiQHZ1ZS9jb21waWxlci1zZmNcIjogXCIzLjMuNFwiLFxuICAgIFwiYXV0b3ByZWZpeGVyXCI6IFwiMTAuNC43XCIsXG4gICAgXCJjaGFsa1wiOiBcIjUuMy4wXCIsXG4gICAgXCJjb2xvcnNcIjogXCIxLjQuMFwiLFxuICAgIFwiY29tbWl0aXplblwiOiBcIjQuMi41XCIsXG4gICAgXCJjb3JlLWpzXCI6IFwiMy4yMy41XCIsXG4gICAgXCJjcm9zcy1lbnZcIjogXCI3LjAuM1wiLFxuICAgIFwiZG90ZW52XCI6IFwiMTYuMC4xXCIsXG4gICAgXCJlc2xpbnRcIjogXCI4LjIwLjBcIixcbiAgICBcImVzbGludC1jb25maWctcHJldHRpZXJcIjogXCI4LjUuMFwiLFxuICAgIFwiZXNsaW50LWRlZmluZS1jb25maWdcIjogXCIxLjUuMVwiLFxuICAgIFwiZXNsaW50LXBsdWdpbi1wcmV0dGllclwiOiBcIjQuMi4xXCIsXG4gICAgXCJlc2xpbnQtcGx1Z2luLXZ1ZVwiOiBcIjguNy4xXCIsXG4gICAgXCJlc25vXCI6IFwiMC4xNi4zXCIsXG4gICAgXCJmYXN0LWdsb2JcIjogXCIzLjMuMVwiLFxuICAgIFwiZnMtZXh0cmFcIjogXCIxMC4xLjBcIixcbiAgICBcImdoLXBhZ2VzXCI6IFwiNC4wLjBcIixcbiAgICBcImh1c2t5XCI6IFwiOC4wLjFcIixcbiAgICBcImxlc3NcIjogXCI0LjEuM1wiLFxuICAgIFwibGVzcy1sb2FkZXJcIjogXCIxMS4xLjNcIixcbiAgICBcImxpbnQtc3RhZ2VkXCI6IFwiMTMuMC4zXCIsXG4gICAgXCJwaWNvY29sb3JzXCI6IFwiMS4wLjBcIixcbiAgICBcInBvc3Rjc3NcIjogXCI4LjQuMTRcIixcbiAgICBcInBvc3Rjc3MtcHgtdG8tdmlld3BvcnRcIjogXCIxLjEuMVwiLFxuICAgIFwicHJldHRpZXJcIjogXCIyLjcuMVwiLFxuICAgIFwicHJldHR5LXF1aWNrXCI6IFwiMy4xLjNcIixcbiAgICBcInJpbXJhZlwiOiBcIjMuMC4yXCIsXG4gICAgXCJyb2xsdXAtcGx1Z2luLXZpc3VhbGl6ZXJcIjogXCI1LjguM1wiLFxuICAgIFwic2Fzc1wiOiBcIjEuNTMuMFwiLFxuICAgIFwic2ltcGxlLWdpdFwiOiBcIjMuMjIuMFwiLFxuICAgIFwic3R5bGVsaW50XCI6IFwiMTQuOS4xXCIsXG4gICAgXCJzdHlsZWxpbnQtY29uZmlnLXByZXR0aWVyXCI6IFwiOS4wLjNcIixcbiAgICBcInN0eWxlbGludC1jb25maWctc3RhbmRhcmRcIjogXCIyNS4wLjBcIixcbiAgICBcInN0eWxlbGludC1vcmRlclwiOiBcIjUuMC4wXCIsXG4gICAgXCJzdHlsZWxpbnQtc2Nzc1wiOiBcIjQuMy4wXCIsXG4gICAgXCJ0YWlsd2luZGNzc1wiOiBcIjMuMy4yXCIsXG4gICAgXCJ0cy1ub2RlXCI6IFwiMTAuOS4xXCIsXG4gICAgXCJ0eXBlc2NyaXB0XCI6IFwiNC43LjRcIixcbiAgICBcInZjb25zb2xlXCI6IFwiMy4xNS4xXCIsXG4gICAgXCJ2aXRlXCI6IFwiNS4xLjNcIixcbiAgICBcInZpdGUtcGx1Z2luLWNvbXByZXNzaW9uXCI6IFwiMC41LjFcIixcbiAgICBcInZpdGUtcGx1Z2luLWh0bWxcIjogXCIzLjIuMlwiLFxuICAgIFwidml0ZS1wbHVnaW4tbW9ja1wiOiBcIjIuOS42XCIsXG4gICAgXCJ2aXRlLXBsdWdpbi1zdHlsZS1pbXBvcnRcIjogXCIyLjAuMFwiLFxuICAgIFwidml0ZS1wbHVnaW4tc3ZnLWljb25zXCI6IFwiMi4wLjFcIixcbiAgICBcInZpdGUtcGx1Z2luLXZjb25zb2xlXCI6IFwiMS4zLjFcIixcbiAgICBcInZpdGUtcGx1Z2luLXZ1ZS1zZXR1cC1leHRlbmRcIjogXCIwLjQuMFwiLFxuICAgIFwidnVlLWVzbGludC1wYXJzZXJcIjogXCI5LjAuM1wiLFxuICAgIFwidnVlLXRzY1wiOiBcIjAuMzUuMlwiXG4gIH0sXG4gIFwibGludC1zdGFnZWRcIjoge1xuICAgIFwiKi57dnVlLGpzLHRzLHRzeH1cIjogXCJlc2xpbnQgLS1maXhcIlxuICB9LFxuICBcImNvbmZpZ1wiOiB7XG4gICAgXCJjb21taXRpemVuXCI6IHtcbiAgICAgIFwicGF0aFwiOiBcIi4vbm9kZV9tb2R1bGVzL2N6LWN1c3RvbWl6YWJsZVwiXG4gICAgfVxuICB9LFxuICBcImtleXdvcmRzXCI6IFtcbiAgICBcInZ1ZVwiLFxuICAgIFwibmFpdmUtdWlcIixcbiAgICBcIm5haXZlLXVpLWFkbWluXCIsXG4gICAgXCJ2dWUzXCIsXG4gICAgXCJ0c1wiLFxuICAgIFwidHN4XCIsXG4gICAgXCJhZG1pblwiLFxuICAgIFwidHlwZXNjcmlwdFwiXG4gIF0sXG4gIFwiZW5naW5lc1wiOiB7XG4gICAgXCJub2RlXCI6IFwiMTIgfHwgPj0xNFwiXG4gIH0sXG4gIFwicG5wbVwiOiB7XG4gICAgXCJwZWVyRGVwZW5kZW5jeVJ1bGVzXCI6IHtcbiAgICAgIFwiaWdub3JlTWlzc2luZ1wiOiBbXG4gICAgICAgIFwicm9sbHVwXCIsXG4gICAgICAgIFwid2VicGFja1wiXG4gICAgICBdXG4gICAgfVxuICB9XG59IiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxjb21hY1xcXFxza3lleWVcXFxcc2t5ZXllLWFkbWluLWZlXFxcXGJ1aWxkXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxjb21hY1xcXFxza3lleWVcXFxcc2t5ZXllLWFkbWluLWZlXFxcXGJ1aWxkXFxcXGNvbnN0YW50LnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9jb21hYy9za3lleWUvc2t5ZXllLWFkbWluLWZlL2J1aWxkL2NvbnN0YW50LnRzXCI7LyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGVudGVyZWQgaW4gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcbiAqL1xuZXhwb3J0IGNvbnN0IEdMT0JfQ09ORklHX0ZJTEVfTkFNRSA9ICdhcHAuY29uZmlnLmpzJztcblxuZXhwb3J0IGNvbnN0IE9VVFBVVF9ESVIgPSAnZGlzdCc7XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkM6XFxcXGNvbWFjXFxcXHNreWV5ZVxcXFxza3lleWUtYWRtaW4tZmVcXFxcYnVpbGRcXFxcdml0ZVxcXFxwbHVnaW5cIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkM6XFxcXGNvbWFjXFxcXHNreWV5ZVxcXFxza3lleWUtYWRtaW4tZmVcXFxcYnVpbGRcXFxcdml0ZVxcXFxwbHVnaW5cXFxcbW9jay50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vQzovY29tYWMvc2t5ZXllL3NreWV5ZS1hZG1pbi1mZS9idWlsZC92aXRlL3BsdWdpbi9tb2NrLnRzXCI7LyoqXG4gKiBNb2NrIHBsdWdpbiBmb3IgZGV2ZWxvcG1lbnQgYW5kIHByb2R1Y3Rpb24uXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYW5uY3diL3ZpdGUtcGx1Z2luLW1vY2tcbiAqL1xuaW1wb3J0IHsgdml0ZU1vY2tTZXJ2ZSB9IGZyb20gJ3ZpdGUtcGx1Z2luLW1vY2snO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnTW9ja1BsdWdpbihpc0J1aWxkOiBib29sZWFuLCBwcm9kTW9jazogYm9vbGVhbikge1xuICByZXR1cm4gdml0ZU1vY2tTZXJ2ZSh7XG4gICAgaWdub3JlOiAvXlxcXy8sXG4gICAgbW9ja1BhdGg6ICdtb2NrJyxcbiAgICBsb2NhbEVuYWJsZWQ6ICFpc0J1aWxkLFxuICAgIHByb2RFbmFibGVkOiBpc0J1aWxkICYmIHByb2RNb2NrLFxuICAgIGluamVjdENvZGU6IGBcbiAgICAgICBpbXBvcnQgeyBzZXR1cFByb2RNb2NrU2VydmVyIH0gZnJvbSAnLi4vbW9jay9fY3JlYXRlUHJvZHVjdGlvblNlcnZlcic7XG4gXG4gICAgICAgc2V0dXBQcm9kTW9ja1NlcnZlcigpO1xuICAgICAgIGAsXG4gIH0pO1xufVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxjb21hY1xcXFxza3lleWVcXFxcc2t5ZXllLWFkbWluLWZlXFxcXGJ1aWxkXFxcXHZpdGVcXFxccGx1Z2luXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxjb21hY1xcXFxza3lleWVcXFxcc2t5ZXllLWFkbWluLWZlXFxcXGJ1aWxkXFxcXHZpdGVcXFxccGx1Z2luXFxcXGNvbXByZXNzLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9jb21hYy9za3lleWUvc2t5ZXllLWFkbWluLWZlL2J1aWxkL3ZpdGUvcGx1Z2luL2NvbXByZXNzLnRzXCI7LyoqXG4gKiBVc2VkIHRvIHBhY2thZ2UgYW5kIG91dHB1dCBnemlwLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCB3b3JrIHByb3Blcmx5IGluIFZpdGUsIHRoZSBzcGVjaWZpYyByZWFzb24gaXMgc3RpbGwgYmVpbmcgaW52ZXN0aWdhdGVkXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYW5uY3diL3ZpdGUtcGx1Z2luLWNvbXByZXNzaW9uXG4gKi9cbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAndml0ZSc7XG5cbmltcG9ydCBjb21wcmVzc1BsdWdpbiBmcm9tICd2aXRlLXBsdWdpbi1jb21wcmVzc2lvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWdDb21wcmVzc1BsdWdpbihcbiAgY29tcHJlc3M6ICdnemlwJyB8ICdicm90bGknIHwgJ25vbmUnLFxuICBkZWxldGVPcmlnaW5GaWxlID0gZmFsc2Vcbik6IFBsdWdpbiB8IFBsdWdpbltdIHtcbiAgY29uc3QgY29tcHJlc3NMaXN0ID0gY29tcHJlc3Muc3BsaXQoJywnKTtcblxuICBjb25zdCBwbHVnaW5zOiBQbHVnaW5bXSA9IFtdO1xuXG4gIGlmIChjb21wcmVzc0xpc3QuaW5jbHVkZXMoJ2d6aXAnKSkge1xuICAgIHBsdWdpbnMucHVzaChcbiAgICAgIGNvbXByZXNzUGx1Z2luKHtcbiAgICAgICAgZXh0OiAnLmd6JyxcbiAgICAgICAgZGVsZXRlT3JpZ2luRmlsZSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICBpZiAoY29tcHJlc3NMaXN0LmluY2x1ZGVzKCdicm90bGknKSkge1xuICAgIHBsdWdpbnMucHVzaChcbiAgICAgIGNvbXByZXNzUGx1Z2luKHtcbiAgICAgICAgZXh0OiAnLmJyJyxcbiAgICAgICAgYWxnb3JpdGhtOiAnYnJvdGxpQ29tcHJlc3MnLFxuICAgICAgICBkZWxldGVPcmlnaW5GaWxlLFxuICAgICAgfSlcbiAgICApO1xuICB9XG4gIHJldHVybiBwbHVnaW5zO1xufVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxjb21hY1xcXFxza3lleWVcXFxcc2t5ZXllLWFkbWluLWZlXFxcXGJ1aWxkXFxcXHZpdGVcXFxccGx1Z2luXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxjb21hY1xcXFxza3lleWVcXFxcc2t5ZXllLWFkbWluLWZlXFxcXGJ1aWxkXFxcXHZpdGVcXFxccGx1Z2luXFxcXHZpc3VhbGl6ZXIudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0M6L2NvbWFjL3NreWV5ZS9za3lleWUtYWRtaW4tZmUvYnVpbGQvdml0ZS9wbHVnaW4vdmlzdWFsaXplci50c1wiO2ltcG9ydCB7IFBsdWdpbk9wdGlvbiB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHsgdmlzdWFsaXplciB9IGZyb20gJ3JvbGx1cC1wbHVnaW4tdmlzdWFsaXplcic7XG5pbXBvcnQgeyBpc1JlcG9ydE1vZGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWdWaXN1YWxpemVyUGx1Z2luKCkge1xuICBpZiAoaXNSZXBvcnRNb2RlKCkpIHtcbiAgICByZXR1cm4gdmlzdWFsaXplcih7XG4gICAgICBmaWxlbmFtZTogJy4vbm9kZV9tb2R1bGVzLy5jYWNoZS92aXN1YWxpemVyL3N0YXRzLmh0bWwnLFxuICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgIGd6aXBTaXplOiB0cnVlLFxuICAgICAgYnJvdGxpU2l6ZTogdHJ1ZSxcbiAgICB9KSBhcyBQbHVnaW5PcHRpb247XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxjb21hY1xcXFxza3lleWVcXFxcc2t5ZXllLWFkbWluLWZlXFxcXGJ1aWxkXFxcXHZpdGVcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkM6XFxcXGNvbWFjXFxcXHNreWV5ZVxcXFxza3lleWUtYWRtaW4tZmVcXFxcYnVpbGRcXFxcdml0ZVxcXFxwcm94eS50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vQzovY29tYWMvc2t5ZXllL3NreWV5ZS1hZG1pbi1mZS9idWlsZC92aXRlL3Byb3h5LnRzXCI7LyoqXG4gKiBVc2VkIHRvIHBhcnNlIHRoZSAuZW52LmRldmVsb3BtZW50IHByb3h5IGNvbmZpZ3VyYXRpb25cbiAqL1xuaW1wb3J0IHR5cGUgeyBQcm94eU9wdGlvbnMgfSBmcm9tICd2aXRlJztcblxudHlwZSBQcm94eUl0ZW0gPSBbc3RyaW5nLCBzdHJpbmddO1xuXG50eXBlIFByb3h5TGlzdCA9IFByb3h5SXRlbVtdO1xuXG50eXBlIFByb3h5VGFyZ2V0TGlzdCA9IFJlY29yZDxzdHJpbmcsIFByb3h5T3B0aW9ucyAmIHsgcmV3cml0ZTogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nIH0+O1xuXG5jb25zdCBodHRwc1JFID0gL15odHRwczpcXC9cXC8vO1xuXG4vKipcbiAqIEdlbmVyYXRlIHByb3h5XG4gKiBAcGFyYW0gbGlzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJveHkobGlzdDogUHJveHlMaXN0ID0gW10pIHtcbiAgY29uc3QgcmV0OiBQcm94eVRhcmdldExpc3QgPSB7fTtcbiAgZm9yIChjb25zdCBbcHJlZml4LCB0YXJnZXRdIG9mIGxpc3QpIHtcbiAgICBjb25zdCBpc0h0dHBzID0gaHR0cHNSRS50ZXN0KHRhcmdldCk7XG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaHR0cC1wYXJ0eS9ub2RlLWh0dHAtcHJveHkjb3B0aW9uc1xuICAgIHJldFtwcmVmaXhdID0ge1xuICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICB3czogdHJ1ZSxcbiAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7cHJlZml4fWApLCAnJyksXG4gICAgICAvLyBodHRwcyBpcyByZXF1aXJlIHNlY3VyZT1mYWxzZVxuICAgICAgLi4uKGlzSHR0cHMgPyB7IHNlY3VyZTogZmFsc2UgfSA6IHt9KSxcbiAgICB9O1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkM6XFxcXGNvbWFjXFxcXHNreWV5ZVxcXFxza3lleWUtYWRtaW4tZmVcXFxcc3JjXFxcXHV0aWxzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxjb21hY1xcXFxza3lleWVcXFxcc2t5ZXllLWFkbWluLWZlXFxcXHNyY1xcXFx1dGlsc1xcXFxkYXRlVXRpbC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vQzovY29tYWMvc2t5ZXllL3NreWV5ZS1hZG1pbi1mZS9zcmMvdXRpbHMvZGF0ZVV0aWwudHNcIjtpbXBvcnQgZGF5anMsIHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5cbmNvbnN0IERBVEVfVElNRV9GT1JNQVQgPSAnWVlZWS1NTS1ERCBISDptbSc7XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdZWVlZLU1NLUREICc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUb0RhdGVUaW1lKFxuICBkYXRlOiBEYXRlIHwgRGF5anMgfCBzdHJpbmcsXG4gIGZvcm1hdFN0ciA9IERBVEVfVElNRV9GT1JNQVQsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gZGF5anMoZGF0ZSkuZm9ybWF0KGZvcm1hdFN0cik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUb0RhdGUoZGF0ZTogRGF0ZSB8IERheWpzIHwgc3RyaW5nLCBmb3JtYXRTdHIgPSBEQVRFX0ZPUk1BVCk6IHN0cmluZyB7XG4gIHJldHVybiBkYXlqcyhkYXRlKS5mb3JtYXQoZm9ybWF0U3RyKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFDQSxTQUFTLGVBQWU7QUFDeEIsT0FBTyxRQUFRLGVBQWU7OztBQ0E5QixPQUFPLFlBQVk7QUFhWixTQUFTLGVBQXdCO0FBQ3RDLFNBQU8sUUFBUSxJQUFJLFdBQVc7QUFDaEM7QUFHTyxTQUFTLFdBQVcsU0FBOEI7QUFDdkQsUUFBTSxNQUFXLENBQUM7QUFFbEIsYUFBVyxXQUFXLE9BQU8sS0FBSyxPQUFPLEdBQUc7QUFDMUMsUUFBSSxXQUFXLFFBQVEsT0FBTyxFQUFFLFFBQVEsUUFBUSxJQUFJO0FBQ3BELGVBQVcsYUFBYSxTQUFTLE9BQU8sYUFBYSxVQUFVLFFBQVE7QUFFdkUsUUFBSSxZ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QUFBLElBQ0EsUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sT0FBTyxZQUFZLFVBQVU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBUS9CO0FBQUEsSUFDQSxjQUFjO0FBQUEsTUFDWixTQUFTLENBQUMsU0FBUyxxQkFBcUIsZ0JBQWdCLHlCQUF5QjtBQUFBLE1BQ2pGLFNBQVMsQ0FBQztBQUFBLElBQ1o7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLFFBQVE7QUFBQSxNQUNSLFFBQVE7QUFBQSxNQUNSLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUlSLGVBQWU7QUFBQSxRQUNiLFVBQVU7QUFBQSxVQUNSLGVBQWU7QUFBQSxVQUNmLGNBQWM7QUFBQSxRQUNoQjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLHNCQUFzQjtBQUFBLE1BQ3RCLHVCQUF1QjtBQUFBLElBQ3pCO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogWyJwYXRoIiwgInJlc29sdmUiLCAicGF0aCJdCn0K
|