// vite.config.js import { fileURLToPath, URL } from "node:url"; import { defineConfig } from "file:///C:/Users/2jepp/WebstormProjects/pleno-vue/node_modules/vite/dist/node/index.js"; import vue from "file:///C:/Users/2jepp/WebstormProjects/pleno-vue/node_modules/@vitejs/plugin-vue/dist/index.mjs"; import vueDevTools from "file:///C:/Users/2jepp/WebstormProjects/pleno-vue/node_modules/vite-plugin-vue-devtools/dist/vite.mjs"; import { viteSingleFile } from "file:///C:/Users/2jepp/WebstormProjects/pleno-vue/node_modules/vite-plugin-singlefile/dist/esm/index.js"; import { VitePWA } from "file:///C:/Users/2jepp/WebstormProjects/pleno-vue/node_modules/vite-plugin-pwa/dist/index.js"; import VueJsx from "file:///C:/Users/2jepp/WebstormProjects/pleno-vue/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs"; import { execSync } from "node:child_process"; var __vite_injected_original_import_meta_url = "file:///C:/Users/2jepp/WebstormProjects/pleno-vue/vite.config.js"; function getGitCommit() { try { return execSync("git rev-parse --short HEAD").toString().trim(); } catch { return "unknown"; } } var vite_config_default = defineConfig(({ mode }) => { const isProd = mode === "production"; const version = process.env.npm_package_version || "0.0.0"; const commit = getGitCommit(); console.log(`Building version ${version} (commit: ${commit})`); process.env.COMMIT_HASH = commit; process.env.APP_VERSION = version; process.env.IS_DEV = !isProd ? "true" : "false"; if (isProd) { console.log("Updating server with new version..."); const token = process.env.SERVER_UPDATE_TOKEN; if (!token) { console.warn("SERVER_UPDATE_TOKEN is not set. Skipping server update."); } else { const url = `https://api.truckwash.dk/worker/update-version?version=${commit}`; const bearer = `Bearer ${token}`; console.log(`Calling URL: ${url}`); try { execSync(`curl -f -X GET "${url}" -H "Authorization: ${bearer}"`); console.log("Successfully updated server with new version."); } catch (error) { console.error("Failed to update server with new version:", error.message); } } } const base = "/"; const pwaScope = base === "./" ? "." : base; const enableSingleFile = process.env.VITE_SINGLE_FILE === "true" && !isProd; return { base, plugins: [ vue(), VueJsx(), !isProd && vueDevTools(), enableSingleFile && viteSingleFile(), VitePWA({ registerType: "autoUpdate", injectRegister: "auto", strategies: "generateSW", devOptions: { enabled: true // keep for local dev }, workbox: { maximumFileSizeToCacheInBytes: 12 * 1024 * 1024, cleanupOutdatedCaches: true, skipWaiting: true, clientsClaim: true, globPatterns: ["**/*.{js,css,html,ico,svg,woff2}"], globIgnores: ["**/registerSW.js", "**/sw.js"], runtimeCaching: [ { // cache API responses urlPattern: ({ url }) => url.origin === "https://api.truckwash.dk", handler: "NetworkFirst", options: { cacheName: "pleno-api-cache", expiration: { maxEntries: 100, maxAgeSeconds: 5 * 60 // 5 minutes }, networkTimeoutSeconds: 10, cacheableResponse: { statuses: [200] // avoid opaque caching for API } } }, { // cache same-origin static assets urlPattern: ({ sameOrigin, request }) => sameOrigin && ["style", "script", "font"].includes(request.destination), handler: "StaleWhileRevalidate", options: { cacheName: "pleno-website-cache", expiration: { maxEntries: 50, maxAgeSeconds: 24 * 60 * 60 // 24 hours }, cacheableResponse: { statuses: [0, 200] } } }, { // cache images (restrict to same-origin; loosen if you use a trusted CDN) urlPattern: ({ sameOrigin, request }) => sameOrigin && request.destination === "image", handler: "CacheFirst", options: { cacheName: "pleno-image-cache", expiration: { maxEntries: 100, maxAgeSeconds: 7 * 24 * 60 * 60 // 7 days }, cacheableResponse: { statuses: [0, 200] } } } ] }, manifest: { name: "Truck Wash Kundeportal", short_name: "Truck Wash", description: "Access your Truck Wash accounts and transactions from anywhere.", theme_color: "#063651", background_color: "#0787bb", // Use relative scope when base is relative start_url: pwaScope, scope: pwaScope, display: "standalone", orientation: "portrait", launch_handler: { client_mode: "navigate-existing" }, icons: [ { src: "favicons/web-app-manifest-192x192.png", sizes: "192x192", type: "image/png" }, { src: "favicons/web-app-manifest-512x512.png", sizes: "512x512", type: "image/png" } // Optional: add a maskable icon // { src: 'icons/icon-512x512-maskable.png', sizes: '512x512', type: 'image/png', purpose: 'any maskable' } ], id: "pleno-pwa-test" }, useCredentials: true }) ].filter(Boolean), resolve: { alias: { "@": fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url)) } }, define: { "import.meta.env.VITE_BUILD_DATE": JSON.stringify((/* @__PURE__ */ new Date()).toISOString()), "import.meta.env.VITE_APP_VERSION": JSON.stringify(process.env.APP_VERSION || "0.0.0"), "import.meta.env.VITE_COMMIT_HASH": JSON.stringify(commit), // Tip: import.meta.env.DEV/PROD are available at runtime "import.meta.env.VITE_IS_DEV": JSON.stringify(!isProd) }, css: { preprocessorOptions: { scss: { api: "modern-compiler", silenceDeprecations: ["import", "global-builtin", "legacy-js-api"] } } } }; }); export { vite_config_default as default }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyamVwcFxcXFxXZWJzdG9ybVByb2plY3RzXFxcXHBsZW5vLXZ1ZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcMmplcHBcXFxcV2Vic3Rvcm1Qcm9qZWN0c1xcXFxwbGVuby12dWVcXFxcdml0ZS5jb25maWcuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0M6L1VzZXJzLzJqZXBwL1dlYnN0b3JtUHJvamVjdHMvcGxlbm8tdnVlL3ZpdGUuY29uZmlnLmpzXCI7aW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgVVJMIH0gZnJvbSAnbm9kZTp1cmwnXHJcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGUnXHJcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJ1xyXG5pbXBvcnQgdnVlRGV2VG9vbHMgZnJvbSAndml0ZS1wbHVnaW4tdnVlLWRldnRvb2xzJ1xyXG5pbXBvcnQgeyB2aXRlU2luZ2xlRmlsZSB9IGZyb20gJ3ZpdGUtcGx1Z2luLXNpbmdsZWZpbGUnXHJcbmltcG9ydCB7IFZpdGVQV0EgfSBmcm9tICd2aXRlLXBsdWdpbi1wd2EnXHJcbmltcG9ydCBWdWVKc3ggZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlLWpzeCdcclxuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXHJcblxyXG5mdW5jdGlvbiBnZXRHaXRDb21taXQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHJldHVybiBleGVjU3luYygnZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUQnKS50b1N0cmluZygpLnRyaW0oKVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgICAgcmV0dXJuICd1bmtub3duJ1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoKHsgbW9kZSB9KSA9PiB7XHJcbiAgICBjb25zdCBpc1Byb2QgPSBtb2RlID09PSAncHJvZHVjdGlvbidcclxuXHJcbiAgICAvLyBTZXQgQ09NTUlUX0hBU0ggZW52IHZhciBmb3IgdXNlIGluIHRoZSBhcHBcclxuICAgIGNvbnN0IHZlcnNpb24gPSBwcm9jZXNzLmVudi5ucG1fcGFja2FnZV92ZXJzaW9uIHx8ICcwLjAuMCdcclxuICAgIGNvbnN0IGNvbW1pdCA9IGdldEdpdENvbW1pdCgpXHJcbiAgICBjb25zb2xlLmxvZyhgQnVpbGRpbmcgdmVyc2lvbiAke3ZlcnNpb259IChjb21taXQ6ICR7Y29tbWl0fSlgKVxyXG4gICAgcHJvY2Vzcy5lbnYuQ09NTUlUX0hBU0ggPSBjb21taXRcclxuICAgIHByb2Nlc3MuZW52LkFQUF9WRVJTSU9OID0gdmVyc2lvblxyXG4gICAgcHJvY2Vzcy5lbnYuSVNfREVWID0gIWlzUHJvZCA/ICd0cnVlJyA6ICdmYWxzZSdcclxuICAgIC8vIElmIHRoZSBidWlsZCBpcyBhIHByb2R1Y3Rpb24gYnVpbGQsIHVwZGF0ZSB0aGUgc2VydmVyIHdpdGggdGhlIG5ldyB2ZXJzaW9uXHJcbiAgICBpZiAoaXNQcm9kKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1VwZGF0aW5nIHNlcnZlciB3aXRoIG5ldyB2ZXJzaW9uLi4uJylcclxuICAgICAgICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52LlNFUlZFUl9VUERBVEVfVE9LRU5cclxuICAgICAgICBpZiAoIXRva2VuKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignU0VSVkVSX1VQREFURV9UT0tFTiBpcyBub3Qgc2V0LiBTa2lwcGluZyBzZXJ2ZXIgdXBkYXRlLicpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gUnVuIEdFVCByZXF1ZXN0IHRvIHVwZGF0ZSB2ZXJzaW9uIGVuZHBvaW50XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGBodHRwczovL2FwaS50cnVja3dhc2guZGsvd29ya2VyL3VwZGF0ZS12ZXJzaW9uP3ZlcnNpb249JHtjb21taXR9YFxyXG4gICAgICAgICAgICBjb25zdCBiZWFyZXIgPSBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FsbGluZyBVUkw6ICR7dXJsfWApXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBleGVjU3luYyhgY3VybCAtZiAtWCBHRVQgXCIke3VybH1cIiAtSCBcIkF1dGhvcml6YXRpb246ICR7YmVhcmVyfVwiYClcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTdWNjZXNzZnVsbHkgdXBkYXRlZCBzZXJ2ZXIgd2l0aCBuZXcgdmVyc2lvbi4nKVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHVwZGF0ZSBzZXJ2ZXIgd2l0aCBuZXcgdmVyc2lvbjonLCBlcnJvci5tZXNzYWdlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gS2VlcCBhIHJlbGF0aXZlIGJhc2UgZm9yIHN0YXRpYyBob3N0aW5nOyBhbGlnbiBtYW5pZmVzdCB3aXRoIGJhc2VcclxuICAgIGNvbnN0IGJhc2UgPSAnLydcclxuICAgIGNvbnN0IHB3YVNjb3BlID0gYmFzZSA9PT0gJy4vJyA/ICcuJyA6IGJhc2VcclxuXHJcbiAgICAvLyBFbmFibGUgc2luZ2xlLWZpbGUgYnVpbGQgb25seSB3aGVuIGV4cGxpY2l0bHkgcmVxdWVzdGVkIChkaXNhYmxlZCBieSBkZWZhdWx0IGZvciBQV0EpXHJcbiAgICBjb25zdCBlbmFibGVTaW5nbGVGaWxlID0gcHJvY2Vzcy5lbnYuVklURV9TSU5HTEVfRklMRSA9PT0gJ3RydWUnICYmICFpc1Byb2RcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGJhc2UsXHJcbiAgICAgICAgcGx1Z2luczogW1xyXG4gICAgICAgICAgICB2dWUoKSxcclxuICAgICAgICAgICAgVnVlSnN4KCksXHJcbiAgICAgICAgICAgICFpc1Byb2QgJiYgdnVlRGV2VG9vbHMoKSxcclxuICAgICAgICAgICAgZW5hYmxlU2luZ2xlRmlsZSAmJiB2aXRlU2luZ2xlRmlsZSgpLFxyXG4gICAgICAgICAgICBWaXRlUFdBKHtcclxuICAgICAgICAgICAgICAgIHJlZ2lzdGVyVHlwZTogJ2F1dG9VcGRhdGUnLFxyXG4gICAgICAgICAgICAgICAgaW5qZWN0UmVnaXN0ZXI6ICdhdXRvJyxcclxuICAgICAgICAgICAgICAgIHN0cmF0ZWdpZXM6ICdnZW5lcmF0ZVNXJyxcclxuICAgICAgICAgICAgICAgIGRldk9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlIC8vIGtlZXAgZm9yIGxvY2FsIGRldlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHdvcmtib3g6IHtcclxuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtRmlsZVNpemVUb0NhY2hlSW5CeXRlczogMTIgKiAxMDI0ICogMTAyNCxcclxuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwT3V0ZGF0ZWRDYWNoZXM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgc2tpcFdhaXRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50c0NsYWltOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGdsb2JQYXR0ZXJuczogWycqKi8qLntqcyxjc3MsaHRtbCxpY28sc3ZnLHdvZmYyfSddLFxyXG4gICAgICAgICAgICAgICAgICAgIGdsb2JJZ25vcmVzOiBbJyoqL3JlZ2lzdGVyU1cuanMnLCAnKiovc3cuanMnXSxcclxuICAgICAgICAgICAgICAgICAgICBydW50aW1lQ2FjaGluZzogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWNoZSBBUEkgcmVzcG9uc2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXR0ZXJuOiAoeyB1cmwgfSkgPT4gdXJsLm9yaWdpbiA9PT0gJ2h0dHBzOi8vYXBpLnRydWNrd2FzaC5kaycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiAnTmV0d29ya0ZpcnN0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZU5hbWU6ICdwbGVuby1hcGktY2FjaGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RW50cmllczogMTAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhBZ2VTZWNvbmRzOiA1ICogNjAgLy8gNSBtaW51dGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrVGltZW91dFNlY29uZHM6IDEwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlYWJsZVJlc3BvbnNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c2VzOiBbMjAwXSAvLyBhdm9pZCBvcGFxdWUgY2FjaGluZyBmb3IgQVBJXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWNoZSBzYW1lLW9yaWdpbiBzdGF0aWMgYXNzZXRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXR0ZXJuOiAoeyBzYW1lT3JpZ2luLCByZXF1ZXN0IH0pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZU9yaWdpbiAmJiBbJ3N0eWxlJywgJ3NjcmlwdCcsICdmb250J10uaW5jbHVkZXMocmVxdWVzdC5kZXN0aW5hdGlvbiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiAnU3RhbGVXaGlsZVJldmFsaWRhdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlTmFtZTogJ3BsZW5vLXdlYnNpdGUtY2FjaGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RW50cmllczogNTAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEFnZVNlY29uZHM6IDI0ICogNjAgKiA2MCAvLyAyNCBob3Vyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVhYmxlUmVzcG9uc2U6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzZXM6IFswLCAyMDBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWNoZSBpbWFnZXMgKHJlc3RyaWN0IHRvIHNhbWUtb3JpZ2luOyBsb29zZW4gaWYgeW91IHVzZSBhIHRydXN0ZWQgQ0ROKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsUGF0dGVybjogKHsgc2FtZU9yaWdpbiwgcmVxdWVzdCB9KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWVPcmlnaW4gJiYgcmVxdWVzdC5kZXN0aW5hdGlvbiA9PT0gJ2ltYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6ICdDYWNoZUZpcnN0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZU5hbWU6ICdwbGVuby1pbWFnZS1jYWNoZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhFbnRyaWVzOiAxMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEFnZVNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAgLy8gNyBkYXlzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWFibGVSZXNwb25zZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNlczogWzAsIDIwMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbWFuaWZlc3Q6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnVHJ1Y2sgV2FzaCBLdW5kZXBvcnRhbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvcnRfbmFtZTogJ1RydWNrIFdhc2gnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQWNjZXNzIHlvdXIgVHJ1Y2sgV2FzaCBhY2NvdW50cyBhbmQgdHJhbnNhY3Rpb25zIGZyb20gYW55d2hlcmUuJyxcclxuICAgICAgICAgICAgICAgICAgICB0aGVtZV9jb2xvcjogJyMwNjM2NTEnLFxyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRfY29sb3I6ICcjMDc4N2JiJyxcclxuICAgICAgICAgICAgICAgICAgICAvLyBVc2UgcmVsYXRpdmUgc2NvcGUgd2hlbiBiYXNlIGlzIHJlbGF0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRfdXJsOiBwd2FTY29wZSxcclxuICAgICAgICAgICAgICAgICAgICBzY29wZTogcHdhU2NvcGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ3N0YW5kYWxvbmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uOiAncG9ydHJhaXQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhdW5jaF9oYW5kbGVyOiB7IGNsaWVudF9tb2RlOiAnbmF2aWdhdGUtZXhpc3RpbmcnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzcmM6ICdmYXZpY29ucy93ZWItYXBwLW1hbmlmZXN0LTE5MngxOTIucG5nJywgc2l6ZXM6ICcxOTJ4MTkyJywgdHlwZTogJ2ltYWdlL3BuZycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzcmM6ICdmYXZpY29ucy93ZWItYXBwLW1hbmlmZXN0LTUxMng1MTIucG5nJywgc2l6ZXM6ICc1MTJ4NTEyJywgdHlwZTogJ2ltYWdlL3BuZycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9uYWw6IGFkZCBhIG1hc2thYmxlIGljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8geyBzcmM6ICdpY29ucy9pY29uLTUxMng1MTItbWFza2FibGUucG5nJywgc2l6ZXM6ICc1MTJ4NTEyJywgdHlwZTogJ2ltYWdlL3BuZycsIHB1cnBvc2U6ICdhbnkgbWFza2FibGUnIH1cclxuICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiAncGxlbm8tcHdhLXRlc3QnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdXNlQ3JlZGVudGlhbHM6IHRydWVcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdLmZpbHRlcihCb29sZWFuKSxcclxuICAgICAgICByZXNvbHZlOiB7XHJcbiAgICAgICAgICAgIGFsaWFzOiB7XHJcbiAgICAgICAgICAgICAgICAnQCc6IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi9zcmMnLCBpbXBvcnQubWV0YS51cmwpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWZpbmU6IHtcclxuICAgICAgICAgICAgJ2ltcG9ydC5tZXRhLmVudi5WSVRFX0JVSUxEX0RBVEUnOiBKU09OLnN0cmluZ2lmeShuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAnaW1wb3J0Lm1ldGEuZW52LlZJVEVfQVBQX1ZFUlNJT04nOiBKU09OLnN0cmluZ2lmeShwcm9jZXNzLmVudi5BUFBfVkVSU0lPTiB8fCAnMC4wLjAnKSxcclxuICAgICAgICAgICAgJ2ltcG9ydC5tZXRhLmVudi5WSVRFX0NPTU1JVF9IQVNIJzogSlNPTi5zdHJpbmdpZnkoY29tbWl0KSxcclxuICAgICAgICAgICAgLy8gVGlwOiBpbXBvcnQubWV0YS5lbnYuREVWL1BST0QgYXJlIGF2YWlsYWJsZSBhdCBydW50aW1lXHJcbiAgICAgICAgICAgICdpbXBvcnQubWV0YS5lbnYuVklURV9JU19ERVYnOiBKU09OLnN0cmluZ2lmeSghaXNQcm9kKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICBzY3NzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBpOiAnbW9kZXJuLWNvbXBpbGVyJyxcclxuICAgICAgICAgICAgICAgICAgICBzaWxlbmNlRGVwcmVjYXRpb25zOiBbJ2ltcG9ydCcsICdnbG9iYWwtYnVpbHRpbicsICdsZWdhY3ktanMtYXBpJ11cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSlcclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUF1VCxTQUFTLGVBQWUsV0FBVztBQUMxVixTQUFTLG9CQUFvQjtBQUM3QixPQUFPLFNBQVM7QUFDaEIsT0FBTyxpQkFBaUI7QUFDeEIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxlQUFlO0FBQ3hCLE9BQU8sWUFBWTtBQUNuQixTQUFTLGdCQUFnQjtBQVAwSyxJQUFNLDJDQUEyQztBQVNwUCxTQUFTLGVBQWU7QUFDcEIsTUFBSTtBQUNBLFdBQU8sU0FBUyw0QkFBNEIsRUFBRSxTQUFTLEVBQUUsS0FBSztBQUFBLEVBQ2xFLFFBQVE7QUFDSixXQUFPO0FBQUEsRUFDWDtBQUNKO0FBRUEsSUFBTyxzQkFBUSxhQUFhLENBQUMsRUFBRSxLQUFLLE1BQU07QUFDdEMsUUFBTSxTQUFTLFNBQVM7QUFHeEIsUUFBTSxVQUFVLFFBQVEsSUFBSSx1QkFBdUI7QUFDbkQsUUFBTSxTQUFTLGFBQWE7QUFDNUIsVUFBUSxJQUFJLG9CQUFvQixPQUFPLGFBQWEsTUFBTSxHQUFHO0FBQzdELFVBQVEsSUFBSSxjQUFjO0FBQzFCLFVBQVEsSUFBSSxjQUFjO0FBQzFCLFVBQVEsSUFB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