diff --git a/README.md b/README.md index ae988e0..2d62231 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ Kute is a high-performance Krunker client designed to enhance your gaming experi - [x] Autoupdater with a download progress window, plus changelogs - [x] Rebindable kute hotkeys - [x] Spotify overlay - by [@Liamoulee](https://github.com/Liamoulee) +- [x] CSS Store - by [@Liamoulee](https://github.com/Liamoulee) - [ ] BetterKDR™️ (coming soon) - [x] and more... diff --git a/server/public/index.html b/server/public/index.html index 5b232d3..b614042 100644 --- a/server/public/index.html +++ b/server/public/index.html @@ -385,6 +385,7 @@

Interface

Customization

Resource swapper

Replaces game files with your own. The manager shows what the game loads, drop a file onto the one it replaces and it lands in the right place. CSS and other text files can be written and edited right there, and CSS swaps apply instantly.

CSS Manager

Keep as many CSS themes as you like: write them in the client with syntax highlighting and a live preview, paste them or import .css files, and switch between them with one click. They always load after Krunker's styles, so your rules win.

+
CSS Store

Browse CSS made by the community right in the CSS Manager, with previews, and download any of them with one click.

Kute CSS

One switch gives the whole client Kute's look: menus, settings, every window and popup, the social window and the HUD, with a few cats. Colors that mean something, like KR, rarities and health, stay as they are, and your own CSS still wins.

Motion blur

A slight blur while you turn the camera, with adjustable strength. The HUD stays sharp, and nothing runs while you stand still.

Custom sky

Your own sky on every map: starfield, aurora, synthwave and more built in, a color gradient, or any image you drop into the skies folder.

diff --git a/src/frontend/components/managers/customCss.html b/src/frontend/components/managers/customCss.html index 123b5bf..e4163a8 100644 --- a/src/frontend/components/managers/customCss.html +++ b/src/frontend/components/managers/customCss.html @@ -102,6 +102,126 @@ .managerPopup.legacy #ccFiles { display: none; } + +#ccStorePanel { + flex: 1 1 auto; + min-height: 0; + margin-bottom: 0; + overflow-y: auto; +} + +.managerBody:not(.storeOpen) > #ccStorePanel, +.managerBody.storeOpen > #ccEditor, +.managerBody.storeOpen > #ccFiles, +.managerPopup.legacy #ccStore { + display: none; +} + +#ccStoreBack { + margin-left: auto; +} + +#ccStoreList { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); + gap: 0.9em; + padding: 0.9em; +} + +#ccStoreList > .empty { + grid-column: 1 / -1; +} + +.storeCard { + display: flex; + flex-direction: column; + gap: 0.3em; + padding: 0.6em; + border: 1px solid var(--line); + border-radius: 8px; + background: #202020; +} + +.storeShot { + position: relative; + display: flex; + align-items: center; + justify-content: center; + aspect-ratio: 16 / 9; + overflow: hidden; + border-radius: 5px; + background: #2b2b2b; + color: #555; +} + +.storeShot .mi { + font-size: 32px; +} + +.storeShot img { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + object-fit: cover; + cursor: zoom-in; +} + +#ccZoom { + position: fixed; + inset: 0; + z-index: 10; + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 40px; + background: rgba(0, 0, 0, 0.88); + cursor: zoom-out; +} + +#ccZoom img { + max-width: 100%; + max-height: 100%; + object-fit: contain; + border-radius: 8px; + box-shadow: 0 10px 50px rgba(0, 0, 0, 0.5); + cursor: default; +} + +#ccZoom .managerClose { + position: absolute; + top: 16px; + right: 24px; + font-size: 2.2em; +} + +.storeName { + overflow: hidden; + color: #fff; + text-overflow: ellipsis; + white-space: nowrap; +} + +.storeAuthor { + min-height: 1.2em; + overflow: hidden; + color: var(--muted); + font-size: 0.85em; + text-overflow: ellipsis; + white-space: nowrap; +} + +.storeCard .btn { + justify-content: center; + margin-top: 0.3em; +} + +.storeCard .btn.done { + color: var(--muted); + cursor: default; + pointer-events: none; +}
@@ -109,6 +229,7 @@

CSS Manager

visibilityHold to peek
folder_openShow folder
+
storefrontCSS Store
×
One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. @@ -116,6 +237,13 @@

CSS Manager

+
+
+
CSS Store
+
arrow_backBack
+
+
+
diff --git a/src/frontend/modules/managers/customCss.js b/src/frontend/modules/managers/customCss.js index 2f6c6d7..e151dfe 100644 --- a/src/frontend/modules/managers/customCss.js +++ b/src/frontend/modules/managers/customCss.js @@ -21,6 +21,40 @@ const hostSupportsManager = () => kute.hostFeatures?.includes("css-manager") ?? */ const cssName = (name) => (/\.css$/i.test(name) ? name : `${name}.css`); +const STORE_BASE = "https://raw.githubusercontent.com/kute-client/kute-css-store/main/"; +const STORE_TIMEOUT = 8000; + +/** @typedef {{name: string, author: string, file: string, preview: string}} StoreItem */ + +// a ".." segment would leave the repo on raw.githubusercontent +/** + * @param {unknown} path + * @return {path is string} + */ +const storePath = (path) => typeof path === "string" && path.split("/").every((part) => part !== "" && part !== "." && part !== ".."); + +/** + * @param {string} path + * @return {string} + */ +const storeUrl = (path) => STORE_BASE + path.split("/").map(encodeURIComponent).join("/"); + +/** + * @param {any} entry + * @return {StoreItem|null} + */ +const storeItem = (entry) => { + // the host refuses these in file names + const name = typeof entry?.name === "string" ? entry.name.replace(/[\\/:*?"<>|]/g, "").trim() : ""; + if (!name || !storePath(entry.file) || !/\.css$/i.test(entry.file)) return null; + return { + name: cssName(name), + author: typeof entry.author === "string" ? entry.author : "", + file: entry.file, + preview: storePath(entry.preview) ? entry.preview : "", + }; +}; + /** * @param {string} command * @param {object} [payload] @@ -60,6 +94,12 @@ class CssManager { this.live = true; /** @type {number} */ this.previewTimer = 0; + /** @type {Map} store file name to its download button */ + this.storeButtons = new Map(); + /** @type {Set} store downloads the host has not written yet */ + this.downloading = new Set(); + this.storeLoaded = false; + this.storeRun = 0; } open(){ @@ -72,6 +112,7 @@ class CssManager { this.popup = openManagerPopup(html, { onMessage: (data) => this.receive(data), canClose: () => this.canClose(), + onEscape: () => this.unzoom(), }); const { shadow, signal } = this.popup; signal.addEventListener("abort", () => { @@ -88,10 +129,17 @@ class CssManager { this.openAfterImport = null; this.activating = false; this.forceClose = false; + this.storeButtons.clear(); + this.downloading.clear(); + this.storeLoaded = false; + this.storeRun++; }); this.$("#ccFolder").onclick = () => post("reveal", { name: this.editing ?? "" }); this.$("#ccOff").hidden = kute.settings.data.customCss !== false; + this.$("#ccStore").onclick = () => this.openStore(); + this.$("#ccStoreBack").onclick = () => this.$(".managerBody").classList.remove("storeOpen"); + const live = /** @type {HTMLInputElement} */ (this.$("#ccLive")); live.checked = this.live; live.onchange = () => { @@ -130,6 +178,143 @@ class CssManager { post("list"); } + async openStore(){ + if (!this.popup) return; + this.$(".managerBody").classList.add("storeOpen"); + if (this.storeLoaded) return; + const run = ++this.storeRun; + const list = this.$("#ccStoreList"); + list.innerHTML = "
Loading the CSS Store...
"; + /** @type {StoreItem[]} */ + let items; + try { + const response = await fetch(storeUrl("index.json"), { signal: AbortSignal.any([this.popup.signal, AbortSignal.timeout(STORE_TIMEOUT)]) }); + if (!response.ok) throw new Error(`HTTP ${response.status}`); + const catalog = await response.json(); + if (!Array.isArray(catalog)) throw new Error("index.json is no list"); + items = /** @type {StoreItem[]} */ (catalog.map(storeItem).filter(Boolean)); + } + catch { + if (run === this.storeRun) list.innerHTML = "
Could not load the CSS Store. Go back and open it again to retry.
"; + return; + } + if (run !== this.storeRun) return; + this.storeLoaded = true; + this.storeButtons.clear(); + list.textContent = ""; + if (!items.length) list.innerHTML = "
Nothing in the CSS Store yet.
"; + for (const item of items) list.append(this.storeCard(item)); + this.refreshStore(); + } + + /** + * @param {string} src + * @param {string} name + */ + zoom(src, name){ + if (!this.popup) return; + this.unzoom(); + const view = document.createElement("div"); + view.id = "ccZoom"; + view.innerHTML = "
×
"; + const image = document.createElement("img"); + image.src = src; + image.alt = name; + view.append(image); + view.onclick = (event) => { + if (event.target !== image) view.remove(); + }; + this.$(".managerPopup").append(view); + } + + /** + * @return {boolean} whether a zoomed preview was open + */ + unzoom(){ + const view = this.$("#ccZoom"); + view?.remove(); + return Boolean(view); + } + + /** + * @param {StoreItem} item + * @return {HTMLElement} + */ + storeCard(item){ + const card = document.createElement("div"); + card.className = "storeCard"; + const shot = document.createElement("div"); + shot.className = "storeShot"; + shot.innerHTML = "image"; + if (item.preview){ + const image = document.createElement("img"); + image.alt = ""; + image.title = "Click to enlarge"; + image.loading = "lazy"; + image.decoding = "async"; + image.src = storeUrl(item.preview); + image.onerror = () => image.remove(); + image.onclick = () => this.zoom(image.src, item.name); + shot.append(image); + } + const title = document.createElement("div"); + title.className = "storeName"; + title.textContent = item.name.replace(/\.css$/i, ""); + const author = document.createElement("div"); + author.className = "storeAuthor"; + author.textContent = item.author ? `by ${item.author}` : ""; + const button = document.createElement("div"); + button.className = "btn small"; + button.onclick = () => this.download(item); + this.storeButtons.set(item.name, button); + card.append(shot, title, author, button); + return card; + } + + /** + * @param {StoreItem} item + */ + async download(item){ + if (!this.popup || this.downloading.has(item.name) || this.hasFile(item.name)) return; + this.downloading.add(item.name); + this.refreshStore(); + try { + const response = await fetch(storeUrl(item.file), { signal: AbortSignal.any([this.popup.signal, AbortSignal.timeout(STORE_TIMEOUT)]) }); + if (!response.ok) throw new Error(`HTTP ${response.status}`); + const content = await response.text(); + if (content.length > MAX_SIZE) throw new Error("larger than 4 MB"); + // the button stays busy until the host's import reply + post("import", { name: item.name, content }); + } + catch (error){ + if (!this.popup) return; + this.downloading.delete(item.name); + this.popup.showError(`Could not download ${item.name}: ${error instanceof Error ? error.message : error}`); + this.refreshStore(); + } + } + + /** + * @param {string} name + * @return {boolean} + */ + hasFile(name){ + const lower = name.toLowerCase(); + return this.files.some((file) => file.name.toLowerCase() === lower); + } + + refreshStore(){ + for (const [name, button] of this.storeButtons){ + const busy = this.downloading.has(name); + const have = !busy && this.hasFile(name); + button.classList.toggle("primary", !busy && !have); + button.classList.toggle("done", busy || have); + if (busy) button.textContent = "Downloading..."; + else if (have) button.innerHTML = "checkDownloaded"; + else button.innerHTML = "downloadDownload"; + } + } + /** * @param {string} selector * @return {HTMLElement} @@ -194,6 +379,7 @@ class CssManager { else this.closeEditor(); } this.renderList(); + this.refreshStore(); } renderList(){ @@ -405,6 +591,7 @@ class CssManager { * @param {{requested: string, name: string, error?: string|null}} result */ imported(result){ + if (this.downloading.delete(result.requested)) this.refreshStore(); if (result.error){ this.popup?.showError(`Could not add ${result.requested}: ${result.error}`); return; diff --git a/target/bundle.js b/target/bundle.js index 79bcc83..10462a0 100644 --- a/target/bundle.js +++ b/target/bundle.js @@ -1,5 +1,5 @@ -"use strict";(()=>{var Gg=Object.create;var Br=Object.defineProperty;var Wg=Object.getOwnPropertyDescriptor;var Vg=Object.getOwnPropertyNames;var Yg=Object.getPrototypeOf,Xg=Object.prototype.hasOwnProperty;var du=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)Br(s,t,{get:e[t],enumerable:!0})},Jg=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Vg(e))!Xg.call(s,n)&&n!==t&&Br(s,n,{get:()=>e[n],enumerable:!(o=Wg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Gg(Yg(s)):{},Jg(e||!s||!s.__esModule?Br(t,"default",{value:s,enumerable:!0}):t,s));var At,Jo=w(()=>{At={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function Mo(s,e){return s.performanceMode===!0&&e in pu}function hu(s){return{...s,...Co}}function hn(s,e){let t=[];for(let[o,n]of Object.entries(pu)){if(n===null)continue;let r=s[o];e?(o in Co||(Co[o]=r),s[o]=n):o in Co&&(s[o]=Co[o],delete Co[o]),s[o]!==r&&t.push(o)}return t}var pu,Co,To=w(()=>{"use strict";Jo();pu=Object.fromEntries(Object.values(At).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Co={}});function eb(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var d,Ne,mu,Ue,F=w(()=>{"use strict";Jo();To();d={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(d,t.data),d.settings?.data)for(let o of Object.values(At))o.defaultValue!==void 0&&!(o.id in d.settings.data)&&(d.settings.data[o.id]=o.defaultValue);d.settings?.data&&hn(d.settings.data,d.settings.data.performanceMode===!0),s(d)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),mu=eb(12);Object.defineProperty(window,mu,{value:d,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${mu}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var zr,$e,U,ke,Oe,Ae=w(()=>{"use strict";zr=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),Oe=()=>!!document.querySelector(".cmpTmHed")});var gu={};A(gu,{setRampBoost:()=>to,syncScrollBinds:()=>Or});function to(s){fu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function Or(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===tb)}catch{return}s!==Hr&&(Hr=s,d.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var tb,fu,Hr,mn=w(()=>{"use strict";F();tb="20000",fu=!1;window.addEventListener("wheel",s=>{!fu||!document.pointerLockElement||!d.hostFeatures?.includes("ramp-boost")||(Hr||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var wu={};A(wu,{claimAltShoot:()=>Dr,hostSupports:()=>gn,prepareShootBind:()=>qr,syncLeftClick:()=>Qo});function Fr(s){return Number(localStorage.getItem(s)??-1)}function vu(){let s=Fr(fn);return s!==-1&&s!==Zo}function gn(){return d.hostFeatures?.includes(sb)===!0}function Dr(){return!vu()||!gn()}function qr(){if(!vu()){localStorage.setItem(fn,String(Zo));return}Ne.then(()=>{gn()||localStorage.setItem(fn,String(Zo))})}function Qo(){if(!gn())return;let s=Fr(fn)===Zo||Fr(ob)===Zo;s!==bu&&(bu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Zo,fn,ob,sb,bu,bn=w(()=>{"use strict";F();Zo=131,fn="cont_shoot1Key_alt",ob="cont_shoot1Key",sb="left-click-f20"});var yu={};A(yu,{SLOTS:()=>Ao,postUrls:()=>oo});function Kr(s){try{return localStorage.getItem(s)}catch{return null}}function rb(s){try{let e=JSON.parse(Kr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,nb):[]}catch{return[]}}function oo(){let s={};for(let t of Ao){let o=[];for(let i of t.settings)o.push(Kr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(Kr(i)??"");for(let i of t.lists??[])o.push(...rb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==ku&&(ku=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var es,Ao,nb,ku,vn=w(()=>{"use strict";es={id:"showUI",name:"Show UI",kind:"checkbox"},Ao=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[es,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[es,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[es,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[es,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[es]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],nb=30;ku=""});var xu={};A(xu,{canLoadLive:()=>Lt,loadScripts:()=>Lo,registry:()=>Xe});var Xe,Lt,Lo,ts=w(()=>{"use strict";F();Xe=window.__kuteUserscripts??null,Lt=()=>!!(Xe&&d.hostFeatures?.includes("userscripts-live")),Lo=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var Eu={};A(Eu,{default:()=>Rt,hostSupportsCustomCss:()=>os});var Su,os,jr,Rt,wn=w(()=>{"use strict";F();Su=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,os=()=>d.hostFeatures?.includes("custom-css")??!1,jr=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{d.settings.toggleCustomCss=e=>this.toggle(e),d.settings.data.customCss===!1?this.toggle(!1):!this.saved&&os()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(Su)??[],o=t.length?e.replace(Su,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` -`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):os()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Rt=new jr});var Au={};A(Au,{holdRestart:()=>kn,restart:()=>Ro});function Ro(){location.assign("https://krunker.io/")}function kn(s){Mu=Date.now()+s}function Tu(){return localStorage.getItem($u)!==null||document.cookie.includes(`${$u}=`)}function ib(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ab(s){let e=Date.now(),t=0,o=setInterval(()=>{if(ib()){sessionStorage.removeItem(Ur),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Tu()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(Ur)??0);n>=2||(sessionStorage.setItem(Ur,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ro())},1e3)}function lb(){let s=localStorage.getItem(Cu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ro();return}let t=localStorage.getItem(Cu)!==null;s&&!t&&Date.now()>Mu&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var $u,Cu,Ur,Mu,yn=w(()=>{"use strict";$u="__FRVR_auth_refresh_token",Cu="krunker_token",Ur="kute_hang_reloads";Mu=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ab(!Tu()),lb())});var Pu={};A(Pu,{DEFAULT_LOAD:()=>so,cpuChecksum:()=>Yr,createScene:()=>Vr});function fb(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Lu(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function Gr(s,e,t){let o=s.createProgram();if(s.attachShader(o,Lu(s,s.VERTEX_SHADER,e)),s.attachShader(o,Lu(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function gb(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?fb(t):null,g=m?Gr(o,hb,mb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();m&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,m),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),y=new Float32Array(16),C=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return C[0]=1,C[5]=1,C[10]=1,C[15]=1,C[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),bb(y,Math.PI/2,s.width/s.height,.1,500),vb(I,y,C)},render(H){let G=H*.001;kb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(p),o.uniformMatrix4fv(i,!1,I);for(let J of L)wb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,h.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(f),o.uniform1f(c,G);for(let J=0;J{"use strict";so={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},cb=`#version 300 es +"use strict";(()=>{var Xg=Object.create;var zr=Object.defineProperty;var Jg=Object.getOwnPropertyDescriptor;var Zg=Object.getOwnPropertyNames;var Qg=Object.getPrototypeOf,eb=Object.prototype.hasOwnProperty;var uu=s=>e=>{var t=s[e];if(t)return t();throw new Error("Module not found in bundle: "+e)};var w=(s,e,t)=>()=>{if(t)throw t[0];try{return s&&(e=s(s=0)),e}catch(o){throw t=[o],o}};var we=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},A=(s,e)=>{for(var t in e)zr(s,t,{get:e[t],enumerable:!0})},tb=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Zg(e))!eb.call(s,n)&&n!==t&&zr(s,n,{get:()=>e[n],enumerable:!(o=Jg(e,n))||o.enumerable});return s};var ue=(s,e,t)=>(t=s!=null?Xg(Qg(s)):{},tb(e||!s||!s.__esModule?zr(t,"default",{value:s,enumerable:!0}):t,s));var At,Jo=w(()=>{At={autoDetect:{name:"Auto-Detect Best Settings",id:"autoDetect",description:"Tests the client and the game on your PC for about two minutes and picks what runs best. Don't touch mouse or keyboard meanwhile. You can undo it",type:"none",category:"General",button:"Run",buttonAction:"{{kute}}.autoDetect.setUp()",requiresLogin:!0,hostFeature:"autodetect-v2"},autoDetectResult:{name:"Last Auto-Detect Result",id:"autoDetectResult",description:"See what the last run measured and changed, and undo it",type:"none",category:"General",button:"Show",buttonAction:"{{kute}}.autoDetect.showLast()"},hotkeys:{name:"Hotkeys",id:"hotkeys",description:"Change or clear Kute's own keys (new lobby, matchmaker, reload, fullscreen, chat logs) and add keys for toggles",type:"none",category:"General",button:"Change",buttonAction:"{{kute}}.hotkeys.edit()",hostFeature:"hotkeys"},performanceMode:{name:"Disable & Hide All Non-Performance Settings",id:"performanceMode",description:"Turns off everything cosmetic and hides its settings. Turn this off again and all of them come back as they were",type:"checkbox",category:"General",defaultValue:!1,needsRefresh:!0,hostFeature:"performance-mode"},startMode:{name:"Start Mode",id:"startMode",description:"How the window opens when Kute starts",type:"select",category:"General",defaultValue:"Remember Previous",options:["Remember Previous","Borderless Fullscreen","Windowed","Maximized"]},gameFpsLimit:{name:"FPS Limit",id:"gameFpsLimit",description:"Caps your FPS to save power and heat. 0 means unlimited",type:"slider",category:"General",defaultValue:0,min:0,max:2e3,step:5},discordRPC:{name:"Discord Rich Presence",id:"discordRPC",description:"Shows your current mode and map on your Discord profile",type:"checkbox",category:"General",defaultValue:!0,needsRestart:!0},accountManager:{name:"Account Manager",id:"accountManager",description:"Save your Krunker accounts and switch between them from the menu",type:"checkbox",category:"General",defaultValue:!0},market:{name:"Kute Market",id:"market",description:"Enables market and trading features: K values, liquidity grades, trade verdicts and the market analyzer. In return, you allow Kute to see trading stats.",type:"checkbox",category:"General",defaultValue:!0,disabledBy:"disableOnlineFeatures"},obsCapturePlugin:{name:"OBS Capture Plugin",id:"obsCapturePlugin",platforms:["windows"],description:"Adds a Kute Capture source to OBS (close OBS first). For sound, add an Application Audio Capture of 'Kute audio window'",type:"checkbox",category:"General",defaultValue:!1},rawInput:{name:"Raw Input",id:"rawInput",platforms:["windows"],description:"Mouse movement comes straight from the device, without Windows pointer acceleration, and all of it reaches the game, also when you click or scroll mid-flick. Krunker's own Raw Mouse Input follows this setting",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},rampBoost:{name:"Ramp Boosting",id:"rampBoost",description:"Scrolling makes you jump, for easier ramp boosts. Off in competitive. Turn it off if another tool already does this",type:"checkbox",category:"Game",defaultValue:!1},autoSpec:{name:"Auto Spectate",id:"autoSpec",description:"Joins public matches as a spectator instead of a player",type:"checkbox",category:"Game",defaultValue:!1},hsSound:{name:"Headshot Sound on Every Kill",id:"hsSound",performance:!1,description:"Plays the headshot sound on every kill, not just headshots",category:"Game",type:"checkbox",defaultValue:!1},hpEnemyCounter:{name:"Hardpoint Enemy Counter",id:"hpEnemyCounter",performance:!1,description:"Shows how many enemies are on the point in competitive Hardpoint",type:"checkbox",category:"Game",defaultValue:!0},showPing:{name:"Player List Ping",id:"showPing",performance:!1,description:"Shows everyone's ping next to their name in the player list",type:"checkbox",category:"Game",defaultValue:!0,needsRefresh:!0},realPing:{name:"Real Ping\u2122\uFE0F",id:"realPing",description:"Pings the lobby server directly and shows your real latency",type:"checkbox",category:"Game",defaultValue:!1,needsRestart:!0},matchmaker:{name:"Matchmaker (F6)",id:"matchmaker",description:"F6 joins the lowest ping lobby that matches your filters instead of a random one",type:"checkbox",category:"Game",defaultValue:!0,button:"Filters",buttonAction:"{{kute}}.matchmaker.showFilters()"},rankedAlert:{name:"Ranked Match Alert",id:"rankedAlert",description:"When Krunker's ranked queue finds a match while you are tabbed out, Kute comes to the front",type:"checkbox",category:"Game",defaultValue:!0,button:"Sound",buttonAction:"{{kute}}.queueSound.showOptions()"},accountEndMessage:{name:"Match End Message per Account",id:"accountEndMessage",description:"Remembers Krunker's Match End Message per account, an account without one sends nothing",type:"checkbox",category:"Game",defaultValue:!1,requiresLogin:!0},exitButton:{name:"Exit Button",id:"exitButton",performance:!1,description:"Adds an Exit button to the menu",type:"checkbox",category:"Interface",defaultValue:!0},menuTimer:{name:"Menu Timer",id:"menuTimer",performance:!1,description:"Shows the match timer while you are in the menu",type:"checkbox",category:"Interface",defaultValue:!0},classicMenu:{name:"Classic Menu",id:"classicMenu",performance:!1,description:"Season 9 menu layout, new buttons and features stay",type:"checkbox",category:"Interface",defaultValue:!1},betterChat:{name:"Better Chat",id:"betterChat",performance:!1,description:"Team and all chat in one view. Press Tab to switch where you send",type:"checkbox",category:"Interface",defaultValue:!0},chatLogs:{name:"Chat Logs",id:"chatLogs",description:"Keeps the last 2000 chat lines, also across lobbies, to search and copy. F1 opens them, change it in Hotkeys",type:"checkbox",category:"Interface",defaultValue:!0,button:"Open",buttonAction:"{{kute}}.chatLogs?.open()"},textSelect:{name:"Selectable Chat",id:"textSelect",performance:!1,description:"Lets you select and copy text from the chat",type:"checkbox",category:"Interface",defaultValue:!0},cleanUI:{name:"Cleaner Menu",id:"cleanUI",description:"Hides ads, promos, the Popular Now row and other clutter in the menu",type:"checkbox",category:"Interface",defaultValue:!1},hideBundles:{name:"Hide Bundle Popups",id:"hideBundles",description:"Stops store bundle popups from showing up outside the store",type:"checkbox",category:"Interface",defaultValue:!1},clanColors:{name:"Show Clan Colors",id:"clanColors",performance:!1,description:"Colors the tags of some clans in the player lists",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},cuteBadge:{name:"Show Kute Badge",id:"cuteBadge",description:"Shows a badge next to other Kute players. This only affects what you see, others still see yours",type:"checkbox",category:"Interface",defaultValue:!0,disabledBy:"disableOnlineFeatures"},kuteIcons:{name:"Use Kute Icons",id:"kuteIcons",performance:!1,description:"Kute's own icons for counters, ammo, hitmarker, reticle and scope. Your game settings stay untouched",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.kuteIcons.customize()"},hudLayout:{name:"HUD Editor",id:"hudLayout",description:"Move, resize and hide parts of the in-game HUD. Opens a private match while you edit",type:"none",category:"Interface",button:"Edit",buttonAction:"{{kute}}.hudEditor.edit()",requiresLogin:!0},keystrokes:{name:"Keystrokes",id:"keystrokes",performance:!1,description:"Shows your movement keys and mouse in the HUD and lights them up while pressed. Move it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1},spotifyOverlay:{name:"Spotify Overlay",id:"spotifyOverlay",performance:!1,description:"Shows the currently playing Spotify track in the HUD. Move and resize it with the HUD Editor",type:"checkbox",category:"Interface",defaultValue:!1,hostFeature:"spotify"},nukeCounter:{name:"Nuke Counter",id:"nukeCounter",performance:!1,description:"Shows your career nuke total in game. It updates when a match ends",type:"checkbox",category:"Interface",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.nukeCounter.showOptions()"},renderStats:{name:"Present FPS Counter",id:"renderStats",description:"The game counter shows how fast your PC runs the game, this adds the frames that reach your screen",type:"checkbox",category:"Interface",defaultValue:!1,needsRestart:!0,requires:"hardFlip"},kuteCss:{name:"Kute CSS",id:"kuteCss",performance:!1,description:"Kute's own look for menus, settings, HUD and social, with a few cats",type:"checkbox",category:"Customization",defaultValue:!1},motionBlur:{name:"Motion Blur",id:"motionBlur",performance:!1,description:"A slight blur while you turn the camera, the HUD stays sharp. Costs FPS: about 5 % fewer while it blurs",type:"checkbox",category:"Customization",defaultValue:!1},motionBlurStrength:{name:"Motion Blur Strength",id:"motionBlurStrength",performance:null,description:"How long the trail is when Motion Blur is on",type:"slider",category:"Customization",defaultValue:40,min:10,max:100,step:5},customSky:{name:"Custom Sky",id:"customSky",performance:!1,description:"Your own sky color gradient or image on every map. Applies from the next match",type:"checkbox",category:"Customization",defaultValue:!1,button:"Customize",buttonAction:"{{kute}}.customSky.showOptions()",hostFeature:"custom-sky"},swapper:{name:"Resource Swapper",id:"swapper",performance:!1,description:"Replaces game files like textures and sounds with the files in your swapper folder",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.swapperManager.open()",needsRefresh:!0},customCss:{name:"CSS Manager",id:"customCss",performance:!1,description:"Your own CSS on top of Krunker's. Keep several files and switch between them, with a live preview",type:"checkbox",category:"Customization",defaultValue:!0,button:"Edit",buttonAction:"{{kute}}.customCss.open()"},userscripts:{name:"Userscripts",id:"userscripts",description:"Runs your own scripts. Crankshaft and idkr scripts work too",type:"checkbox",category:"Customization",defaultValue:!0,button:"Manage",buttonAction:"{{kute}}.userscriptManager.open()"},blocklist:{name:"URL Blocklist",id:"blocklist",description:"Blocks ads and trackers. Open the file to add your own entries",type:"checkbox",category:"Customization",defaultValue:!0,button:"Open file",buttonAction:"window.chrome.webview.postMessage('open, blocklist')",needsRestart:!0},disableCats:{name:"Disable Cats",id:"disableCats",performance:!0,description:"Blocks the cat models in the maps",type:"checkbox",category:"Customization",defaultValue:!0,needsRefresh:!0},disableVideoSkins:{name:"Disable Video Skins",id:"disableVideoSkins",performance:!0,description:"Video skins like Glitch are not loaded and show black instead, which can save FPS",type:"checkbox",category:"Customization",defaultValue:!1,needsRefresh:!0,hostFeature:"video-skins"},uncapFps:{name:"Uncap FPS",id:"uncapFps",description:"Removes the FPS cap at your monitor's refresh rate",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0},audioFix:{name:"Fix Audio Stutters",id:"audioFix",description:"For sound that cuts out at high FPS. Moves sounds every 8 ms instead of every sample",type:"checkbox",category:"Advanced",defaultValue:!1,needsRestart:!0,hostFeature:"audio-fix"},angleBackend:{name:"Graphics Backend (ANGLE)",id:"angleBackend",platforms:["windows"],description:"Leave it on Default (D3D11). OpenGL and Vulkan turn off everything the swapchain hook does",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","D3D11","D3D11on12","OpenGL","Vulkan"]},displayServer:{name:"Display Server",id:"displayServer",platforms:["linux"],description:"Leave it on X11, it runs much faster than Wayland for now. X11 also works inside a Wayland session",type:"select",category:"Advanced",defaultValue:"X11",needsRestart:!0,options:["X11","Wayland"]},colorProfile:{name:"Color Profile",id:"colorProfile",description:"Try sRGB if colors look washed out or too strong",type:"select",category:"Advanced",defaultValue:"Default",needsRestart:!0,options:["Default","sRGB","Display P3 D65","Extended sRGB","scRGB linear","HDR10"]},webviewPriority:{name:"Process Priority",id:"webviewPriority",description:"Higher can help a little, but may make your PC less stable",type:"select",category:"Advanced",defaultValue:"Normal",needsRestart:!0,options:["High","Above Normal","Normal","Below Normal","Low","Idle"]},x3dCacheCores:{name:"Keep Kute on the 3D V-Cache cores",id:"x3dCacheCores",description:"Ryzen X3D with two core groups only: steadier frame pacing on the cores with the big cache",type:"checkbox",category:"Advanced",defaultValue:!0,needsRestart:!0,hostFeature:"x3d-cores"},throttle:{name:"CPU Throttling",id:"throttle",description:"Slows the game down on purpose (2 = half speed). Only for an unstable game, an FPS limit is usually better",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},inMenuThrottle:{name:"CPU Throttling in Menu",id:"inMenuThrottle",description:"Same, but only in the menu. It also slows the match that runs behind the menu",type:"slider",min:1,max:3,step:.01,category:"Advanced",defaultValue:1},clearCache:{name:"Clear Cache & Storage",id:"clearCache",description:"Deletes the cache and local storage. This also resets your game settings",type:"none",category:"Advanced",button:"Clear Now",buttonAction:"if(confirm('Are you sure you want to clear cache and local storage?')) { localStorage.clear(); sessionStorage.clear(); window.chrome.webview.postMessage('clear-cache'); }"},hardFlip:{name:"DXGI Swapchain Hook",id:"hardFlip",platforms:["windows"],description:"Present FPS counter and OBS capture. Laptops with two graphics chips may run better without it",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0},laptopPowerBoost:{name:"Laptop Power Boost",id:"laptopPowerBoost",description:"Plugged in laptops only: switches the power mode to performance while Kute runs and puts yours back after",type:"checkbox",category:"Engine",defaultValue:!0,hostFeature:"hybrid-gpu"},primeOffload:{name:"NVIDIA PRIME Offload",id:"primeOffload",platforms:["linux"],description:"Hybrid laptops with the NVIDIA driver: the game renders on the NVIDIA chip instead of the built in one",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"prime-offload"},patchInputPriority:{name:"Input at Normal Priority",id:"patchInputPriority",description:"Chromium patch: mouse input no longer starves the game's server messages. Off brings back the aim freeze",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFramePacing:{name:"Frame Pacing",id:"patchFramePacing",description:"Chromium patch: the game runs one frame ahead of the screen instead of flooding it. Off brings back the GPU stutter",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchFrameLimiter:{name:"Chromium FPS Limiter",id:"patchFrameLimiter",description:"Chromium patch: holds the FPS limit inside Chromium with the CPU idle, with or without the hook. Off uses the hook's limiter, or a busy wait without the hook",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchRawInputMovement:{name:"Raw Input Keeps Movement",id:"patchRawInputMovement",platforms:["windows"],description:"Chromium patch: no mouse movement is lost on a click. Off drops a few counts at every shot",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchAudioParamCoalesce:{name:"Coalesce Audio Automation",id:"patchAudioParamCoalesce",description:"Chromium patch: the game's per frame sound updates no longer pile up. Off makes FPS drop over a long match",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchCanvasBufferCache:{name:"WebGL Buffer Cache",id:"patchCanvasBufferCache",description:"Chromium patch: keeps three spare frame buffers instead of one. Off makes some starts land in a slow mode",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},patchHighQoS:{name:"Game Process at High QoS",id:"patchHighQoS",platforms:["windows"],description:"Chromium patch: Windows may not throttle the game's process to save power. Off leaves that to Windows",type:"checkbox",category:"Engine",defaultValue:!0,needsRestart:!0,hostFeature:"cef-patches"},showChangelog:{name:"Show Changelog After Updates",id:"showChangelog",description:"Shows what's new after Kute updates",type:"checkbox",button:"Show Now",buttonAction:"{{kute}}.showChangelogPopup({{kute}}.version)",category:"About",defaultValue:!0},disableOnlineFeatures:{name:"Disable Kute Online Features",id:"disableOnlineFeatures",description:"Nothing is sent to or received from kute.lol. Turns off all Kute badges (yours too) and clan colors",type:"checkbox",category:"About",defaultValue:!1,needsRestart:!0},checkUpdates:{name:"Check For Updates",id:"checkUpdates",description:"Looks for a new Kute version when it starts",type:"checkbox",category:"About",defaultValue:!0,needsRestart:!0},exportClientSettings:{name:"Export Kute Settings",id:"exportClientSettings",description:"Saves Kute's settings, HUD positions, matchmaker filters and hotkeys as a file in Downloads",type:"none",category:"About",button:"Export",buttonAction:"{{kute}}.settingsTransfer.exportFile()"},importClientSettings:{name:"Import Kute Settings",id:"importClientSettings",description:"Loads a file from Export Kute Settings and restarts Kute",type:"none",category:"About",button:"Import",buttonAction:"{{kute}}.settingsTransfer.importFile()"},diagnosticsReport:{name:"Diagnostics Report",id:"diagnosticsReport",description:"Puts what helps fix a problem into one file you can send. You see all of it first, nothing is uploaded",type:"none",category:"About",button:"Create",buttonAction:"{{kute}}.diagnostics.open()",hostFeature:"diagnostics"}}});function Mo(s,e){return s.performanceMode===!0&&e in hu}function mu(s){return{...s,...Co}}function hn(s,e){let t=[];for(let[o,n]of Object.entries(hu)){if(n===null)continue;let r=s[o];e?(o in Co||(Co[o]=r),s[o]=n):o in Co&&(s[o]=Co[o],delete Co[o]),s[o]!==r&&t.push(o)}return t}var hu,Co,To=w(()=>{"use strict";Jo();hu=Object.fromEntries(Object.values(At).filter(s=>s.performance!==void 0).map(s=>[s.id,s.performance??null])),Co={}});function nb(s){let e="abcdefghijklmnopqrstuvwxyz",t=crypto.getRandomValues(new Uint8Array(s));return Array.from(t,o=>e[o%e.length]).join("")}var d,Ne,fu,Ue,F=w(()=>{"use strict";Jo();To();d={},Ne=new Promise(s=>{function e(t){if(t?.data?.settings||t?.data?.version){if(window.chrome.webview.removeEventListener("message",e),Object.assign(d,t.data),d.settings?.data)for(let o of Object.values(At))o.defaultValue!==void 0&&!(o.id in d.settings.data)&&(d.settings.data[o.id]=o.defaultValue);d.settings?.data&&hn(d.settings.data,d.settings.data.performanceMode===!0),s(d)}}window.chrome.webview.addEventListener("message",e),window.chrome.webview.postMessage("get-info")}),fu=nb(12);Object.defineProperty(window,fu,{value:d,enumerable:!1,writable:!1,configurable:!1});Ue=`window["${fu}"]`});function Te(s,e,t=2e3){return new Promise(o=>{let n={timer:0},r=i=>{i.data?.[e]!==void 0&&(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data[e]))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},t),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(s)})}var Hr,$e,U,ke,Oe,Ae=w(()=>{"use strict";Hr=(s,e,t)=>{let o=s.prototype[e];s.prototype[e]=function(...n){let r=t.call(this,n,o);return r===void 0?o.apply(this,n):r}},$e=(s,e=3e4)=>new Promise((t,o)=>{let n=document.querySelector(s);if(n){t(n);return}let r={timer:0},i=new MutationObserver(()=>{let a=document.querySelector(s);a&&(clearTimeout(r.timer),i.disconnect(),t(a))});r.timer=setTimeout(()=>{i.disconnect(),o(new Error(`element never showed up: ${s}`))},e),i.observe(document.body,{childList:!0,subtree:!0})}),U=(s,e=document)=>{let t=e.querySelector(s);if(!t)throw new Error(`element not found: ${s}`);return t},ke=(s,e=document)=>U(s,e),Oe=()=>!!document.querySelector(".cmpTmHed")});var bu={};A(bu,{setRampBoost:()=>to,syncScrollBinds:()=>Fr});function to(s){gu=s,window.chrome.webview.postMessage(`toggle-rboost, ${s}`)}function Fr(){let s=!1;try{s=Object.keys(localStorage).some(e=>e.startsWith("cont_")&&localStorage.getItem(e)===rb)}catch{return}s!==Or&&(Or=s,d.hostFeatures?.includes("scroll-binds")&&window.chrome.webview.postMessage(`wheel-to-page, ${s}`))}var rb,gu,Or,mn=w(()=>{"use strict";F();rb="20000",gu=!1;window.addEventListener("wheel",s=>{!gu||!document.pointerLockElement||!d.hostFeatures?.includes("ramp-boost")||(Or||(s.stopImmediatePropagation(),s.preventDefault()),window.chrome.webview.postMessage(`ramp-wheel, ${(s.deltaY||s.deltaX)<0?1:-1}`))},{capture:!0,passive:!1})});var ku={};A(ku,{claimAltShoot:()=>qr,hostSupports:()=>gn,prepareShootBind:()=>Kr,syncLeftClick:()=>Qo});function Dr(s){return Number(localStorage.getItem(s)??-1)}function wu(){let s=Dr(fn);return s!==-1&&s!==Zo}function gn(){return d.hostFeatures?.includes(ab)===!0}function qr(){return!wu()||!gn()}function Kr(){if(!wu()){localStorage.setItem(fn,String(Zo));return}Ne.then(()=>{gn()||localStorage.setItem(fn,String(Zo))})}function Qo(){if(!gn())return;let s=Dr(fn)===Zo||Dr(ib)===Zo;s!==vu&&(vu=s,window.chrome.webview.postMessage(`left-click-f20, ${s}`))}var Zo,fn,ib,ab,vu,bn=w(()=>{"use strict";F();Zo=131,fn="cont_shoot1Key_alt",ib="cont_shoot1Key",ab="left-click-f20"});var xu={};A(xu,{SLOTS:()=>Ao,postUrls:()=>oo});function jr(s){try{return localStorage.getItem(s)}catch{return null}}function cb(s){try{let e=JSON.parse(jr(s)??"[]");return Array.isArray(e)?e.map(t=>Array.isArray(t)?t[1]:null).filter(t=>typeof t=="string").slice(0,lb):[]}catch{return[]}}function oo(){let s={};for(let t of Ao){let o=[];for(let i of t.settings)o.push(jr(`kro_setngss_${i}`)??"");for(let i of t.keys??[])o.push(jr(i)??"");for(let i of t.lists??[])o.push(...cb(i));let n=t.element?document.getElementById(t.element):null;n instanceof HTMLImageElement&&o.push(n.src);let r=[...new Set(o)].filter(i=>i.startsWith("http"));r.length>0&&(s[t.id]=r)}let e=JSON.stringify(s);e!==yu&&(yu=e,window.chrome.webview.postMessage(`icon-urls ${e}`))}var es,Ao,lb,yu,vn=w(()=>{"use strict";es={id:"showUI",name:"Show UI",kind:"checkbox"},Ao=[{id:"kills",file:"kills.png",name:"Kill counter",settings:["customKills"],element:"killsIcon",hiddenBy:[es,{id:"showKillC",name:"Show Kill Counter",kind:"checkbox"}]},{id:"deaths",file:"deaths.png",name:"Death counter",settings:["customDeaths"],element:"deathsIcon",hiddenBy:[es,{id:"showDeaths",name:"Show Death Counter",kind:"checkbox"}]},{id:"streak",file:"streak.png",name:"Streak counter",settings:["customStreak"],element:"streakIcon",hiddenBy:[es,{id:"showStreak",name:"Show Streak Counter",kind:"checkbox"}]},{id:"kdr",file:"kdr.png",name:"K/D counter",settings:[],element:"kdIcon",hiddenBy:[es,{id:"showKD",name:"Show K/D Counter",kind:"checkbox"}]},{id:"ammo",file:"ammo.png",name:"Ammo",settings:["customAmmo"],element:"ammoIcon",hiddenBy:[es]},{id:"hitmarker",file:"hitmarker.png",name:"Hitmarker",settings:["customHitmarker"],hiddenBy:[{id:"hitm",name:"Hitmarker: Show",kind:"checkbox"},{id:"hitOpac",name:"Hitmarker: Opacity",kind:"opacity"}]},{id:"reticle",file:"reticle.png",name:"Reticle",settings:[],keys:["savedReticle"],lists:["krk_custRet"],element:"aimDot",hiddenBy:[]},{id:"scope",file:"scope.png",name:"Scope",settings:[],keys:["savedScope"],lists:["krk_custScps"],element:"recticleImg",hiddenBy:[{id:"scopeOpac",name:"Scope Opacity",kind:"opacity"}]}],lb=30;yu=""});var Su={};A(Su,{canLoadLive:()=>Lt,loadScripts:()=>Lo,registry:()=>Je});var Je,Lt,Lo,ts=w(()=>{"use strict";F();Je=window.__kuteUserscripts??null,Lt=()=>!!(Je&&d.hostFeatures?.includes("userscripts-live")),Lo=(s,e,t)=>{window.chrome.webview.postMessage(`scripts-load ${JSON.stringify({...s?{keys:s}:{},replace:e,start:t})}`)}});var $u={};A($u,{default:()=>Rt,hostSupportsCustomCss:()=>os});var Eu,os,Ur,Rt,wn=w(()=>{"use strict";F();Eu=/@import\s+(?:url\([^)]*\)|"[^"]*"|'[^']*')[^;]*;?/gi,os=()=>d.hostFeatures?.includes("custom-css")??!1,Ur=class{constructor(){this.saved=String(window.__kuteCustomCss??""),this.enabled=!0,this.sheet=null,this.importStyle=null,this.importText="",this.waitingForBody=!1,this.saved&&this.apply(this.saved),Ne.then(()=>{d.settings.toggleCustomCss=e=>this.toggle(e),d.settings.data.customCss===!1?this.toggle(!1):!this.saved&&os()&&this.load().then(e=>this.apply(e))})}load(){return new Promise(e=>{let t=o=>{typeof o.data?.customCss?.content=="string"&&(window.chrome.webview.removeEventListener("message",t),this.saved=o.data.customCss.content,e(this.saved))};window.chrome.webview.addEventListener("message",t),window.chrome.webview.postMessage("css-read")})}apply(e){if(!this.enabled)return;let t=e.match(Eu)??[],o=t.length?e.replace(Eu,""):e;if(!this.sheet){if(!o.trim())return;this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[...document.adoptedStyleSheets,this.sheet]}this.sheet.replaceSync(o),this.setImports(t.join(` +`))}setImports(e){if(this.importText=e,!(!e&&!this.importStyle)){if(document.readyState==="loading"){if(this.waitingForBody)return;this.waitingForBody=!0,document.addEventListener("DOMContentLoaded",()=>this.setImports(this.importText),{once:!0});return}this.importStyle||(this.importStyle=document.createElement("style"),document.documentElement.append(this.importStyle)),this.importStyle.textContent!==e&&(this.importStyle.textContent=e)}}toggle(e){if(this.enabled=e,!e){this.sheet?.replaceSync(""),this.setImports("");return}this.saved?this.apply(this.saved):os()&&this.load().then(t=>this.apply(t))}markSaved(e){this.saved=e,this.apply(e)}revert(){this.enabled&&this.apply(this.saved)}},Rt=new Ur});var Lu={};A(Lu,{holdRestart:()=>kn,restart:()=>Ro});function Ro(){location.assign("https://krunker.io/")}function kn(s){Tu=Date.now()+s}function Au(){return localStorage.getItem(Cu)!==null||document.cookie.includes(`${Cu}=`)}function db(){try{return!!window.getGameActivity?.()?.id}catch{return!1}}function ub(s){let e=Date.now(),t=0,o=setInterval(()=>{if(db()){sessionStorage.removeItem(Gr),clearInterval(o);return}if(Date.now()-e>9e4){clearInterval(o);return}if(!s||!Au()||(t===0&&(t=Date.now()),Date.now()-t<1500))return;clearInterval(o);let n=Number(sessionStorage.getItem(Gr)??0);n>=2||(sessionStorage.setItem(Gr,String(n+1)),console.log("[kute] session: no lobby after the frvr login, reloading"),Ro())},1e3)}function pb(){let s=localStorage.getItem(Mu)!==null,e=!1;setInterval(()=>{if(e){document.pointerLockElement||Ro();return}let t=localStorage.getItem(Mu)!==null;s&&!t&&Date.now()>Tu&&(e=!0,console.log("[kute] session: logged out, reloading")),s=t},1e3)}var Cu,Mu,Gr,Tu,yn=w(()=>{"use strict";Cu="__FRVR_auth_refresh_token",Mu="krunker_token",Gr="kute_hang_reloads";Tu=0;location.hostname==="krunker.io"&&location.pathname==="/"&&(ub(!Au()),pb())});var Iu={};A(Iu,{DEFAULT_LOAD:()=>so,cpuChecksum:()=>Xr,createScene:()=>Yr});function wb(s){let e=document.createElement("canvas");e.width=640,e.height=60+s.length*34;let t=e.getContext("2d");return t&&(t.fillStyle="rgba(30, 30, 30, 0.92)",t.beginPath(),t.roundRect(0,0,e.width,e.height,18),t.fill(),t.textAlign="center",t.textBaseline="middle",s.forEach((o,n)=>{t.font=n===0?"26px Consolas, monospace":"18px Consolas, monospace",t.fillStyle=n===0?"#35e0e8":"#bbbbbb",t.fillText(o,e.width/2,48+n*34)})),e}function Ru(s,e,t){let o=s.createShader(e);if(!o)throw new Error("cannot create shader");if(s.shaderSource(o,t),s.compileShader(o),!s.getShaderParameter(o,s.COMPILE_STATUS))throw new Error(s.getShaderInfoLog(o)??"shader compile failed");return o}function Wr(s,e,t){let o=s.createProgram();if(s.attachShader(o,Ru(s,s.VERTEX_SHADER,e)),s.attachShader(o,Ru(s,s.FRAGMENT_SHADER,t)),s.linkProgram(o),!s.getProgramParameter(o,s.LINK_STATUS))throw new Error(s.getProgramInfoLog(o)??"program link failed");return o}function kb(s){let e=[],t=[];for(let o=0;o<=s;o++){let n=o/s*Math.PI;for(let r=0;r<=s;r++){let i=r/s*Math.PI*2;e.push(Math.cos(i)*Math.sin(n),Math.cos(n),Math.sin(i)*Math.sin(n))}}for(let o=0;o0?wb(t):null,g=m?Wr(o,bb,vb):null,b=g?o.getUniformLocation(g,"uScale"):null,v=o.createVertexArray();m&&(o.bindVertexArray(v),o.bindBuffer(o.ARRAY_BUFFER,o.createBuffer()),o.bufferData(o.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,0,0),o.bindVertexArray(null),o.bindTexture(o.TEXTURE_2D,o.createTexture()),o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,m),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE));let k=1337,E=()=>(k=k*1664525+1013904223>>>0,k/4294967296),L=Array.from({length:e.draws},()=>({x:(E()-.5)*80,y:(E()-.5)*50,z:(E()-.5)*40,scale:.6+E()*1.6,spin:.2+E()*1.5,red:.3+E()*.7,green:.3+E()*.7,blue:.3+E()*.7})),y=new Float32Array(16),C=new Float32Array(16),I=new Float32Array(16),_=new Float32Array(16);return C[0]=1,C[5]=1,C[10]=1,C[15]=1,C[14]=-60,{resize(H,G){s.width=Math.max(1,Math.round(H)),s.height=Math.max(1,Math.round(G)),o.viewport(0,0,s.width,s.height),yb(y,Math.PI/2,s.width/s.height,.1,500),xb(I,y,C)},render(H){let G=H*.001;Eb(e.cpuIterations),o.enable(o.DEPTH_TEST),o.disable(o.BLEND),o.clearColor(.08,.09,.12,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.useProgram(n),o.bindVertexArray(p),o.uniformMatrix4fv(i,!1,I);for(let J of L)Sb(_,J.x,J.y,J.z,G*J.spin,J.scale),o.uniformMatrix4fv(r,!1,_),o.uniform3f(a,J.red,J.green,J.blue),o.drawElements(o.TRIANGLES,h.indices.length,o.UNSIGNED_SHORT,0);o.disable(o.DEPTH_TEST),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),o.useProgram(l),o.bindVertexArray(f),o.uniform1f(c,G);for(let J=0;J{"use strict";so={draws:1200,meshSegments:10,overdraw:4,cpuIterations:2e5},hb=`#version 300 es layout(location=0) in vec3 aPos; layout(location=1) in vec3 aNormal; uniform mat4 uModel; @@ -11,14 +11,14 @@ void main() { float light = 0.35 + 0.65 * max(dot(n, normalize(vec3(0.4, 0.8, 0.5))), 0.0); vColor = uColor * light; gl_Position = uViewProj * uModel * vec4(aPos, 1.0); -}`,db=`#version 300 es +}`,mb=`#version 300 es precision mediump float; in vec3 vColor; out vec4 outColor; -void main() { outColor = vec4(vColor, 1.0); }`,ub=`#version 300 es +void main() { outColor = vec4(vColor, 1.0); }`,fb=`#version 300 es layout(location=0) in vec2 aPos; out vec2 vUv; -void main() { vUv = aPos * 0.5 + 0.5; gl_Position = vec4(aPos, 0.0, 1.0); }`,pb=`#version 300 es +void main() { vUv = aPos * 0.5 + 0.5; gl_Position = vec4(aPos, 0.0, 1.0); }`,gb=`#version 300 es precision mediump float; in vec2 vUv; uniform float uTime; @@ -27,18 +27,18 @@ out vec4 outColor; void main() { float w = sin(vUv.x * 40.0 + uTime + uLayer) * cos(vUv.y * 30.0 - uTime * 0.7); outColor = vec4(0.3 + 0.2 * w, 0.2, 0.4 - 0.2 * w, 0.08); -}`,hb=`#version 300 es +}`,bb=`#version 300 es layout(location=0) in vec2 aPos; uniform vec2 uScale; out vec2 vUv; -void main() { vUv = vec2(aPos.x * 0.5 + 0.5, 0.5 - aPos.y * 0.5); gl_Position = vec4(aPos * uScale, 0.0, 1.0); }`,mb=`#version 300 es +void main() { vUv = vec2(aPos.x * 0.5 + 0.5, 0.5 - aPos.y * 0.5); gl_Position = vec4(aPos * uScale, 0.0, 1.0); }`,vb=`#version 300 es precision mediump float; in vec2 vUv; uniform sampler2D uLabel; out vec4 outColor; -void main() { outColor = texture(uLabel, vUv); }`;Wr=new Float32Array(4096),Ru=0});var Iu={};A(Iu,{FrameRecorder:()=>no,InputProbe:()=>ss,TaskProbe:()=>ro});var no,ss,ro,xn=w(()=>{"use strict";no=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(h*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let h of t)a+=h,h>i&&(l++,c+=h-r);let u=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/u,stallMs:c/u}}},ss=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},ro=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var zu={};function Je(s,e){let t=Number(Sn.get(s));return Sn.has(s)&&Number.isFinite(t)?t:e}function Zr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Ab(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=Nu>0?["Kute is testing this PC",`client test ${$b} of ${Nu}`,"this takes a moment, nothing to do for you"]:[],t=Vr(s,_u,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Jr.length>0?Array.from({length:Math.max(1,Cb)},()=>Jr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new ro,c=Je("cap",0),u=i,h=0,p=!1;s.addEventListener("webglcontextlost",()=>{p=!0});let f=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Tb?b:0,u=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};f(i);let m=g=>{if(c>0){for(;performance.now()0&&t.lost()){h===0&&Zr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),h>0){b-h=v&&(a=new no,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+Sb&&(n.push({cap:o[r]??c,stats:a.stats(Eb),otherTasks:l.stop()}),r++,r0?n:void 0,load:_u,width:s.width,height:s.height,checksum:Yr()})))),requestAnimationFrame(m)};requestAnimationFrame(m)}function Bu(){try{Ab()}catch(s){Zr({ok:!1,error:String(s)})}}var Sn,yb,xb,Sb,Eb,$b,Nu,Jr,Cb,Mb,Tb,_u,Qr=w(()=>{"use strict";Xr();xn();Sn=new URLSearchParams(location.search);yb=400,xb=Je("settle",700),Sb=Je("ms",2e3),Eb=1e3/Je("hz",60),$b=Je("step",0),Nu=Je("steps",0),Jr=(Sn.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),Cb=Je("rounds",1),Mb=Je("capsettle",700),Tb=Sn.get("selfcap")==="1",_u={draws:Je("draws",so.draws),meshSegments:so.meshSegments,overdraw:Je("overdraw",so.overdraw),cpuIterations:Je("cpu",so.cpuIterations)};document.body?Bu():document.addEventListener("DOMContentLoaded",Bu,{once:!0})});var Ou,Hu=w(()=>{Ou=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} -`});var Du,Fu=w(()=>{Du=`:root{--kute-cyan: #35e0e8;--kute-cyan-soft: rgba(53, 224, 232, .14);--kute-pink: #f5479b;--kute-pink-soft: rgba(245, 71, 155, .16);--kute-bg: #0b1215;--kute-panel: #111b1f;--kute-raised: #182429;--kute-line: rgba(53, 224, 232, .12);--kute-line-strong: rgba(53, 224, 232, .28);--kute-text: #eaf7f8;--kute-muted: rgba(234, 247, 248, .62);--kute-faint: rgba(234, 247, 248, .38);--kute-radius: 8px;--kute-radius-lg: 14px;--kute-paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f5479b'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-paw-cyan: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230b1215'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-ears: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Cpath fill='rgba(11,18,21,.78)' d='M1 14 9 1l8 13Zm28 0 8-13 8 13Z'/%3E%3Cpath fill='rgba(245,71,155,.7)' d='M5.5 14 9 7.5l3.5 6.5Zm28 0 3.5-6.5 3.5 6.5Z'/%3E%3C/svg%3E");--kute-paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2335e0e8'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-grad: linear-gradient(90deg, var(--kute-cyan), var(--kute-pink));--div-black: rgba(11, 18, 21, .78);--div-grey: rgba(53, 224, 232, .07);--div-shadow: 0 2px 10px rgba(0, 0, 0, .5);--blue: var(--kute-cyan);--highlight-color: var(--kute-cyan);--highlight-hover-color: #5ce9ef;--card-bg-color: rgba(24, 36, 41, .7);--dark-bg-color: rgba(11, 18, 21, .5);--border-subtle: 1px solid var(--kute-line);--border-radius-sm: 6px;--border-radius-md: var(--kute-radius);--border-radius-lg: var(--kute-radius-lg);--box-shadow-lg: 0 18px 44px rgba(0, 0, 0, .6)}::selection{background:var(--kute-pink);color:#fff}a,a:visited{color:var(--kute-cyan)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:transparent;box-shadow:none}::-webkit-scrollbar-thumb{background:var(--kute-line-strong);border:3px solid transparent;border-radius:999px;background-clip:padding-box;box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:var(--kute-cyan)}#windowHolder.popupWin{background-color:#050a0cb8}#menuWindow.dark{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6,0 0 0 1px #0006}.settingsHeader{background-color:var(--kute-bg);border-bottom:1px solid var(--kute-line)}.setSugBox2{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);transition:background-color .15s,border-color .15s}.setSugBox2:hover{border-width:1px;background-color:var(--kute-raised);border-color:var(--kute-cyan)}.advancedSlider{background-color:#24343a;border-radius:999px}.advancedSlider:before{border-radius:50%;background:#fff var(--kute-paw) center / 20px no-repeat}input:checked+.advancedSlider{background-color:var(--kute-cyan)}input:checked+.advancedSlider:before{background-image:var(--kute-paw-cyan)}input:checked+.advancedSlider:after{color:var(--kute-bg)}.hostPresetBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.hostPresetBtn:hover{background-color:var(--kute-pink);color:#fff}#settingsTabLayout{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden}.settingTab{background-color:transparent;color:var(--kute-muted);border-bottom:3px solid transparent;transition:color .15s,background-color .15s}#menuWindow.dark .settingTab{color:var(--kute-muted)}.settingTab:hover{border-bottom:3px solid var(--kute-line-strong);background-color:var(--kute-cyan-soft)}#menuWindow.dark .settingTab:hover{color:var(--kute-text)}.dark .tabANew,.dark .tabANew:hover{border-bottom:3px solid var(--kute-cyan)!important;background-color:var(--kute-cyan-soft)}#menuWindow.dark .tabANew{color:var(--kute-cyan)}.setHed,.setHedS{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.setHed:hover,.setHedS:hover{background-color:#1d2c32;border-left-color:var(--kute-pink)}.setHed .plusOrMinus{color:var(--kute-cyan)}.setBodH{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.settName,.settNameSmall{border-bottom:1px solid var(--kute-line);color:var(--kute-muted)!important}.settNameIn:hover{background-color:var(--kute-cyan-soft)!important;color:var(--kute-text)!important}.settingsBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px;transition:background-color .15s,color .15s}#menuWindow.dark .settingsBtn{color:var(--kute-bg)}.settingsBtn:hover,#menuWindow.dark .settingsBtn:hover{background-color:var(--kute-pink);color:#fff}#settSearch,.inputGrey2,.sliderVal,#loadoutName,#loadoutSelect,#itemSearch{background:var(--kute-raised);color:var(--kute-text);border:1px solid var(--kute-line);border-radius:6px;outline:none;transition:border-color .15s}#settSearch:focus,.inputGrey2:focus,.sliderVal:focus,#loadoutName:focus,#loadoutSelect:focus{border-color:var(--kute-cyan)}#loadoutName{background:var(--kute-raised)!important;border:1px solid var(--kute-line)!important}.sliderVal{border-color:var(--kute-line-strong)!important}#settSearch::placeholder,#loadoutName::placeholder{color:var(--kute-faint)}.inputGrey2 option,#loadoutSelect option{background:var(--kute-panel);color:var(--kute-text)}#loadoutToolbar{background-color:var(--kute-panel);border-bottom:1px solid var(--kute-line)}.loadoutTab{background-color:transparent;transition:background-color .15s,color .15s}.loadoutTab:hover{background-color:var(--kute-cyan-soft)}.loadoutTabSel,.loadoutTabSel:hover{background-color:var(--kute-cyan-soft);border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)!important}#charPreviewSlot{background:radial-gradient(circle at 50% 42%,rgba(53,224,232,.1),transparent 62%);border-right:1px solid var(--kute-line)}.custContainer,.custSubContainer{background-color:var(--kute-panel);border-color:var(--kute-line);box-shadow:none}.custContainer{border-radius:var(--kute-radius);transition:border-color .15s,background-color .15s}.custContainer.contCanSelect:hover{background-color:var(--kute-raised);border-color:var(--kute-cyan)}.custSubContainer{border-radius:0 var(--kute-radius) 0 var(--kute-radius)}.custClear{border-radius:6px}.custBack{background:var(--kute-raised);border-radius:6px}.custBack:hover{background:var(--kute-cyan-soft)}.classCard{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden;transition:border-color .15s}.classCard:hover{border-color:var(--kute-cyan)}.classXPBar{background-color:var(--kute-bg)}.clsXPBarC{background-color:var(--kute-cyan)}.loadoutBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.loadoutBtn:hover{background-color:var(--kute-pink);color:#fff}.slider,.slider2{background-color:#24343a;border-radius:999px}.slider:before,.slider2:before{border-radius:50%;width:22px;background-color:#fff;background-image:var(--kute-paw);background-size:14px;background-position:center;background-repeat:no-repeat}.slider:before{left:5px}input:checked+.slider,input:checked+.slider2,input:checked+.sliderSml,input:checked+.sliderCent{background-color:var(--kute-cyan)}input:checked+.slider:before{transform:translate(28px);background-image:var(--kute-paw-cyan)}input:checked+.slider2:before{transform:translate(20px);background-image:var(--kute-paw-cyan)}input:focus+.slider,input:focus+.slider2,input:focus+.sliderSml{box-shadow:0 0 0 2px var(--kute-cyan-soft)}.sliderSml,.sliderCent{background-color:#24343a}.sliderM{background-color:#24343a;height:8px;border-radius:999px;margin-bottom:0}.sliderM::-webkit-slider-thumb{width:22px;height:22px;border-radius:50%;background:#fff var(--kute-paw) center / 14px no-repeat;box-shadow:0 0 0 3px var(--kute-cyan),0 2px 6px #00000080}#playerHeaderEl{background:var(--kute-grad) bottom / 100% 1px no-repeat,linear-gradient(#070c0feb,#070c0fbd)}.ph-item[class*=svelte-],.nav-item[class*=svelte-]{border-radius:12px;transition:background-color .15s}.ph-item[class*=svelte-]:hover,.nav-item[class*=svelte-]:hover{background-color:var(--kute-cyan-soft)}.nav-item[class*=svelte-] .material-icons,.nav-item[class*=svelte-] .material-icons-outlined{color:var(--kute-cyan)}#menuItemContainer .menuItem{position:relative;border-radius:10px;transition:transform .15s,background-color .15s}#menuItemContainer .menuItem:hover{background:linear-gradient(90deg,var(--kute-cyan-soft),transparent 85%);transform:translate(6px)}#menuItemContainer .menuItem:hover .menuItemTitle{color:var(--kute-cyan)}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):before{content:"";position:absolute;left:-18px;top:50%;width:14px;height:14px;background:var(--kute-paw-solid) center / contain no-repeat;opacity:0;transform:translate(-4px,-50%) rotate(-20deg);transition:opacity .15s,transform .15s;pointer-events:none}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):hover:before{opacity:1;transform:translateY(-50%) rotate(-20deg)}#menuItemContainer .menuItemIcon{color:var(--kute-cyan)}#menuItemContainer .sidebarDivider{background:linear-gradient(90deg,var(--kute-line-strong),transparent);border:0}@container not style(--kute-classic-menu: 1){#subLogoButtons>.actionCard{background:var(--kute-panel);border-color:rgba(var(--card-rgb),.45);border-radius:var(--kute-radius);box-shadow:none;transition:background-color .15s,border-color .15s}#subLogoButtons>.actionCard:hover{background:var(--kute-raised);border-color:rgb(var(--card-rgb))}#subLogoButtons>.actionCard .cardIcon{color:rgb(var(--card-rgb))}.popRailCard[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line-strong);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.popRailCard[class*=svelte-]:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}.popRailPlay[class*=svelte-]{color:var(--kute-cyan)}#customizeButton{border-radius:var(--kute-radius)}}.window-header[class*=svelte-],#loadoutToolbar,.profile-detail-header-bar[class*=svelte-],.instructionsHeader,.settingsHeader{background-image:var(--kute-grad);background-size:100% 1px;background-position:bottom;background-repeat:no-repeat}:is(#windowHolder,#popupHolder,#app) .button{border-radius:var(--kute-radius);background-color:#0b121599}:is(#windowHolder,#popupHolder,#app) .button:hover,:is(#windowHolder,#popupHolder,#app) .button:active{border-color:var(--kute-cyan)!important}:is(#windowHolder,#popupHolder,#app) .button:not([class*=buttonR]):not([class*=buttonG]):not([class*=buttonP]):not([class*=buttonO]):not([class*=buttonB]):not(:hover){border-color:var(--kute-line-strong)}#chatList{background-color:#0b12158c;border-radius:var(--kute-radius) var(--kute-radius) 0 0}#chatInputHolder{border-radius:0 0 var(--kute-radius) var(--kute-radius)}#chatInput{background-color:#182429cc;border:1px solid var(--kute-line);border-radius:6px}#chatInput:focus{border-color:var(--kute-cyan);outline:none}#instructionsUpdate{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;overflow:hidden}.instructionsHeader,.instructionsTabs{background-color:var(--kute-panel);box-shadow:none}.instructionsHeader{border-bottom:1px solid var(--kute-line)}.instructionsTab{border-top:1px solid var(--kute-line);transition:background-color .15s,color .15s}.instructionsTab:hover{background-color:var(--kute-cyan-soft);border-color:var(--kute-line);color:var(--kute-cyan)}#ammoHolder,#bottomLeftPlayer,#timerHolder,.statIcon,#leaderboardHolder,#teamScores,#chatInputHolder{border-radius:var(--kute-radius)}#ammoHolder .greyInner,.statIcon .greyInner,#timerInner,#leaderContainer,#bottomLeftPlayerLeft,#bottomLeftPlayerRight,#bottomLeftTeamType,#bottomLeftTeamName,#bottomLeftHealthBar{border-radius:6px}#bottomLeftPlayerLeft{overflow:hidden}#ammoHolder,#bottomLeftPlayer{box-shadow:inset 0 -2px 0 var(--kute-cyan)}#bottomLeftPlayer{position:relative}#ammoHolder:before,#bottomLeftPlayer:before{content:"";position:absolute;top:-12px;width:46px;height:14px;background:var(--kute-ears) no-repeat center / contain;pointer-events:none}#ammoHolder:before{right:20px}#bottomLeftPlayer:before{left:19px}#reloadMsg{border-radius:6px}#ingameFPS,#pingText{color:var(--kute-cyan)}.bigMenTabs{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.bigMenTab:hover{border-bottom:3px solid var(--kute-line-strong)}.bigMenTabA,.bigMenTabA:hover{border-bottom:3px solid var(--kute-cyan);color:var(--kute-cyan)}#popupContent,#bundlePop,#premiumPop,#policePopC,#guidePopup,#chargeModalCard,#spinHistoryPop,.confPremiumPop,.vouchPop,.rankedPop,.promoPop,.pfpPop,.dropsPop,.accountCreatePop,.imagePop,.badgePop,.imageNewPop,.importPop,.disconnectPop,.eventPop,.bp-generic-pop,.bp-purchase-pop,.spinErrorPop,.charmErrorPop,.spinHistoryStatsPop,.loadingPop,.autoLoadPop,.editMapPop,.responsePop,.ticketPop,.dxp-pop,.abTestsPop,.registerGiftPop,.rankedQueueModal,.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.moreKrunkerPopup,.infoPop,.contPop,.io-popup-container,.wallet-root[class*=svelte-]{background-color:var(--kute-bg);border-radius:var(--kute-radius-lg);box-shadow:0 0 0 1px var(--kute-line),0 24px 60px #000000a6}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop,.metaPop,.polConfPop{border-color:var(--kute-line);border-radius:var(--kute-radius-lg)}.hostHeader,#stickyHostH,.imageListHeader,.imageListFooter,.spinHistoryHeader,.popHeader,.dropsPopHeader,.serverHeader,#itemSearchH,#bindsHeader,.tooltip2,.crftRcpeCrd,.bundleCrd,.bundle-card[class*=svelte-],.moreKrunkerOption[class*=svelte-],.items-grid[class*=svelte-],.filter-panel[class*=svelte-],.territory-map-container[class*=svelte-],.data-table[class*=svelte-] thead{background-color:var(--kute-panel)}#initLoader,.clsStatXPBar,.elo-progress-bar-bg{background-color:var(--kute-bg)}.featured-section[class*=svelte-],.stream-card[class*=svelte-],.emoji-panel[class*=svelte-],.verification-banner[class*=svelte-],.music-player[class*=svelte-],.market-card[class*=svelte-],.rank-popup-content{background-color:var(--kute-panel)}.hide-button[class*=svelte-],.kuteTopButton{background-color:var(--kute-raised)}.hide-button[class*=svelte-]:hover,.kuteTopButton:hover{background-color:#1d2c32}.contactsHeader{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius)}.bpInfoBalloon,.bpInfoBalloon:after,.io-separator span{background-color:var(--kute-bg)}.bpClaimB,.bp-unlock-header,.io-button,.mapLICat,#tradeChatInput,.tradeChatItem,.main-button[class*=svelte-]{background-color:var(--kute-raised)}.io-button:hover,.mapLICat:hover,.main-button[class*=svelte-]:hover:not(:disabled):not(.main-button-disabled){background-color:#1d2c32}.main-button[class*=svelte-],.moreKrunkerOption[class*=svelte-],.territory-map-container[class*=svelte-],.territory-details-panel[class*=svelte-],.inventory-filter[class*=svelte-],.filter-item-wrapper[class*=svelte-]{border-color:var(--kute-line)}.moreKrunkerOption[class*=svelte-]:hover{border-color:var(--kute-cyan)}.inventory-filter[class*=svelte-],.filter-header[class*=svelte-]{background-color:var(--kute-panel)}.currency-card[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line)}.search-input[class*=svelte-],.season-select[class*=svelte-],.sort-select[class*=svelte-],.category-select[class*=svelte-],.filter-tab[class*=svelte-],.filter-item[class*=svelte-]:hover,.reset-btn[class*=svelte-],.expand-btn[class*=svelte-],.toggle-all-btn[class*=svelte-],.only-btn[class*=svelte-]{background:var(--kute-raised);border-color:var(--kute-line)}.filter-tab[class*=svelte-]:hover,.reset-btn[class*=svelte-]:hover,.expand-btn[class*=svelte-]:hover,.toggle-all-btn[class*=svelte-]:hover,.only-btn[class*=svelte-]:hover{background:#1d2c32}.filter-tab.active[class*=svelte-]{background:var(--kute-cyan);color:var(--kute-bg)}.setSugBox,.viewAllUpdates,.bSliderBtn,.bundleSliderBtn,.dropsSliderBtn,.challHeadrI,.sub-tab-panel[class*=svelte-]{border-color:var(--kute-line-strong)}.challMapCrd:not(.chalCardH){border-color:var(--kute-line-strong)}.guideHeader,.guideSubH,.mailFrom,.speedRunItem,#hostActionH,#custStreakSelH{border-color:var(--kute-line)}.store-tabs[class*=svelte-],.tabs-container[class*=svelte-],#menuWindow.eterno .store-tabs[class*=svelte-]{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.store-tab[class*=svelte-]:hover,.tab[class*=svelte-]:hover{border-bottom-color:var(--kute-line-strong)}.store-tab-active[class*=svelte-],.store-tab-active[class*=svelte-]:hover,.tab-active[class*=svelte-],.tab-active[class*=svelte-]:hover,.tabHeader.selected{border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)}#menuWindow.eterno{background-color:var(--kute-bg);border-color:var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;animation:none}.followBut,#hostMenuBtn,.chargeModalBtn,.redVouchBtn,.searchBtn,.hostToggle,.subPassChg,.updDisN,#partnerProgB,#partnrUpBtn,#findGameBtn,.joinBtn,.openCollection,#spinMultiToggleBtn,.clanSubmitBtn,.main-button-accept-secondary[class*=svelte-]{background-color:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}input:checked+.optCheck{background-color:var(--kute-cyan)}.quickJoin,.followBack,.io-input-field:focus{border-color:var(--kute-cyan)}.io-section-header:after{background:var(--kute-cyan)}.counterBadge[class*=svelte-]{background:var(--kute-pink);color:#fff}.wallet-catalog-btn[class*=svelte-] i{color:var(--kute-cyan)}.stack-collapse-fab[class*=svelte-]{background:var(--kute-cyan)}.card-title[class*=svelte-],.view-title[class*=svelte-],.table-header[class*=svelte-],.no-clan-title[class*=svelte-],.no-participation-title[class*=svelte-],.clan-benefits[class*=svelte-] h3,.clan-benefits[class*=svelte-] li:before,.eligible-maps[class*=svelte-] h3,.day-label[class*=svelte-],.day-arrow[class*=svelte-],.view-all-btn[class*=svelte-]{color:var(--kute-cyan)}.section-title[class*=svelte-]{border-left-color:var(--kute-cyan);color:var(--kute-cyan)}.category-card[class*=svelte-],.map-filter-select[class*=svelte-],.day-arrow[class*=svelte-],.day-input[class*=svelte-],.data-table[class*=svelte-] thead tr{border-color:var(--kute-line-strong)}.category-card[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:focus,.day-input[class*=svelte-]:focus{border-color:var(--kute-cyan)}.table-header.sortable.sort-asc[class*=svelte-]:after{border-bottom-color:var(--kute-cyan)}.table-header.sortable.sort-desc[class*=svelte-]:after{border-top-color:var(--kute-cyan)}.table-header.sortable[class*=svelte-]:hover,.data-table[class*=svelte-] tbody tr.clickable:hover,.data-table[class*=svelte-] tbody tr.highlight-row,.day-arrow[class*=svelte-]:hover:not(:disabled),.day-map[class*=svelte-],.eligible-maps[class*=svelte-] li,.view-all-btn[class*=svelte-],.page-btn[class*=svelte-],.view-tab.active[class*=svelte-]{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .socialModal{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}:is(#popupHolder,#app) .social-content{border-radius:var(--kute-radius-lg)}:is(#popupHolder,#app) .window-header{background:var(--kute-panel);border-bottom:1px solid var(--kute-line)}:is(#popupHolder,#app) .window-header-icon{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab{background:var(--kute-panel);transition:background-color .15s}:is(#popupHolder,#app) .sidebar-tab:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active{background:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-label{color:var(--kute-bg)}:is(#popupHolder,#app) .simple-tabs{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .simple-tab-active{border-bottom-color:var(--kute-cyan)}:is(#popupHolder,#app) .simple-tab-active .simple-tab-icon,:is(#popupHolder,#app) .simple-tab-active .simple-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-input,:is(#popupHolder,#app) .social-search-btn,:is(#popupHolder,#app) .profile-search-form,:is(#popupHolder,#app) .conversation-input,:is(#popupHolder,#app) .conversation-emoji-button{background:var(--kute-raised);border-color:var(--kute-line);border-radius:6px}:is(#popupHolder,#app) .social-search-input:focus,:is(#popupHolder,#app) .profile-search-form:focus-within,:is(#popupHolder,#app) .conversation-input:focus{border-color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-btn:hover,:is(#popupHolder,#app) .conversation-emoji-button:hover:not(:disabled){background:#1d2c32;border-color:var(--kute-line-strong);color:var(--kute-cyan)}:is(#popupHolder,#app) .social-compose-btn,:is(#popupHolder,#app) .post-follow-btn,:is(#popupHolder,#app) .conversation-send-button{background:var(--kute-cyan);border-radius:6px;transition:background-color .15s}:is(#popupHolder,#app) .social-compose-btn:hover,:is(#popupHolder,#app) .post-follow-btn:hover:not(:disabled),:is(#popupHolder,#app) .conversation-send-button:hover:not(:disabled){background:var(--kute-pink)}:is(#popupHolder,#app) .social-compose-icon,:is(#popupHolder,#app) .social-compose-label,:is(#popupHolder,#app) .post-follow-btn i,:is(#popupHolder,#app) .conversation-send-button{color:var(--kute-bg)}:is(#popupHolder,#app) .conversation-send-button:disabled{background:#24343a;color:var(--kute-faint)}:is(#popupHolder,#app) .post-card{background:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-card-clickable:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .post-item-card{background:#18242999;border-color:var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-item-card:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .postGameRes{background-color:var(--kute-bg);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .postResRo,:is(#popupHolder,#app) .postResRoD{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .post-content-action{color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn,:is(#popupHolder,#app) .share-btn{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .vote-btn:hover:not(:disabled),:is(#popupHolder,#app) .share-btn:hover{background:#1d2c32;border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .comment-btn:hover{background:var(--kute-cyan-soft)}:is(#popupHolder,#app) .vote-btn-done,:is(#popupHolder,#app) .vote-btn-done:hover:not(:disabled){background:var(--kute-cyan);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn-done .vote-btn-icon,:is(#popupHolder,#app) .vote-btn-done .vote-btn-label,:is(#popupHolder,#app) .vote-btn-done .vote-btn-count{color:var(--kute-bg)}:is(#popupHolder,#app) .friends-root,:is(#popupHolder,#app) .conversation-root{background:var(--kute-bg)}:is(#popupHolder,#app) .friend-list{background:var(--kute-panel);border-right:1px solid var(--kute-line)}:is(#popupHolder,#app) .friend-item:hover{background:#35e0e80f}:is(#popupHolder,#app) .friend-item.selected{background:var(--kute-cyan-soft);border-left-color:var(--kute-cyan)}:is(#popupHolder,#app) .friend-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .friend-unread{background:var(--kute-pink);color:#fff}:is(#popupHolder,#app) .friend-list-search{background:var(--kute-raised);border-top:1px solid var(--kute-line)}:is(#popupHolder,#app) .conversation-header,:is(#popupHolder,#app) .conversation-compose{background:var(--kute-panel);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .conversation-load-earlier{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-day-divider:before,:is(#popupHolder,#app) .conversation-day-divider:after{background:var(--kute-line)}:is(#popupHolder,#app) .bubble-row.sent .bubble{background:var(--kute-cyan)}:is(#popupHolder,#app) .bubble-row.sent .bubble,:is(#popupHolder,#app) .bubble-row.sent .bubble-time,:is(#popupHolder,#app) .bubble-row.sent .bubble-status-ok{color:var(--kute-bg)}:is(#popupHolder,#app) .bubble-row.received .bubble{background:var(--kute-raised)}#app .profile-detail-root{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}#app .profile-detail-header-bar{background:var(--kute-panel);border-bottom-color:var(--kute-line)}#app .profile-detail-header-icon,#app .profile-detail-section-header,#app .profile-detail-sales-header{color:var(--kute-cyan)}#app .profile-detail-back,#app .profile-detail-action,#app .profile-detail-range-btn{background:var(--kute-raised);border-color:var(--kute-line)}#app .profile-detail-back:hover,#app .profile-detail-action:hover:not(:disabled){background:#1d2c32}#app .profile-detail-action.active,#app .profile-detail-action.active i{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong);color:var(--kute-cyan)}#app .profile-detail-range-btn.active{background:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}#app .profile-detail-identity,#app .profile-detail-sales-panel,#app .profile-detail-badges-panel,#app .profile-detail-creations-panel{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-avatar{background:var(--kute-raised);border-color:var(--kute-line-strong)}#app .profile-detail-online-dot{border-color:var(--kute-panel)}#app .profile-detail-follow-box,#app .profile-detail-title-item,#app .profile-detail-badge-item{background:var(--kute-raised)}#app .profile-detail-follow-box:hover{background:#1d2c32;border-color:var(--kute-line-strong)}#app .profile-detail-stat,#app .profile-detail-class,#app .profile-detail-raid-row,#app .profile-detail-listing-card,#app .profile-detail-creation-card{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-listing-card:hover,#app .profile-detail-creation-card:hover{background:var(--kute-raised)}#app .profile-detail-level-badge,#app .profile-detail-xp-fill{background:var(--kute-cyan)}#app .profile-detail-level-badge{color:var(--kute-bg)}#app .profile-detail-xp-bar{background:var(--kute-raised)} -`});var ti={};A(ti,{default:()=>Ib});var Pb,ei,Ib,oi=w(()=>{"use strict";F();Hu();Fu();Pb=Ou+Du,ei=class{constructor(){this.sheet=null,d.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Pb)}},Ib=new ei});var li={};A(li,{setFrameEnd:()=>Tn,takeFrameWorkMs:()=>ii});function ii(){if(ns.length<10)return 0;let s=ns.sort((t,o)=>t-o);ns=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Ob(s){return function(e){e!==qu&&(qu=e,Gu++>0&&(Wu=performance.now(),Vu.port2.postMessage(0))),s(e)}}function Fb(s,e){Po<0&&(Po=e),rs++;let t=e-Po;if(ts*_b?is+1:0,is>=2&&d.frameLimiter!=="viz"&&(as=!0),rs=0,Po=e}function Yu(){!as||!Mn?.hardFlip||(as=!1,rs=0,is=0,Po=-1)}function Db(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()e?En=t+e:En+=e}function qb(s){Cn=s,ai?.(s)}function Xu(s){if(ai!==null&&!ri)return Kb(s);let e=Mn===null?0:Mn.gameFpsLimit;if(!(e>0)){si=0;let o=++Hb%Bb;return o>=zb?$n(s):(o===0&&(Gu=0),$n(Ob(s)))}let t=Number(e);return $n(function(o){t!==si&&(si=t,as=!1,rs=0,is=0,Po=-1),o!==Ku&&(Ku=o,as?Db(t):Fb(t,o)),s(o)})}function Kb(s){ri=!0;let e=Xu(t=>{Cn=t,s(t)});return ri=!1,ju===Cn&&Uu(ni),ju=Cn,ni=$n(qb),e}function Tn(s){ai=s,s===null&&Uu(ni)}var $n,Uu,Nb,_b,Mn,Bb,zb,Hb,Gu,qu,Wu,ns,Vu,En,Ku,si,as,Po,rs,is,ai,ni,Cn,ju,ri,ls=w(()=>{"use strict";F();$n=window.requestAnimationFrame,Uu=window.cancelAnimationFrame,Nb=2e3,_b=1.15,Mn=null,Bb=256,zb=12,Hb=0,Gu=0,qu=-1,Wu=0,ns=[],Vu=new MessageChannel;Vu.port1.onmessage=()=>{ns.length<512&&ns.push(performance.now()-Wu)};Ne.then(()=>{Mn=d.settings.data});En=0,Ku=-1,si=0,as=!1,Po=-1,rs=0,is=0;document.addEventListener("pointerlockchange",Yu);window.addEventListener("resize",Yu);ai=null,ni=0,Cn=-1,ju=-2,ri=!1;window.requestAnimationFrame=Xu});var An=we((Xx,jb)=>{jb.exports="data:image/webp;base64,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"});var di={};A(di,{default:()=>Ub});var Ju,ci,Ub,ui=w(()=>{"use strict";Ju=ue(An(),1),ci=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` +void main() { outColor = texture(uLabel, vUv); }`;Vr=new Float32Array(4096),Pu=0});var Nu={};A(Nu,{FrameRecorder:()=>no,InputProbe:()=>ss,TaskProbe:()=>ro});var no,ss,ro,xn=w(()=>{"use strict";no=class{constructor(e=12e4){this.samples=new Float32Array(e),this.count=0,this.stored=0,this.last=-1,this.first=-1}frame(e){this.last>=0&&(this.count++,this.storedt[Math.min(t.length-1,Math.floor(h*t.length))],r=n(.5),i=Math.max(4*r,e),a=0,l=0,c=0;for(let h of t)a+=h,h>i&&(l++,c+=h-r);let u=Math.max(.001,a/1e3);return{frames:this.count,seconds:o,fps:this.count/o,meanMs:a/this.stored,p50:r,p95:n(.95),p99:n(.99),p999:n(.999),maxMs:t[t.length-1],hitches:l,hitchesPerSec:l/u,stallMs:c/u}}},ss=class{constructor(){this.waits=new Float32Array(16384),this.events=0,this.packets=0,this.onMove=e=>{if(document.pointerLockElement===null)return;let t=e.getCoalescedEvents(),o=t.length>0?t[0].timeStamp:e.timeStamp;this.waits[this.events%this.waits.length]=performance.now()-o,this.events++,this.packets+=Math.max(1,t.length)}}start(){this.events=0,this.packets=0,window.addEventListener("pointermove",this.onMove,{capture:!0,passive:!0})}stop(){window.removeEventListener("pointermove",this.onMove,!0);let e=Math.min(this.events,this.waits.length),t=this.waits.slice(0,e).sort();return{events:this.events,packets:this.packets,p99:e>0?t[Math.min(e-1,Math.floor(e*.99))]:null,max:e>0?t[e-1]:null}}},ro=class{constructor(){this.delays=[],this.timer=0,this.sent=0,this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{this.delays.push(performance.now()-e.data)}}start(){this.delays=[],this.sent=0;let e=performance.now()+10;this.timer=setInterval(()=>{this.sent++;let t=performance.now();this.channel.port2.postMessage(Math.min(t,e)),e=t+10},10)}stop(){clearInterval(this.timer);let e=[...this.delays].sort((t,o)=>t-o);return{sent:this.sent,ran:e.length,p99:e.length?e[Math.min(e.length-1,Math.floor(e.length*.99))]:null,max:e.length?e[e.length-1]:null}}}});var Hu={};function Ze(s,e){let t=Number(Sn.get(s));return Sn.has(s)&&Number.isFinite(t)?t:e}function Qr(s){window.chrome.webview.postMessage(`bench-finish ${JSON.stringify(s)}`)}function Ib(){let s=document.createElement("canvas");s.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;display:block",document.body.append(s);let e=_u>0?["Kute is testing this PC",`client test ${Ab} of ${_u}`,"this takes a moment, nothing to do for you"]:[],t=Yr(s,Bu,e);t.resize(window.innerWidth*devicePixelRatio,window.innerHeight*devicePixelRatio);let o=Zr.length>0?Array.from({length:Math.max(1,Lb)},()=>Zr).flat():[null],n=[],r=0,i=performance.now(),a=null,l=new ro,c=Ze("cap",0),u=i,h=0,p=!1;s.addEventListener("webglcontextlost",()=>{p=!0});let f=g=>{i=g,a=null;let b=o[r];b!==null&&(c=Pb?b:0,u=g,window.chrome.webview.postMessage(`bench-cap ${b}`))};f(i);let m=g=>{if(c>0){for(;performance.now()0&&t.lost()){h===0&&Qr({ok:!1,error:"webgl context lost"}),t.destroy();return}if(t.render(g),h>0){b-h<$b?requestAnimationFrame(m):t.destroy();return}let v=r===0?Cb:Rb;a===null&&b-i>=v&&(a=new no,r===0&&window.chrome.webview.postMessage("bench-sample-start"),l.start()),a!==null&&(a.frame(b),b-i>=v+Mb&&(n.push({cap:o[r]??c,stats:a.stats(Tb),otherTasks:l.stop()}),r++,r0?n:void 0,load:Bu,width:s.width,height:s.height,checksum:Xr()})))),requestAnimationFrame(m)};requestAnimationFrame(m)}function zu(){try{Ib()}catch(s){Qr({ok:!1,error:String(s)})}}var Sn,$b,Cb,Mb,Tb,Ab,_u,Zr,Lb,Rb,Pb,Bu,ei=w(()=>{"use strict";Jr();xn();Sn=new URLSearchParams(location.search);$b=400,Cb=Ze("settle",700),Mb=Ze("ms",2e3),Tb=1e3/Ze("hz",60),Ab=Ze("step",0),_u=Ze("steps",0),Zr=(Sn.get("caps")??"").split(".").filter(s=>s!=="").map(Number).filter(Number.isFinite),Lb=Ze("rounds",1),Rb=Ze("capsettle",700),Pb=Sn.get("selfcap")==="1",Bu={draws:Ze("draws",so.draws),meshSegments:so.meshSegments,overdraw:Ze("overdraw",so.overdraw),cpuIterations:Ze("cpu",so.cpuIterations)};document.body?zu():document.addEventListener("DOMContentLoaded",zu,{once:!0})});var Fu,Ou=w(()=>{Fu=`#guidePopup{background-color:#182429}.guideHeader,.guideSubH{border-bottom-color:#35e0e81f}.guStepS:not(:last-child){border-bottom-color:#35e0e81f}a,a:active,a:visited{color:#35e0e8}#purchaseSelector{background-color:#111b1f}.roundScrV{border-bottom-color:#35e0e847}#reloadMsg,#interactMsg,#mobileUI #interactMsg{border-color:#35e0e847}#instructionsUpdate{background-color:#151f24}.instructionsHeader,.instructionsTabs{background-color:#070c0f}.endTablePfp{border-color:#35e0e847}th,tr{border-bottom-color:#35e0e81f}.followBut{background-color:#35e0e8;color:#0b1215}.lds-ring div{border-color:#35e0e847;border-color:rgba(53,224,232,.28) transparent transparent transparent}#spinItemName{background-image:linear-gradient(to right,#0000,#070c0fb3 40%,#070c0fe6 60%,#0000)}.spinPrevIcon,.spinSprayDiv,#spinPromo,.compClassPItm,.compPLstIcn,.compSwpTmB,.compMenBtnS,.compPlWpIcn{border-color:#35e0e847}.hostHeader{background-color:#070c0f}#bigMFeatHBtn{border-color:#35e0e847}#bigMFeatHBtn:hover,#bigMFeatHBtn:active,#bigMFeatPBtn:hover,#bigMFeatPBtn:active{border-color:#35e0e847!important}.biMFeatInfB{border-color:#35e0e847}.biMFeatInfB:hover{border-color:#35e0e847!important}.mapLICat{background-color:#151f24}.hostPresetBtn,#hostMenuBtn{background-color:#35e0e8;color:#0b1215}.serverHostOp{border-color:#35e0e81f}.hostCBtn{border-color:#35e0e847}#hostActionH{border-top-color:#35e0e847}#stickyHostH{background-color:#070c0f}.loadoutBtn{background-color:#35e0e8;color:#0b1215}#loadoutToolbar{background-color:#111b1f;border-bottom-color:#35e0e81f}.loadoutTab{background-color:#182429}.loadoutTab:hover{background-color:#1d2c32}.loadoutTabSel{background-color:#24343a}#charPreviewSlot{border-right-color:#35e0e81f}#menuWindow.eterno .bigMenTabs{background-color:#111b1fad}.quickJoin{border-color:#35e0e8}.settText{color:#35e0e8}.contactsHeader,.setHed{border-color:#35e0e81f;background-color:#1d2c32}.setHed:hover{background-color:#182429}.setHedS{border-color:#35e0e81f;background-color:#1d2c32}.settName,.settNameSmall{border-bottom-color:#35e0e81f}input:checked+.sliderSml{background-color:#35e0e8;color:#0b1215}input:focus+.sliderSml{box-shadow:0 0 1px #35e0e8}input:checked+.slider{background-color:#35e0e8;color:#0b1215}input:focus+.slider{box-shadow:0 0 1px #35e0e8}.sliderVal{border-color:#35e0e847!important}#modDropper{border-color:#35e0e81f}#profilePicM{background-color:#24343a}.mailFrom{color:#35e0e8;border-bottom-color:#35e0e847}.followFrom{color:#35e0e8}#mailCount{border-color:#35e0e81f}#policePopC{background-color:#151f24}.classXPBar{background-color:#111b1f}.clsXPBarC{background-color:#35e0e8;color:#0b1215}.skinPaintSwatch{border-color:#35e0e847}.sb1:before{border-left-color:#35e0e847;border-top-color:#35e0e847}.skinColorItem,.matchVote{border-color:#35e0e81f}.hostMap,#mobileJoystick .back,#mobileJoystick .front{border-color:#35e0e847}#chargeModalCard{background-color:#111b1f}.chargeModalBtn{background-color:#35e0e8;color:#0b1215}.settingsHeader,.serverHeader{background-color:#151f24}.setSugBox2,.setSugBox2:hover,.setSugBox,.setSugBox:hover{border-color:#35e0e847}.settingsBtn{background-color:#35e0e8;color:#0b1215}.settingTab:hover{border-bottom-color:#35e0e81f}.redVouchBtn,.searchBtn{background-color:#35e0e8;color:#0b1215}.challMapCrd,.challHeadrI{border-color:#35e0e847}.chalCard{background-color:#151f24}.chalRews{border-left-color:#35e0e847}.chalRewSkn{border-color:#35e0e847}.changeText{border-bottom-color:#35e0e81f}.crftRcpeCrd{background-color:#070c0f}.craftRcIcn,.crftRecSml,.crftItmReq{border-color:#35e0e847}.crftTim{background-color:#151f24}.hostToggle{background-color:#35e0e8;color:#0b1215}.titleRowLocked{border-bottom-color:#35e0e81f}input:checked+.optCheck{background-color:#35e0e8;color:#0b1215}.subPassChg,.subPassChg:hover,.updDisN,.updDisN:hover,.lnkTw:hover{background-color:#35e0e8;color:#0b1215}#popupContent{background-color:#151f24}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop{border-color:#35e0e847}#bundlePop,#premiumPop{background-color:#151f24}.metaPop{border-color:#35e0e847}.confPremiumPop,.vouchPop{background-color:#151f24}.polConfPop{border-color:#35e0e847}.rankedPop,.promoPop{background-color:#151f24}.tListN.inv{background-color:#35e0e8;color:#0b1215}.tItemHolder,.dItemHolder,.tCurrencyItem{border-color:#35e0e847}.bigMenTab:hover,.bigMenTabA,.bigMenTabA:hover{border-bottom-color:#35e0e847}.dark .menuTabNew:hover{border-bottom-color:#35e0e81f!important}.dark .tabANew,.dark .tabANew:hover{border-bottom-color:#35e0e847!important}input:checked+.slider2{background-color:#35e0e8;color:#0b1215}input:focus+.slider2{box-shadow:0 0 1px #35e0e8}.tabHeader:hover{border-bottom-color:#35e0e847}#kdLayout,.crStat{border-color:#35e0e81f}.keyIcon{border-left-color:#35e0e81f;border-right-color:#35e0e81f;border-top-color:#35e0e847;border-bottom-color:#35e0e81f}.pfpPop,.dropsPop{background-color:#151f24}.accountCreatePop{background-color:#151f24;border-color:#35e0e847}#pubPfp{background-color:#35e0e8;color:#0b1215}#tradeChatInput,.tradeChatItem{background-color:#111b1f}#partnerProgB{background-color:#35e0e8;color:#0b1215}#partnrUpBtn{background-color:#35e0e8;border-bottom-color:#35e0e8;color:#0b1215}#partnrUpBtn:hover,#partnrUpBtn:active{border-bottom-color:#35e0e8}#partnrUpBtnD,#partnrUpBtnD:hover,#partnrUpBtnD:active{border-bottom-color:#35e0e847}.editLink{color:#35e0e8}.speedRunItem{border-bottom-color:#35e0e81f}#speedRunInfo{border-bottom-color:#35e0e847}#shopMainSellB{border-color:#35e0e847}.custBack:hover{background-color:#24343a85}#itemSearchH{background-color:#151f24}.skinReward{border-color:#35e0e847}.selectedItem{border-color:#35e0e847!important}.custContainer{border-color:#35e0e847}.custSubContainer{border-left-color:#35e0e847;border-bottom-color:#35e0e847}#findGameBtn{background-color:#35e0e8;color:#0b1215}#clanDeclineAll:hover,.logVersionHed,.viewAllUpdates,.viewAllUpdates:hover{border-color:#35e0e847}.followBack{border-color:#35e0e8!important}.followBack:hover{border-color:#35e0e847!important}.joinBtn{background-color:#35e0e8;color:#0b1215}.imagePop,.badgePop,.imageNewPop{background-color:#151f24}.openCollection{background-color:#35e0e8!important;color:#0b1215}.imageListHeader,.imageListFooter{background-color:#070c0f}.importPop,#bindsHeader,.disconnectPop{background-color:#151f24}.tooltip{background-color:#24343a}.tooltip2{background-color:#070c0f}.imageTab:hover{border-bottom-color:#35e0e81f}.tabAIMG,.tabAIMG:hover{border-bottom-color:#35e0e847}input:checked+.advancedSlider{background-color:#35e0e8;color:#0b1215}input:focus+.advancedSlider{box-shadow:0 0 1px #35e0e8}.quickPlayMap{border-color:#35e0e847}#custStreakSelH{border-top-color:#35e0e81f}.winSelH{background-color:#24343a}#spinHistoryBtn{border-color:#35e0e847}#spinHistoryBtn:hover{border-color:#35e0e847!important}#spinMultiToggleBtn{background-color:#35e0e8!important;box-shadow:inset 0 -7px #35e0e8!important;border-color:#35e0e847;color:#0b1215}#spinMultiToggleBtn:hover{border-color:#35e0e847!important}#spinHistoryPop{background-color:#151f24}.spinHistoryHeader{background-color:#070c0f}.clsStatXPBar{background-color:#0b1215}.eventPop{background-color:#151f24}.eventPopHeader,.bSliderBtn,.bSliderBtn:hover,.bSliderBtn:active{border-color:#35e0e847}.bSliderBtn.disabled{border-color:#35e0e81f}.bpLevelNum.completed{background-color:#24343a}.bpLevelNum.active{border-color:#35e0e847}.bpCard,.bpCard.free{border-color:#35e0e81f}.bpCard.free.completed,.bpCard.free.completed.claimed{border-color:#35e0e847}.bpCardSlot{border-color:#35e0e81f}.bpSliderArrow{border-right-color:#35e0e847}.bpInfoBalloon{background-color:#151f24}.bpInfoBalloon:after{background-color:#151f24}.bpClaimB{border-color:#35e0e847;background-color:#151f24}.bp-unlock-header{background-color:#151f24}.bp-generic-pop,.bp-purchase-pop{background-color:#151f24;border-color:#35e0e847}.clanSubmitBtn,.clanSubmitBtn:hover{background-color:#35e0e8;color:#0b1215}.spinErrorPop{background-color:#151f24}.popHeader,.dropsPopHeader{background-color:#070c0f}.charmErrorPop,.spinHistoryStatsPop{background-color:#151f24}#kpdCalls>* td,#kpdCalls>* th{border-bottom-color:#35e0e81f}.loadingPop,.autoLoadPop,.editMapPop,.responsePop{background-color:#151f24}.infoPop,.contPop{background-color:#1d2c32}.ticketPop{background-color:#151f24}.bundleCrd{background-color:#070c0f}.bundleItmReq,.bundleSliderBtn,.bundleSliderBtn:hover,.bundleSliderBtn:active,.bundleSliderBtn.disabled{border-color:#35e0e847}.bundleSliderArrow{border-right-color:#35e0e847}.dxp-pop{background-color:#151f24;border-color:#35e0e847}.dropsSliderBtn,.dropsSliderBtn:hover,.dropsSliderBtn:active,.dropsSliderBtn.disabled{border-color:#35e0e847}.dropsSliderArrow{border-right-color:#35e0e847}.rewItemHolder{border-color:#35e0e847}.abTestsPop{background-color:#151f24}.registerGiftPop{background-color:#151f24;border-color:#35e0e847}.rankedQueueModal{background-color:#151f24;border-color:#35e0e8;box-shadow:0 0 160px #35e0e875}.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.socialModal,.moreKrunkerPopup{background-color:#151f24}.io-button{background-color:#151f24;border-color:#35e0e81f}.io-button:hover{background-color:#182429}.io-button--accept-secondary{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.io-input-field{border-color:#35e0e81f}.io-input-field:focus{border-color:#35e0e8}.io-popup-container{background-color:#111b1f}.io-section-header:after{background-color:#35e0e8;color:#0b1215}.io-card{border-color:#35e0e81f}.io-separator{border-bottom-color:#35e0e81f}.io-separator span{background-color:#111b1f}.strike-timer__info-holder,.strike-timer__timer-bg{background-color:#151f24}.bundle-popup-lmt-offer{background-color:#24343a}.ltm-offer-container__arrow{border-right-color:#35e0e847}.file-drop-target.svelte-145grbc{border-color:#35e0e81f}.file-drop-target.svelte-145grbc:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.file-drop-target.hovered.svelte-145grbc{border-color:#35e0e847}.file-drop-target.drag-over.svelte-145grbc{border-color:#35e0e8;background-color:#35e0e81a}.code-input.svelte-1xwmszg{border-color:#35e0e81f}.code-input.svelte-1xwmszg:focus{border-color:#35e0e8}.qr-code-image.svelte-1xwmszg,.slider-input.svelte-1xwmszg{border-color:#35e0e81f}.slider-input.svelte-1xwmszg::-webkit-slider-thumb{background-image:linear-gradient(145deg,#35e0e8,#3a7dce);border-color:#35e0e847}.slider-input.svelte-1xwmszg::-webkit-slider-runnable-track{background-image:linear-gradient(to right,#245d99,#35e0e8)}.slider-display.svelte-1xwmszg{color:#35e0e8}.info-message.svelte-1xwmszg{border-color:#35e0e8}.password-requirements.svelte-1xwmszg,.motd-input.svelte-15d5v89{border-color:#35e0e81f}.motd-input.svelte-15d5v89:focus{border-color:#35e0e81f}.motd-display.svelte-15d5v89{border-left-color:#35e0e81f}.item-showcase-container.svelte-2tp35a{background-color:#151f24bf}.more-info-btn.svelte-2tp35a,.more-info-btn.svelte-2tp35a:hover,.share-btn.svelte-2tp35a{border-color:#35e0e81f}.md-root.svelte-1kkpw01{background-color:#151f24}.md-header.svelte-1kkpw01{border-bottom-color:#35e0e81f;background-color:#111b1f}.md-back.svelte-1kkpw01{border-color:#35e0e81f}.md-header-icon.svelte-1kkpw01{color:#35e0e8}.md-thumb.svelte-1kkpw01{background-color:#0b1215}.md-info-bar.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-creator.svelte-1kkpw01{color:#35e0e8}.md-host-btn.svelte-1kkpw01,.md-icon-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-tabs.svelte-1kkpw01{border-bottom-color:#35e0e81f}.md-tab.active.svelte-1kkpw01{color:#35e0e8;border-bottom-color:#35e0e8}.md-lb-name.svelte-1kkpw01{color:#35e0e8}.md-load-more.svelte-1kkpw01{border-color:#35e0e81f}.md-data-section-title.svelte-1kkpw01{color:#35e0e8;border-top-color:#35e0e81f}.md-data-table.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-table-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-data-header.svelte-1kkpw01{background-color:#111b1f;border-color:#35e0e81f}.md-data-search-btn.svelte-1kkpw01{border-color:#35e0e81f}.md-data-input.svelte-1kkpw01{background-color:#0b1215;border-color:#35e0e81f}.md-data-input.svelte-1kkpw01:focus{border-color:#35e0e8}.md-ver-row.svelte-1kkpw01{border-top-color:#35e0e81f}.md-ver-btn.svelte-1kkpw01{border-color:#35e0e81f}.mod-root.svelte-1v2j2f2{background-color:#151f24}.mod-header.svelte-1v2j2f2{border-bottom-color:#35e0e81f;background-color:#111b1f}.mod-back.svelte-1v2j2f2{border-color:#35e0e81f}.mod-header-icon.svelte-1v2j2f2{color:#35e0e8}.mod-thumb.svelte-1v2j2f2{background-color:#0b1215}.mod-info-bar.svelte-1v2j2f2{border-bottom-color:#35e0e81f}.mod-creator.svelte-1v2j2f2{color:#35e0e8}.mod-use-btn.svelte-1v2j2f2,.mod-use-btn.svelte-1v2j2f2:hover{background-color:#35e0e8;color:#0b1215}.mod-icon-btn.svelte-1v2j2f2{border-color:#35e0e81f}.style-container.svelte-143xo7r{background-color:#151f24bf}.slider-arrow.svelte-143xo7r{border-color:#35e0e81f}.slider-arrow.left.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-right-color:#35e0e847}.slider-arrow.right.svelte-143xo7r .slider-arrow-icon.svelte-143xo7r{border-left-color:#35e0e847}.swatch.svelte-143xo7r,.btn.svelte-143xo7r{border-color:#35e0e81f}.market-card.svelte-r5taai{background-color:#070c0fcc}.trade-label.inv.svelte-1lqen9w{background-color:#35e0e8;color:#0b1215}.trade-inv-item.svelte-1lqen9w{border-color:#35e0e847}.trade-search.svelte-1lqen9w{border-color:#35e0e81f}.trade-search.svelte-1lqen9w:focus{border-color:#35e0e81f}.gift-root.svelte-g5j1wf{background-color:#151f24}.gift-header.svelte-g5j1wf{border-bottom-color:#35e0e81f;background-color:#111b1f}.gift-back.svelte-g5j1wf{border-color:#35e0e81f}.gift-header-icon.svelte-g5j1wf{color:#35e0e8}.gift-input.svelte-g5j1wf{background-color:#0b1215;border-color:#35e0e81f}.gift-input.svelte-g5j1wf:focus{border-color:#35e0e8}.gift-send.svelte-g5j1wf{background-color:#35e0e8;color:#0b1215}.gift-done.svelte-g5j1wf{border-color:#35e0e81f}.buy-button.svelte-r01l8m:disabled{background-color:#24343a}.buy-button.svelte-r01l8m:disabled:hover{background-color:#24343a}.shop-header.svelte-1gtpoav{border-bottom-color:#35e0e81f}.rp-balance.svelte-1gtpoav,.guest-earned-collect__reward-items.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo,.guest-earned-collect__register-btn.svelte-1hb83uo:hover{border-color:#35e0e81f}.signup-rewards-list.svelte-1v6b0qm{background-color:#070c0fb3}.signup-rewards-register-button.svelte-1v6b0qm{border-color:#35e0e847!important}.product-row.svelte-14104bb{border-color:#35e0e81f}.product-row.svelte-14104bb:hover{border-color:#35e0e847}.gift-button.svelte-14104bb,.for-you-text.svelte-14104bb,.currency-shop-item.svelte-14104bb,.currency-shop-item.svelte-14104bb:hover{border-color:#35e0e81f}.verification-banner.svelte-165vbjp{background-color:#151f24cc}.spinner.svelte-165vbjp{border-color:#35e0e81f;border-top-color:#35e0e847}.section-title.svelte-e65miw .material-icons.svelte-e65miw{color:#35e0e8}.toggle-switch.svelte-e65miw input:checked+.slider.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.texture-upload-item.svelte-e65miw,.texture-image.svelte-e65miw{border-color:#35e0e81f}.btn-generate.svelte-e65miw{background-color:#35e0e8;color:#0b1215}.btn-generate.svelte-e65miw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.sgNum.svelte-1i1uhp7,.sgHex.svelte-1i1uhp7{border-color:#35e0e81f}.sgNum.svelte-1i1uhp7:focus,.sgHex.svelte-1i1uhp7:focus{border-color:#35e0e8}.sgSlider.svelte-1i1uhp7::-webkit-slider-thumb{background-color:#35e0e8;color:#0b1215}.sgSlider.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgColorInput.svelte-1i1uhp7{border-color:#35e0e81f}.sgColorInput.svelte-1i1uhp7:focus-visible{outline-color:#35e0e8}.sgPalette.svelte-sxvv3c{background-color:#0b1215fa;border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c{border-color:#35e0e81f}.sgPaletteSearch.svelte-sxvv3c:focus{border-color:#35e0e8}.sgPaletteItem.active.svelte-sxvv3c,.sgPaletteItem.svelte-sxvv3c:focus-visible{background-color:#35e0e840}.sgEditor.svelte-upgo13{border-color:#35e0e81f}.sgToolbar.svelte-upgo13{border-bottom-color:#35e0e81f}.sgBtn.svelte-upgo13{border-color:#35e0e81f}.sgBtn.svelte-upgo13:focus-visible,.sgCanvas.svelte-upgo13:focus-visible,.sgErrorItem.svelte-upgo13:focus-visible,.sgMenuItem.svelte-upgo13:focus-visible{outline-color:#35e0e8}.sgBtnPrimary.svelte-upgo13{background-color:#35e0e840;border-color:#35e0e899;color:#35e0e8}.sgBtnPrimary.svelte-upgo13:hover:not(:disabled){background-color:#35e0e866}.sgMenu.svelte-upgo13{background-color:#0b1215fa;border-color:#35e0e81f}.sgMenuItem.svelte-upgo13:hover{background-color:#35e0e840}.sgCanvas.svelte-upgo13{background-color:#070c0fe6}.sgOverlay.svelte-upgo13{background-color:#070c0ffa;border-color:#35e0e81f}.sgIoText.svelte-upgo13{border-color:#35e0e81f}.sgIoText.svelte-upgo13:focus{border-color:#35e0e8}.sgFooter.svelte-upgo13{border-top-color:#35e0e81f}.io-action-bar-button.svelte-103lu6x{background-color:#35e0e8;color:#0b1215}.search-input.svelte-103lu6x{border-color:#35e0e81f}.search-input.svelte-103lu6x:focus{border-color:#35e0e8}.io-action-bar-button.svelte-103lu6x:hover,.action-btn.test-btn.svelte-103lu6x,.action-btn.test-btn.svelte-103lu6x:hover{background-color:#35e0e8;color:#0b1215}.skin-manager-table.svelte-103lu6x .table thead th{background-color:#0b1215}.tab-navigation.svelte-103lu6x{border-bottom-color:#35e0e81f}.tab-button.active.svelte-103lu6x{color:#35e0e8;background-color:#35e0e81a}.tab-button.active.svelte-103lu6x:after{background-color:#35e0e8;color:#0b1215}.preview-control-btn.svelte-103lu6x{border-color:#35e0e81f}.preview-control-btn.active.svelte-103lu6x{background-color:#35e0e84d;border-color:#35e0e8}.paint-select.svelte-103lu6x{border-color:#35e0e81f}.paint-select.svelte-103lu6x option.svelte-103lu6x{background-color:#0b1215}.connection.svelte-1fenhdo{background-color:#182429}.consequences.svelte-18wpngg{border-color:#35e0e81f}.loading-spinner.svelte-190e6fj{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-190e6fj{background-color:#35e0e8;color:#0b1215}.benefits-card.svelte-190e6fj,.billing-info.svelte-190e6fj,.subscribe-btn.svelte-190e6fj{border-color:#35e0e81f}.subscribe-btn.svelte-190e6fj:hover{border-color:#35e0e847}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.disabled-card.svelte-190e6fj .subscribe-btn.svelte-190e6fj:hover,.disabled-indicator.svelte-190e6fj{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.subscribed-btn.svelte-190e6fj{border-color:#35e0e81f}.renew-btn.svelte-190e6fj{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);border-color:#35e0e81f;box-shadow:0 8px 24px #35e0e866,0 4px 8px #0000004d,inset 0 1px #ffffff4d}.renew-btn.svelte-190e6fj:hover{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 12px 32px #35e0e880,0 6px 12px #0006,inset 0 1px #fff6;border-color:#35e0e847}.cancel-container.svelte-190e6fj,.cancel-btn.svelte-190e6fj,.cancel-btn.svelte-190e6fj:hover{border-color:#35e0e81f}.wild-offer-notification.svelte-1gcqcwy{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.shop-btn.svelte-1gcqcwy,.shop-btn.svelte-1gcqcwy:hover,.player-bound-display.svelte-1nzacef,.player-bound-display.svelte-1nzacef:hover,.login-button.svelte-1nzacef,.login-button.svelte-1nzacef:hover{border-color:#35e0e81f}.data-table.svelte-69sryq thead.svelte-69sryq{background-color:#0b1215}.table-header.svelte-69sryq{color:#35e0e8}.table-header.sortable.svelte-69sryq:hover{background-color:#35e0e81a}.table-header.sortable.sort-asc.svelte-69sryq:after{border-bottom-color:#35e0e8}.table-header.sortable.sort-desc.svelte-69sryq:after{border-top-color:#35e0e8}.table-cell.svelte-69sryq{border-bottom-color:#35e0e81f}.qs-window.svelte-1o11rsf{background-color:#111b1f;border-color:#35e0e81f}.qs-item-preview.svelte-1o11rsf,.qs-values.svelte-1o11rsf,.qs-amount-select.svelte-1o11rsf{border-color:#35e0e81f}.qs-amount-select.svelte-1o11rsf:focus{border-color:#35e0e88c}.jy-filter-bar.svelte-1vqzycn{background-color:#111b1f;border-color:#35e0e81f}.jy-search-input.svelte-1vqzycn,.jy-sort-select.svelte-1vqzycn{background-color:#151f24;border-color:#35e0e81f}.sd-root.svelte-a9j4oe{background-color:#151f24}.sd-header.svelte-a9j4oe{border-bottom-color:#35e0e81f;background-color:#111b1f}.sd-back.svelte-a9j4oe{border-color:#35e0e81f}.sd-header-icon.svelte-a9j4oe{color:#35e0e8}.sd-del.svelte-a9j4oe{border-color:#35e0e81f}.sd-tabs.svelte-a9j4oe{border-bottom-color:#35e0e81f}.sd-tab.active.svelte-a9j4oe{color:#35e0e8;border-bottom-color:#35e0e8}.sd-row.svelte-a9j4oe{background-color:#111b1f;border-color:#35e0e81f}.sd-input.svelte-a9j4oe{background-color:#0b1215;border-color:#35e0e81f}.sd-input.svelte-a9j4oe:focus{border-color:#35e0e8}.sd-primary.svelte-a9j4oe{background-color:#35e0e8;color:#0b1215}.sd-mini.svelte-a9j4oe{border-color:#35e0e81f}.sd-kr.svelte-a9j4oe{background-color:#111b1f}.region-btn.svelte-1gdnqq5{border-color:#35e0e81f}.region-btn.active.svelte-1gdnqq5{background-color:#35e0e826;border-color:#35e0e880;color:#35e0e8}.season-select.svelte-1gdnqq5{border-color:#35e0e81f}.season-select.svelte-1gdnqq5 option.svelte-1gdnqq5{background-color:#0b1215}th.svelte-1gdnqq5{color:#35e0e8}td.svelte-1gdnqq5{border-bottom-color:#35e0e81f}.season-select.svelte-81ueoe{border-color:#35e0e81f}.season-select.svelte-81ueoe option.svelte-81ueoe{background-color:#0b1215}.kc-title.svelte-1xp8pv1{color:#35e0e8}.back-btn.svelte-1xp8pv1{border-color:#35e0e84d}.back-btn.svelte-1xp8pv1:hover{background-color:#35e0e81f;color:#35e0e8}.friend-list.svelte-e2g8p2{background-color:#111b1f;border-right-color:#35e0e81f}.friend-presence-dot.svelte-e2g8p2{border-color:#35e0e81f}.friend-presence-dot.offline.svelte-e2g8p2{background-color:#24343a}.friend-unread.svelte-e2g8p2{background-color:#35e0e8;color:#0b1215}.friend-list-search.svelte-e2g8p2{background-color:#111b1f;border-top-color:#35e0e81f}.conversation-root.svelte-128yn5i{background-color:#151f24}.conversation-header.svelte-128yn5i{border-bottom-color:#35e0e81f;background-color:#111b1f}.conversation-presence-dot.svelte-128yn5i{border-color:#35e0e81f}.conversation-presence-dot.offline.svelte-128yn5i{background-color:#24343a}.conversation-compose.svelte-128yn5i{border-top-color:#35e0e81f;background-color:#111b1f}.conversation-load-earlier.svelte-128yn5i{border-color:#35e0e81f}.conversation-input.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-input.svelte-128yn5i:focus{border-color:#35e0e8}.conversation-emoji-button.svelte-128yn5i{background-color:#0b1215;border-color:#35e0e81f}.conversation-emoji-button.svelte-128yn5i:hover:not(:disabled){background-color:#111b1f;color:#35e0e8}.conversation-send-button.svelte-128yn5i{background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.conversation-send-button.svelte-128yn5i:disabled{background-color:#1d2c32}.friends-root.svelte-u33r8v{background-color:#151f24}.friends-status-dot.svelte-u33r8v{background-color:#24343a}.player-card.svelte-dp3rf9{background-color:#0b1215cc;border-color:#35e0e81f}.player-card.svelte-dp3rf9:hover{background-color:#111b1fcc}.player-card.svelte-dp3rf9:focus-visible{outline-color:#35e0e847}.counterBadge.svelte-fgmdj8{background-color:#35e0e8;color:#0b1215}.territory-map-container.svelte-102279m{background-color:#111b1f;border-color:#35e0e81f}.territory-details-panel.svelte-102279m{border-color:#35e0e81f}.panel-header.svelte-102279m,.leaderboard-entry.svelte-102279m{border-bottom-color:#35e0e81f}.clickable-name.svelte-myp8tq:hover{color:var(--highlight-color, rgb(53, 224, 232))}.view-tab.svelte-myp8tq{border-color:#35e0e81f}.view-tab.active.svelte-myp8tq{background-color:#35e0e833;border-color:#35e0e866}.day-arrow.svelte-myp8tq,.day-input.svelte-myp8tq{border-color:#35e0e81f}.payouts-row.svelte-myp8tq,.payouts-row-header.svelte-myp8tq{border-bottom-color:#35e0e81f}.main-title.svelte-1sr7h97,.card-title.svelte-1sr7h97{color:#35e0e8}.map-badge.svelte-1sr7h97,.mode-badge.svelte-1sr7h97{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.section-title.svelte-1sr7h97{color:#35e0e8;border-left-color:#35e0e8}.rule-icon.svelte-1sr7h97,.tip-title.svelte-1sr7h97{color:#35e0e8}.filter-input.svelte-72bcy3{border-color:#35e0e84d}.filter-input.svelte-72bcy3:focus{border-color:#35e0e8}.post-card.svelte-72bcy3{border-color:#35e0e81f}.looking-for-label.svelte-72bcy3{color:#35e0e8}.req-badge.svelte-72bcy3{border-color:#35e0e81f}.player-clan.clickable-clan.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.tab-bar.svelte-7h12t9{border-bottom-color:#35e0e81f}.tab.active.svelte-7h12t9{border-bottom-color:var(--highlight-color, rgb(53, 224, 232))}.day-arrow.svelte-7h12t9,.day-input.svelte-7h12t9{border-color:#35e0e81f}.page-btn.svelte-7h12t9{background-color:#35e0e833;border-color:#35e0e866}.ct-row.svelte-7h12t9,.ct-header.svelte-7h12t9{border-bottom-color:#35e0e81f}.clickable-name.svelte-7h12t9:hover{color:var(--highlight-color, rgb(53, 224, 232))}.rank-display.svelte-19e82s0{border-color:#35e0e81f}.popup-box.svelte-6dkuug{background-color:#151f24}.moreKrunkerOption.svelte-19783yx{border-color:#35e0e847;background-color:#0b1215}.moreKrunkerOption.svelte-19783yx:hover{border-color:#35e0e847}.emoji-panel.svelte-13g6jqo{background-color:#151f24}.emoji-icon.svelte-13g6jqo{color:#35e0e8}.emoji-item.selected.svelte-13g6jqo,.emoji-item.svelte-13g6jqo:hover{border-color:#35e0e81f}.compose-window.svelte-qxxay9{background-color:#0b1215;border-color:#35e0e81f}.compose-input.svelte-qxxay9{border-color:#35e0e81f}.compose-input.svelte-qxxay9:focus{border-color:#35e0e899}.compose-input-num.svelte-qxxay9{border-color:#35e0e81f}.compose-btn-submit.svelte-qxxay9{background-color:#35e0e8;color:#0b1215}.compose-btn-submit.svelte-qxxay9:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.rewards-container.svelte-1sac6ik{border-color:#35e0e81f}.reward-card.flying.svelte-1sac6ik:after{border-color:#35e0e81f}.card-front.svelte-1sac6ik,.card-back.svelte-1sac6ik{background-color:#070c0fe6}.loading-spinner.svelte-172kpk5{border-color:#35e0e81f;border-top-color:#35e0e8}.socialsStickyFooter.svelte-1ley7u4{border-top-color:#35e0e81f}.pollBadge.svelte-1ley7u4,.pollVote.svelte-1ley7u4{background-color:#35e0e8;color:#0b1215}.eventLink.svelte-1ley7u4{color:#35e0e8;background-color:#35e0e81a}.eventLink.svelte-1ley7u4:hover{background-color:#35e0e833}.dm-emoji-panel.svelte-1ni3kfh{background-color:#151f24;border-color:#35e0e81f}.dm-emoji-header.svelte-1ni3kfh{border-bottom-color:#35e0e81f}.dm-emoji-header-icon.svelte-1ni3kfh{color:#35e0e8}.dm-emoji-thumb.svelte-1ni3kfh{background-color:#0b1215;border-color:#35e0e81f}.sub-tab-panel.svelte-lri212{border-color:#35e0e847}.bundle-card.svelte-lri212{background-color:#070c0f}.bundle-item-req.svelte-lri212{border-color:#35e0e847}.detail-window.svelte-h3kymj{background-color:#0b1215;border-color:#35e0e81f}.detail-head.svelte-h3kymj{border-bottom-color:#35e0e81f}.reply-input.svelte-h3kymj{border-color:#35e0e81f}.reply-input.svelte-h3kymj:focus{border-color:#35e0e880}.reply-btn.svelte-h3kymj{background-color:#35e0e8;color:#0b1215}.map-filter-select.svelte-c92dbh{border-color:#35e0e866}.map-filter-select.svelte-c92dbh:hover{border-color:#35e0e8}.map-filter-select.svelte-c92dbh:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-c92dbh{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-c92dbh{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-c92dbh:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-c92dbh{border-color:#35e0e866}.day-input.svelte-c92dbh:focus{border-color:#35e0e8}.no-participation-title.svelte-c92dbh{color:#35e0e8}.page-btn.svelte-c92dbh{background-color:#35e0e833;border-color:#35e0e866}.overlay-content.svelte-jxc66d{background-color:#070c0f;border-color:#35e0e81f}.streams-overlay.svelte-60shhe{border-color:#35e0e81f}.hide-button.svelte-60shhe{background-color:#182429}.hide-button.svelte-60shhe:hover{background-color:#1d2c32}.spinner.svelte-60shhe{border-color:#35e0e81f}.featured-section.svelte-60shhe{background-color:#070c0fe6}.stream-card.svelte-60shhe{background-color:#0b1215cc;border-color:#35e0e81f}.thumbnail.svelte-60shhe{background-color:#0b1215}.thumbnail.svelte-60shhe:before{background-color:#0b1215}.tutorialSidebar.svelte-los391{background-image:linear-gradient(180deg,#111b1ff2,#0b1215f2)}.tutorialSidebar.svelte-los391:before{background-image:linear-gradient(180deg,rgba(17,27,31,.95) 0%,transparent 100%)}.tutorialSidebar.svelte-los391:after{background-image:linear-gradient(0deg,rgba(11,18,21,.95) 0%,transparent 100%)}.tutorialNavItem.svelte-los391{border-bottom-color:#35e0e81f}.matchmakingBarImage.svelte-los391,.inviteFriendsURLImage.svelte-los391,.spinsImage.svelte-los391,.matchmakingBarQuickMatchImage.svelte-los391,.hostFindGameImage.svelte-los391,.hostGameSetupImage.svelte-los391,.challengesImage.svelte-los391,.rankedImage.svelte-los391,.clanCreateImage.svelte-los391,.clanManageImage.svelte-los391,.tradingImage.svelte-los391,.challengeModeImage.svelte-los391,.challengeModeDifferenceImage.svelte-los391{border-color:#35e0e81f}.comment-text.svelte-7miv1g a{color:#35e0e8}.guide-section.svelte-4log2q{background-color:#070c0f}.guide-section-title.svelte-4log2q .material-icons.svelte-4log2q{color:#35e0e8}.guide-key.svelte-4log2q{background-color:#111b1f;border-color:#35e0e81f}.guide-rarity.dark.svelte-4log2q{border-color:#35e0e81f}.match-details.svelte-1irqx9a{border-top-color:#35e0e81f}.table-header.svelte-1irqx9a,.table-cell.svelte-1irqx9a{border-bottom-color:#35e0e81f}.page-btn.svelte-1irqx9a{border-color:#35e0e81f}.page-btn.svelte-1irqx9a:hover:not([disabled]){border-color:#35e0e81f}.currency-reward.svelte-1yk8fym,.gift-button.svelte-rew7ag{border-color:#35e0e81f}.modal-content.svelte-1pf0608{background-color:#111b1f;border-color:#35e0e81f}.price-input.svelte-1pf0608,.fee-breakdown.svelte-1pf0608{border-color:#35e0e81f}.season-banner.svelte-17kea4i{background-color:#35e0e8;color:#0b1215}.challenges-link-icon.svelte-17kea4i,.section-title.svelte-1x46pbz .material-icons.svelte-1x46pbz{color:#35e0e8}.param-chip.svelte-1x46pbz{border-color:#35e0e81f}.add-uniform-btn.svelte-1x46pbz{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.add-uniform-btn.svelte-1x46pbz:hover{background-color:#35e0e84d}.part-block.svelte-1x46pbz,.part-name-input.svelte-1x46pbz{border-color:#35e0e81f}.copy-defaults-btn.svelte-1x46pbz{background-color:#35e0e826;border-color:#35e0e84d;color:#35e0e8}.copy-defaults-btn.svelte-1x46pbz:hover:not(:disabled){background-color:#35e0e84d}.apply-btn.svelte-1x46pbz,.apply-btn.svelte-1x46pbz:hover{background-color:#35e0e8;color:#0b1215}.clear-btn.svelte-1x46pbz{border-color:#35e0e81f}.ph-xp-fill.svelte-da3zva{background-image:linear-gradient(to right,#ff6a0b,#35e0e8)}.survey-notification.svelte-1u0qxrf{background-image:linear-gradient(135deg,#000000f2,#070c0ffa)}.answer-btn.svelte-1u0qxrf{border-color:#35e0e81f}.icon-btn.list.svelte-hk8nq9{background-color:#35e0e8;color:#0b1215}.card-title.svelte-1k16b2z,.view-title.svelte-1k16b2z{color:#35e0e8}.trade-item.svelte-z9tzua,.trade-item-empty.svelte-z9tzua{border-color:#35e0e81f}.bm-card.svelte-dbcods{background-color:#070c0f}.bm-card-icon.svelte-dbcods{border-color:#35e0e847}.bm-locked-btn.svelte-dbcods{background-color:#111b1f}.modal-content.svelte-dbcods{background-color:#111b1f;border-color:#35e0e81f}.price-row.total.svelte-dbcods{border-top-color:#35e0e81f}.sma-dialog.svelte-1veg8cv{background-color:#151f24}.sma-header.svelte-1veg8cv{background-color:#111b1f;border-bottom-color:#35e0e81f}.sma-header-icon.svelte-1veg8cv{color:#35e0e8}.sma-rules.svelte-1veg8cv{background-color:#111b1f;border-color:#35e0e81f}.sma-input.svelte-1veg8cv{background-color:#0b1215;border-color:#35e0e81f}.sma-input.svelte-1veg8cv:focus{border-color:#35e0e8}.sma-map.svelte-1veg8cv{border-color:#35e0e81f}.sma-map.active.svelte-1veg8cv{border-color:#35e0e8;color:#35e0e8}.sma-footer.svelte-1veg8cv{border-top-color:#35e0e81f;background-color:#111b1f}.sma-secondary.svelte-1veg8cv{border-color:#35e0e81f}.sma-primary.svelte-1veg8cv{background-color:#35e0e8;color:#0b1215}.usernames-col.svelte-27udiy{border-color:#35e0e81f}.col-header.svelte-27udiy{border-bottom-color:#35e0e81f}.username-row.svelte-27udiy{border-color:#35e0e81f}.username-row.active.svelte-27udiy{border-color:#35e0e8}.leave-note.svelte-27udiy{border-left-color:#35e0e8}.username-active.svelte-27udiy{color:#35e0e8}#menuWindow.eterno .store-tabs.svelte-v85byk{background-color:#111b1fad}.store-tab.svelte-v85byk:hover,.store-tab-active.svelte-v85byk,.store-tab-active.svelte-v85byk:hover{border-bottom-color:#35e0e847}.register-notification.svelte-t1w66d{background-image:linear-gradient(135deg,#000000e6,#070c0ff2)}.table.svelte-12kndpz th.svelte-12kndpz,.table.svelte-12kndpz td.svelte-12kndpz{border-bottom-color:#35e0e81f}.pagination.svelte-12kndpz{border-top-color:#35e0e81f}.pagination-btn.svelte-12kndpz{background-color:#35e0e8;color:#0b1215}.pagination-btn.svelte-12kndpz:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.loading-spinner.svelte-1tteuk0{border-color:#35e0e81f}.load-more-btn.svelte-1tteuk0{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-1tteuk0:hover{background-color:#35e0e84d}.load-more-btn.svelte-1tteuk0:active{background-color:#35e0e866}.modal-content.svelte-1k428dj{background-color:#111b1f;border-color:#35e0e81f}.st-root.svelte-kqehnu{background-color:#151f24}.st-header.svelte-kqehnu{border-bottom-color:#35e0e81f;background-color:#111b1f}.st-back.svelte-kqehnu{border-color:#35e0e81f}.st-header-icon.svelte-kqehnu{color:#35e0e8}.st-row.svelte-kqehnu{background-color:#111b1f;border-color:#35e0e81f}.st-row.svelte-kqehnu:hover{background-color:#151f24}.st-invite.svelte-kqehnu:hover{background-color:#111b1f}.st-mini.svelte-kqehnu{border-color:#35e0e81f}.st-section-title.svelte-kqehnu{color:#35e0e8;border-top-color:#35e0e81f}.st-input.svelte-kqehnu{background-color:#0b1215;border-color:#35e0e81f}.st-input.svelte-kqehnu:focus{border-color:#35e0e8}.st-primary.svelte-kqehnu{background-color:#35e0e8;color:#0b1215}.card-title.svelte-raovk7,.view-title.svelte-raovk7{color:#35e0e8}.profile-detail-root.svelte-1hghrmf{background-color:#151f24}.profile-detail-header-bar.svelte-1hghrmf{border-bottom-color:#35e0e81f;background-color:#111b1f}.profile-detail-back.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-header-icon.svelte-1hghrmf{color:#35e0e8}.profile-detail-identity.svelte-1hghrmf,.profile-detail-avatar.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-online-dot.svelte-1hghrmf{background-color:#24343a;border-color:#35e0e81f}.profile-detail-creation-thumb.svelte-1hghrmf{background-color:#0b1215}.profile-detail-clan.svelte-1hghrmf{color:#35e0e8}.profile-detail-info-row.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-follow-box.svelte-1hghrmf{background-color:#111b1f}.profile-detail-follow-box.svelte-1hghrmf:hover{background-color:#151f24}.profile-detail-action.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-action.active.svelte-1hghrmf{background-color:#35e0e833;border-color:#35e0e866;color:#35e0e8}.profile-detail-action.active.svelte-1hghrmf i.svelte-1hghrmf{color:#35e0e8}.profile-detail-xp-strip.svelte-1hghrmf{border-top-color:#35e0e81f}.profile-detail-level-badge.svelte-1hghrmf,.profile-detail-xp-fill.svelte-1hghrmf{background-color:#35e0e8;color:#0b1215}.profile-detail-stat.svelte-1hghrmf,.profile-detail-class.svelte-1hghrmf,.profile-detail-raid-row.svelte-1hghrmf{background-color:#0b1215;border-color:#35e0e81f}.profile-detail-sales-panel.svelte-1hghrmf,.profile-detail-badges-panel.svelte-1hghrmf,.profile-detail-creations-panel.svelte-1hghrmf{background-color:#111b1f;border-color:#35e0e81f}.profile-detail-section-header.svelte-1hghrmf,.profile-detail-sales-header.svelte-1hghrmf{color:#35e0e8}.profile-detail-range-btn.svelte-1hghrmf{border-color:#35e0e81f}.profile-detail-range-btn.active.svelte-1hghrmf{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-listing-card.svelte-1hghrmf:hover{background-color:#111b1f}.profile-detail-listing-thumb.svelte-1hghrmf{background-color:#070c0f}.profile-detail-title-item.svelte-1hghrmf,.profile-detail-badge-item.svelte-1hghrmf{background-color:#111b1f}.profile-detail-creation-card.svelte-1hghrmf{background-color:#0b1215}.profile-detail-creation-card.svelte-1hghrmf:hover{background-color:#111b1f}.modal-content.svelte-1ugt6n9{background-color:#111b1f;border-color:#35e0e81f}.section-title.svelte-awmvtb .material-icons.svelte-awmvtb{color:#35e0e8}.sound-info.svelte-awmvtb{border-color:#35e0e81f}.btn-replace.svelte-awmvtb{background-color:#35e0e8cc}.btn-replace.svelte-awmvtb:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-preview.svelte-1lii2o,.kid-display-container.svelte-lbi007{border-color:#35e0e81f}.kid-display-benefits.svelte-lbi007 h3.svelte-lbi007:after{background-color:#35e0e8;color:#0b1215}.partnership-info.svelte-lbi007{background-color:#35e0e81a;border-left-color:#35e0e8}.sgNode.svelte-wbsbny{background-color:#0b1215f5;border-color:#35e0e81f}.sgNode.selected.svelte-wbsbny{border-color:#35e0e8;box-shadow:0 0 0 1px #35e0e8,0 2px 10px #00000073}.sgNode.isOutput.svelte-wbsbny .sgNodeHeader.svelte-wbsbny{background-color:#35e0e840}.sgNodeHeader.svelte-wbsbny{border-bottom-color:#35e0e81f}.sgSelect.svelte-wbsbny,.sgText.svelte-wbsbny{border-color:#35e0e81f}.sgSelect.svelte-wbsbny option.svelte-wbsbny{background-color:#0b1215}.sgSelect.svelte-wbsbny:focus,.sgText.svelte-wbsbny:focus{border-color:#35e0e8}.sgCheck.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.sgUnset.svelte-wbsbny{border-color:#35e0e81f}.sgUnset.svelte-wbsbny:hover:not(:disabled){border-color:#35e0e847}.sgUnset.svelte-wbsbny:focus-visible{outline-color:#35e0e8}.simple-tabs.svelte-1oqd18e{border-bottom-color:#35e0e81f}.simple-tab-active.svelte-1oqd18e{border-bottom-color:#35e0e8}.simple-tab-active.svelte-1oqd18e .simple-tab-icon.svelte-1oqd18e,.simple-tab-active.svelte-1oqd18e .simple-tab-label.svelte-1oqd18e{color:#35e0e8}.load-more-button.svelte-23mnz9{background-color:#35e0e833;border-color:#35e0e880;color:#35e0e8}.load-more-button.svelte-23mnz9:hover{background-color:#35e0e84d}.loading-spinner.svelte-gh77t9{border-color:#35e0e81f;border-top-color:#35e0e847}.retry-button.svelte-gh77t9{background-color:#35e0e8;color:#0b1215}.filter-input.svelte-1rpti7l{border-color:#35e0e84d}.filter-input.svelte-1rpti7l:focus{border-color:#35e0e8}.spin-promo-badge.svelte-5s5opu{border-color:#35e0e847}.no-offer-container.svelte-m5s1iy{background-color:#070c0fcc}.refresh-button.svelte-m5s1iy{background-image:linear-gradient(135deg,#ff5722,#ff9800,#35e0e8);border-color:#35e0e81f}.refresh-button.svelte-m5s1iy:hover:not(:disabled){border-color:#35e0e847}.optin__hero-fade.svelte-ga1m1g{background-image:linear-gradient(to top,#070c0ff2,#14141400 45%)}.report-root.svelte-18p16wl{background-color:#151f24}.report-header.svelte-18p16wl{border-bottom-color:#35e0e81f;background-color:#111b1f}.report-back.svelte-18p16wl{border-color:#35e0e81f}.report-input.svelte-18p16wl{background-color:#0b1215;border-color:#35e0e81f}.report-done.svelte-18p16wl{border-color:#35e0e81f}.trade-window.svelte-kfskmv{background-color:#151f24}.trade-message.svelte-kfskmv{border-color:#35e0e81f}.trade-message.svelte-kfskmv:focus{border-color:#35e0e81f}.trade-submit.disabled.svelte-kfskmv{background-color:#1d2c32}.profile-header.svelte-18dbnt3{border-bottom-color:#35e0e81f}.dynamic-shop-item.svelte-dif8c,.dynamic-shop-item.svelte-dif8c:hover,.dynamic-row.svelte-dif8c{border-color:#35e0e81f}.dynamic-row.svelte-dif8c:hover{border-color:#35e0e847}.next-step-hint.svelte-dif8c{color:#35e0e8}.dyn-buy-button.svelte-dif8c{border-color:#35e0e81f}.dyn-buy-button.virtual.svelte-dif8c{background-image:linear-gradient(135deg,#35e0e8,#35e0e8);box-shadow:0 4px 12px #35e0e84d,0 2px 4px #0003,inset 0 1px #fff3}.dyn-buy-button.svelte-dif8c:hover:not(:disabled){border-color:#35e0e81f}.dyn-buy-button.svelte-dif8c:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.craft-recipe-card.svelte-ggnigm{background-color:#070c0f}.craft-icon.svelte-ggnigm,.craft-item-req.svelte-ggnigm{border-color:#35e0e847}.craft-item-req.missing.svelte-ggnigm{border-color:#35e0e847!important}.craft-timer.svelte-ggnigm{background-color:#151f24}.item-wrapper.selected.svelte-18k2d4k{box-shadow:0 0 0 2px #35e0e8}.section-title.svelte-gygf75 .material-icons.svelte-gygf75{color:#35e0e8}.btn-replace.svelte-gygf75{background-color:#35e0e8cc}.btn-replace.svelte-gygf75:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.highlight-name.svelte-1w0uz1r{background-color:#35e0e81a;border-color:#35e0e84d}.logo-image.svelte-1w0uz1r,.banner-color-swatch.svelte-1w0uz1r,.swatch.svelte-1w0uz1r,.swatch-fill.svelte-1w0uz1r,.text-notification.svelte-nrigjp,.share-btn.svelte-1524ito{border-color:#35e0e81f}.bubble-row.sent.svelte-jj9ljg .bubble.svelte-jj9ljg{background-color:#35e0e8;color:#0b1215}.quantity-button.svelte-jsgxg6:disabled{background-color:#24343a;border-color:#35e0e81f}.section-title.svelte-1rov8jm .material-icons.svelte-1rov8jm{color:#35e0e8}.tool-btn.svelte-1rov8jm,.attach-btn.svelte-1rov8jm{border-color:#35e0e81f}.tool-btn.active.svelte-1rov8jm{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-1rov8jm input[type=number].svelte-1rov8jm,.fields.svelte-1rov8jm select.svelte-1rov8jm,.fields.svelte-1rov8jm input[type=color].svelte-1rov8jm{border-color:#35e0e81f}.window-header.svelte-4fhlo6{border-bottom-color:#35e0e81f;background-color:#111b1f}.window-header-icon.svelte-4fhlo6,.section-title.svelte-wfs5t6 .material-icons.svelte-wfs5t6{color:#35e0e8}.form-select.svelte-wfs5t6{border-color:#35e0e81f}.form-select.svelte-wfs5t6:focus{border-color:#35e0e8}.form-select.svelte-wfs5t6 option.svelte-wfs5t6{background-color:#0b1215}.dye-color-input.svelte-wfs5t6{border-color:#35e0e81f}.dye-opacity-slider.svelte-wfs5t6::-webkit-slider-thumb{background-color:#35e0e8;border-color:#35e0e81f;color:#0b1215}.form-input.svelte-iy81sy,.form-select.svelte-iy81sy{border-color:#35e0e81f}.form-input.svelte-iy81sy:focus,.form-select.svelte-iy81sy:focus{border-color:#35e0e8}.form-select.svelte-iy81sy option.svelte-iy81sy{background-color:#0b1215}.add-all-button.svelte-1rj22es:disabled{background-color:#24343a;border-color:#35e0e81f}.lottery-window.theme-easter.svelte-1rj22es,.theme-easter.svelte-1rj22es .title-separator.svelte-1rj22es,.theme-easter.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es{outline-color:#35e0e81f}.lottery-window.theme-neutral.svelte-1rj22es:after{border-color:#35e0e81f}.theme-neutral.svelte-1rj22es .draw-timer.svelte-1rj22es{border-color:#35e0e81f;background-color:#182429a6}.theme-neutral.svelte-1rj22es .cost-column.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .grand-prize-container.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .additional-prizes-box.themed-box.svelte-1rj22es,.theme-neutral.svelte-1rj22es .last-draw-winners.themed-box.svelte-1rj22es{border-color:#35e0e81f;background-color:#18242980}.painted-badge-swatch.svelte-n0vhtc,.painted-inline-swatch.svelte-n0vhtc{border-color:#35e0e847}.milestone-number.svelte-6hxhl0{background-color:#182429}.milestone-bonus.svelte-6hxhl0{background-color:#151f24}.milestone-bonus.claimable.svelte-6hxhl0{background-color:#182429}.progression-summary.svelte-6hxhl0{border-top-color:#35e0e81f}.progression-details.svelte-6hxhl0{border-color:#35e0e81f}.offer-holder.svelte-1agthf7,.offer-holder.svelte-1agthf7:hover{background-color:#111b1f}.offer-name.svelte-1agthf7{color:#35e0e8}.filter-input.svelte-49w24t,.filter-select.svelte-49w24t{border-color:#35e0e84d}.filter-input.svelte-49w24t:focus,.filter-select.svelte-49w24t:focus{border-color:#35e0e8}.email-change-section.svelte-126q2op{border-top-color:#35e0e81f}.change-email-btn.svelte-126q2op{border-color:#35e0e8}.sidebar-tab.svelte-berov0{background-color:#151f24}.sidebar-tab.svelte-berov0:hover,.sidebar-tab.active.svelte-berov0,.sidebar-tab-badge.svelte-berov0{background-color:#35e0e8;color:#0b1215}.items-detail-root.svelte-dmu4q2{background-color:#151f24}.items-detail-header-bar.svelte-dmu4q2{border-bottom-color:#35e0e81f;background-color:#111b1f}.items-detail-back.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-header-icon.svelte-dmu4q2{color:#35e0e8}.items-detail-header-btn.svelte-dmu4q2,.preview-action-btn.svelte-dmu4q2{border-color:#35e0e81f}.preview-action-btn.svelte-dmu4q2:hover{border-color:#35e0e847}.preview-action-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-wear-slider.svelte-dmu4q2,.items-detail-instance-overlay.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-paint-swatch.svelte-dmu4q2{border-color:#35e0e847}.items-detail-tabs-panel.svelte-dmu4q2{background-color:#111b1f;border-color:#35e0e81f}.items-detail-creator-link.svelte-dmu4q2{color:#35e0e8}.items-detail-stats-section.svelte-dmu4q2{border-top-color:#35e0e81f}.items-detail-stats-header.svelte-dmu4q2{color:#35e0e8}.items-detail-range-btn.svelte-dmu4q2{border-color:#35e0e81f}.items-detail-range-btn.active.svelte-dmu4q2{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.items-detail-owner-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-owner-name.svelte-dmu4q2:hover{color:#35e0e8}.items-detail-instance-table.svelte-dmu4q2 th.svelte-dmu4q2{background-color:#111b1f;border-bottom-color:#35e0e81f}.items-detail-instance-table.svelte-dmu4q2 td.svelte-dmu4q2,.items-detail-listing-row.svelte-dmu4q2{border-bottom-color:#35e0e81f}.items-detail-listing-seller.svelte-dmu4q2:hover,.no-clan-title.svelte-51j5cz,.clan-benefits.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.clan-benefits.svelte-51j5cz li.svelte-51j5cz:before{color:#35e0e8}.map-filter-select.svelte-51j5cz{border-color:#35e0e866}.map-filter-select.svelte-51j5cz:hover{border-color:#35e0e8}.map-filter-select.svelte-51j5cz:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.section-title.svelte-51j5cz{color:#35e0e8;border-left-color:#35e0e8}.day-arrow.svelte-51j5cz{border-color:#35e0e866;color:#35e0e8}.day-arrow.svelte-51j5cz:hover:not(:disabled){background-color:#35e0e833;border-color:#35e0e8}.day-input.svelte-51j5cz{border-color:#35e0e866}.day-input.svelte-51j5cz:focus{border-color:#35e0e8}.view-all-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.view-all-btn.svelte-51j5cz:hover{background-color:#35e0e84d}.page-btn.svelte-51j5cz{background-color:#35e0e833;border-color:#35e0e866}.historical-day.svelte-51j5cz{border-color:#35e0e81f}.day-header.svelte-51j5cz{border-bottom-color:#35e0e81f}.day-label.svelte-51j5cz{color:#35e0e8}.clan-side.comparison-clan.no-comparison.svelte-51j5cz,.clan-side.svelte-51j5cz .clan-logo-small.svelte-51j5cz{border-color:#35e0e81f}.stat-row.svelte-51j5cz{border-bottom-color:#35e0e81f}.no-participation-title.svelte-51j5cz,.eligible-maps.svelte-51j5cz h3.svelte-51j5cz{color:#35e0e8}.eligible-maps.svelte-51j5cz li.svelte-51j5cz{background-color:#35e0e81a;border-color:#35e0e84d}.game-announcement.svelte-1m80xxc{border-color:#35e0e81f}.game-announcement.svelte-1m80xxc:before{border-bottom-color:#35e0e847}.ga-bundle.svelte-1m80xxc{border-color:#35e0e81f}.ga-bundle.svelte-1m80xxc:hover,.ga-action-btn.svelte-1m80xxc,.ga-action-btn.svelte-1m80xxc:hover,.ga-action-btn.disabled.svelte-1m80xxc:hover{border-color:#35e0e847}.login-button.svelte-16z1lxi{background-color:#070c0f;border-color:#35e0e847}.terms-privacy-notice.svelte-16z1lxi a.svelte-16z1lxi{color:#35e0e8}.item-wrapper.selected.svelte-zhgogl{box-shadow:0 0 0 2px #35e0e8}.loading-spinner.svelte-zhgogl{border-color:#35e0e81f}.load-more-btn.svelte-zhgogl{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-zhgogl:hover{background-color:#35e0e84d}.load-more-btn.svelte-zhgogl:active{background-color:#35e0e866}.tab.svelte-1o3qul6:hover,.tab-active.svelte-1o3qul6,.tab-active.svelte-1o3qul6:hover{border-bottom-color:#35e0e847}.trading-column-header.svelte-1r9fijr{border-bottom-color:#35e0e81f}.confirm-box.svelte-1r9fijr,.start-box.svelte-1r9fijr{background-color:#151f24;border-color:#35e0e81f}.start-input.svelte-1r9fijr{border-color:#35e0e81f}.start-input.svelte-1r9fijr:focus{border-color:#35e0e81f}.section-title.svelte-4e4ust .material-icons.svelte-4e4ust{color:#35e0e8}.texture-settings.svelte-4e4ust{border-color:#35e0e81f}.toggle-switch.svelte-4e4ust input:checked+.slider.svelte-4e4ust{background-color:#35e0e8;color:#0b1215}.form-select.svelte-4e4ust{border-color:#35e0e81f}.form-select.svelte-4e4ust:focus{border-color:#35e0e8}.form-select.svelte-4e4ust option.svelte-4e4ust{background-color:#0b1215}.texture-upload-item.svelte-4e4ust{border-color:#35e0e81f}.uploading-badge.svelte-4e4ust{background-color:#35e0e8cc}.texture-image.svelte-4e4ust{border-color:#35e0e81f}.btn-replace.svelte-4e4ust{background-color:#35e0e8cc}.btn-replace.svelte-4e4ust:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.item-wrapper.selected.svelte-1l3mtrv{box-shadow:0 0 0 2px #35e0e8}.news-item.svelte-1ult4vg{border-left-color:#35e0e8}.news-item.svelte-1ult4vg a{color:#35e0e8}.menu-container.svelte-mqcul7{background-color:#070c0f}.menu-item.active.svelte-mqcul7{border-bottom-color:#35e0e847}button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}button.svelte-mqcul7:hover{box-shadow:0 0 60px #35e0e875}.start-button.svelte-mqcul7{background-color:#35e0e8;color:#0b1215}.start-button[disabled].svelte-mqcul7{background-color:#1d2c32}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7{background-color:#0b1215;border-color:#35e0e8;box-shadow:0 0 #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:hover{box-shadow:0 0 0 2px #35e0e833}.queue-all-regions-container.svelte-mqcul7 input[type=checkbox].svelte-mqcul7:checked{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.paint-container.svelte-10qrqvt{background-color:#151f24bf}.slider-arrow.svelte-10qrqvt{border-color:#35e0e81f}.slider-arrow.left.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-right-color:#35e0e847}.slider-arrow.right.svelte-10qrqvt .slider-arrow-icon.svelte-10qrqvt{border-left-color:#35e0e847}.swatch.svelte-10qrqvt{border-color:#35e0e81f}.swatch.locked.selected.svelte-10qrqvt{border-color:#35e0e847}.swatch-fill.svelte-10qrqvt,.btn.svelte-10qrqvt{border-color:#35e0e81f}.inventory-filter.svelte-ga3en0{background-color:#111b1f;border-color:#35e0e81f}.filter-header.svelte-ga3en0{background-color:#111b1f}.reset-btn.svelte-ga3en0,.reset-btn.svelte-ga3en0:hover,.expand-btn.svelte-ga3en0,.expand-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-content.svelte-ga3en0{border-top-color:#35e0e81f}.search-input.svelte-ga3en0,.season-select.svelte-ga3en0,.sort-select.svelte-ga3en0,.category-select.svelte-ga3en0{background-color:#151f24;border-color:#35e0e81f}.filter-tabs.svelte-ga3en0{border-bottom-color:#35e0e81f}.filter-tab.svelte-ga3en0{background-color:#151f24}.filter-tab.svelte-ga3en0:hover{background-color:#182429}.filter-tab.active.svelte-ga3en0{background-color:#35e0e8;color:#0b1215}.toggle-all-btn.svelte-ga3en0{background-color:#1d2c32}.toggle-all-btn.svelte-ga3en0:hover{background-color:#24343a}.filter-panel.svelte-ga3en0{background-color:#111b1f}.filter-item-wrapper.svelte-ga3en0{border-color:#35e0e81f}.filter-item.svelte-ga3en0:hover{background-color:#151f24}.only-btn.svelte-ga3en0{background-color:#1d2c32}.only-btn.svelte-ga3en0:hover{background-color:#24343a}.profile-search-form.svelte-fo44ss{background-color:#0b1215;border-color:#35e0e81f}.profile-search-form.svelte-fo44ss:focus-within{border-color:#35e0e8}.follow-root.svelte-1ef5zjv{background-color:#151f24}.follow-header.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-back.svelte-1ef5zjv{border-color:#35e0e81f}.follow-header-icon.svelte-1ef5zjv{color:#35e0e8}.follow-tabs.svelte-1ef5zjv{border-bottom-color:#35e0e81f;background-color:#111b1f}.follow-tab.active.svelte-1ef5zjv{border-bottom-color:#35e0e8}.follow-row.svelte-1ef5zjv{background-color:#0b1215cc;border-color:#35e0e81f}.follow-btn.svelte-1ef5zjv{background-color:#35e0e8;color:#0b1215}.follow-btn.following.svelte-1ef5zjv,.price-tag.svelte-1q06uv7{border-color:#35e0e81f}.buy-button.svelte-1q06uv7:disabled{background-color:#24343a}.buy-button.svelte-1q06uv7:disabled:hover{background-color:#24343a}.io-code-display.svelte-owjkr{border-color:#35e0e81f}.music-player.svelte-1ei19qi{background-color:#0b1215f2}.music-btn.svelte-1ei19qi{border-color:#35e0e847}.section-title.svelte-16sjsp2 .material-icons.svelte-16sjsp2{color:#35e0e8}.toggle-switch.svelte-16sjsp2 input:checked+.slider.svelte-16sjsp2{background-color:#35e0e8;color:#0b1215}.form-select.svelte-16sjsp2,.form-input.svelte-16sjsp2{border-color:#35e0e81f}.form-select.svelte-16sjsp2:focus,.form-input.svelte-16sjsp2:focus{border-color:#35e0e8}.form-select.svelte-16sjsp2 option.svelte-16sjsp2{background-color:#0b1215}.texture-upload-item.svelte-16sjsp2{border-color:#35e0e81f}.uploading-badge.svelte-16sjsp2{background-color:#35e0e8cc}.texture-image.svelte-16sjsp2,.post-item-card.svelte-10yvzvw,.post-item-card.svelte-10yvzvw:hover{border-color:#35e0e81f}.post-content-thumb.svelte-10yvzvw{background-color:#0b1215}.post-content-action.svelte-10yvzvw{color:#35e0e8}.post-follow-btn.svelte-10yvzvw{background-color:#35e0e8;color:#0b1215}.post-follow-btn.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;color:#0b1215}.postResRo.svelte-10yvzvw,.postResRoD.svelte-10yvzvw{border-bottom-color:#35e0e81f}.post-text.svelte-10yvzvw a{color:#35e0e8}.post-footer.svelte-10yvzvw{border-top-color:#35e0e81f}.vote-btn.svelte-10yvzvw{border-color:#35e0e81f}.vote-btn.svelte-10yvzvw:hover:not(:disabled){border-color:#35e0e847}.vote-btn.svelte-10yvzvw:disabled{border-color:#35e0e81f}.vote-btn-done.svelte-10yvzvw{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.vote-btn-done.svelte-10yvzvw:hover:not(:disabled){background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.owned-count-overlay.svelte-9ff17r{border-color:#35e0e81f}.section-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.form-textarea.svelte-3rvofx{border-color:#35e0e81f}.form-textarea.svelte-3rvofx:focus{border-color:#35e0e8;box-shadow:0 0 0 2px #35e0e833}.automatic-attributes.svelte-3rvofx{border-color:#35e0e81f}.automatic-attributes-header.svelte-3rvofx{background-color:#35e0e81a;border-bottom-color:#35e0e81f}.automatic-attributes-title.svelte-3rvofx .material-icons.svelte-3rvofx{color:#35e0e8}.loot-updated-name.svelte-1ydnong{color:var(--highlight-color, rgb(53, 224, 232))}.popup.svelte-1wz7ymp{background-color:#151f24}.popup.translucent.svelte-1wz7ymp{background-color:#151f24bf}.popup.slim-border.svelte-1wz7ymp{border-color:#35e0e81f}.sort-select.svelte-111gya4{background-color:#151f24;border-color:#35e0e81f}.sort-select.svelte-111gya4:hover{border-color:#35e0e847}.sort-select.svelte-111gya4:focus{border-color:#35e0e8}.searching-indicator.svelte-111gya4{color:#35e0e8}.searching-indicator.svelte-111gya4:before{border-color:#35e0e8}.clan-view-root.svelte-5j94nj{background-color:#151f24}.clan-view-header-bar.svelte-5j94nj{border-bottom-color:#35e0e81f;background-color:#111b1f}.clan-view-back.svelte-5j94nj{border-color:#35e0e81f}.clan-view-header-icon.svelte-5j94nj{color:#35e0e8}.clan-view-identity.svelte-5j94nj{background-color:#111b1f;border-color:#35e0e81f}.clan-view-logo.svelte-5j94nj,.clan-view-logo-placeholder.svelte-5j94nj{background-color:#111b1f}.clan-view-info.svelte-5j94nj{border-top-color:#35e0e81f}.clan-view-link.svelte-5j94nj{color:#35e0e8}.clan-view-role-header.svelte-5j94nj{color:#35e0e8;border-bottom-color:#35e0e81f}.social-search-input.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-input.svelte-1dyc40r:focus{border-color:#35e0e8}.social-search-btn.svelte-1dyc40r{background-color:#0b1215;border-color:#35e0e81f}.social-search-btn.svelte-1dyc40r:hover{background-color:#111b1f;border-color:#35e0e81f}.social-compose-btn.svelte-1dyc40r,.social-compose-btn.svelte-1dyc40r:hover{background-color:#35e0e8;color:#0b1215}.item-detail-container.svelte-olnzsm{border-left-color:#35e0e81f}.item-detail-header.svelte-olnzsm{border-bottom-color:#35e0e81f}.item-showcase-section.svelte-olnzsm{border-right-color:#35e0e81f}.ownership-count.svelte-olnzsm,.full-details-btn.svelte-olnzsm{border-color:#35e0e81f}.tabs-section.svelte-olnzsm{border-bottom-color:#35e0e81f}.loading-spinner.svelte-olnzsm{border-color:#35e0e81f}.load-more-btn.svelte-olnzsm{background-color:#35e0e833;border-color:#35e0e8;color:#35e0e8}.load-more-btn.svelte-olnzsm:hover{background-color:#35e0e84d}.load-more-btn.svelte-olnzsm:active{background-color:#35e0e866}.stats-controls.svelte-olnzsm{border-bottom-color:#35e0e81f}.days-back-select.svelte-olnzsm{border-color:#35e0e81f}.days-back-select.svelte-olnzsm:hover:not(:disabled){border-color:#35e0e81f}.days-back-select.svelte-olnzsm:focus{border-color:#35e0e8}.mission-briefing.svelte-1849bws{background-image:linear-gradient(135deg,#0b1215,#111b1f)}.mission-header.svelte-1849bws{background-image:linear-gradient(135deg,#000,#0b1215)}.abort-btn.svelte-1849bws{background-image:linear-gradient(135deg,#151f24,#1d2c32);border-color:#35e0e847}.abort-btn.svelte-1849bws:hover{background-image:linear-gradient(135deg,#1d2c32,#24343a)}.deploy-btn.svelte-1849bws{border-color:#35e0e8}th.svelte-1enb567{color:#35e0e8}td.svelte-1enb567{border-bottom-color:#35e0e81f}.page-button.svelte-1enb567{border-color:#35e0e8}.page-button.svelte-1enb567:hover:not(:disabled){background-color:#35e0e833}.page-button.svelte-1enb567:disabled{border-color:#35e0e84d}.page-indicator.svelte-1enb567{color:#35e0e8}.item-display-container.svelte-1p13km7{border-color:#35e0e81f}.section-title.svelte-sr5bk2 .material-icons.svelte-sr5bk2{color:#35e0e8}.tool-btn.svelte-sr5bk2,.attach-btn.svelte-sr5bk2{border-color:#35e0e81f}.tool-btn.active.svelte-sr5bk2{border-color:#35e0e8;background-color:#35e0e840}.fields.svelte-sr5bk2 input[type=number].svelte-sr5bk2{border-color:#35e0e81f}.wallet-root.svelte-l0gwpc{background-color:#151f24}.wallet-catalog-btn.svelte-l0gwpc{border-color:#35e0e81f}.currency-card.svelte-l0gwpc{background-image:linear-gradient(135deg,#111b1f,#182429);border-color:#35e0e81f}.items-grid.svelte-l0gwpc{background-color:#111b1f}.main-button.svelte-whnh40{background-color:#151f24;border-color:#35e0e81f}.main-button.svelte-whnh40:disabled,.main-button-disabled.svelte-whnh40{background-color:#0b1215}.main-button.svelte-whnh40:disabled:hover,.main-button-disabled.svelte-whnh40:hover{background-color:#0b1215}.main-button.svelte-whnh40:hover:not(:disabled):not(.main-button-disabled){background-color:#182429}.main-button-accept-secondary.svelte-whnh40{background-color:#35e0e8;border-color:#35e0e8;color:#0b1215}.sort-btn.active.svelte-9t0md3{background-color:#35e0e833;color:#35e0e8;border-color:#35e0e8}.month-select.svelte-9t0md3 option.svelte-9t0md3{background-color:#0b1215}.section-title.svelte-1qb7o10 .material-icons.svelte-1qb7o10{color:#35e0e8}.paint-mode-btn.svelte-1qb7o10{border-color:#35e0e81f}.paint-mode-btn.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e847}.paint-mode-btn.active.svelte-1qb7o10{background-color:#35e0e826;border-color:#35e0e8;color:#35e0e8}.paint-color-input.svelte-1qb7o10{border-color:#35e0e81f}.paint-preview-base.svelte-1qb7o10{border-top-color:#35e0e81f}.preview-base-input.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-input.svelte-1qb7o10:focus{border-color:#35e0e8}.preview-base-quick.svelte-1qb7o10{border-color:#35e0e81f}.preview-base-quick.svelte-1qb7o10:hover:not(:disabled){border-color:#35e0e8;color:#35e0e8}.buy-button.svelte-1ov1s5h{border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:hover:not(:disabled){border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled{background-image:linear-gradient(135deg,#24343a,#1d2c32);border-color:#35e0e81f}.buy-button.svelte-1ov1s5h:disabled:hover{background-image:linear-gradient(135deg,#24343a,#1d2c32)}.ownership-count.svelte-kchhu3{border-color:#35e0e81f} +`});var qu,Du=w(()=>{qu=`:root{--kute-cyan: #35e0e8;--kute-cyan-soft: rgba(53, 224, 232, .14);--kute-pink: #f5479b;--kute-pink-soft: rgba(245, 71, 155, .16);--kute-bg: #0b1215;--kute-panel: #111b1f;--kute-raised: #182429;--kute-line: rgba(53, 224, 232, .12);--kute-line-strong: rgba(53, 224, 232, .28);--kute-text: #eaf7f8;--kute-muted: rgba(234, 247, 248, .62);--kute-faint: rgba(234, 247, 248, .38);--kute-radius: 8px;--kute-radius-lg: 14px;--kute-paw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f5479b'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-paw-cyan: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230b1215'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-ears: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 14'%3E%3Cpath fill='rgba(11,18,21,.78)' d='M1 14 9 1l8 13Zm28 0 8-13 8 13Z'/%3E%3Cpath fill='rgba(245,71,155,.7)' d='M5.5 14 9 7.5l3.5 6.5Zm28 0 3.5-6.5 3.5 6.5Z'/%3E%3C/svg%3E");--kute-paw-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2335e0e8'%3E%3Cellipse cx='12' cy='16.2' rx='4.8' ry='4'/%3E%3Ccircle cx='5.6' cy='10.6' r='2.1'/%3E%3Ccircle cx='9.6' cy='6.4' r='2.2'/%3E%3Ccircle cx='14.4' cy='6.4' r='2.2'/%3E%3Ccircle cx='18.4' cy='10.6' r='2.1'/%3E%3C/svg%3E");--kute-grad: linear-gradient(90deg, var(--kute-cyan), var(--kute-pink));--div-black: rgba(11, 18, 21, .78);--div-grey: rgba(53, 224, 232, .07);--div-shadow: 0 2px 10px rgba(0, 0, 0, .5);--blue: var(--kute-cyan);--highlight-color: var(--kute-cyan);--highlight-hover-color: #5ce9ef;--card-bg-color: rgba(24, 36, 41, .7);--dark-bg-color: rgba(11, 18, 21, .5);--border-subtle: 1px solid var(--kute-line);--border-radius-sm: 6px;--border-radius-md: var(--kute-radius);--border-radius-lg: var(--kute-radius-lg);--box-shadow-lg: 0 18px 44px rgba(0, 0, 0, .6)}::selection{background:var(--kute-pink);color:#fff}a,a:visited{color:var(--kute-cyan)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background-color:transparent;box-shadow:none}::-webkit-scrollbar-thumb{background:var(--kute-line-strong);border:3px solid transparent;border-radius:999px;background-clip:padding-box;box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:var(--kute-cyan)}#windowHolder.popupWin{background-color:#050a0cb8}#menuWindow.dark{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6,0 0 0 1px #0006}.settingsHeader{background-color:var(--kute-bg);border-bottom:1px solid var(--kute-line)}.setSugBox2{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);transition:background-color .15s,border-color .15s}.setSugBox2:hover{border-width:1px;background-color:var(--kute-raised);border-color:var(--kute-cyan)}.advancedSlider{background-color:#24343a;border-radius:999px}.advancedSlider:before{border-radius:50%;background:#fff var(--kute-paw) center / 20px no-repeat}input:checked+.advancedSlider{background-color:var(--kute-cyan)}input:checked+.advancedSlider:before{background-image:var(--kute-paw-cyan)}input:checked+.advancedSlider:after{color:var(--kute-bg)}.hostPresetBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.hostPresetBtn:hover{background-color:var(--kute-pink);color:#fff}#settingsTabLayout{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden}.settingTab{background-color:transparent;color:var(--kute-muted);border-bottom:3px solid transparent;transition:color .15s,background-color .15s}#menuWindow.dark .settingTab{color:var(--kute-muted)}.settingTab:hover{border-bottom:3px solid var(--kute-line-strong);background-color:var(--kute-cyan-soft)}#menuWindow.dark .settingTab:hover{color:var(--kute-text)}.dark .tabANew,.dark .tabANew:hover{border-bottom:3px solid var(--kute-cyan)!important;background-color:var(--kute-cyan-soft)}#menuWindow.dark .tabANew{color:var(--kute-cyan)}.setHed,.setHedS{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.setHed:hover,.setHedS:hover{background-color:#1d2c32;border-left-color:var(--kute-pink)}.setHed .plusOrMinus{color:var(--kute-cyan)}.setBodH{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.settName,.settNameSmall{border-bottom:1px solid var(--kute-line);color:var(--kute-muted)!important}.settNameIn:hover{background-color:var(--kute-cyan-soft)!important;color:var(--kute-text)!important}.settingsBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px;transition:background-color .15s,color .15s}#menuWindow.dark .settingsBtn{color:var(--kute-bg)}.settingsBtn:hover,#menuWindow.dark .settingsBtn:hover{background-color:var(--kute-pink);color:#fff}#settSearch,.inputGrey2,.sliderVal,#loadoutName,#loadoutSelect,#itemSearch{background:var(--kute-raised);color:var(--kute-text);border:1px solid var(--kute-line);border-radius:6px;outline:none;transition:border-color .15s}#settSearch:focus,.inputGrey2:focus,.sliderVal:focus,#loadoutName:focus,#loadoutSelect:focus{border-color:var(--kute-cyan)}#loadoutName{background:var(--kute-raised)!important;border:1px solid var(--kute-line)!important}.sliderVal{border-color:var(--kute-line-strong)!important}#settSearch::placeholder,#loadoutName::placeholder{color:var(--kute-faint)}.inputGrey2 option,#loadoutSelect option{background:var(--kute-panel);color:var(--kute-text)}#loadoutToolbar{background-color:var(--kute-panel);border-bottom:1px solid var(--kute-line)}.loadoutTab{background-color:transparent;transition:background-color .15s,color .15s}.loadoutTab:hover{background-color:var(--kute-cyan-soft)}.loadoutTabSel,.loadoutTabSel:hover{background-color:var(--kute-cyan-soft);border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)!important}#charPreviewSlot{background:radial-gradient(circle at 50% 42%,rgba(53,224,232,.1),transparent 62%);border-right:1px solid var(--kute-line)}.custContainer,.custSubContainer{background-color:var(--kute-panel);border-color:var(--kute-line);box-shadow:none}.custContainer{border-radius:var(--kute-radius);transition:border-color .15s,background-color .15s}.custContainer.contCanSelect:hover{background-color:var(--kute-raised);border-color:var(--kute-cyan)}.custSubContainer{border-radius:0 var(--kute-radius) 0 var(--kute-radius)}.custClear{border-radius:6px}.custBack{background:var(--kute-raised);border-radius:6px}.custBack:hover{background:var(--kute-cyan-soft)}.classCard{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-radius:var(--kute-radius);overflow:hidden;transition:border-color .15s}.classCard:hover{border-color:var(--kute-cyan)}.classXPBar{background-color:var(--kute-bg)}.clsXPBarC{background-color:var(--kute-cyan)}.loadoutBtn{background-color:var(--kute-cyan);color:var(--kute-bg);border-radius:6px}.loadoutBtn:hover{background-color:var(--kute-pink);color:#fff}.slider,.slider2{background-color:#24343a;border-radius:999px}.slider:before,.slider2:before{border-radius:50%;width:22px;background-color:#fff;background-image:var(--kute-paw);background-size:14px;background-position:center;background-repeat:no-repeat}.slider:before{left:5px}input:checked+.slider,input:checked+.slider2,input:checked+.sliderSml,input:checked+.sliderCent{background-color:var(--kute-cyan)}input:checked+.slider:before{transform:translate(28px);background-image:var(--kute-paw-cyan)}input:checked+.slider2:before{transform:translate(20px);background-image:var(--kute-paw-cyan)}input:focus+.slider,input:focus+.slider2,input:focus+.sliderSml{box-shadow:0 0 0 2px var(--kute-cyan-soft)}.sliderSml,.sliderCent{background-color:#24343a}.sliderM{background-color:#24343a;height:8px;border-radius:999px;margin-bottom:0}.sliderM::-webkit-slider-thumb{width:22px;height:22px;border-radius:50%;background:#fff var(--kute-paw) center / 14px no-repeat;box-shadow:0 0 0 3px var(--kute-cyan),0 2px 6px #00000080}#playerHeaderEl{background:var(--kute-grad) bottom / 100% 1px no-repeat,linear-gradient(#070c0feb,#070c0fbd)}.ph-item[class*=svelte-],.nav-item[class*=svelte-]{border-radius:12px;transition:background-color .15s}.ph-item[class*=svelte-]:hover,.nav-item[class*=svelte-]:hover{background-color:var(--kute-cyan-soft)}.nav-item[class*=svelte-] .material-icons,.nav-item[class*=svelte-] .material-icons-outlined{color:var(--kute-cyan)}#menuItemContainer .menuItem{position:relative;border-radius:10px;transition:transform .15s,background-color .15s}#menuItemContainer .menuItem:hover{background:linear-gradient(90deg,var(--kute-cyan-soft),transparent 85%);transform:translate(6px)}#menuItemContainer .menuItem:hover .menuItemTitle{color:var(--kute-cyan)}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):before{content:"";position:absolute;left:-18px;top:50%;width:14px;height:14px;background:var(--kute-paw-solid) center / contain no-repeat;opacity:0;transform:translate(-4px,-50%) rotate(-20deg);transition:opacity .15s,transform .15s;pointer-events:none}#menuItemContainer .menuItem:not(.bpItem):not(.dsItem):hover:before{opacity:1;transform:translateY(-50%) rotate(-20deg)}#menuItemContainer .menuItemIcon{color:var(--kute-cyan)}#menuItemContainer .sidebarDivider{background:linear-gradient(90deg,var(--kute-line-strong),transparent);border:0}@container not style(--kute-classic-menu: 1){#subLogoButtons>.actionCard{background:var(--kute-panel);border-color:rgba(var(--card-rgb),.45);border-radius:var(--kute-radius);box-shadow:none;transition:background-color .15s,border-color .15s}#subLogoButtons>.actionCard:hover{background:var(--kute-raised);border-color:rgb(var(--card-rgb))}#subLogoButtons>.actionCard .cardIcon{color:rgb(var(--card-rgb))}.popRailCard[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line-strong);border-radius:var(--kute-radius);transition:background-color .15s,border-color .15s}.popRailCard[class*=svelte-]:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}.popRailPlay[class*=svelte-]{color:var(--kute-cyan)}#customizeButton{border-radius:var(--kute-radius)}}.window-header[class*=svelte-],#loadoutToolbar,.profile-detail-header-bar[class*=svelte-],.instructionsHeader,.settingsHeader{background-image:var(--kute-grad);background-size:100% 1px;background-position:bottom;background-repeat:no-repeat}:is(#windowHolder,#popupHolder,#app) .button{border-radius:var(--kute-radius);background-color:#0b121599}:is(#windowHolder,#popupHolder,#app) .button:hover,:is(#windowHolder,#popupHolder,#app) .button:active{border-color:var(--kute-cyan)!important}:is(#windowHolder,#popupHolder,#app) .button:not([class*=buttonR]):not([class*=buttonG]):not([class*=buttonP]):not([class*=buttonO]):not([class*=buttonB]):not(:hover){border-color:var(--kute-line-strong)}#chatList{background-color:#0b12158c;border-radius:var(--kute-radius) var(--kute-radius) 0 0}#chatInputHolder{border-radius:0 0 var(--kute-radius) var(--kute-radius)}#chatInput{background-color:#182429cc;border:1px solid var(--kute-line);border-radius:6px}#chatInput:focus{border-color:var(--kute-cyan);outline:none}#instructionsUpdate{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;overflow:hidden}.instructionsHeader,.instructionsTabs{background-color:var(--kute-panel);box-shadow:none}.instructionsHeader{border-bottom:1px solid var(--kute-line)}.instructionsTab{border-top:1px solid var(--kute-line);transition:background-color .15s,color .15s}.instructionsTab:hover{background-color:var(--kute-cyan-soft);border-color:var(--kute-line);color:var(--kute-cyan)}#ammoHolder,#bottomLeftPlayer,#timerHolder,.statIcon,#leaderboardHolder,#teamScores,#chatInputHolder{border-radius:var(--kute-radius)}#ammoHolder .greyInner,.statIcon .greyInner,#timerInner,#leaderContainer,#bottomLeftPlayerLeft,#bottomLeftPlayerRight,#bottomLeftTeamType,#bottomLeftTeamName,#bottomLeftHealthBar{border-radius:6px}#bottomLeftPlayerLeft{overflow:hidden}#ammoHolder,#bottomLeftPlayer{box-shadow:inset 0 -2px 0 var(--kute-cyan)}#bottomLeftPlayer{position:relative}#ammoHolder:before,#bottomLeftPlayer:before{content:"";position:absolute;top:-12px;width:46px;height:14px;background:var(--kute-ears) no-repeat center / contain;pointer-events:none}#ammoHolder:before{right:20px}#bottomLeftPlayer:before{left:19px}#reloadMsg{border-radius:6px}#ingameFPS,#pingText{color:var(--kute-cyan)}.bigMenTabs{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.bigMenTab:hover{border-bottom:3px solid var(--kute-line-strong)}.bigMenTabA,.bigMenTabA:hover{border-bottom:3px solid var(--kute-cyan);color:var(--kute-cyan)}#popupContent,#bundlePop,#premiumPop,#policePopC,#guidePopup,#chargeModalCard,#spinHistoryPop,.confPremiumPop,.vouchPop,.rankedPop,.promoPop,.pfpPop,.dropsPop,.accountCreatePop,.imagePop,.badgePop,.imageNewPop,.importPop,.disconnectPop,.eventPop,.bp-generic-pop,.bp-purchase-pop,.spinErrorPop,.charmErrorPop,.spinHistoryStatsPop,.loadingPop,.autoLoadPop,.editMapPop,.responsePop,.ticketPop,.dxp-pop,.abTestsPop,.registerGiftPop,.rankedQueueModal,.rankedMenuModal,.communityPopup,.tutorialPopup,.defaultModal,.krunkCupJoinModal,.krunkCupViewModal,.exchangeModal,.itemsModal,.moreKrunkerPopup,.infoPop,.contPop,.io-popup-container,.wallet-root[class*=svelte-]{background-color:var(--kute-bg);border-radius:var(--kute-radius-lg);box-shadow:0 0 0 1px var(--kute-line),0 24px 60px #000000a6}.twitchPop,.nftPop,.confPop,.clientExitPop,#confPurchItemPop,.metaPop,.polConfPop{border-color:var(--kute-line);border-radius:var(--kute-radius-lg)}.hostHeader,#stickyHostH,.imageListHeader,.imageListFooter,.spinHistoryHeader,.popHeader,.dropsPopHeader,.serverHeader,#itemSearchH,#bindsHeader,.tooltip2,.crftRcpeCrd,.bundleCrd,.bundle-card[class*=svelte-],.moreKrunkerOption[class*=svelte-],.items-grid[class*=svelte-],.filter-panel[class*=svelte-],.territory-map-container[class*=svelte-],.data-table[class*=svelte-] thead{background-color:var(--kute-panel)}#initLoader,.clsStatXPBar,.elo-progress-bar-bg{background-color:var(--kute-bg)}.featured-section[class*=svelte-],.stream-card[class*=svelte-],.emoji-panel[class*=svelte-],.verification-banner[class*=svelte-],.music-player[class*=svelte-],.market-card[class*=svelte-],.rank-popup-content{background-color:var(--kute-panel)}.hide-button[class*=svelte-],.kuteTopButton{background-color:var(--kute-raised)}.hide-button[class*=svelte-]:hover,.kuteTopButton:hover{background-color:#1d2c32}.contactsHeader{background-color:var(--kute-raised);border:1px solid var(--kute-line);border-left:3px solid var(--kute-cyan);border-radius:var(--kute-radius)}.bpInfoBalloon,.bpInfoBalloon:after,.io-separator span{background-color:var(--kute-bg)}.bpClaimB,.bp-unlock-header,.io-button,.mapLICat,#tradeChatInput,.tradeChatItem,.main-button[class*=svelte-]{background-color:var(--kute-raised)}.io-button:hover,.mapLICat:hover,.main-button[class*=svelte-]:hover:not(:disabled):not(.main-button-disabled){background-color:#1d2c32}.main-button[class*=svelte-],.moreKrunkerOption[class*=svelte-],.territory-map-container[class*=svelte-],.territory-details-panel[class*=svelte-],.inventory-filter[class*=svelte-],.filter-item-wrapper[class*=svelte-]{border-color:var(--kute-line)}.moreKrunkerOption[class*=svelte-]:hover{border-color:var(--kute-cyan)}.inventory-filter[class*=svelte-],.filter-header[class*=svelte-]{background-color:var(--kute-panel)}.currency-card[class*=svelte-]{background:var(--kute-panel);border-color:var(--kute-line)}.search-input[class*=svelte-],.season-select[class*=svelte-],.sort-select[class*=svelte-],.category-select[class*=svelte-],.filter-tab[class*=svelte-],.filter-item[class*=svelte-]:hover,.reset-btn[class*=svelte-],.expand-btn[class*=svelte-],.toggle-all-btn[class*=svelte-],.only-btn[class*=svelte-]{background:var(--kute-raised);border-color:var(--kute-line)}.filter-tab[class*=svelte-]:hover,.reset-btn[class*=svelte-]:hover,.expand-btn[class*=svelte-]:hover,.toggle-all-btn[class*=svelte-]:hover,.only-btn[class*=svelte-]:hover{background:#1d2c32}.filter-tab.active[class*=svelte-]{background:var(--kute-cyan);color:var(--kute-bg)}.setSugBox,.viewAllUpdates,.bSliderBtn,.bundleSliderBtn,.dropsSliderBtn,.challHeadrI,.sub-tab-panel[class*=svelte-]{border-color:var(--kute-line-strong)}.challMapCrd:not(.chalCardH){border-color:var(--kute-line-strong)}.guideHeader,.guideSubH,.mailFrom,.speedRunItem,#hostActionH,#custStreakSelH{border-color:var(--kute-line)}.store-tabs[class*=svelte-],.tabs-container[class*=svelte-],#menuWindow.eterno .store-tabs[class*=svelte-]{background-color:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}.store-tab[class*=svelte-]:hover,.tab[class*=svelte-]:hover{border-bottom-color:var(--kute-line-strong)}.store-tab-active[class*=svelte-],.store-tab-active[class*=svelte-]:hover,.tab-active[class*=svelte-],.tab-active[class*=svelte-]:hover,.tabHeader.selected{border-bottom-color:var(--kute-cyan);color:var(--kute-cyan)}#menuWindow.eterno{background-color:var(--kute-bg);border-color:var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6;animation:none}.followBut,#hostMenuBtn,.chargeModalBtn,.redVouchBtn,.searchBtn,.hostToggle,.subPassChg,.updDisN,#partnerProgB,#partnrUpBtn,#findGameBtn,.joinBtn,.openCollection,#spinMultiToggleBtn,.clanSubmitBtn,.main-button-accept-secondary[class*=svelte-]{background-color:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}input:checked+.optCheck{background-color:var(--kute-cyan)}.quickJoin,.followBack,.io-input-field:focus{border-color:var(--kute-cyan)}.io-section-header:after{background:var(--kute-cyan)}.counterBadge[class*=svelte-]{background:var(--kute-pink);color:#fff}.wallet-catalog-btn[class*=svelte-] i{color:var(--kute-cyan)}.stack-collapse-fab[class*=svelte-]{background:var(--kute-cyan)}.card-title[class*=svelte-],.view-title[class*=svelte-],.table-header[class*=svelte-],.no-clan-title[class*=svelte-],.no-participation-title[class*=svelte-],.clan-benefits[class*=svelte-] h3,.clan-benefits[class*=svelte-] li:before,.eligible-maps[class*=svelte-] h3,.day-label[class*=svelte-],.day-arrow[class*=svelte-],.view-all-btn[class*=svelte-]{color:var(--kute-cyan)}.section-title[class*=svelte-]{border-left-color:var(--kute-cyan);color:var(--kute-cyan)}.category-card[class*=svelte-],.map-filter-select[class*=svelte-],.day-arrow[class*=svelte-],.day-input[class*=svelte-],.data-table[class*=svelte-] thead tr{border-color:var(--kute-line-strong)}.category-card[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:hover,.map-filter-select[class*=svelte-]:focus,.day-input[class*=svelte-]:focus{border-color:var(--kute-cyan)}.table-header.sortable.sort-asc[class*=svelte-]:after{border-bottom-color:var(--kute-cyan)}.table-header.sortable.sort-desc[class*=svelte-]:after{border-top-color:var(--kute-cyan)}.table-header.sortable[class*=svelte-]:hover,.data-table[class*=svelte-] tbody tr.clickable:hover,.data-table[class*=svelte-] tbody tr.highlight-row,.day-arrow[class*=svelte-]:hover:not(:disabled),.day-map[class*=svelte-],.eligible-maps[class*=svelte-] li,.view-all-btn[class*=svelte-],.page-btn[class*=svelte-],.view-tab.active[class*=svelte-]{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .socialModal{background-color:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}:is(#popupHolder,#app) .social-content{border-radius:var(--kute-radius-lg)}:is(#popupHolder,#app) .window-header{background:var(--kute-panel);border-bottom:1px solid var(--kute-line)}:is(#popupHolder,#app) .window-header-icon{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab{background:var(--kute-panel);transition:background-color .15s}:is(#popupHolder,#app) .sidebar-tab:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab:hover .sidebar-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active{background:var(--kute-cyan)}:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-icon,:is(#popupHolder,#app) .sidebar-tab.active .sidebar-tab-label{color:var(--kute-bg)}:is(#popupHolder,#app) .simple-tabs{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .simple-tab-active{border-bottom-color:var(--kute-cyan)}:is(#popupHolder,#app) .simple-tab-active .simple-tab-icon,:is(#popupHolder,#app) .simple-tab-active .simple-tab-label{color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-input,:is(#popupHolder,#app) .social-search-btn,:is(#popupHolder,#app) .profile-search-form,:is(#popupHolder,#app) .conversation-input,:is(#popupHolder,#app) .conversation-emoji-button{background:var(--kute-raised);border-color:var(--kute-line);border-radius:6px}:is(#popupHolder,#app) .social-search-input:focus,:is(#popupHolder,#app) .profile-search-form:focus-within,:is(#popupHolder,#app) .conversation-input:focus{border-color:var(--kute-cyan)}:is(#popupHolder,#app) .social-search-btn:hover,:is(#popupHolder,#app) .conversation-emoji-button:hover:not(:disabled){background:#1d2c32;border-color:var(--kute-line-strong);color:var(--kute-cyan)}:is(#popupHolder,#app) .social-compose-btn,:is(#popupHolder,#app) .post-follow-btn,:is(#popupHolder,#app) .conversation-send-button{background:var(--kute-cyan);border-radius:6px;transition:background-color .15s}:is(#popupHolder,#app) .social-compose-btn:hover,:is(#popupHolder,#app) .post-follow-btn:hover:not(:disabled),:is(#popupHolder,#app) .conversation-send-button:hover:not(:disabled){background:var(--kute-pink)}:is(#popupHolder,#app) .social-compose-icon,:is(#popupHolder,#app) .social-compose-label,:is(#popupHolder,#app) .post-follow-btn i,:is(#popupHolder,#app) .conversation-send-button{color:var(--kute-bg)}:is(#popupHolder,#app) .conversation-send-button:disabled{background:#24343a;color:var(--kute-faint)}:is(#popupHolder,#app) .post-card{background:var(--kute-panel);border:1px solid var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-card-clickable:hover{background:var(--kute-raised)}:is(#popupHolder,#app) .post-item-card{background:#18242999;border-color:var(--kute-line);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .post-item-card:hover{background:var(--kute-raised);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .postGameRes{background-color:var(--kute-bg);border-radius:var(--kute-radius)}:is(#popupHolder,#app) .postResRo,:is(#popupHolder,#app) .postResRoD{border-bottom-color:var(--kute-line)}:is(#popupHolder,#app) .post-content-action{color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn,:is(#popupHolder,#app) .share-btn{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .vote-btn:hover:not(:disabled),:is(#popupHolder,#app) .share-btn:hover{background:#1d2c32;border-color:var(--kute-line-strong)}:is(#popupHolder,#app) .comment-btn:hover{background:var(--kute-cyan-soft)}:is(#popupHolder,#app) .vote-btn-done,:is(#popupHolder,#app) .vote-btn-done:hover:not(:disabled){background:var(--kute-cyan);border-color:var(--kute-cyan)}:is(#popupHolder,#app) .vote-btn-done .vote-btn-icon,:is(#popupHolder,#app) .vote-btn-done .vote-btn-label,:is(#popupHolder,#app) .vote-btn-done .vote-btn-count{color:var(--kute-bg)}:is(#popupHolder,#app) .friends-root,:is(#popupHolder,#app) .conversation-root{background:var(--kute-bg)}:is(#popupHolder,#app) .friend-list{background:var(--kute-panel);border-right:1px solid var(--kute-line)}:is(#popupHolder,#app) .friend-item:hover{background:#35e0e80f}:is(#popupHolder,#app) .friend-item.selected{background:var(--kute-cyan-soft);border-left-color:var(--kute-cyan)}:is(#popupHolder,#app) .friend-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .friend-unread{background:var(--kute-pink);color:#fff}:is(#popupHolder,#app) .friend-list-search{background:var(--kute-raised);border-top:1px solid var(--kute-line)}:is(#popupHolder,#app) .conversation-header,:is(#popupHolder,#app) .conversation-compose{background:var(--kute-panel);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-presence-dot{border-color:var(--kute-panel)}:is(#popupHolder,#app) .conversation-load-earlier{background:var(--kute-raised);border-color:var(--kute-line)}:is(#popupHolder,#app) .conversation-day-divider:before,:is(#popupHolder,#app) .conversation-day-divider:after{background:var(--kute-line)}:is(#popupHolder,#app) .bubble-row.sent .bubble{background:var(--kute-cyan)}:is(#popupHolder,#app) .bubble-row.sent .bubble,:is(#popupHolder,#app) .bubble-row.sent .bubble-time,:is(#popupHolder,#app) .bubble-row.sent .bubble-status-ok{color:var(--kute-bg)}:is(#popupHolder,#app) .bubble-row.received .bubble{background:var(--kute-raised)}#app .profile-detail-root{background:var(--kute-bg);border:1px solid var(--kute-line);border-radius:var(--kute-radius-lg);box-shadow:0 24px 60px #000000a6}#app .profile-detail-header-bar{background:var(--kute-panel);border-bottom-color:var(--kute-line)}#app .profile-detail-header-icon,#app .profile-detail-section-header,#app .profile-detail-sales-header{color:var(--kute-cyan)}#app .profile-detail-back,#app .profile-detail-action,#app .profile-detail-range-btn{background:var(--kute-raised);border-color:var(--kute-line)}#app .profile-detail-back:hover,#app .profile-detail-action:hover:not(:disabled){background:#1d2c32}#app .profile-detail-action.active,#app .profile-detail-action.active i{background:var(--kute-cyan-soft);border-color:var(--kute-line-strong);color:var(--kute-cyan)}#app .profile-detail-range-btn.active{background:var(--kute-cyan);border-color:var(--kute-cyan);color:var(--kute-bg)}#app .profile-detail-identity,#app .profile-detail-sales-panel,#app .profile-detail-badges-panel,#app .profile-detail-creations-panel{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-avatar{background:var(--kute-raised);border-color:var(--kute-line-strong)}#app .profile-detail-online-dot{border-color:var(--kute-panel)}#app .profile-detail-follow-box,#app .profile-detail-title-item,#app .profile-detail-badge-item{background:var(--kute-raised)}#app .profile-detail-follow-box:hover{background:#1d2c32;border-color:var(--kute-line-strong)}#app .profile-detail-stat,#app .profile-detail-class,#app .profile-detail-raid-row,#app .profile-detail-listing-card,#app .profile-detail-creation-card{background:var(--kute-panel);border-color:var(--kute-line);border-radius:var(--kute-radius)}#app .profile-detail-listing-card:hover,#app .profile-detail-creation-card:hover{background:var(--kute-raised)}#app .profile-detail-level-badge,#app .profile-detail-xp-fill{background:var(--kute-cyan)}#app .profile-detail-level-badge{color:var(--kute-bg)}#app .profile-detail-xp-bar{background:var(--kute-raised)} +`});var oi={};A(oi,{default:()=>zb});var Bb,ti,zb,si=w(()=>{"use strict";F();Ou();Du();Bb=Fu+qu,ti=class{constructor(){this.sheet=null,d.settings.toggleKuteCss=e=>this.toggle(e),this.toggle(!0)}toggle(e){if(!e){this.sheet?.replaceSync("");return}this.sheet||(this.sheet=new CSSStyleSheet,document.adoptedStyleSheets=[this.sheet,...document.adoptedStyleSheets]),this.sheet.replaceSync(Bb)}},zb=new ti});var ci={};A(ci,{setFrameEnd:()=>Tn,takeFrameWorkMs:()=>ai});function ai(){if(ns.length<10)return 0;let s=ns.sort((t,o)=>t-o);ns=[];let e=s.slice(0,Math.ceil(s.length*.9));return e.reduce((t,o)=>t+o,0)/e.length}function Kb(s){return function(e){e!==Ku&&(Ku=e,Wu++>0&&(Vu=performance.now(),Yu.port2.postMessage(0))),s(e)}}function jb(s,e){Po<0&&(Po=e),rs++;let t=e-Po;if(ts*Ob?is+1:0,is>=2&&d.frameLimiter!=="viz"&&(as=!0),rs=0,Po=e}function Xu(){!as||!Mn?.hardFlip||(as=!1,rs=0,is=0,Po=-1)}function Ub(s){let e;for(s>200?e=1e3/(s*1.0055):e=1e3/s;performance.now()e?En=t+e:En+=e}function Gb(s){Cn=s,li?.(s)}function Ju(s){if(li!==null&&!ii)return Wb(s);let e=Mn===null?0:Mn.gameFpsLimit;if(!(e>0)){ni=0;let o=++qb%Fb;return o>=Db?$n(s):(o===0&&(Wu=0),$n(Kb(s)))}let t=Number(e);return $n(function(o){t!==ni&&(ni=t,as=!1,rs=0,is=0,Po=-1),o!==ju&&(ju=o,as?Ub(t):jb(t,o)),s(o)})}function Wb(s){ii=!0;let e=Ju(t=>{Cn=t,s(t)});return ii=!1,Uu===Cn&&Gu(ri),Uu=Cn,ri=$n(Gb),e}function Tn(s){li=s,s===null&&Gu(ri)}var $n,Gu,Hb,Ob,Mn,Fb,Db,qb,Wu,Ku,Vu,ns,Yu,En,ju,ni,as,Po,rs,is,li,ri,Cn,Uu,ii,ls=w(()=>{"use strict";F();$n=window.requestAnimationFrame,Gu=window.cancelAnimationFrame,Hb=2e3,Ob=1.15,Mn=null,Fb=256,Db=12,qb=0,Wu=0,Ku=-1,Vu=0,ns=[],Yu=new MessageChannel;Yu.port1.onmessage=()=>{ns.length<512&&ns.push(performance.now()-Vu)};Ne.then(()=>{Mn=d.settings.data});En=0,ju=-1,ni=0,as=!1,Po=-1,rs=0,is=0;document.addEventListener("pointerlockchange",Xu);window.addEventListener("resize",Xu);li=null,ri=0,Cn=-1,Uu=-2,ii=!1;window.requestAnimationFrame=Ju});var An=we((tS,Vb)=>{Vb.exports="data:image/webp;base64,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"});var ui={};A(ui,{default:()=>Yb});var Zu,di,Yb,pi=w(()=>{"use strict";Zu=ue(An(),1),di=class{constructor(){if(!document.querySelector("#mainMenuUIMount"))return;let e=document.createElement("style");e.id="kute_logoBadgeCSS",e.textContent=` #mainLogo { anchor-name: --kute-main-logo; } #gameNameHolder::after { content: ""; @@ -49,11 +49,11 @@ void main() { outColor = texture(uLabel, vUv); }`;Wr=new Float32Array(4096),Ru=0 left: calc((anchor(right) - anchor-size(width) * 0.22) - 15px); top: calc((anchor(bottom) - anchor-size(height) * 0.48) - 10px); transform: rotate(-25deg); - background: url(${Ju.default}) center / contain no-repeat; + background: url(${Zu.default}) center / contain no-repeat; pointer-events: none; - }`,document.head.append(e)}},Ub=new ci});var pi=we((Jx,Gb)=>{Gb.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} -`});var hi=we((Zx,Wb)=>{Wb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} -`});var Zu=we((Qx,Vb)=>{Vb.exports='
'});var Yb={};var mi,Qu=w(()=>{"use strict";F();Ae();mi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Zu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};d.showNotification=(s,e,t)=>{let o=new mi(s,e,t);return e?o.promise:o}});var ep=we((oS,Xb)=>{Xb.exports='
×

Kute

A high-performance Krunker client with enhanced features - made by [cute]

CREDITS
  • NullDev / NulPing - Main Developer / Maintainer
  • slavcp/glorp - base
  • 6ct/clientpp - flags
  • KraXen72/crankshaft - menu timer css
  • idkr-client/idkr - tweaks
  • bigjakk/Electron-Websocket-Fix - aim-freeze fix
  • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
  • PC7 Client and Water Client - ideas
'});var tp={};async function Jb(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(ep(),1)),Promise.resolve().then(()=>ue(An(),1))]),t=document.createElement("div");t.style=` + }`,document.head.append(e)}},Yb=new di});var hi=we((oS,Xb)=>{Xb.exports=`#tlInfHold,#newsHolder,#termsInfo,#bubbleContainer,body .popRail.popRail{display:none!important} +`});var mi=we((sS,Jb)=>{Jb.exports=`:root{--kute-classic-menu: 1}#uiBase.onMenu #spectButton{top:calc(48% - 60px)}#instructions{top:50%}#subLogoButtons{right:auto;left:50%;bottom:139px;width:950px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;transform:translate(-50%) scale(.95);transform-origin:bottom center}#matchInfoHolder{grid-column:1 / -1;position:static;order:-2;box-sizing:border-box;width:100%;flex-wrap:wrap;justify-content:flex-start;row-gap:4px;transform:none;padding:0 0 12px;margin-bottom:10px;font-size:20px;background:none;border:none;border-bottom:5px solid #585858;border-radius:0;box-shadow:none;backdrop-filter:none}#matchInfoHolder>.match-divider:has(+.match-info-actions){flex-basis:100%;height:0;margin:0;border:none;background:none}#matchInfoHolder>.match-info-actions{padding-left:7px}#mapInfo{font-size:20px}#mapInfoHld{padding-left:7px}#subLogoButtons>.actionCard{grid-column:span 2;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:6px 18px;font-size:27px;text-transform:none;background:#0003;box-shadow:none}#subLogoButtons>.actionCard .cardIcon{display:none}#subLogoButtons>.actionCard .cardLabel{font-size:27px;text-transform:none;letter-spacing:normal}#subLogoButtons>#menuBtnQuickMatch,#subLogoButtons>#menuBtnRanked{grid-column:span 3}#menuBtnHost,#menuBtnBrowser{border-color:#ed4242!important}#subLogoButtons>.popRail{grid-column:1 / -1;order:1;margin-top:10px}#menuClassContainer{left:auto;right:21px;bottom:80px;text-align:right;transform:scale(.7);transform-origin:bottom right}#menuClassContainer:before{display:none}#menuClassFooter{flex-direction:column;align-items:flex-end;margin:0 0 0 auto}#menuClassContainerInner{justify-content:flex-end;width:449px;height:85px;padding:0;gap:0;background:none;border:none}#menuClassContainerInner:hover{background:none;filter:brightness(1.15)}#menuClassContainerInfo{height:85px;justify-content:space-between}#menuClassIcn{width:85px;height:85px;margin-left:10px;border:4px solid #353534;border-radius:4px}#menuClassName{font-size:17px}#menuClassSubtext{font-size:30px;margin-bottom:0}#classPreviewCanvas{margin-bottom:-100px;margin-right:-113px}#customizeButton{box-sizing:border-box;width:449px;padding:15px;font-size:27px!important}#bubbleContainer{right:420px}body #uiBase.onMenu .spectateInfo{top:calc(48% - 150px)} +`});var Qu=we((nS,Zb)=>{Zb.exports='
'});var Qb={};var fi,ep=w(()=>{"use strict";F();Ae();fi=class{constructor(e,t,o){this.message=e,this.reqUserInput=t,this.duration=o,this.notificationEl=document.createElement("div"),this.notificationEl.id="notification",this.countdown=void 0,this.handlePromise=void 0,t&&(this.promise=new Promise(n=>{this.resolvePromise=n})),this.show()}async createNotificationElement(){let e=await Promise.resolve().then(()=>ue(Qu(),1));this.notificationEl.innerHTML=e.default,U("#notification-content",this.notificationEl).textContent=this.message,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.reqUserInput&&(U("#notification-actions",this.notificationEl).style.display="block"),document.body.append(this.notificationEl)}startTimer(){this.countdown=setInterval(()=>{this.duration--,U("#notification-timer",this.notificationEl).textContent=String(this.duration),this.duration<=0&&(clearInterval(this.countdown),this.resolvePromise&&this.resolvePromise(!1),this.hide())},1e3)}hide(){clearInterval(this.countdown),this.handlePromise&&document.removeEventListener("keydown",this.handlePromise),this.notificationEl.classList.add("slide-out"),setTimeout(()=>this.notificationEl.remove(),2e3)}show(){this.createNotificationElement(),setTimeout(()=>this.notificationEl.classList.add("slide-in"),10),this.startTimer(),this.reqUserInput&&(this.handlePromise=e=>{if(e.key==="y"||e.key==="n"){let t=e.key==="y";U(`#${e.key}`,this.notificationEl).classList.add("bounce"),this.resolvePromise(t),this.hide()}},document.addEventListener("keydown",this.handlePromise))}};d.showNotification=(s,e,t)=>{let o=new fi(s,e,t);return e?o.promise:o}});var tp=we((aS,ev)=>{ev.exports='
×

Kute

A high-performance Krunker client with enhanced features - made by [cute]

CREDITS
  • NullDev / NulPing - Main Developer / Maintainer
  • slavcp/glorp - base
  • 6ct/clientpp - flags
  • KraXen72/crankshaft - menu timer css
  • idkr-client/idkr - tweaks
  • bigjakk/Electron-Websocket-Fix - aim-freeze fix
  • bigjakk/Krunker-Civilian-Client - matchmaker, nuke counter
  • PC7 Client and Water Client - ideas
'});var op={};async function tv(){if(document.querySelector("#aboutPopupHost"))return;let[s,e]=await Promise.all([Promise.resolve().then(()=>ue(tp(),1)),Promise.resolve().then(()=>ue(An(),1))]),t=document.createElement("div");t.style=` position: fixed; top: 0; left: 0; @@ -64,7 +64,7 @@ void main() { outColor = texture(uLabel, vUv); }`;Wr=new Float32Array(4096),Ru=0 display: flex; justify-content: center; align-items: center; - `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${d.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var fi=w(()=>{"use strict";F();d.showAboutPopup=Jb});var vi={};A(vi,{default:()=>ov});function op(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function gi(){try{return localStorage.getItem(Zb)??""}catch{return""}}var Zb,Qb,ev,tv,bi,ov,wi=w(()=>{"use strict";F();Zb="kro_setngss_endMessage",Qb="slid_endMessage",ev="playerHeaderEl",tv=500;bi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==Qb||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),tv))},d.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!d.settings.data.accountEndMessage,!1)}get messages(){return{...d.settings.data.endMessages}}save(e){d.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,gi()),this.editedFor=null}check(){let e=op();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";gi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=op();if(t&&o){let r=gi();this.remember(o,r),d.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(ev);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},ov=new bi});var sp=we((rS,sv)=>{sv.exports='

'});var np={};A(np,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(sp(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Pt=w(()=>{"use strict"});var ip,rp=w(()=>{ip='

Hotkeys

Click a key, then press the new one. Escape cancels.
Ctrl, Alt and Shift combinations work too.

Lobby and window

Toggles and windows

Quick account login

Reset to defaults
Done
'});var Ei={};A(Ei,{bindings:()=>gt,default:()=>bv,matches:()=>cs});function lv(){if(d.settings.data.chatLogs===!1||!d.chatLogs){d.showNotification("Chat Logs is off in the settings",!1,3);return}d.chatLogs.toggle()}function cv(s){if(d.settings.data.accountManager===!1||!d.accounts){d.showNotification("Account Manager is off in the settings",!1,3);return}d.accounts.loginSlot(s)}function yi(){return!!d.hostFeatures?.includes(rv)}function gt(){let s=yi()&&d.settings.data.hotkeys||{};return Object.fromEntries(Ln.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function ap(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function cs(s,e){return ap(s,gt()[e]??null)}function uv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return dv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function hv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:pv[s]??`Key ${s}`}function mv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=hv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function fv(s,e,t){let o=[],n=Ln.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=uv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function gv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var rv,iv,av,Io,ki,Ln,dv,pv,xi,Si,bv,No=w(()=>{"use strict";rp();F();To();rv="hotkeys",iv=131,av=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Io=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),ki=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>cv(s-1)}),Ln=[{id:"newLobby",label:"New lobby",group:"window",fallback:Io(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Io(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Io(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Io(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Io(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Io(112,"F1"),run:lv},ki(1),ki(2),ki(3)],dv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];pv={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};xi=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=ip,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...gt(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let p=document.createElement("span");p.className="hkNote",p.textContent=e.note,r.append(p)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?fv(e,o,t):[];if(c.length===0)return n;let u=document.createElement("div");u.className="hkWarn",u.textContent=c.join(" ");let h=document.createElement("div");return h.append(n,u),h}render(){let e=gt();for(let t of["window","toggle","account"]){let o=Ln.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}av.has(e.key)||e.keyCode===iv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:mv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},Si=class{constructor(){this.capturing=!1,d.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||gv()||!yi())return;let t=gt();for(let o of Ln)o.group==="window"||!ap(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if(Mo(d.settings.data,e)){d.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!d.settings.data[e];d.settings.changeSetting(e,o,!1),d.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){d.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!yi()){d.showNotification("Hotkeys need a newer Kute",!1,3);return}new xi(this)}},bv=new Si});var lp=we((dS,vv)=>{vv.exports='
×

Accounts

Click an account to log in, drag ≡ to reorder
Add account
'});var Mi={};A(Mi,{default:()=>Mv});function It(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function up(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function ds(){try{let s=JSON.parse(localStorage.getItem(us)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function $v(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:wv}function Cv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function pp(s,e,t){let o=$v(e);s.style.background=o,s.style.color=Cv(o),s.textContent=t.trim().slice(0,1)||"?"}var us,wv,$i,kv,cp,yv,xv,Sv,Ev,dp,Ci,Mv,Ti=w(()=>{"use strict";F();Ae();Pt();yn();No();us="accounts",wv="#35e0e8",$i="kute_account_switch",kv=12e4,cp=3e4,yv=3e3,xv=2e4,Sv=3e3,Ev=5e3,dp=s=>new Promise(e=>{setTimeout(e,s)});Ci=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,d.settings.toggleAccountManager=e=>this.toggle(e),d.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=ds(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:It(n.username),password:It(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(us)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:It(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem($i);if(e===null)return;sessionStorage.removeItem($i);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>kv||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),Oe())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_account Accounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(lp(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=p=>p.stopPropagation(),i.onpointerdown=p=>this.startDrag(p,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",pp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let u=document.createElement("div");u.className="accRemove",u.textContent="\xD7",u.title="Remove",u.onclick=p=>{p.stopPropagation(),this.removeAccount(n).catch(f=>console.error("[kute] accounts:",f))};let h=document.createElement("div");h.className="accKey",r.append(i,a,l,c,h,u),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=gt();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!d.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){d.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(p=>p!==t),c=l.find(p=>{let f=p.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(p)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(u!==h){for(let p of l.slice(0,u))o.insertBefore(p,t);for(let p of l.slice(u))o.append(p);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=ds().sort((n,r)=>t(It(n.username))-t(It(r.username)));localStorage.setItem(us,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){d.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){d.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;pp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=ds();r.push({username:up(e),password:up(t),color:o}),localStorage.setItem(us,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(us,JSON.stringify(ds().filter(n=>It(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem($i,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ro();return}}else{if(o){kn(cp),window.logoutAcc();for(let n=0;nconsole.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=Sv)){kn(cp),Ro();return}}}legacyLogin(e){let t=ds().find(r=>It(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=It(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},Mv=new Ci});var mp={};A(mp,{default:()=>he});var Tv,Av,Lv,Ai,hp,he,Nt=w(()=>{"use strict";F();Tv=4e3,Av=5e3,Lv=3,Ai=class{constructor(){this.base=typeof d.apiBase=="string"?d.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,d.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return d.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Tv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Av),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,u=Math.max(l||0,c||0,Number(i?.resetAt)||0),h=r.status===429?Math.max(Date.now()+1e3,u||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:h}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=Lv&&(this.down=!0)}},hp=new Ai;d.api=hp;he=hp});var bp={};var gp,Rv,Pv,fp,Li=w(()=>{"use strict";F();Ae();gp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),u=Array.from(c).find(h=>h.innerText.trim().toLowerCase()===s.mapId.toLowerCase());u&&(e=u.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[u,h]of Object.entries(c)){let p=a.indexOf(u),f=await $e(`#customSclassLim${p}`);f.value=String(h)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},Rv=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Pv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},fp=sessionStorage.getItem("pendingCompHost");if(fp){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(fp);gp(s)}d.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Pv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await Rv(o.region),window.location.href="https://krunker.io/"):await gp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await d.parseArgs(s.data.args)})});var wp={};A(wp,{CLOCK_MS:()=>Iv,EXPERIENCE:()=>ps,IMPORTANT_SHARE:()=>hs,TARGET_REFRESH_MULTIPLE:()=>vt,accept:()=>ks,atLimit:()=>zo,capCandidates:()=>Hi,choose:()=>gs,chooseCap:()=>Bi,collapses:()=>vs,compare:()=>Ii,experienceHolds:()=>Nv,flooding:()=>ws,guard:()=>io,headroom:()=>zi,refineCaps:()=>Oi,screen:()=>Ni,stalled:()=>bs,steady:()=>ao,steadyLimit:()=>_i,steadyRungs:()=>Rn,summarize:()=>ye,unsteady:()=>bt,wins:()=>Bo});function Pi(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of _o){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=ms.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Pi(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function fs(s){return s==="fps"?0:2*.1}function Ii(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=ms.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,fs(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function io(s,e,t,o=fs(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=ms.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function Bo(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=ms.has(s)?o.worst-n.best:n.best-o.worst;return r>fs(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function Ni(s,e){if(s.invalid)return"same";let t=!1;for(let o of _o){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=ms.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,fs(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function gs(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let u=ye(c.readings),h={};for(let m of _o)h[m]=Ii(m,u,o);let p=ps.some(m=>io(m,u,o)==="worse"),f=ps.find(m=>Bo(m,u,o))??null;return f===null&&t.fpsCounts!==!1&&Bo("fps",u,o)&&(f="fps"),{id:c.id,summary:u,verdicts:h,rejected:p,decidedBy:f}}),r=n.length>0&&n.every(c=>_o.every(u=>c.verdicts[u]==="unknown")),i=c=>c.decidedBy===null?_o.length:_o.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,u)=>i(c)-i(u))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function bs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function bt(s,e){return s.some(t=>bs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!bt(s,e)}function vs(s){return[...s.values()].some(e=>e.filter(bs).length>=2)}function Rn(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function _i(s,e){let t=null,o=null;for(let n of Rn(s)){if(!ao(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function ws(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function zo(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=ws(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function vp(s){return s==="p99"||s==="maxMs"?4*.1:fs(s)}function Bi(s,e,t={}){let o=p=>ye((s.get(p)??[]).map(zo)),n=p=>{let f=(s.get(p)??[]).filter(m=>!m.invalid).map(m=>m.p50).filter(m=>typeof m=="number");return f.length>0?Pi(f):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(p=>{let f=o(p),m=n(p);if(p===e)return{cap:p,summary:f,frameMs:m,netMs:null,outcome:"yours"};if(bt(s.get(p)??[],p))return{cap:p,summary:f,frameMs:m,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Ri.map(H=>[H,Ii(H,f,r)])),b=e===0||p>0&&pBo(H,f,r)?(r[H].median??0)-(f[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&io("inputP99",f,r)==="worse"?(f.inputP99.median??0)-(r.inputP99.median??0):0,y=g.inputP99==="unknown"?null:k("inputP99")-L,C=E+(y??i-m);a.set(p,E+(y??0));let I=L>0&&E>L,_="not better";return Ri.some(H=>(H!=="inputP99"||!I)&&io(H,f,r,vp(H))==="worse")?_="worse":C>2*.1&&(_="better"),{cap:p,summary:f,frameMs:m,netMs:C,gains:{task:E,input:y},outcome:_}}),c=l.filter(p=>p.outcome==="better").sort((p,f)=>(f.netMs??0)-(p.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let u=l.find(p=>p.cap===t.prefer&&p.cap!==e),h=u!==void 0&&(e===0||u.capu.filter(h=>!h.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(zo)),a=ye(e.map(zo)),l=io("fps",ye(e),ye(s))==="worse";if(bt(e,o)&&!(bt(s,t)&&Bo("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let u of Ri){let h=io(u,a,i,vp(u));if(h==="worse"&&u==="inputP99"&&n&&Bo("taskP99",a,i)){let p=(i.taskP99.median??0)-(a.taskP99.median??0),f=(a.inputP99.median??0)-(i.inputP99.median??0);if(p>f){c={task:p,input:f};continue}}if(h==="worse")return{keep:!1,failed:u};if(h==="unknown"&&u!=="inputP99")return{keep:!1,failed:"reference"}}if(io("inputP99",a,i)==="unknown"){let u=p=>Pi(r(p).map(f=>f.p50??0));if(u(e)-u(s)>Math.max(2*.1,u(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function zi(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Nv(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function Hi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function Oi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var hs,vt,Iv,ps,_o,ms,Ri,ys=w(()=>{"use strict";hs=.1,vt=3,Iv=.1,ps=["taskP99","inputP99","p99","stallMs","maxMs"],_o=[...ps,"fps"],ms=new Set(["fps"]);Ri=["taskP99","inputP99","p99","stallMs","maxMs"]});var xp={};A(xp,{PIPELINE:()=>Fe,cancel:()=>Di,currentPipeline:()=>In,measureCaps:()=>Ki,searchPipeline:()=>qi});function In(){return Object.fromEntries(Fe.map(s=>[s.setting,(d.running?.[s.setting]??d.settings.data[s.setting])!==!1]))}function yp(s,e){return s!=="hardFlip"||!e.hardFlip?null:d.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function dt(s,e){let t=Fe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Bv.map(r=>`${r.key}=${d.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${d.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Fi(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function xs(s,e){let t=Date.now()*100+ ++Fv%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function Di(){window.chrome.webview.postMessage("bench-cancel")}async function qi({hz:s,progress:e,cancelled:t}){let o=In();e("Testing the client (1 of 4)",0);let n=await xs([dt(o,`hz=${s}`)],Pn),r=Fi(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(kp[1],Math.max(kp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Fe.filter(C=>yp(C.setting,o)===null).map(C=>({entry:C,pipeline:{...o,[C.setting]:!o[C.setting]}}));e("Testing the client (2 of 4)",.15);let u=await xs([dt(o,l),...c.map(C=>dt(C.pipeline,l)),dt(o,l)],Pn*(c.length+2));if(t()||u===null)return null;let h=C=>Fi(C?.page?.stats,C?.page?.otherTasks,C?.present),p=[h(u[0]),h(u[u.length-1])],f=ye(p),m=_v.some(C=>{let{median:I,spread:_}=f[C];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:p,outcome:"current"}];for(let C of Fe){let I=yp(C.setting,o);I!==null&&g.push({id:C.setting,label:`${C.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[C,I]of c.entries()){let _=h(u[C+1]),H=_.invalid?"failed":Ni(_,f);m&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Ov[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:f.fps.median};e("Testing the client (3 of 4)",.55);let v=await xs([...b.map(C=>dt(C.pipeline,l)),dt(o,l)],Pn*(b.length+1));if(t()||v===null)return null;for(let[C,I]of b.entries())I.readings.push(h(v[C]));p.push(h(v[v.length-1]));let k=gs({id:"current",readings:p},b.map(C=>({id:C.id,readings:C.readings})));for(let C of b){let I=k.judged.find(_=>_.id===C.id);C.outcome="not better",I?.rejected?C.outcome="worse":I?.decidedBy&&(C.outcome="better")}let E=b.filter(C=>C.outcome==="better"),L=g.find(C=>C.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let C={...o};for(let J of E)C[J.id]=J.pipeline[J.id];let I=await xs([dt(C,l),dt(o,l),dt(C,l)],Pn*3);if(t()||I===null)return null;p.push(h(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:C,readings:[h(I[0]),h(I[2])],outcome:"not better"};g.push(_);let H=gs({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=gs({id:"current",readings:p},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let y=L.id!=="current";return{winner:L.pipeline,changed:y,decidedBy:y?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function Ki({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${dt(s,e)},caps=${t.join(".")},rounds=2,ms=${Hv}`,i=(await xs([n],zv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Fi(l.stats,l.otherTasks));return a}var _v,Fe,Bv,Pn,zv,Hv,kp,Ov,Fv,ji=w(()=>{"use strict";F();ys();_v=["fps","taskP99","p99"],Fe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>d.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Bv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],Pn=2e4,zv=7e4,Hv=1500,kp=[.25,16],Ov={contender:"better",same:"not better",worse:"worse",failed:"failed"};Fv=0});var Ep={};A(Ep,{MIN_RESOLUTION:()=>Ss,SIGNIFICANT_RESOLUTION:()=>Sp,SIGNIFICANT_SETTING:()=>Nn,decide:()=>_n});function _n({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=Sp?"gpu":"cpu");let c=[],u=s;if(!a){let h=n.filter(p=>p.gain!==null&&p.steady&&p.current!==p.cheap&&p.gain>=Nn).sort((p,f)=>(f.gain??0)-(p.gain??0));for(let p of h){if(u>=i)break;let f=p.gain??1;u*=f,c.push({id:p.id,label:p.label,value:p.cheap,reason:`measured +${Math.round((f-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:u,tuneResolution:!a&&l==="gpu"&&u{"use strict";ys();Nn=1.05,Sp=1.1,Ss=.75});var Xi={};A(Xi,{ALL_IDS:()=>Wi,GAME_FRAME_CAP:()=>kt,PRESET:()=>Gi,RESOLUTION:()=>lo,SETTINGS:()=>wt,label:()=>Vi,opposite:()=>Yi,read:()=>$s,resetCache:()=>Bn,write:()=>Me});function Vi(s){return wt.find(e=>e.id===s)?.label??s}function Dv(){if(Es)return Es;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";wt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],Gi={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},lo="resolution",kt="updateRate",Wi=[...wt.map(s=>s.id),lo,kt];Es=null});var Cp,$p=w(()=>{Cp=`

Auto-Detect

Don't touch mouse or keyboard. Escape cancels
Undo
Details
Advanced
Run now
OK
    `});var Mp={};A(Mp,{activity:()=>Bt,hostLobby:()=>Cs,inRoom:()=>zn,spawn:()=>Ms,spawned:()=>Zi});function Bt(){try{return window.getGameActivity?.()??{}}catch{return{}}}function zn(s){let e=Bt();return!!s&&!!e.custom&&e.id===s}async function Cs(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=Bt().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await _t(800),window.windows[7]?.switchTab?.(0),await _t(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Kv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await _t(250);let i=Bt();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await _t(1500)}return null}function Zi(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function Ms(s){for(let o=0;o<40&&!(Bt().map&&document.querySelector("#instructions"));o++)await _t(250);await _t(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Zi();o++){if(!zn(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await _t(1200)}return await _t(800),Zi()}var Kv,_t,Hn=w(()=>{"use strict";Kv="gameMap0",_t=s=>new Promise(e=>{setTimeout(e,s)})});var Lp={};A(Lp,{REPLAY_CIRCLE_MS:()=>zt,takeInputDiagnostics:()=>On,takeReading:()=>Qi});function On(){let s=Ze;return Ze=Ap(),s}function Qi({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new no,i=new ro,a=new ss,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,u=l()?null:"the window was not in front",h=()=>{l()||(u??="the window lost focus")},p=()=>{document.pointerLockElement!==null!==c&&(u??=c?"the game let go of the mouse":"the game took the mouse")},f=()=>{window.removeEventListener("blur",h),document.removeEventListener("visibilitychange",h),document.removeEventListener("pointerlockchange",p)};window.addEventListener("blur",h),document.addEventListener("visibilitychange",h),document.addEventListener("pointerlockchange",p);let m=setTimeout(()=>{f(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Ze.readings++,t&&c&&(Ze.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Tp&&Ze.withInput++,L===null&&(u??="too few frames"),u!==null&&(Ze.invalid[u]=(Ze.invalid[u]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Tp?E.p99:null,invalid:u!==null,...u===null?{}:{why:u}})};requestAnimationFrame(b)})}var zt,Tp,Ap,Ze,ea=w(()=>{"use strict";xn();zt=600,Tp=20,Ap=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Ze=Ap();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Ze.hostSteps+=Number(e.sent)||0,Ze.ended[e.reason]=(Ze.ended[e.reason]??0)+1)})});var aa={};A(aa,{loggedIn:()=>Ls});function Ht(){try{return JSON.parse(localStorage.getItem(Kn)??"null")}catch{return null}}function qe(s){localStorage.setItem(Kn,JSON.stringify(s))}function Ls(){return document.querySelector("#signedInHeaderBar")!==null}function Ot(s,e){d.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function pt(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function Jv(){let s=/--autodetect-dev=(\S+)/.exec(d.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function Bp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function xt(s,e=1){return s===null?"?":s.toFixed(e)}function Dt(s){return s>0?`${s} FPS`:"no limit"}function Zv(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${xt(e[s].median)} to ${xt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${xt(e.fps.median,0)} to ${xt(t.fps.median,0)} FPS`}[s]}function zp(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ft(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function na(s){return`${xt(s.fps.median,0)}${Ft(s.p99.median)}${Ft(s.taskP99.median)}${Ft(s.inputP99.median)}`}function jn(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function Qv(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

    Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

    `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

    The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

    `}function ut(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function e0(s){let e=[[`As you had it (${Dt(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(u=>u.where==="test match").map(u=>[Dt(u.cap),u.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=u=>{let h=(u?.nvidia??[]).map(p=>p.clockMhz).filter(p=>typeof p=="number");return h.length>0?Math.max(...h):null},i=u=>{let h=(u?.nvidia??[]).reduce((f,m)=>f|(m.heldBack??0),0),p=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([f])=>(h&Number(f))!==0).map(([,f])=>f);return p.length>0?p.join(", "):h===0?"no":`yes (${h})`},a=[...s.played??[],...s.unlimited??[]].some(u=>(u.load?.nvidia??[]).length>0),l=e.filter(([,u])=>u.some(h=>h.load)).map(([u,h])=>{let p=h.map(m=>m.load),f=(m,g)=>ut(p.map(b=>m===null?null:b?.gpu?.[m]?.[g]),"%");return`${u}${ut(h.map(m=>m.fps),"")}${ut(p.map(m=>m?.cpuBusy),"%")} + `;let o=document.createElement("div");o.id="aboutPopupHost",t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=s.default;let r=n.querySelector("#aboutLogo");r&&(r.src=e.default);let i=n.querySelector("#aboutVersion");i&&(i.textContent=`Version ${d.version}`);for(let c of n.querySelectorAll("[data-url]"))c.addEventListener("click",()=>window.chrome.webview.postMessage(`open-url, ${c.getAttribute("data-url")}`));let a=new AbortController,l=()=>{a.abort(),t.remove()};n.querySelector("#aboutClose")?.addEventListener("click",l),t.addEventListener("mousedown",c=>{c.target===t&&l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l()},{signal:a.signal}),document.body.append(t)}var gi=w(()=>{"use strict";F();d.showAboutPopup=tv});var wi={};A(wi,{default:()=>iv});function sp(){if(!document.getElementById("signedInHeaderBar"))return null;try{return localStorage.getItem("krunker_username")||null}catch{return null}}function bi(){try{return localStorage.getItem(ov)??""}catch{return""}}var ov,sv,nv,rv,vi,iv,ki=w(()=>{"use strict";F();ov="kro_setngss_endMessage",sv="slid_endMessage",nv="playerHeaderEl",rv=500;vi=class{constructor(){this.account=void 0,this.header=new MutationObserver(()=>this.check()),this.saveTimer=0,this.editedFor=null,this.onInput=e=>{!(e.target instanceof HTMLInputElement)||e.target.id!==sv||!this.account||(this.editedFor=this.account,clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.flush(),rv))},d.settings.toggleAccountEndMessage=e=>this.toggle(e,!0),this.toggle(!!d.settings.data.accountEndMessage,!1)}get messages(){return{...d.settings.data.endMessages}}save(e){d.settings.data.endMessages=e,window.chrome.webview.postMessage(`set-config-json endMessages ${JSON.stringify(e)}`)}remember(e,t){let{messages:o}=this;(o[e]??"")!==t&&(t?o[e]=t:delete o[e],this.save(o))}flush(){clearTimeout(this.saveTimer),this.editedFor&&this.remember(this.editedFor,bi()),this.editedFor=null}check(){let e=sp();if(e===this.account)return;this.flush(),this.account=e;let t=e?this.messages[e]??"":"";bi()!==t&&window.setSetting("endMessage",t)}toggle(e,t){if(this.header.disconnect(),document.removeEventListener("input",this.onInput,!0),!e){this.flush(),this.account=void 0;return}let o=sp();if(t&&o){let r=bi();this.remember(o,r),d.showNotification(r?`Kept "${r}" for ${o}. Other accounts send nothing until you give them one`:`End messages are now per account, ${o} has none`,!1,6)}document.addEventListener("input",this.onInput,!0);let n=document.getElementById(nv);n?this.header.observe(n,{childList:!0}):console.error("[kute] end message: no account header"),this.check()}},iv=new vi});var np=we((dS,av)=>{av.exports='

    '});var rp={};A(rp,{confirmPopup:()=>Ce});async function Ce(s){let e=await Promise.resolve().then(()=>ue(np(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=i=>n.querySelector(`#${i}`);r("confirmTitle").textContent=s.title;for(let i of s.paragraphs){let a=document.createElement("p");a.textContent=i,r("confirmText").append(a)}return r("confirmStay").textContent=s.stay,r("confirmLeave").textContent=s.leave,new Promise(i=>{let a=new AbortController,l=c=>{a.abort(),t.remove(),i(c)};r("confirmStay").onclick=()=>l(!1),r("confirmLeave").onclick=()=>l(!0),t.addEventListener("mousedown",c=>{c.target===t&&l(!1)}),document.addEventListener("keydown",c=>{c.key==="Escape"&&l(!1)},{signal:a.signal}),document.body.append(t)})}var Pt=w(()=>{"use strict"});var ap,ip=w(()=>{ap='

    Hotkeys

    Click a key, then press the new one. Escape cancels.
    Ctrl, Alt and Shift combinations work too.

    Lobby and window

    Toggles and windows

    Quick account login

    Reset to defaults
    Done
    '});var $i={};A($i,{bindings:()=>gt,default:()=>yv,matches:()=>cs});function pv(){if(d.settings.data.chatLogs===!1||!d.chatLogs){d.showNotification("Chat Logs is off in the settings",!1,3);return}d.chatLogs.toggle()}function hv(s){if(d.settings.data.accountManager===!1||!d.accounts){d.showNotification("Account Manager is off in the settings",!1,3);return}d.accounts.loginSlot(s)}function xi(){return!!d.hostFeatures?.includes(cv)}function gt(){let s=xi()&&d.settings.data.hotkeys||{};return Object.fromEntries(Ln.map(e=>[e.id,s[e.id]??(e.id in s?null:e.fallback)]))}function lp(s,e){return!!e&&s.keyCode===e?.key&&s.ctrlKey===e.ctrl&&s.altKey===e.alt&&s.shiftKey===e.shift}function cs(s,e){return lp(s,gt()[e]??null)}function fv(s){let e=(t,o)=>{try{let n=window.localStorage.getItem(t);return n===null?o:Number(n)}catch{return o}};return mv.filter(([t,,o,n])=>e(`cont_${t}`,o)===s||e(`cont_${t}_alt`,n)===s).map(([,t])=>t)}function bv(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`Num ${s-96}`:s>=112&&s<=135?`F${s-111}`:gv[s]??`Key ${s}`}function vv(s){let{code:e}=s,t=e;return/^Key[A-Z]$/.test(e)?t=e.slice(3):/^Digit\d$/.test(e)?t=e.slice(5):e.startsWith("Numpad")?t=`Num ${e.slice(6)}`:e.startsWith("Arrow")?t=e.slice(5):e||(t=bv(s.keyCode)),[s.ctrlKey&&"Ctrl",s.altKey&&"Alt",s.shiftKey&&"Shift",t].filter(Boolean).join("+")}function wv(s,e,t){let o=[],n=Ln.filter(i=>{let a=t[i.id];return i.id!==s.id&&a!==null&&a.key===e.key&&a.ctrl===e.ctrl&&a.alt===e.alt&&a.shift===e.shift});n.length>0&&o.push(`Also bound to Kute's ${n.map(i=>i.label).join(", ")}, pick another key.`);let r=fv(e.key);if(r.length>0){let i=r.length>3?` and ${r.length-3} more`:"";o.push(`Krunker uses this key for ${r.slice(0,3).join(", ")}${i}, the game still gets it.`)}return o}function kv(){let s=document.activeElement;for(;s?.shadowRoot?.activeElement;)s=s.shadowRoot.activeElement;return s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLElement&&s.isContentEditable}var cv,dv,uv,Io,yi,Ln,mv,gv,Si,Ei,yv,No=w(()=>{"use strict";ip();F();To();cv="hotkeys",dv=131,uv=new Set(["Shift","Control","Alt","Meta","AltGraph"]);Io=(s,e)=>({key:s,ctrl:!1,alt:!1,shift:!1,name:e}),yi=s=>({id:`account${s}`,label:`Account ${s}`,note:`logs in account ${s} of the Accounts list`,group:"account",fallback:{key:48+s,ctrl:!0,alt:!0,shift:!1,name:`Ctrl+Alt+${s}`},run:()=>hv(s-1)}),Ln=[{id:"newLobby",label:"New lobby",group:"window",fallback:Io(115,"F4")},{id:"matchmaker",label:"Matchmaker",note:"new lobby while the Matchmaker setting is off",group:"window",fallback:Io(117,"F6")},{id:"reload",label:"Reload",group:"window",fallback:Io(116,"F5")},{id:"fullscreen",label:"Fullscreen",group:"window",fallback:Io(122,"F11")},{id:"devtools",label:"Developer tools",group:"window",fallback:Io(123,"F12")},{id:"toggleSpotify",label:"Spotify overlay",note:"on and off",group:"toggle",fallback:null,setting:"spotifyOverlay"},{id:"toggleKeystrokes",label:"Keystrokes",note:"on and off",group:"toggle",fallback:null,setting:"keystrokes"},{id:"chatLogs",label:"Chat logs",note:"open and close",group:"toggle",fallback:Io(112,"F1"),run:pv},yi(1),yi(2),yi(3)],mv=[["0","Forward",87,-1],["1","Back",83,-1],["2","Left",65,-1],["3","Right",68,-1],["jumpKey","Jump",32,-1],["crouchKey","Crouch",16,-1],["reloadKey","Reload",82,-1],["swapKey","Swap weapon",69,-1],["primKey","Primary weapon",84,-1],["meleeKey","Melee",81,-1],["equipKey","Equip",67,-1],["dropKey","Drop",90,-1],["inspKey","Inspect",88,-1],["wepVisKey","Hide weapon",-1,-1],["sprayKey","Spray",70,-1],["sprayWheelKey","Spray wheel",70,-1],["interactKey","Interact",71,-1],["interactSecKey","Second interact",72,-1],["confirmKey","Confirm",75,-1],["resetKey","Reset",66,-1],["resetLastKey","Reset to last",78,-1],["markPositionKey","Mark position",10002,-1],["chatKey","Chat",13,-1],["voiceKey","Voice chat",86,-1],["pListKey","Player list",18,-1],["sBoardKey","Scoreboard",9,-1],["hidePlayersKey","Hide players",-1,-1],["kickVoteYKey","Kick vote yes",49,-1],["kickVoteNKey","Kick vote no",50,-1],["kpdVoteYKey","Vote yes",89,-1],["kpdVoteNKey","Vote no",78,-1],["kpdVisionKey","Vision",187,-1],["specFreeKey","Spectate free camera",70,-1],["specObjKey","Spectate objective",72,-1],["specFirstKey","Spectate first person",82,-1],["specNamesKey","Spectate names",77,-1],["specMiniMap","Spectate minimap",189,-1],["specFocusKey","Spectate focus",190,-1],["propKey","Prop",80,-1],["propRandKey","Random prop",77,-1],["propRotKey","Rotate prop",82,-1],["propRotRKey","Rotate prop back",78,-1],["18","Streak 1",49,-1],["19","Streak 2",50,-1],["20","Streak 3",51,-1],...[0,1,2,3,4,5].map(s=>[`taunt${s}`,`Taunt ${s+1}`,49+s,-1]),...["27","28","29","30","31","32"].map((s,e)=>[s,`Toggle ${e+1}`,-1,-1]),...["43","44","45","46","47","48"].map((s,e)=>[s,`Chat message ${e+1}`,-1,-1])];gv={8:"Backspace",9:"Tab",13:"Enter",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",45:"Insert",46:"Delete"};Si=class{constructor(e){this.owner=e,this.waiting=null,this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");this.overlay.append(t),this.shadow=t.attachShadow({mode:"open"}),this.shadow.innerHTML=ap,document.body.append(this.overlay),this.onKey=this.onKey.bind(this),window.addEventListener("keydown",this.onKey,!0),this.overlay.addEventListener("click",o=>{o.target===this.overlay&&this.close()}),this.element("hkDone").onclick=()=>this.close(),this.element("hkReset").onclick=()=>{this.owner.save({}),this.stopWaiting(),this.render()},this.render()}element(e){return this.shadow.querySelector(`#${e}`)}startWaiting(e){this.stopWaiting(),this.waiting=e,this.owner.capturing=!0,window.chrome.webview.postMessage("hotkeys-pause, true"),this.render()}stopWaiting(){this.waiting!==null&&(this.waiting=null,this.owner.capturing=!1,window.chrome.webview.postMessage("hotkeys-pause, false"),this.render())}assign(e,t){this.owner.save({...gt(),[e]:t}),this.stopWaiting(),this.render()}row(e,t){let o=t[e.id],n=document.createElement("div");n.className="hkRow";let r=document.createElement("div");if(r.className="hkLabel",r.textContent=e.label,e.note){let p=document.createElement("span");p.className="hkNote",p.textContent=e.note,r.append(p)}let i=this.waiting===e.id,a=document.createElement("div");a.className=`hkKey${i?" hkWaiting":""}${o?"":" hkNone"}`,a.textContent=i?"Press a key":o?.name??"No key",a.title="Click, then press the new key. Escape cancels",a.onclick=()=>this.startWaiting(e.id);let l=document.createElement("div");l.className="hkClear",l.textContent="Clear",l.style.visibility=o?"":"hidden",l.onclick=()=>this.assign(e.id,null),n.append(r,a,l);let c=o?wv(e,o,t):[];if(c.length===0)return n;let u=document.createElement("div");u.className="hkWarn",u.textContent=c.join(" ");let h=document.createElement("div");return h.append(n,u),h}render(){let e=gt();for(let t of["window","toggle","account"]){let o=Ln.filter(n=>n.group===t).map(n=>this.row(n,e));this.element(`hkGroup-${t}`).replaceChildren(...o)}}onKey(e){if(this.waiting===null){e.key==="Escape"&&this.close();return}if(e.preventDefault(),e.stopImmediatePropagation(),e.key==="Escape"){this.stopWaiting();return}uv.has(e.key)||e.keyCode===dv||e.keyCode===0||this.assign(this.waiting,{key:e.keyCode,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,name:vv(e)})}close(){this.stopWaiting(),window.removeEventListener("keydown",this.onKey,!0),this.overlay.remove()}},Ei=class{constructor(){this.capturing=!1,d.hotkeys={edit:()=>this.edit()},window.addEventListener("keydown",e=>this.onKey(e),!0)}onKey(e){if(this.capturing||e.repeat||kv()||!xi())return;let t=gt();for(let o of Ln)o.group==="window"||!lp(e,t[o.id])||(o.run?o.run():o.setting&&this.flip(o.setting,o.label))}flip(e,t){if(Mo(d.settings.data,e)){d.showNotification(`${t} is off in performance mode`,!1,3);return}let o=!d.settings.data[e];d.settings.changeSetting(e,o,!1),d.showNotification(`${t} ${o?"on":"off"}`,!1,2)}save(e){d.settings.data.hotkeys=e,window.chrome.webview.postMessage(`set-config-json hotkeys ${JSON.stringify(e)}`)}edit(){if(!xi()){d.showNotification("Hotkeys need a newer Kute",!1,3);return}new Si(this)}},yv=new Ei});var cp=we((fS,xv)=>{xv.exports='
    ×

    Accounts

    Click an account to log in, drag ≡ to reorder
    Add account
    '});var Ti={};A(Ti,{default:()=>Rv});function It(s){let e=decodeURIComponent(s),t=e.length;return e.split("").map(o=>String.fromCharCode(o.charCodeAt(0)-t)).join("")}function pp(s){let e=s.length,t=s.split("").map(o=>String.fromCharCode(o.charCodeAt(0)+e)).join("");return encodeURIComponent(t)}function ds(){try{let s=JSON.parse(localStorage.getItem(us)||"[]");return Array.isArray(s)?s:[]}catch{return[]}}function Av(s){return typeof s=="string"&&/^#[\da-f]{6}$/i.test(s)?s:Sv}function Lv(s){let e=Number.parseInt(s.slice(1),16),t=e>>16&255,o=e>>8&255,n=e&255;return t*.299+o*.587+n*.114>150?"#111":"#fff"}function hp(s,e,t){let o=Av(e);s.style.background=o,s.style.color=Lv(o),s.textContent=t.trim().slice(0,1)||"?"}var us,Sv,Ci,Ev,dp,$v,Cv,Mv,Tv,up,Mi,Rv,Ai=w(()=>{"use strict";F();Ae();Pt();yn();No();us="accounts",Sv="#35e0e8",Ci="kute_account_switch",Ev=12e4,dp=3e4,$v=3e3,Cv=2e4,Mv=3e3,Tv=5e3,up=s=>new Promise(e=>{setTimeout(e,s)});Mi=class{constructor(){this.button=document.createElement("div"),this.button.textContent="Accounts",this.button.classList.add("button","buttonB","bigShadowT"),this.button.style.cssText="display: block; padding-top: 7px; padding-bottom: 22px; font-size: 25px!important; padding-bottom: 22px; margin-top: 7px; height: 21px; line-height: 35px; width: 162px; font-size:20px!important; margin-left: 3px;",this.headerSeparator=document.createElement("div"),this.headerSeparator.style.cssText="width: 4px; height: 35px; margin: 0 6px; background: rgba(255, 255, 255, 0.12); flex-shrink: 0;",this.headerItem=document.createElement("div"),this.headerItem.style.cssText="display: flex; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; color: #fff; font-weight: 700; font-size: 16px; white-space: nowrap;",this.headerItem.innerHTML='switch_accountAccounts',this.headerObserver=new MutationObserver(()=>this.placeButton()),this.overlay=null,this.shadow=null,this.menuController=null,this.asking=!1,this.accounts=[],this.legacy=!1,this.lastQuickLogin=0,this.suppressClick=!1,d.settings.toggleAccountManager=e=>this.toggle(e),d.accounts={loginSlot:e=>this.loginSlot(e)},this.toggle(!0),this.load()}async load(){let e=ds(),t=null;if(e.length>0){let o=e.filter(n=>typeof n?.username=="string"&&typeof n?.password=="string").map(n=>({username:It(n.username),password:It(n.password),color:n.color}));t=await Te(`accounts-migrate ${JSON.stringify(o)}`,"accounts",5e3),t!==null&&localStorage.removeItem(us)}else t=await Te("accounts-list","accounts");t===null?(this.legacy=!0,this.accounts=e.map(o=>({username:It(o.username),color:o.color}))):this.accounts=t,this.renderAccounts(),this.resumeSwitch()}resumeSwitch(){let e=sessionStorage.getItem(Ci);if(e===null)return;sessionStorage.removeItem(Ci);let t={};try{t=JSON.parse(e)??{}}catch{return}if(Date.now()-Number(t.at)>Ev||localStorage.getItem("krunker_token")!==null)return;let o=this.accounts.find(n=>n.username===t.username);o&&this.login(o)}async send(e,t){let o=await Te(`accounts-${e} ${JSON.stringify(t)}`,"accounts");o!==null&&(this.accounts=o,this.renderAccounts())}gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button))},2e3)};toggle(e){if(e)if(window.chrome.webview.addEventListener("message",this.gameUpdateListener),this.button.addEventListener("click",this.openMenu),this.headerItem.addEventListener("click",this.openMenu),Oe())window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.button.style.cssText="display: block; padding: 14px 24px 22px; bottom: 0; right: 0; z-index: 9; font-size: 21px !important; position: absolute;",U("#compBtnLst").append(this.button);else{this.placeButton();let t=document.querySelector("#playerHeaderEl");t&&this.headerObserver.observe(t,{childList:!0,subtree:!0})}else window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.headerObserver.disconnect(),this.button.removeEventListener("click",this.openMenu),this.headerItem.removeEventListener("click",this.openMenu),this.button.remove(),this.headerSeparator.remove(),this.headerItem.remove(),this.closeMenu()}placeButton(){let e=document.querySelector("#playerHeaderEl .headerBarRight");if(e){if(e.firstElementChild!==this.headerItem){let n=[...e.querySelector(".nav-item")?.classList??[]].find(r=>r.startsWith("svelte-"))??"";this.headerItem.style.cssText="",this.headerItem.className=`nav-item ${n}`,this.headerItem.innerHTML=`switch_account Accounts`,this.headerSeparator.className="verticalSeparator",this.headerSeparator.style.cssText="height: 35px;",e.prepend(this.headerItem,this.headerSeparator)}this.button.remove();return}let t=document.querySelector("#signedInHeaderBar");if(t){t.contains(this.headerItem)||t.append(this.headerSeparator,this.headerItem);return}let o=document.querySelector("#signedOutHeaderBar");o&&!o.contains(this.button)&&o.append(this.button)}openMenu=()=>{this.overlay||this.buildMenu().catch(e=>console.error("[kute] accounts:",e))};async buildMenu(){let e=await Promise.resolve().then(()=>ue(cp(),1));if(this.overlay)return;let t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default,this.overlay=t,this.shadow=n;let r=new AbortController;this.menuController=r,U("#accClose",n).onclick=()=>this.closeMenu(),U("#accAdd",n).onclick=()=>this.showForm(!0),U("#accCancel",n).onclick=()=>this.showForm(!1),U("#accSave",n).onclick=()=>this.saveAccount(),U("#accFormHint",n).textContent=this.legacy?"Saved on this PC only":"Saved encrypted on this PC, never sent anywhere";let i=ke("#accUsername",n),a=ke("#accColor",n);i.oninput=()=>this.updatePreview(),a.oninput=()=>this.updatePreview();for(let l of[i,ke("#accPassword",n)])l.onkeydown=c=>{c.key==="Enter"&&this.saveAccount()};for(let l of["keydown","keyup","keypress"])n.addEventListener(l,c=>c.stopPropagation());t.addEventListener("mousedown",l=>{l.target===t&&this.closeMenu()}),document.addEventListener("keydown",l=>{l.key!=="Escape"||this.asking||(l.stopPropagation(),U("#accFormView",n).hidden?this.closeMenu():this.showForm(!1))},{signal:r.signal,capture:!0}),this.renderAccounts(),this.resetForm(),document.body.append(t)}closeMenu(){this.menuController?.abort(),this.menuController=null,this.overlay?.remove(),this.overlay=null,this.shadow=null}showForm(e){this.shadow&&(U("#accListView",this.shadow).hidden=e,U("#accFormView",this.shadow).hidden=!e,e&&(this.resetForm(),ke("#accUsername",this.shadow).focus()))}renderAccounts(){let{shadow:e}=this;if(!e)return;let t=U("#accList",e);t.textContent="";for(let n of this.accounts){let r=document.createElement("div");r.className="accRow",r.dataset.username=n.username,r.title=`Log in as ${n.username}`,r.onclick=()=>{this.suppressClick||this.login(n)};let i=document.createElement("div");i.className="accHandle",i.textContent="\u2261",i.title="Drag to reorder",i.onclick=p=>p.stopPropagation(),i.onpointerdown=p=>this.startDrag(p,r);let a=document.createElement("div");a.className="accIndex";let l=document.createElement("div");l.className="accAvatar",hp(l,n.color,n.username);let c=document.createElement("div");c.className="accName",c.textContent=n.username;let u=document.createElement("div");u.className="accRemove",u.textContent="\xD7",u.title="Remove",u.onclick=p=>{p.stopPropagation(),this.removeAccount(n).catch(f=>console.error("[kute] accounts:",f))};let h=document.createElement("div");h.className="accKey",r.append(i,a,l,c,h,u),t.append(r)}this.renumber(t);let o=this.accounts.length===0;U("#accEmpty",e).hidden=!o,U("#accListHint",e).hidden=o}renumber(e){let t=gt();[...e.children].forEach((o,n)=>{U(".accIndex",o).textContent=String(n+1),U(".accKey",o).textContent=t[`account${n+1}`]?.name??""})}canReorder(){return this.legacy||!!d.hostFeatures?.includes("accounts-order")}startDrag(e,t){if(e.button!==0)return;if(e.preventDefault(),!this.canReorder()){d.showNotification("Reordering accounts needs a newer Kute",!1,3);return}let o=t.parentElement,n=[...o.children].map(a=>a.dataset.username);t.classList.add("accDragging");let r=a=>{let l=[...o.children].filter(p=>p!==t),c=l.find(p=>{let f=p.getBoundingClientRect();return a.clientY!!(t.compareDocumentPosition(p)&Node.DOCUMENT_POSITION_PRECEDING)).length;if(u!==h){for(let p of l.slice(0,u))o.insertBefore(p,t);for(let p of l.slice(u))o.append(p);this.renumber(o)}},i=()=>{window.removeEventListener("pointermove",r,!0),window.removeEventListener("pointerup",i,!0),window.removeEventListener("pointercancel",i,!0),t.classList.remove("accDragging"),this.suppressClick=!0,setTimeout(()=>{this.suppressClick=!1});let a=[...o.children].map(l=>l.dataset.username??"");a.some((l,c)=>l!==n[c])&&this.saveOrder(a)};window.addEventListener("pointermove",r,!0),window.addEventListener("pointerup",i,!0),window.addEventListener("pointercancel",i,!0)}saveOrder(e){let t=o=>{let n=e.indexOf(o);return n===-1?e.length:n};if(this.accounts.sort((o,n)=>t(o.username)-t(n.username)),this.legacy){let o=ds().sort((n,r)=>t(It(n.username))-t(It(r.username)));localStorage.setItem(us,JSON.stringify(o));return}this.send("order",e)}loginSlot(e){let t=this.accounts[e];if(!t){d.showNotification(`No account saved in slot ${e+1}`,!1,3);return}if(localStorage.getItem("krunker_token")!==null&&localStorage.getItem("krunker_username")===t.username){d.showNotification(`Already logged in as ${t.username}`,!1,2);return}Date.now()-this.lastQuickLoginconsole.error("[kute] accounts:",o)))}updatePreview(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value,t=ke("#accColor",this.shadow).value;hp(U("#accPreviewAvatar",this.shadow),t,e),U("#accPreviewName",this.shadow).textContent=e.trim()||"Username"}resetForm(){this.shadow&&(ke("#accColor",this.shadow).value=`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}`,ke("#accUsername",this.shadow).value="",ke("#accPassword",this.shadow).value="",U("#accError",this.shadow).textContent="",this.updatePreview())}saveAccount(){if(!this.shadow)return;let e=ke("#accUsername",this.shadow).value.trim(),t=ke("#accPassword",this.shadow).value,o=ke("#accColor",this.shadow).value,n=U("#accError",this.shadow);if(e===""){n.textContent="Enter a username";return}if(t===""){n.textContent="Enter a password";return}if(this.accounts.some(r=>r.username===e)){n.textContent=`${e} is already saved`;return}if(this.legacy){let r=ds();r.push({username:pp(e),password:pp(t),color:o}),localStorage.setItem(us,JSON.stringify(r)),this.accounts.push({username:e,color:o}),this.renderAccounts()}else this.send("add",{username:e,password:t,color:o});this.showForm(!1)}async removeAccount(e){this.asking=!0;let t=await Ce({title:"Remove account",paragraphs:[`${e.username} gets removed from this list.`,"The Krunker account itself is not touched."],stay:"Keep",leave:"Remove"});if(this.asking=!1,!t)return;let o=this.accounts.findIndex(n=>n.username===e.username);o!==-1&&(this.legacy?(localStorage.setItem(us,JSON.stringify(ds().filter(n=>It(n.username)!==e.username))),this.accounts.splice(o,1),this.renderAccounts()):this.send("remove",{username:e.username}))}async login(e){this.closeMenu();let t=window.FRVR?.auth,o=localStorage.getItem("krunker_token")!==null;if(typeof t?.loginAsAnonymous!="function"||typeof t.isLoggedIn!="function"){if(o){sessionStorage.setItem(Ci,JSON.stringify({username:e.username,at:Date.now()})),window.logoutAcc(),Ro();return}}else{if(o){kn(dp),window.logoutAcc();for(let n=0;n<$v&&t.isLoggedIn();n+=100)await up(100)}if(!t.isLoggedIn())try{await t.loginAsAnonymous()}catch(n){console.error("[kute] accounts: anonymous frvr login failed:",n)}this.finishSwitch(t).catch(n=>console.error("[kute] accounts:",n))}window.loginOrRegister(),queueMicrotask(()=>{let n=U(".auth-toggle-btn");n.textContent?.includes("username")&&n.click(),queueMicrotask(()=>{if(this.legacy){this.legacyLogin(e.username);return}this.send("login",{username:e.username})})})}async finishSwitch(e){let t=0;for(let o=0;o=Mv)){kn(dp),Ro();return}}}legacyLogin(e){let t=ds().find(r=>It(r.username)===e);if(!t)return;let o=ke("#accName"),n=ke("#accPass");o.value=e,n.value=It(t.password),o.dispatchEvent(new Event("input",{bubbles:!0})),n.dispatchEvent(new Event("input",{bubbles:!0})),U(".io-button").click()}},Rv=new Mi});var fp={};A(fp,{default:()=>he});var Pv,Iv,Nv,Li,mp,he,Nt=w(()=>{"use strict";F();Pv=4e3,Iv=5e3,Nv=3,Li=class{constructor(){this.base=typeof d.apiBase=="string"?d.apiBase:"https://kute.lol/api",this.health=null,this.down=!1,this.failures=0,this.listeners=new Set,d.settings.toggleDisableOnlineFeatures=e=>this.setOffline(e)}offline(){return d.settings?.data?.disableOnlineFeatures===!0}setOffline(e){this.health=e?Promise.resolve(!1):null,this.down=e,this.failures=0;for(let t of this.listeners)t(!e)}available(){return this.health??=this.check(),this.health}retry(){return this.health=null,this.down=!1,this.failures=0,this.available()}async check(){if(await Ne,this.offline())return this.down=!0,!1;try{let e=await fetch(`${this.base}/health`,{cache:"no-store",signal:AbortSignal.timeout(Pv)}),t=e.ok?await e.json():null;this.down=t?.ok!==!0}catch{this.down=!0}return!this.down}async request(e,t={}){let{data:o}=await this.requestStatus(e,t);return o}async requestStatus(e,t={}){if(!await this.available()||this.down||this.offline())return{status:0,data:null};try{let o=AbortSignal.timeout(Iv),n=t.signal?AbortSignal.any([t.signal,o]):o,r=await fetch(this.base+e,{...t,signal:n});r.status>=500?this.failed():r.ok&&(this.failures=0);let i=await r.json().catch(()=>null),a=r.headers.get("Retry-After"),l=0;a!==null&&(l=/^\d+(\.\d+)?$/.test(a)?Date.now()+Number(a)*1e3:Date.parse(a));let c=Number(r.headers.get("X-RateLimit-Reset"))*1e3,u=Math.max(l||0,c||0,Number(i?.resetAt)||0),h=r.status===429?Math.max(Date.now()+1e3,u||Date.now()+6e4):void 0;return{status:r.status,data:r.ok?i:null,error:r.ok?null:i,retryAt:h}}catch{return t.signal?.aborted||this.failed(),{status:0,data:null}}}failed(){this.failures++,this.failures>=Nv&&(this.down=!0)}},mp=new Li;d.api=mp;he=mp});var vp={};var bp,_v,Bv,gp,Ri=w(()=>{"use strict";F();Ae();bp=async s=>{window.openHostWindow(!1,1),await $e(".hostTb0");let e=document.querySelector(`#${s.mapId}`);if(!e){let c=document.querySelectorAll(".hostMap .hostMapName"),u=Array.from(c).find(h=>h.innerText.trim().toLowerCase()===s.mapId.toLowerCase());u&&(e=u.parentElement?.querySelector('input[type="checkbox"]')??null)}if(!e)return;e.checked||e.click(),windows[7].switchTab(2);let t=await $e("#customSnameTeam1");t.value=s.team1Name;let o=await $e("#customSnameTeam2");o.value=s.team2Name;let n=await $e("#customStmSize"),r={"1v1":"0","2v2":"1","3v3":"2","4v4":"3"};if(s.team1Players){let c=await $e("#compRosterT1");c.value=s.team1Players}if(s.team2Players){let c=await $e("#compRosterT2");c.value=s.team2Players}if(s.spectators){let c=await $e("#compRosterSpecs");c.value=s.spectators}let i=await $e("#customSspecSlots");i.value="4";let a=["ak","sniper","smg","lmg","shotgun","rev","semi","rpg","uzi","runner","deagler","crossbow","famas","blaster","survivor","infiltrator"];if(s.classes){let c=JSON.parse(s.classes);for(let[u,h]of Object.entries(c)){let p=a.indexOf(u),f=await $e(`#customSclassLim${p}`);f.value=String(h)}}let l=r[s.teamSize]||s.teamSize;if(n.value=l,s.webhook)try{let c=await $e("#customSwebhook");c.value=decodeURIComponent(s.webhook)}catch{}window.createPrivateRoom()},_v=async s=>{let e={FRA:"de-fra",SV:"us-ca-sv",SYD:"au-syd",TOK:"jb-hnd",SIN:"sgp",NY:"us-nj",MUM:"as-mb",DAL:"us-tx",BR:"brz",ME:"me-bhn"},t=e[s.toUpperCase()]||s;window.showWindow(1);let o=document.querySelector("select.inputGrey2");if(!o){typeof window.setSetting=="function"&&window.setSetting("defaultRegion",t);return}let n=Object.values(e),r=Array.from(document.querySelectorAll("select.inputGrey2")).find(i=>Array.from(i.options).some(a=>n.includes(a.value)))||o;if(r&&r.value!==t){let i=Array.from(r.options).findIndex(a=>a.value===t);i!==-1&&(r.selectedIndex=i,r.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}window.showWindow(1)},Bv=s=>{let e=s.includes("?")?s.split("?")[1]:s;return Object.fromEntries(new URLSearchParams(e).entries())},gp=sessionStorage.getItem("pendingCompHost");if(gp){sessionStorage.removeItem("pendingCompHost");let s=JSON.parse(gp);bp(s)}d.parseArgs=async s=>{let e=s.split(" ");for(let t of e)if(t.includes("action=host-comp")){let o=Bv(t);o.region?(sessionStorage.setItem("pendingCompHost",JSON.stringify(o)),await _v(o.region),window.location.href="https://krunker.io/"):await bp(o)}};window.chrome.webview.addEventListener("message",async s=>{s.data?.args&&await d.parseArgs(s.data.args)})});var kp={};A(kp,{CLOCK_MS:()=>zv,EXPERIENCE:()=>ps,IMPORTANT_SHARE:()=>hs,TARGET_REFRESH_MULTIPLE:()=>vt,accept:()=>ks,atLimit:()=>zo,capCandidates:()=>Oi,choose:()=>gs,chooseCap:()=>zi,collapses:()=>vs,compare:()=>Ni,experienceHolds:()=>Hv,flooding:()=>ws,guard:()=>io,headroom:()=>Hi,refineCaps:()=>Fi,screen:()=>_i,stalled:()=>bs,steady:()=>ao,steadyLimit:()=>Bi,steadyRungs:()=>Rn,summarize:()=>ye,unsteady:()=>bt,wins:()=>Bo});function Ii(s){let e=[...s].sort((o,n)=>o-n),t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function ye(s){let e=s.filter(o=>!o.invalid),t={};for(let o of _o){let r=e.map(c=>c[o]).filter(c=>typeof c=="number"&&Number.isFinite(c)),i=[Math.min(...r),Math.max(...r)],[a,l]=ms.has(o)?i:i.reverse();t[o]={n:r.length,median:r.length>0?Ii(r):null,spread:r.length>1?Math.abs(l-a):null,worst:r.length>0?a:null,best:r.length>0?l:null}}return t}function fs(s){return s==="fps"?0:2*.1}function Ni(s,e,t){let o=e[s],n=t[s];if(o.median===null||n.median===null||o.spread===null||n.spread===null)return"unknown";let r=ms.has(s)?o.median-n.median:n.median-o.median,i=Math.max(o.spread,n.spread,fs(s)),a=Math.max(Math.abs(o.median),Math.abs(n.median))*.1;return Math.abs(r)<=i||Math.abs(r)0?"better":"worse"}function io(s,e,t,o=fs(s)){let n=e[s],r=t[s];if(n.n<2||typeof n.worst!="number"||r.median===null||r.spread===null)return"unknown";let i=ms.has(s)?r.median-n.worst:n.worst-r.median,a=Math.max(Math.abs(n.worst),Math.abs(r.median))*.1;return i>Math.max(r.spread,o)&&i>=a?"worse":"ok"}function Bo(s,e,t){let o=e[s],n=t[s];if(o.n<2||n.n<2||typeof o.worst!="number"||typeof n.best!="number")return!1;let r=ms.has(s)?o.worst-n.best:n.best-o.worst;return r>fs(s)&&r>=Math.max(Math.abs(o.worst),Math.abs(n.best))*.1}function _i(s,e){if(s.invalid)return"same";let t=!1;for(let o of _o){let n=s[o],r=e[o];if(typeof n!="number"||r.median===null||r.spread===null)continue;let i=ms.has(o)?n-r.median:r.median-n,a=Math.max(Math.abs(n),Math.abs(r.median))*.1;if(!(Math.abs(i)<=Math.max(r.spread,fs(o))||Math.abs(i)0&&(t=!0)}}return t?"contender":"same"}function gs(s,e,t={}){let o=ye(s.readings),n=e.map(c=>{let u=ye(c.readings),h={};for(let m of _o)h[m]=Ni(m,u,o);let p=ps.some(m=>io(m,u,o)==="worse"),f=ps.find(m=>Bo(m,u,o))??null;return f===null&&t.fpsCounts!==!1&&Bo("fps",u,o)&&(f="fps"),{id:c.id,summary:u,verdicts:h,rejected:p,decidedBy:f}}),r=n.length>0&&n.every(c=>_o.every(u=>c.verdicts[u]==="unknown")),i=c=>c.decidedBy===null?_o.length:_o.indexOf(c.decidedBy),l=n.filter(c=>!c.rejected&&c.decidedBy!==null).sort((c,u)=>i(c)-i(u))[0]??null;return{winner:l?.id??s.id,changed:l!==null,inconclusive:r,decidedBy:l?.decidedBy??null,incumbent:o,judged:n}}function bs(s){return!s.invalid&&typeof s.stallMs=="number"&&s.stallMs>1e3*.1}function bt(s,e){return s.some(t=>bs(t)||!t.invalid&&e>0&&typeof t.fps=="number"&&t.fps!t.invalid).length>=2&&!bt(s,e)}function vs(s){return[...s.values()].some(e=>e.filter(bs).length>=2)}function Rn(s){return Array.from({length:4},(e,t)=>(t+1)*s)}function Bi(s,e){let t=null,o=null;for(let n of Rn(s)){if(!ao(e.get(n)??[],n))break;t=o??n,o=n}return{cap:t,steadyUpTo:o}}function ws(s){let{presentMs:e,p50:t}=s;return typeof e!="number"||typeof t!="number"?!1:e-t>Math.max(2*.1,e*.1)}function zo(s){let e=s.p50,t=r=>typeof r=="number"&&typeof e=="number"?Math.max(0,r-e):null,o=ws(s)?s.presentMs-e:0,n=typeof s.inputP99=="number"?s.inputP99+o:s.inputP99;return{...s,fps:null,p99:t(s.p99),maxMs:t(s.maxMs),inputP99:n}}function wp(s){return s==="p99"||s==="maxMs"?4*.1:fs(s)}function zi(s,e,t={}){let o=p=>ye((s.get(p)??[]).map(zo)),n=p=>{let f=(s.get(p)??[]).filter(m=>!m.invalid).map(m=>m.p50).filter(m=>typeof m=="number");return f.length>0?Ii(f):null},r=o(e),i=n(e),a=new Map,l=[...s.keys()].map(p=>{let f=o(p),m=n(p);if(p===e)return{cap:p,summary:f,frameMs:m,netMs:null,outcome:"yours"};if(bt(s.get(p)??[],p))return{cap:p,summary:f,frameMs:m,netMs:null,outcome:"not steady"};let g=Object.fromEntries(Pi.map(H=>[H,Ni(H,f,r)])),b=e===0||p>0&&pBo(H,f,r)?(r[H].median??0)-(f[H].median??0):0,E=k("taskP99"),L=t.trade===!0&&io("inputP99",f,r)==="worse"?(f.inputP99.median??0)-(r.inputP99.median??0):0,y=g.inputP99==="unknown"?null:k("inputP99")-L,C=E+(y??i-m);a.set(p,E+(y??0));let I=L>0&&E>L,_="not better";return Pi.some(H=>(H!=="inputP99"||!I)&&io(H,f,r,wp(H))==="worse")?_="worse":C>2*.1&&(_="better"),{cap:p,summary:f,frameMs:m,netMs:C,gains:{task:E,input:y},outcome:_}}),c=l.filter(p=>p.outcome==="better").sort((p,f)=>(f.netMs??0)-(p.netMs??0));if(c.length>0)return{winner:c[0].cap,changed:!0,decidedBy:"net",judged:l};let u=l.find(p=>p.cap===t.prefer&&p.cap!==e),h=u!==void 0&&(e===0||u.capu.filter(h=>!h.invalid);if(r(s).length<2)return{keep:!1,failed:"reference"};if(r(e).length<2)return{keep:!1,failed:"result"};let i=ye(s.map(zo)),a=ye(e.map(zo)),l=io("fps",ye(e),ye(s))==="worse";if(bt(e,o)&&!(bt(s,t)&&Bo("stallMs",a,i)&&!l))return{keep:!1,failed:"unsteady"};let c;for(let u of Pi){let h=io(u,a,i,wp(u));if(h==="worse"&&u==="inputP99"&&n&&Bo("taskP99",a,i)){let p=(i.taskP99.median??0)-(a.taskP99.median??0),f=(a.inputP99.median??0)-(i.inputP99.median??0);if(p>f){c={task:p,input:f};continue}}if(h==="worse")return{keep:!1,failed:u};if(h==="unknown"&&u!=="inputP99")return{keep:!1,failed:"reference"}}if(io("inputP99",a,i)==="unknown"){let u=p=>Ii(r(p).map(f=>f.p50??0));if(u(e)-u(s)>Math.max(2*.1,u(e)*.1))return{keep:!1,failed:"frame"}}return t===o&&l?{keep:!1,failed:"fps"}:{keep:!0,failed:null,...c?{traded:c}:{}}}function Hi(s,e){return 1+Math.max(2*Math.abs(1-s),e)}function Hv(s,e){let t=1e3/e,o=s.p99.median,n=s.stallMs.median;return(o===null||o<=t)&&(n===null||n<=t)}function Oi({hz:s,capacity:e,current:t}){let o=i=>e===null||i<=e,n=[3*s,2*s,s].filter(o);return e!==null&&n.push(Math.round(e*.9)),t>0&&n.push(t),[0,...[...new Set(n.map(i=>Math.round(i)).filter(i=>i>0))].sort((i,a)=>a-i)]}function Fi(s,e,t,o){let n=l=>l===0?t??1/0:l,r=[...new Set(s)].sort((l,c)=>n(l)-n(c)),i=r.indexOf(e),a=[];for(let l of[r[i-1],r[i+1]]){if(l===void 0)continue;let c=(n(e)+n(l))/2;Number.isFinite(c)&&a.push(Math.round(c/o)*o)}return[...new Set(a)].filter(l=>l>0&&l!==e&&!s.includes(l))}var hs,vt,zv,ps,_o,ms,Pi,ys=w(()=>{"use strict";hs=.1,vt=3,zv=.1,ps=["taskP99","inputP99","p99","stallMs","maxMs"],_o=[...ps,"fps"],ms=new Set(["fps"]);Pi=["taskP99","inputP99","p99","stallMs","maxMs"]});var Sp={};A(Sp,{PIPELINE:()=>Fe,cancel:()=>qi,currentPipeline:()=>In,measureCaps:()=>ji,searchPipeline:()=>Ki});function In(){return Object.fromEntries(Fe.map(s=>[s.setting,(d.running?.[s.setting]??d.settings.data[s.setting])!==!1]))}function xp(s,e){return s!=="hardFlip"||!e.hardFlip?null:d.settings.data.obsCapturePlugin===!0?"kept, OBS capture needs it":null}function dt(s,e){let t=Fe.map(r=>`${r.key}=${s[r.setting]?1:0}`),o=Fv.map(r=>`${r.key}=${d.settings.data[r.setting]??r.fallback?1:0}`),n=`limiter=${d.settings.data.patchFrameLimiter===!1?"hook":"viz"}`;return[...t,...o,n,e].filter(r=>r!=="").join(",")}function Di(s,e,t){let o=n=>typeof n=="number"&&Number.isFinite(n)?n:null;return{fps:o(s?.fps),p50:o(s?.p50),p99:o(s?.p99),maxMs:o(s?.maxMs),stallMs:o(s?.stallMs),taskP99:o(e?.p99),inputP99:null,presentMs:o(t?.p50),invalid:!s||!(s.fps>0)}}function xs(s,e){let t=Date.now()*100+ ++jv%100;return new Promise(o=>{let n={timer:0},r=i=>{i.data?.benchMatrix===void 0||i.data.benchRun!==t||(clearTimeout(n.timer),window.chrome.webview.removeEventListener("message",r),o(i.data.cancelled?null:i.data.benchMatrix))};n.timer=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),window.chrome.webview.postMessage("bench-cancel"),o(null)},e),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`run-bench-matrix ${t} ${JSON.stringify(s)}`)})}function qi(){window.chrome.webview.postMessage("bench-cancel")}async function Ki({hz:s,progress:e,cancelled:t}){let o=In();e("Testing the client (1 of 4)",0);let n=await xs([dt(o,`hz=${s}`)],Pn),r=Di(n?.[0]?.page?.stats,n?.[0]?.page?.otherTasks);if(t()||r.invalid||r.fps===null)return null;let i=n?.[0]?.page?.load,a=Math.min(yp[1],Math.max(yp[0],r.fps/(s*3))),l=`hz=${s},draws=${Math.round(i.draws*a)},cpu=${Math.round(i.cpuIterations*a)}`,c=Fe.filter(C=>xp(C.setting,o)===null).map(C=>({entry:C,pipeline:{...o,[C.setting]:!o[C.setting]}}));e("Testing the client (2 of 4)",.15);let u=await xs([dt(o,l),...c.map(C=>dt(C.pipeline,l)),dt(o,l)],Pn*(c.length+2));if(t()||u===null)return null;let h=C=>Di(C?.page?.stats,C?.page?.otherTasks,C?.present),p=[h(u[0]),h(u[u.length-1])],f=ye(p),m=Ov.some(C=>{let{median:I,spread:_}=f[C];return I!==null&&_!==null&&_>Math.abs(I)*.1}),g=[{id:"current",label:"As you had it",pipeline:o,readings:p,outcome:"current"}];for(let C of Fe){let I=xp(C.setting,o);I!==null&&g.push({id:C.setting,label:`${C.label} off`,pipeline:o,readings:[],outcome:I})}let b=[];for(let[C,I]of c.entries()){let _=h(u[C+1]),H=_.invalid?"failed":_i(_,f);m&&!_.invalid&&(H="contender");let G=`${I.entry.label} ${I.pipeline[I.entry.setting]?"on":"off"}`,J={id:I.entry.setting,label:G,pipeline:I.pipeline,readings:[_],outcome:Kv[H]};g.push(J),H==="contender"&&b.push(J)}if(b.length===0)return{winner:o,changed:!1,decidedBy:null,rows:g,common:l,capacity:f.fps.median};e("Testing the client (3 of 4)",.55);let v=await xs([...b.map(C=>dt(C.pipeline,l)),dt(o,l)],Pn*(b.length+1));if(t()||v===null)return null;for(let[C,I]of b.entries())I.readings.push(h(v[C]));p.push(h(v[v.length-1]));let k=gs({id:"current",readings:p},b.map(C=>({id:C.id,readings:C.readings})));for(let C of b){let I=k.judged.find(_=>_.id===C.id);C.outcome="not better",I?.rejected?C.outcome="worse":I?.decidedBy&&(C.outcome="better")}let E=b.filter(C=>C.outcome==="better"),L=g.find(C=>C.id===k.winner)??g[0];if(E.length>1){e("Testing the client (4 of 4)",.8);let C={...o};for(let J of E)C[J.id]=J.pipeline[J.id];let I=await xs([dt(C,l),dt(o,l),dt(C,l)],Pn*3);if(t()||I===null)return null;p.push(h(I[1]));let _={id:"combined",label:E.map(J=>J.label).join(" and "),pipeline:C,readings:[h(I[0]),h(I[2])],outcome:"not better"};g.push(_);let H=gs({id:L.id,readings:L.readings},[{id:_.id,readings:_.readings}]),G=gs({id:"current",readings:p},[{id:_.id,readings:_.readings}]);H.changed&&G.changed&&(_.outcome="better",L=_,k=G)}let y=L.id!=="current";return{winner:L.pipeline,changed:y,decidedBy:y?k.decidedBy:null,rows:g,common:l,capacity:ye(L.readings).fps.median}}async function ji({pipeline:s,common:e,caps:t,cancelled:o}){let n=`${dt(s,e)},caps=${t.join(".")},rounds=2,ms=${qv}`,i=(await xs([n],Dv))?.[0]?.page?.caps;if(o()||!Array.isArray(i))return null;let a=new Map(t.map(l=>[l,[]]));for(let l of i)a.get(Number(l.cap))?.push(Di(l.stats,l.otherTasks));return a}var Ov,Fe,Fv,Pn,Dv,qv,yp,Kv,jv,Ui=w(()=>{"use strict";F();ys();Ov=["fps","taskP99","p99"],Fe=[{setting:"hardFlip",key:"hook",label:"DXGI Swapchain Hook"},{setting:"patchFramePacing",key:"pacing",label:"Frame Pacing"},{setting:"patchCanvasBufferCache",key:"canvas",label:"WebGL Buffer Cache"},{setting:"patchHighQoS",key:"qos",label:"Game Process at High QoS"}].filter(s=>d.platform!=="linux"||s.setting!=="hardFlip"&&s.setting!=="patchHighQoS"),Fv=[{setting:"patchInputPriority",key:"inprio",fallback:!0},{setting:"patchRawInputMovement",key:"rawinput",fallback:!0},{setting:"patchAudioParamCoalesce",key:"coalesce",fallback:!0},{setting:"audioFix",key:"panner",fallback:!1},{setting:"uncapFps",key:"uncap",fallback:!0}],Pn=2e4,Dv=7e4,qv=1500,yp=[.25,16],Kv={contender:"better",same:"not better",worse:"worse",failed:"failed"};jv=0});var $p={};A($p,{MIN_RESOLUTION:()=>Ss,SIGNIFICANT_RESOLUTION:()=>Ep,SIGNIFICANT_SETTING:()=>Nn,decide:()=>_n});function _n({capacity:s,hz:e,headroom:t,halfResolutionGain:o,settings:n}){let r=e*3,i=r*t,a=s>=i,l="unknown";o!==null&&(l=o>=Ep?"gpu":"cpu");let c=[],u=s;if(!a){let h=n.filter(p=>p.gain!==null&&p.steady&&p.current!==p.cheap&&p.gain>=Nn).sort((p,f)=>(f.gain??0)-(p.gain??0));for(let p of h){if(u>=i)break;let f=p.gain??1;u*=f,c.push({id:p.id,label:p.label,value:p.cheap,reason:`measured +${Math.round((f-1)*100)} %`})}}return{target:r,needed:i,holds:a,regime:l,predictedFps:u,tuneResolution:!a&&l==="gpu"&&u{"use strict";ys();Nn=1.05,Ep=1.1,Ss=.75});var Ji={};A(Ji,{ALL_IDS:()=>Vi,GAME_FRAME_CAP:()=>kt,PRESET:()=>Wi,RESOLUTION:()=>lo,SETTINGS:()=>wt,label:()=>Yi,opposite:()=>Xi,read:()=>$s,resetCache:()=>Bn,write:()=>Me});function Yi(s){return wt.find(e=>e.id===s)?.label??s}function Uv(){if(Es)return Es;let s=window.windows[0],e=s.tabIndex,t=s.settingType,o="";try{s.settingType="advanced";for(let n=0;n{"use strict";wt=[{id:"postProcessing",label:"Post Processing",cheap:!1},{id:"shadowsDynamic",label:"Dynamic Shadows",cheap:!1},{id:"softShad",label:"Soft Shadows",cheap:!1,needsReload:!0},{id:"highResShad",label:"High-Res Shadows",cheap:!1,needsReload:!0},{id:"shadows",label:"Shadows",cheap:!1},{id:"antiAlias",label:"Antialiasing",cheap:!1,needsReload:!0},{id:"reflection",label:"Reflection Quality",cheap:"1",needsReload:!0},{id:"lighting",label:"Lighting",cheap:"0",needsReload:!0},{id:"weaponShine",label:"Weapons Shine",cheap:!1},{id:"ambientShading",label:"Old Shading",cheap:!1},{id:"particles",label:"Particles",cheap:!1,fightOnly:!0},{id:"showExplo",label:"Explosions",cheap:!1,fightOnly:!0},{id:"textureAnim",label:"Texture Animations",cheap:!1},{id:"objectAnim",label:"Object Animations",cheap:!1},{id:"bulletCasings",label:"Bullet Casings",cheap:!1,fightOnly:!0},{id:"impactHoles",label:"Bullet Impact Holes",cheap:!1,fightOnly:!0},{id:"noPaintAnim",label:"Disable Animated Paints",cheap:!0,needsReload:!0},{id:"mapDet",label:"Map Details",cheap:!1,needsReload:!0},{id:"lowSpec",label:"Low Spec",cheap:!0}],Wi={postProcessing:!1,particles:!1,showExplo:!1,bulletCasings:!1,impactHoles:!1,reflection:"1",lighting:"0",softShad:!1,highResShad:!1,noPaintAnim:!0},lo="resolution",kt="updateRate",Vi=[...wt.map(s=>s.id),lo,kt];Es=null});var Mp,Cp=w(()=>{Mp=`

    Auto-Detect

    Don't touch mouse or keyboard. Escape cancels
    Undo
    Details
    Advanced
    Run now
    OK
      `});var Tp={};A(Tp,{activity:()=>Bt,hostLobby:()=>Cs,inRoom:()=>zn,spawn:()=>Ms,spawned:()=>Qi});function Bt(){try{return window.getGameActivity?.()??{}}catch{return{}}}function zn(s){let e=Bt();return!!s&&!!e.custom&&e.id===s}async function Cs(){if(typeof window.openHostWindow!="function"||typeof window.createPrivateRoom!="function")return null;let s=Bt().id;for(let e=0;e<4;e++){window.openHostWindow(!1,0),await _t(800),window.windows[7]?.switchTab?.(0),await _t(300);let t=[...document.querySelectorAll("#windowHolder input[id^=gameMap]")],o=document.querySelector("#makePrivate");if(t.length===0||!o)return window.closWind?.(),null;for(let r of t)r.checked!==(r.id===Wv)&&r.click();let n=!o.checked;n&&o.click();try{window.createPrivateRoom();for(let r=0;r<32;r++){await _t(250);let i=Bt();if(i.custom&&i.id&&i.id!==s&&i.map)return i.id}}finally{n&&o.checked&&o.click()}window.closWind?.(),await _t(1500)}return null}function Qi(){let s=document.querySelector("#instructions");return!!document.pointerLockElement||s!==null&&getComputedStyle(s).display==="none"}async function Ms(s){for(let o=0;o<40&&!(Bt().map&&document.querySelector("#instructions"));o++)await _t(250);await _t(500);let e=Math.round(window.innerWidth/2),t=Math.round(window.innerHeight/2);for(let o=0;o<3&&!Qi();o++){if(!zn(s))return!1;window.chrome.webview.postMessage(`click, ${e}, ${t}`),await _t(1200)}return await _t(800),Qi()}var Wv,_t,Hn=w(()=>{"use strict";Wv="gameMap0",_t=s=>new Promise(e=>{setTimeout(e,s)})});var Rp={};A(Rp,{REPLAY_CIRCLE_MS:()=>zt,takeInputDiagnostics:()=>On,takeReading:()=>ea});function On(){let s=Qe;return Qe=Lp(),s}function ea({ms:s,hz:e,replay:t}){return new Promise((o,n)=>{let r=new no,i=new ro,a=new ss,l=()=>document.hasFocus()&&document.visibilityState==="visible",c=document.pointerLockElement!==null,u=l()?null:"the window was not in front",h=()=>{l()||(u??="the window lost focus")},p=()=>{document.pointerLockElement!==null!==c&&(u??=c?"the game let go of the mouse":"the game took the mouse")},f=()=>{window.removeEventListener("blur",h),document.removeEventListener("visibilitychange",h),document.removeEventListener("pointerlockchange",p)};window.addEventListener("blur",h),document.addEventListener("visibilitychange",h),document.addEventListener("pointerlockchange",p);let m=setTimeout(()=>{f(),i.stop(),a.stop(),window.chrome.webview.postMessage("input-replay-stop"),n(new Error("the game stopped drawing frames"))},s+5e3);i.start(),a.start(),Qe.readings++,t&&c&&(Qe.asked++,window.chrome.webview.postMessage(`input-replay, ${s}`));let g=performance.now(),b=()=>{let v=performance.now();if(r.frame(v),v-g=Ap&&Qe.withInput++,L===null&&(u??="too few frames"),u!==null&&(Qe.invalid[u]=(Qe.invalid[u]??0)+1),o({fps:L?.fps??null,p50:L?.p50??null,p99:L?.p99??null,maxMs:L?.maxMs??null,stallMs:L?.stallMs??null,taskP99:k.p99,inputP99:E.events>=Ap?E.p99:null,invalid:u!==null,...u===null?{}:{why:u}})};requestAnimationFrame(b)})}var zt,Ap,Lp,Qe,ta=w(()=>{"use strict";xn();zt=600,Ap=20,Lp=()=>({readings:0,asked:0,withInput:0,pageEvents:0,hostSteps:0,ended:{},invalid:{}}),Qe=Lp();window.chrome.webview.addEventListener("message",s=>{let e=s.data?.inputReplay;e&&(Qe.hostSteps+=Number(e.sent)||0,Qe.ended[e.reason]=(Qe.ended[e.reason]??0)+1)})});var la={};A(la,{loggedIn:()=>Ls});function Ht(){try{return JSON.parse(localStorage.getItem(Kn)??"null")}catch{return null}}function qe(s){localStorage.setItem(Kn,JSON.stringify(s))}function Ls(){return document.querySelector("#signedInHeaderBar")!==null}function Ot(s,e){d.settings.data[s]=e,window.chrome.webview.postMessage(`set-config, ${s}, ${e}`);for(let t of[`#${s}`,`#slid_input_${s}`]){let o=document.querySelector(t);o&&(o.type==="checkbox"?o.checked=e===!0:o.value=String(e))}}function pt(s){return s==null?"default":String(s)==="true"?"on":String(s)==="false"?"off":String(s)}function t0(){let s=/--autodetect-dev=(\S+)/.exec(d.launchArgs??""),e={};for(let t of s?.[1].split(",")??[]){let[o,n]=t.split(":");o==="hz"&&(e.hz=Number(n)),o==="battery"&&(e.battery=!0),o==="laptop"&&(e.laptop=!0),o==="force"&&(e.force=n),o==="collapse"&&(e.collapse=Number(n))}return e}function zp(s){let e=Math.round((s-1)*100);return`${e>0?"+":""}${e} %`}function xt(s,e=1){return s===null?"?":s.toFixed(e)}function Dt(s){return s>0?`${s} FPS`:"no limit"}function o0(s,e,t){if(s===null)return"measured as smooth, with fewer frames to draw";let o=`${xt(e[s].median)} to ${xt(t[s].median)}`;return{taskP99:`the game reacts sooner: other work waited up to ${o} ms`,inputP99:`mouse input waits ${o} ms`,p99:`slowest frames ${o} ms`,stallMs:`stutter ${o} ms per second`,maxMs:`longest frame ${o} ms`,fps:`${xt(e.fps.median,0)} to ${xt(t.fps.median,0)} FPS`}[s]}function Hp(s,e=""){return s===null?"-":`${e}${s.toFixed(1)} ms`}function Ft(s,e=""){return s===null?"-":`${e}${s.toFixed(1)}`}function ra(s){return`${xt(s.fps.median,0)}${Ft(s.p99.median)}${Ft(s.taskP99.median)}${Ft(s.inputP99.median)}`}function jn(s){let e=s.filter(o=>typeof o=="number").sort((o,n)=>o-n);if(e.length===0)return null;let t=Math.floor(e.length/2);return e.length%2===1?e[t]:(e[t-1]+e[t])/2}function s0(s){if(!s||s.readings===0)return"";if(s.withInput>0)return`

      Input test: ${s.withInput} of ${s.readings} readings in the match had mouse input from Kute (${s.hostSteps} steps sent, ${s.pageEvents} seen by the game).

      `;let e=Object.entries(s.ended).filter(([o])=>o!=="done"&&o!=="stopped").map(([o,n])=>`${o}: ${n}x`).join(", "),t="the game did not hold the mouse when the readings started";return s.asked>0&&(t=e||`Kute sent ${s.hostSteps} steps, the game saw ${s.pageEvents} mouse events`),`

      The input test did not reach the game (${t}). Mouse wait and settings that only cost in a fight were not measured.

      `}function ut(s,e){let t=s.filter(r=>typeof r=="number").map(Math.round);if(t.length===0)return"-";let[o,n]=[Math.min(...t),Math.max(...t)];return o===n?`${o} ${e}`:`${o} to ${n} ${e}`}function n0(s){let e=[[`As you had it (${Dt(s.beforeCap)})`,s.played??[]],["no limit, first readings",s.unlimited??[]],...s.caps.filter(u=>u.where==="test match").map(u=>[Dt(u.cap),u.readings??[]])],{render:t=null,display:o=null}=s.adapters??{},n=t!==null&&o!==null&&t!==o,r=u=>{let h=(u?.nvidia??[]).map(p=>p.clockMhz).filter(p=>typeof p=="number");return h.length>0?Math.max(...h):null},i=u=>{let h=(u?.nvidia??[]).reduce((f,m)=>f|(m.heldBack??0),0),p=[[1,"heat"],[2,"power limit"],[4,"battery"],[16,"weak power supply"]].filter(([f])=>(h&Number(f))!==0).map(([,f])=>f);return p.length>0?p.join(", "):h===0?"no":`yes (${h})`},a=[...s.played??[],...s.unlimited??[]].some(u=>(u.load?.nvidia??[]).length>0),l=e.filter(([,u])=>u.some(h=>h.load)).map(([u,h])=>{let p=h.map(m=>m.load),f=(m,g)=>ut(p.map(b=>m===null?null:b?.gpu?.[m]?.[g]),"%");return`${u}${ut(h.map(m=>m.fps),"")}${ut(p.map(m=>m?.cpuBusy),"%")} ${ut(p.map(m=>m?.cpuSpeed),"%")}${f(t,"render")}${a?`${ut(p.map(r),"MHz")}`:""} ${n?`${f(o,"render")}${f(o,"copy")}`:""} ${ut(p.map(m=>m?.temperature),"C")}${ut(p.map(m=>m?.thermalLimit),"%")}`});if(l.length===0)return"";let c=(s.trace??[]).map(u=>`${(u.ms/1e3).toFixed(1)} s${u.fps}${ut([u.load?.cpuSpeed],"%")} @@ -72,27 +72,27 @@ void main() { outColor = texture(uLabel, vUv); }`;Wr=new Float32Array(4096),Ru=0 ${n?"Screen's chip busyScreen's chip copying":""}HottestHeat limit${l.join("")}

      Processor speed is its share of the nominal clock: above 100 % with turbo, far below while the PC throttles it. A heat limit under 100 % means the firmware slows the PC down. A graphics clock that drops while the frame rate drops means the graphics driver is saving power.

      - ${c.length>0?`

      Without a limit, step by step

      ${c.join("")}
      TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
      `:""}`}function t0(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Hp(s,e=""){return`${s}${e}`}function Ho(s,e,{wide:t=!1,unit:o=""}={}){return`

      ${s}${o?`${o}`:""}

      ${e}
      `}function Dn(s,e,t="adNum"){return`
      ${s}${e.join("")}
      `}function o0(s){let e=new Set(s.plan.changes.map(y=>y.id)),t=y=>y.gain===null&&!e.has(y.id)&&!!y.note,o=s.settings.filter(y=>!t(y)).map(y=>{let C=y.note??"";y.gain!==null&&(C=y.steady?`${Bp(y.gain)} when ${pt(y.cheap)}`:"unsteady, not used");let I=e.has(y.id)?`set to ${pt(y.cheap)}`:'kept';return`${y.label}${pt(y.current)}${C}${I}`}),n=s.pipeline.map(y=>`${y.label}${na(ye(y.readings))}${Hp(y.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(y=>{let C=s.caps.filter(I=>I.where===y).map(I=>`${Dt(I.cap)}${Ft(I.frameMs)} + ${c.length>0?`

      Without a limit, step by step

      ${c.join("")}
      TimeFPSProcessor speedGraphics card busyGraphics clockDriver holds it back
      `:""}`}function r0(s){if(s.outcome!=="not steady")return"";let e=Math.max(0,...(s.readings??[]).map(t=>t.stallMs??0));return e>0?` (stood still ${Math.round(e/10)} % of the time)`:" (did not reach it)"}function Op(s,e=""){return`${s}${e}`}function Ho(s,e,{wide:t=!1,unit:o=""}={}){return`

      ${s}${o?`${o}`:""}

      ${e}
      `}function Dn(s,e,t="adNum"){return`
      ${s}${e.join("")}
      `}function i0(s){let e=new Set(s.plan.changes.map(y=>y.id)),t=y=>y.gain===null&&!e.has(y.id)&&!!y.note,o=s.settings.filter(y=>!t(y)).map(y=>{let C=y.note??"";y.gain!==null&&(C=y.steady?`${zp(y.gain)} when ${pt(y.cheap)}`:"unsteady, not used");let I=e.has(y.id)?`set to ${pt(y.cheap)}`:'kept';return`${y.label}${pt(y.current)}${C}${I}`}),n=s.pipeline.map(y=>`${y.label}${ra(ye(y.readings))}${Op(y.outcome)}`),r='LimitFrame timeSlowest 1 %Other work waitsMouse waitsGainResult',i=["client test","test match"].map(y=>{let C=s.caps.filter(I=>I.where===y).map(I=>`${Dt(I.cap)}${Ft(I.frameMs)} ${Ft(I.summary.p99.median,"+")}${Ft(I.summary.taskP99.median)}${Ft(I.summary.inputP99.median)} - ${I.netMs===null?"":Ft(I.netMs,I.netMs>0?"+":"")}${Hp(I.outcome,t0(I))}`);return{where:y,html:C.length>0?Dn(r,C):""}}).filter(y=>y.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${Bp(s.halfResolutionGain)})`}.`);let c=new Map;for(let y of s.settings.filter(t)){let C=y.note??"";c.set(C,[...c.get(C)??[],`${y.label} ${pt(y.current)}`])}let u=[...c].map(([y,C])=>`

      ${y.charAt(0).toUpperCase()}${y.slice(1)}, kept as they were: ${C.join(", ")}.

      `),h=(o.length>0?Dn('SettingWasMeasuredResult',o,""):"")+u.join(""),p="";s.hybrid===!0?p=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(p=" Could not tell which graphics chip drives the screen.");let f="FPSSlowest 1 %Other work waitsMouse waits",m=`

      Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS + ${I.netMs===null?"":Ft(I.netMs,I.netMs>0?"+":"")}${Op(I.outcome,r0(I))}`);return{where:y,html:C.length>0?Dn(r,C):""}}).filter(y=>y.html),a={cpu:"the processor",gpu:"the graphics card",unknown:null}[s.plan.regime],l="Not measured whether the processor or the graphics card holds the frame rate back.";a&&(l=`Limited by ${a}${s.halfResolutionGain===null?"":` (half the resolution: ${zp(s.halfResolutionGain)})`}.`);let c=new Map;for(let y of s.settings.filter(t)){let C=y.note??"";c.set(C,[...c.get(C)??[],`${y.label} ${pt(y.current)}`])}let u=[...c].map(([y,C])=>`

      ${y.charAt(0).toUpperCase()}${y.slice(1)}, kept as they were: ${C.join(", ")}.

      `),h=(o.length>0?Dn('SettingWasMeasuredResult',o,""):"")+u.join(""),p="";s.hybrid===!0?p=" Two graphics chips: frames get copied from one to the other.":s.hybrid===null&&(p=" Could not tell which graphics chip drives the screen.");let f="FPSSlowest 1 %Other work waitsMouse waits",m=`

      Without an FPS limit this PC ran ${Math.round(s.capacity)} FPS in the test match. Kute aims for at least ${s.plan.target} FPS (${3}x your ${s.hz} Hz screen), and this PC needs ${Math.round(s.plan.needed)} to keep that in a fight: samples of the same settings differ by ${Math.round(s.noise*100)} %, and it ended the run at ${Math.round(s.drift*100)} % of its starting speed.

      `;if(s.pushed){let y=(s.unlimited??[]).map(H=>xt(H.fps,0)).join(", "),{limit:C,steadyUpTo:I}=s.pushed,_=`No limit ran steadily, not even your screen's ${s.hz} FPS, so there was no limit to offer.`;C!==null&&I!==null&&(_=`Up to ${I} FPS it ran steadily in the empty test match. A real match is heavier than that, so the limit with room is the highest multiple of your ${s.hz} Hz that has ${I>C?"one more steady step above it":"run steadily"}: ${C} FPS. A limit of your own that runs steadily is kept, a lower one would make the mouse wait longer.`),m=`

      This PC does not run steadily without an FPS limit: it stood still ${Math.round(s.pushed.stoodStill*100)} % of the time (readings without a limit: ${y} FPS). That happens when a PC throttles itself under full load, common on laptops.

      -

      ${_} Game settings were not measured, their gain is read without a limit.

      `}let g=s.played??[],b=g.some(ws)?`

      The game drew more frames than reached the screen: one every ${zp(jn(g.map(y=>y.p50)))}, shown one every ${zp(jn(g.map(y=>y.presentMs)))}.

      `:"",v=e0(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((y,C)=>Ho(`${y.where}: FPS limits`,`${y.html}${C===i.length-1?`

      ${k}

      `:""}`,{unit:"times in ms"}));return`
      ${[Ho("This PC",`

      ${s.gpu}
      ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

      - ${m}${s.rolledBack?`

      ${s.rolledBack}

      `:""}${s.pipelineRefused?`

      ${s.pipelineRefused}

      `:""}${Qv(s.input)}${b}`),Ho("Before and after",`${Dn(`${f}`,[`Before (${Dt(s.beforeCap)})${na(s.before)}`,s.after?`After (${Dt(s.afterCap)})${na(s.after)}`:""])}${s.after?"":'

      Your setup stayed as it was, so there is no after to measure.

      '}`,{unit:"times in ms"}),Ho("Client test: setup",n.length>0?Dn(`Setup${f}Result`,n,"adNum adWrap"):"

      The client test did not run, the client's own setup was left alone.

      ",{unit:"times in ms"}),...E,Ho("Test match: game settings",`

      ${l}

      ${h} +

      ${_} Game settings were not measured, their gain is read without a limit.

      `}let g=s.played??[],b=g.some(ws)?`

      The game drew more frames than reached the screen: one every ${Hp(jn(g.map(y=>y.p50)))}, shown one every ${Hp(jn(g.map(y=>y.presentMs)))}.

      `:"",v=n0(s),k=s.pushed?"On a PC that does not run steadily without a limit, the limits are not compared with each other: each one only has to run steadily.":"A limit is taken when the game reacts sooner or the mouse waits less with it than with yours (gain above zero), and never when anything measures worse. A lower limit's longer frames are in the mouse wait. Slowest 1 % counts beyond the frame time.",E=i.map((y,C)=>Ho(`${y.where}: FPS limits`,`${y.html}${C===i.length-1?`

      ${k}

      `:""}`,{unit:"times in ms"}));return`
      ${[Ho("This PC",`

      ${s.gpu}
      ${s.cpu}${s.laptop?" (laptop)":""}, ${s.hz} Hz${s.powerOverlay?`, Windows power mode: ${s.powerOverlay}`:""}.${p}

      + ${m}${s.rolledBack?`

      ${s.rolledBack}

      `:""}${s.pipelineRefused?`

      ${s.pipelineRefused}

      `:""}${s0(s.input)}${b}`),Ho("Before and after",`${Dn(`${f}`,[`Before (${Dt(s.beforeCap)})${ra(s.before)}`,s.after?`After (${Dt(s.afterCap)})${ra(s.after)}`:""])}${s.after?"":'

      Your setup stayed as it was, so there is no after to measure.

      '}`,{unit:"times in ms"}),Ho("Client test: setup",n.length>0?Dn(`Setup${f}Result`,n,"adNum adWrap"):"

      The client test did not run, the client's own setup was left alone.

      ",{unit:"times in ms"}),...E,Ho("Test match: game settings",`

      ${l}

      ${h}

      Settings that need a reload cannot be measured in one test match, they were not changed.

      `),v?Ho("What the PC did",v,{wide:!0}):""].join("")}

      The run took ${s.seconds.toFixed(0)} s. A difference only counts when it is bigger than the spread between two samples of the same setup, - and a setup that measures worse anywhere is never taken.

      Copy this report
      `}function ra(s,e,t,o,n=!1){let r=Bi(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(u=>({cap:u.cap,where:t,summary:u.summary,frameMs:u.frameMs,netMs:u.netMs,outcome:u.outcome})),a=r.judged.find(u=>u.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:u=0,input:h=null}=a?.gains??{},p=[];u>0&&p.push(`the game reacts ${xt(u)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${xt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${xt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(u=>u.cap!==e&&u.outcome!=="worse"&&u.outcome!=="not steady").sort((u,h)=>(h.netMs??-1/0)-(u.netMs??-1/0)).map(u=>u.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function Op(s){d.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Fp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${d.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function As(){return Fe.some(s=>d.settings.data[s.setting]!==!1!=(d.running?.[s.setting]!==!1))}function Dp(s){return s.report?.version===2?s.report:void 0}function qp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function s0(s){if(s===0)return!0;let e=performance.now()+Gv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function co(s){return ye(s).fps.median??0}var Kn,Rp,Pp,ta,jv,Uv,oa,Fn,Ip,Gv,Ts,Wv,Vv,Yv,Np,_p,sa,Xv,De,yt,ia,Kp,la=w(()=>{"use strict";$p();F();Hn();Ae();ji();Ui();ys();ea();Ji();Kn="kute_autodetect",Rp="kute_autodetect_asked",Pp=250,ta=1500,jv=3e5,Uv=2e4,oa=3*zt,Fn=2*zt,Ip=6*zt,Gv=6e3,Ts=450,Wv=700,Vv=.08,Yv=["gameFpsLimit","throttle",...Fe.map(s=>s.setting)],Np="autodetect-v2",_p="https://krunker.io/",sa="kute_autodetect_stopped",Xv={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});yt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=Cp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
    • ${n}
    • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=o0(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:d.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};ia=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(Yv.map(e=>[e,d.settings.data[e]])),game:Object.fromEntries(Wi.map(e=>[e,$s(e)]))}}restore(e){Bn();for(let[t,o]of Object.entries(e.game))o!==null&&$s(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&d.settings.data[t]!==o&&Ot(t,o)}undo(){let e=Ht();if(!e?.undoable){d.showNotification("Nothing to undo",!1,3);return}let t=new Set(wt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&$s(i)!==a);this.restore(e.snapshot);let n=As();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},qe(e),d.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=Ht();e?.undoable&&(e.undoable=!1,qe(e))}showLast(){let e=Ht();if(!e?.summary){d.showNotification("Auto-detect has not run yet",!1,3);return}new yt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:Dp(e)})}async start(e={}){if(this.running)return;if(!d.hostFeatures?.includes(Np)){d.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(d.recovery){d.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!Ls()){d.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||Oe()){d.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&As()){d.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=Ht(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},qe(t)}let n=new yt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,Di())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),qe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),As()&&d.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=_p)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,qe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=_p}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(sa,c),a(),d.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),Op(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=Jv(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let u=c.displays??[],h=u.find(M=>M.hostsWindow)??u[0],p=n.hz??(h?.hz>1?h.hz:60),f=(c.gpus??[]).filter(M=>!M.software),m=c.renderAdapter?.name??[...f].sort((M,D)=>D.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=d.hostFeatures?.includes("load-sample")===!0,E=d.running?.hardFlip!==!1,L=Number(r.game[kt])||0,y=Number(r.client.gameFpsLimit)||0,C=Number(r.client.throttle)||1,I=[y,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=In(),G=null,J=[],B=[];if(!l){if(G=await qi({hz:p,hybrid:c.hybrid===!0,progress:(M,D)=>e.progress(M,.03+.27*D),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),D=await Ki({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(D){let q=ra(D,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),Op(!0),e.clickThrough(!0);let re=await Cs(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Ms(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!zn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(kt,"0");let Ee=Number(d.settings.data.gameFpsLimit)||0,j=!0;On(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,D=oa)=>{M!==Ee&&(Ot("gameFpsLimit",M),Ee=M,await De(Wv),j=await s0(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await Qi({ms:D,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,zt),window.chrome.webview.postMessage(`input-replay, ${10*zt}`);let M=[],D=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-D<10*zt&&!this.cancelled;){let q=await qp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-D),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},x=async(M,D=oa)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,D);te.invalid||q.push(te)}return q},$=async M=>{for(let D=0;D<4&&!this.cancelled;D++)if(!bt([await X(M,Fn)],M))return},R=async M=>{let D=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return D;D.get(ee)?.push(await X(ee))}return D},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await x(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(kt,"0"),C>1&&(Ot("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(Ts)),e.progress("Measuring what this PC can do",.5);let q=_===0&&C<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,qe(t),L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y);for(let ee of Fe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ot(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:m,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:co(N.uncapped),unlimited:N.uncapped.map(qn),played:N.asPlayed.map(qn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Fe.map(D=>D.setting)].map(D=>[D,r.client[D]??d.settings.data[D]??null])),gameFrameCap:L,hook:c.hook??null,limiter:d.frameLimiter??null,running:d.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:_n({capacity:co(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:On(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,D={})=>{this.restore(t.snapshot);let q=As();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...D,rolledBack:M})}},Z=co(N.uncapped){let{keep:ee,failed:te}=ks(M,D,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(co(D))} FPS, ${Math.round(co(M))} before`:Xv[te??""]}), so Kute put yours back.`},le=[...i];if(C>1&&le.push(`CPU Throttling: ${C} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await x(z);if(this.cancelled)return null;let D={recheck:M.map(qn)},q=bt(N.asPlayed,z)&&bt(M,z)?null:ge(N.asPlayed,M,z);if(q&&ks(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),D);if(q){for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ot(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...D,elapsedMs:performance.now()-a,resumed:!1},qe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Fe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?Zv(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${pt(N.pipelineBefore[O.setting])} \u2192 ${pt(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let ze=co(N.uncapped),Zt=ze>=v?v:p,Eo=M=>!g||M===z||M!==0&&M<=v,qg=N.uncapped.filter(ws).length>=2,Lr=(b||qg)&&ze>=v?v:void 0,He=new Map,Qt=[],se=z,Wo="",Ie=ze,lt=vs(new Map([[0,N.uncapped]]));if(!lt){let M=N.capOrder.length>0?N.capOrder.slice(0,2):Hi({hz:p,capacity:ze,current:z}).slice(1,3),D=[...new Set([z,0,...M,...Lr?[Lr]:[],...g?[Zt]:[]])].filter(Eo);if(He=await R(D),this.cancelled)return null;lt=vs(He);let q=ra(He,z,"test match",Lr,Z);if(Qt=q.rows,!lt){se=q.winner,Wo=q.reason,Ie=co(He.get(0)??[])||ze;let ee=Oi([...He.keys()],se,Ie,p).filter(te=>Eo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=ra(new Map([[se,He.get(se)??[]],...te]),se,"test match",void 0,Z);Qt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ve]of te)He.set(ve,Ve);O.winner!==se&&(se=O.winner,Wo=O.reason),lt=vs(He)}}}let Vo;if(lt){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await $(p);for(let te of Rn(p)){if(this.cancelled)return null;let O=await x(te,Ip);if(M.set(te,O),!ao(O,te))break}if(this.cancelled)return null;let D=_i(p,M),q=(jn([...N.uncapped,...He.get(0)??[]].filter(bs).map(te=>te.stallMs))??0)/1e3;Vo={stoodStill:q,steadyUpTo:D.steadyUpTo,limit:D.cap};for(let te of Qt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=ao(O,te)?"steady":"not steady";Qt.push({cap:te,where:"test match",summary:ye(O.map(zo)),frameMs:jn(O.map(Ve=>Ve.p50)),netMs:null,outcome:ve}),He.set(te,O)}let ee=z>0&&ao(N.asPlayed,z);se=z,ee||(se=[...new Set([D.cap,D.steadyUpTo])].filter(O=>O!==null).find(O=>ks(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Wo=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${D.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(D.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Yo=Qt.find(M=>M.cap===Zt),Kg=Yo!==void 0&&(Yo.outcome==="steady"||Yo.netMs!==null&&(Yo.outcome==="better"||Yo.outcome==="not better"));g&&(se===0||se>v)&&Kg&&(se=Zt,Wo="on battery");for(let M of Qt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(He.get(M.cap)??[]).map(qn);let cn=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),tu=cn.length>1?(Math.max(...cn)-Math.min(...cn))/Math.max(1,...cn):0,Rr=1,dn=1,Pr=null;if(!lt){Pr=await X(0);let M=(l?He.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Rr=(Pr.fps??Ie)/Math.max(1,M),dn=zi(Rr,tu)}let jg=v*dn,$o=[],Ir=null,Xo=Number(r.game[lo])||1;if(lt)for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),D=Pr?.fps??Ie,q=async(O,ve)=>{let Ve=D;O(),await De(Ts);let ct=async()=>{let cu=await X(0,Fn);return cu.invalid?null:cu.fps},eo=await ct();ve(),await De(Ts);let Ye=await ct();if(eo===null||Ye===null)return{ratio:1,steady:!1,raw:[Ve,eo??0,Ye??0]};D=Ye;let lu=(Ve+Ye)/2;return{ratio:eo/Math.max(1,lu),steady:Math.abs(Ve-Ye)/Math.max(1,lu)<=Vv,raw:[Ve,eo,Ye]}},ee=wt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of wt){let ve=r.game[O.id],Ve=String(O.cheap),ct={id:O.id,label:O.label,current:ve??"default",cheap:Ve,gain:null,steady:!0};if($o.push(ct),O.needsReload){ct.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){ct.note="not tested (only costs in a fight)";continue}if(ve===null){ct.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let eo=Yi(ve),Ye=await q(()=>Me(O.id,eo),()=>Me(O.id,ve));ct.gain=eo===Ve?Ye.ratio:1/Math.max(.01,Ye.ratio),ct.steady=Ye.steady,ct.raw=Ye.raw}for(let O of $o){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(lo,String(Math.max(.1,Xo*.5))),()=>Me(lo,String(Xo)));Ir=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Mt=_n({capacity:Ie,hz:p,headroom:dn,halfResolutionGain:Ir,settings:$o});for(let M of Mt.changes)le.push(`${M.label}: ${pt(r.game[M.id])} \u2192 ${pt(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Tt=null;if((Mt.changes.length>0||Mt.tuneResolution)&&(await De(Ts),Tt=(await X(0,Fn)).fps),Mt.tuneResolution&&Tt!==null){let M=Xo;for(let D=0;D<2&&Tt!==null&&TtSs&&!this.cancelled;D++){let q=D===0?M*Math.sqrt(Tt/Mt.needed):Ss;M=Math.min(M,Math.max(Ss,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+D*.01),Me(lo,String(M)),await De(Ts),Tt=(await X(0,Fn)).fps}M!==Xo&&le.push(`Resolution: ${Xo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Mt.changes.length>0&&await X(se);let ou=lt?await Y():[];lt&&await $(se);let su=await x(se,lt?Ip:oa);if(this.cancelled)return null;let Nr={capacity:Ie,noise:tu,drift:Rr,headroom:dn,afterCap:se,after:ye(su),caps:[...N.benchCaps,...Qt],halfResolutionGain:Ir,settings:$o,plan:Mt,pushed:Vo,...ou.length>0?{trace:ou}:{}},_r=se!==z,Ug=!_r&&L>0&&(y===0||LFPS Limit: ${Dt(z)} \u2192 ${Dt(se)} (${Wo})`):Ug&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let un=le.length>0,nu=le.length>i.length;if(nu){let M=(He.get(z)??[]).filter(ee=>!ee.invalid),D=l||L>0||C>1,q=ge(!D&&M.length>=2?M:N.asPlayed,su,se);if(q)return de(q,Nr)}else L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y);Bn();let pn=`${v} FPS (${3}x your ${p} Hz screen)`,ru=`${le.length} setting${le.length===1?"":"s"} changed.`,ft=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${pn} Kute aims for. Nothing needed changing.`;un&&Tt!==null?ft=`${ru} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Tt)} after. Kute aims for at least ${pn} with no stutter.`:un?ft=`${ru} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${pn} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&ao(N.asPlayed,se)){let ee=D!==null&&DsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Rp,"1");let e=new yt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Fp())}decline(e){e.close(),this.remember("declined"),d.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(Ls())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Uv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+jv,t=setInterval(()=>{if(Ls()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new yt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Fp())}afterImport(){if(Ht()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{Ht()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Gi))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Vi(o)}: ${pt(e.game[o])} \u2192 ${pt(n)} (Kute's preset)`));this.remember("run",e,t),d.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=Ht();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,qe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(Kn),d.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},ta);return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(Kn);return}let t=sessionStorage.getItem(sa);if(t&&(sessionStorage.removeItem(sa),setTimeout(()=>d.showNotification(t,!1,12),ta)),e?.showSummary&&e.summary){e.showSummary=!1,qe(e),new yt().result(e.summary,{onUndo:()=>this.undo(),report:Dp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},ta);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Pp);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Pp)}},Kp=new ia;d.autoDetect=Kp;Kp.resume()});var Up={};A(Up,{clanTag:()=>Rs,default:()=>ht});function Rs(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=n0.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function a0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var n0,jp,r0,i0,ca,ht,Un=w(()=>{"use strict";n0=/^\s*\[(.+)\]\s*$/;jp=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],r0=1e3,i0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';ca=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of jp){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),r0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of jp){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(i0)){let r={element:n,name:a0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},ht=new ca});var Wp={};A(Wp,{default:()=>Qe,playerHash:()=>Gn});function p0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function h0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Gn(s,e){let t=new TextEncoder().encode(s+` -`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function m0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},u0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var l0,c0,d0,u0,da,Gp,Qe,ua=w(()=>{"use strict";F();Nt();l0=[2,4,8,16,30],c0=2e3,d0=3e4,u0=1e3;da=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},d0),e.send(JSON.stringify(d.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),c0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=l0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=p0(),t=e?h0():"",o=e&&t?e+` -`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Gn(e,t);if(this.joined!==o)return;let r=d.dev===!0&&this.nonce?await m0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` -`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(d.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},Gp=new da;d.presence=Gp;Qe=Gp});var Yp,Vp=w(()=>{Yp="data:image/webp;base64,UklGRjAbAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSF4FAAABoEVtmyFJ+qs9a9u2bdu2bdu2bdu2bdv2mF3vd5ORkRGRkXsdERNg/9tbrXGmn2/ZVVZbdeWl5p1u7GZpTbzS3hc//tl//Xj2//Xe/efssuTYTTDbHjd/1Q+iVA5AEmM+una7aXLWteol3+CW5CqqHKD9yVlLdmaptejFvwIqyAlIyMsJ7R/Pmjs74+39CaAiig9qv7Z9b06mOXsgCKXNL4dPkIvpLh2O6ggDT5ogBxOcNgxUJClU5J+DB9Sta88/QG6ohkQgXBLfrFmvRd4FFJViCF94cLr69J0+GuRFJQSKChIM2q1Vk7nfR5JfKSAcyE0MSTw0cS12HYojzShI4vtl0+u9CgIQrjouSRTEqINSm+xlQKISyXg7JK7vSWrObwBlskQ8O0FCS/2D8gku8dHUyaw4GOVI+nLGRFYailInjnx/mD6J5YfgooQEIqKq30yXwCKDQBVr5Q+SPpso2iy/gSQKuLLp0MsDIk34OSjXLu5sRel6AmWfE6KcjdyIfLVXi7BefwmQKRD8PnWwaf9GpRmiTOLZjkCtJ1DG3IAkDgu0W9uDbMmhkfMHmW6wfEH5RtJrnSHuUQDIAoRgzwCrEIYcqJJz4BSVOt+RJyoFyEFAJF1caUt8PLM2cuYKXZ+HIwNUoqDbK2yLQpIAQApUkWPM7F4dn6oqPhCLZPBwco3X+sQhQoJE0IipfZ5VnqBAMJ3sMUc7lJAkVF+I82NX2emKWydnBNYp6fyRQOCofVnIB0pWAOIAZAhp1MSui7MEZfKhCts6On4ERcGZnARU8y/c71gExQSHaulDAJDE0L7CYRAAL6G6h1GRVQqPoNA4lcEgpaeZWddgEUV5f8nMFgAooZKyP7THbGdATlQ5X5RpPrPzylBz+mxv9qRKoWFA0tlmPzQSDuA+G3sMDeQufGSztCEINMTgjhXagKMiakKA8TcN1YyFWXel4ZY6pOlWP6HpNjkVUJNtcRpAAWggseUpZWok2ORYjwYurHM4ksgYxFp5V5zBIHuLbNqOU0sqKNqMy1BUoogaRAXa48zSllAyeFAJD0mQiOC/jgFjlC5e1Suk/IHZ9x5EUxThRQkEo+wOs8d8IFbyoNB4nGR2HmVKiESS3NRsB/koVZTPWczmxCNVUD4Htsw6fgOSQRL1IQCPmJndjZKhbgQ4vLAnEiSi3LJgYcaCagnU7ffOgn2k2gI1u8qcpziogyTqtaZrvnatqBF/dLta76JykkscKlxupfv5CBpkybKJhuEhBNmSH++1yuxKr+ZkV/Oct7+J/hzgYw820XHmvUy7cRg4kZ89RjNQBsdYxYX6aQTfX8arYjc3C+xmlaf6j6ag8FZXNTvQj5wV+5eygF3veeWeSy3ogqOa48txw9iJQBOg/qUscPfz2UMCOMGCT/+Xg9w92xXO1hxTyDv8PIXFPB4/yAxIDF3SonbcDXiojEwU+zexyGO9TLFSTve26JN8mbczLMHpv0WSKGQVSZzXSsFm+A5Qljm3ZWlO/7UXVagTp1qyU74LDpA3qi+S2gdZwuM/HUYQgUiCEVta0l0XtUHRAY/o/LK4pb778Cg4lBAvT2XpL/YNMcBFIpzXY3Wc4Po2wSSH5IBYv6xjdd34D8KlzE0TWn0nubafmsFXq1m9F3sTagPSwKMHWN07tvoKaiJGXDa55bBn52/a1GLE5TNYLru3eh1I7Z/TprKsLnvjEEiIN3cZ27I73i6PjaQSYfjslLkt0xNsfvVP+BXBb/izh83dspy3Zt/tqndGSAK8ANrf3XXEigOsEbtn3/Cg8+55+as/howcNWroPz+9+8R1x2239PjWuK1yqzVWUDggrBUAADBOAJ0BKoAAgAA+KQ6FQiGGPp2tBgChLYAaEbbP5DsTsC9C/EL9yP9x8otJfmP3A/br/QfCv+Z+K3QHl/eMfpH+C/tf7b/4P//+7d7APMA/SD/I/3H9xP7X8EvqF/b71AfrZ/0f8d7xH+A/0fsN/uH+Q/2/uAfyv+v9YB+5HsCfz//Beln/4v9X8Fv7P/+n/QfAj/Mf7T/wfzg0Uj+c+g3ut+h/0T9hP3Y8y3zX9E/G/+of9n/NfFrmr8h/mPEd9U/rn9d/Zj+vftp8B/2b8lfNX1S+oF+Ffxz+5f1n9mvyv43jUf2v/ID4AvZj6B/g/7j+zH9+/bP2Xv5X0X+wv+v9wD+Vf1T/DfmR/iP//70/gYfdf9D+yPwAfyD+uf7P/B/ut/tfpV/if9d/k/8f/5f+T7Svyj+6/73/Gf5f/y/4v7Bv49/Qf87/cv8Z/0f8r///q19jX7T+xr+xrrZamm2nqA//5O6Xc0mxYHDhTeHKUS7gCxcxWB01thB5fhKb8cphdNu5VFfTaar5nPBi4CNCyrTA4FgpYubdO799nkw+5KLtsrKUGPFtU9D2Jjx42OB6Fk65mkZs07KqDbAKa4EwX0e4+0XtRm4rEgdPw1x9Kq5fts+uiL270e7jz2mwZbOTyTKGhjs2AKhTLwW9nRlIKyuZD0mVTndtqvZjhPLjWqkdYEh9sjObBlx0i8z+wvhYHgw3TeB8cuSjJwV6XnbguWnYa8ROyeqn57ngtmw2eIjBBe8wN7CBTUBnY4XN9XKcD1Hck/f+emrTikz0aeCiWlSbiUIko5oc/SB07OGUGuvI9o/9mQWNsayzScBgnl1WrvXhWZMmOAAA/v+rULiXDyZjXTq24qq9CBZ4p1iLOGIov3tyUtzGJ0a7fAsurmZeY4YNH+nKPbPyefsvj0AxOWInj+AlkqtAQQpBsDQfQxbTbBmug8G1bEQjOEJGz5JXjw4hn8eZbenxs2BlKyEVOIuJW98gkDXnXpMXnictKTWjTn4l7Vju0vlDdLwXiFfnOQcdF9GWk+TTPZO0nYOaHrHChr3F2hEqzSg6fOQFcqrE6nmL0BVj3ppDUlOcYB//+SxF1Z73Hlm+3dg3sf8BLphdx7vC1vEzYFA7K2lhbXyeDvP82JxPU/GS6jlC/PfGy2EqDaYeY/AJNvh/mJdzPEJnRxXN3kqsYhgVJzMKsbJW4jG4txO+pmDpJvMZyv9HW4W7n7lg9YSNOxAwj0Zm9At6OpxWgwtLCu0HIjD8ayIz0/tg0mR9OJdAMjg6Ok5fXFG8S7TZzIDOG8/HadUBRcbgyuGH+n9ippmMq1c4pSz9wyEwYvAOuTI4gCLB1qdxD+KTbH9asqgxQFYfYFsAv2Eq6RZmPO+PiBSAwLR8ZMrSbXpoxwBvUC2KWESdSvl5EbI4oU1ogM8tMOxsgL3qoYHnJcwjbH3e8U3+8gl/Q+EmF87z+IAxQUonCCbC/xPxhTahrqPPkVHMfBNO/Zl9aNCfW0Ix8uC7VjBu7lcbnXLNLzwaCyvD6aRw9Dp23JTg7Y8MkC1y1X04x8sQhu2P5G6q6BgCJz+k0w7CXc/wdRl6eDuU2hL48wlrwiNSy2dNLvCRhRRPCYmN1UPqvU2SUCi4ggKWU87bhPRx1q8yJCnY5NpYSqwpOq8avsdXVdFTJhFOZaSlgHg2SyCBIu0x946dcUhXwG3/Jav5sHvJE4Jt2nzLjNoFJKClJsVtYu8oNjKyu88R8KwC7meEc1IUTeWZFDnUkUZI6bdvlJINn1p91EOncNmGQ6CZ7apU2x8DIKO0Rl875L+GOH7NtCkxMsX4pGNVT7PH4ffQtJDWmhvKOge/N9/ArBKUzqEQBN4oCDwAGg2UG0i7cvOtjhX3UkvMqJo1fuAirhhW/H2KQCZH5gwtf8w/DPb/GcW7uY+WgQduOEbybagnYE8FjBYiTYoTQ6uWk9Aa8StwmrP9rANG0RQB5i9vmJGvs0kmBVpEITa6npqToda40z7GyOUOEDOnCNiIjm2jVj5tcJcxuQZM71t2yms2oLCjKKAUegK61mZSjbLvXy1Wnsf5JDm2e66DjRUpGaFHXxmS0EZ/oHI/WFv4/2XFc1XAEaIxkcuhLoaBlyG7sYVoZ/Nw5Yye1PAou3+B3iEASdUJio8JbiPYf8RDK0UvXubx+SKAqgmquNuzKRSfh54UQD2mGfwiKw0FSy9jjw/1uuEIWR8WUTqdmfXFZnrbqd57f5VDZJ+s9CZ8SVNTBhwt+hHHkZusduteQ+Qm9vyxFpHjI09TKW6/wi6vdK0At4IakTaSKCBKvqgV7mSfeKdUqqOy3mdGNw3ExDWLjwdo+HZA2o3AfLiRyXdOfDoCRtP8WsFvhd3YrNZxGP7eIzG+GKFS7aEQcHqvrchS6O/B+PaTyn7/YAs/L+oUzEhfdPaTAvEFF8B17X6ODyKIfL4nkdf+NF3HuxQ9020Kz7IBqLpfeIS7oOmERrG9KEhb9ZsFVgpvuxWjiUSeWOsNi4sl/7kv/lD1A3H0hv9Ra3Pxat/Lk5LgFTl7DozdAZbWDK7t+7YUbHE+tIZGhM3KjVa5Feb8dD7ERnMqE8hBYzMFNFYPsXGyZFILVzjgZjnlyv37oWK8xa96yPS4WsDnm2fH5tvWypvTNoSGsdtiwdpxMxV+0lt4w4WlzZqxYNhhBBbnwKUMBvEKCMXH5ZXYqHoY8k4Kogo17owYRu7XXLz26gxXbqgzRQ6T+CBEz7upUpQpBXXshlxuA1Ev8S3TRVkU9Nmohekqq8KT2xTUUq/HeyP9wA60p3JBJACZQHE1bwrKOUbIGRyGV4GgInlKJ341kKfp403ysiaBI8ifVC78CPZfXVisYJ+XAEV2SpnaGJJTb37japcQPxy5dvgcjPqCDswrPkpKAsTXaN2WQ0uPpnxTfV0ZjFxj5tt+zeY4fu1r/QzrvS52NdpibCNs3vb4jIL/EVF3wULl605JeGFRULTVXkyBt9ka4OjvJ6tcO9FeYCDRiLXW6n+DW7GSOY6yBO+UHrt/DYwEVfnk3UNzhON8NwUSc72NRWsV+/Cmab/4smB7RpATf3qwLAvU3a/wtX1O1aFnYvE4XN7gAUzrSlGTLWlLiHXNaUNxKzFYJosqhGXsoE92FMorcDFYTfZ1ssxxt5EBcBrvNqftmI54xGkjNoFHlOrJhy/mfBQwguphp4+V/zUT6ZhW8V7HP1M4o3LEbErMq9FBZM1kQICIgVHtiLsN7AHYV+WqI0gloLtDzGBxTMvNfHLCJ17U27KhXFruNXJTkTZpPdfUpcyvl0qvij9p/IMMr2MMZod/yLpE2z7xyQTm1ZmO4AEQtC08Wq4f3y9TFqNdeFwi1XrTL+pWmwYApC3cpXFjXxi7uQfo1c965GpBmlVQ1h1G9IZgx6hUvh2xSwVu9tCsUFnrD2xLipZ9vcZ14VmcSA/5FDy3/QS/gh8Epamnrdy8tjDLaR1DBh/o4YlEEH9bAu+gjPyX4o/yJNC/EpJCpjioKCTR0LzY4Gh2ugfmYoSrHd2CpQZCR4FdaItfFVQrad1Ne7HLKE/HBKKCWmwzrky3WbTWVh5rXQRUf2N/I9nExfz5eLVd9wcc+9m9gEl2Zxm1RKZRp0FzFMP5UeXUGArUGZiC6KAg+YJrdUNiFbL7Y4Z0wo8Fgs5/fQNjs5tNlcLCgNA1MFE3ux8hXt1YP/iYRfELVuqwTvlaQry4eNxPK5XSwXh5Ax7Iu8UFwmUpNMLiIpVAteuOhyJ0EWPB+ddA8sxAS0s/dYOMtq76GNILPr/iEwbZZVMmOUjZSrSHgAJ0h1w63F4CF7BR3Qy7FKdpOR8qKf1pPleZ/uMdcBVN0FHew76X/+Nd2HrZp+X4oeDTciJgZpqo94hd52RuxS1Apt/GTG83xJQpdjehtHuGa16Q1HELSGypKOqS6Xxcd5T5MZegiD+nG9mFUxWRry1mODn8BlL5r612xXRm9Kb0HRBWRE1P6pLaIeTM+5esffFn5/jJ0iyC7uTcUGJhOiz+5TXYUImZcG5N62dvwcF2NV+3vE9x3noM1+n1DzK2xklarfntBOOS1jELmFQqwcusUtN1B3PfRabZ6HccZoVtitHr27DQAKA51TF+KTBS+b9iFyulqtX/Rmy+daeLg9le7NnJzdT/WR6bnkIx2u7yR5DcqFOLwsUiJEk81rAxhS9IBmW1biaduSCF7UqZABGqMsVzIGO0MKC+/i1XKQLS/nWpe7FgeNUVUrz0CCePop6N3Wk3xDXw8Rmmgwb/A/n4qle7/D2Jth/wUtIMov/8WOQrB2TySeGH7FAFY+YMWjJbSKWbn+y0Qf/t7DYp68rdRfsQB9JgwNdHnp5BSvzTdj1K99P0MjkcfduD+CmX+c//jK8QO/80c6s7uC3/WzuVPdgnC5B3JisXKtN3To2X42osvo0+u/MIHPy5sUYrILCpZJ/MV/3JPIi4u4itjzalIVHxqe/x5VE8Ak9zrkpIWqHqonRxy3AhvUTUls/dBednYmfaBn1bivWk0SF9RwQHgJEZT8CAnu3gS+1Zj2wN17hUwcBWZ3EJSwGbNOTzXDwmooL8V62pBUvOlOEu5dHQ8nZlWTwaj5W2JqpRNi0wgf9yeHc+9LTt8d1yLtYOb0oyvrLckznnINaSGo5Eb/YNXeYqQMoN9709O2FOsr0wCvHKS4e/26H4Cfm5yTjIljRjpwyBA4IWT0L9adhmiK1ngOYdbLIihOM4BdQ3Sh7DN3lwjjJRXavZXpIk41kPiScJAJkQ3HY3BwW/UwGOG6u2tRgwIRKdk6QP3AUGnjbruPddS5vWNb79X3utkCB1/ITe/aeYkt13rNAXKlLgrOdnT6Txd4SQtA2XAlhJ4Fv5jWMKIs7mDVntmYDWCql089gtd/57jjDQZoCEvyqp7ETUUNp/tf+CbCM/OLoocP/FnraG+pL3NagUtHiwRgX6uveDe9xj0CYgMEnI7aSl2+GXNF++XdYhzpdb2NGjviNTWAPa0T8PT0gbB9rrhJntI6c1FlW03quzdKRH2kKAjpNlX7+4pL0+O0aNGs2vzYG5ljVav/tJMRSCvw6a0wkwhaeghy2DyS7MtzVoVmZLOIaIX31VHX8OKWSRdxvGGO73kUCWZYQaopu34R+WRzVRKQgWZpIpk4DIHXZMnHv8ECSI6Ofk6BzH0y0x/Vo8PfwwxU4rm/w6yOPDsoG93P3GHSHbuut+/ZA0xtfO2WC3qfWtrvK3tFydr0wiV49YhhHv9GJCd/JXyQ0edDcI/W0fpJv+j+MJIYc1tY9My6P8IrI2mcyPg8/BEnsIilIe9eUyIm53YlTo6O63e7T+BQcEonl9t8PztLARORteVliaJiCCeJTNYnaS8bZqyqj3vQ8Yju1RmcN/IeUOafBeaZx5ZSL/Pz6eiWn+pKAF57pK2ziWpHnywzxHoPYFkcNzhf/M/lMrALWA+OfLbcyjxB3MUjxJplB/1u/wekMeGfdmAsgdocxuX6eWDGDG4MxKUC8ZCOSpVmRqhzMy6HbHNddSMpbNpN1lBGz9aqDICuSt2TYEmJVajcQCuUBwNEaVUv4wxRe1DBlb4d0C3lyR/+yoHA3TlIH6+fTbosvzupjsq75GGdyxMx7PBUzZnHXh0CKp+pj6fTx7pmxQfHduc5+cgTKmHlUA2ewNUqalW5yyZFuMXc6CLw51WHgWv9V9/HUguYmcJ3lTkj3WOePUQmgkaaTE5hMzXczb4JM7SrZa1CQObd04rTXucJwYXbHmVIgT6GHWyu0RWopImcylldEhMWlDtF0+gzDC4mJUnnHRKIm5Z0suModsiDAQop0WNCBOSKp4fshUpm9nBB7vMGdk+M4csaEIkAeC5ey44YkGZfj12wu1r1C9oyZiXtbjUTMdhanjxZsug1w7Bx5w2GJmzF1R3DeCYTvphxAgjS2kDq5bWkRdwdNBT3hr9A5TP98PYyI/V87+tKbNFLISUejEnRrvRTszVdGbeYn2rgpMrsOE0kzai7l8AnSiI+QTp5wD/i3MtIBDF3AjHqmZcJ+S8gFlGFtKkBKwH9mGNG3AQiKOrBesQ1eUfLmD9ytRgVU2LNOzcngPLO1aedvSSAVeglwQ7ycfgGhj6JAeh2KSQ37GASUge8AHs5y+rowSV7Rsu+keqMR2oSem5owTKtF/qzLGs55E/6rYGRzZ32YlW2NkonFWESzrxRmiOAJGdubf8bUg0tcL1yzOrgyxtcuXuO67/84ThZaI/6b3pVWLqbTQtX118Raqnb61lIF1RY7U9DprtG5VJZi/59UkGa71NYgN4IQtP1WMkgm3JaBmtGD6OmWE0McedjomM7czyuAbz9/KgzV6AEtZnm2QtdlKTpA/eBUtmxR3xp8AZ0e2yZJ4n4+9JCmqwIAZXpl0U3BZQh452ayLCSJYowjLE6KFfKmB/dvOwVRnXQs3YSqcKD62KOiwuM85HBCEg+OP3iq/VdXNpe8T6Pr2jX82C4muB0FtVBFQj2oCL52TB8o9sdKWrTYgtgtd34GsOab4Jtf6EI70mRbU87WCAEsy9zCQSWxOu80kKJmL8rGr3jC8/x1qkzzOy1AjKK+p2X0K3k2K59kM9R6DtI0lF5BUf23ZgSke4/iC3wUHWBv1TCmIB1yi2EYAVP9dfxITZ3XHHI8X9dbGtEZSDJUUp7NJlbeI8e+n9Bhhzqg27GwG7MmFgjBg7KJS6Q6734AJVLYZG3hI2nzc74WuGwIC7MJtS+YeFoYYGOzNQqkcesXjAehzfTlrLHllyX3rKAzRzf2cg2ie1VgFl+pRGpdi1pzVvDbjkm+R3jB8ZZDYCUg3/+b45OrvmWmq14UWrjozIIBQfnWG+3rxco1eCVOW9afxMT3zs4Zy1DGwFHJ/CHLtzOZaHOiQOgJ+HSTMQl3P6wFBIo8AJC6bRZq23u7I43ooL2viCD3htEUsqsavUm8rH9VMprA8ixSXQTK3s8428tlcainy+0FLv9A/ExP9LqiTFvUlzZ/KbpeIBq1PRmS6ss6U/iXGyecVpzA0rnvfRZf35g3cW0j6V9IudrSM7HxCNdiXqWl5QZocyGclyx9WQJ3Xcz0EEd9yCW2ofXtt06S/djsn+AvdyHvycrPnwd7xxAmLdxnKRNGNlveVJAVv90oCxCCgO1c8ch55gAk+xXdVizWvcSXlGehJU2dOns4jBpxM/OqxXsWNE9PxwQgdgA9063P/Te+CP+NSKGd4TrK7QrABMvcAmbVbIJHrOkYwZTU4CLhV+aw+q+s/UqgJ2yEv29aoDTrRvCy6GQJPua6sB6epP5mg9b8pNpPD0RaTR7RXy5G2pKN3OzA4FOeWh3Tbp92ragNzOaKh2yD9ZeAMNiUIcAymjz1pWjNwddtpnz9owAAAAAA="});var Jp,Xp=w(()=>{Jp="data:image/webp;base64,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"});var ha={};A(ha,{default:()=>y0});function Zp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function Qp(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var b0,v0,w0,k0,pa,eh,y0,ma=w(()=>{"use strict";F();Un();ua();Vp();Xp();b0="2px",v0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},w0={kute:Yp,dev:Jp},k0={kute:"Kute",dev:"Kute Developer"};pa=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=d.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),d.settings.toggleCuteBadge=e=>this.toggle(e),Qe.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Zp("kute"),ht.refresh()}rosterChanged(){if(Qe.game!==this.game&&(this.game=Qe.game,this.hashes.clear(),this.pending.clear()),Zp(),Qe.roster.size===0){ht.remove(this.decorator);return}ht.add(this.decorator,this.finisher)}decorate(e){if(Qe.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(Qe.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Rs(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&Qe.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===Qe.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&Qp(i.row.element);continue}a!=="dev"&&(a&&Qp(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Gn(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),Qe.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,ht.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=w0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=k0[t],r.style.cssText=v0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=b0),o.setAttribute("data-kute-badged",t)}},eh=new pa;d.badges=eh;y0=eh});var th=we((DS,x0)=>{x0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} -`});var ga={};A(ga,{default:()=>S0});var fa,S0,ba=w(()=>{"use strict";F();Ae();fa=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(th(),1)).then(e=>{this.styles.innerHTML=e.default}),d.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},S0=new fa});var nh={};function oh(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function sh(){let s=oh().length>0;s?qt.classList.remove("disabled"):qt.classList.add("disabled"),qt.textContent=s?"Claim All":"Nothing to Claim"}async function E0(){let s=oh();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));sh()}}function $0(){let s=document.querySelector(".bpBotH");s&&(s.append(qt),sh())}var qt,C0,va=w(()=>{"use strict";qt=document.createElement("div");qt.className="bpBtn skip";qt.id="claimAllBtn";qt.textContent="Claim All";qt.onclick=()=>{window.playSelect?.(.1),E0()};C0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>$0()),C0(...s))});function xa(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function mh(s){ho=s}function Oo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function Ke(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,lh)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,lh);return s}function ch(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function dh(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length
      Copy this report
      `}function ia(s,e,t,o,n=!1){let r=zi(s,e,{prefer:o,inputRequired:t==="test match",trade:n}),i=r.judged.map(u=>({cap:u.cap,where:t,summary:u.summary,frameMs:u.frameMs,netMs:u.netMs,outcome:u.outcome})),a=r.judged.find(u=>u.cap===r.winner),l="measures as smooth as before, with fewer frames to draw";if(r.decidedBy==="net"){let{task:u=0,input:h=null}=a?.gains??{},p=[];u>0&&p.push(`the game reacts ${xt(u)} ms sooner`),h!==null&&h>0&&p.push(`the mouse waits ${xt(h)} ms less`),h!==null&&h<0&&p.push(`the mouse waits ${xt(-h)} ms longer, which the sooner reaction outweighs on a PC below its target`),l=p.length>0?p.join(", "):"frames come sooner and nothing waits longer"}let c=r.judged.filter(u=>u.cap!==e&&u.outcome!=="worse"&&u.outcome!=="not steady").sort((u,h)=>(h.netMs??-1/0)-(u.netMs??-1/0)).map(u=>u.cap);return{rows:i,winner:r.winner,reason:l,order:c}}function Fp(s){d.hostFeatures?.includes("mute")&&window.chrome.webview.postMessage(`mute, ${s}`)}function Dp(){return`Takes about two minutes. Don't touch mouse or keyboard meanwhile: a test window opens and closes a few times, then Kute plays a private match by itself, turning the view and firing.${d.hostFeatures?.includes("mute")?" The game is muted meanwhile.":""}`}function As(){return Fe.some(s=>d.settings.data[s.setting]!==!1!=(d.running?.[s.setting]!==!1))}function qp(s){return s.report?.version===2?s.report:void 0}function Kp(s){return new Promise(e=>{let t=performance.now(),o={frames:0,done:!1,watchdog:0},n=()=>{o.frames++;let r=performance.now()-t;if(r{o.done||e(null)},s+2e3)})}async function a0(s){if(s===0)return!0;let e=performance.now()+Xv;for(;performance.now()typeof t=="number"?Math.round(t*100)/100:null;return{fps:e(s.fps),p50:e(s.p50),p99:e(s.p99),maxMs:e(s.maxMs),stallMs:e(s.stallMs),taskP99:e(s.taskP99),inputP99:e(s.inputP99),...typeof s.presentMs=="number"?{presentMs:e(s.presentMs)}:{},...s.invalid?{invalid:!0,why:s.why}:{},...s.load?{load:s.load}:{}}}function co(s){return ye(s).fps.median??0}var Kn,Pp,Ip,oa,Vv,Yv,sa,Fn,Np,Xv,Ts,Jv,Zv,Qv,_p,Bp,na,e0,De,yt,aa,jp,ca=w(()=>{"use strict";Cp();F();Hn();Ae();Ui();Gi();ys();ta();Zi();Kn="kute_autodetect",Pp="kute_autodetect_asked",Ip=250,oa=1500,Vv=3e5,Yv=2e4,sa=3*zt,Fn=2*zt,Np=6*zt,Xv=6e3,Ts=450,Jv=700,Zv=.08,Qv=["gameFpsLimit","throttle",...Fe.map(s=>s.setting)],_p="autodetect-v2",Bp="https://krunker.io/",na="kute_autodetect_stopped",e0={taskP99:"the game reacted later",inputP99:"the mouse waited longer",p99:"slow frames came later",stallMs:"more stutter",maxMs:"a longer freeze",frame:"frames took longer, and the mouse wait could not be measured",unsteady:"it did not run steadily"},De=s=>new Promise(e=>{setTimeout(e,s)});yt=class{constructor(){document.querySelector("#adPanelHost")?.parentElement?.remove(),this.overlay=document.createElement("div"),this.onEscape=void 0,this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.93)";let e=document.createElement("div");e.id="adPanelHost",this.overlay.append(e),this.root=e.attachShadow({mode:"open"}),this.root.innerHTML=Mp,document.body.append(this.overlay)}element(e){return this.root.querySelector(`#${e}`)}progress(e,t){this.element("adStatus").textContent=e,this.element("adBarFill").style.width=`${Math.round(t*100)}%`}choose(e,t,o,n){let r=o.find(l=>l.cancel);this.dismissWith(r?()=>r.onPick():void 0),this.element("adTitle").textContent=e,this.element("adStatus").textContent=t;let i=this.element("adNote");i.textContent=n??"",i.style.display=n?"block":"none",this.element("adBar").style.display="none",this.element("adHint").style.display="none";let a=this.element("adActions");a.style.display="flex",a.innerHTML="";for(let l of o){let c=document.createElement("div");c.className="adButton",c.textContent=l.label,c.onclick=()=>l.onPick(),a.append(c)}}result(e,t={}){this.dismissWith(()=>this.close()),this.element("adTitle").textContent=e.title,this.element("adStatus").textContent=e.line,this.element("adNote").style.display="none",this.element("adBar").style.display="none",this.element("adHint").style.display="none",this.element("adActions").style.display="flex",this.element("adDetailsButton").style.display="none",this.element("adUndo").style.display=e.changed&&t.onUndo?"":"none",this.element("adRun").style.display=t.onRun?"":"none",this.element("adRestart").style.display=e.needsRestart?"":"none",this.element("adRestart").onclick=()=>window.chrome.webview.postMessage("restart"),this.element("adAdvancedButton").style.display=t.report?"":"none";let o=this.element("adDetails");if(o.innerHTML=e.details.map(n=>`
    • ${n}
    • `).join(""),o.style.display=e.details.length>0?"block":"none",t.report){let n=this.element("adAdvanced");n.innerHTML=i0(t.report);let r=this.element("adAdvancedButton");r.textContent="Advanced",r.onclick=()=>{let i=n.style.display!=="block";n.style.display=i?"block":"none",this.element("adPanel").classList.toggle("adWide",i),r.textContent=i?"Hide advanced":"Advanced"},this.element("adCopy").onclick=()=>{let i=JSON.stringify({kute:d.version,...t.report},null,2);navigator.clipboard.writeText(i).then(()=>{this.element("adCopy").textContent="Copied"},()=>{this.element("adCopy").textContent="Copying failed"})}}this.element("adOk").onclick=()=>this.close(),this.element("adUndo").onclick=()=>{this.close(),t.onUndo?.()},this.element("adRun").onclick=()=>{this.close(),t.onRun?.()}}clickThrough(e){this.overlay.style.pointerEvents=e?"none":""}dismissWith(e){this.unbindEscape(),this.overlay.onclick=e?t=>{t.target===this.overlay&&e()}:null,e&&(this.onEscape=t=>{t.key==="Escape"&&(t.stopPropagation(),e())},document.addEventListener("keydown",this.onEscape,!0))}unbindEscape(){this.onEscape&&document.removeEventListener("keydown",this.onEscape,!0),this.onEscape=void 0}close(){this.unbindEscape(),this.overlay.remove()}};aa=class{constructor(){this.running=!1,this.cancelled=!1}snapshot(){return{client:Object.fromEntries(Qv.map(e=>[e,d.settings.data[e]])),game:Object.fromEntries(Vi.map(e=>[e,$s(e)]))}}restore(e){Bn();for(let[t,o]of Object.entries(e.game))o!==null&&$s(t)!==o&&Me(t,o);for(let[t,o]of Object.entries(e.client))o!==void 0&&d.settings.data[t]!==o&&Ot(t,o)}undo(){let e=Ht();if(!e?.undoable){d.showNotification("Nothing to undo",!1,3);return}let t=new Set(wt.filter(i=>i.needsReload).map(i=>i.id)),o=Object.entries(e.snapshot.game).some(([i,a])=>t.has(i)&&a!==null&&$s(i)!==a);this.restore(e.snapshot);let n=As();e.undoable=!1;let r="Your previous settings are back.";o&&(r="Your previous settings are back, the game reloads once to apply them."),n&&(r+=" Restart Kute to finish."),e.summary={title:"Undone",line:r,details:[],changed:!1,needsRestart:n},qe(e),d.showNotification(`Auto-detect undone. ${r.replace("Your previous settings are back","Your settings are back")}`,!1,5),o&&setTimeout(()=>location.reload(),1200)}dropUndo(){let e=Ht();e?.undoable&&(e.undoable=!1,qe(e))}showLast(){let e=Ht();if(!e?.summary){d.showNotification("Auto-detect has not run yet",!1,3);return}new yt().result(e.summary,{onUndo:e.undoable?()=>this.undo():void 0,report:qp(e)})}async start(e={}){if(this.running)return;if(!d.hostFeatures?.includes(_p)){d.showNotification("Auto-detect needs a newer Kute, update the client to use it",!1,6);return}if(d.recovery){d.showNotification("Auto-detect can't run in safe mode or while Kute looks for the cause of a crash",!1,6);return}if(!Ls()){d.showNotification("Log in first: auto-detect measures in a private test match, and hosting one needs an account",!1,6);return}if(document.pointerLockElement||Oe()){d.showNotification("Open the menu outside of a competitive match first",!1,4);return}if(!e.resume&&As()){d.showNotification("Restart Kute first: a setting you changed only applies after a restart, auto-detect would test the old one",!1,7);return}this.running=!0,this.cancelled=!1,window.closWind?.();let t,o;if(e.resume)t=e.resume,o=t.previous??null;else{o=Ht(),o&&(delete o.wizard,delete o.wizardDetails);let l=this.snapshot();t={status:"running",at:Date.now(),snapshot:e.snapshot??l,baseline:l,previous:o,details:e.details??[]},qe(t)}let n=new yt,r=l=>{l.key==="Escape"&&(this.cancelled=!0,qi())};document.addEventListener("keydown",r,!0);let i={inMatch:!1},a=()=>{window.chrome.webview.postMessage("input-replay-stop"),this.restore(t.snapshot),qe(o||{status:"prompted",at:Date.now(),snapshot:t.snapshot}),n.close(),As()&&d.showNotification("Your settings are back. Restart Kute to finish",!1,7),i.inMatch&&(document.exitPointerLock(),location.href=Bp)};try{let l=await this.run(n,t,i);if(l==="restarting")return;if(l===null){a();return}t.status="done",t.summary=l.summary,t.report=l.report,t.undoable=l.summary.changed,!l.summary.changed&&o?.undoable&&(t.snapshot=o.snapshot,t.undoable=!0),delete t.previous,delete t.baseline,delete t.carry,delete t.details,t.showSummary=!0,qe(t),n.progress("Leaving the test match",1),document.exitPointerLock(),await De(800),location.href=Bp}catch(l){let c=`Auto-detect stopped: ${l instanceof Error?l.message:String(l)}`;i.inMatch&&sessionStorage.setItem(na,c),a(),d.showNotification(c,!1,7)}finally{document.removeEventListener("keydown",r,!0),Fp(!1),window.chrome.webview.postMessage("throttle, menu"),this.running=!1}}async run(e,t,o){let n=t0(),r=t.baseline??t.snapshot,i=t.details??[],a=performance.now()-(t.carry?.elapsedMs??0),l=!!t.carry;e.progress("Reading your hardware",.02);let c=await Te("get-specs","specs");if(c===null)throw new Error("this needs a newer version of the client");let u=c.displays??[],h=u.find(M=>M.hostsWindow)??u[0],p=n.hz??(h?.hz>1?h.hz:60),f=(c.gpus??[]).filter(M=>!M.software),m=c.renderAdapter?.name??[...f].sort((M,D)=>D.vramMb-M.vramMb)[0]?.name??"unknown graphics card",g=n.battery??!!c.onBattery,b=n.laptop??(!!c.laptop||c.hybrid===!0),v=p*3,k=d.hostFeatures?.includes("load-sample")===!0,E=d.running?.hardFlip!==!1,L=Number(r.game[kt])||0,y=Number(r.client.gameFpsLimit)||0,C=Number(r.client.throttle)||1,I=[y,L].filter(M=>M>0),_=I.length>0?Math.min(...I):0,H=In(),G=null,J=[],B=[];if(!l){if(G=await Ki({hz:p,hybrid:c.hybrid===!0,progress:(M,D)=>e.progress(M,.03+.27*D),cancelled:()=>this.cancelled}),this.cancelled)return null;if(G&&n.force&&n.force in H&&(G={...G,winner:{...H,[n.force]:!H[n.force]},changed:!0,decidedBy:"p99"}),G){e.progress("Testing FPS limits",.31);let M=[...new Set([0,v,2*p,p,_])].sort((q,ee)=>ee-q),D=await ji({pipeline:G.winner,common:G.common,caps:M,cancelled:()=>this.cancelled});if(this.cancelled)return null;if(D){let q=ia(D,_,"client test",b?v:void 0);J=q.rows,B=q.order}}}e.progress("Opening a private test match",.38),Fp(!0),e.clickThrough(!0);let re=await Cs(),je=!1;if(re&&(e.progress("Joining the test match",.41),je=await Ms(re)),e.clickThrough(!1),!je)throw window.closWind?.(),new Error("could not open a private test match (is a host slot free?)");o.inMatch=!0;let be=()=>{if(!zn(re))throw new Error("left the private test match")};if(this.cancelled)return null;L>0&&l&&Me(kt,"0");let Ee=Number(d.settings.data.gameFpsLimit)||0,j=!0;On(),window.chrome.webview.postMessage("throttle, game"),await De(2500),await De(300),window.chrome.webview.postMessage("bring-to-front");let X=async(M,D=sa)=>{M!==Ee&&(Ot("gameFpsLimit",M),Ee=M,await De(Jv),j=await a0(M)),be(),k&&await Te("load-sample","loadSample",500),E&&await Te("get-present-intervals","presentIntervals",400);let q=await ea({ms:D,hz:p,replay:!0});if(E){let ee=await Te("get-present-intervals","presentIntervals",400);ee&&ee.samples>0&&(q.presentMs=ee.p50)}if(k&&(q.load=await Te("load-sample","loadSample",500)),be(),!j&&!q.invalid&&(q.invalid=!0,q.why="nothing held the FPS limit"),n.collapse!==void 0&&(M===0||M>=n.collapse)){let ee=(te,O)=>(te??0)+O;return{...q,fps:(q.fps??0)/2,stallMs:400,p99:ee(q.p99,25),maxMs:ee(q.maxMs,40),taskP99:ee(q.taskP99,40),inputP99:ee(q.inputP99,30)}}return q},Y=async()=>{if(!k)return[];await X(0,zt),window.chrome.webview.postMessage(`input-replay, ${10*zt}`);let M=[],D=performance.now();for(await Te("load-sample","loadSample",500);performance.now()-D<10*zt&&!this.cancelled;){let q=await Kp(300);if(q===null)break;M.push({ms:Math.round(performance.now()-D),fps:Math.round(q),load:await Te("load-sample","loadSample",500)})}return window.chrome.webview.postMessage("input-replay-stop"),M},x=async(M,D=sa)=>{let q=[];for(let ee=0;ee<5&&q.length<2&&!this.cancelled;ee++){let te=await X(M,D);te.invalid||q.push(te)}return q},$=async M=>{for(let D=0;D<4&&!this.cancelled;D++)if(!bt([await X(M,Fn)],M))return},R=async M=>{let D=new Map(M.map(q=>[q,[]]));for(let q=0;q<2;q++)for(let ee of M){if(this.cancelled)return D;D.get(ee)?.push(await X(ee))}return D},{carry:K}=t;if(!K){e.progress("Measuring how the game runs now",.45),await X(Ee);let M=await x(Ee);if(this.cancelled)return null;if(M.length<2)throw new Error("the game could not be measured, the Kute window has to stay in front during the test");L>0&&Me(kt,"0"),C>1&&(Ot("throttle",1),window.chrome.webview.postMessage("throttle, game"),await De(Ts)),e.progress("Measuring what this PC can do",.5);let q=_===0&&C<=1?[...M,await X(0)]:[await X(0),await X(0),await X(0)];if(this.cancelled)return null;if(K={asPlayed:M,uncapped:q,playedCap:_,pipelineBefore:H,pipelineAfter:G?.winner??H,pipelineChanged:!!G?.changed,decidedBy:G?.decidedBy??null,rows:G?.rows??[],benchCaps:J,capOrder:B,elapsedMs:performance.now()-a},K.pipelineChanged){t.carry=K,qe(t),L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y);for(let ee of Fe)K.pipelineAfter[ee.setting]!==H[ee.setting]&&Ot(ee.setting,K.pipelineAfter[ee.setting]);return document.exitPointerLock(),e.choose("Kute restarts once","The client test found a setup that runs better on this PC. Kute restarts with it and checks it in the game, the test goes on by itself.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}}let{playedCap:z}=K,N=K,V=M=>({version:2,gpu:m,cpu:`${c.cpu?.name??"unknown processor"}, ${c.cpu?.threads??"?"} threads`,hz:p,laptop:!!c.laptop,hybrid:typeof c.hybrid=="boolean"?c.hybrid:null,powerOverlay:c.powerOverlay??null,capacity:co(N.uncapped),unlimited:N.uncapped.map(qn),played:N.asPlayed.map(qn),adapters:{render:c.renderAdapter?.luid??null,display:h?.adapter??null},hybridSource:c.hybridSource??null,client:{...Object.fromEntries(["gameFpsLimit","throttle","inMenuThrottle","uncapFps","patchFrameLimiter","obsCapturePlugin","renderStats","performanceMode","webviewPriority",...Fe.map(D=>D.setting)].map(D=>[D,r.client[D]??d.settings.data[D]??null])),gameFrameCap:L,hook:c.hook??null,limiter:d.frameLimiter??null,running:d.running??null},noise:0,drift:1,headroom:1,beforeCap:z,before:ye(N.asPlayed),afterCap:z,after:null,pipeline:N.rows,caps:N.benchCaps,halfResolutionGain:null,settings:[],plan:_n({capacity:co(N.uncapped),hz:p,headroom:1,halfResolutionGain:null,settings:[]}),input:On(),rolledBack:null,pipelineRefused:N.pipelineRefused??null,recheck:N.recheck??[],seconds:(performance.now()-a)/1e3,...M}),de=(M,D={})=>{this.restore(t.snapshot);let q=As();return{summary:{title:"Nothing changed",line:q?`${M} Restart Kute to finish.`:M,details:[],changed:!1,needsRestart:q},report:V({...D,rolledBack:M})}},Z=co(N.uncapped){let{keep:ee,failed:te}=ks(M,D,{capBefore:z,capAfter:q,trade:Z});return ee?null:te==="reference"?"Kute could not measure the game with your own settings well enough to compare (its window has to stay in front), so it put yours back.":te==="result"?"Kute could not measure the result (its window has to stay in front), so it put your settings back.":`The new settings measured worse than yours (${te==="fps"?`${Math.round(co(D))} FPS, ${Math.round(co(M))} before`:e0[te??""]}), so Kute put yours back.`},le=[...i];if(C>1&&le.push(`CPU Throttling: ${C} \u2192 off (it slows the game down on purpose, the result is checked against how the game ran with it)`),l&&N.pipelineChanged&&!N.pipelineRefused){e.progress("Checking the new setup in the game",.5);let M=await x(z);if(this.cancelled)return null;let D={recheck:M.map(qn)},q=bt(N.asPlayed,z)&&bt(M,z)?null:ge(N.asPlayed,M,z);if(q&&ks(N.asPlayed,M,{capBefore:z,capAfter:z,trade:Z}).failed==="result")return de(q.replace("The new settings","The setup that won the client test"),D);if(q){for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&Ot(O.setting,N.pipelineBefore[O.setting]);return L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y),t.carry={...N,pipelineRefused:q.replace("The new settings","The setup that won the client test"),...D,elapsedMs:performance.now()-a,resumed:!1},qe(t),document.exitPointerLock(),e.choose("Kute restarts once more","The setup from the client test ran worse in the game, so Kute goes back to yours and tests the FPS limits on it.",[]),await De(3500),this.cancelled?null:(window.chrome.webview.postMessage("restart"),"restarting")}let ee=N.rows.find(O=>Fe.every(ve=>O.pipeline[ve.setting]===N.pipelineAfter[ve.setting])),te=ee?o0(N.decidedBy,ye(N.rows[0].readings),ye(ee.readings)):"measured better";for(let O of Fe)N.pipelineAfter[O.setting]!==N.pipelineBefore[O.setting]&&le.push(`${O.label}: ${pt(N.pipelineBefore[O.setting])} \u2192 ${pt(N.pipelineAfter[O.setting])} (${te})`)}e.progress("Finding the FPS limit that runs best",.56);let ze=co(N.uncapped),Zt=ze>=v?v:p,Eo=M=>!g||M===z||M!==0&&M<=v,Gg=N.uncapped.filter(ws).length>=2,Rr=(b||Gg)&&ze>=v?v:void 0,He=new Map,Qt=[],se=z,Wo="",Ie=ze,lt=vs(new Map([[0,N.uncapped]]));if(!lt){let M=N.capOrder.length>0?N.capOrder.slice(0,2):Oi({hz:p,capacity:ze,current:z}).slice(1,3),D=[...new Set([z,0,...M,...Rr?[Rr]:[],...g?[Zt]:[]])].filter(Eo);if(He=await R(D),this.cancelled)return null;lt=vs(He);let q=ia(He,z,"test match",Rr,Z);if(Qt=q.rows,!lt){se=q.winner,Wo=q.reason,Ie=co(He.get(0)??[])||ze;let ee=Fi([...He.keys()],se,Ie,p).filter(te=>Eo(te)&&te0){e.progress("Fine tuning the FPS limit",.64);let te=await R(ee);if(this.cancelled)return null;let O=ia(new Map([[se,He.get(se)??[]],...te]),se,"test match",void 0,Z);Qt.push(...O.rows.filter(ve=>ve.cap!==se));for(let[ve,Ye]of te)He.set(ve,Ye);O.winner!==se&&(se=O.winner,Wo=O.reason),lt=vs(He)}}}let Vo;if(lt){e.progress("Finding the FPS limit this PC holds steadily",.62);let M=new Map;await $(p);for(let te of Rn(p)){if(this.cancelled)return null;let O=await x(te,Np);if(M.set(te,O),!ao(O,te))break}if(this.cancelled)return null;let D=Bi(p,M),q=(jn([...N.uncapped,...He.get(0)??[]].filter(bs).map(te=>te.stallMs))??0)/1e3;Vo={stoodStill:q,steadyUpTo:D.steadyUpTo,limit:D.cap};for(let te of Qt)te.outcome==="better"&&(te.outcome="not used");for(let[te,O]of M){let ve=ao(O,te)?"steady":"not steady";Qt.push({cap:te,where:"test match",summary:ye(O.map(zo)),frameMs:jn(O.map(Ye=>Ye.p50)),netMs:null,outcome:ve}),He.set(te,O)}let ee=z>0&&ao(N.asPlayed,z);se=z,ee||(se=[...new Set([D.cap,D.steadyUpTo])].filter(O=>O!==null).find(O=>ks(N.asPlayed,M.get(O)??[],{capBefore:z,capAfter:O}).keep)??z),Wo=`without a limit this PC stood still ${Math.round(q*100)} % of the time. Up to ${D.steadyUpTo} FPS it ran steadily in the empty test match, ${se} FPS ${(D.steadyUpTo??0)>se?"leaves a step of room for a real match":"is the highest that did"}`}let Yo=Qt.find(M=>M.cap===Zt),Wg=Yo!==void 0&&(Yo.outcome==="steady"||Yo.netMs!==null&&(Yo.outcome==="better"||Yo.outcome==="not better"));g&&(se===0||se>v)&&Wg&&(se=Zt,Wo="on battery");for(let M of Qt)M.cap===se&&M.cap!==z&&M.outcome!=="not steady"&&(M.outcome="chosen"),M.readings=(He.get(M.cap)??[]).map(qn);let cn=N.uncapped.map(M=>M.fps).filter(M=>typeof M=="number"),ou=cn.length>1?(Math.max(...cn)-Math.min(...cn))/Math.max(1,...cn):0,Pr=1,dn=1,Ir=null;if(!lt){Ir=await X(0);let M=(l?He.get(0)?.[0]:N.uncapped[0])?.fps??Ie;Pr=(Ir.fps??Ie)/Math.max(1,M),dn=Hi(Pr,ou)}let Vg=v*dn,$o=[],Nr=null,Xo=Number(r.game[lo])||1;if(lt)for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC does not run steadily without a limit)"});else if(IeO.inputP99!==null),D=Ir?.fps??Ie,q=async(O,ve)=>{let Ye=D;O(),await De(Ts);let ct=async()=>{let du=await X(0,Fn);return du.invalid?null:du.fps},eo=await ct();ve(),await De(Ts);let Xe=await ct();if(eo===null||Xe===null)return{ratio:1,steady:!1,raw:[Ye,eo??0,Xe??0]};D=Xe;let cu=(Ye+Xe)/2;return{ratio:eo/Math.max(1,cu),steady:Math.abs(Ye-Xe)/Math.max(1,cu)<=Zv,raw:[Ye,eo,Xe]}},ee=wt.filter(O=>!O.needsReload&&(M||!O.fightOnly));for(let O of wt){let ve=r.game[O.id],Ye=String(O.cheap),ct={id:O.id,label:O.label,current:ve??"default",cheap:Ye,gain:null,steady:!0};if($o.push(ct),O.needsReload){ct.note="not tested (needs a reload)";continue}if(O.fightOnly&&!M){ct.note="not tested (only costs in a fight)";continue}if(ve===null){ct.note="value unknown";continue}if(this.cancelled)return null;e.progress(`Measuring ${O.label}`,.68+.17*ee.indexOf(O)/ee.length);let eo=Xi(ve),Xe=await q(()=>Me(O.id,eo),()=>Me(O.id,ve));ct.gain=eo===Ye?Xe.ratio:1/Math.max(.01,Xe.ratio),ct.steady=Xe.steady,ct.raw=Xe.raw}for(let O of $o){if(O.gain===null||!O.steady||O.current===O.cheap||O.gainMe(O.id,O.cheap),()=>Me(O.id,O.current));O.confirmGain=ve.ratio,O.gain=Math.min(O.gain,ve.ratio),O.steady=ve.steady}e.progress("Checking the graphics card",.88);let te=await q(()=>Me(lo,String(Math.max(.1,Xo*.5))),()=>Me(lo,String(Xo)));Nr=te.steady&&te.ratio>.92?te.ratio:null}else for(let M of wt)$o.push({id:M.id,label:M.label,current:r.game[M.id]??"default",cheap:String(M.cheap),gain:null,steady:!0,note:"not tested (this PC reaches its target)"});if(this.cancelled)return null;let Mt=_n({capacity:Ie,hz:p,headroom:dn,halfResolutionGain:Nr,settings:$o});for(let M of Mt.changes)le.push(`${M.label}: ${pt(r.game[M.id])} \u2192 ${pt(M.value)} (${M.reason})`),Me(M.id,String(M.value));let Tt=null;if((Mt.changes.length>0||Mt.tuneResolution)&&(await De(Ts),Tt=(await X(0,Fn)).fps),Mt.tuneResolution&&Tt!==null){let M=Xo;for(let D=0;D<2&&Tt!==null&&TtSs&&!this.cancelled;D++){let q=D===0?M*Math.sqrt(Tt/Mt.needed):Ss;M=Math.min(M,Math.max(Ss,Math.floor(q*20)/20)),e.progress(`Trying resolution ${M}`,.9+D*.01),Me(lo,String(M)),await De(Ts),Tt=(await X(0,Fn)).fps}M!==Xo&&le.push(`Resolution: ${Xo} \u2192 ${M} (the graphics card is the limit)`)}if(this.cancelled)return null;e.progress("Checking the result",.94),Mt.changes.length>0&&await X(se);let su=lt?await Y():[];lt&&await $(se);let nu=await x(se,lt?Np:sa);if(this.cancelled)return null;let _r={capacity:Ie,noise:ou,drift:Pr,headroom:dn,afterCap:se,after:ye(nu),caps:[...N.benchCaps,...Qt],halfResolutionGain:Nr,settings:$o,plan:Mt,pushed:Vo,...su.length>0?{trace:su}:{}},Br=se!==z,Yg=!Br&&L>0&&(y===0||LFPS Limit: ${Dt(z)} \u2192 ${Dt(se)} (${Wo})`):Yg&&le.push(`FPS Limit: ${Dt(se)}, now held by Kute instead of the game's frame cap (the game's cap keeps the processor busy while it waits)`);let un=le.length>0,ru=le.length>i.length;if(ru){let M=(He.get(z)??[]).filter(ee=>!ee.invalid),D=l||L>0||C>1,q=ge(!D&&M.length>=2?M:N.asPlayed,nu,se);if(q)return de(q,_r)}else L>0&&Me(kt,String(L)),Ee!==y&&Ot("gameFpsLimit",y);Bn();let pn=`${v} FPS (${3}x your ${p} Hz screen)`,iu=`${le.length} setting${le.length===1?"":"s"} changed.`,ft=`Your PC ran ${Math.round(Ie)} FPS in the test match, above the ${pn} Kute aims for. Nothing needed changing.`;un&&Tt!==null?ft=`${iu} Test match without a limit: ${Math.round(Ie)} FPS before, ${Math.round(Tt)} after. Kute aims for at least ${pn} with no stutter.`:un?ft=`${iu} Without a limit your PC runs ${Math.round(Ie)} FPS in the test match, Kute aims for at least ${pn} with no stutter.`:Iese?" with room to spare":""}.`;else if(se>0&&ao(N.asPlayed,se)){let ee=D!==null&&DsetTimeout(()=>this.offer(),1500),{once:!0});return}sessionStorage.setItem(Pp,"1");let e=new yt;e.choose("Set Kute up for this PC?","Kute can set the game up for what this PC can do: it measures in a private test match, and everything it changes can be undone. You have to be logged in for that.",[{label:"Yes",onPick:()=>{this.setUp(e)}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"No",cancel:!0,onPick:()=>this.decline(e)}],Dp())}decline(e){e.close(),this.remember("declined"),d.showNotification("Got it. You can always start the setup from Settings, Client",!1,5)}async signedIn(){if(Ls())return!0;if(!localStorage.getItem("krunker_token"))return!1;let e=Date.now()+Yv;for(;Date.now(){e.close(),window.loginOrRegister(),this.waitForLogin()}},{label:"Ask later",onPick:()=>{e.close(),this.remember("later")}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}])}waitForLogin(){let e=Date.now()+Vv,t=setInterval(()=>{if(Ls()){clearInterval(t),this.askSettings();return}Date.now()>e&&clearInterval(t)},1e3)}askSettings(e=new yt){this.remember("settings"),e.choose("Where should your game settings come from?","Kute measures this PC either way and sets what it finds. This is only about the settings it starts from.",[{label:"Import a settings.txt",onPick:()=>{e.close(),this.remember("import"),window.importSettingsPopup()}},{label:"Kute's preset",onPick:()=>{e.close(),this.applyPreset()}},{label:"Keep my settings",onPick:()=>{e.close(),this.start()}},{label:"Cancel",cancel:!0,onPick:()=>this.decline(e)}],Dp())}afterImport(){if(Ht()?.wizard!=="import")return;let e=this.snapshot();this.remember("run",e,[]),setTimeout(()=>{Ht()?.wizard==="run"&&this.start({snapshot:e})},1500)}applyPreset(){let e=this.snapshot(),t=[];for(let[o,n]of Object.entries(Wi))String(e.game[o])!==String(n)&&(Me(o,n),t.push(`${Yi(o)}: ${pt(e.game[o])} \u2192 ${pt(n)} (Kute's preset)`));this.remember("run",e,t),d.showNotification("Applying Kute's preset, the game reloads once",!1,4),setTimeout(()=>location.reload(),1200)}resume(){let e=Ht();if(e?.status==="running"){if(e.carry&&!e.carry.resumed){e.carry.resumed=!0,qe(e),setTimeout(async()=>{if(await this.signedIn()){this.start({resume:e});return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(Kn),d.showNotification("Auto-detect could not go on (not logged in). Your settings are back, restart Kute to finish",!1,8)},oa);return}this.restore(e.snapshot),e.previous?qe(e.previous):localStorage.removeItem(Kn);return}let t=sessionStorage.getItem(na);if(t&&(sessionStorage.removeItem(na),setTimeout(()=>d.showNotification(t,!1,12),oa)),e?.showSummary&&e.summary){e.showSummary=!1,qe(e),new yt().result(e.summary,{onUndo:()=>this.undo(),report:qp(e)});return}if(e?.wizard==="run"){setTimeout(async()=>{await this.signedIn()&&this.start({snapshot:e.snapshot,details:e.wizardDetails??[]})},oa);return}if(e?.wizard==="login"||e?.wizard==="settings"||e?.wizard==="import"){setTimeout(()=>this.setUp(),Ip);return}e&&e.wizard!=="later"||setTimeout(()=>this.offer(),Ip)}},jp=new aa;d.autoDetect=jp;jp.resume()});var Gp={};A(Gp,{clanTag:()=>Rs,default:()=>ht});function Rs(s){for(let e of s.children){if(e.tagName!=="SPAN")continue;let t=l0.exec(e.textContent??"");if(t)return{span:e,tag:t[1]}}return null}function u0(s){let e="";for(let t of s.childNodes)t.nodeType===Node.TEXT_NODE&&(e+=t.textContent??"");return e.trim()}var l0,Up,c0,d0,da,ht,Un=w(()=>{"use strict";l0=/^\s*\[(.+)\]\s*$/;Up=[{list:"leaderContainer",kind:"leader",root:"leaderboardHolder"},{list:"ingameTable",kind:"ingame",root:"centerLeaderDisplay"},{list:"endTable",kind:"end",root:"endUI"},{list:"playerListH",kind:"alt",root:"menuWindow"}],c0=1e3,d0='.pListName, [class^="newLeaderName"], [class^="leaderName"], .endTableN';da=class{constructor(){this.decorators=new Map,this.watched=[],this.timer=0}add(e,t){this.decorators.set(e,t),this.watched.length===0&&this.observe(),this.refresh()}remove(e){if(this.decorators.delete(e),!(this.decorators.size>0)){for(let{observer:t}of this.watched)t.disconnect();this.watched=[],clearInterval(this.timer),this.timer=0}}observe(){for(let{root:e,list:t,kind:o}of Up){let n=document.getElementById(e);n&&this.watch(n,t,o)}this.timer=setInterval(()=>this.discover(),c0)}watch(e,t,o){let n={observer:new MutationObserver(()=>this.walk(n)),target:e,list:t,kind:o};n.observer.observe(e,{childList:!0,subtree:!0}),this.watched.push(n),this.walk(n)}discover(){this.watched=this.watched.filter(e=>e.target.isConnected?!0:(e.observer.disconnect(),!1));for(let{list:e,kind:t}of Up){let o=document.getElementById(e);o&&!this.watched.some(n=>n.target.contains(o))&&this.watch(o,e,t)}}refresh(){for(let e of this.watched)this.walk(e)}walk(e){let t=document.querySelectorAll(`#${e.list}`);if(t.length>0){for(let o of t)for(let n of o.querySelectorAll(d0)){let r={element:n,name:u0(n),kind:e.kind};for(let i of this.decorators.keys())i(r)}for(let o of this.decorators.values())o?.(e.kind)}e.observer.takeRecords()}},ht=new da});var Vp={};A(Vp,{default:()=>et,playerHash:()=>Gn});function g0(){if(document.getElementById("signedInHeaderBar")===null)return"";let s=window.getGameActivity?.()?.id;return typeof s=="string"?s:""}function b0(){let s=window.getGameActivity?.()?.user;if(typeof s!="string")return"";if(localStorage.getItem("kro_setngss_premiumBadge")==="false"){let e=localStorage.getItem("krunker_username");if(e)return e}return s}async function Gn(s,e){let t=new TextEncoder().encode(s+` +`+e),o=new Uint8Array(await crypto.subtle.digest("SHA-256",t));return Array.from(o.subarray(0,16),n=>n.toString(16).padStart(2,"0")).join("")}function v0(s,e,t){return new Promise(o=>{let n=0,r=i=>{let a=i?.data?.devProof;a?.nonce===s&&(clearTimeout(n),window.chrome.webview.removeEventListener("message",r),o(typeof a.user=="string"&&typeof a.proof=="string"?{user:a.user,proof:a.proof}:null))};n=setTimeout(()=>{window.chrome.webview.removeEventListener("message",r),o(null)},f0),window.chrome.webview.addEventListener("message",r),window.chrome.webview.postMessage(`dev-proof, ${s}, ${e}, ${t}`)})}var p0,h0,m0,f0,ua,Wp,et,pa=w(()=>{"use strict";F();Nt();p0=[2,4,8,16,30],h0=2e3,m0=3e4,f0=1e3;ua=class{constructor(){this.game="",this.roster=new Set,this.devs=new Map,this.nonce="",this.listeners=new Set,this.socket=null,this.failures=0,this.timer=0,this.joined="",he.available().then(e=>{e&&this.open()}),he.listeners.add(e=>{if(!e){this.socket?.close();return}this.failures=0,he.available().then(t=>{t&&!this.socket&&this.open()})})}open(){if(he.down||he.offline())return;let e=new WebSocket(he.base.replace(/^http/,"ws")+"/ws");this.socket=e,e.addEventListener("open",()=>{setTimeout(()=>{this.socket===e&&(this.failures=0)},m0),e.send(JSON.stringify(d.settings.data.counted===!0?{t:"hi"}:{t:"hi",first:!0})),this.sync(),this.timer=setInterval(()=>this.sync(),h0)}),e.addEventListener("message",t=>this.receive(t.data)),e.addEventListener("close",()=>{clearInterval(this.timer),this.socket=null,this.joined="",this.nonce="",this.setRoster("",[]);let t=p0[this.failures++];t!==void 0&&setTimeout(()=>this.open(),t*1e3)})}async sync(){let e=g0(),t=e?b0():"",o=e&&t?e+` +`+t:"";if(o===this.joined)return;if(this.joined=o,!o){this.send({t:"leave"}),this.setRoster("",[]);return}let n=await Gn(e,t);if(this.joined!==o)return;let r=d.dev===!0&&this.nonce?await v0(this.nonce,e,n):null;this.joined===o&&this.send(r?{t:"join",game:e,hash:n,dev:r}:{t:"join",game:e,hash:n})}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(String(e))}catch{return}t?.t==="hello"&&typeof t.nonce=="string"?this.nonce=t.nonce:t?.t==="roster"&&typeof t.game=="string"&&Array.isArray(t.players)?this.joined.startsWith(t.game+` +`)&&this.setRoster(t.game,t.players):t?.t==="+"&&typeof t.h=="string"?(this.remember(t.h,t.d===1?t.c:void 0),this.changed()):t?.t==="-"&&typeof t.h=="string"?(this.roster.delete(t.h),this.devs.delete(t.h),this.changed()):t?.t==="counted"&&(d.settings.data.counted=!0,window.chrome.webview.postMessage("set-config, counted, true"))}remember(e,t){this.roster.add(e),typeof t=="string"&&t!==""?this.devs.set(e,t):this.devs.delete(e)}setRoster(e,t){if(!(e===this.game&&t.length===0&&this.roster.size===0)){this.game=e,this.roster=new Set,this.devs=new Map;for(let o of t)Array.isArray(o)&&typeof o[0]=="string"&&this.remember(o[0],o[1]===1?o[2]?.c:void 0);this.changed()}}changed(){for(let e of this.listeners)e()}},Wp=new ua;d.presence=Wp;et=Wp});var Xp,Yp=w(()=>{Xp="data:image/webp;base64,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"});var Zp,Jp=w(()=>{Zp="data:image/webp;base64,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"});var ma={};A(ma,{default:()=>$0});function Qp(s){let e=s?`[data-kute-badge="${s}"]`:"[data-kute-badge]";for(let o of document.querySelectorAll(e))o.remove();let t=s?`[data-kute-badged="${s}"]`:"[data-kute-badged]";for(let o of document.querySelectorAll(t))o.removeAttribute("data-kute-badged")}function eh(s){(s.querySelector("[data-kute-badge]")??s.parentElement?.querySelector("[data-kute-badge]"))?.remove(),s.removeAttribute("data-kute-badged")}var y0,x0,S0,E0,ha,th,$0,fa=w(()=>{"use strict";F();Un();pa();Yp();Jp();y0="2px",x0={leader:"margin-top:5px;vertical-align:middle;height:21px;margin-left:2px",ingame:"margin-top:3px;vertical-align:middle;height:21px;margin-left:2px",end:"margin-top:-12px;vertical-align:middle;width:26px;margin-left:2px",alt:"vertical-align:middle;height:21px;margin-left:6px;position:relative;top:-0.35em"},S0={kute:Xp,dev:Zp},E0={kute:"Kute",dev:"Kute Developer"};ha=class{constructor(){this.game="",this.hashes=new Map,this.pending=new Set,this.found=!1,this.candidates=[],this.enabled=d.settings.data.cuteBadge!==!1,this.decorator=e=>this.decorate(e),this.finisher=()=>this.finish(),d.settings.toggleCuteBadge=e=>this.toggle(e),et.listeners.add(()=>this.rosterChanged())}toggle(e){this.enabled=e,e||Qp("kute"),ht.refresh()}rosterChanged(){if(et.game!==this.game&&(this.game=et.game,this.hashes.clear(),this.pending.clear()),Qp(),et.roster.size===0){ht.remove(this.decorator);return}ht.add(this.decorator,this.finisher)}decorate(e){if(et.roster.size===0||e.name==="")return;let t=this.hashes.get(e.name);if(t===void 0){this.learn(e.name);return}if(et.devs.has(t)){this.candidates.push({row:e,hash:t,tag:Rs(e.element)?.tag});return}this.enabled&&!e.element.hasAttribute("data-kute-badged")&&et.roster.has(t)&&this.insert(e,"kute")}finish(){if(this.candidates.length===0)return;let e=new Map;for(let t of this.candidates){let o=e.get(t.hash);o?o.push(t):e.set(t.hash,[t])}for(let[t,o]of e){let n=o.filter(i=>i.tag===et.devs.get(t)),r=null;n.length===1?r=n[0].row:n.length===0&&o.length===1&&(r=o[0].row);for(let i of o){let a=i.row.element.getAttribute("data-kute-badged");if(i.row!==r){a&&eh(i.row.element);continue}a!=="dev"&&(a&&eh(i.row.element),this.insert(i.row,"dev"))}}this.candidates.length=0}async learn(e){if(this.pending.has(e))return;this.pending.add(e);let{game:t}=this,o=await Gn(t,e);t===this.game&&(this.pending.delete(e),this.hashes.set(e,o),et.roster.has(o)&&(this.found=!0),!(this.pending.size>0||!this.found)&&(this.found=!1,ht.refresh()))}insert(e,t){let{element:o}=e,n=o.parentElement;if(!n)return;let r=document.createElement("img");r.src=S0[t],r.setAttribute("data-kute-badge",t),r.alt="",r.title=E0[t],r.style.cssText=x0[e.kind],e.kind==="alt"?o.append(r):e.kind==="end"?n.insertBefore(r,o.nextSibling):n.insertBefore(r,n.firstElementChild?.nextSibling??o),r.nextElementSibling?.tagName==="I"&&(r.style.marginRight=y0),o.setAttribute("data-kute-badged",t)}},th=new ha;d.badges=th;$0=th});var oh=we((GS,C0)=>{C0.exports=`#chatList>*{display:block!important}#chatInputHolder{opacity:1;transition:opacity .2s ease-in-out,transform .2s ease-in-out}#chatList::-webkit-scrollbar{display:none}#chatList{transition:margin-bottom .2s ease-in-out}#uiBase.onGame #chatList{margin-bottom:-50px}#uiBase.onMenu #chatInputHolder{transition:none}#uiBase.onGame #chatInputHolder{opacity:0;transform:translateY(50px)}#uiBase.onGame #chatHolder:focus-within #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onGame #chatHolder:focus-within #chatList{margin-bottom:0}#uiBase.onSpect #chatInputHolder{opacity:1;transform:translateY(0)}#uiBase.onSpect #chatList{margin-bottom:0} +`});var ba={};A(ba,{default:()=>M0});var ga,M0,va=w(()=>{"use strict";F();Ae();ga=class{constructor(){this.teamModes=new Set(["Team Deathmatch","Hardpoint","Capture the Flag","Hide & Seek","Infected","Last Man Standing","Simon Says","Prop Hunt","Boss Hunt","Deposit","Stalker","Kill Confirmed","Defuse","Traitor","Blitz","Domination","Squad Deathmatch","Team Defender"]),this.styles=document.createElement("style"),Promise.resolve().then(()=>ue(oh(),1)).then(e=>{this.styles.innerHTML=e.default}),d.settings.toggleBetterChat=e=>this.toggle(e),this.chatHolder=U("#chatHolder"),this.chatList=U("#chatList"),this.chatInput=ke("#chatInput"),this.chatSwitch=U("#chatSwitch"),this.channelT=document.createElement("div"),this.channelA=document.createElement("div"),this.channelT.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #9eeb56;",this.channelT.textContent="[T]",this.channelA.style.cssText="float: left; display: inline-block; margin-right: 5px; color: #eb5656;",this.channelA.textContent="[M]",this.observer=new MutationObserver(e=>this.parseMessages(e)),this.toggle(!0)}switchChat=e=>{e.key==="Tab"&&(window.switchChat(this.chatSwitch),e.preventDefault())};parseMessages(e){let t=!1;for(let o of e)for(let n of o.addedNodes){if(!(n instanceof HTMLElement))continue;let r=n.querySelector(".chatItem");if(!r)continue;let i=r.querySelector(".chatMsg");if(!i)continue;if(i.textContent.includes("Text & Voice Chat")){n.remove();continue}let{tab:a}=n.dataset;!a||!r.textContent.includes("\u200E:")||!this.teamModes.has(window.getGameActivity().mode)||(a==="0"?i.insertBefore(this.channelA.cloneNode(!0),i.firstChild):a==="1"&&i.insertBefore(this.channelT.cloneNode(!0),i.firstChild),t=!0)}t&&(this.chatList.scrollTop=1e9)}toggle(e){e?(document.head.append(this.styles),this.chatInput.addEventListener("keydown",this.switchChat,{capture:!0}),this.observer.observe(this.chatList,{childList:!0})):(this.styles.remove(),this.chatInput.removeEventListener("keydown",this.switchChat,{capture:!0}),this.observer.disconnect())}},M0=new ga});var rh={};function sh(){return Array.from(document.querySelectorAll(".bpClaimB")).filter(s=>s.offsetParent!==null&&s.textContent.trim()==="Claim")}function nh(){let s=sh().length>0;s?qt.classList.remove("disabled"):qt.classList.add("disabled"),qt.textContent=s?"Claim All":"Nothing to Claim"}async function T0(){let s=sh();if(s.length!==0){for(let e of s)e.getAttribute("onclick")?.includes("windows[5].claimItem(")&&e.click(),await new Promise(o=>setTimeout(o,200));nh()}}function A0(){let s=document.querySelector(".bpBotH");s&&(s.append(qt),nh())}var qt,L0,wa=w(()=>{"use strict";qt=document.createElement("div");qt.className="bpBtn skip";qt.id="claimAllBtn";qt.textContent="Claim All";qt.onclick=()=>{window.playSelect?.(.1),T0()};L0=window.showWindow;window.showWindow=(...s)=>(s[0]===6&&queueMicrotask(()=>A0()),L0(...s))});function Sa(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function fh(s){ho=s}function Oo(s){let e=[];return t=>{let o=Math.max(0,Math.min(3,t-1)),n=e[o];return n||(n=s(o),e[o]=n),n}}function Q(s,e=""){let t=typeof s=="string"?s:s.source,o={replace:(n,r)=>{let i=typeof r=="string"?r:r.source;return i=i.replace(Le.caret,"$1"),t=t.replace(n,i),o},getRegex:()=>new RegExp(t,e)};return o}function Ke(s,e){if(e){if(Le.escapeTest.test(s))return s.replace(Le.escapeReplace,ch)}else if(Le.escapeTestNoEncode.test(s))return s.replace(Le.escapeReplaceNoEncode,ch);return s}function dh(s){try{s=encodeURI(s).replace(Le.percentDecode,"%")}catch{return null}return s}function uh(s,e){let t=s.replace(Le.findPipe,(r,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),o=t.split(Le.splitPipe),n=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),e)if(o.length>e)o.splice(e);else for(;o.length=0&&Le.blankLine.test(e[t]);)t--;return e.length-t<=2?s:e.slice(0,t+1).join(` -`)}function Yn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function xw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function Sw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function ph(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,u=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=u;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function Ew(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` +`)}function Yn(s){return s.toLowerCase().toUpperCase().toLowerCase()}function Cw(s,e){if(s.indexOf(e[1])===-1)return-1;let t=0;for(let o=0;o0?-2:-1}function Mw(s,e=0){let t=e,o="";for(let n of s)if(n===" "){let r=4-t%4;o+=" ".repeat(r),t+=r}else o+=n,t++;return o}function hh(s,e,t,o,n){let r=e.href,i=e.title||null,a=s[1].replace(n.other.outputLinkReplace,"$1"),l=s[0].charAt(0)==="!";o.state.inLink=!0;let c=o.state.linkEmitted,u=o.state.inRawBlock;o.state.linkEmitted=!1;let h=o.inlineTokens(a),p=o.state.linkEmitted;if(o.state.linkEmitted=c,o.state.inLink=!1,!l){if(p){o.state.inRawBlock=u;return}o.state.linkEmitted=!0}return{type:l?"image":"link",raw:t,href:r,title:i,text:a,tokens:h}}function Tw(s,e,t){let o=s.match(t.other.indentCodeCompensation);if(o===null)return e;let n=o[1];return e.split(` `).map(r=>{let i=r.match(t.other.beginningSpace);if(i===null)return r;let[a]=i;return r.slice(Math.min(a.length,n.length))}).join(` -`)}function hh(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return po.parse(s,e)}function Cw(...s){return po.use(...s),ie.defaults=po.defaults,mh(ie.defaults),ie}var ho,uo,M0,Le,T0,A0,L0,Ns,R0,Sa,fh,gh,P0,Ea,I0,$a,N0,_0,_s,Ca,B0,bh,z0,H0,O0,Ma,rh,F0,D0,q0,K0,vh,j0,St,Fo,Bs,U0,G0,wh,W0,V0,Y0,kh,X0,J0,Z0,Q0,yh,ew,tw,ow,sw,nw,rw,iw,aw,lw,cw,dw,uw,pw,hw,xh,Vn,mw,fw,gw,ih,bw,vw,ah,Ta,ww,wa,kw,Wn,Ps,yw,lh,Xn,et,Jn,Aa,tt,Is,$w,po,jS,US,GS,WS,VS,YS,Sh=w(()=>{ho=xa();uo={exec:()=>null};M0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Oo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}>`))},T0=/^(?:[ \t]*(?:\n|$))+/,A0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,L0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Ns=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,R0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Sa=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,fh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,gh=Q(fh).replace(/bull/g,Sa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),P0=Q(fh).replace(/bull/g,Sa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ea=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,I0=/^[^\n]+/,$a=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,N0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",$a).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),_0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Sa).getRegex(),_s="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ca=/|$))/,B0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ca).replace("tag",_s).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),bh=s=>Q(Ea).replace("hr",Ns).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),z0=bh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),H0=bh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),O0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",H0).getRegex(),Ma={blockquote:O0,code:A0,def:N0,fences:L0,heading:R0,hr:Ns,html:B0,lheading:gh,list:_0,newline:T0,paragraph:z0,table:uo,text:I0},rh=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Ns).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),F0={...Ma,lheading:P0,table:rh,paragraph:Q(Ea).replace("hr",Ns).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",rh).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex()},D0={...Ma,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ca).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:uo,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(Ea).replace("hr",Ns).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",gh).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},q0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,K0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,vh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,j0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",M0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),kh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,X0=Q(kh,"u").replace(/punct/g,St).getRegex(),J0=Q(kh,"u").replace(/punct/g,wh).getRegex(),Z0=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Q0=Q(Z0,"u").replace(/openQuote/g,G0).replace(/punct/g,St).getRegex(),yh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ew=Q(yh,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),tw=Q(yh,"gu").replace(/notPunctSpace/g,V0).replace(/punctSpace/g,W0).replace(/punct/g,wh).getRegex(),ow="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",sw=Q(ow,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),nw=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),rw="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",iw=Q(rw,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),aw=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,St).getRegex(),lw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",cw=Q(lw,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),dw=Q(/\\(punct)/,"gu").replace(/punct/g,St).getRegex(),uw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),pw=Q(Ca).replace("(?:-->|$)","-->").getRegex(),hw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",pw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),xh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Vn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",xh).getRegex(),mw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Vn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),fw=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Vn).replace("ref",$a).getRegex(),gw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",$a).getRegex(),ih=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,bw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",xh).getRegex(),vw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",bw).replace("ref",ih).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",ih).getRegex()).getRegex(),ah=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ta={_backpedal:uo,anyPunctuation:dw,autolink:uw,blockSkip:Y0,br:vh,code:K0,del:uo,delLDelim:uo,delRDelim:uo,emStrongLDelim:X0,emStrongRDelimAst:ew,emStrongRDelimUnd:nw,escape:q0,link:mw,nolink:gw,punctuation:U0,reflink:fw,reflinkSearch:vw,tag:hw,text:j0,url:uo},ww={...Ta,emStrongLDelim:Q0,emStrongRDelimAst:sw,emStrongRDelimUnd:iw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Vn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Vn).getRegex()},wa={...Ta,emStrongRDelimAst:tw,emStrongLDelim:J0,delLDelim:aw,delRDelim:cw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ah).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},lh=s=>yw[s];Xn=class{options;rules;lexer;constructor(s){this.options=s||ho}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:uh(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=Ew(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=Kt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:Kt(e[0],` +`)}function mh(s,e,t,o){if(!e.includes("<"))return!1;for(let n=0;ne.length-n)return!0;n+=i[0].length-1}}return!1}function ie(s,e){return po.parse(s,e)}function Lw(...s){return po.use(...s),ie.defaults=po.defaults,fh(ie.defaults),ie}var ho,uo,R0,Le,P0,I0,N0,Ns,_0,Ea,gh,bh,B0,$a,z0,Ca,H0,O0,_s,Ma,F0,vh,D0,q0,K0,Ta,ih,j0,U0,G0,W0,wh,V0,St,Fo,Bs,Y0,X0,kh,J0,Z0,Q0,yh,ew,tw,ow,sw,xh,nw,rw,iw,aw,lw,cw,dw,uw,pw,hw,mw,fw,gw,bw,Sh,Vn,vw,ww,kw,ah,yw,xw,lh,Aa,Sw,ka,Ew,Wn,Ps,$w,ch,Xn,tt,Jn,La,ot,Is,Aw,po,YS,XS,JS,ZS,QS,e3,Eh=w(()=>{ho=Sa();uo={exec:()=>null};R0=((s="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Oo(s=>new RegExp(`^ {0,${s}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:\`\`\`|~~~)`)),headingBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}#`)),htmlBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}(?:)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:Oo(s=>new RegExp(`^ {0,${s}}>`))},P0=/^(?:[ \t]*(?:\n|$))+/,I0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,N0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Ns=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,_0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ea=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,gh=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,bh=Q(gh).replace(/bull/g,Ea).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),B0=Q(gh).replace(/bull/g,Ea).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),$a=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,z0=/^[^\n]+/,Ca=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,H0=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ca).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),O0=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Ea).getRegex(),_s="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ma=/|$))/,F0=Q("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ma).replace("tag",_s).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),vh=s=>Q($a).replace("hr",Ns).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",s).replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),D0=vh(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),q0=vh(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),K0=Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",q0).getRegex(),Ta={blockquote:K0,code:I0,def:H0,fences:N0,heading:_0,hr:Ns,html:F0,lheading:bh,list:O0,newline:P0,paragraph:D0,table:uo,text:z0},ih=Q("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Ns).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex(),j0={...Ta,lheading:B0,table:ih,paragraph:Q($a).replace("hr",Ns).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ih).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",_s).getRegex()},U0={...Ta,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ma).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:uo,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q($a).replace("hr",Ns).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",bh).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},G0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,W0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,wh=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,V0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",R0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),yh=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,ew=Q(yh,"u").replace(/punct/g,St).getRegex(),tw=Q(yh,"u").replace(/punct/g,kh).getRegex(),ow=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,sw=Q(ow,"u").replace(/openQuote/g,X0).replace(/punct/g,St).getRegex(),xh="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",nw=Q(xh,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),rw=Q(xh,"gu").replace(/notPunctSpace/g,Z0).replace(/punctSpace/g,J0).replace(/punct/g,kh).getRegex(),iw="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",aw=Q(iw,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),lw=Q("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),cw="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",dw=Q(cw,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),uw=Q(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,St).getRegex(),pw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",hw=Q(pw,"gu").replace(/notPunctSpace/g,Bs).replace(/punctSpace/g,Fo).replace(/punct/g,St).getRegex(),mw=Q(/\\(punct)/,"gu").replace(/punct/g,St).getRegex(),fw=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),gw=Q(Ma).replace("(?:-->|$)","-->").getRegex(),bw=Q("^comment|^|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",gw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Sh=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Vn=Q(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",Sh).getRegex(),vw=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Vn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ww=Q(/^!?\[(label)\]\[(ref)\]/).replace("label",Vn).replace("ref",Ca).getRegex(),kw=Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ca).getRegex(),ah=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,yw=Q(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",Sh).getRegex(),xw=Q("reflink|nolink(?!\\()","g").replace("reflink",Q(/^!?\[(label)\]\[(ref)\]/).replace("label",yw).replace("ref",ah).getRegex()).replace("nolink",Q(/^!?\[(ref)\](?:\[\])?/).replace("ref",ah).getRegex()).getRegex(),lh=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Aa={_backpedal:uo,anyPunctuation:mw,autolink:fw,blockSkip:Q0,br:wh,code:W0,del:uo,delLDelim:uo,delRDelim:uo,emStrongLDelim:ew,emStrongRDelimAst:nw,emStrongRDelimUnd:lw,escape:G0,link:vw,nolink:kw,punctuation:Y0,reflink:ww,reflinkSearch:xw,tag:bw,text:V0,url:uo},Sw={...Aa,emStrongLDelim:sw,emStrongRDelimAst:aw,emStrongRDelimUnd:dw,link:Q(/^!?\[(label)\]\((.*?)\)/).replace("label",Vn).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Vn).getRegex()},ka={...Aa,emStrongRDelimAst:rw,emStrongLDelim:tw,delLDelim:uw,delRDelim:hw,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",lh).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},ch=s=>$w[s];Xn=class{options;rules;lexer;constructor(s){this.options=s||ho}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=this.options.pedantic?e[0]:ph(e[0]),o=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:o}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],o=Tw(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:o}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let o=Kt(t,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(t=o.trim())}return{type:"heading",raw:Kt(e[0],` `),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:Kt(e[0],` `)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let t=Kt(e[0],` `).split(` @@ -106,19 +106,19 @@ ${u}`:u;let h=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo ${m}`,n=n.substring(0,n.length-f.text.length)+b.text;break}else if(p?.type==="list"){let f=p,m=f.raw+` `+t.join(` `),g=this.list(m);r[r.length-1]=g,o=o.substring(0,o.length-p.raw.length)+g.raw,n=n.substring(0,n.length-f.raw.length)+g.raw,t=m.substring(r.at(-1).raw.length).split(` -`);continue}}return{type:"blockquote",raw:o,tokens:r,text:n}}}list(s){let e=this.rules.block.list.exec(s);if(e){let t=e[1].trim(),o=t.length>1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",u="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=Sw(e[2].split(` +`);continue}}return{type:"blockquote",raw:o,tokens:r,text:n}}}list(s){let e=this.rules.block.list.exec(s);if(e){let t=e[1].trim(),o=t.length>1,n={type:"list",raw:"",ordered:o,start:o?+t.slice(0,-1):"",loose:!1,items:[]};t=o?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=o?t:"[*+-]");let r=this.rules.other.listItemRegex(t),i=!1;for(;s;){let l=!1,c="",u="";if(!(e=r.exec(s))||this.rules.block.hr.test(s))break;c=e[0],s=s.substring(c.length);let h=Mw(e[2].split(` `,1)[0],e[1].length),p=s.split(` `,1)[0],f=!h.trim(),m=0;if(this.options.pedantic?(m=2,u=h.trimStart()):f?m=e[1].length+1:(m=h.search(this.rules.other.nonSpaceChar),m=m>4?1:m,u=h.slice(m),m+=e[1].length),f&&this.rules.other.blankLine.test(p)&&(c+=p+` `,s=s.substring(p.length+1),l=!0),!l){let g=this.rules.other.nextBulletRegex(m),b=this.rules.other.hrRegex(m),v=this.rules.other.fencesBeginRegex(m),k=this.rules.other.headingBeginRegex(m),E=this.rules.other.htmlBeginRegex(m),L=this.rules.other.blockquoteBeginRegex(m);for(;s;){let y=s.split(` `,1)[0],C;if(p=y,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),C=p):C=p.replace(this.rules.other.tabCharGlobal," "),v.test(p)||k.test(p)||E.test(p)||L.test(p)||g.test(p)||b.test(p))break;if(C.search(this.rules.other.nonSpaceChar)>=m||!p.trim())u+=` `+C.slice(m);else{if(f||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||v.test(h)||k.test(h)||b.test(h))break;u+=` `+p}f=!p.trim(),c+=y+` -`,s=s.substring(y.length+1),h=C.slice(m)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(u),loose:!1,text:u,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),u=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=u}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let u=this.rules.other.listTaskCheckbox.exec(l.raw);if(u){let h={type:"checkbox",raw:u[0]+" ",checked:u[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=uh(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Yn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:Kt(e[0],` -`),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=dh(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` +`,s=s.substring(y.length+1),h=C.slice(m)}}n.loose||(i?n.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0)),n.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(u),loose:!1,text:u,tokens:[]}),n.raw+=c}let a=n.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;n.raw=n.raw.trimEnd();for(let l of n.items)if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),!n.loose){let c=l.tokens.filter(h=>h.type==="space"),u=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));n.loose=u}for(let l of n.items){let c=l.tokens[0];if(l.task&&(c?.type==="text"||c?.type==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),c.raw=c.raw.replace(this.rules.other.listReplaceTask,""),c.text=c.text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}let u=this.rules.other.listTaskCheckbox.exec(l.raw);if(u){let h={type:"checkbox",raw:u[0]+" ",checked:u[0]!=="[ ]"};l.checked=h.checked,n.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=h.raw+l.tokens[0].raw,l.tokens[0].text=h.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(h)):l.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):l.tokens.unshift(h)}}else l.task&&(l.task=!1)}if(n.loose)for(let l of n.items){l.loose=!0;for(let c of l.tokens)c.type==="text"&&(c.type="paragraph")}return n}}html(s){let e=this.rules.block.html.exec(s);if(e){let t=ph(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=Yn(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:Kt(e[0],` +`),href:o,title:n}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=uh(e[1]),o=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),n=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` `):[],r={type:"table",raw:Kt(e[0],` -`),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:Kt(e[0],` +`),header:[],align:[],rows:[]};if(t.length===o.length){for(let i of o)this.rules.other.tableAlignRight.test(i)?r.align.push("right"):this.rules.other.tableAlignCenter.test(i)?r.align.push("center"):this.rules.other.tableAlignLeft.test(i)?r.align.push("left"):r.align.push(null);for(let i=0;i({text:a,tokens:this.lexer.inline(a),header:!1,align:r.align[l]})));return r}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e){let t=e[1].trim();return{type:"heading",raw:Kt(e[0],` `),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(s){let e=this.rules.block.paragraph.exec(s);if(e){let t=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hh(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=Kt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=xw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),ph(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hh(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Yn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return ph(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],u=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(u)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,f=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=f.slice(1,-1);return{type:"em",raw:f,text:g,tokens:this.lexer.inlineTokens(g)}}let m=f.slice(2,-2);return{type:"strong",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,u=s.slice(0,n+o.index+c+i),h=u.slice(n,-n);return{type:"del",raw:u,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},et=class ka{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||ho,this.options.tokenizer=this.options.tokenizer||new Xn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Wn.normal,inline:Ps.normal};this.options.pedantic?(t.block=Wn.pedantic,t.inline=Ps.pedantic):this.options.gfm&&(t.block=Wn.gfm,this.options.breaks?t.inline=Ps.breaks:t.inline=Ps.gfm),this.tokenizer.rules=t}static get rules(){return{block:Wn,inline:Ps}}static lex(e,t){return new ka(t).lex(e)}static lexInline(e,t){return new ka(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&mh(s,e[1],t,this.rules))return;let o=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let i=Kt(o.slice(0,-1),"\\");if((o.length-i.length)%2===0)return}else{let i=Cw(e[2],"()");if(i===-2)return;if(i>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?n=n.slice(1):n=n.slice(1,-1)),hh(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let o=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&mh(s,t[1],o,this.rules))return;let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[Yn(n)];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return hh(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let o=this.rules.inline.emStrongLDelim.exec(s);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=0,c=o[0][0],u=t===c,h=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*s.length+n);(o=h.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(i=[...r].length,o[3]||o[4]){a+=i;continue}else if(o[5]||o[6]){if(n%3&&!((n+i)%3)){l+=i;continue}if(u)break}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let p=[...o[0]][0].length,f=s.slice(0,n+o.index+p+i);if(Math.min(n,i)%2){let g=f.slice(1,-1);return{type:"em",raw:f,text:g,tokens:this.lexer.inlineTokens(g)}}let m=f.slice(2,-2);return{type:"strong",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return o&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let o=this.rules.inline.delLDelim.exec(s);if(o&&(!o[1]||!t||this.rules.inline.punctuation.exec(t))){let n=[...o[0]].length-1,r,i,a=n,l=this.rules.inline.delRDelim;for(l.lastIndex=0,e=e.slice(-1*s.length+n);(o=l.exec(e))!==null;){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r||(i=[...r].length,i!==n))continue;if(o[3]||o[4]){a+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a);let c=[...o[0]][0].length,u=s.slice(0,n+o.index+c+i),h=u.slice(n,-n);return{type:"del",raw:u,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,o;return e[2]==="@"?(t=e[1],o="mailto:"+t):(t=e[1],o=t),{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,o;if(e[2]==="@")t=e[0],o="mailto:"+t;else{let n;do n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(n!==e[0]);t=e[0],e[1]==="www."?o="http://"+e[0]:o=e[0]}return{type:"link",raw:e[0],text:t,href:o,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},tt=class ya{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||ho,this.options.tokenizer=this.options.tokenizer||new Xn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Le,block:Wn.normal,inline:Ps.normal};this.options.pedantic?(t.block=Wn.pedantic,t.inline=Ps.pedantic):this.options.gfm&&(t.block=Wn.gfm,this.options.breaks?t.inline=Ps.breaks:t.inline=Ps.gfm),this.tokenizer.rules=t}static get rules(){return{block:Wn,inline:Ps}}static lex(e,t){return new ya(t).lex(e)}static lexInline(e,t){return new ya(t).inlineTokens(e)}lex(e){e=e.replace(Le.carriageReturn,` `),this.blockTokens(e,this.tokens);for(let t=0;t(r=a.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let a=t.at(-1);r.raw.length===1&&a!==void 0?a.raw+=` `:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let a=t.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(` `)?"":` @@ -150,8 +150,8 @@ ${this.parser.parse(s)} `}tablerow({text:s}){return` ${s} `}tablecell(s){let e=this.parser.parseInline(s.tokens),t=s.header?"th":"td";return(s.align?`<${t} align="${s.align}">`:`<${t}>`)+e+` -`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${Ke(s,!0)}`}br(s){return"
      "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?Ke(t,!0):this.parser.parseInline(o),i=ch(s);if(i===null)return r;s=Ke(i,n);let a='
      ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=ch(s);if(n===null)return Ke(t);s=n;let r=`${Ke(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Jn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Xn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Is;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Is.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Is.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let u=a.call(n,c);return l.call(n,u)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return et.lex(s,e??this.defaults)}parser(s,e){return tt.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?et.lex:et.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?tt.parse:tt.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?et.lex:et.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?tt.parse:tt.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` -Please report this to https://github.com/markedjs/marked.`,s){let o="

      An error occurred:

      "+Ke(t.message+"",!0)+"
      ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},po=new $w;ie.options=ie.setOptions=function(s){return po.setOptions(s),ie.defaults=po.defaults,mh(ie.defaults),ie};ie.getDefaults=xa;ie.defaults=ho;ie.use=Cw;ie.walkTokens=function(s,e){return po.walkTokens(s,e)};ie.parseInline=po.parseInline;ie.Parser=tt;ie.parser=tt.parse;ie.Renderer=Jn;ie.TextRenderer=Aa;ie.Lexer=et;ie.lexer=et.lex;ie.Tokenizer=Xn;ie.Hooks=Is;ie.parse=ie;jS=ie.options,US=ie.setOptions,GS=ie.walkTokens,WS=ie.parseInline,VS=tt.parse,YS=et.lex});var Eh=we((o3,Mw)=>{Mw.exports=`
      ×
      [ WHAT'S NEW ]

      Kute

      View on GitHub
      Done
      `});var Ch={};function $h(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function Ra(s){let e=La.get(s);return e||(e=fetch(`${Tw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?mo=Number(n[1]):o.length>0&&(mo=Math.max(mo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(La.delete(s),null)),La.set(s,e)),e}async function Aw(s){let e=await Ra(1);if(!e||e.tag===s||mo===null)return 1;let t=2,o=mo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await Ra(n);if(!r)return 1;let i=$h(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Tw,La,mo,Pa=w(()=>{"use strict";Sh();F();Tw="https://api.github.com/repos/NullDev/Kute",La=new Map,mo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue(Eh(),1)),Promise.resolve().then(()=>ue(An(),1))]),a=document.createElement("div");a.style=` +`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${Ke(s,!0)}`}br(s){return"
      "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,text:t,tokens:o,autolink:n}){let r=n?Ke(t,!0):this.parser.parseInline(o),i=dh(s);if(i===null)return r;s=Ke(i,n);let a='
      ",a}image({href:s,title:e,text:t,tokens:o}){o&&(t=this.parser.parseInline(o,this.parser.textRenderer));let n=dh(s);if(n===null)return Ke(t);s=n;let r=`${Ke(t)}{let i=n[r].flat(1/0);t=t.concat(this.walkTokens(i,e))}):n.tokens&&(t=t.concat(this.walkTokens(n.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let o={...t};if(o.async=this.defaults.async||o.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if("renderer"in n){let r=e.renderers[n.name];r?e.renderers[n.name]=function(...i){let a=n.renderer.apply(this,i);return a===!1&&(a=r.apply(this,i)),a}:e.renderers[n.name]=n.renderer}if("tokenizer"in n){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=e[n.level];r?r.unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}"childTokens"in n&&n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),o.extensions=e),t.renderer){let n=this.defaults.renderer||new Jn(this.defaults);for(let r in t.renderer){if(!(r in n))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,a=t.renderer[i],l=n[i];n[i]=(...c)=>{let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u||""}}o.renderer=n}if(t.tokenizer){let n=this.defaults.tokenizer||new Xn(this.defaults);for(let r in t.tokenizer){if(!(r in n))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,a=t.tokenizer[i],l=n[i];n[i]=(...c)=>{let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u}}o.tokenizer=n}if(t.hooks){let n=this.defaults.hooks||new Is;for(let r in t.hooks){if(!(r in n))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,a=t.hooks[i],l=n[i];Is.passThroughHooks.has(r)?n[i]=c=>{if(this.defaults.async&&Is.passThroughHooksRespectAsync.has(r))return(async()=>{let h=await a.call(n,c);return l.call(n,h)})();let u=a.call(n,c);return l.call(n,u)}:n[i]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(n,c);return h===!1&&(h=await l.apply(n,c)),h})();let u=a.apply(n,c);return u===!1&&(u=l.apply(n,c)),u}}o.hooks=n}if(t.walkTokens){let n=this.defaults.walkTokens,r=t.walkTokens;o.walkTokens=function(i){let a=[];return a.push(r.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}this.defaults={...this.defaults,...o}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return tt.lex(s,e??this.defaults)}parser(s,e){return ot.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let o={...t},n={...this.defaults,...o},r=this.onError(!!n.silent,!!n.async);if(this.defaults.async===!0&&o.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=s),n.async)return(async()=>{let i=n.hooks?await n.hooks.preprocess(e):e,a=await(n.hooks?await n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(i,n),l=n.hooks?await n.hooks.processAllTokens(a):a;n.walkTokens&&await Promise.all(this.walkTokens(l,n.walkTokens));let c=await(n.hooks?await n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(l,n);return n.hooks?await n.hooks.postprocess(c):c})().catch(r);try{n.hooks&&(e=n.hooks.preprocess(e));let i=(n.hooks?n.hooks.provideLexer(s):s?tt.lex:tt.lexInline)(e,n);n.hooks&&(i=n.hooks.processAllTokens(i)),n.walkTokens&&this.walkTokens(i,n.walkTokens);let a=(n.hooks?n.hooks.provideParser(s):s?ot.parse:ot.parseInline)(i,n);return n.hooks&&(a=n.hooks.postprocess(a)),a}catch(i){return r(i)}}}onError(s,e){return t=>{if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,s){let o="

      An error occurred:

      "+Ke(t.message+"",!0)+"
      ";return e?Promise.resolve(o):o}if(e)return Promise.reject(t);throw t}}},po=new Aw;ie.options=ie.setOptions=function(s){return po.setOptions(s),ie.defaults=po.defaults,fh(ie.defaults),ie};ie.getDefaults=Sa;ie.defaults=ho;ie.use=Lw;ie.walkTokens=function(s,e){return po.walkTokens(s,e)};ie.parseInline=po.parseInline;ie.Parser=ot;ie.parser=ot.parse;ie.Renderer=Jn;ie.TextRenderer=La;ie.Lexer=tt;ie.lexer=tt.lex;ie.Tokenizer=Xn;ie.Hooks=Is;ie.parse=ie;YS=ie.options,XS=ie.setOptions,JS=ie.walkTokens,ZS=ie.parseInline,QS=ot.parse,e3=tt.lex});var $h=we((a3,Rw)=>{Rw.exports=`
      ×
      [ WHAT'S NEW ]

      Kute

      View on GitHub
      Done
      `});var Mh={};function Ch(s,e){return s.localeCompare(e,void 0,{numeric:!0,sensitivity:"case",caseFirst:"upper"})}function Pa(s){let e=Ra.get(s);return e||(e=fetch(`${Pw}/releases?per_page=1&page=${s}`).then(async t=>{if(!t.ok)throw new Error(`github ${t.status}`);let o=await t.json(),n=(t.headers.get("link")??"").match(/[?&]page=(\d+)>; rel="last"/);n?mo=Number(n[1]):o.length>0&&(mo=Math.max(mo??0,s));let[r]=o;return r?{tag:String(r.tag_name),body:String(r.body??""),date:String(r.published_at??"").slice(0,10)}:null}).catch(()=>(Ra.delete(s),null)),Ra.set(s,e)),e}async function Iw(s){let e=await Pa(1);if(!e||e.tag===s||mo===null)return 1;let t=2,o=mo;for(;t<=o;){let n=Math.floor((t+o)/2),r=await Pa(n);if(!r)return 1;let i=Ch(r.tag,s);if(i===0)return n;i>0?t=n+1:o=n-1}return 1}var Pw,Ra,mo,Ia=w(()=>{"use strict";Eh();F();Pw="https://api.github.com/repos/NullDev/Kute",Ra=new Map,mo=null;(async()=>{async function s(n){let[r,i]=await Promise.all([Promise.resolve().then(()=>ue($h(),1)),Promise.resolve().then(()=>ue(An(),1))]),a=document.createElement("div");a.style=` position: fixed; top: 0; left: 0; @@ -162,17 +162,17 @@ Please report this to https://github.com/markedjs/marked.`,s){let o="

      An error display: flex; justify-content: center; align-items: center; - `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),u=document.createElement("div");for(u.innerHTML=r.default;u.firstChild;)c.append(u.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let f=h("changelogContent");f&&(f.textContent="Loading release notes...");let m=h("changelogVersion");m&&(m.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=mo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),mo??1);let H=++k;E();let G=await Ra(v);if(H!==k||!f)return;if(!G){f.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;m&&(m.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){f.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of f.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},y=h("changelogOlder");y&&(y.onclick=()=>L(v+1));let C=h("changelogNewer");C&&(C.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Aw(n);g.signal.aborted||await L(I)}let e=d?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&$h(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),d?.settings.data?.showChangelog&&t&&e&&o&&await s(e),d.showChangelogPopup=s})()});var Na={};A(Na,{default:()=>Lw});var Ia,Lw,_a=w(()=>{"use strict";Ia=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},Lw=new Ia});var Th,Mh=w(()=>{Th='

      Chat Logs

      Copy
      Clear
      Close
      '});var za={};A(za,{default:()=>Ow});function _w(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Bw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function Ah(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function zw(){try{let s=JSON.parse(window.sessionStorage.getItem(Lh)??"[]");return Array.isArray(s)?s.slice(-Zn):[]}catch{return[]}}function Hw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Zn,Lh,Pw,Iw,Nw,Ba,Ow,Ha=w(()=>{"use strict";Mh();F();No();Zn=2e3,Lh="kute_chat_logs",Pw="\u200E",Iw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Nw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};Ba=class{constructor(){this.entries=zw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:Hw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Lh,JSON.stringify(this.entries))}catch{}},d.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},d.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=_w(e),o=(t==="kill"?Bw(e):e.textContent??"").replaceAll(Pw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Zn&&this.entries.splice(0,this.entries.length-Zn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Zn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Nw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=Ah(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=Iw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Th;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=gt().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let u=c;l==="keydown"&&!u.repeat&&(u.key==="Escape"||cs(u,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${Ah(c.t)} ${c.text}`).join(` -`);navigator.clipboard.writeText(l).then(()=>d.showNotification("Chat log copied",!1,2),()=>d.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Ow=new Ba});var Fa={};A(Fa,{default:()=>qw});function Dw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&Fw.has(t)}).join(";")}var Fw,Oa,Rh,qw,Da=w(()=>{"use strict";F();Un();Nt();Fw=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Oa=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),d.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}ht.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),d.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Dw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?ht.refresh():ht.add(this.decorator),this.watching=!0)}}restyle(e){let t=Rs(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Rh=new Oa;d.clanColors=Rh;qw=Rh});var Ph=we((p3,Kw)=>{Kw.exports='

      Custom Sky

      Replaces the sky of every map. It applies from the next match
      Gradient
      Image
      Open folder
      Refresh
      Put PNG, JPG or WEBP images into Documents\\kute\\skies
      Done
      '});var Ka={};A(Ka,{default:()=>Ww});var jw,Ih,Uw,Gw,qa,Ww,ja=w(()=>{"use strict";F();jw={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Ih="preset:",Uw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Gw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},qa=class{constructor(){d.customSky={showOptions:()=>this.showOptions()}}get config(){return{...jw,...d.settings.data.customSkyConfig}}saveConfig(e){d.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Ph(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),u=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let y=document.createElement("optgroup");return y.label=E,y.append(...L.map(([C,I])=>new Option(I,C))),y},k=[...b.map(E=>Ih+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Ih+E,Gw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Uw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,u()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,u()},l.oninput=()=>{t.horizon=l.value,u()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",u()},i("skModeImage").onclick=()=>{t.mode="image",u()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=m,o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),u(),document.body.append(o),await h()}},Ww=new qa});var _h,Nh=w(()=>{_h='

      Diagnostics Report

      These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
      Collecting...
      Close
      Save dump
      '});var zh={};A(zh,{createCodeEditor:()=>Bh,createEditorView:()=>fo,highlight:()=>er,languageFor:()=>Ua});function er(s,e="js"){if(e==="text")return Qn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?Zw:Jw)){let i=r.index??0,[a]=r,l="";if(t){let[,c,u,h,p,f]=r;if(c)l="c";else if(u)l="s";else if(h)l="k";else if(p)l="n";else if(f){let m=i+f.length;s[m]==="("?l="f":(f.startsWith("--")||Qw(s,m))&&(l="l")}}else{let[,c,u,h,p]=r;c?l="c":u?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(Yw.has(p)?l="k":Xw.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=Qn(s.slice(n,i))+`${Qn(a)}`,n=i+a.length)}return o+Qn(s.slice(n))}function Bh(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
      + `,document.body.append(a);let l=document.createElement("div");l.id="changelogPopupHost",a.append(l);let c=l.attachShadow({mode:"open"}),u=document.createElement("div");for(u.innerHTML=r.default;u.firstChild;)c.append(u.firstChild);let h=_=>c.getElementById(_),p=h("changelogLogo");p&&(p.src=i.default);let f=h("changelogContent");f&&(f.textContent="Loading release notes...");let m=h("changelogVersion");m&&(m.textContent=n);let g=new AbortController,b=()=>{g.abort(),a.remove()};for(let _ of["changelogClose","changelogDone"]){let H=h(_);H&&(H.onclick=b)}a.addEventListener("mousedown",_=>{_.target===a&&b()});let v=1,k=0,E=()=>{let _=mo??1,H=h("changelogPosition");H&&(H.textContent=`${v} / ${_}`),h("changelogNewer")?.classList.toggle("changelogDisabled",v<=1),h("changelogOlder")?.classList.toggle("changelogDisabled",v>=_);let G=h("changelogNav");G&&(G.style.display=_>1?"":"none")},L=async _=>{v=Math.min(Math.max(_,1),mo??1);let H=++k;E();let G=await Pa(v);if(H!==k||!f)return;if(!G){f.innerHTML="Could not load the release notes. View them on GitHub instead.";let be=h("changelogGithub");be&&(be.onclick=()=>window.chrome.webview.postMessage(`open-url, https://github.com/NullDev/Kute/releases/tag/${n}`));return}let J=`https://github.com/NullDev/Kute/releases/tag/${G.tag}`;m&&(m.textContent=G.tag);let B=h("changelogEyebrow");B&&(B.textContent=G.tag===n?"[ WHAT'S NEW ]":`[ RELEASED ${G.date} ]`);let re=h("changelogGithub");re&&(re.onclick=()=>window.chrome.webview.postMessage(`open-url, ${J}`));let je=await ie.parse(G.body||"No release notes found.",{breaks:!0,async:!0});if(H===k){f.innerHTML=je,h("changelogContentWrapper")?.scrollTo(0,0);for(let be of f.querySelectorAll("a"))be.getAttribute("href")?.startsWith("#")&&be.setAttribute("href",J+be.getAttribute("href")),be.setAttribute("target","_blank"),be.setAttribute("rel","noopener")}},y=h("changelogOlder");y&&(y.onclick=()=>L(v+1));let C=h("changelogNewer");C&&(C.onclick=()=>L(v-1)),document.addEventListener("keydown",_=>{if(_.key==="Escape")b();else if(_.key==="ArrowLeft")L(v-1);else if(_.key==="ArrowRight")L(v+1);else return;_.stopPropagation()},{signal:g.signal,capture:!0});let I=await Iw(n);g.signal.aborted||await L(I)}let e=d?.version,t=window.localStorage.getItem("kute_lastSeenVersion"),o=t!==null&&Ch(e,t)>0;window.localStorage.setItem("kute_lastSeenVersion",e),d?.settings.data?.showChangelog&&t&&e&&o&&await s(e),d.showChangelogPopup=s})()});var _a={};A(_a,{default:()=>Nw});var Na,Nw,Ba=w(()=>{"use strict";Na=class{tracked=new WeakSet;draft=null;observer=null;pending=null;sentAt=0;constructor(){document.addEventListener("focusin",e=>{let t=e.target;t instanceof HTMLTextAreaElement&&t.classList.contains("conversation-input")&&this.track(t)})}friendOf(e){return e.closest(".conversation-root")?.querySelector(".conversation-header-name")?.textContent??""}track(e){this.tracked.has(e)||(this.tracked.add(e),e.addEventListener("input",()=>this.save(e)),e.addEventListener("keydown",t=>{t.key==="Enter"&&!t.shiftKey&&!t.isComposing&&(this.sentAt=performance.now())}),e.closest(".conversation-compose")?.querySelector(".conversation-send-button")?.addEventListener("click",()=>{this.sentAt=performance.now()}),e.value&&this.save(e))}save(e){if(!e.value){this.stop();return}if(this.draft={input:e,friend:this.friendOf(e),text:e.value,start:e.selectionStart,end:e.selectionEnd},this.observer)return;let t=e.closest(".conversation-root");t&&(this.observer=new MutationObserver(()=>this.schedule()),this.observer.observe(t,{childList:!0,subtree:!0,characterData:!0}))}schedule(){this.pending===null&&(this.pending=setTimeout(()=>this.check(),0))}check(){this.pending=null;let{draft:e}=this;if(!e)return;let{input:t}=e;if(!t.isConnected||this.friendOf(t)!==e.friend){this.stop();return}if(t.value){this.save(t);return}if(performance.now()-this.sentAt<250){this.stop();return}t.value=e.text,document.activeElement===t&&t.setSelectionRange(e.start,e.end),t.dispatchEvent(new Event("input",{bubbles:!0}))}stop(){this.draft=null,this.observer?.disconnect(),this.observer=null}},Nw=new Na});var Ah,Th=w(()=>{Ah='

      Chat Logs

      Copy
      Clear
      Close
      '});var Ha={};A(Ha,{default:()=>Kw});function Ow(s){if(!s.hasAttribute("data-tab"))return"kill";let e=s.querySelector(".chatItem"),t=e?.querySelector(".chatMsg");return!e||!(t instanceof HTMLElement)||e.querySelector(".tradeMsg")?"event":e.firstChild!==t?"player":t.style.color?"server":"event"}function Fw(s){let e="",t=!1,o=[];for(let n of s.querySelector(".chatMsg")?.childNodes??[]){if(!(n instanceof HTMLImageElement)){e+=n.textContent??"";continue}let r=n.getAttribute("src")??"";r.includes("headshot")?o.push("headshot"):r.includes("wallbang")?o.push("wallbang"):t||(t=!0,e+=" \u25B8 ")}return o.length>0?`${e.trim()} (${o.join(", ")})`:e}function Lh(s){let e=new Date(s);return[e.getHours(),e.getMinutes(),e.getSeconds()].map(t=>String(t).padStart(2,"0")).join(":")}function Dw(){try{let s=JSON.parse(window.sessionStorage.getItem(Rh)??"[]");return Array.isArray(s)?s.slice(-Zn):[]}catch{return[]}}function qw(){try{let{mode:s,map:e}=window.getGameActivity();if(s&&e)return`${s} on ${e}`}catch{}return"New lobby"}var Zn,Rh,Bw,zw,Hw,za,Kw,Oa=w(()=>{"use strict";Th();F();No();Zn=2e3,Rh="kute_chat_logs",Bw="\u200E",zw=[["player","Players"],["kill","Kills"],["event","Events"],["server","Server"]],Hw={player:"",kill:"clKill",event:"clEvent",server:"clServer",lobby:"clLobby"};za=class{constructor(){this.entries=Dw(),this.entries.length>0&&this.entries[this.entries.length-1].cat!=="lobby"&&this.entries.push({t:Date.now(),cat:"lobby",text:qw()}),this.shown=new Set,this.view=null,this.stick=!0,this.observer=new MutationObserver(e=>{for(let t of e)for(let o of t.addedNodes)this.add(o)}),this.save=()=>{try{window.sessionStorage.setItem(Rh,JSON.stringify(this.entries))}catch{}},d.chatLogs={open:()=>this.open(),toggle:()=>this.toggle()},d.settings.toggleChatLogs=e=>this.setEnabled(e),this.setEnabled(!0)}setEnabled(e){if(this.observer.disconnect(),window.removeEventListener("pagehide",this.save),!e){this.close();return}let t=document.getElementById("chatList");if(t){for(let o of t.children)this.add(o);this.observer.observe(t,{childList:!0}),window.addEventListener("pagehide",this.save)}}add(e){if(!(e instanceof HTMLElement))return;let t=Ow(e),o=(t==="kill"?Fw(e):e.textContent??"").replaceAll(Bw,"").trim();if(!o)return;let n={t:Date.now(),cat:t,text:o};if(this.entries.push(n),this.entries.length>Zn&&this.entries.splice(0,this.entries.length-Zn),!this.view||!this.visible(n))return;let{list:r}=this.view;r.querySelector(".clEmpty")?.remove(),r.append(this.row(n)),r.childElementCount>Zn&&r.firstElementChild?.remove(),this.stick&&(r.scrollTop=1e9)}visible(e){let t=this.view?.search.value.trim().toLowerCase()??"";return e.cat==="lobby"?this.shown.size===0&&!t:this.shown.size>0&&!this.shown.has(e.cat)?!1:!t||e.text.toLowerCase().includes(t)}row(e){let t=document.createElement("div");t.className=`clRow ${Hw[e.cat]??""}`;let o=document.createElement("span");return o.className="clTime",o.textContent=Lh(e.t),t.append(o,e.text),t}render(){if(!this.view)return;let e=this.entries.filter(t=>this.visible(t)).map(t=>this.row(t));if(e.length===0){let t=document.createElement("div");t.className="clEmpty",t.textContent=this.entries.length===0?"Nothing in the chat yet":"No line matches",e.push(t)}this.view.list.replaceChildren(...e),this.view.list.scrollTop=1e9,this.stick=!0,this.renderFilters()}renderFilters(){if(!this.view)return;let e=(n,r,i)=>{let a=document.createElement("div");return a.className=`clFilter${r?" clOn":""}`,a.textContent=n,a.onclick=i,a},t=e("All",this.shown.size===0,()=>{this.shown.clear(),this.render()}),o=zw.map(([n,r])=>e(r,this.shown.has(n),()=>{this.shown.has(n)?this.shown.delete(n):this.shown.add(n),this.render()}));this.view.shadow.querySelector("#clFilters").replaceChildren(t,...o)}open(){if(this.view)return;document.pointerLockElement&&document.exitPointerLock();let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=Ah;let n=l=>o.querySelector(`#${l}`),r=n("clList"),i=n("clSearch");this.view={overlay:e,shadow:o,list:r,search:i};let a=gt().chatLogs;n("clHint").textContent=`${a?`${a.name} opens and closes this. `:""}Select lines and copy with Ctrl+C`,e.addEventListener("click",l=>{l.target===e&&this.close()});for(let l of["keydown","keyup","keypress"])t.addEventListener(l,c=>{let u=c;l==="keydown"&&!u.repeat&&(u.key==="Escape"||cs(u,"chatLogs"))&&this.close(),c.stopPropagation()});r.addEventListener("scroll",()=>{this.stick=r.scrollTop+r.clientHeight>=r.scrollHeight-30},{passive:!0}),i.addEventListener("input",()=>this.render()),n("clCopy").onclick=()=>{let l=this.entries.filter(c=>this.visible(c)).map(c=>`${Lh(c.t)} ${c.text}`).join(` +`);navigator.clipboard.writeText(l).then(()=>d.showNotification("Chat log copied",!1,2),()=>d.showNotification("Could not copy the chat log",!1,3))},n("clClear").onclick=()=>{this.entries=[],this.save(),this.render()},n("clClose").onclick=()=>this.close(),document.body.append(e),this.render(),i.focus()}close(){this.view?.overlay.remove(),this.view=null}toggle(){this.view?this.close():this.open()}},Kw=new za});var Da={};A(Da,{default:()=>Gw});function Uw(s){return s.split(";").map(e=>e.trim()).filter(e=>{let t=e.split(":")[0]?.trim().toLowerCase();return!!t&&e.includes(":")&&jw.has(t)}).join(";")}var jw,Fa,Ph,Gw,qa=w(()=>{"use strict";F();Un();Nt();jw=new Set(["background","background-image","background-color","background-clip","-webkit-background-clip","background-size","background-position","color","-webkit-text-fill-color","-webkit-text-stroke","text-shadow","text-decoration","filter","opacity","animation"]);Fa=class{constructor(){this.styles={},this.fetched={},this.watching=!1,this.decorator=e=>this.restyle(e),d.settings.toggleClanColors=e=>this.toggle(e),this.load()}toggle(e){if(e){Object.keys(this.fetched).length>0?this.apply(this.fetched):this.load();return}ht.remove(this.decorator),this.watching=!1,this.styles={};for(let t of document.querySelectorAll("[data-kute-clan]"))t.setAttribute("style",t.getAttribute("data-kute-style")??""),t.removeAttribute("data-kute-clan"),t.removeAttribute("data-kute-style")}async load(){let e=await he.request("/meta");typeof e?.clanTagColors=="object"&&e.clanTagColors!==null&&(this.fetched=e.clanTagColors),d.settings.data.clanColors!==!1&&this.apply(this.fetched)}apply(e){if(!(typeof e!="object"||e===null)){this.styles={};for(let[t,o]of Object.entries(e)){if(typeof o!="string"||t.length===0||t.length>16)continue;let n=Uw(o);n&&(this.styles[t]=n)}Object.keys(this.styles).length!==0&&(this.watching?ht.refresh():ht.add(this.decorator),this.watching=!0)}}restyle(e){let t=Rs(e.element);if(!t)return;let o=this.styles[t.tag];!o||t.span.getAttribute("data-kute-clan")===t.tag||(t.span.hasAttribute("data-kute-style")||t.span.setAttribute("data-kute-style",t.span.getAttribute("style")??""),t.span.setAttribute("style",o),t.span.setAttribute("data-kute-clan",t.tag))}},Ph=new Fa;d.clanColors=Ph;Gw=Ph});var Ih=we((b3,Ww)=>{Ww.exports='

      Custom Sky

      Replaces the sky of every map. It applies from the next match
      Gradient
      Image
      Open folder
      Refresh
      Put PNG, JPG or WEBP images into Documents\\kute\\skies
      Done
      '});var ja={};A(ja,{default:()=>Jw});var Vw,Nh,Yw,Xw,Ka,Jw,Ua=w(()=>{"use strict";F();Vw={mode:"gradient",zenith:"#1E5AA8",horizon:"#9FD0F0",image:""},Nh="preset:",Yw=[["Vaporwave","#ff00aa","#00ffcc"],["Kute","#0b2e3a","#35e0e8"],["Sunset","#2b1055","#ff8a4c"],["Midnight","#03040f","#243b73"],["Toxic","#0a2a12","#a6ff3b"],["Blood Moon","#120006","#b3122e"],["Cotton Candy","#8fb8ff","#ffc2e2"]],Xw={starfield:"Starfield",aurora:"Aurora",nebula:"Nebula",synthwave:"Synthwave",sunset:"Sunset",candy:"Cotton Clouds"},Ka=class{constructor(){d.customSky={showOptions:()=>this.showOptions()}}get config(){return{...Vw,...d.settings.data.customSkyConfig}}saveConfig(e){d.settings.data.customSkyConfig=e,window.chrome.webview.postMessage(`set-config-json customSkyConfig ${JSON.stringify(e)}`)}listImages(){return new Promise(e=>{let t=0,o=n=>{Array.isArray(n.data?.skies)&&(window.chrome.webview.removeEventListener("message",o),clearTimeout(t),e({files:n.data.skies,presets:Array.isArray(n.data.skyPresets)?n.data.skyPresets:[]}))};t=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",o),e({files:[],presets:[]})},3e3),window.chrome.webview.addEventListener("message",o),window.chrome.webview.postMessage("sky-list")})}async showOptions(){let e=await Promise.resolve().then(()=>ue(Ih(),1)),{config:t}=this,o=document.createElement("div");o.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let n=document.createElement("div");o.append(n);let r=n.attachShadow({mode:"open"});r.innerHTML=e.default;let i=g=>r.querySelector(`#${g}`),a=i("skZenith"),l=i("skHorizon"),c=i("skImage"),u=()=>{i("skModeGradient").classList.toggle("active",t.mode==="gradient"),i("skModeImage").classList.toggle("active",t.mode==="image"),i("skGradientPane").hidden=t.mode!=="gradient",i("skImagePane").hidden=t.mode!=="image",i("skPreview").style.background=`linear-gradient(${t.zenith}, ${t.horizon})`},h=async()=>{let{files:g,presets:b}=await this.listImages(),v=(E,L)=>{let y=document.createElement("optgroup");return y.label=E,y.append(...L.map(([C,I])=>new Option(I,C))),y},k=[...b.map(E=>Nh+E),...g];c.replaceChildren(...b.length?[v("Kute",b.map(E=>[Nh+E,Xw[E]??E]))]:[],...g.length?[v("Your images",g.map(E=>[E,E]))]:[]),k.length>0&&!k.includes(t.image)&&(t.image=k[0]),c.value=t.image,c.disabled=k.length===0,i("skImageHint").textContent=g.length===0?"Add your own: put PNG, JPG or WEBP images into Documents\\kute\\skies, then press Refresh":"Put PNG, JPG or WEBP images into Documents\\kute\\skies"},p=i("skSwatches");for(let[g,b,v]of Yw){let k=document.createElement("div");k.className="skSwatch",k.title=g,k.style.background=`linear-gradient(${b}, ${v})`,k.onclick=()=>{t.zenith=b,t.horizon=v,a.value=b,l.value=v,u()},p.append(k)}a.value=t.zenith.toLowerCase(),l.value=t.horizon.toLowerCase(),a.oninput=()=>{t.zenith=a.value,u()},l.oninput=()=>{t.horizon=l.value,u()},c.onchange=()=>{t.image=c.value},i("skModeGradient").onclick=()=>{t.mode="gradient",u()},i("skModeImage").onclick=()=>{t.mode="image",u()},i("skOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, skies"),i("skRefresh").onclick=()=>h();let f=new AbortController,m=()=>{f.abort(),o.remove(),this.saveConfig(t)};i("skDone").onclick=m,o.addEventListener("mousedown",g=>{g.target===o&&m()}),document.addEventListener("keydown",g=>{g.key==="Escape"&&(g.stopPropagation(),m())},{signal:f.signal,capture:!0}),u(),document.body.append(o),await h()}},Jw=new Ka});var Bh,_h=w(()=>{Bh='

      Diagnostics Report

      These are all the files that will be included. You can choose what to exclude, but keeping all of them is recommended.
      Collecting...
      Close
      Save dump
      '});var Hh={};A(Hh,{createCodeEditor:()=>zh,createEditorView:()=>fo,highlight:()=>er,languageFor:()=>Ga});function er(s,e="js"){if(e==="text")return Qn(s);let t=e==="css",o="",n=0;for(let r of s.matchAll(t?ok:tk)){let i=r.index??0,[a]=r,l="";if(t){let[,c,u,h,p,f]=r;if(c)l="c";else if(u)l="s";else if(h)l="k";else if(p)l="n";else if(f){let m=i+f.length;s[m]==="("?l="f":(f.startsWith("--")||sk(s,m))&&(l="l")}}else{let[,c,u,h,p]=r;c?l="c":u?l=e==="json"&&/^\s*:/.test(s.slice(i+a.length,i+a.length+20))?"p":"s":h?l="n":p&&(Qw.has(p)?l="k":ek.has(p)?l="l":/^\s*\(/.test(s.slice(i+p.length,i+p.length+40))&&(l="f"))}l&&(o+=Qn(s.slice(n,i))+`${Qn(a)}`,n=i+a.length)}return o+Qn(s.slice(n))}function zh(s,e,{onSave:t,onDirtyChange:o,onChange:n,language:r="js"}){s.innerHTML=`
      `;let i=s.querySelector(".editorGutter"),a=s.querySelector("pre"),l=s.querySelector("code"),c=s.querySelector("textarea");c.value=e;let u=e,h=!1,p=0,f=0,m=()=>{a.scrollTop=c.scrollTop,a.scrollLeft=c.scrollLeft,i.scrollTop=c.scrollTop},g=()=>{f=0;let{value:k}=c;l.innerHTML=`${er(k,r)} `;let E=k.split(` `).length;E!==p&&(p=E,i.textContent=Array.from({length:E},(y,C)=>C+1).join(` `)),m();let L=k!==u;L!==h&&(h=L,o(h))},b=k=>{document.execCommand("insertText",!1,k)},v=()=>{g(),n?.(c.value)};return c.addEventListener("input",()=>{c.value.length<15e4?v():f||(f=setTimeout(v,150))}),c.addEventListener("scroll",m),c.addEventListener("keydown",k=>{if((k.ctrlKey||k.metaKey)&&k.key.toLowerCase()==="s"){k.preventDefault(),t();return}if(k.key==="Tab"&&!k.ctrlKey&&!k.altKey){k.preventDefault();let{selectionStart:E,selectionEnd:L,value:y}=c,C=y.lastIndexOf(` `,E-1)+1;if(k.shiftKey){let I=/^ {1,4}/.exec(y.slice(C))?.[0].length??0;if(!I)return;c.setSelectionRange(C,C+I),document.execCommand("delete"),c.setSelectionRange(Math.max(C,E-I),Math.max(C,L-I));return}b(" ");return}if(k.key==="Enter"&&!k.ctrlKey&&!k.altKey&&!k.shiftKey){k.preventDefault();let{selectionStart:E,value:L}=c,y=L.lastIndexOf(` `,E-1)+1,C=L.slice(y,E),I=/^\s*/.exec(C)?.[0]??"",_=r!=="text"&&/[{[(]\s*$/.test(C)?" ":"";b(` -${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){u=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function fo(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=Et("div","editorView"),c=Et("div","editorBar"),u=Et("div","editorFile",e),h=Et("span","dirty",n?" (new, not saved yet)":"");u.append(h);let p=Et("div","btn primary","Save"),f=Et("div","btn","Save & close"),m=Et("div","btn","Close");p.onclick=()=>r(!1),f.onclick=()=>r(!0),m.onclick=i,c.append(u,p,f,m);let g=Et("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,Et("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=Bh(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var Yw,Xw,Jw,Qn,Zw,Ua,Qw,Et,Do=w(()=>{"use strict";Yw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),Xw=new Set(["true","false","null","undefined","this","NaN","Infinity"]),Jw=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Qn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),Zw=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,Ua=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},Qw=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));Et=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Va={};A(Va,{default:()=>ik});function Ga(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function sk(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function nk(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function rk(){let s={};for(let n=0;n{"use strict";Nh();F();Do();ek="diagnostics",tk="kro_setngss_",ok=256*1024;Wa=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},d.diagnostics={open:()=>this.open()}}open(){if(!d.hostFeatures?.includes(ek)){d.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=_h,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(rk())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){d.showNotification(`Could not save the report: ${o}`,!1,5);return}d.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Ga(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Ga(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=ok?o.innerHTML=er(t.text??"","json"):o.textContent=t.truncated?`${t.text} +${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){u=k,g()},focus(){c.focus(),c.setSelectionRange(0,0)}}}function fo(s,{title:e,content:t,language:o,isNew:n=!1,onSave:r,onClose:i,onChange:a}){s.textContent="";let l=Et("div","editorView"),c=Et("div","editorBar"),u=Et("div","editorFile",e),h=Et("span","dirty",n?" (new, not saved yet)":"");u.append(h);let p=Et("div","btn primary","Save"),f=Et("div","btn","Save & close"),m=Et("div","btn","Close");p.onclick=()=>r(!1),f.onclick=()=>r(!0),m.onclick=i,c.append(u,p,f,m);let g=Et("div","");g.style.cssText="display:flex;flex:1 1 auto;min-height:0",l.append(c,g,Et("div","editorKeys","Ctrl+S save \xB7 Ctrl+Z / Ctrl+Y undo, redo \xB7 Tab / Shift+Tab indent \xB7 Esc close")),s.append(l);let b=zh(g,t,{language:o,onChange:a,onSave:()=>r(!1),onDirtyChange:v=>{h.textContent=v?" \u25CF unsaved":""}});return b.focus(),{editor:b,bar:c,saveButton:p}}var Qw,ek,tk,Qn,ok,Ga,sk,Et,Do=w(()=>{"use strict";Qw=new Set("async await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new of return static super switch throw try typeof var void while with yield get set".split(" ")),ek=new Set(["true","false","null","undefined","this","NaN","Infinity"]),tk=/(\/\/[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?)|(\b\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d+)?n?\b|\b0x[\da-fA-F_]+n?\b)|([A-Za-z_$][\w$]*)/g,Qn=s=>s.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),ok=/(\/\*[\s\S]*?(?:\*\/|$))|("(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)|(@[\w-]+|!\s*important\b)|(#[\da-fA-F]{3,8}\b|-?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:%|[a-zA-Z]+)?)|(-?-?[a-zA-Z_][\w-]*)/g,Ga=s=>{let e=s.slice(s.lastIndexOf(".")+1).toLowerCase();return e==="css"?"css":e==="json"?"json":["js","mjs"].includes(e)?"js":"text"},sk=(s,e)=>/^\s*:[^{};]*(?:[;}]|$)/.test(s.slice(e,e+400));Et=(s,e,t="")=>{let o=document.createElement(s);return o.className=e,o.textContent=t,o}});var Ya={};A(Ya,{default:()=>dk});function Wa(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function ak(){let s=new Date;return`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`}function lk(){let s=document.createElement("canvas").getContext("webgl2");if(!s)return null;let e=s.getExtension("WEBGL_debug_renderer_info"),t=e?{vendor:String(s.getParameter(e.UNMASKED_VENDOR_WEBGL)),renderer:String(s.getParameter(e.UNMASKED_RENDERER_WEBGL))}:null;return s.getExtension("WEBGL_lose_context")?.loseContext(),t}function ck(){let s={};for(let n=0;n{"use strict";_h();F();Do();nk="diagnostics",rk="kro_setngss_",ik=256*1024;Va=class{constructor(){this.overlay=null,this.shadow=null,this.entries=[],this.excluded=new Set,this.compressed=0,this.onMessage=e=>this.receive(e.data),this.onKey=e=>{e.key==="Escape"&&this.close()},d.diagnostics={open:()=>this.open()}}open(){if(!d.hostFeatures?.includes(nk)){d.showNotification("The Diagnostics Report needs a newer Kute",!1,4);return}if(this.overlay)return;this.entries=[],this.excluded.clear(),this.overlay=document.createElement("div"),this.overlay.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let e=document.createElement("div");this.overlay.append(e),this.shadow=e.attachShadow({mode:"open"}),this.shadow.innerHTML=Bh,this.element("dgClose").onclick=()=>this.close(),this.element("dgSave").onclick=()=>this.save(),this.overlay.addEventListener("mousedown",t=>{t.target===this.overlay&&this.close()}),document.addEventListener("keydown",this.onKey),window.chrome.webview.addEventListener("message",this.onMessage),document.body.append(this.overlay),window.chrome.webview.postMessage(`diagnostics-collect ${JSON.stringify(ck())}`)}close(){window.chrome.webview.removeEventListener("message",this.onMessage),document.removeEventListener("keydown",this.onKey),this.overlay?.remove(),this.overlay=null,this.shadow=null,this.entries=[]}element(e){return this.shadow?.querySelector(`#${e}`)}receive(e){if(this.shadow){if(e?.diagnostics)this.entries=e.diagnostics.entries??[],this.compressed=e.diagnostics.compressed??0,this.element("dgSave").classList.remove("dgBusy"),this.renderList(),this.select(this.entries.find(t=>t.name!=="manifest.json")?.name??"manifest.json");else if(e?.diagnosticsSaved){let{file:t,error:o}=e.diagnosticsSaved;if(this.element("dgSave").classList.remove("dgBusy"),o){d.showNotification(`Could not save the report: ${o}`,!1,5);return}d.showNotification(`Saved ${t} to your Downloads folder`,!1,5),this.close()}}}renderList(){let e=this.element("dgEntries");e.replaceChildren();for(let t of this.entries){let o=document.createElement("div");o.className="dgEntry",o.dataset.name=t.name;let n=document.createElement("input");n.type="checkbox",n.checked=!this.excluded.has(t.name),n.disabled=t.name==="manifest.json",n.onclick=l=>{l.stopPropagation(),n.checked?this.excluded.delete(t.name):this.excluded.add(t.name),o.classList.toggle("dgOff",!n.checked),this.renderTotal()};let r=document.createElement("div"),i=document.createElement("span");i.className="dgName",i.textContent=t.name;let a=document.createElement("span");a.className="dgSize",a.textContent=Wa(t.bytes),r.append(i,a),o.append(n,r),o.onclick=()=>this.select(t.name),e.append(o)}this.renderTotal()}select(e){let t=this.entries.find(n=>n.name===e);if(!t)return;for(let n of this.element("dgEntries").querySelectorAll(".dgEntry"))n.classList.toggle("dgSelected",n.dataset.name===e);this.element("dgNote").textContent=t.note;let o=this.element("dgText");t.kind==="binary"?o.textContent=`${t.name}: ${Wa(t.bytes)} of binary data, goes into the file as it is.`:t.kind==="json"&&!t.truncated&&(t.text??"").length<=ik?o.innerHTML=er(t.text??"","json"):o.textContent=t.truncated?`${t.text} -... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Ga(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},ik=new Wa});var Hh={};A(Hh,{OFFICIAL_MAPS:()=>tr,mapImageUrl:()=>zs,mapLabel:()=>Ja,officialMaps:()=>Za});function Za(){return Xa??=fetch(ak,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Xa=null,tr.map((s,e)=>[e,s]))),Xa}var tr,ak,zs,Ja,Xa,or=w(()=>{"use strict";tr=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],ak="https://gapi.svc.krunker.io/maps",zs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Ja=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Xa=null});var Oh=we((v3,lk)=>{lk.exports="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"});var Fh=we((w3,ck)=>{ck.exports=`

      Match Found Sound

      Plays in Kute's queue window when it finds a match
      Play
      Open folder
      Refresh
      Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
      Done
      `});var jh={};A(jh,{chosenSound:()=>el,default:()=>pk,kuteSound:()=>Hs,volume:()=>bo});function qh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},uk),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function el(){let s=String(d.settings.data.queueSoundFile??go);if(s!==go&&Dh()){let e=await Kh(s);if(e?.data)return e.data}return Hs()}var go,dk,uk,Dh,bo,Hs,Kh,Qa,pk,tl=w(()=>{"use strict";F();go="",dk=40,uk=5e3,Dh=()=>d.hostFeatures?.includes("custom-sounds")??!1,bo=()=>Math.min(1,Math.max(0,Number(d.settings.data.queueSoundVolume??dk)/100||0));Hs=()=>Promise.resolve().then(()=>ue(Oh(),1)).then(s=>s.default),Kh=s=>qh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);Qa=class{constructor(){this.context=null,this.playing=null,this.gain=null,d.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=bo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Fh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(bo()*100),c=r("qsError"),u=String(d.settings.data.queueSoundFile??go),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=Dh(),v=b?await qh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",go)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(y=>new Option(y,y))),k.push(L)}u!==go&&!v.includes(u)&&k.push(new Option(`${u} (missing)`,u)),i.replaceChildren(...k),i.value=u,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},f=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),f(),a.oninput=()=>{d.settings.data.queueSoundVolume=Number(a.value),f(),this.playing&&this.gain&&(this.gain.gain.value=bo())},i.onchange=()=>{u=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),bo()===0&&h("The volume is at 0.");try{if(u===go){await this.play(await Hs());return}let b=await Kh(u);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let m=new AbortController,g=()=>{m.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),u!==String(d.settings.data.queueSoundFile??go)&&(d.settings.data.queueSoundFile=u,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(u)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:m.signal,capture:!0}),document.body.append(t),await p()}},pk=new Qa});var Uh=we((y3,hk)=>{hk.exports=' External Queue
      Ready
      00:00:00

      Select Maps

      '});var Gh=we((x3,mk)=>{mk.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Wh={};function gk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Uh(),1)),Promise.resolve().then(()=>ue(Gh(),1)),el(),Hs(),Za()]).then(([u,h,p,f,m])=>{let g=Object.fromEntries(m.map(([k,E])=>[Ja(E),{url:zs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:f,volume:bo,maps:g};let b=new DOMParser().parseFromString(u.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var sr,fk,ol=w(()=>{"use strict";Ae();or();tl();sr=document.createElement("button");sr.textContent="open_in_new";sr.style=`background-color: #5ce05a; +... (the preview ends here, the file holds all of it)`:t.text??"",o.scrollTop=0}renderTotal(){let e=this.entries.filter(r=>!this.excluded.has(r.name)),t=e.reduce((r,i)=>r+i.bytes,0),o=this.entries.reduce((r,i)=>r+i.bytes,0),n=o>0?this.compressed*t/o:0;this.element("dgTotal").textContent=`${e.length} of ${this.entries.length} files, about ${Wa(Math.round(n))} as a file`}save(){this.element("dgSave").classList.add("dgBusy"),window.chrome.webview.postMessage(`diagnostics-save ${JSON.stringify([...this.excluded])}`)}},dk=new Va});var Oh={};A(Oh,{OFFICIAL_MAPS:()=>tr,mapImageUrl:()=>zs,mapLabel:()=>Za,officialMaps:()=>Qa});function Qa(){return Ja??=fetch(uk,{signal:AbortSignal.timeout(4e3)}).then(s=>s.json()).then(s=>{let e=[];for(let t of Array.isArray(s?.data)?s.data:[])Number.isInteger(t?.id)&&t.id>=0&&typeof t?.name=="string"&&e.push([t.id,t.name]);if(e.length===0)throw new Error("empty map list");return e}).catch(()=>(Ja=null,tr.map((s,e)=>[e,s]))),Ja}var tr,uk,zs,Za,Ja,or=w(()=>{"use strict";tr=["Burg","Littletown","Sandstorm","Subzero","Undergrowth","Shipment","Freight","Lostworld","Citadel","Oasis","Kanji","Industry","Lumber","Evacuation","Site","SkyTemple","Lagoon","Bureau","Tortuga","Tropicano","Krunk_Plaza","Arena","Habitat","Atomic","Old_Burg","Throwback","Stockade","Facility","Clockwork","Laboratory","Shipyard","Soul Sanctum","Bazaar","Erupt","HQ","Khepri","Lush","Vivo","Slide Moonlight","Eterno Simulator","Stalk Factory","Eterno Jump","Frontier","Bastion","Piazza","Barnyard"],uk="https://gapi.svc.krunker.io/maps",zs=s=>`https://assets.krunker.io/img/maps/map_${s}.png`,Za=s=>s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Ja=null});var Fh=we((S3,pk)=>{pk.exports="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"});var Dh=we((E3,hk)=>{hk.exports=`

      Match Found Sound

      Plays in Kute's queue window when it finds a match
      Play
      Open folder
      Refresh
      Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds
      Done
      `});var Uh={};A(Uh,{chosenSound:()=>tl,default:()=>gk,kuteSound:()=>Hs,volume:()=>bo});function Kh(s,e){return new Promise(t=>{let o=0,n=r=>{let i=e(r.data);i!==void 0&&(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(i))};o=setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},fk),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(s)})}async function tl(){let s=String(d.settings.data.queueSoundFile??go);if(s!==go&&qh()){let e=await jh(s);if(e?.data)return e.data}return Hs()}var go,mk,fk,qh,bo,Hs,jh,el,gk,ol=w(()=>{"use strict";F();go="",mk=40,fk=5e3,qh=()=>d.hostFeatures?.includes("custom-sounds")??!1,bo=()=>Math.min(1,Math.max(0,Number(d.settings.data.queueSoundVolume??mk)/100||0));Hs=()=>Promise.resolve().then(()=>ue(Fh(),1)).then(s=>s.default),jh=s=>Kh(`sound-get ${JSON.stringify({name:s})}`,e=>e?.sound?.name===s?e.sound:void 0);el=class{constructor(){this.context=null,this.playing=null,this.gain=null,d.queueSound={showOptions:()=>this.showOptions()}}async play(e){this.stop(),this.context??=new AudioContext,this.context.state==="suspended"&&await this.context.resume();let t=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),o=await this.context.decodeAudioData(t.buffer),n=this.context.createGain();n.gain.value=bo(),n.connect(this.context.destination);let r=this.context.createBufferSource();r.buffer=o,r.connect(n),r.onended=()=>{this.playing===r&&(this.playing=null),r.disconnect(),n.disconnect()},r.start(),this.playing=r,this.gain=n}stop(){this.playing?.stop(),this.playing=null}async showOptions(){let e=await Promise.resolve().then(()=>ue(Dh(),1)),t=document.createElement("div");t.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let o=document.createElement("div");t.append(o);let n=o.attachShadow({mode:"open"});n.innerHTML=e.default;let r=b=>n.querySelector(`#${b}`),i=r("qsSound"),a=r("qsVolume"),l=Math.round(bo()*100),c=r("qsError"),u=String(d.settings.data.queueSoundFile??go),h=b=>{c.textContent=b,c.hidden=!b},p=async()=>{let b=qh(),v=b?await Kh("sound-list",L=>Array.isArray(L?.sounds)?L.sounds:void 0)??[]:[],k=[new Option("Kute's sound",go)];if(v.length){let L=document.createElement("optgroup");L.label="Your sounds",L.append(...v.map(y=>new Option(y,y))),k.push(L)}u!==go&&!v.includes(u)&&k.push(new Option(`${u} (missing)`,u)),i.replaceChildren(...k),i.value=u,r("qsOpenFolder").hidden=!b,r("qsRefresh").hidden=!b;let E="Put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds";b?v.length===0&&(E="Add your own: put MP3, OGG, WAV or FLAC files into Documents\\kute\\sounds, then press Refresh"):E="Your own sounds need a newer Kute. Update Kute to use them.",r("qsFileHint").textContent=E},f=()=>{r("qsVolumeValue").textContent=`${a.value} %`};a.value=String(l),f(),a.oninput=()=>{d.settings.data.queueSoundVolume=Number(a.value),f(),this.playing&&this.gain&&(this.gain.gain.value=bo())},i.onchange=()=>{u=i.value,h("")},r("qsPlay").onclick=async()=>{h(""),bo()===0&&h("The volume is at 0.");try{if(u===go){await this.play(await Hs());return}let b=await jh(u);if(!b?.data){h(b?.error??"Kute did not answer.");return}await this.play(b.data)}catch{h("This file cannot be played. Try MP3, OGG or WAV.")}},r("qsOpenFolder").onclick=()=>window.chrome.webview.postMessage("open, sounds"),r("qsRefresh").onclick=()=>p();let m=new AbortController,g=()=>{m.abort(),this.stop(),t.remove(),Number(a.value)!==l&&window.chrome.webview.postMessage(`set-config-json queueSoundVolume ${Number(a.value)}`),u!==String(d.settings.data.queueSoundFile??go)&&(d.settings.data.queueSoundFile=u,window.chrome.webview.postMessage(`set-config-json queueSoundFile ${JSON.stringify(u)}`))};r("qsDone").onclick=g,t.addEventListener("mousedown",b=>{b.target===t&&g()}),document.addEventListener("keydown",b=>{b.key==="Escape"&&(b.stopPropagation(),g())},{signal:m.signal,capture:!0}),document.body.append(t),await p()}},gk=new el});var Gh=we((C3,bk)=>{bk.exports=' External Queue
      Ready
      00:00:00

      Select Maps

      '});var Wh=we((M3,vk)=>{vk.exports='(()=>{const{info:r}=window;function o(e){const n=document.querySelector(e);if(!n)throw new Error(`queue window: ${e} is missing`);return n}const y=r.maps,R={na:"North America",eu:"Europe",as:"Asia"},T=60,O=o("#queueStatus"),D=o("#statusArea"),q=o("#queueTimerDisplay"),A=o("#regionCheckboxes"),k=o("#matchPopupOverlay"),B=o("#countDownTimer"),$=o("#foundRegion"),_=o("#mapSelectorButton"),p=o("#mapSelectorOverlay"),j=o("#closeMapSelector"),I=o("#mapGrid"),s=o("#queueButton"),G=o("#closeButton");let m=!1,g=!1,N=0,E=0,v=0,w=null,l=null,S=null,u=null;const i=new Set,h=window.opener?.localStorage??window.localStorage;function x(){const e=Array.from(A.querySelectorAll("input:checked"),n=>n.id);h.setItem("queue_selectedRegions",JSON.stringify(e)),h.setItem("queue_newSelectedMaps",JSON.stringify(Array.from(i)))}function J(){try{for(const n of JSON.parse(h.getItem("queue_selectedRegions")??"[]")){const t=document.getElementById(n);t&&(t.checked=!0)}const e=h.getItem("queue_newSelectedMaps");for(const n of e?JSON.parse(e):Object.values(y).map(t=>t.number))i.add(Number(n))}catch{for(const e of Object.values(y))i.add(e.number)}}function C(e){const n=t=>String(Math.floor(t)).padStart(2,"0");return`${n(e/3600)}:${n(e%3600/60)}:${n(e%60)}`}function b(e,n){O.textContent=n,O.classList.toggle("active",e),D.classList.toggle("active",e)}function d(e="Ready"){m=!1,g=!1,clearInterval(E),s.textContent="Start Queue",s.classList.remove("in-queue"),s.disabled=!1,q.textContent="00:00:00",b(!1,e)}async function Q(){l=new AudioContext,l.state==="suspended"&&await l.resume();const e=n=>l.decodeAudioData(Uint8Array.from(atob(n),t=>t.charCodeAt(0)).buffer);try{S=await e(r.sound)}catch{S=await e(r.fallbackSound??r.sound)}}function L(){u&&(u.stop(),u.disconnect(),u=null)}function P(){if(!S||l?.state!=="running")return;L();let e=1;try{e=r.volume?.()??1}catch{}if(!(e>0))return;const n=l.createGain();n.gain.value=e,n.connect(l.destination);const t=l.createBufferSource();t.buffer=S,t.connect(n),t.start(0),u=t,t.onended=()=>{u===t&&(u=null),t.disconnect(),n.disconnect()}}function U(e){const n=Date.now()+e,t=()=>{const a=Math.ceil((n-Date.now())/1e3);if(a<=0){b(!1,"Ready"),s.disabled=!1;return}b(!1,`Cooldown: ${C(a)}`),s.disabled=!0,setTimeout(t,1e3)};t()}function z(e,n){P(),k.classList.add("active");const t=Object.entries(y).find(([,f])=>f.number===Number.parseInt(e,10))?.[0]??"unknown",a=R[n.slice(2)]??n.slice(2);$.textContent=`${a}, ${t}`;const c=Date.now();clearInterval(v),v=setInterval(()=>{const f=Math.max(0,T-Math.floor((Date.now()-c)/1e3));B.textContent=C(f),f<=0&&(clearInterval(v),k.classList.remove("active"))},1e3),d()}function W(){const e=Array.from(A.querySelectorAll("input:checked"),a=>a.value);if(e.length===0||i.size===0){d(e.length===0?"Select at least one region":"Select at least one map");return}const n=`wss://gamefrontend.svc.krunker.io/v1/matchmaking/queue?token=${r.token}&maps=${Array.from(i).join(",")}®ions=${e.join(",")}`;let t;try{t=new WebSocket(n)}catch{d("Connection failed");return}w=t,t.onerror=()=>d("Connection error"),t.onclose=()=>{(m||g)&&d()},t.onopen=()=>{m=!0,g=!1,N=Date.now(),s.textContent="Leave Queue",s.classList.add("in-queue"),s.disabled=!1,b(!0,"In queue"),q.textContent=C(0),E=setInterval(()=>{q.textContent=C((Date.now()-N)/1e3)},1e3)},t.onmessage=a=>{const c=JSON.parse(a.data);if(c.type==="QUEUE_STATUS"&&c.payload?.status==="MATCHED"){const f=c.payload.assignment.extensions;z(String(f.map).trim(),String(f.region))}else c.type==="ERROR"&&c.payload?.code==="COOLDOWN"?(d(),t.close(),U(Number(c.payload.payload.cooldown))):c.type==="INTERNAL_ERROR"&&(d(),t.close())}}function F(e){const n=!i.has(e);n?i.add(e):i.delete(e),I.querySelector(`.map-item[data-map="${e}"]`)?.classList.toggle("selected",n),m&&w?.close(),x()}function H(){I.replaceChildren();for(const[e,n]of Object.entries(y)){const t=document.createElement("div");t.className="map-item",t.dataset.map=String(n.number),t.classList.toggle("selected",i.has(n.number));const a=document.createElement("img");a.src=n.url,a.loading="lazy";const c=document.createElement("span");c.textContent=e,t.append(a,c),t.onclick=()=>F(n.number),I.append(t)}}J();const M=r.region?document.getElementById(r.region):null;M&&(M.checked=!0),H(),_.onclick=()=>p.classList.add("active"),j.onclick=()=>p.classList.remove("active"),p.onclick=e=>{e.target===p&&p.classList.remove("active")},s.onclick=async()=>{if(!g){if(m){w?.close();return}s.disabled=!0,g=!0;try{S||await Q()}catch{}W()}},G.onclick=()=>{clearInterval(v),k.classList.remove("active"),L()};const K=()=>{m&&w?.close(),x()};for(const e of A.querySelectorAll("input"))e.onclick=K})();\n'});var Vh={};function kk(){let s=window.screen.width,e=window.screen.height,t=850,o=350,n=(s-t)/2,r=(e-o)/2,i=window.open("about:blank","_blank",`width=${t},height=${o},left=${n},top=${r}`);if(!i)return;let a=(U(".region-indicator").textContent??"").split(": ")[1];switch(a){case"North America":a="na";break;case"Europe":a="eu";break;case"Asia":a="as";break;default:break}let l=localStorage.getItem("__FRVR_auth_access_token")??"";l=l.replace(/"/g,""),l=l.replace("/","");let c=localStorage.getItem("s_rankedAllRegions")==="true";Promise.all([Promise.resolve().then(()=>ue(Gh(),1)),Promise.resolve().then(()=>ue(Wh(),1)),tl(),Hs(),Qa()]).then(([u,h,p,f,m])=>{let g=Object.fromEntries(m.map(([k,E])=>[Za(E),{url:zs(k),number:k}]));i.info={allRegions:c,token:l,region:a,sound:p,fallbackSound:f,volume:bo,maps:g};let b=new DOMParser().parseFromString(u.default,"text/html");i.document.head.append(...Array.from(b.head.children,k=>i.document.importNode(k,!0))),i.document.body.append(...Array.from(b.body.children,k=>i.document.importNode(k,!0)));let v=i.document.createElement("script");v.textContent=h.default,i.document.head.append(v)})}var sr,wk,sl=w(()=>{"use strict";Ae();or();ol();sr=document.createElement("button");sr.textContent="open_in_new";sr.style=`background-color: #5ce05a; color: #ffffff; border-radius: 9px; padding: 20px 21px; @@ -180,20 +180,20 @@ ${I}${_}`)}}),g(),{getValue:()=>c.value,isDirty:()=>h,markSaved(k=c.value){u=k,g cursor: pointer; font-size: 20px; text-shadow: 2px 2px 0px black !important; - margin-left: 2px;`;fk=window.openRankedMenu;window.openRankedMenu=()=>{fk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(sr,e)};sr.onclick=gk});var Vh={};var bk,vk,wk,sl=w(()=>{"use strict";F();bn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");bk=window.exportSettings;window.exportSettings=s=>(s||d.showNotification("Settings exported to Downloads!",!1,3),bk(s));vk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return vk(...s)};wk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),wk(...s));d.bindShoot=()=>{if(Dr()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}Qo()}});var rl={};A(rl,{default:()=>kk});var nl,kk,il=w(()=>{"use strict";F();Ae();nl=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=` + margin-left: 2px;`;wk=window.openRankedMenu;window.openRankedMenu=()=>{wk();let s=U(".footer-controls"),e=s.lastElementChild;s.insertBefore(sr,e)};sr.onclick=kk});var Yh={};var yk,xk,Sk,nl=w(()=>{"use strict";F();bn();window.chrome.webview.postMessage("drag, true");window.chrome.webview.postMessage("throttle, menu");yk=window.exportSettings;window.exportSettings=s=>(s||d.showNotification("Settings exported to Downloads!",!1,3),yk(s));xk=window.showWindow;window.showWindow=(...s)=>{switch(s[0]){case 3:case 53:window.chrome.webview.postMessage("throttle, game");break;case 15:case 26:case 52:case 9:case 44:case 43:case 40:case 38:case 50:case 17:case 39:case 51:case 16:case 34:window.chrome.webview.postMessage("throttle, menu");break;default:break}return xk(...s)};Sk=window.closWind;window.closWind=(...s)=>(window.chrome.webview.postMessage("drag, true"),window.chrome.webview.postMessage("throttle, menu"),Sk(...s));d.bindShoot=()=>{if(qr()){window.changeCont("shoot",1,void 0);let s={key:"F20",code:"F20",keyCode:131,which:131,bubbles:!0,cancelable:!0};window.dispatchEvent(new KeyboardEvent("keydown",s)),window.dispatchEvent(new KeyboardEvent("keyup",s))}Qo()}});var il={};A(il,{default:()=>Ek});var rl,Ek,al=w(()=>{"use strict";F();Ae();rl=class{constructor(){this.numberDisplay=document.createElement("div"),this.numberDisplay.id="hpEnemyCounter",this.numberDisplay.classList.add("statIcon"),this.numberDisplay.style.cssText="transform: translate(0, -2.7px);",this.numberDisplay.innerHTML=`
      on 0 -
      `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},d.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},kk=new nl});var ll={};A(ll,{default:()=>yk});var al,yk,cl=w(()=>{"use strict";F();al=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),d.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},yk=new al});var Xh,Yh=w(()=>{Xh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} -`});var Zh,Jh=w(()=>{Zh='
      HUD Layout
      Boxes are where things sit in the match.
      Drag to move, wheel to resize, arrows nudge
      Reset all
      Done
      '});var Qh={};A(Qh,{HUD_ELEMENTS:()=>jt,gameSettingOn:()=>dl});function dl(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var jt,nr=w(()=>{"use strict";jt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var ul={};A(ul,{HudEditor:()=>rr,default:()=>Tk,implicitShift:()=>Os});function Os(s,e){if(s!=="spotify"||!d.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=$k*(1+(o.s??1))/2,r=Ck*(1-(t.s??1))/2;return Math.round(n+Mk-r)}var Ek,em,$k,Ck,Mk,rr,Tk,ir=w(()=>{"use strict";F();nr();Pt();Hn();Ek="kute_hudLayoutCSS",em="kute_hud_geometry",$k=190,Ck=320,Mk=12;rr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},d.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...d.settings.data.hudLayout}}save(e){d.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=d.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};d.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of jt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Os(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=Ek,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of jt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:Bt().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of jt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,u]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-u/2,c,u,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(em,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(em)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of jt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===Bt().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){d.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,d.showNotification?.("Opening a private match",!1,4);let o=await Cs();if(!(o!==null&&await Ms(o))){this.open=!1,d.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){d.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(hl(),pl)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Tk=new rr});var pl={};A(pl,{openEditor:()=>Ak});async function Ak(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(x=>setTimeout(x,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Xh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(x,$)=>{let[R,K,z,N,V]=$,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?ar:z,ze=de?ar:N,Zt=R,Eo=K;return!de&&Z&&(le=x.size?.[0]??ar,Zt=R+z/2-le/2),!de&&ge&&(ze=x.size?.[1]??ar,Eo=K+N/2-ze/2),de&&R>window.innerWidth/2&&(Zt=R-le),de&&K>window.innerHeight/2&&(Eo=K-ze),le=Math.min(le,window.innerWidth),ze=Math.min(ze,window.innerHeight),{x:lr(Zt,0,window.innerWidth-le),y:lr(Eo,0,window.innerHeight-ze),w:le,h:ze,empty:de}},i=x=>{let $=x.filter(R=>!R.empty);for(let R of x)if(R.empty){for(let K=0;K<12;K++){let z=$.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=lr(z.x+z.w+2,0,window.innerWidth-R.w)}$.push(R)}},a=[];for(let x of jt){let $=e.rects[x.key];if(!$||x.clientSetting&&Mo(d.settings.data,x.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=x.name,R.append(K),n.append(R),a.push({def:x,box:R,...r(x,$),drawn:null})}i(a);let l=!1;for(let x of a){x.w>60&&(l=!1);let $=l&&x.y+x.h+2060?!1:!l}let c=[];for(let x of["hudGuideV","hudGuideH"]){let $=document.createElement("div");$.className=`hudGuide ${x}`,$.style.display="none",n.append($),c.push($)}let u=x=>x.setting?dl(x.setting):x.clientSetting?d.settings.data[x.clientSetting]!==!1:!0,h=x=>t[x]??={},p=x=>{let $={...h(x)},R=Os(x,t);return R&&($.x=cr(R/window.innerWidth*100)),$},f=(x,$)=>[x/100*window.innerWidth*e.factor,$/100*window.innerHeight*e.factor],m=x=>{let $=t[x.def.key]??{},[R,K]=f($.x??0,$.y??0),z=R+Os(x.def.key,t)*e.factor,N=$.s??1,V=x.w*N,de=x.h*N,Z=x.x+x.w/2+z-V/2,ge=x.y+x.h/2+K-de/2;x.box.style.left=`${Math.round(Z)}px`,x.box.style.top=`${Math.round(ge)}px`,x.box.style.width=`${Math.round(V)}px`,x.box.style.height=`${Math.round(de)}px`,x.box.classList.toggle("hudOff",!u(x.def)),x.box.classList.toggle("hudEmpty",x.empty),x.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let x of a)m(x)},b=()=>{d.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let x of a){let $=v.get(x.def.key);if(!$)continue;let R=t[x.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);$.classList.toggle("hpChanged",z);let N=$.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(x.def.key);V&&(V.checked=u(x.def))}},L=null,y=(x,$)=>x.box.classList.toggle("hudActive",$||L===x),C=x=>{L=x;for(let $ of a)$.box.classList.toggle("hudActive",$===x)},I=(x,$,R,K)=>{let z=h(x.def.key),N=e.factor||1;z.x=cr((K.x??0)+$/(window.innerWidth*N)*100),z.y=cr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(x,$,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===x||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[$.left+R,$.left+R+$.width/2,$.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=tm&&(V===null||Math.abs(le){z.preventDefault(),C(x),$.setPointerCapture(z.pointerId),$.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:x.drawn??$.getBoundingClientRect(),from:p(x.def.key)}},$.onpointermove=z=>{if(!R||!$.hasPointerCapture(z.pointerId))return;let[N,V]=_(x,R.rect,z.clientX-R.x,z.clientY-R.y);I(x,N,V,R.from),g()};let K=()=>{R&&(R=null,$.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};$.onpointerup=K,$.onpointercancel=K,$.onwheel=z=>{z.preventDefault(),C(x);let N=h(x.def.key);N.s=cr(lr((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Zh;let J=x=>G.querySelector(`#${x}`),B=(x,$)=>{if(x.setting)window.setSetting(x.setting,$);else if(x.clientSetting){let R=x.clientSetting;d.settings.data[R]=$,window.chrome.webview.postMessage(`set-config, ${R}, ${$}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof d.settings[K]=="function"&&d.settings[K]($);let z=document.querySelector(`#${R}`);z&&(z.checked=$)}g(),E()},re=J("hpList"),je="";for(let x of a){let{def:$}=x;if($.group!==je){({group:je}=$);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=$.name,$.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${$.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[$.key],b(),g(),E()},R.append(K,z,N),$.setting||$.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=u($),V.onchange=()=>B($,V.checked),R.append(V),k.set($.key,V)}R.onpointerenter=()=>y(x,!0),R.onpointerleave=()=>y(x,!1),re.append(R),v.set($.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=x=>{let $=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round($.left)}px;top:${Math.round($.top)}px`,Ee.setPointerCapture(x.pointerId),j={x:x.clientX-$.left,y:x.clientY-$.top},be.classList.add("hpBusy")},Ee.onpointermove=x=>{j&&(H.style.left=`${Math.round(x.clientX-j.x)}px`,H.style.top=`${Math.round(x.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),d.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let x of Object.keys(t))delete t[x];b(),g(),E()},document.addEventListener("keydown",x=>{if(x.key==="Escape"){x.preventDefault(),x.stopPropagation(),Y();return}if(!L||!x.key.startsWith("Arrow"))return;x.preventDefault(),x.stopPropagation();let $=x.shiftKey?10:1,R=(x.key==="ArrowRight"?$:0)-(x.key==="ArrowLeft"?$:0),K=(x.key==="ArrowDown"?$:0)-(x.key==="ArrowUp"?$:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var tm,ar,lr,cr,hl=w(()=>{"use strict";Yh();Jh();F();nr();ir();To();tm=6,ar=24,lr=(s,e,t)=>Math.min(t,Math.max(e,s)),cr=s=>Math.round(s*100)/100});var rm={};function Pk(){document.querySelector("#settSearch")&&(window.closWind?.(sm),window.showWindow?.(sm))}var dr,om,nm,Lk,Rk,sm,ml=w(()=>{"use strict";F();Ae();dr=document.createElement("div");dr.className="settName";dr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";om={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},nm="";for(let s in om)nm+=`Import ${s} +
      `,this.enemyOBJ=0,this.enemyTimeout=null,this.observer=null,this.pointCounter=null,this.gameUpdateListener=e=>{e.data==="game-updated"&&setTimeout(()=>{Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())},2e3)},d.settings.toggleHpEnemyCounter=e=>this.toggle(e),this.toggle(!0)}toggle(e){e?(window.chrome.webview.addEventListener("message",this.gameUpdateListener),Oe()&&(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.setupDisplay())):(window.chrome.webview.removeEventListener("message",this.gameUpdateListener),this.observer?.disconnect(),this.numberDisplay.remove())}processTeamScores=()=>{let{pointCounter:e}=this;if(e){for(let t of document.querySelectorAll("#tScoreC1, #tScoreC2"))if(t&&!t.className.includes("you")){let o=t.nextElementSibling;if(!o)continue;let n=Number.parseInt(o.textContent??"",10);if(Number.isNaN(n))continue;n>this.enemyOBJ&&(e.textContent=String((n-this.enemyOBJ)/10),this.enemyTimeout&&clearTimeout(this.enemyTimeout),this.enemyTimeout=setTimeout(()=>{e.textContent="0",this.enemyTimeout=null},1600)),this.enemyOBJ=n}}};setupDisplay(){let e=U(".pointVal",this.numberDisplay);this.pointCounter=e,U(".topRightCounters").append(this.numberDisplay),this.observer?.disconnect(),this.observer=new MutationObserver(this.processTeamScores),this.observer.observe(U("#teamScores"),{childList:!0,subtree:!0})}},Ek=new rl});var cl={};A(cl,{default:()=>$k});var ll,$k,dl=w(()=>{"use strict";F();ll=class{constructor(){this.originalPlay=()=>{},this.observer=new MutationObserver(e=>this.parseChat(e)),d.settings.toggleHsSound=e=>this.toggle(e),this.setupSoundHook()}setupSoundHook(){window.SOUND?.play?(this.originalPlay=window.SOUND.play,this.toggle(!0)):setTimeout(()=>this.setupSoundHook(),100)}toggle(e){if(e){let t=document.querySelector("#chatList");t&&this.observer.observe(t,{childList:!0});let o=this;window.SOUND.play=function(n,r,i){if(!(n==="headshot_0"&&r===void 0))return o.originalPlay.call(window.SOUND,n,r,i)}}else window.SOUND.play=this.originalPlay,this.observer.disconnect()}parseChat(e){for(let t of e)if(t.type==="childList")for(let o of t.addedNodes){if(!(o instanceof HTMLElement)||o.tagName!=="DIV")continue;let n=o.querySelector("span.chatMsg");if(!n)continue;let r=n.querySelectorAll("span[style*='color:#'], span[style*='color: rgb']");if(r.length<=0)continue;let i=r[0],a=i.style.color.trim().toLowerCase(),l=i.textContent.trim();a==="rgb(255, 255, 255)"&&l==="You"&&n.querySelector("img")&&window.SOUND.play("headshot_0",1,!1)}}},$k=new ll});var Jh,Xh=w(()=>{Jh=`html.kuteHudEdit #app,html.kuteHudEdit #fullMenHider{opacity:.1!important;pointer-events:none!important}html.kuteHudEdit #kuteHudEditor{position:fixed;inset:0;z-index:2147483000;background:#00000073;font-family:Consolas,monospace;color:#fff}.hudBox{position:absolute;box-sizing:border-box;border:1px solid rgba(53,224,232,.65);border-radius:4px;background:#35e0e81a;cursor:grab;touch-action:none}.hudBox:hover,.hudBox.hudActive{border-color:#35e0e8;background:#35e0e840}.hudBox.hudDragging{cursor:grabbing}.hudBox.hudEmpty{border-style:dashed}.hudBox.hudOff{border-color:#ffffff4d;background:#ffffff0f}.hudLabel{position:absolute;bottom:100%;left:-1px;padding:0 .35em;border-radius:3px 3px 0 0;background:#35e0e8d9;color:#05201f;font-size:11px;line-height:1.5;white-space:nowrap;pointer-events:none}.hudBox.hudLabelBelow .hudLabel{top:100%;bottom:auto;border-radius:0 0 3px 3px}.hudBox.hudOff .hudLabel{background:#fff6;color:#111}.hudGuide{position:absolute;background:#ffc147;pointer-events:none}.hudGuide.hudGuideV{top:0;width:1px;height:100%}.hudGuide.hudGuideH{left:0;width:100%;height:1px} +`});var Qh,Zh=w(()=>{Qh='
      HUD Layout
      Boxes are where things sit in the match.
      Drag to move, wheel to resize, arrows nudge
      Reset all
      Done
      '});var em={};A(em,{HUD_ELEMENTS:()=>jt,gameSettingOn:()=>ul});function ul(s){try{return window.localStorage.getItem(`kro_setngss_${s}`)!=="false"}catch{return!0}}var jt,nr=w(()=>{"use strict";jt=[{key:"timer",name:"Timer",group:"Match",selector:"#timerHolder",size:[188,77]},{key:"matchInfo",name:"Mode and map",group:"Match",selector:"#matchInfo",size:[110,50]},{key:"teamScores",name:"Team scores",group:"Match",selector:"#teamScores",display:"block",size:[220,40],note:"team modes"},{key:"rounds",name:"Rounds",group:"Match",selector:"#roundsDisplay",display:"inline-block",size:[200,60],note:"round based"},{key:"zoneCount",name:"Zone count",group:"Match",selector:"#scoreZoneCount",display:"inline-block",size:[57,43],note:"hardpoint"},{key:"lives",name:"Lives",group:"Match",selector:"#livesCount",display:"inline-block",size:[57,43],note:"LMS, infected"},{key:"gameMessage",name:"Match message",group:"Match",selector:"#gameMessage",size:[400,30]},{key:"roundMessage",name:"Round message",group:"Match",selector:"#roundMessage",size:[400,30]},{key:"challenge",name:"Challenge banner",group:"Match",selector:"#chalDisplay",size:[300,30]},{key:"fps",name:"FPS",group:"Stats",selector:"#fpsDisplay",setting:"showFPS",display:"block",size:[72,23]},{key:"ping",name:"Ping",group:"Stats",selector:"#pingDisplay",setting:"showPing",display:"block",size:[72,23]},{key:"kills",name:"Kills",group:"Stats",selector:"#killCount",setting:"showKillC",display:"inline-block",size:[57,43]},{key:"deaths",name:"Deaths",group:"Stats",selector:"#deathCount",setting:"showDeaths",display:"inline-block",size:[57,43]},{key:"streak",name:"Streak",group:"Stats",selector:"#streakCount",setting:"showStreak",display:"inline-block",size:[57,43]},{key:"kd",name:"K/D",group:"Stats",selector:"#kdCount",setting:"showKD",display:"inline-block",size:[77,43]},{key:"score",name:"Score",group:"Stats",selector:"#scoreCount",setting:"showScore",display:"inline-block",size:[57,43]},{key:"speedRun",name:"Parkour timer",group:"Stats",selector:"#speedRunHolder",display:"block",size:[200,60],note:"parkour"},{key:"leaderboard",name:"Leaderboard",group:"Feed",selector:"#leaderboardHolder",size:[327,54]},{key:"centerLeader",name:"Center leaderboard",group:"Feed",selector:"#centerLeaderDisplay",display:"block",size:[300,120],note:"comp"},{key:"killFeed",name:"Kill feed",group:"Feed",selector:"#killFeed",setting:"showKills",display:"inline-grid",size:[240,120]},{key:"chat",name:"Chat",group:"Feed",selector:"#chatHolder",rule:"#uiBase.onGame #chatHolder",size:[386,248]},{key:"weapons",name:"Weapons",group:"Combat",selector:"#weapHolder",size:[127,203]},{key:"ammo",name:"Ammo",group:"Combat",selector:"#ammoHolder",size:[148,63]},{key:"perks",name:"Perks",group:"Combat",selector:"#perkHolder",size:[65,40]},{key:"krTag",name:"Deposit coins",group:"Combat",selector:"#krTagHolder",size:[71,65],note:"deposit"},{key:"giftTag",name:"Gift drops",group:"Combat",selector:"#giftTagHolder",size:[65,65]},{key:"powerUps",name:"Powerups",group:"Combat",selector:"#powerUpHolder",size:[65,65]},{key:"killStreak",name:"Kill streak",group:"Combat",selector:"#killStreakHolder",size:[65,65]},{key:"player",name:"Health and class",group:"Player",selector:"#bottomLeftPlayer",size:[376,90]},{key:"zPerks",name:"Class perks",group:"Player",selector:"#zPerksHolder",size:[65,40]},{key:"nuke",name:"Nuke counter",group:"Kute",selector:"#kuteNukeCounter",clientSetting:"nukeCounter",display:"flex",size:[90,56]},{key:"keystrokes",name:"Keystrokes",group:"Kute",selector:"#kuteKeystrokes",clientSetting:"keystrokes",display:"flex",size:[190,82]},{key:"spotify",name:"Spotify",group:"Kute",selector:"#kuteSpotifyOverlay",clientSetting:"spotifyOverlay",display:"flex",size:[320,82]},{key:"menuTimer",name:"Menu timer",group:"Kute",selector:"#uiBase.onMenu .spectateInfo",clientSetting:"menuTimer",size:[150,60],note:"menu",menu:(s,e)=>[s/2,e*.4-105]}]});var pl={};A(pl,{HudEditor:()=>rr,default:()=>Pk,implicitShift:()=>Os});function Os(s,e){if(s!=="spotify"||!d.settings.data.keystrokes)return 0;let t=e.spotify??{},o=e.keystrokes??{};if(t.x||t.y||o.x||o.y)return 0;let n=Ak*(1+(o.s??1))/2,r=Lk*(1-(t.s??1))/2;return Math.round(n+Rk-r)}var Tk,tm,Ak,Lk,Rk,rr,Pk,ir=w(()=>{"use strict";F();nr();Pt();Hn();Tk="kute_hudLayoutCSS",tm="kute_hud_geometry",Ak=190,Lk=320,Rk=12;rr=class{constructor(){this.style=null,this.open=!1,this.menuRects={},d.hudEditor={edit:()=>this.edit(),apply:()=>this.apply()},this.migrateNukeCounter(),this.apply(),Object.keys(this.measureMenuWidgets()).length===0&&setTimeout(()=>this.measureMenuWidgets(),3e3)}get layout(){return{...d.settings.data.hudLayout}}save(e){d.settings.data.hudLayout=e,window.chrome.webview.postMessage(`set-config-json hudLayout ${JSON.stringify(e)}`),this.apply()}migrateNukeCounter(){let e=d.settings.data.nukeCounterConfig;if(!e||e.x===void 0&&e.y===void 0&&e.scale===void 0)return;let{layout:t}=this;t.nuke??={x:Math.round(((e.x??94)-94)*100)/100,y:Math.round(((e.y??50)-50)*100)/100,s:e.scale??1};let o={goal:e.goal??0,background:e.background??!0};d.settings.data.nukeCounterConfig=o,window.chrome.webview.postMessage(`set-config-json nukeCounterConfig ${JSON.stringify(o)}`),this.save(t)}apply(){let{layout:e}=this,t="";for(let o of jt){let n=e[o.key]??{},r=(n.x??0)!==0||(n.y??0)!==0,i=(n.s??1)!==1,a=Os(o.key,e);if(!r&&!i&&!a)continue;let l=[];r?l.push(`translate:${n.x??0}vw ${n.y??0}vh`):a&&l.push(`translate:${a}px 0`),i&&l.push(`scale:${n.s}`),t+=`${o.rule??o.selector}{${l.join(";")}}`}this.style||(this.style=document.createElement("style"),this.style.id=Tk,document.head.append(this.style)),this.style.textContent=t}inMatch(){let e=document.querySelector("#inGameUI");return!!e&&window.getComputedStyle(e).display!=="none"}snapshot(){if(!this.inMatch())return null;let e=[];for(let i of jt){if(i.menu)continue;let a=document.querySelector(i.selector);a&&e.push({def:i,element:a,visible:window.getComputedStyle(a).display!=="none"})}let t={vw:window.innerWidth,vh:window.innerHeight,factor:1,game:Bt().id??"",rects:{}},o=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let{def:i,element:a,visible:l}of e){if(!l)continue;let c=a.getBoundingClientRect();c.width<=0||(t.rects[i.key]=[c.x,c.y,c.width,c.height,1],c.width>60&&a.offsetWidth>0&&(t.factor=c.width/a.offsetWidth))}let n=e.filter(({def:i})=>!t.rects[i.key]&&i.display);if(n.length>0){let i=document.createElement("style");i.textContent=n.map(({def:a})=>`${a.selector}{display:${a.display}!important}`).join(""),document.head.append(i);for(let{def:a,element:l}of n){let c=l.getBoundingClientRect();c.width>0&&(t.rects[a.key]=[c.x,c.y,c.width,c.height,0])}i.remove()}for(let{def:i,element:a}of e){if(t.rects[i.key])continue;let l=a.getBoundingClientRect();t.rects[i.key]=[l.x,l.y,l.width,l.height,0]}let r=this.menuRects[`${t.vw}x${t.vh}`]??{};for(let i of jt){if(!i.menu)continue;if(r[i.key]){t.rects[i.key]=r[i.key];continue}let[a,l]=i.menu(t.vw,t.vh),[c,u]=i.size??[0,0];t.rects[i.key]=[a-c/2,l-u/2,c,u,1]}this.style&&(this.style.textContent=o);try{window.localStorage.setItem(tm,JSON.stringify(t))}catch{}return t}geometry(){if(this.inMatch())return this.snapshot();let e=null;try{e=JSON.parse(window.localStorage.getItem(tm)??"null")}catch{e=null}return!e?.rects||e.vw!==window.innerWidth||e.vh!==window.innerHeight?null:this.withMenuWidgets(e)}measureMenuWidgets(){let e={},t=this.style?.textContent??"";this.style&&(this.style.textContent="");for(let o of jt){if(!o.menu)continue;let n=document.querySelector(o.selector)?.getBoundingClientRect();n&&n.width>0&&(e[o.key]=[n.x,n.y,n.width,n.height,1])}return this.style&&(this.style.textContent=t),Object.keys(e).length>0&&(this.menuRects[`${window.innerWidth}x${window.innerHeight}`]=e),e}withMenuWidgets(e){return{...e,rects:{...e.rects,...this.measureMenuWidgets()}}}async edit(){if(this.open)return;if(this.inMatch()){this.show(this.snapshot());return}let e=this.geometry();if(e?.game&&e.game===Bt().id){this.show(e);return}if(!await Ce({title:"Set up your HUD",paragraphs:["The editor places everything exactly where it sits in a match, so it needs a match to measure.","Kute opens a private one for you, nobody else can join it. If you are in a game right now, you leave it."],stay:"Not now",leave:"Open a private match"})||this.open)return;if(document.querySelector("#signedInHeaderBar")===null){d.showNotification?.("Log in first, a private match needs an account",!1,5);return}this.open=!0,d.showNotification?.("Opening a private match",!1,4);let o=await Cs();if(!(o!==null&&await Ms(o))){this.open=!1,d.showNotification?.("Could not open a private match. Is a host slot free?",!1,6);return}await new Promise(r=>{setTimeout(r,1500)}),this.open=!1,this.show(this.snapshot()??this.geometry())}show(e){if(!e){d.showNotification?.("Could not measure the HUD, try again",!1,6);return}this.open=!0,Promise.resolve().then(()=>(ml(),hl)).then(t=>t.openEditor(this,e)).catch(t=>{this.open=!1,console.error("[kute] hud editor:",t)})}closed(){this.open=!1}},Pk=new rr});var hl={};A(hl,{openEditor:()=>Ik});async function Ik(s,e){document.pointerLockElement&&document.exitPointerLock(),await new Promise(x=>setTimeout(x,0));let{layout:t}=s,o=document.createElement("style");o.id="kute_hudEditorCSS",o.textContent=Jh,document.head.append(o),document.documentElement.classList.add("kuteHudEdit");let n=document.createElement("div");n.id="kuteHudEditor",document.body.append(n);let r=(x,$)=>{let[R,K,z,N,V]=$,de=!V||z<=0||N<=0,Z=z>window.innerWidth*.5,ge=N>window.innerHeight*.5,le=de?ar:z,ze=de?ar:N,Zt=R,Eo=K;return!de&&Z&&(le=x.size?.[0]??ar,Zt=R+z/2-le/2),!de&&ge&&(ze=x.size?.[1]??ar,Eo=K+N/2-ze/2),de&&R>window.innerWidth/2&&(Zt=R-le),de&&K>window.innerHeight/2&&(Eo=K-ze),le=Math.min(le,window.innerWidth),ze=Math.min(ze,window.innerHeight),{x:lr(Zt,0,window.innerWidth-le),y:lr(Eo,0,window.innerHeight-ze),w:le,h:ze,empty:de}},i=x=>{let $=x.filter(R=>!R.empty);for(let R of x)if(R.empty){for(let K=0;K<12;K++){let z=$.find(V=>R.xV.x&&R.yV.y);if(!z)break;R.y+R.h+2+R.h<=window.innerHeight?R.y=Math.min(z.y+z.h+2,window.innerHeight-R.h):R.x=lr(z.x+z.w+2,0,window.innerWidth-R.w)}$.push(R)}},a=[];for(let x of jt){let $=e.rects[x.key];if(!$||x.clientSetting&&Mo(d.settings.data,x.clientSetting))continue;let R=document.createElement("div");R.className="hudBox";let K=document.createElement("div");K.className="hudLabel",K.textContent=x.name,R.append(K),n.append(R),a.push({def:x,box:R,...r(x,$),drawn:null})}i(a);let l=!1;for(let x of a){x.w>60&&(l=!1);let $=l&&x.y+x.h+2060?!1:!l}let c=[];for(let x of["hudGuideV","hudGuideH"]){let $=document.createElement("div");$.className=`hudGuide ${x}`,$.style.display="none",n.append($),c.push($)}let u=x=>x.setting?ul(x.setting):x.clientSetting?d.settings.data[x.clientSetting]!==!1:!0,h=x=>t[x]??={},p=x=>{let $={...h(x)},R=Os(x,t);return R&&($.x=cr(R/window.innerWidth*100)),$},f=(x,$)=>[x/100*window.innerWidth*e.factor,$/100*window.innerHeight*e.factor],m=x=>{let $=t[x.def.key]??{},[R,K]=f($.x??0,$.y??0),z=R+Os(x.def.key,t)*e.factor,N=$.s??1,V=x.w*N,de=x.h*N,Z=x.x+x.w/2+z-V/2,ge=x.y+x.h/2+K-de/2;x.box.style.left=`${Math.round(Z)}px`,x.box.style.top=`${Math.round(ge)}px`,x.box.style.width=`${Math.round(V)}px`,x.box.style.height=`${Math.round(de)}px`,x.box.classList.toggle("hudOff",!u(x.def)),x.box.classList.toggle("hudEmpty",x.empty),x.drawn=new DOMRect(Z,ge,V,de)},g=()=>{for(let x of a)m(x)},b=()=>{d.settings.data.hudLayout=t,s.apply()},v=new Map,k=new Map,E=()=>{for(let x of a){let $=v.get(x.def.key);if(!$)continue;let R=t[x.def.key],K=R?.s??1,z=!!R&&((R.x??0)!==0||(R.y??0)!==0||K!==1);$.classList.toggle("hpChanged",z);let N=$.querySelector(".hpMoved");N&&(N.textContent=K===1?"":`${Math.round(K*100)}%`);let V=k.get(x.def.key);V&&(V.checked=u(x.def))}},L=null,y=(x,$)=>x.box.classList.toggle("hudActive",$||L===x),C=x=>{L=x;for(let $ of a)$.box.classList.toggle("hudActive",$===x)},I=(x,$,R,K)=>{let z=h(x.def.key),N=e.factor||1;z.x=cr((K.x??0)+$/(window.innerWidth*N)*100),z.y=cr((K.y??0)+R/(window.innerHeight*N)*100),b()},_=(x,$,R,K)=>{let z=[0,window.innerWidth/2,window.innerWidth],N=[0,window.innerHeight/2,window.innerHeight];for(let Z of a)Z===x||!Z.drawn||(z.push(Z.drawn.left,Z.drawn.left+Z.drawn.width/2,Z.drawn.right),N.push(Z.drawn.top,Z.drawn.top+Z.drawn.height/2,Z.drawn.bottom));let V=null,de=null;for(let Z of[$.left+R,$.left+R+$.width/2,$.right+R])for(let ge of z){let le=ge-Z;Math.abs(le)<=om&&(V===null||Math.abs(le){z.preventDefault(),C(x),$.setPointerCapture(z.pointerId),$.classList.add("hudDragging"),R={x:z.clientX,y:z.clientY,rect:x.drawn??$.getBoundingClientRect(),from:p(x.def.key)}},$.onpointermove=z=>{if(!R||!$.hasPointerCapture(z.pointerId))return;let[N,V]=_(x,R.rect,z.clientX-R.x,z.clientY-R.y);I(x,N,V,R.from),g()};let K=()=>{R&&(R=null,$.classList.remove("hudDragging"),c[0].style.display="none",c[1].style.display="none",E())};$.onpointerup=K,$.onpointercancel=K,$.onwheel=z=>{z.preventDefault(),C(x);let N=h(x.def.key);N.s=cr(lr((N.s??1)+(z.deltaY<0?.05:-.05),.3,3)),b(),g(),E()}}let H=document.createElement("div");H.style.cssText="position:fixed;top:50%;left:50%;transform:translate(-50%, -50%)",n.append(H);let G=H.attachShadow({mode:"open"});G.innerHTML=Qh;let J=x=>G.querySelector(`#${x}`),B=(x,$)=>{if(x.setting)window.setSetting(x.setting,$);else if(x.clientSetting){let R=x.clientSetting;d.settings.data[R]=$,window.chrome.webview.postMessage(`set-config, ${R}, ${$}`);let K=`toggle${R.charAt(0).toUpperCase()}${R.slice(1)}`;typeof d.settings[K]=="function"&&d.settings[K]($);let z=document.querySelector(`#${R}`);z&&(z.checked=$)}g(),E()},re=J("hpList"),je="";for(let x of a){let{def:$}=x;if($.group!==je){({group:je}=$);let V=document.createElement("div");V.className="hpGroup",V.textContent=je.toUpperCase(),re.append(V)}let R=document.createElement("label");R.className="hpRow";let K=document.createElement("span");if(K.className="hpName",K.textContent=$.name,$.note){let V=document.createElement("span");V.className="hpNote",V.textContent=` ${$.note}`,K.append(V)}let z=document.createElement("span");z.className="hpMoved";let N=document.createElement("span");if(N.className="hpReset",N.textContent="reset",N.title="Put it back where Krunker had it",N.onclick=V=>{V.preventDefault(),delete t[$.key],b(),g(),E()},R.append(K,z,N),$.setting||$.clientSetting){let V=document.createElement("input");V.type="checkbox",V.checked=u($),V.onchange=()=>B($,V.checked),R.append(V),k.set($.key,V)}R.onpointerenter=()=>y(x,!0),R.onpointerleave=()=>y(x,!1),re.append(R),v.set($.key,R)}let be=J("hpPanel"),Ee=J("hpHead"),j=null;Ee.onpointerdown=x=>{let $=H.getBoundingClientRect();H.style.cssText=`position:fixed;left:${Math.round($.left)}px;top:${Math.round($.top)}px`,Ee.setPointerCapture(x.pointerId),j={x:x.clientX-$.left,y:x.clientY-$.top},be.classList.add("hpBusy")},Ee.onpointermove=x=>{j&&(H.style.left=`${Math.round(x.clientX-j.x)}px`,H.style.top=`${Math.round(x.clientY-j.y)}px`)},Ee.onpointerup=()=>{j=null,be.classList.remove("hpBusy")};let X=new AbortController,Y=()=>{X.abort(),n.remove(),o.remove(),document.documentElement.classList.remove("kuteHudEdit"),s.save(t),s.closed()};J("hpDone").onclick=Y,window.addEventListener("resize",()=>{Y(),d.showNotification?.("The window changed size, open the HUD editor again",!1,5)},{signal:X.signal}),J("hpReset").onclick=()=>{for(let x of Object.keys(t))delete t[x];b(),g(),E()},document.addEventListener("keydown",x=>{if(x.key==="Escape"){x.preventDefault(),x.stopPropagation(),Y();return}if(!L||!x.key.startsWith("Arrow"))return;x.preventDefault(),x.stopPropagation();let $=x.shiftKey?10:1,R=(x.key==="ArrowRight"?$:0)-(x.key==="ArrowLeft"?$:0),K=(x.key==="ArrowDown"?$:0)-(x.key==="ArrowUp"?$:0);I(L,R,K,p(L.def.key)),g(),E()},{signal:X.signal,capture:!0}),g(),E()}var om,ar,lr,cr,ml=w(()=>{"use strict";Xh();Zh();F();nr();ir();To();om=6,ar=24,lr=(s,e,t)=>Math.min(t,Math.max(e,s)),cr=s=>Math.round(s*100)/100});var im={};function Bk(){document.querySelector("#settSearch")&&(window.closWind?.(nm),window.showWindow?.(nm))}var dr,sm,rm,Nk,_k,nm,fl=w(()=>{"use strict";F();Ae();dr=document.createElement("div");dr.className="settName";dr.style.cssText="display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;margin-top:10px";sm={Keybinds:localStorage.getItem("kute_Keybinds")==="true"||localStorage.getItem("kute_Keybinds")===null,Sensitivity:localStorage.getItem("kute_Sensitivity")==="true"||localStorage.getItem("kute_Sensitivity")===null,Sound:localStorage.getItem("kute_Sound")==="true"||localStorage.getItem("kute_Sound")===null},rm="";for(let s in sm)rm+=`Import ${s} `;dr.innerHTML=nm;Lk=window.importSettingsPopup,Rk=window.importSettings,sm=1;window.importSettingsPopup=()=>{Lk(),queueMicrotask(()=>{U("#importTxt").after(dr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),Rk(),d.bindShoot(),Pk(),d.kuteIcons?.refresh(),d.autoDetect?.dropUndo(),d.autoDetect?.afterImport()}});var gl={};A(gl,{default:()=>Bk});function Nk(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function im(s){for(let e=0;e{"use strict";Ik=".view-stack-overlay, .modal-overlay";_k=()=>new Promise(s=>{requestAnimationFrame(()=>s())});fl=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(Ik)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Nk(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await im(2),t.style.display=""),await im(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Bk=new fl});var lm,am=w(()=>{lm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} -`});var dm,cm=w(()=>{dm='
      '});var yl={};A(yl,{default:()=>Vk});function gm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Gk[s]??"?"}function Wk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Ok,Fk,um,pm,vl,Dk,qk,wl,hm,mm,Kk,fm,jk,Uk,Gk,kl,Vk,xl=w(()=>{"use strict";am();cm();F();Ok=131,Fk=120,um=32,pm=80,vl=.02,Dk=.35,qk=20,wl=80,hm=3,mm=3e3,Kk=3,fm="kute_keystrokes_speed",jk=120,Uk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Gk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};kl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Kk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(fm,this.typical.toFixed(3))}catch{}},d.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!d.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>d.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=lm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=dm,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Uk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=Wk(t,o);n.textContent=r.length>0?gm(r[0]):"",n.title=r.map(gm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Ok){this.button(0,t);return}if(e===um){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/qk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>vl&&(this.typicalMs=Math.min(this.typicalMs+n,mm),this.typical+=(Math.min(i,this.typical*hm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,wl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(fm))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=mm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,vl)*hm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+jk);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>vl&&l>=t*Dk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},Fk))}},Vk=new kl});var vm,bm=w(()=>{vm='

      Kute Icons

      Tick all
      Done
      '});var $l={};A($l,{default:()=>Jk});function Em(){let s=d.settings.data[Sl];return s&&typeof s=="object"?s:{}}function wm(){return d.hostFeatures?.includes("kute-icons")??!1}function km(s){return Em()[s.id]!==!1}function ym(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function xm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function Sm(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var Xk,Sl,El,Jk,Cl=w(()=>{"use strict";bm();F();Pt();vn();Xk="https://krunker.io/kute-icons/",Sl="kuteIconSlots";El=class{constructor(){this.asking=!1,this.watched=new WeakSet,d.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},d.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Ao){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>oo()).observe(t,{attributes:!0,attributeFilter:["src"]}))}oo()}async onToggle(e){if(oo(),!wm()){e&&d.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Ao.filter(km)),await Sm(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=ym(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>xm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return d.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=vm;let n=m=>o.querySelector(`#${m}`),r=wm(),i=d.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],u=()=>{for(let{slot:m,box:g,note:b}of c){let v=g.checked?ym(m):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>xm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([m]),u()},b.append(k)}},h=(m,g)=>{l=!0;let b={...Em(),[m.id]:g};d.settings.data[Sl]=b,window.chrome.webview.postMessage(`set-config-json ${Sl} ${JSON.stringify(b)}`)};for(let m of Ao){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=Xk+m.file,b.alt="";let v=document.createElement("span");v.textContent=m.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=km(m),E.onchange=async()=>{h(m,E.checked),E.checked&&await this.warnHidden([m]),u()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:m,box:E,note:k})}u(),n("kiAll").onclick=async()=>{let m=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of m)b.checked=!0,h(g,!0);await this.warnHidden(m.map(({slot:g})=>g)),u()};let p=new AbortController,f=()=>{p.abort(),e.remove(),l&&r&&d.settings.data.kuteIcons===!0&&Sm("Your Kute icons changed.")};n("kiDone").onclick=f,e.addEventListener("mousedown",m=>{m.target===e&&f()}),document.addEventListener("keydown",m=>{m.key!=="Escape"||this.asking||(m.stopPropagation(),f())},{signal:p.signal,capture:!0}),document.body.append(e)}},Jk=new El});var Al={};A(Al,{default:()=>Qk});var $m,Cm,Ml,Mm,Zk,Tl,Qk,Ll=w(()=>{"use strict";F();Pt();$m="kute_update_asked",Cm="kute_update_ready",Ml=[.25,.5,.75],Mm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),Zk=s=>`${Math.round(s/1048576)} MB`,Tl=class{constructor(){this.step=0,this.busy=!1,!(d.platform!=="linux"||!d.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&d.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem($m)===e.version)return;this.busy=!0,await Mm(),sessionStorage.setItem($m,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${Zk(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&d.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Ml[this.step];)d.showNotification(`Downloading Kute ${e.version}: ${Math.round(Ml[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(Cm)===e.version)return;await Mm(),sessionStorage.setItem(Cm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},Qk=new Tl});var Am,Tm=w(()=>{Am=`

      CSS Manager

      visibilityHold to peek
      folder_openShow folder
      ×
      One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
      Your CSS
      Click a file to edit it, the circle makes it active
      addNew
      content_pastePaste
      upload_fileImport
      `});var Rm,Lm=w(()=>{Rm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} -`});var Pm={};A(Pm,{askConfirm:()=>Pe,askText:()=>st,formatSize:()=>wo,hostSupportsManagers:()=>Fs,makeDropTarget:()=>ot,openManagerPopup:()=>vo,readBase64:()=>Pl});function ot(s,e){Rl.set(s,e)}function sy(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=oy)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function vo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let u=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||u()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&u()});let h=i.querySelector("[data-error]"),p=0,f=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},m=null,g=v=>{m!==v&&(m?.classList.remove("dropHover"),m=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Rl.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Rl.get(k);!E||!v.dataTransfer||sy(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>f(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",u),document.body.append(n),{shadow:i,close:u,signal:l,showError:f}}function st(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      + `;dr.innerHTML=rm;Nk=window.importSettingsPopup,_k=window.importSettings,nm=1;window.importSettingsPopup=()=>{Nk(),queueMicrotask(()=>{U("#importTxt").after(dr)})};window.importSettings=()=>{let s=U("#importTxt"),e=JSON.parse(s.value);localStorage.getItem("kute_Sensitivity")==="false"&&(e.sensitivityX=localStorage.getItem("kro_setngss_sensitivityX"),e.sensitivityY=localStorage.getItem("kro_setngss_sensitivityY"),e.aimSensitivityX=localStorage.getItem("kro_setngss_aimSensitivityX"),e.aimSensitivityY=localStorage.getItem("kro_setngss_aimSensitivityY")),localStorage.getItem("kute_Sound")==="false"&&(e.sound=localStorage.getItem("kro_setngss_sound"),e.ambientVolume=localStorage.getItem("kro_setngss_ambientVolume"),e.dialogueVolume=localStorage.getItem("kro_setngss_dialogueVolume"),e.micVolume=localStorage.getItem("kro_setngss_micVolume"),e.voiceVolume=localStorage.getItem("kro_setngss_voiceVolume"),e.voiceDistance=localStorage.getItem("kro_setngss_voiceDistance"),e.gunsVolume=localStorage.getItem("kro_setngss_gunsVolume"),e.playerVolume=localStorage.getItem("kro_setngss_playerVolume"),e.skinVolume=localStorage.getItem("kro_setngss_skinVolume"),e.uiVolume=localStorage.getItem("kro_setngss_uiVolume"),e.assetVolume=localStorage.getItem("kro_setngss_assetVolume")),localStorage.getItem("kute_Keybinds")==="false"&&delete e.controls,s.value=JSON.stringify(e),_k(),d.bindShoot(),Bk(),d.kuteIcons?.refresh(),d.autoDetect?.dropUndo(),d.autoDetect?.afterImport()}});var bl={};A(bl,{default:()=>Fk});function Hk(s){let e=s.nextElementSibling;return e instanceof HTMLElement&&e.matches(".market-grid-sentinel")?e:null}async function am(s){for(let e=0;e{"use strict";zk=".view-stack-overlay, .modal-overlay";Ok=()=>new Promise(s=>{requestAnimationFrame(()=>s())});gl=class{constructor(){this.watched=new WeakSet,this.popupClickAt=-1/0,this.lastTop=0,this.lastHeight=0,this.restore=null,this.onWheel=()=>this.finish(!1),document.addEventListener("scroll",e=>this.onScroll(e),{capture:!0,passive:!0}),document.addEventListener("click",e=>{e.target instanceof Element&&e.target.closest(zk)&&(this.popupClickAt=performance.now())},{capture:!0,passive:!0})}onScroll(e){let t=e.target;if(!(t instanceof HTMLElement))return;if(this.restore){t===this.restore.scroller&&t.scrollTop!==this.restore.top&&(t.scrollTop=this.restore.top);return}let o=t.querySelector(":scope > .market-grid");o instanceof HTMLElement&&(this.watch(t,o),this.lastTop=t.scrollTop,this.lastHeight=o.offsetHeight)}watch(e,t){if(this.watched.has(t))return;this.watched.add(t);let o=t.children.length;new MutationObserver(n=>{let r=n.reduce((l,c)=>l+c.removedNodes.length,0),i=o;if(o=t.children.length,this.restore?.grid===t){o>i&&this.pageArrived();return}i>0&&r>=i&&this.lastTop>e.clientHeight&&performance.now()-this.popupClickAt<5e3&&this.start(e,t,i,n.flatMap(l=>[...l.removedNodes]))}).observe(t,{childList:!0})}start(e,t,o,n){let r=document.createElement("div");r.className=t.className,r.style.cssText=t.style.cssText,r.append(...n),this.restore={scroller:e,grid:t,sentinels:new Set,top:this.lastTop,count:o,until:performance.now()+1e4,pageTimer:0,picture:r},t.style.minHeight=`${this.lastHeight}px`,t.style.alignContent="start",Object.assign(r.style,{position:"absolute",top:`${t.offsetTop}px`,left:`${t.offsetLeft}px`,width:`${t.offsetWidth}px`,margin:"0",zIndex:"1",pointerEvents:"none"}),e.append(r),e.style.overflowAnchor="none",e.scrollTop=this.lastTop,e.addEventListener("wheel",this.onWheel,{passive:!0}),this.waitForPage(),this.blink(this.restore).catch(i=>console.error("[kute] inventory scroll:",i))}pageArrived(){let{restore:e}=this;e&&(e.grid.children.length>=e.count-1||performance.now()>e.until?this.finish(!0):this.waitForPage())}waitForPage(){let{restore:e}=this;e&&(clearTimeout(e.pageTimer),e.pageTimer=window.setTimeout(()=>this.finish(!0),1500))}async blink(e){for(;this.restore===e;){let t=Hk(e.grid);t&&(e.sentinels.add(t),t.style.position="sticky",t.style.bottom="0",t.style.display="none",await am(2),t.style.display=""),await am(2)}}finish(e){let{restore:t}=this;if(t){this.restore=null,clearTimeout(t.pageTimer),t.scroller.removeEventListener("wheel",this.onWheel),t.picture.remove(),t.grid.style.minHeight="",t.grid.style.alignContent="",t.scroller.style.overflowAnchor="";for(let o of t.sentinels)o.style.position="",o.style.bottom="",o.style.display="";e&&(t.scroller.scrollTop=t.top),this.lastTop=t.scroller.scrollTop,this.lastHeight=t.grid.offsetHeight}}},Fk=new gl});var cm,lm=w(()=>{cm=`#kuteKeystrokes{position:absolute;left:463px;bottom:23px;z-index:10;display:flex;align-items:center;gap:12px;box-sizing:border-box;width:190px;height:82px;padding:5px 10px;border:1px solid rgba(53,224,232,.7);border-radius:8px;background:#0a1416e0;box-shadow:0 4px 18px #00000059;color:#cfeff1;font-family:Arial,sans-serif;font-weight:700;pointer-events:none}#kuteKeystrokesKeys{display:grid;grid-template-columns:repeat(4,24px);grid-template-rows:repeat(3,20px);gap:4px}.kuteKey{display:flex;justify-content:center;align-items:center;overflow:hidden;border:1px solid rgba(53,224,232,.35);border-radius:4px;background:#35e0e814;font-size:10px;white-space:nowrap}.kuteKey.on,#kuteMouse>.on,#kuteWheel>.on{border-color:#35e0e8;background:#35e0e8;color:#0a1416;box-shadow:0 0 8px #35e0e8cc}#kuteKeyMelee{grid-area:1 / 1}#kuteKeyForward{grid-area:1 / 2}#kuteKeySwap{grid-area:1 / 3}#kuteKeyReload{grid-area:1 / 4}#kuteKeyLeft{grid-area:2 / 1}#kuteKeyBack{grid-area:2 / 2}#kuteKeyRight{grid-area:2 / 3}#kuteKeyCrouch{grid-area:3 / 1 / 4 / 3}#kuteKeyJump{grid-area:3 / 3 / 4 / 5}#kuteMouseBox{position:relative;padding:5px}.kuteMove{--arc: rgba(53, 224, 232, .14);position:absolute;inset:0;box-sizing:border-box;border:2px solid transparent;border-radius:24px 24px 19px 19px}.kuteMove.on{--arc: rgba(53, 224, 232, .6)}.kuteMove.fast{--arc: #35e0e8}#kuteMoveLeft{border-left-color:var(--arc)}#kuteMoveRight{border-right-color:var(--arc)}#kuteMoveUp{border-top-color:var(--arc)}#kuteMoveDown{border-bottom-color:var(--arc)}#kuteMouse{position:relative;width:38px;height:58px;box-sizing:border-box;border:1px solid rgba(53,224,232,.35);border-radius:19px 19px 14px 14px;overflow:hidden}#kuteMouseLeft,#kuteMouseRight{position:absolute;top:0;width:50%;height:45%;border-bottom:1px solid rgba(53,224,232,.35);box-sizing:border-box;background:#35e0e814}#kuteMouseLeft{left:0}#kuteMouseRight{right:0}#kuteMouseSplit{position:absolute;top:0;left:calc(50% - .5px);width:1px;height:45%;background:#35e0e859}#kuteWheel{position:absolute;top:6px;left:50%;z-index:1;display:flex;flex-direction:column;box-sizing:border-box;width:10px;height:18px;margin-left:-5px;overflow:hidden;border:1px solid rgba(53,224,232,.5);border-radius:5px;background:#0a1416}#kuteWheel.on{border-color:#35e0e8;background:#35e0e8;box-shadow:0 0 8px #35e0e8cc}#kuteWheelUp,#kuteWheelDown{flex:1 1 0}#kuteWheelUp{border-bottom:1px solid rgba(53,224,232,.35)} +`});var um,dm=w(()=>{um='
      '});var xl={};A(xl,{default:()=>Zk});function bm(s){return s>=48&&s<=57||s>=65&&s<=90?String.fromCharCode(s):s>=96&&s<=105?`N${s-96}`:s>=112&&s<=123?`F${s-111}`:Xk[s]??"?"}function Jk(s,e){let t=[],o=[[`cont_${s}_alt`,-1],[`cont_${s}`,e]];for(let[n,r]of o){let i=null;try{i=window.localStorage.getItem(n)}catch{i=null}let a=i===null?r:Number(i);a>0&&a<1e4&&t.push(a)}return t}var Kk,jk,pm,hm,wl,Uk,Gk,kl,mm,fm,Wk,gm,Vk,Yk,Xk,yl,Zk,Sl=w(()=>{"use strict";lm();dm();F();Kk=131,jk=120,pm=32,hm=80,wl=.02,Uk=.35,Gk=20,kl=80,mm=3,fm=3e3,Wk=3,gm="kute_keystrokes_speed",Vk=120,Yk=[["kuteKeyForward","0",87],["kuteKeyBack","1",83],["kuteKeyLeft","2",65],["kuteKeyRight","3",68],["kuteKeyJump","jumpKey",32],["kuteKeyCrouch","crouchKey",16],["kuteKeyReload","reloadKey",82],["kuteKeyMelee","meleeKey",81],["kuteKeySwap","swapKey",69]],Xk={8:"BKSP",9:"TAB",13:"ENT",16:"SHIFT",17:"CTRL",18:"ALT",20:"CAPS",32:"SPACE",37:"\u2190",38:"\u2191",39:"\u2192",40:"\u2193",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};yl=class{constructor(){this.widget=null,this.byCode=new Map,this.wheelTimers=new Map,this.rampWheelAt=-1/0,this.spaceDownAt=-1/0,this.spaceIgnored=!1,this.arcs=[],this.moveX=0,this.moveY=0,this.lastMove=-1/0,this.moveTimer=0,this.typical=Wk,this.typicalMs=0,this.fastUntil=[0,0,0,0],this.onKeyDown=e=>this.key(e.keyCode,!0),this.onKeyUp=e=>this.key(e.keyCode,!1),this.onMouseDown=e=>this.button(e.button,!0),this.onMouseUp=e=>this.button(e.button,!1),this.onWheel=e=>this.wheel(e.deltaY<0),this.onMouseMove=e=>this.move(e),this.onMoveIdle=()=>{this.moveTimer=0;let e=performance.now()-this.lastMove;if(e{let{data:t}=e;typeof t?.wheel=="number"&&t.wheel!==0?this.wheel(t.wheel>0):typeof t?.rampWheel=="number"&&t.rampWheel!==0&&this.rampWheel(t.rampWheel>0)},this.releaseAll=()=>{for(let e of this.widget?.querySelectorAll(".on")??[])e.classList.remove("on");this.moveX=0,this.moveY=0,this.fastUntil.fill(0),this.drawMove()},this.onPointerLockChange=()=>{if(document.pointerLockElement){this.readBinds();return}this.releaseAll();try{window.localStorage.setItem(gm,this.typical.toFixed(3))}catch{}},d.settings.toggleKeystrokes=e=>this.toggle(e),this.toggle(!!d.settings.data.keystrokes)}toggle(e){if(queueMicrotask(()=>d.hudEditor?.apply()),!e){this.remove();return}if(this.widget)return;let t=document.createElement("style");t.id="kuteKeystrokesCSS",t.textContent=cm,document.head.append(t),this.widget=document.createElement("div"),this.widget.id="kuteKeystrokes",this.widget.innerHTML=um,(document.querySelector("#uiBase")??document.body).append(this.widget),this.readBinds(),this.loadTypical();let{widget:o}=this,n=[["kuteMoveLeft",-1,0],["kuteMoveRight",1,0],["kuteMoveUp",0,-1],["kuteMoveDown",0,1]];this.arcs=n.map(([r,i,a])=>[o.querySelector(`#${r}`),i,a]),window.addEventListener("keydown",this.onKeyDown,!0),window.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("mousedown",this.onMouseDown,!0),window.addEventListener("mouseup",this.onMouseUp,!0),window.addEventListener("mousemove",this.onMouseMove,{capture:!0,passive:!0}),window.addEventListener("wheel",this.onWheel,{capture:!0,passive:!0}),window.addEventListener("blur",this.releaseAll),document.addEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.addEventListener("message",this.onHostMessage)}remove(){window.removeEventListener("keydown",this.onKeyDown,!0),window.removeEventListener("keyup",this.onKeyUp,!0),window.removeEventListener("mousedown",this.onMouseDown,!0),window.removeEventListener("mouseup",this.onMouseUp,!0),window.removeEventListener("mousemove",this.onMouseMove,!0),window.removeEventListener("wheel",this.onWheel,!0),window.removeEventListener("blur",this.releaseAll),document.removeEventListener("pointerlockchange",this.onPointerLockChange),window.chrome.webview.removeEventListener("message",this.onHostMessage);for(let e of this.wheelTimers.values())clearTimeout(e);this.wheelTimers.clear(),clearTimeout(this.moveTimer),this.moveTimer=0,this.arcs=[],this.widget?.remove(),this.widget=null,this.byCode.clear(),document.querySelector("#kuteKeystrokesCSS")?.remove()}readBinds(){if(this.widget){this.byCode.clear();for(let[e,t,o]of Yk){let n=this.widget.querySelector(`#${e}`);if(!n)continue;let r=Jk(t,o);n.textContent=r.length>0?bm(r[0]):"",n.title=r.map(bm).join(" / ");for(let i of r){let a=this.byCode.get(i)??[];a.push(n),this.byCode.set(i,a)}}}}key(e,t){if(e===Kk){this.button(0,t);return}if(e===pm){t&&(this.spaceDownAt=performance.now(),this.spaceIgnored=this.spaceDownAt-this.rampWheelAt=100,n=Math.min(t-this.lastMove,100);if(this.lastMove=t,!(n>0))return;let r=Math.exp(-n/Gk);this.moveX=this.moveX*r+e.movementX/n*(1-r),this.moveY=this.moveY*r+e.movementY/n*(1-r);let i=Math.hypot(this.moveX,this.moveY);!o&&i>wl&&(this.typicalMs=Math.min(this.typicalMs+n,fm),this.typical+=(Math.min(i,this.typical*mm)-this.typical)*(n/this.typicalMs)),this.drawMove(t),this.moveTimer||(this.moveTimer=window.setTimeout(this.onMoveIdle,kl))}loadTypical(){let e=NaN;try{e=Number(window.localStorage.getItem(gm))}catch{e=NaN}e>0&&(this.typical=e,this.typicalMs=fm)}drawMove(e=performance.now()){let t=Math.hypot(this.moveX,this.moveY),o=Math.max(this.typical,wl)*mm;this.arcs.forEach(([n,r,i],a)=>{let l=this.moveX*r+this.moveY*i;l>o&&(this.fastUntil[a]=e+Vk);let c="kuteMove";this.fastUntil[a]>e?c="kuteMove on fast":t>wl&&l>=t*Uk&&(c="kuteMove on"),n.className!==c&&(n.className=c)})}rampWheel(e){if(this.rampWheelAt=performance.now(),this.rampWheelAt-this.spaceDownAt{this.widget?.querySelector(`#${t}`)?.classList.remove("on"),this.wheelTimers.delete(t)},jk))}},Zk=new yl});var wm,vm=w(()=>{wm='

      Kute Icons

      Tick all
      Done
      '});var Cl={};A(Cl,{default:()=>ty});function $m(){let s=d.settings.data[El];return s&&typeof s=="object"?s:{}}function km(){return d.hostFeatures?.includes("kute-icons")??!1}function ym(s){return $m()[s.id]!==!1}function xm(s){return s.hiddenBy.filter(e=>{let t=null;try{t=localStorage.getItem(`kro_setngss_${e.id}`)}catch{return!1}return t===null?!1:e.kind==="checkbox"?t==="false":Number(t)===0})}function Sm(s){return s.kind==="checkbox"?`${s.name} is off`:`${s.name} is 0`}async function Em(s){await Ce({title:"Reload the game?",paragraphs:[s,"The game keeps the images it already loaded, so this shows after a reload. Nothing else changes, and you can do it later."],stay:"Later",leave:"Reload now"})&&window.chrome.webview.postMessage("hard-reload")}var ey,El,$l,ty,Ml=w(()=>{"use strict";vm();F();Pt();vn();ey="https://krunker.io/kute-icons/",El="kuteIconSlots";$l=class{constructor(){this.asking=!1,this.watched=new WeakSet,d.kuteIcons={customize:()=>this.customize(),refresh:()=>this.refresh()},d.settings.toggleKuteIcons=e=>this.onToggle(!!e),this.refresh(),document.addEventListener("pointerlockchange",()=>{document.pointerLockElement&&setTimeout(()=>this.refresh(),1500)})}refresh(){for(let e of Ao){let t=e.element?document.getElementById(e.element):null;!t||this.watched.has(t)||(this.watched.add(t),new MutationObserver(()=>oo()).observe(t,{attributes:!0,attributeFilter:["src"]}))}oo()}async onToggle(e){if(oo(),!km()){e&&d.showNotification("Kute icons need a newer Kute, update the client",!1,4);return}e&&await this.warnHidden(Ao.filter(ym)),await Em(e?"Kute icons are on.":"Kute icons are off, your own icons are back.")}async warnHidden(e){let t=new Map,o=[];for(let r of e){let i=xm(r);if(i.length!==0){for(let a of i)t.set(a.id,a);o.push(`${r.name}: ${i.map(a=>Sm(a)).join(", ")}`)}}if(o.length===0||(this.asking=!0,!await Ce({title:"Hidden by your Krunker settings",paragraphs:[o.length===1?"This Kute icon will not show:":"These Kute icons will not show:",...o,"Switch those Krunker settings on for you?"],stay:"Leave them",leave:"Switch on"}).finally(()=>{this.asking=!1})))return!1;for(let r of t.values())window.setSetting(r.id,r.kind==="checkbox"?!0:"1");return d.showNotification("Switched on in your Krunker settings",!1,3),!0}customize(){let e=document.createElement("div");e.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let t=document.createElement("div");e.append(t);let o=t.attachShadow({mode:"open"});o.innerHTML=wm;let n=m=>o.querySelector(`#${m}`),r=km(),i=d.settings.data.kuteIcons===!0,a="Ticked icons show Kute's version. Your Krunker settings stay as they are.";i||(a="Use Kute Icons is off, so none of these show yet."),r||(a="This needs a newer Kute. Update the client to use Kute icons."),n("kiHint").textContent=a;let l=!1,c=[],u=()=>{for(let{slot:m,box:g,note:b}of c){let v=g.checked?xm(m):[];if(b.replaceChildren(),v.length===0)continue;b.append(`Hidden: ${v.map(E=>Sm(E)).join(", ")} `);let k=document.createElement("span");k.className="kiShow",k.textContent="Show it",k.onclick=async E=>{E.preventDefault(),E.stopPropagation(),await this.warnHidden([m]),u()},b.append(k)}},h=(m,g)=>{l=!0;let b={...$m(),[m.id]:g};d.settings.data[El]=b,window.chrome.webview.postMessage(`set-config-json ${El} ${JSON.stringify(b)}`)};for(let m of Ao){let g=document.createElement("label");g.className="kiRow";let b=document.createElement("img");b.src=ey+m.file,b.alt="";let v=document.createElement("span");v.textContent=m.name;let k=document.createElement("span");k.className="kiHidden",v.append(k);let E=document.createElement("input");E.type="checkbox",E.checked=ym(m),E.onchange=async()=>{h(m,E.checked),E.checked&&await this.warnHidden([m]),u()},g.append(b,v,E),n("kiRows").append(g),c.push({slot:m,box:E,note:k})}u(),n("kiAll").onclick=async()=>{let m=c.filter(({box:g})=>!g.checked);for(let{slot:g,box:b}of m)b.checked=!0,h(g,!0);await this.warnHidden(m.map(({slot:g})=>g)),u()};let p=new AbortController,f=()=>{p.abort(),e.remove(),l&&r&&d.settings.data.kuteIcons===!0&&Em("Your Kute icons changed.")};n("kiDone").onclick=f,e.addEventListener("mousedown",m=>{m.target===e&&f()}),document.addEventListener("keydown",m=>{m.key!=="Escape"||this.asking||(m.stopPropagation(),f())},{signal:p.signal,capture:!0}),document.body.append(e)}},ty=new $l});var Ll={};A(Ll,{default:()=>sy});var Cm,Mm,Tl,Tm,oy,Al,sy,Rl=w(()=>{"use strict";F();Pt();Cm="kute_update_asked",Mm="kute_update_ready",Tl=[.25,.5,.75],Tm=()=>new Promise(s=>{let e=()=>{document.pointerLockElement?setTimeout(e,2e3):s()};e()}),oy=s=>`${Math.round(s/1048576)} MB`,Al=class{constructor(){this.step=0,this.busy=!1,!(d.platform!=="linux"||!d.hostFeatures?.includes("appimage-update"))&&(window.chrome.webview.addEventListener("message",e=>{let t=e.data?.update;t&&typeof t=="object"&&this.receive(t).catch(()=>{})}),window.chrome.webview.postMessage("update-state"))}async receive(e){e.stage==="offer"?await this.offer(e):e.stage==="downloading"?this.progress(e):e.stage==="ready"?await this.ready(e):e.stage==="failed"&&d.showNotification(`The update to Kute ${e.version} failed: ${e.error??"unknown error"}`,!1,8)}async offer(e){if(this.busy||sessionStorage.getItem(Cm)===e.version)return;this.busy=!0,await Tm(),sessionStorage.setItem(Cm,e.version);let t=e.install===!0,o=await Ce({title:`Kute ${e.version} is out`,paragraphs:t?[`You have ${e.current}. The update${e.size?` (${oy(e.size)})`:""} downloads while you play.`,"It replaces your Kute AppImage and starts the next time you open Kute."]:[`You have ${e.current}.`,"This copy of Kute does not run as an AppImage and cannot update itself. The download page has the new version."],stay:"Later",leave:t?"Update":"Open download page"});this.busy=!1,o&&(window.chrome.webview.postMessage(t?"update-install":"update-page"),t&&d.showNotification(`Downloading Kute ${e.version}`,!1,4))}progress(e){if(!e.total||!e.done)return;let t=e.done/e.total;for(;this.step=Tl[this.step];)d.showNotification(`Downloading Kute ${e.version}: ${Math.round(Tl[this.step]*100)} %`,!1,3),this.step++}async ready(e){if(sessionStorage.getItem(Mm)===e.version)return;await Tm(),sessionStorage.setItem(Mm,e.version),await Ce({title:`Kute ${e.version} is ready`,paragraphs:["It starts the next time you open Kute. Restart now to use it right away."],stay:"Later",leave:"Restart now"})&&window.chrome.webview.postMessage("update-restart")}},sy=new Al});var Lm,Am=w(()=>{Lm=`

      CSS Manager

      visibilityHold to peek
      folder_openShow folder
      storefrontCSS Store
      ×
      One file is active at a time and loads after all of Krunker's styles, so a rule with the same selector wins. Krunker's inline styles and its own !important rules still need !important here. Files live in Documents\\kute\\css.
      CSS Store
      arrow_backBack
      Your CSS
      Click a file to edit it, the circle makes it active
      addNew
      content_pastePaste
      upload_fileImport
      `});var Pm,Rm=w(()=>{Pm=`:host{--accent: #35e0e8;--bg: #1e1e1e;--panel: #252525;--line: #333;--muted: #999;--ok: #5ce05a;--warn: #ffb74d;--bad: #eb5656}.managerPopup{position:relative;box-sizing:border-box;display:flex;flex-direction:column;width:min(1020px,94vw);height:min(760px,90vh);background:var(--bg);color:#fff;border-radius:14px;box-shadow:0 8px 48px #000c;font-family:Consolas,monospace;font-size:14px;overflow:hidden}.managerHeader{display:flex;align-items:center;gap:.6em;padding:1em 1.2em .8em 1.4em;border-bottom:1px solid var(--line)}.managerTitle{margin:0 auto 0 0;font-size:1.6em;letter-spacing:1px;color:var(--accent)}.managerClose{margin-left:.4em;font-size:1.6em;line-height:1;color:var(--muted);cursor:pointer}.managerClose:hover{color:#fff}.managerHint{padding:.7em 1.4em;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}.managerHint code{padding:.05em .35em;border-radius:4px;background:#181818;color:var(--accent)}.managerBody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1em 1.4em}.managerError,.managerNotice{margin:.8em 1.4em 0;padding:.6em .9em;border-radius:8px;white-space:pre-wrap;line-height:1.5}.managerError{background:#4a1d1d;color:#ffb4b4}.managerNotice{display:flex;align-items:center;gap:1em;background:#173a52;color:#cfe8ff}.managerNotice span{flex:1}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;gap:.4em;padding:.45em .9em;border-radius:7px;background:#2d2d2d;color:#fff;cursor:pointer;user-select:none;white-space:nowrap}.btn:hover{background:#383838;color:var(--accent)}.btn.primary{background:#1b5e63}.btn.primary:hover{background:#23777d;color:#fff}.btn.small{padding:.25em .55em;font-size:.92em}.iconBtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--muted);cursor:pointer;user-select:none}.iconBtn:hover{background:#333;color:#fff}.iconBtn.danger:hover{color:var(--bad)}.mi{font-family:Material Icons;font-weight:400;font-style:normal;font-size:18px;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;font-feature-settings:"liga"}.group{margin-bottom:1.2em;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.groupHead{display:flex;align-items:center;gap:.7em;padding:.7em .9em;border-bottom:1px solid var(--line)}.groupTitle{font-size:1.15em;color:#fff}.groupRuns{margin-right:auto;color:var(--muted);font-size:.9em}.empty{padding:.9em;color:var(--muted)}.dropZone{margin:.7em;padding:.8em;border:2px dashed #444;border-radius:8px;color:#777;text-align:center}.dropHover{border-color:var(--accent)!important;background:#35e0e814!important;color:var(--accent)}.toggle{position:relative;flex:0 0 auto;width:38px;height:20px;border-radius:10px;background:#444;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#ddd;transition:left .15s}.toggle.on{background:#1b8f96}.toggle.on:after{left:21px;background:#fff}.state{flex:0 0 auto;padding:.1em .5em;border-radius:5px;font-size:.85em;background:#333;color:var(--muted)}.state.ok{background:#1f3d1f;color:var(--ok)}.state.warn{background:#3d321f;color:var(--warn)}.state.bad{background:#3d1f1f;color:var(--bad);cursor:help}.askBackdrop{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0009}.askBox{width:min(480px,90%);padding:1.3em 1.4em;border-radius:12px;background:#262626;box-shadow:0 8px 32px #000c}.askTitle{margin-bottom:.8em;font-size:1.1em;color:var(--accent)}.askInput,.field{box-sizing:border-box;width:100%;padding:.5em .7em;border:1px solid #444;border-radius:6px;background:#181818;color:#fff;font:inherit;outline:none}.askInput:focus,.field:focus{border-color:var(--accent)}.askHint{margin-top:.5em;color:var(--muted);font-size:.9em;line-height:1.4}.askActions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1em}.editor{position:relative;display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-radius:8px;background:#181818;overflow:hidden;font-family:Consolas,Cascadia Mono,monospace;font-size:13.5px;line-height:1.5;tab-size:4}.editorGutter{flex:0 0 auto;padding:.6em .6em .6em .8em;overflow:hidden;color:#555;text-align:right;white-space:pre;user-select:none;border-right:1px solid #2a2a2a}.editorCode{position:relative;flex:1 1 auto;min-width:0}.editorCode pre,.editorCode textarea{position:absolute;inset:0;box-sizing:border-box;margin:0;padding:.6em .8em;border:0;font:inherit;line-height:inherit;tab-size:inherit;white-space:pre;overflow-wrap:normal;letter-spacing:normal}.editorCode pre{overflow:hidden;color:#d4d4d4;pointer-events:none}.editorCode textarea{resize:none;overflow:auto;background:transparent;color:transparent;caret-color:#fff;outline:none}.editorCode textarea::selection{background:#3578c873;color:transparent}.tk-c{color:#6a9955}.tk-s{color:#ce9178}.tk-n{color:#b5cea8}.tk-k{color:#c586c0}.tk-l{color:#569cd6}.tk-f{color:#dcdcaa}.tk-p{color:#9cdcfe}.editorBar{display:flex;align-items:center;gap:.6em;margin-bottom:.7em}.editorFile{margin-right:auto;color:#fff;font-size:1.05em}.editorFile .dirty{color:var(--warn)}.editorView{display:flex;flex-direction:column;height:100%}.editorKeys{margin-top:.5em;color:#666;font-size:.85em} +`});var Im={};A(Im,{askConfirm:()=>Pe,askText:()=>nt,formatSize:()=>wo,hostSupportsManagers:()=>Fs,makeDropTarget:()=>st,openManagerPopup:()=>vo,readBase64:()=>Il});function st(s,e){Pl.set(s,e)}function ay(s){let e=[...s.items].filter(n=>n.kind==="file").map(n=>n.webkitGetAsEntry()).filter(n=>n!==null);if(!e.length)return Promise.resolve([...s.files].map(n=>({path:n.name,file:n})));let t=[],o=async n=>{if(t.length>=iy)return;if(n.isFile){let i=await new Promise((a,l)=>n.file(a,l));t.push({path:n.fullPath.replace(/^\/+/,""),file:i});return}let r=n.createReader();for(;;){let i=await new Promise((a,l)=>r.readEntries(a,l));if(!i.length)break;for(let a of i)await o(a)}};return Promise.all(e.map(o)).then(()=>t)}function vo(s,{onMessage:e,canClose:t,onEscape:o}){let n=document.createElement("div");n.style.cssText="position:fixed;inset:0;z-index:2147483000;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.75)";let r=document.createElement("div");n.append(r);let i=r.attachShadow({mode:"open"});i.innerHTML=`${s}`;let a=new AbortController,{signal:l}=a,c=v=>{v.data&&typeof v.data=="object"&&e(v.data)};window.chrome.webview.addEventListener("message",c);let u=()=>{l.aborted||t&&!t()||(a.abort(),window.chrome.webview.removeEventListener("message",c),n.remove())};for(let v of["keydown","keyup","keypress"])i.addEventListener(v,k=>k.stopPropagation());document.addEventListener("keydown",v=>{if(v.key!=="Escape")return;v.stopPropagation();let k=i.querySelector(".askBackdrop [data-cancel]");k?k.click():o?.()||u()},{signal:l,capture:!0}),n.addEventListener("mousedown",v=>{v.target===n&&u()});let h=i.querySelector("[data-error]"),p=0,f=v=>{h&&(h.textContent=v,h.hidden=!1,clearTimeout(p),p=setTimeout(()=>{h.hidden=!0},8e3))},m=null,g=v=>{m!==v&&(m?.classList.remove("dropHover"),m=v,v?.classList.add("dropHover"))},b=v=>{for(let k of v.composedPath()){if(k===n)break;if(k instanceof HTMLElement&&Pl.has(k))return k}return null};return n.addEventListener("dragover",v=>{v.preventDefault();let k=b(v);g(k),v.dataTransfer&&(v.dataTransfer.dropEffect=k?"copy":"none")}),n.addEventListener("dragleave",v=>{v.relatedTarget||g(null)}),n.addEventListener("drop",v=>{v.preventDefault();let k=b(v);g(null);let E=k&&Pl.get(k);!E||!v.dataTransfer||ay(v.dataTransfer).then(L=>{L.length&&E(L)}).catch(L=>f(`Could not read the dropped files: ${L?.message??L}`))}),i.querySelector("[data-close]")?.addEventListener("click",u),document.body.append(n),{shadow:i,close:u,signal:l,showError:f}}function nt(s,e,t,o=""){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      Cancel
      OK
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=o;let r=n.querySelector(".askInput");r.value=t,(s.querySelector(".managerPopup")??s).append(n),r.focus();let a=t.lastIndexOf(".");return r.setSelectionRange(t.lastIndexOf("/")+1,a>0?a:t.length),new Promise(l=>{let c=u=>{n.remove(),l(u)};n.querySelector("[data-ok]").onclick=()=>c(r.value.trim()||null),n.querySelector("[data-cancel]").onclick=()=>c(null),r.onkeydown=u=>{u.key==="Enter"&&c(r.value.trim()||null)}})}function Pe(s,e,t,o){let n=document.createElement("div");n.className="askBackdrop",n.innerHTML=`
      -
      Cancel
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Fs,Rl,oy,Pl,wo,Ds=w(()=>{"use strict";F();Lm();Fs=()=>d.hostFeatures?.includes("script-manager")??!1,Rl=new WeakMap,oy=5e3;Pl=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});wo=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var Bl={};A(Bl,{open:()=>ly});var ny,ry,Il,iy,Nl,nt,_l,ay,ly,zl=w(()=>{"use strict";F();Tm();wn();Ds();Do();ny=120,ry=4*1024*1024,Il="custom.css",iy=()=>d.hostFeatures?.includes("css-manager")??!1,Nl=s=>/\.css$/i.test(s)?s:`${s}.css`,nt=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),_l=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0}open(){if(this.popup)return;if(!os()){d.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!iy(),this.popup=vo(Am,{onMessage:i=>this.receive(i),canClose:()=>this.canClose()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Rt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1}),this.$("#ccFolder").onclick=()=>nt("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=d.settings.data.customCss!==!1;let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",nt("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},ot(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",nt("list")}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Il,this.showEditor(Il,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Il);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Rt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Rt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=wo(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,u,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=f=>{f.stopPropagation(),u()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,nt("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=fo(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),ny)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
      Pick a file below to edit it.
      '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Rt.apply(e.getValue()):Rt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Pe(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):nt("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Rt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,nt("activate",{name:e}))}async create(){if(!this.popup)return;let e=await st(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=Nl(e),nt("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await st(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=Nl(t),nt("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>ry){t.push(o.name);continue}nt("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await st(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=Nl(t);o!==e&&(this.renaming={from:e,to:o},nt("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||nt("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},ay=new _l,ly=()=>ay.open()});var Im={};A(Im,{hostWatchesSwapper:()=>ur,reloadStylesheets:()=>qs});var ur,qs,pr=w(()=>{"use strict";F();ur=()=>d.hostFeatures?.includes("swapper-watch")??!1,qs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var _m,Nm=w(()=>{_m='

      Userscripts

      Userscripts off
      folder_openOpen scripts folder
      ×
      Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
      '});var Ol={};A(Ol,{open:()=>hy});var dy,uy,oe,Ks,Hl,py,hy,Fl=w(()=>{"use strict";F();Nm();ts();Ds();Do();dy=4*1024*1024,uy=`// ==UserScript== +
      Cancel
      `,n.querySelector(".askTitle").textContent=e,n.querySelector(".askHint").textContent=t;let r=n.querySelector("[data-ok]");return r.textContent=o,(s.querySelector(".managerPopup")??s).append(n),new Promise(i=>{let a=l=>{n.remove(),i(l)};r.onclick=()=>a(!0),n.querySelector("[data-cancel]").onclick=()=>a(!1)})}var Fs,Pl,iy,Il,wo,Ds=w(()=>{"use strict";F();Rm();Fs=()=>d.hostFeatures?.includes("script-manager")??!1,Pl=new WeakMap,iy=5e3;Il=s=>new Promise((e,t)=>{let o=new FileReader;o.onload=()=>e(String(o.result).slice(String(o.result).indexOf(",")+1)),o.onerror=()=>t(o.error),o.readAsDataURL(s)});wo=s=>s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`});var zl={};A(zl,{open:()=>hy});var ly,Nm,Nl,cy,ur,dy,_m,Bm,_l,uy,Ge,Bl,py,hy,Hl=w(()=>{"use strict";F();Am();wn();Ds();Do();ly=120,Nm=4*1024*1024,Nl="custom.css",cy=()=>d.hostFeatures?.includes("css-manager")??!1,ur=s=>/\.css$/i.test(s)?s:`${s}.css`,dy="https://raw.githubusercontent.com/kute-client/kute-css-store/main/",_m=8e3,Bm=s=>typeof s=="string"&&s.split("/").every(e=>e!==""&&e!=="."&&e!==".."),_l=s=>dy+s.split("/").map(encodeURIComponent).join("/"),uy=s=>{let e=typeof s?.name=="string"?s.name.replace(/[\\/:*?"<>|]/g,"").trim():"";return!e||!Bm(s.file)||!/\.css$/i.test(s.file)?null:{name:ur(e),author:typeof s.author=="string"?s.author:"",file:s.file,preview:Bm(s.preview)?s.preview:""}},Ge=(s,e)=>window.chrome.webview.postMessage(e?`css-${s} ${JSON.stringify(e)}`:`css-${s}`),Bl=class{constructor(){this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.files=[],this.active=null,this.listed=!1,this.saving=null,this.savingName=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.closeAfterSave=!1,this.forceClose=!1,this.legacy=!1,this.live=!0,this.previewTimer=0,this.storeButtons=new Map,this.downloading=new Set,this.storeLoaded=!1,this.storeRun=0}open(){if(this.popup)return;if(!os()){d.showNotification("The CSS Manager needs a newer Kute. Update Kute to use it.",!1,6);return}this.legacy=!cy(),this.popup=vo(Lm,{onMessage:i=>this.receive(i),canClose:()=>this.canClose(),onEscape:()=>this.unzoom()});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{clearTimeout(this.previewTimer),Rt.revert(),this.popup=null,this.editor=null,this.editing=null,this.loading=null,this.listed=!1,this.saving=null,this.renaming=null,this.openAfterImport=null,this.activating=!1,this.forceClose=!1,this.storeButtons.clear(),this.downloading.clear(),this.storeLoaded=!1,this.storeRun++}),this.$("#ccFolder").onclick=()=>Ge("reveal",{name:this.editing??""}),this.$("#ccOff").hidden=d.settings.data.customCss!==!1,this.$("#ccStore").onclick=()=>this.openStore(),this.$("#ccStoreBack").onclick=()=>this.$(".managerBody").classList.remove("storeOpen");let o=this.$("#ccLive");o.checked=this.live,o.onchange=()=>{this.live=o.checked,this.preview()};let n=e.host.parentElement;if(this.$("#ccPeek").onpointerdown=i=>{i.preventDefault(),n.style.opacity="0",window.addEventListener("pointerup",()=>{n.style.opacity=""},{once:!0,signal:t})},this.legacy){this.$(".managerPopup").classList.add("legacy"),this.$("#ccHint").textContent="Loaded after all of Krunker's styles, so a rule with the same selector wins. Saved as Documents\\kute\\custom.css. Update Kute to keep several CSS files and switch between them.",this.$("#ccEditor").textContent="Loading...",Ge("read");return}this.$("#ccNew").onclick=()=>this.create(),this.$("#ccPaste").onclick=()=>this.paste();let r=this.$("#ccImportInput");this.$("#ccImport").onclick=()=>r.click(),r.onchange=()=>{this.importFiles([...r.files??[]]),r.value=""},st(this.$("#ccFiles"),i=>this.importFiles(i.map(a=>a.file))),this.$("#ccEditor").textContent="Loading...",Ge("list")}async openStore(){if(!this.popup||(this.$(".managerBody").classList.add("storeOpen"),this.storeLoaded))return;let e=++this.storeRun,t=this.$("#ccStoreList");t.innerHTML='
      Loading the CSS Store...
      ';let o;try{let n=await fetch(_l("index.json"),{signal:AbortSignal.any([this.popup.signal,AbortSignal.timeout(_m)])});if(!n.ok)throw new Error(`HTTP ${n.status}`);let r=await n.json();if(!Array.isArray(r))throw new Error("index.json is no list");o=r.map(uy).filter(Boolean)}catch{e===this.storeRun&&(t.innerHTML='
      Could not load the CSS Store. Go back and open it again to retry.
      ');return}if(e===this.storeRun){this.storeLoaded=!0,this.storeButtons.clear(),t.textContent="",o.length||(t.innerHTML='
      Nothing in the CSS Store yet.
      ');for(let n of o)t.append(this.storeCard(n));this.refreshStore()}}zoom(e,t){if(!this.popup)return;this.unzoom();let o=document.createElement("div");o.id="ccZoom",o.innerHTML='
      ×
      ';let n=document.createElement("img");n.src=e,n.alt=t,o.append(n),o.onclick=r=>{r.target!==n&&o.remove()},this.$(".managerPopup").append(o)}unzoom(){let e=this.$("#ccZoom");return e?.remove(),!!e}storeCard(e){let t=document.createElement("div");t.className="storeCard";let o=document.createElement("div");if(o.className="storeShot",o.innerHTML='image',e.preview){let a=document.createElement("img");a.alt="",a.title="Click to enlarge",a.loading="lazy",a.decoding="async",a.src=_l(e.preview),a.onerror=()=>a.remove(),a.onclick=()=>this.zoom(a.src,e.name),o.append(a)}let n=document.createElement("div");n.className="storeName",n.textContent=e.name.replace(/\.css$/i,"");let r=document.createElement("div");r.className="storeAuthor",r.textContent=e.author?`by ${e.author}`:"";let i=document.createElement("div");return i.className="btn small",i.onclick=()=>this.download(e),this.storeButtons.set(e.name,i),t.append(o,n,r,i),t}async download(e){if(!(!this.popup||this.downloading.has(e.name)||this.hasFile(e.name))){this.downloading.add(e.name),this.refreshStore();try{let t=await fetch(_l(e.file),{signal:AbortSignal.any([this.popup.signal,AbortSignal.timeout(_m)])});if(!t.ok)throw new Error(`HTTP ${t.status}`);let o=await t.text();if(o.length>Nm)throw new Error("larger than 4 MB");Ge("import",{name:e.name,content:o})}catch(t){if(!this.popup)return;this.downloading.delete(e.name),this.popup.showError(`Could not download ${e.name}: ${t instanceof Error?t.message:t}`),this.refreshStore()}}}hasFile(e){let t=e.toLowerCase();return this.files.some(o=>o.name.toLowerCase()===t)}refreshStore(){for(let[e,t]of this.storeButtons){let o=this.downloading.has(e),n=!o&&this.hasFile(e);t.classList.toggle("primary",!o&&!n),t.classList.toggle("done",o||n),o?t.textContent="Downloading...":n?t.innerHTML='checkDownloaded':t.innerHTML='downloadDownload'}}$(e){return this.popup?.shadow.querySelector(e)}receive(e){if(typeof e.managerError=="string"&&this.popup?.showError(e.managerError),this.legacy){typeof e.customCss?.content=="string"&&!this.editor&&(this.active=Nl,this.showEditor(Nl,e.customCss.content)),e.customCssSaved&&this.saving!==null&&this.saved(e.customCssSaved.error,Nl);return}e.cssFiles&&this.updateList(e.cssFiles),e.cssFile&&e.cssFile.name===this.loading&&(this.loading=null,typeof e.cssFile.content=="string"?this.showEditor(e.cssFile.name,e.cssFile.content):this.popup?.showError(`Could not read ${e.cssFile.name}`)),e.cssSaved&&this.saving!==null&&e.cssSaved.name===this.savingName&&this.saved(e.cssSaved.error,e.cssSaved.name),e.cssImported&&this.imported(e.cssImported),e.cssActivated&&(this.activating=!1,e.cssActivated.error?this.popup?.showError(`Could not switch: ${e.cssActivated.error}`):Rt.markSaved(String(e.cssActivated.content??"")),this.preview())}updateList(e){this.files=Array.isArray(e.files)?e.files:[];let t=this.active;this.active=e.active??null,t&&!this.active&&!this.activating&&(Rt.markSaved(""),this.preview());let o=new Set(this.files.map(n=>n.name));if(this.renaming&&this.editing===this.renaming.from&&o.has(this.renaming.to)){this.editing=this.renaming.to;let n=this.popup?.shadow.querySelector(".editorFile")?.firstChild;n&&(n.textContent=this.editing)}if(this.renaming=null,this.editing&&!o.has(this.editing)&&this.closeEditor(),!this.listed){this.listed=!0;let n=this.active??this.files[0]?.name;n?this.load(n):this.closeEditor()}this.renderList(),this.refreshStore()}renderList(){let e=this.$("#ccList");if(e){if(e.textContent="",!this.files.length){let t=document.createElement("div");t.className="empty",t.textContent="No CSS files yet. Make one with New, paste one, or import .css files.",e.append(t)}for(let t of this.files)e.append(this.row(t));e.append(this.row(null))}}row(e){let t=e?.name??"",o=document.createElement("div");o.className="cssRow",o.classList.toggle("none",!e),o.classList.toggle("active",(this.active??"")===t),o.classList.toggle("editing",!!e&&this.editing===t);let n=document.createElement("div");n.className="cssRadio",n.title=e?"Use this one":"No CSS",n.onclick=l=>{l.stopPropagation(),this.activate(t)};let r=document.createElement("div");if(r.className="cssName",r.textContent=e?t:"None",o.append(n,r),!e)return o.onclick=()=>this.activate(""),o;let i=document.createElement("div");i.className="cssSize",i.textContent=wo(e.size);let a=document.createElement("div");a.className="cssActions";for(let[l,c,u,h]of[["edit","Rename",()=>this.rename(t),!1],["delete","Delete",()=>this.remove(t),!0]]){let p=document.createElement("div");p.className=h?"iconBtn danger":"iconBtn",p.title=c,p.innerHTML=`${l}`,p.onclick=f=>{f.stopPropagation(),u()},a.append(p)}return o.append(i,a),o.onclick=()=>this.load(t),o}async load(e){e===this.editing&&this.editor||await this.discardChanges()&&(this.loading=e,Ge("get",{name:e}))}showEditor(e,t){let o=this.$("#ccEditor");if(!o)return;let{editor:n}=fo(o,{title:e,content:t,language:"css",onSave:r=>this.save(r),onClose:()=>this.popup?.close(),onChange:()=>{clearTimeout(this.previewTimer),this.previewTimer=setTimeout(()=>this.preview(),ly)}});this.editor=n,this.editing=e,this.renderList(),this.preview()}closeEditor(){this.editor=null,this.editing=null;let e=this.$("#ccEditor");e&&(e.innerHTML='
      Pick a file below to edit it.
      '),this.preview()}preview(){let{editor:e}=this;this.live&&e&&(this.editing===this.active||e.isDirty())?Rt.apply(e.getValue()):Rt.revert()}async discardChanges(){return!this.editor?.isDirty()||!this.popup?!0:Pe(this.popup.shadow,"Unsaved changes",`Throw the changes to ${this.editing} away?`,"Discard")}save(e){!this.editor||!this.editing||this.saving!==null||(this.closeAfterSave=e,this.saving=this.editor.getValue(),this.savingName=this.editing,this.legacy?window.chrome.webview.postMessage(`css-write ${JSON.stringify({content:this.saving})}`):Ge("save",{name:this.editing,content:this.saving}))}saved(e,t){let o=this.saving??"";if(this.saving=null,e){this.popup?.showError(`Could not save: ${e}`);return}t===this.active&&Rt.markSaved(o),t===this.editing&&this.editor?.markSaved(o),this.preview(),this.closeAfterSave&&this.popup?.close()}activate(e){e===(this.active??"")||this.activating||(this.activating=!0,Ge("activate",{name:e}))}async create(){if(!this.popup)return;let e=await nt(this.popup.shadow,"New CSS file","theme.css","Ends in .css");e&&(this.openAfterImport=ur(e),Ge("import",{name:this.openAfterImport,content:""}))}async paste(){if(!this.popup)return;let e="";try{e=await navigator.clipboard.readText()}catch{this.popup.showError("Could not read the clipboard.");return}if(!e.trim()){this.popup.showError("The clipboard has no text in it. Copy the CSS first.");return}let t=await nt(this.popup.shadow,"Name for the pasted CSS","pasted.css","Ends in .css");t&&(this.openAfterImport=ur(t),Ge("import",{name:this.openAfterImport,content:e}))}async importFiles(e){let t=[];for(let o of e){if(!/\.css$/i.test(o.name)||o.size>Nm){t.push(o.name);continue}Ge("import",{name:o.name,content:await o.text()})}t.length&&this.popup?.showError(`Not imported (only .css files up to 4 MB): ${t.join(", ")}`)}imported(e){if(this.downloading.delete(e.requested)&&this.refreshStore(),e.error){this.popup?.showError(`Could not add ${e.requested}: ${e.error}`);return}this.active||this.activate(e.name),e.requested===this.openAfterImport?(this.openAfterImport=null,this.load(e.name)):this.editing||this.load(e.name)}async rename(e){if(!this.popup)return;let t=await nt(this.popup.shadow,`Rename ${e}`,e,"Ends in .css");if(!t)return;let o=ur(t);o!==e&&(this.renaming={from:e,to:o},Ge("rename",{from:e,to:o}))}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${e}?`,"It goes to the recycle bin.","Delete")||Ge("delete",{name:e})}canClose(){return this.forceClose||!this.editor?.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},py=new Bl,hy=()=>py.open()});var zm={};A(zm,{hostWatchesSwapper:()=>pr,reloadStylesheets:()=>qs});var pr,qs,hr=w(()=>{"use strict";F();pr=()=>d.hostFeatures?.includes("swapper-watch")??!1,qs=s=>{for(let e of document.querySelectorAll('link[rel="stylesheet"]')){if(!(e instanceof HTMLLinkElement)||!e.href)continue;let t=new URL(e.href);if(!/(^|\.)krunker\.io$/.test(t.hostname)||!s.has(t.pathname.slice(1).toLowerCase()))continue;t.searchParams.set("kuteSwap",String(Date.now()));let o=e.cloneNode();o.href=t.href,o.addEventListener("load",()=>e.remove(),{once:!0}),o.addEventListener("error",()=>o.remove(),{once:!0}),e.after(o)}}});var Om,Hm=w(()=>{Om='

      Userscripts

      Userscripts off
      folder_openOpen scripts folder
      ×
      Scripts run inside Krunker. Only add scripts you trust, and never anything that breaks krunker.io/docs/terms.txt. Drop .js files onto a group, or create one with New script.
      '});var Fl={};A(Fl,{open:()=>vy});var fy,gy,oe,Ks,Ol,by,vy,Dl=w(()=>{"use strict";F();Hm();ts();Ds();Do();fy=4*1024*1024,gy=`// ==UserScript== // @name {{name}} // @author // @version 1.0 @@ -207,11 +207,11 @@ this._console.log("{{name}} is running"); this.unload = () => {}; return this; -`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},Ks=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Hl=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Xe&&(Xe.onChange=()=>this.queueRender()),d.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return d.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Xe)this.needsRefresh=!0;else if(e&&!Lt())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?Lt()?(Lo(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Fs()){window.chrome.webview.postMessage("open, userscripts"),d.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=vo(_m,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>d.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Xe?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Xe?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),ot(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>dy)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Pe(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` -`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Xe?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&Lt()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),u=oe("div","scriptName",i.name||o.file);i.version&&u.append(oe("span","version",`v${i.version}`)),i.author&&u.append(oe("span","author",`by ${i.author}`)),c.append(u);let h=[i.desc,i.name?o.file:"",wo(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` -`);let[p,f,m]=this.stateOf(o,r,n),g=oe("div",`state ${f}`,p);m&&(g.title=m);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(Ks("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(Ks("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),Ks("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),Ks("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),Ks("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&Lt()?Lo([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Pe(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await st(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,uy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),u=oe("div","settingLabel",l.title||a);l.desc&&u.append(oe("small","",l.desc)),c.append(u,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=fo(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},py=new Hl,hy=()=>py.open()});var zm,Bm=w(()=>{zm=`

      Swapper

      refreshReload list
      folder_openOpen swapper folder
      ×
      A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
      Your swaps
      note_addNew file
      create_new_folderNew folder
      Drop files or folders here to put them into the swapper folder as they are
      Game files
      `});var jl={};A(jl,{open:()=>wy});var fy,gy,Hm,hr,by,Dl,ce,rt,js,Fm,Om,ql,Kl,vy,wy,Ul=w(()=>{"use strict";F();Bm();Ds();Do();pr();fy=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),gy=4*1024*1024,Hm=s=>fy.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),hr=()=>d.hostFeatures?.includes("swapper-editor")??!1,by=32*1024*1024,Dl=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},js=s=>s.slice(s.lastIndexOf("/")+1),Fm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",Om=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(Fm(n.path)).files.push({name:js(n.path),path:n.path,size:n.size});return t},ql=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+ql(t),0),Kl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Fs()){window.chrome.webview.postMessage("open, swapper"),d.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=vo(zm,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");hr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),ot(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),ur()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${js(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Pe(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>by){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Pl(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` -`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(u=>[u.path.toLowerCase(),u.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,u]of r)n.get(c)!==u&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!ur()&&qs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=Om(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=js(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,u)=>c.name.localeCompare(u.name))){let c=this.collapsedOwn.has(l.path),u=this.folderRow(l.name,a,!c,`${ql(l)}`);u.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=u.querySelector(".scriptActions");hr()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),ot(u,p=>this.drop(l.path,p)),e.append(u),c||r(l,a+1)}for(let l of[...i.files].sort((c,u)=>c.name.localeCompare(u.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",wo(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,u=ce("span","state warn","Wrong folder?");u.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(u,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return hr()&&Hm(e.path)&&e.size<=gy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),ot(r,c=>this.drop(Fm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} -Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?js(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),hr()&&Hm(a)){let u=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");u?h.append(rt("edit","Edit your swap",()=>this.edit(u.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return ot(c,u=>this.replace(a,u)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,Dl))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>Dl&&e.append(ce("div","treeNote",`${a.length-Dl} more, search for something longer.`));return}let r=Om(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((u,h)=>u.name.localeCompare(h.name))){let u=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,u,`${ql(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{u?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},ot(h,p=>this.drop(c.path,p)),e.append(h),u&&i(c,l+1)}for(let c of[...a.files].sort((u,h)=>u.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await st(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=fo(n,{title:e,content:t,language:Ua(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await st(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await st(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${js(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},vy=new Kl,wy=()=>vy.open()});var Dm={};var Gl=w(()=>{"use strict";F();ts();pr();d.userscriptManager={open:()=>{Promise.resolve().then(()=>(Fl(),Ol)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};d.settings.toggleUserscripts=s=>{if(d.settings.data.userscripts=s,s)Lt()?Lo(null,!1,!0):d.userscriptManager.masterChanged||d.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Xe?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&d.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}d.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&qs(new Set(e.map(String)))});d.swapperManager={open:()=>{Promise.resolve().then(()=>(Ul(),jl)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};d.customCss={open:()=>{Promise.resolve().then(()=>(zl(),Bl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Km={};A(Km,{default:()=>W});var Wl,ky,yy,qm,Vl,xy,W,xe=w(()=>{"use strict";F();Nt();Wl="kute_market_session",ky="x-kute-session",yy=3e3,qm=3600*1e3,Vl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return d.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-qm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Wl)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},yy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Wl,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;nUs,RARITIES:()=>Ut,formatAge:()=>Ge,formatKr:()=>Re,formatPercent:()=>it});function Re(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function Ge(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var Ut,Us,We=w(()=>{"use strict";Ut=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],Us={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Um={};A(Um,{TRADE_VERDICTS:()=>Gt,TYPE_NAMES:()=>$t,activityLabel:()=>Jl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Ws,fairValue:()=>at,identity:()=>me,lineNote:()=>Xl,money:()=>T,noEvidence:()=>Wt,singleListing:()=>Yl,stat:()=>ne,verdictOf:()=>Gs});var $t,Gt,Gs,S,T,ae,Wt,Yl,at,Xl,Ws,Jl,me,fe,ne,pe=w(()=>{"use strict";We();$t=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],Gt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Gs=s=>Object.hasOwn(Gt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Re(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Wt=s=>s.method==="floor"||s.method==="krunker",Yl=s=>s.method==="ask"&&s.onS===1,at=(s,e="")=>s?Wt(s)?`${T(s.fair)}${e}${s.method==="floor"?"floor":"krunker"}`:Yl(s)?`${T(s.fair)}${e}1 listing`:`${T(s.fair)}${e}`:T(void 0),Xl=s=>s.unknown?Wt(s)?`No price evidence · ${s.method==="floor"?"floor":"Krunker"} ${T(s.fair)}`:"Needs more evidence":`${T(s.fair)} KR each`,Ws=s=>s.method==="floor"?"No price evidence, quick-sell floor":s.method==="krunker"?"No price evidence, Krunker's estimate":Yl(s)?"One listing only":s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Jl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(Ut[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
      ◇

      ${S(s)}

      ${S(e)}

      ${t}
      `,ne=(s,e,t)=>`
      ${S(s)}${e}${t}
      `});var Wm={};A(Wm,{default:()=>mr});var Sy,ko,_e,Gm,Ey,$y,Cy,Zl,My,Ql,Ty,mr,ec=w(()=>{"use strict";F();xe();We();pe();Sy=1500,ko="data-kute-market",_e="kuteMarketLine",Gm="kuteMarketCardStyle",Ey=".market-card, .market-item-card",$y=` +`,oe=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},Ks=(s,e,t,o="")=>{let n=oe("div",`iconBtn ${o}`);return n.title=e,n.append(oe("span","mi",s)),n.onclick=t,n},Ol=class{constructor(){this.popup=null,this.groups=[],this.openSettings=new Set,this.editing=null,this.pendingRead=null,this.pendingSave=null,this.needsRefresh=!1,this.renderQueued=!1,this.forceClose=!1,this.prefsTimers=new Map,Je&&(Je.onChange=()=>this.queueRender()),d.userscriptManager.masterChanged=e=>this.onMasterChanged(e)}masterOn(){return d.settings?.data?.userscripts!==!1}onMasterChanged(e){if(e&&!Je)this.needsRefresh=!0;else if(e&&!Lt())for(let t of this.groups.filter(o=>o.id==="game").flatMap(o=>o.scripts)){let o=this.entryFor(t.key);!o||!t.enabled||(o.start(),(o.tainted||o.state!=="running"&&o.state!=="waiting"&&o.state!=="error")&&(this.needsRefresh=!0))}this.updateNotice(),this.editing||this.render()}reload(e){return e.length?Lt()?(Lo(e,!0,this.masterOn()),!0):!1:!0}applyMaster(){let e=this.popup?.shadow;if(!e)return;let t=this.masterOn();e.querySelector(".managerPopup")?.classList.toggle("scriptsOff",!t);let o=e.querySelector("#usMaster");o&&(o.classList.toggle("on",t),o.querySelector(".toggle")?.classList.toggle("on",t),o.querySelector("span").textContent=t?"Userscripts on":"Userscripts off")}open(){if(this.popup)return;if(!Fs()){window.chrome.webview.postMessage("open, userscripts"),d.showNotification("This Kute version can only open the scripts folder. Update Kute for the script manager.",!1,6);return}this.popup=vo(Om,{onMessage:t=>this.receive(t),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1}),this.popup.signal.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.forceClose=!1});let{shadow:e}=this.popup;e.querySelector("#usFolder").onclick=()=>this.send("reveal",{}),e.querySelector("#usRefreshNow").onclick=()=>location.reload(),e.querySelector("#usMaster").onclick=()=>d.settings.changeSetting("userscripts",!this.masterOn(),!1),this.applyMaster(),this.body().textContent="Loading...",this.send("list",{})}send(e,t){window.chrome.webview.postMessage(`scripts-${e} ${JSON.stringify(t)}`)}body(){return this.popup?.shadow.querySelector("#usBody")}receive(e){if(e.managerError&&(this.popup?.showError(e.managerError),this.pendingSave&&(this.pendingSave=null)),e.userscripts){if(this.groups=e.userscripts.groups??[],this.pendingSave&&this.editing){let{closeAfter:t}=this.pendingSave;this.pendingSave=null,this.editing.editor.markSaved(),this.editing.group==="game"&&!this.reload([this.editing.file])&&(this.needsRefresh=!0),t&&(this.editing=null)}this.editing||this.render(),this.updateNotice()}if(e.userscriptSource&&e.userscriptSource.key===this.pendingRead){this.pendingRead=null;let t=this.findScript(e.userscriptSource.key);t&&typeof e.userscriptSource.content=="string"?this.showEditor(t.group,t.file,e.userscriptSource.content):this.popup?.showError("The script could not be read.")}}findScript(e){for(let t of this.groups){let o=t.scripts.find(n=>n.key===e);if(o)return o}}entryFor(e){return Je?.entries?.find(t=>t.key===e)}queueRender(){!this.popup||this.renderQueued||(this.renderQueued=!0,queueMicrotask(()=>{this.renderQueued=!1,this.updateNotice(),this.popup&&!this.editing&&this.render()}))}updateNotice(){let e=this.popup?.shadow.querySelector("#usRefresh");if(!e)return;let t=this.masterOn(),o=Je?.entries?.some(n=>n.outdated||!t&&n.state==="running");e.hidden=!this.needsRefresh&&!o}render(){let e=this.body();if(!(!e||!this.popup)){this.applyMaster(),e.textContent="";for(let t of this.groups)e.append(this.renderGroup(t))}}renderGroup(e){let t=oe("div","group"),o=oe("div","groupHead");o.append(oe("div","groupTitle",e.label),oe("div","groupRuns",`runs in ${e.runs}`));let n=oe("div","btn small");n.append(oe("span","mi","add"),"New script"),n.onclick=()=>this.createScript(e.id),o.append(n),t.append(o),e.scripts.length===0&&t.append(oe("div","empty","No scripts yet."));for(let r of e.scripts)this.renderScript(t,e,r);return t.append(oe("div","dropZone",`Drop .js files here to add them to ${e.label}`)),st(t,r=>this.importFiles(e,r)),t}async importFiles(e,t){if(!this.popup)return;let o=[],n=t.filter(({file:a})=>{if(!/\.js$/i.test(a.name))o.push(`${a.name}: not a .js file`);else if(a.size>fy)o.push(`${a.name}: larger than 4 MB`);else return!0;return!1}),r=new Set(e.scripts.map(a=>a.file.toLowerCase())),i=n.filter(({file:a})=>r.has(a.name.toLowerCase())).map(({file:a})=>a.name);if(i.length){let a=`${i.join(", ")} already exist in ${e.label}. Replace them with the dropped files?`;if(!await Pe(this.popup.shadow,"Replace scripts?",a,"Replace"))return}for(let{file:a}of n)this.send("write",{group:e.id,file:a.name,content:await a.text(),noList:!0});this.send("list",{}),e.id==="game"&&!this.reload(n.map(({file:a})=>a.name))&&(this.needsRefresh=!0),this.updateNotice(),o.length&&this.popup?.showError(o.join(` +`))}stateOf(e,t,o){return t?.state==="error"?["Error","bad",t.error]:t?.outdated?["Old version","warn","Your changes apply after a refresh, this script has no unload to stop the running version"]:this.masterOn()?o||!Je?e.enabled?["On","ok",""]:["Off","",""]:e.enabled?t?.state==="running"?["Running","ok",t.late?"Started after the page loaded. It is a document-start script, refresh if it misses something":""]:t?.state==="waiting"?["Starting","ok","Starts once the page has loaded"]:!t&&Lt()?["Starting","ok",""]:["After refresh","warn","On, starts with the next page load"]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:["Off","",""]:t?.state==="running"?["Until refresh","warn","This script has no unload, it stops with the next page load"]:e.enabled?["On","","Runs once userscripts are on"]:["Off","",""]}renderScript(e,t,o){let n=t.id!=="game",r=n?void 0:this.entryFor(o.key),i=r?.meta??o.meta,a=oe("div","scriptRow"),l=oe("div",`toggle${o.enabled?" on":""}`);l.title=o.enabled?"Turn off":"Turn on",l.onclick=()=>this.toggle(o,r,n);let c=oe("div","scriptInfo"),u=oe("div","scriptName",i.name||o.file);i.version&&u.append(oe("span","version",`v${i.version}`)),i.author&&u.append(oe("span","author",`by ${i.author}`)),c.append(u);let h=[i.desc,i.name?o.file:"",wo(o.size)].filter(Boolean).join(" \xB7 ");c.append(oe("div","scriptDesc",h)),c.title=[i.desc,`${o.file}, ${o.runAt}${o.priority?`, priority ${o.priority}`:""}`].filter(Boolean).join(` +`);let[p,f,m]=this.stateOf(o,r,n),g=oe("div",`state ${f}`,p);m&&(g.title=m);let b=oe("div","scriptActions");r?.settings&&Object.keys(r.settings).length&&b.append(Ks("tune","Script settings",()=>{this.openSettings.has(o.key)?this.openSettings.delete(o.key):this.openSettings.add(o.key),this.render()})),b.append(Ks("edit","Edit",()=>{this.pendingRead=o.key,this.send("read",{key:o.key})}),Ks("swap_horiz",`Move to ${n?"Game":"Social"}`,()=>this.move(o,r,n)),Ks("folder_open","Show in folder",()=>this.send("reveal",{key:o.key})),Ks("delete","Delete (goes to the recycle bin)",()=>this.deleteScript(o,r),"danger")),a.append(l,c,g,b),e.append(a),r?.settings&&this.openSettings.has(o.key)&&e.append(this.renderSettings(o,r))}toggle(e,t,o){e.enabled=!e.enabled,this.send("toggle",{key:e.key,enabled:e.enabled}),o||this.masterOn()&&(t?e.enabled?(t.start(),(t.tainted||t.state!=="running"&&t.state!=="waiting"&&t.state!=="error")&&(this.needsRefresh=!0)):t.stop()||(this.needsRefresh=!0):e.enabled&&Lt()?Lo([e.key],!1,!0):e.enabled&&(this.needsRefresh=!0)),this.updateNotice(),this.render()}move(e,t,o){t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("move",{key:e.key,group:o?"game":"social"}),o&&!this.reload([e.file])&&(this.needsRefresh=!0),this.updateNotice()}async deleteScript(e,t){!this.popup||!await Pe(this.popup.shadow,`Delete ${e.file}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||(t&&!t.stop()&&t.state==="running"&&(this.needsRefresh=!0),this.send("delete",{key:e.key}))}async createScript(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New script","my-script.js","The file name. It ends up in the scripts folder of this group.");if(!t)return;let o=/\.js$/i.test(t)?t:`${t}.js`;if(this.groups.some(r=>r.id===e&&r.scripts.some(i=>i.file.toLowerCase()===o.toLowerCase()))){this.popup.showError(`${o} already exists in this group.`);return}this.showEditor(e,o,gy.replaceAll("{{name}}",o.replace(/\.js$/i,"")),!0)}renderSettings(e,t){let o=oe("div","scriptSettings"),n=t.settings??{},r=()=>{clearTimeout(this.prefsTimers.get(e.key)),this.prefsTimers.set(e.key,setTimeout(()=>{this.prefsTimers.delete(e.key);let a=Object.fromEntries(Object.entries(n).map(([l,c])=>[l,c.value]));this.send("prefs",{key:e.key,prefs:a})},300))},i=(a,l)=>{t.setPref(a,l),r()};for(let[a,l]of Object.entries(n)){let c=oe("div","settingRow"),u=oe("div","settingLabel",l.title||a);l.desc&&u.append(oe("small","",l.desc)),c.append(u,this.settingControl(a,l,i)),o.append(c)}return o}settingControl(e,t,o){switch(t.type){case"bool":{let n=oe("div",`toggle${t.value?" on":""}`);return n.onclick=()=>{o(e,!t.value),n.classList.toggle("on",!!t.value)},n}case"num":{let n=oe("div");n.style.cssText="display:flex;gap:.6em;align-items:center";let r=oe("input");if(r.type="number",r.style.width="90px",r.value=String(t.value),t.min!==void 0&&(r.min=String(t.min)),t.max!==void 0&&(r.max=String(t.max)),r.step=String(t.step??"any"),t.min!==void 0&&t.max!==void 0){let i=oe("input");i.type="range",i.min=String(t.min),i.max=String(t.max),i.step=String(t.step??"any"),i.value=String(t.value),i.oninput=()=>{r.value=i.value,o(e,Number(i.value))},r.onchange=()=>{i.value=r.value},n.append(i)}return r.addEventListener("change",()=>{r.value!==""&&Number.isFinite(Number(r.value))&&o(e,Number(r.value))}),n.append(r),n}case"sel":{let n=oe("select");for(let r of t.opts??[]){let i=oe("option","",String(r));i.value=String(r),i.selected=r===t.value,n.append(i)}return n.onchange=()=>{let r=(t.opts??[]).find(i=>String(i)===n.value);o(e,r??n.value)},n}case"color":{let n=oe("input");return n.type="color",n.value=String(t.value),n.onchange=()=>o(e,n.value),n}case"text":{let n=oe("input");return n.type="text",n.value=String(t.value??""),n.onchange=()=>o(e,n.value),n}case"keybind":{let n=i=>[i?.ctrl&&"Ctrl",i?.alt&&"Alt",i?.shift&&"Shift",i?.key||"none"].filter(Boolean).join(" + "),r=oe("div","btn small",n(t.value));return r.onclick=()=>{r.textContent="Press a key...";let i=a=>{if(["Control","Alt","Shift","Meta"].includes(a.key))return;a.preventDefault(),a.stopPropagation(),window.removeEventListener("keydown",i,!0);let l={key:a.key.toLowerCase(),ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};o(e,l),r.textContent=n(l)};window.addEventListener("keydown",i,!0)},r}default:return oe("div","scriptFile",`unsupported type "${t.type}"`)}}showEditor(e,t,o,n=!1){let r=this.body();if(!r)return;let{editor:i}=fo(r,{title:t,content:o,language:"js",isNew:n,onSave:a=>{this.editing&&(this.pendingSave={closeAfter:a},this.editing.closeAfterSave=a,this.send("write",{group:e,file:t,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={group:e,file:t,editor:i,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||(this.editing=null,this.render())}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}},by=new Ol,vy=()=>by.open()});var Dm,Fm=w(()=>{Dm=`

      Swapper

      refreshReload list
      folder_openOpen swapper folder
      ×
      A file in the swapper folder replaces the game's file with the same path: swapper/textures/pistol.png replaces krunker.io/textures/pistol.png. Easiest way: drop your file onto the game file it should replace (right side), it gets the right folder and name. Folder names do not care about case. Text files like CSS can be written right here: New file, or the edit button on a game file to start from a copy.
      Your swaps
      note_addNew file
      create_new_folderNew folder
      Drop files or folders here to put them into the swapper folder as they are
      Game files
      `});var Ul={};A(Ul,{open:()=>Ey});var ky,yy,qm,mr,xy,ql,ce,rt,js,jm,Km,Kl,jl,Sy,Ey,Gl=w(()=>{"use strict";F();Fm();Ds();Do();hr();ky=new Set(["css","js","mjs","json","txt","html","htm","svg","xml","obj","mtl","glsl","frag","vert","md","csv"]),yy=4*1024*1024,qm=s=>ky.has(s.slice(s.lastIndexOf(".")+1).toLowerCase()),mr=()=>d.hostFeatures?.includes("swapper-editor")??!1,xy=32*1024*1024,ql=400,ce=(s,e="",t="")=>{let o=document.createElement(s);return e&&(o.className=e),t&&(o.textContent=t),o},rt=(s,e,t,o="")=>{let n=ce("div",`iconBtn ${o}`);return n.title=e,n.append(ce("span","mi",s)),n.onclick=r=>{r.stopPropagation(),t()},n},js=s=>s.slice(s.lastIndexOf("/")+1),jm=s=>s.includes("/")?s.slice(0,s.lastIndexOf("/")):"",Km=(s,e)=>{let t={name:"",path:"",folders:new Map,files:[]},o=n=>{let r=t;for(let i of n.split("/").filter(Boolean)){let a=r.folders.get(i);a||(a={name:i,path:r.path?`${r.path}/${i}`:i,folders:new Map,files:[]},r.folders.set(i,a)),r=a}return r};for(let n of e)o(n);for(let n of s)o(jm(n.path)).files.push({name:js(n.path),path:n.path,size:n.size});return t},Kl=s=>s.files.length+[...s.folders.values()].reduce((e,t)=>e+Kl(t),0),jl=class{constructor(){this.popup=null,this.list=null,this.collapsedOwn=new Set,this.expandedGame=new Set,this.search="",this.touched=new Set,this.stale=new Set,this.uploadDone=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1}open(){if(this.popup)return;if(!Fs()){window.chrome.webview.postMessage("open, swapper"),d.showNotification("This Kute version can only open the swapper folder. Update Kute for the swapper manager.",!1,6);return}this.popup=vo(Dm,{onMessage:r=>this.receive(r),canClose:()=>this.canClose(),onEscape:()=>this.editing?(this.leaveEditor(),!0):!1});let{shadow:e,signal:t}=this.popup;t.addEventListener("abort",()=>{this.popup=null,this.editing=null,this.pendingRead=null,this.saving=!1,this.forceClose=!1,this.uploadDone?.(null),this.uploadDone=null}),e.querySelector("#swFolder").onclick=()=>this.send("reveal",{path:""}),e.querySelector("#swReload").onclick=()=>this.send("list",{}),e.querySelector("#swRefreshNow").onclick=()=>location.reload(),e.querySelector("#swNewFolder").onclick=()=>this.newFolder("");let o=e.querySelector("#swNewFile");mr()||(o.style.display="none"),o.onclick=()=>this.newFile(""),st(e.querySelector("#swOwnColumn"),r=>this.drop("",r));let n=e.querySelector("#swSearch");n.value=this.search,n.oninput=()=>{this.search=n.value.trim().toLowerCase(),this.renderGame()},e.querySelector("#swOwnTree").textContent="Loading...",this.send("list",{}),pr()||window.addEventListener("focus",()=>{!this.editing&&!this.uploadDone&&this.send("list",{})},{signal:t})}send(e,t){window.chrome.webview.postMessage(`swapper-${e} ${JSON.stringify(t)}`)}async drop(e,t){let o=t;!e&&o.every(({path:n})=>n.toLowerCase().startsWith("swapper/"))&&(o=o.map(({path:n,file:r})=>({path:n.slice(8),file:r}))),await this.upload(o.map(({path:n,file:r})=>({path:e?`${e}/${n}`:n,file:r})))}async replace(e,t){if(!this.popup)return;if(t.length!==1){this.popup.showError("Drop exactly one file onto a game file. Drop several onto a folder instead.");return}let[{file:o}]=t,n=r=>r.slice(r.lastIndexOf(".")+1).toLowerCase();if(n(o.name)!==n(e)){let r=`${o.name} is saved as ${js(e)}, the game will read it as .${n(e)}. Go ahead?`;if(!await Pe(this.popup.shadow,"Different file type",r,"Save anyway"))return}await this.upload([{path:e,file:o}])}async upload(e){let t=[];for(let{path:o,file:n}of e){if(!this.popup)return;if(n.size>xy){t.push(`${o}: larger than 32 MB, put it in with Open swapper folder`);continue}let r=await Il(n),i=await new Promise(a=>{this.uploadDone=a,this.send("upload",{path:o,data:r})});i?t.push(i):this.touched.add(o.toLowerCase())}this.send("list",{}),t.length&&this.popup?.showError(t.join(` +`))}receive(e){if(e.managerError&&this.popup?.showError(e.managerError),e.swapperUploaded){let o=this.uploadDone;this.uploadDone=null,o?.(e.swapperUploaded.error??null)}if(e.swapperSource&&e.swapperSource.path===this.pendingRead&&(this.pendingRead=null,typeof e.swapperSource.content=="string"?this.showEditor(e.swapperSource.path,e.swapperSource.content):this.popup?.showError(`${e.swapperSource.path} could not be read as text.`)),e.swapperWritten&&this.saving&&(this.saving=!1,e.swapperWritten.error?this.popup?.showError(e.swapperWritten.error):this.editing&&(this.touched.add(this.editing.path.toLowerCase()),this.editing.editor.markSaved(),this.editing.closeAfterSave&&this.closeEditor())),e.swapperChanged&&!this.editing&&!this.uploadDone&&this.send("list",{}),!e.swapper)return;let t=this.list;this.list=e.swapper,t&&this.applyChanges(t,e.swapper),this.render()}applyChanges(e,t){let o=c=>new Map(c.files.map(u=>[u.path.toLowerCase(),u.size])),n=o(e),r=o(t),i=new Set(this.touched);if(this.touched.clear(),e.enabled!==t.enabled)for(let c of[...n.keys(),...r.keys()])i.add(c);for(let[c,u]of r)n.get(c)!==u&&i.add(c);for(let c of n.keys())r.has(c)||i.add(c);if(!i.size)return;let a=new Set([...i].filter(c=>c.endsWith(".css")));a.size&&!pr()&&qs(a);let l=new Set(t.seen.map(c=>c.toLowerCase()));for(let c of i)!a.has(c)&&l.has(c)&&this.stale.add(c)}get(e){return this.popup?.shadow.querySelector(e)}render(){if(!this.popup||!this.list)return;let e=this.get("#swNotice"),t=this.list.enabled===!1;e.hidden=!t&&!this.stale.size;let o=this.stale.size;e.querySelector("span").textContent=t?"The swapper is switched off (Settings, Customization), none of these files are used.":`The game already loaded ${o===1?"1 changed file":`${o} changed files`}, ${o===1?"it changes":"they change"} after a page refresh.`,this.renderOwn(),this.renderGame()}renderOwn(){if(!this.list)return;let e=this.get("#swOwnTree");e.textContent="";let t=Km(this.list.files,this.list.dirs);if(this.get("#swOwnCount").textContent=`${this.list.files.length} file${this.list.files.length===1?"":"s"}`,!this.list.files.length&&!this.list.dirs.length){e.append(ce("div","treeNote","Nothing swapped yet. Drop a file onto one of the game files on the right, or drop a whole swapper pack here."));return}let o=new Map(this.list.seen.map(i=>[i.toLowerCase(),i])),n=new Map;for(let i of this.list.seen){let a=js(i).toLowerCase();n.set(a,[...n.get(a)??[],i])}let r=(i,a)=>{for(let l of[...i.folders.values()].sort((c,u)=>c.name.localeCompare(u.name))){let c=this.collapsedOwn.has(l.path),u=this.folderRow(l.name,a,!c,`${Kl(l)}`);u.onclick=()=>{c?this.collapsedOwn.delete(l.path):this.collapsedOwn.add(l.path),this.renderOwn()};let h=u.querySelector(".scriptActions");mr()&&h?.append(rt("note_add","New file inside",()=>this.newFile(l.path))),h?.append(rt("create_new_folder","New folder inside",()=>this.newFolder(l.path)),rt("drive_file_rename_outline","Rename or move",()=>this.move(l.path)),rt("folder_open","Open in Explorer",()=>this.send("reveal",{path:l.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(l.path),"danger")),st(u,p=>this.drop(l.path,p)),e.append(u),c||r(l,a+1)}for(let l of[...i.files].sort((c,u)=>c.name.localeCompare(u.name)))e.append(this.ownFileRow(l,a,o,n))};r(t,0)}folderRow(e,t,o,n){let r=ce("div","node folder");return r.style.setProperty("--depth",String(t)),r.append(ce("span","mi",o?"expand_more":"chevron_right"),ce("span","mi kind",o?"folder_open":"folder")),r.append(ce("span","nodeName",e),ce("span","nodeSize",n),ce("div","scriptActions")),r}ownFileRow(e,t,o,n){let r=ce("div","node");r.style.setProperty("--depth",String(t+1)),r.append(ce("span","mi","description"),ce("span","nodeName",e.name),ce("span","nodeSize",wo(e.size)));let i=o.get(e.path.toLowerCase()),a=(n.get(e.name.toLowerCase())??[]).filter(c=>c.toLowerCase()!==e.path.toLowerCase());if(i){let c=ce("span","state ok","Used");c.title=`The game loaded krunker.io/${i} this session, this file replaced it.`,r.append(c)}else if(a.length){let[c]=a,u=ce("span","state warn","Wrong folder?");u.title=`The game asks for this file as ${a.join(", ")}`;let h=ce("div","btn small","Move there");h.title=`Move to ${c}`,h.onclick=()=>this.send("move",{from:e.path,to:c}),r.append(u,h)}else{let c=ce("span","state","Not requested");c.title="The game did not ask for this path in this session. It may still come (another map, a skin), or the path does not match any game file.",r.append(c)}let l=ce("div","scriptActions");return mr()&&qm(e.path)&&e.size<=yy&&(l.append(rt("edit","Edit",()=>this.edit(e.path))),r.ondblclick=()=>this.edit(e.path)),l.append(rt("drive_file_rename_outline","Rename or move",()=>this.move(e.path)),rt("folder_open","Show in Explorer",()=>this.send("reveal",{path:e.path})),rt("delete","Delete (goes to the recycle bin)",()=>this.remove(e.path),"danger")),r.append(l),st(r,c=>this.drop(jm(e.path),c)),r}renderGame(){if(!this.list||!this.popup)return;let e=this.get("#swGameTree");e.textContent="";let{seen:t}=this.list;this.get("#swGameCount").textContent=`${t.length} loaded this session`;let o=new Set(this.list.files.map(a=>a.path.toLowerCase()));if(!t.length){e.append(ce("div","treeNote","The game has not loaded any files yet. Play a round or open a menu, then Reload list."));return}let n=(a,l)=>{let c=ce("div","node");if(c.style.setProperty("--depth",String(l)),c.title=`krunker.io/${a} +Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce("span","nodeName",l?js(a):a)),o.has(a.toLowerCase())&&c.append(ce("span","swapped","swapped")),mr()&&qm(a)){let u=this.list?.files.find(p=>p.path.toLowerCase()===a.toLowerCase()),h=ce("div","scriptActions");u?h.append(rt("edit","Edit your swap",()=>this.edit(u.path))):h.append(rt("edit_note","Edit a copy, saving it swaps the file",()=>this.editCopy(a))),c.append(h)}return st(c,u=>this.replace(a,u)),c};if(this.search){let a=t.filter(l=>l.toLowerCase().includes(this.search));for(let l of a.slice(0,ql))e.append(n(l,0));a.length||e.append(ce("div","treeNote","No game file matches.")),a.length>ql&&e.append(ce("div","treeNote",`${a.length-ql} more, search for something longer.`));return}let r=Km(t.map(a=>({path:a,size:0})),[]),i=(a,l)=>{for(let c of[...a.folders.values()].sort((u,h)=>u.name.localeCompare(h.name))){let u=this.expandedGame.has(c.path),h=this.folderRow(c.name,l,u,`${Kl(c)}`);h.title="Drop files here to put them into this folder",h.onclick=()=>{u?this.expandedGame.delete(c.path):this.expandedGame.add(c.path),this.renderGame()},st(h,p=>this.drop(c.path,p)),e.append(h),u&&i(c,l+1)}for(let c of[...a.files].sort((u,h)=>u.name.localeCompare(h.name)))e.append(n(c.path,l+1))};i(r,0)}async newFile(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New file",e?`${e}/new.css`:"css/new.css","A path inside the swapper folder, the same path the game loads the file from");if(!t)return;let o=t.replace(/^\/+/,"");if(this.list?.files.some(n=>n.path.toLowerCase()===o.toLowerCase())){this.popup.showError(`${o} already exists, edit it instead.`);return}this.showEditor(o,"",!0)}edit(e){this.pendingRead||this.editing||(this.pendingRead=e,this.send("read",{path:e}))}async editCopy(e){if(this.pendingRead||this.editing)return;this.pendingRead=e;let t=null;for(let o of["https://krunker.io","https://assets.krunker.io"])try{let n=await fetch(`${o}/${e}`);if(n.ok){t=await n.text();break}}catch{}this.pendingRead===e&&(this.pendingRead=null,t===null&&(this.popup?.showError(`Could not download krunker.io/${e}, starting with an empty file.`),t=""),this.showEditor(e,t,!0))}showEditor(e,t,o=!1){if(!this.popup)return;let n=this.get("#swEditor");this.get(".swapColumns").style.display="none",n.style.display="";let{editor:r}=fo(n,{title:e,content:t,language:Ga(e),isNew:o,onSave:i=>{!this.editing||this.saving||(this.saving=!0,this.editing.closeAfterSave=i,this.send("write",{path:e,content:this.editing.editor.getValue()}))},onClose:()=>this.leaveEditor()});this.editing={path:e,editor:r,closeAfterSave:!1}}async leaveEditor(){!this.editing||!this.popup||this.editing.editor.isDirty()&&!await Pe(this.popup.shadow,"Unsaved changes","Close the editor and throw the changes away?","Discard")||this.closeEditor()}closeEditor(){if(this.editing=null,!this.popup)return;let e=this.get("#swEditor");e.textContent="",e.style.display="none",this.get(".swapColumns").style.display="",this.render()}canClose(){return this.forceClose||!this.editing?.editor.isDirty()||!this.popup?!0:(Pe(this.popup.shadow,"Unsaved changes","Close and throw the changes away?","Discard").then(e=>{e&&(this.forceClose=!0,this.popup?.close())}),!1)}async newFolder(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"New folder",e?`${e}/`:"textures","A path inside the swapper folder, for example textures/weapons");t&&this.send("mkdir",{path:t})}async move(e){if(!this.popup)return;let t=await nt(this.popup.shadow,"Rename or move",e,"The new path inside the swapper folder. Change the folders in front to move it.");!t||t===e||this.send("move",{from:e,to:t})}async remove(e){!this.popup||!await Pe(this.popup.shadow,`Delete ${js(e)}?`,"It goes to the recycle bin, so you can still get it back.","Delete")||this.send("delete",{path:e})}},Sy=new jl,Ey=()=>Sy.open()});var Um={};var Wl=w(()=>{"use strict";F();ts();hr();d.userscriptManager={open:()=>{Promise.resolve().then(()=>(Dl(),Fl)).then(s=>s.open()).catch(s=>console.error("[kute] userscript manager:",s))}};d.settings.toggleUserscripts=s=>{if(d.settings.data.userscripts=s,s)Lt()?Lo(null,!1,!0):d.userscriptManager.masterChanged||d.showNotification("Refresh the page to start your userscripts.",!1,5);else{let e=(Je?.entries??[]).filter(t=>(t.state==="running"||t.state==="waiting")&&!t.stop()).map(t=>t.meta.name||t.key);e.length&&d.showNotification(`${e.join(", ")} cannot be stopped and keeps running until the next refresh.`,!1,6)}d.userscriptManager.masterChanged?.(s)};window.chrome.webview.addEventListener("message",s=>{let e=s.data?.swapperChanged?.css;Array.isArray(e)&&e.length&&qs(new Set(e.map(String)))});d.swapperManager={open:()=>{Promise.resolve().then(()=>(Gl(),Ul)).then(s=>s.open()).catch(s=>console.error("[kute] swapper manager:",s))}};d.customCss={open:()=>{Promise.resolve().then(()=>(Hl(),zl)).then(s=>s.open()).catch(s=>console.error("[kute] custom css:",s))}}});var Wm={};A(Wm,{default:()=>W});var Vl,$y,Cy,Gm,Yl,My,W,xe=w(()=>{"use strict";F();Nt();Vl="kute_market_session",$y="x-kute-session",Cy=3e3,Gm=3600*1e3,Yl=class{constructor(){this.sessionPromise=null,this.memorySession=null,this.cache=new Map,this.lastError="",this.retryAt=0}loggedIn(){try{return localStorage.getItem("krunker_token")!==null}catch{return!1}}hostSupported(){return d.hostFeatures?.includes("market-attest")===!0}stored(){if(this.memorySession&&Date.now()t.expiresAt-Gm?null:t}catch{return null}}forget(e){if(this.stored()?.session===e){try{localStorage.removeItem(Vl)}catch{}this.memorySession=null}}attest(e){return new Promise(t=>{let o=0,n=r=>{let i=null;try{i=typeof r.data=="string"?JSON.parse(r.data):r.data}catch{return}let a=i?.marketAttest;!a||a.challenge!==e||(clearTimeout(o),window.chrome.webview.removeEventListener("message",n),t(a))};o=window.setTimeout(()=>{window.chrome.webview.removeEventListener("message",n),t(null)},Cy),window.chrome.webview.addEventListener("message",n),window.chrome.webview.postMessage(`market-attest, ${e}, ${this.loggedIn()}`)})}session(){let e=this.stored();return e?Promise.resolve(e.session):(this.sessionPromise??=this.newSession().finally(()=>{this.sessionPromise=null}),this.sessionPromise)}async newSession(){if(this.lastError="",!this.loggedIn())return this.lastError="log in to Krunker to use the market",null;if(!this.hostSupported())return this.lastError="this Kute version cannot sign in to the market, update Kute",null;let e=await he.requestStatus("/market/session",{method:"POST"});if(!e.data?.challenge)return this.lastError=e.status===503?"the market is not available right now":"could not reach the market",e.status===429&&this.limited(e.retryAt),null;let t=await this.attest(e.data.challenge);if(!t)return this.lastError="Kute did not answer the sign in",null;let o=await he.requestStatus("/market/session/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:t.challenge,sig:t.sig,version:t.version,loggedIn:t.loggedIn})});if(!o.data?.session)return this.lastError=typeof o.error?.error=="string"?o.error.error:"the market refused the sign in",o.status===429&&this.limited(o.retryAt),null;this.memorySession={session:o.data.session,expiresAt:o.data.expiresAt};try{localStorage.setItem(Vl,JSON.stringify(this.memorySession))}catch{}return o.data.session}async request(e,t={},o=!1){return(await this.requestStatus(e,t,o)).data}async requestStatus(e,t={},o=!1){if(Date.now()this.request(e)){let n=Date.now(),r=this.cache.get(e);if(r&&n-r.at(a===null&&this.cache.delete(e),a));if(this.cache.set(e,{at:n,ttl:t,value:i}),this.cache.size>500){let a=this.cache.keys().next();a.done||this.cache.delete(a.value)}return i}retry(){return Date.now(){let n=await this.requestStatus(o);if(n.status!==404)return n.data;let r=await this.cached(`/market/item/${e}`,3e5);if(!r)return null;let[i,a]=await Promise.all([this.cached(`/market/item/${e}/history?range=${t}`,3e5),this.cached(`/market/item/${e}/listings`,6e4)]);return{item:r,history:i,listings:a}})}async values(e){let t=[...new Set(e)].sort((n,r)=>n-r),o={};for(let n=0;nUs,RARITIES:()=>Ut,formatAge:()=>We,formatKr:()=>Re,formatPercent:()=>it});function Re(s){return Number.isFinite(s)?Math.abs(s)>=1e6?`${(s/1e6).toFixed(s%1e6===0?0:1)}M`:Math.round(s).toLocaleString("en-US"):"?"}function it(s){if(s==null||!Number.isFinite(s))return"\u2013";let e=s*100;return`${e>0?"+":""}${Math.abs(e)>=100?e.toFixed(0):e.toFixed(1)} %`}function We(s){if(!Number.isFinite(s)||s<0)return"\u2013";let e=s/6e4;if(e<60)return`${Math.max(1,Math.round(e))} min`;let t=e/60;return t<48?`${Math.round(t)} h`:`${Math.round(t/24)} d`}var Ut,Us,Ve=w(()=>{"use strict";Ut=[{name:"Uncommon",color:"#b2f252"},{name:"Rare",color:"#2196F3"},{name:"Epic",color:"#E040FB"},{name:"Legendary",color:"#FBC02D"},{name:"Relic",color:"#ff5722"},{name:"Contraband",color:"#f44336"},{name:"Unobtainable",color:"#ffffff"},{name:"NFT",color:"#9e9e9e"}],Us={A:"#5ce05a",B:"#9ccc65",C:"#fbc02d",D:"#ff9800",F:"#f44336"}});var Ym={};A(Ym,{TRADE_VERDICTS:()=>Gt,TYPE_NAMES:()=>$t,activityLabel:()=>Zl,change:()=>ae,empty:()=>fe,esc:()=>S,evidenceLabel:()=>Ws,fairValue:()=>at,identity:()=>me,lineNote:()=>Jl,money:()=>T,noEvidence:()=>Wt,singleListing:()=>Xl,stat:()=>ne,verdictOf:()=>Gs});var $t,Gt,Gs,S,T,ae,Wt,Xl,at,Jl,Ws,Zl,me,fe,ne,pe=w(()=>{"use strict";Ve();$t=["Weapons","Hats","Bodies","Melee","Sprays","Dyes","Waists","Faces","Charms","Emotes","Stickers","Skydomes","Poses","Spin tickets","Capes","Heads","Paints","Backs","Consumables"],Gt={good:{label:"Favorable trade",detail:"More estimated value coming in"},fair:{label:"Fair trade",detail:"Similar estimated value"},bad:{label:"Unfavorable trade",detail:"More estimated value going out"},uncertain:{label:"Not enough evidence",detail:"Estimates are too uncertain for a verdict"}},Gs=s=>Object.hasOwn(Gt,s)?s:"uncertain",S=s=>String(s??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]??e),T=s=>s==null?"Unavailable":Re(s),ae=s=>{if(s==null)return'No trend yet';let e="muted";return s>.005&&(e="positive"),s<-.005&&(e="negative"),`${S(it(s))}`},Wt=s=>s.method==="floor"||s.method==="krunker",Xl=s=>s.method==="ask"&&s.onS===1,at=(s,e="")=>s?Wt(s)?`${T(s.fair)}${e}${s.method==="floor"?"floor":"krunker"}`:Xl(s)?`${T(s.fair)}${e}1 listing`:`${T(s.fair)}${e}`:T(void 0),Jl=s=>s.unknown?Wt(s)?`No price evidence · ${s.method==="floor"?"floor":"Krunker"} ${T(s.fair)}`:"Needs more evidence":`${T(s.fair)} KR each`,Ws=s=>s.method==="floor"?"No price evidence, quick-sell floor":s.method==="krunker"?"No price evidence, Krunker's estimate":Xl(s)?"One listing only":s.method?.includes("trades")?s.method.startsWith("sales")?"Sales + private trades":"Private-trade estimate":s.method?.startsWith("sales")?(s.sales7d??0)>=5?"Recent sales":"Sparse sales":"Limited evidence",Zl=s=>s.privateTrading?.trades7d?`${s.privateTrading.trades7d} private trade${s.privateTrading.trades7d===1?"":"s"} this week${s.sales7d?` + ${s.sales7d} sales`:""}`:(s.sales7d??0)>=7?"Active this week":(s.sales7d??0)>0?"Traded this week":"No reported sales this week",me=s=>`${s.thumbnail?``:'K'}${S(s.name)}${S(Ut[s.rarity??-1]?.name??"Item")}`,fe=(s,e,t="")=>`
      ◇

      ${S(s)}

      ${S(e)}

      ${t}
      `,ne=(s,e,t)=>`
      ${S(s)}${e}${t}
      `});var Jm={};A(Jm,{default:()=>fr});var Ty,ko,_e,Xm,Ay,Ly,Ry,Ql,Py,ec,Iy,fr,tc=w(()=>{"use strict";F();xe();Ve();pe();Ty=1500,ko="data-kute-market",_e="kuteMarketLine",Xm="kuteMarketCardStyle",Ay=".market-card, .market-item-card",Ly=` .market-card,.market-item-card{position:relative} .${_e}{display:inline-flex!important;align-items:center;gap:.35em;white-space:nowrap;cursor:pointer;pointer-events:auto} .${_e}:hover{filter:brightness(1.25)} @@ -223,9 +223,9 @@ Drop a file here to replace it`,c.append(ce("span","mi","insert_drive_file"),ce( .${_e} .kuteDelta.kuteOver{color:#f44336} .${_e} .kuteNone{opacity:.6} .kuteDetailBtn .kuteMark{color:#f5479b;font-weight:900;margin-right:2px} -`,Cy=".item-detail-container, .items-detail-root",Zl="kuteDetailBtn",My=5e3,Ql=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(Gm)){let e=document.createElement("style");e.id=Gm,e.textContent=$y,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),Sy),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${_e}, .${Zl}`))e.remove();for(let e of document.querySelectorAll(`[${ko}]`))e.removeAttribute(ko)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(_e)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(Cy),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(ko)!==t&&(e.setAttribute(ko,t),e.querySelector(`.${Zl}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(Ey)].filter(n=>!n.hasAttribute(ko));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(ko,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Zl}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(ko)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=Wt(a)?"Kute Market \xB7 no price data":`Kute Market \xB7 K ${Re(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),d.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${_e}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${_e}`:`${_e} kuteFloating`;let r=s.askOf(e);if(Wt(t))o.innerHTML='K no data',o.title=`Kute has no price evidence for this item: no sale, trade or listing it could see. ${t.method==="floor"?"The game's quick-sell floor":"Krunker's estimate"} is ${Re(t.fair)} kr, and such items are often worth far more. Click for the item in Kute Market`;else{let i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Re(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Re(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market"}o.addEventListener("click",i=>{i.stopPropagation(),i.preventDefault(),d.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Ty=new Ql,mr=Ty});var Ym,Vm=w(()=>{Ym='
      '});var Xm={};A(Xm,{default:()=>fr});var Ly,tc,Ry,fr,oc=w(()=>{"use strict";xe();We();pe();Vm();Ly=1200,tc=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null,this.chatList=null}placed(e){return e.slot?e.slot.firstElementChild===this.box:this.box?.nextElementSibling===e.anchor}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),Ly),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.chatList&&(this.chatList.style.maxHeight=""),this.chatList=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(p=>p.getClientRects().length);if(e.length>=2){let p=s.row(e[0],e[1]);if(!p)return null;let f=b=>[...b.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(v=>{let k=v.getAttribute("data-index"),E=k!==null&&/^\d+$/.test(k)?Number(k):-1,L=v.querySelector("img")?.getAttribute("src")??"",y={skin:E,count:s.kr(v.querySelector(".trade-item-count")?.textContent??"1")||1};E<0&&(y.path=/\/textures\/previews\/([^?#]+)/.exec(L)?.[1]??"");for(let[C,I]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let _=v.getAttribute(I);_!==null&&_!==""&&Number.isFinite(Number(_))&&(y[C]=Number(_))}return y}),m=f(e[0]),g=f(e[1]);return{give:m,get:g,giveKr:0,getKr:0,anchor:p,key:JSON.stringify([m,g])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=p=>[...p.querySelectorAll("[id^='trd_']")].flatMap(f=>{let m=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(f.id);return m?[{skin:Number(m[1]),count:s.kr(f.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=p=>Math.max(0,s.kr(document.getElementById(`currency_item_${p}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1),u=document.getElementById("tradeChatHolder"),h=u?.getClientRects().length?u:null;return{give:i,get:a,giveKr:l,getKr:c,anchor:o,slot:h,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:f,...m})=>({...m,skin:m.skin<0?r[f??""]?.skin??-1:m.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),u=c.data;if(u?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,u,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;container-type:inline-size;",this.box.attachShadow({mode:"open"}).innerHTML=Ym);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
      Kute trade insight';if(!t)r+=`

      ${S(o)}

      `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(m=>m.unknown),l=Gs(t.verdict),c=i?"Add items on both sides to compare":Gt[l].detail,u=Gt[l].label;a&&(u="Incomplete comparison"),i&&(u="Add both sides"),r+=`${c}`;let h=(m,g)=>{let b=m.items.reduce((k,E)=>k+E.count,0),v=m.items.some(k=>k.unknown);return`
      ${g}${Re(m.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${m.kr?` + ${Re(m.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
      `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Re(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
      ${h(t.give,"You give")}
      ${u}${p}
      ${h(t.get,"You receive")}
      `;let f=(m,g)=>`

      ${g}

      ${m.items.map(b=>`
      ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Re(b.lineValue)} KR`}
      `).join("")}${m.kr?`
      Added KR${Re(m.kr)} KR
      `:""}${!m.items.length&&!m.kr?'No items added':""}
      `;r+=`Item breakdown & evidenceHide item breakdown & evidence
      ${f(t.give,"You give")}${f(t.get,"You receive")}
      • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
      • ${t.drivers.filter(m=>!m.startsWith("Liquidity adjustments")).map(m=>`
      • ${S(m)}
      • `).join("")}
      `}if(n.innerHTML=r,e.slot){this.placed(e)||e.slot.prepend(this.box),this.chatList=document.getElementById("tradeChatList");let i=document.getElementById("tradeChatInput");this.chatList&&(this.chatList.style.maxHeight=`${Math.max(80,e.slot.clientHeight-this.box.offsetHeight-(i?.offsetHeight??0)-20)}px`)}else this.placed(e)||e.anchor.before(this.box)}},Ry=new tc,fr=Ry});var Zm={};A(Zm,{readWatchlist:()=>Se,saveWatchlist:()=>yo,toggleWatch:()=>sc});function Se(){try{let s=JSON.parse(localStorage.getItem(Jm)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function yo(s){try{return localStorage.setItem(Jm,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function sc(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:yo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var Jm,Vt=w(()=>{"use strict";Jm="kute_market_watch"});var of={};A(of,{UNREAD_EVENT:()=>Vs,default:()=>Ct});var Py,Iy,Qm,ef,tf,Vs,Ny,nc,_y,Ct,gr=w(()=>{"use strict";F();Nt();xe();Vt();We();Py=5*6e4,Iy=3*36e5,Qm="kute_market_alerts",ef="kute_market_watch_report",tf="kute_market_alerts_unread",Vs="kute-market-alerts-unread",Ny=2*36e5,nc=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(Qm)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(tf)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},Py),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(ef)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(u=>u.skin===i.skin&&u.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Iy||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";d.showNotification(`Watchlist: ${i.name} at ${Re(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},_y=new nc,Ct=_y});var rf={};A(rf,{contributedItem:()=>rc,contributedSale:()=>ac,contributedTrade:()=>ic});function Ys(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function rc(s){let e=typeof s=="number"?{ind:s}:Ys(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!mt(t)||!mt(o,1)||o>1e4)return null;let n=Ys(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!mt(a))return null;r[i]=a}}return r}function sf(s){if(typeof s=="number")return mt(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Ys(t);if(!o||!mt(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!mt(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function ic(s,e){let t=Ys(s);if(!t||!mt(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=nf(t.dte??t.date);if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(rc),r=t.skbuy.map(rc);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=sf(t.csell??[]),a=sf(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function ac(s,e){let t=Ys(s);if(!t||t.status!=="completed"||!mt(t.marketid,1,Number.MAX_SAFE_INTEGER)||!mt(t.skinindex)||!mt(t.amount,1))return null;let o=nf(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var mt,nf,lc=w(()=>{"use strict";mt=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t,nf=s=>typeof s=="string"?Date.parse(/^\d{4}-\d\d-\d\d \d\d:\d\d(:\d\d)?$/.test(s)?`${s.replace(" ","T")}Z`:s):NaN});var df={};A(df,{default:()=>br});function af(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function By(){try{let s=JSON.parse(localStorage.getItem(lf)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-cf):[])}catch{return new Set}}var lf,cf,cc,zy,br,dc=w(()=>{"use strict";F();Nt();xe();lc();lf="kute_market_sent",cf=2e3;cc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=By(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!d.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(d.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?ic(a,i):ac(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(af(`${o} -${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()cf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(lf,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},zy=new cc,br=zy});var uf={};A(uf,{DISCOVERY_TABS:()=>vr,TITLES:()=>Xs});var Xs,vr,wr=w(()=>{"use strict";Xs={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},vr=["search","active","deals","movers","intelligence"]});var pf={};A(pf,{element:()=>qo,html:()=>P,markup:()=>Js});function qo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Js,P,Be=w(()=>{"use strict";pe();Js=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var mf={};A(mf,{itemDesk:()=>uc,marketDesk:()=>pc});function uc(s){let e=s.analytics;if(!e)return'

      Advanced analytics unavailable

      This server does not yet provide the detailed metrics for this item.

      ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
      ${t.ladder.map(a=>``).join("")}
      Ask ceilingListingsTotal asks / KR
      ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
      ${a.count}
      ${T(a.kr)}
      `:'

      The next successful book observation will populate the ask ladder.

      ';return`
      ADVANCED / TRADING DESK

      Price, activity & supply

      Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

      Descriptive analytics
      Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Zs(e.latest)}
      ${ne("Sales-weighted price / 30D",Zs(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Zs(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Zs(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",en(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Yt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Yt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Yt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Zs(e.turnover30d),"Daily mean price multiplied by units sold")}

      Activity & supply pressure

      Supply ${hf(e.statsAt)}
      `+Qs("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Qs("Relative weekly volume",en(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Qs("Listed supply / daily sales",en(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Qs("Circulating supply listed",Yt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Qs("30D turnover / circulation",Yt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

      Ask-side depth ladder

      '+hf(t.observedAt)+"
      "+(o?"":'

      This book needs a fresh observation. The ladder describes the stored sample.

      ')+i+`

      Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

      Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
      ${Yt(t.largestSellerShare)}
      Read the metrics

      All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

      Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

      The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

      `}function pc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
      ADVANCED / MARKET DIAGNOSTICS

      How broad is the move?

      ${t.eligible} eligible items
      ${ne("Advance / decline ratio",en(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Yt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
      ${(s.categories??[]).map(o=>``).join("")}
      CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
      ${S($t[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Yt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

      Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

      `}var en,Yt,Zs,hf,Qs,kr=w(()=>{"use strict";pe();We();en=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Yt=s=>s==null?"Unavailable":en(s*100,"%"),Zs=s=>s==null?"Unavailable":`${T(s)} KR`,hf=s=>s?`${Ge(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Qs=(s,e,t)=>`
      ${s}${t}
      ${e}
      `});var gf={};A(gf,{overviewView:()=>hc});async function hc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*ff),W.cached("/market/indices",60*ff)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(f=>f.dayf.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(f=>f.skin)):{},u=l.length?P` +`,Ry=".item-detail-container, .items-detail-root",Ql="kuteDetailBtn",Py=5e3,ec=class s{constructor(){this.timer=void 0,this.busy=!1,this.pick=null,this.onPick=e=>{if(document.pointerLockElement||!(e.target instanceof Element))return;let t=e.target.closest("[id^='trd_'], .trade-inv-item[data-index]");if(!t)return;let o=/^trd_(?:sel_|inv_)?\d+_(\d+)/.exec(t.id),n=o?o[1]:t.getAttribute("data-index");if(n===null||!/^\d+$/.test(n))return;let r=t.querySelector(".tItemN")?.textContent?.trim()??"";this.pick={skin:Number(n),name:r,at:Date.now()}}}start(){if(this.timer===void 0){if(!document.getElementById(Xm)){let e=document.createElement("style");e.id=Xm,e.textContent=Ly,document.head.append(e)}this.timer=window.setInterval(()=>this.tick(),Ty),document.addEventListener("pointerdown",this.onPick,!0)}}stop(){clearInterval(this.timer),this.timer=void 0,document.removeEventListener("pointerdown",this.onPick,!0),this.pick=null;for(let e of document.querySelectorAll(`.${_e}, .${Ql}`))e.remove();for(let e of document.querySelectorAll(`[${ko}]`))e.removeAttribute(ko)}static thumbPath(e){let t=/\/textures\/previews\/([^?#]+)/.exec(e);return t?t[1]:null}static askOf(e){let t=e.querySelector(".inline-price");if(t){let o=Number((t.textContent??"").replace(/[^\d.]/g,""));return Number.isFinite(o)&&o>0?o:null}for(let o of e.querySelectorAll("span, div")){if(o.classList.contains(_e)||o.children.length)continue;let n=o.textContent?.trim()??"";if(/^~/.test(n))continue;let r=/^([\d,.]+)\s*KR$/i.exec(n)??/^([\d,.]+)$/.exec(n);if(r&&o.closest(".estimate-badge")===null){let i=Number(r[1].replace(/,/g,""));if(Number.isFinite(i)&&i>0)return i}}return null}async tick(){if(this.busy||document.pointerLockElement)return;let e=document.querySelector(Ry),t=e?.getAttribute("aria-label")??"1";e&&e.getAttribute(ko)!==t&&(e.setAttribute(ko,t),e.querySelector(`.${Ql}`)?.remove(),await this.detailButton(e,t));let o=[...document.querySelectorAll(Ay)].filter(n=>!n.hasAttribute(ko));if(o.length){this.busy=!0;try{let n=new Map;for(let i of o){i.setAttribute(ko,"1");let a=i.querySelector("img"),l=a instanceof HTMLImageElement?s.thumbPath(a.currentSrc||a.src):null;if(!l)continue;let c=n.get(l)??[];c.push(i),n.set(l,c)}if(!n.size)return;let r=await W.valuesByThumbnails([...n.keys()]);for(let[i,a]of n){let l=r[i];for(let c of a)c.isConnected&&this.draw(c,l??null)}}finally{this.busy=!1}}}async detailValue(e,t){let{pick:o}=this;if(o&&Date.now()-o.atc.name.toLowerCase()===t.toLowerCase())??[];return l.length===1?l[0]:null}async detailButton(e,t){let o=e.querySelector(".full-details-container, .items-detail-header-actions");if(!o)return;let n=document.createElement("button");n.type="button";let r=o.querySelector("button");n.className=`${r?.className??""} ${Ql}`.trim();let i=r?.querySelector("i")?.className??"material-icons";n.innerHTML=`candlestick_chart Kute Market`,n.title="K value, liquidity, price history, depth and owners in Kute Market",o.append(n);let a=await this.detailValue(e,t);if(!a||e.getAttribute(ko)!==t){n.remove();return}let l=n.querySelector("span");l&&(l.textContent=Wt(a)?"Kute Market \xB7 no price data":`Kute Market \xB7 K ${Re(a.fair)} ${a.grade}`),n.addEventListener("click",c=>{c.stopPropagation(),d.market?.open("item",a.skin)})}draw(e,t){if(e.querySelector(`.${_e}`)?.remove(),!t)return;let o=document.createElement("div"),n=e.querySelector(".estimate-badge");o.className=n?`${n.className} ${_e}`:`${_e} kuteFloating`;let r=s.askOf(e);if(Wt(t))o.innerHTML='K no data',o.title=`Kute has no price evidence for this item: no sale, trade or listing it could see. ${t.method==="floor"?"The game's quick-sell floor":"Krunker's estimate"} is ${Re(t.fair)} kr, and such items are often worth far more. Click for the item in Kute Market`;else{let i="";if(r!==null&&t.fair>0){let a=r/t.fair-1,l="";a<=-.1&&t.confidence>=40?l="kuteDeal":a>=.25&&(l="kuteOver");let c=Math.round(Math.abs(a)*100);i=`${a<0?"\u2212":"+"}${c}%`}o.innerHTML=`K ${Re(t.fair)}${S(t.grade)}${i}`,o.title=`Kute fair value ${Re(t.fair)} kr, evidence score ${t.confidence}/100, public-market activity grade ${t.grade}`+(t.privateTrading?.trades7d?`, ${t.privateTrading.trades7d} reported private trades this week`:"")+(t.exchange?.status==="applied"?", includes private exchange evidence":"")+(r!==null?`, this ask ${it(r/t.fair-1)} against it`:"")+". Click for the item in Kute Market"}o.addEventListener("click",i=>{i.stopPropagation(),i.preventDefault(),d.market?.open("item",t.skin)}),n?n.after(o):e.append(o)}},Iy=new ec,fr=Iy});var Qm,Zm=w(()=>{Qm='
      '});var ef={};A(ef,{default:()=>gr});var _y,oc,By,gr,sc=w(()=>{"use strict";xe();Ve();pe();Zm();_y=1200,oc=class s{constructor(){this.timer=void 0,this.lastKey="",this.retryAt=0,this.failures=0,this.generation=0,this.busy=!1,this.expanded=!1,this.dismiss=e=>{let t=this.box?.shadowRoot?.querySelector("details");if(t?.open){if(e instanceof KeyboardEvent){if(e.key!=="Escape")return;e.preventDefault(),e.stopPropagation(),t.querySelector("summary")?.focus()}else if(e.target instanceof Node&&this.box?.contains(e.target))return;t.open=!1,this.expanded=!1}},this.box=null,this.chatList=null}placed(e){return e.slot?e.slot.firstElementChild===this.box:this.box?.nextElementSibling===e.anchor}start(){this.timer===void 0&&(this.timer=window.setInterval(()=>this.tick(),_y),window.addEventListener("pointerdown",this.dismiss,!0),window.addEventListener("keydown",this.dismiss,!0))}stop(){clearInterval(this.timer),this.timer=void 0,this.generation++,window.removeEventListener("pointerdown",this.dismiss,!0),window.removeEventListener("keydown",this.dismiss,!0),this.clear()}clear(){this.box?.remove(),this.box=null,this.chatList&&(this.chatList.style.maxHeight=""),this.chatList=null,this.lastKey="",this.expanded=!1}static kr(e){let t=/([\d,.]+)/.exec(e.replace(/[~\s]/g,""));return t&&Number(t[1].replace(/,/g,""))||0}static row(e,t){let o=e.parentElement;for(;o&&!o.contains(t);)o=o.parentElement;return o&&o!==document.body?o:null}snapshot(){let e=[...document.querySelectorAll(".trade-window .trade-side")].filter(p=>p.getClientRects().length);if(e.length>=2){let p=s.row(e[0],e[1]);if(!p)return null;let f=b=>[...b.querySelectorAll(".trade-offer-scroll .trade-inv-item")].map(v=>{let k=v.getAttribute("data-index"),E=k!==null&&/^\d+$/.test(k)?Number(k):-1,L=v.querySelector("img")?.getAttribute("src")??"",y={skin:E,count:s.kr(v.querySelector(".trade-item-count")?.textContent??"1")||1};E<0&&(y.path=/\/textures\/previews\/([^?#]+)/.exec(L)?.[1]??"");for(let[C,I]of[["serial","data-serial"],["wear","data-wear-float"],["style","data-style"]]){let _=v.getAttribute(I);_!==null&&_!==""&&Number.isFinite(Number(_))&&(y[C]=Number(_))}return y}),m=f(e[0]),g=f(e[1]);return{give:m,get:g,giveKr:0,getKr:0,anchor:p,key:JSON.stringify([m,g])}}let t=[document.getElementById("tradeList0"),document.getElementById("tradeList1")];if(!t[0]?.getClientRects().length||!t[1]?.getClientRects().length)return null;let o=s.row(t[0],t[1]);if(!o)return null;let n=p=>[...p.querySelectorAll("[id^='trd_']")].flatMap(f=>{let m=/^trd_(?:sel_)?\d+_(\d+)(?:_\d+)?$/.exec(f.id);return m?[{skin:Number(m[1]),count:s.kr(f.querySelector(".tItemCnt")?.textContent??"1")||1}]:[]}),r=p=>Math.max(0,s.kr(document.getElementById(`currency_item_${p}_1`)?.querySelector(".tCurrencyAmount")?.textContent??"0")),i=n(t[0]),a=n(t[1]),l=r(0),c=r(1),u=document.getElementById("tradeChatHolder"),h=u?.getClientRects().length?u:null;return{give:i,get:a,giveKr:l,getKr:c,anchor:o,slot:h,key:JSON.stringify([i,a,l,c])}}current(e,t){if(this.timer===void 0||t!==this.generation||document.pointerLockElement||document.hidden)return!1;let o=this.snapshot();return o?.anchor===e.anchor&&o.key===e.key}async tick(){if(this.busy||this.timer===void 0||document.pointerLockElement||document.hidden)return;this.busy=!0;let{generation:e}=this;try{let t=this.snapshot();if(!t){this.clear();return}if(Date.now()p.skin<0&&p.path).map(p=>p.path),r=n.length?await W.valuesByThumbnails(n):{};if(!this.current(t,e))return;let i=p=>p.map(({path:f,...m})=>({...m,skin:m.skin<0?r[f??""]?.skin??-1:m.skin})),a=i(t.give),l=i(t.get);if([...a,...l].some(p=>p.skin<0)){this.render(t,null,"An item could not be identified. A complete comparison is unavailable.");return}let c=await W.analyzeStatus({give:a,get:l,giveKr:t.giveKr,getKr:t.getKr}),u=c.data;if(u?(this.failures=0,this.retryAt=0):(this.failures++,this.retryAt=c.status===429?c.retryAt??Date.now()+6e4:Date.now()+Math.min(6e4,5e3*2**(this.failures-1)),this.lastKey=""),!this.current(t,e))return;let h=c.status===429?`Request limit reached. Estimates resume after ${new Date(this.retryAt).toLocaleTimeString()}.`:"Estimates unavailable. Retrying with a longer delay.";this.render(t,u,h)}finally{this.busy=!1}}render(e,t,o){this.box||(this.box=document.createElement("div"),this.box.className="kuteTradeBox",this.box.style.cssText="all:initial;display:block;box-sizing:border-box;width:100%;min-width:0;margin:0 0 10px;container-type:inline-size;",this.box.attachShadow({mode:"open"}).innerHTML=Qm);let n=this.box.shadowRoot?.querySelector(".panel");if(!n)return;n.className=`panel${e.give.length||e.get.length||e.giveKr||e.getKr?" filled":""}`,this.expanded=n.querySelector("details")?.open??this.expanded;let r='
      Kute trade insight';if(!t)r+=`

      ${S(o)}

      `;else{let i=!e.give.length&&!e.giveKr||!e.get.length&&!e.getKr,a=[...t.give.items,...t.get.items].some(m=>m.unknown),l=Gs(t.verdict),c=i?"Add items on both sides to compare":Gt[l].detail,u=Gt[l].label;a&&(u="Incomplete comparison"),i&&(u="Add both sides"),r+=`${c}`;let h=(m,g)=>{let b=m.items.reduce((k,E)=>k+E.count,0),v=m.items.some(k=>k.unknown);return`
      ${g}${Re(m.value)}${v?"+":""} KR${b} ${b===1?"item":"items"}${m.kr?` + ${Re(m.kr)} KR`:""} · ${v?"Partial estimate":"Estimated value"}
      `},p=i||a?'–Incomplete comparison':`${t.difference>0?"+":""}${Re(t.difference)} KR${S(it(t.differenceShare))} of the larger side`;r+=`
      ${h(t.give,"You give")}
      ${u}${p}
      ${h(t.get,"You receive")}
      `;let f=(m,g)=>`

      ${g}

      ${m.items.map(b=>`
      ${b.count>1?`${b.count} × `:""}${S(b.name)}${b.serial!==void 0?` #${S(b.serial)}`:""}${b.wear!==void 0?` · wear ${b.wear.toFixed(4)}`:""}${b.unknown?"":`${S(b.grade)}`}${b.unknown?"Unvalued":`${Re(b.lineValue)} KR`}
      `).join("")}${m.kr?`
      Added KR${Re(m.kr)} KR
      `:""}${!m.items.length&&!m.kr?'No items added':""}
      `;r+=`Item breakdown & evidenceHide item breakdown & evidence
      ${f(t.give,"You give")}${f(t.get,"You receive")}
      • Estimates describe market data, not guaranteed sale prices. Activity grades do not guarantee a selling time.
      • ${t.drivers.filter(m=>!m.startsWith("Liquidity adjustments")).map(m=>`
      • ${S(m)}
      • `).join("")}
      `}if(n.innerHTML=r,e.slot){this.placed(e)||e.slot.prepend(this.box),this.chatList=document.getElementById("tradeChatList");let i=document.getElementById("tradeChatInput");this.chatList&&(this.chatList.style.maxHeight=`${Math.max(80,e.slot.clientHeight-this.box.offsetHeight-(i?.offsetHeight??0)-20)}px`)}else this.placed(e)||e.anchor.before(this.box)}},By=new oc,gr=By});var of={};A(of,{readWatchlist:()=>Se,saveWatchlist:()=>yo,toggleWatch:()=>nc});function Se(){try{let s=JSON.parse(localStorage.getItem(tf)??"[]");if(!Array.isArray(s))return[];let e=new Set;return s.filter(t=>!t||!Number.isInteger(t.skin)||t.skin<0||e.has(t.skin)||typeof t.name!="string"?!1:(e.add(t.skin),!0)).slice(0,100).map(t=>({skin:t.skin,name:t.name,rarity:Number.isInteger(t.rarity)?t.rarity:void 0,thumbnail:typeof t.thumbnail=="string"?t.thumbnail:null,target:Number.isFinite(t.target)&&t.target>0?t.target:null}))}catch{return[]}}function yo(s){try{return localStorage.setItem(tf,JSON.stringify(s.slice(0,100))),window.dispatchEvent(new Event("kute-market-watch-changed")),!0}catch{return!1}}function nc(s){let e=Se(),t=e.some(o=>o.skin===s.skin);return!t&&e.length>=100?!1:yo(t?e.filter(o=>o.skin!==s.skin):[...e,{skin:s.skin,name:s.name,rarity:s.rarity,thumbnail:s.thumbnail??null,target:null}])}var tf,Vt=w(()=>{"use strict";tf="kute_market_watch"});var af={};A(af,{UNREAD_EVENT:()=>Vs,default:()=>Ct});var zy,Hy,sf,nf,rf,Vs,Oy,rc,Fy,Ct,br=w(()=>{"use strict";F();Nt();xe();Vt();Ve();zy=5*6e4,Hy=3*36e5,sf="kute_market_alerts",nf="kute_market_watch_report",rf="kute_market_alerts_unread",Vs="kute-market-alerts-unread",Oy=2*36e5,rc=class{constructor(){this.timer=0,this.busy=!1,this.seen=new Map;try{let e=JSON.parse(localStorage.getItem(sf)??"[]");if(Array.isArray(e))for(let[t,o]of e.slice(0,100))Number.isInteger(t)&&Number.isFinite(o?.target)&&typeof o?.reached=="boolean"&&this.seen.set(t,o)}catch{this.seen.clear()}this.unread=new Set;try{let e=JSON.parse(localStorage.getItem(rf)??"[]");if(Array.isArray(e))for(let t of e.slice(0,100))Number.isInteger(t)&&this.unread.add(t)}catch{this.unread.clear()}this.onChange=()=>{this.check(),this.report()}}start(){this.timer||(this.timer=window.setInterval(()=>{this.check()},zy),window.addEventListener("kute-market-watch-changed",this.onChange),this.check(),this.report())}async report(){if(!this.active())return;let e=Se().map(n=>n.skin).sort((n,r)=>n-r),t=e.join(","),o={};try{o=JSON.parse(localStorage.getItem(nf)??"{}")??{}}catch{}if(!(o.key===t&&Date.now()-(o.at??0)o.target!==null);for(let o of this.seen.keys())e.some(n=>n.skin===o)||this.seen.delete(o);this.save();let t=this.unread.size;for(let o of this.unread)e.some(n=>n.skin===o)||this.unread.delete(o);if(this.unread.size!==t&&this.saveUnread(),!!e.length){this.busy=!0;try{let o=await W.values(e.map(i=>i.skin));if(!this.active())return;let n=Se(),r=[];for(let i of e){if(i.target===null||!n.some(u=>u.skin===i.skin&&u.target===i.target))continue;let a=o[i.skin];if(!a||!a.bookAt||!a.valuedAt||Date.now()-Math.min(a.bookAt,a.valuedAt)>Hy||a.lowest===null)continue;let l=a.lowest<=i.target,c=this.seen.get(i.skin);l&&(!c?.reached||c.target!==i.target)&&(r.push({name:i.name,price:a.lowest}),this.unread.add(i.skin)),this.seen.set(i.skin,{target:i.target,reached:l})}if(r.length){this.saveUnread();let i=r[0],a=r.length>1?` and ${r.length-1} more`:"";d.showNotification(`Watchlist: ${i.name} at ${Re(i.price)} KR${a}. Observed ask reached your target.`,!1,8)}this.save()}catch{}finally{this.busy=!1}}}},Fy=new rc,Ct=Fy});var df={};A(df,{contributedItem:()=>ic,contributedSale:()=>lc,contributedTrade:()=>ac});function Ys(s){let e=s;if(typeof e=="string")try{e=JSON.parse(e)}catch{return null}return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function ic(s){let e=typeof s=="number"?{ind:s}:Ys(s);if(!e)return null;let t=e.ind??e.skinindex??e.skin_index??e.i??e.index,o=e.count??e.cnt??e.c??1;if(!mt(t)||!mt(o,1)||o>1e4)return null;let n=Ys(e.m??e.metadata??e.meta)??{},r={skin:t,count:o};for(let i of["serial","wear","style","paint","instance"]){let a=e[i]??n[i];if(a!=null){if(i==="wear"?typeof a!="number"||!Number.isFinite(a)||a<0||a>1:!mt(a))return null;r[i]=a}}return r}function lf(s){if(typeof s=="number")return mt(s)?[{id:1,amount:s}]:null;if(!Array.isArray(s)||s.length>64)return null;let e=new Map;for(let t of s){let o=Ys(t);if(!o||!mt(o.cid,1)||typeof o.amt!="number"||!Number.isFinite(o.amt)||o.amt<0||o.amt>1e9||o.cid===1&&!mt(o.amt))return null;let n=(e.get(o.cid)??0)+o.amt;if(!Number.isFinite(n)||n>1e9)return null;e.set(o.cid,n)}return[...e].filter(([,t])=>t>0).map(([t,o])=>({id:t,amount:o}))}function ac(s,e){let t=Ys(s);if(!t||!mt(t.trid,1,Number.MAX_SAFE_INTEGER)||t.status&&t.status!=="completed")return null;let o=cf(t.dte??t.date);if(!Number.isFinite(o)||oe||!Array.isArray(t.sksell)||!Array.isArray(t.skbuy)||t.sksell.length+t.skbuy.length>40)return null;let n=t.sksell.map(ic),r=t.skbuy.map(ic);if([...n,...r].some(l=>!l)||!n.length&&!r.length)return null;let i=lf(t.csell??[]),a=lf(t.cbuy??[]);return!i||!a?null:{trid:t.trid,at:o,context:"history",give:n,get:r,giveCurrencies:i,getCurrencies:a,giveKr:i.find(l=>l.id===1)?.amount??0,getKr:a.find(l=>l.id===1)?.amount??0}}function lc(s,e){let t=Ys(s);if(!t||t.status!=="completed"||!mt(t.marketid,1,Number.MAX_SAFE_INTEGER)||!mt(t.skinindex)||!mt(t.amount,1))return null;let o=cf(t.date);return!Number.isFinite(o)||oe||!["buy","sell"].includes(t.type)?null:{marketid:t.marketid,type:t.type,skinindex:t.skinindex,amount:t.amount,date:new Date(o).toISOString()}}var mt,cf,cc=w(()=>{"use strict";mt=(s,e=0,t=1e9)=>typeof s=="number"&&Number.isSafeInteger(s)&&s>=e&&s<=t,cf=s=>typeof s=="string"?Date.parse(/^\d{4}-\d\d-\d\d \d\d:\d\d(:\d\d)?$/.test(s)?`${s.replace(" ","T")}Z`:s):NaN});var mf={};A(mf,{default:()=>vr});function uf(s){let e=2166136261,t=84696351;for(let o=0;o>>0,t=Math.imul(t^s.charCodeAt(o),16777619)>>>0;return e.toString(36)+t.toString(36)}function Dy(){try{let s=JSON.parse(localStorage.getItem(pf)??"[]");return new Set(Array.isArray(s)?s.filter(e=>typeof e=="string").slice(-hf):[])}catch{return new Set}}var pf,hf,dc,qy,vr,uc=w(()=>{"use strict";F();Nt();xe();cc();pf="kute_market_sent",hf=2e3;dc=class{constructor(){this.running=!1,this.generation=0,this.nextPostAt=0,this.failures=0,this.account="",this.queue=new Map,this.sent=Dy(),this.timer=void 0,this.controller=null,this.listings=new Map,this.openTrades=new Map,this.seen=new Set,this.listener=e=>this.receive(e)}start(){this.running||!d.hostFeatures?.includes("history-capture")||(this.running=!0,this.generation++,window.chrome.webview.addEventListener("message",this.listener))}stop(){this.running&&window.chrome.webview.removeEventListener("message",this.listener),this.running=!1,this.generation++,clearTimeout(this.timer),this.controller?.abort(),this.controller=null,this.queue.clear(),this.forgetCaptured()}useAccount(e){this.account!==e&&(this.queue.clear(),this.forgetCaptured(),this.account=e)}forgetCaptured(){this.listings.clear(),this.openTrades.clear(),this.seen.clear()}active(){return this.running&&!document.hidden&&!document.pointerLockElement&&!he.down&&!he.offline()&&W.loggedIn()}currentAccount(){try{return localStorage.getItem("krunker_username")??""}catch{return""}}current(e,t){return this.active()&&e===this.generation&&t===this.currentAccount()}receive(e){let t=null;try{t=typeof e.data=="string"?JSON.parse(e.data):e.data}catch{return}if(d.hostFeatures?.includes("market-capture")){t?.marketCapture&&this.captured(t.marketCapture);return}let o=t?.marketHistory;!o||o.kind!=="sales"&&o.kind!=="trades"||this.capture(o.data,o.kind)}captured(e){if(typeof e.path!="string"||e.data?.error)return;let t=e.path.split(/[?#]/)[0],o=e.data?.data;if(e.method==="GET"){if(t==="/market/history")this.capture(e.data,"sales");else if(t==="/trades/history"){if(Array.isArray(o?.open)){this.openTrades.clear();for(let i of o.open.slice(0,100))Number.isSafeInteger(i?.trid)&&this.openTrades.set(i.trid,i)}this.capture(e.data,"trades")}else t==="/market/listings"&&Array.isArray(o?.listings)&&this.listed(o.listings);return}if(e.method!=="POST")return;if(t==="/market/purchase"){let i=this.listings.get(o?.mid);if(i&&i.skin===o?.skn){let a={marketid:o.mid,type:"buy",date:new Date().toISOString(),skinindex:o.skn,amount:i.price,status:"completed"};this.capture({history:[a]},"sales")}return}let n=/^\/trades\/(\d+)\/accept$/.exec(t),r=n&&this.openTrades.get(Number(n[1]));r&&this.capture({completed:[r]},"trades")}listed(e){if(this.active()){this.useAccount(this.currentAccount());for(let t of e.slice(0,200))!Number.isSafeInteger(t?.marketid)||!Number.isSafeInteger(t?.skinindex)||!Number.isSafeInteger(t?.funds)||(this.listings.delete(t.marketid),this.listings.set(t.marketid,{skin:t.skinindex,price:t.funds}),this.seen.size<200&&this.seen.add(t.skinindex));for(;this.listings.size>3e3;)this.listings.delete(this.listings.keys().next().value??0);this.schedule()}}capture(e,t){if(!this.active()||e?.error)return;let o=this.currentAccount(),n=e?.data??e,r=t==="trades"?n?.completed:n?.history;if(!Array.isArray(r))return;this.useAccount(o);let i=Date.now();for(let a of r.slice(0,500)){let l=t==="trades"?ac(a,i):lc(a,i);if(!l)continue;let c=t+JSON.stringify(l);this.sent.has(uf(`${o} +${c}`))||this.queue.set(c,{kind:t,row:l})}for(;this.queue.size>300;)this.queue.delete(this.queue.keys().next().value??"");this.schedule()}schedule(){if(clearTimeout(this.timer),!this.running||!this.queue.size&&!this.seen.size)return;let e=Math.max(100,this.nextPostAt-Date.now(),W.retryAt-Date.now());this.timer=window.setTimeout(()=>{this.flush()},e)}async flush(){if(!this.running||this.controller||!this.queue.size&&!this.seen.size)return;if(this.account!==this.currentAccount()){this.queue.clear(),this.seen.clear();return}if(!this.active()||Date.now()hf;)this.sent.delete(this.sent.values().next().value??"");try{localStorage.setItem(pf,JSON.stringify([...this.sent]))}catch{}this.failures=0}catch{e===this.generation&&(this.failures++,this.nextPostAt=Date.now()+Math.min(6e4,5e3*2**Math.min(this.failures-1,4)))}finally{this.controller===i&&(this.controller=null,this.schedule())}}},qy=new dc,vr=qy});var ff={};A(ff,{DISCOVERY_TABS:()=>wr,TITLES:()=>Xs});var Xs,wr,kr=w(()=>{"use strict";Xs={overview:"Market",intelligence:"Discover",search:"Discover",active:"Discover",movers:"Discover",deals:"Discover",indices:"Market",watchlist:"Watchlist",portfolio:"Inventory",analyze:"Trade",help:"How it works",item:"Item overview"},wr=["search","active","deals","movers","intelligence"]});var gf={};A(gf,{element:()=>qo,html:()=>P,markup:()=>Js});function qo(s,e,...t){let o=Object.entries(e).filter(([,r])=>r!==!1&&r!==null).map(([r,i])=>i===!0?` ${r}`:` ${r}="${S(String(i))}"`).join(""),n=t.map(r=>typeof r=="object"?r.html:S(String(r))).join("");return`<${s}${o}>${n}`}var Js,P,Be=w(()=>{"use strict";pe();Js=s=>({html:s});P=(s,...e)=>s.reduce((t,o,n)=>t+String(e[n-1])+o)});var vf={};A(vf,{itemDesk:()=>pc,marketDesk:()=>hc});function pc(s){let e=s.analytics;if(!e)return'

      Advanced analytics unavailable

      This server does not yet provide the detailed metrics for this item.

      ';let{book:t}=e,o=!!t.observedAt&&Date.now()-t.observedAt<=3*36e5,n=a=>e.latest!==null&&a!==null?`${ae(e.latest/a-1)} latest daily mean vs average`:"Needs consecutive daily sale prices",{position:r}=e.range90,i=t.ladder.length?`
      ${t.ladder.map(a=>``).join("")}
      Ask ceilingListingsTotal asks / KR
      ${T(a.price)} KR${a.premium?`Within +${Math.round(a.premium*100)}% of lowest`:"At the lowest ask"}
      ${a.count}
      ${T(a.kr)}
      `:'

      The next successful book observation will populate the ask ladder.

      ';return`
      ADVANCED / TRADING DESK

      Price, activity & supply

      Completed daily means through ${S(e.throughDay)} UTC. ${e.observedDays30} of 30 days have observed sale prices.

      Descriptive analytics
      Sale-price return / 7D ${ae(e.change7d)}30D ${ae(e.change30d)}Latest daily mean ${Zs(e.latest)}
      ${ne("Sales-weighted price / 30D",Zs(e.weightedPrice30),e.weightedPrice30===null?"No completed sale-price observations":`${ae(e.estimateVsWeighted)} Kute estimate vs benchmark`)}${ne("Simple moving average / 7D",Zs(e.sma7),n(e.sma7))}${ne("Simple moving average / 30D",Zs(e.sma30),n(e.sma30))}${ne("RSI / 14 periods",en(e.rsi14),e.rsi14===null?`Needs 15 consecutive priced days; ${e.consecutiveDays} available`:"Wilder smoothing of daily sale means; scale 0 to 100")}${ne("Daily volatility / 30D",Yt(e.dailyVolatility30),`${e.returnPairs30} adjacent daily returns; needs 10; not annualized`)}${ne("Max drawdown / 90D",Yt(e.maxDrawdown90),`${e.observedDays90} priced days; gaps can hide larger declines`)}${ne("Range position / 90D",Yt(r),e.range90.low!==null?`${T(e.range90.low)} to ${T(e.range90.high)} KR in daily means`:"Needs at least 5 observed price days")}${ne("Reported turnover / 30D",Zs(e.turnover30d),"Daily mean price multiplied by units sold")}

      Activity & supply pressure

      Supply ${bf(e.statsAt)}
      `+Qs("Weekly sales",e.reportedDays7?`${T(e.sales7d)} units`:"No reports",`${e.priorReportedDays7?T(e.priorSales7d):"No reports"} in the prior week; reports on ${e.reportedDays7}/7 and ${e.priorReportedDays7}/7 days`)+Qs("Relative weekly volume",en(e.activityRatio,"x"),"Latest 7 days / prior 7; requires reports for both full weeks")+Qs("Listed supply / daily sales",en(e.daysListedAtRecentPace," days"),"Reported listings / recent daily sales; a supply ratio, not time to sell")+Qs("Circulating supply listed",Yt(e.listedShare),`${T(e.reportedListed)} reported listed / ${T(e.circulation)} circulating`)+Qs("30D turnover / circulation",Yt(e.turnoverShare),"Reported units sold / current supply; an item can trade more than once")+'

      Ask-side depth ladder

      '+bf(t.observedAt)+"
      "+(o?"":'

      This book needs a fresh observation. The ladder describes the stored sample.

      ')+i+`

      Cumulative counts in ${t.sampled} sampled listings; ${e.reportedListed} reported listed. These rows overlap. ${t.belowEstimate} sampled asks are below the Kute estimate.

      Largest observed seller${t.sellers} identified sellers; identity available for ${t.knownSellerListings}/${t.sampled} listings
      ${Yt(t.largestSellerShare)}
      Read the metrics

      All technical indicators use completed daily average sale prices, not exchange closing prices or individual transactions. Moving averages require every day in their window. RSI resets at a missing price day; a flat sequence is shown as 50. A high or low RSI describes past momentum and does not establish a buy or sell signal.

      Volatility is the sample standard deviation of log returns between adjacent observed days. Drawdown is the largest observed peak-to-trough decline. The sales-weighted benchmark weights each daily mean by its reported sale count. Missing days are excluded, never treated as zero-price trades.

      The ladder contains asking prices only. We have no bid book, so it cannot measure bid/ask spread, execution slippage, or buyer demand. Supply ratios require a supply observation within 24 hours. These metrics do not enable unvalidated forecasts.

      `}function hc(s){let e=s.diagnostics,t=s.breadth;return!e||!t?"":`
      ADVANCED / MARKET DIAGNOSTICS

      How broad is the move?

      ${t.eligible} eligible items
      ${ne("Advance / decline ratio",en(e.advanceDeclineRatio,"x"),`${t.rising} rising / ${t.falling} falling; 0.5% movement threshold`)}${ne("Median item return / 7D",ae(e.medianChange),"Equal item weighting among eligible estimates")}${ne("Middle half of returns",`${ae(e.lowerQuartile)} to ${ae(e.upperQuartile)}`,"25th to 75th percentile; dispersion across items")}${ne("Top 10 turnover share",Yt(e.top10VolumeShare),"Concentration of 30D KR turnover in eligible items")}
      ${(s.categories??[]).map(o=>``).join("")}
      CategoryEligible7D medianRising / falling30D KR turnoverTurnover share
      ${S($t[o.type]??"Other")}${o.items}${ae(o.change)}${o.rising??"?"} / ${o.falling??"?"}${T(o.volume)}${Yt(e.eligibleVolume>0?o.volume/e.eligibleVolume:null)}

      Coverage: ${t.eligible} of ${T(t.total)} tradable items. Requires a sales-based estimate updated within 24 hours, at least 5 sales in 7 days, and a measured 7D trend. Turnover shares describe this eligible set, not the entire market. Price changes use Kute estimates.

      `}var en,Yt,Zs,bf,Qs,yr=w(()=>{"use strict";pe();Ve();en=(s,e="")=>s==null?"Unavailable":s.toFixed(1)+e,Yt=s=>s==null?"Unavailable":en(s*100,"%"),Zs=s=>s==null?"Unavailable":`${T(s)} KR`,bf=s=>s?`${We(Math.max(0,Date.now()-s))} ago`:"freshness unknown",Qs=(s,e,t)=>`
      ${s}${t}
      ${e}
      `});var kf={};A(kf,{overviewView:()=>mc});async function mc(s){let[e,t]=await Promise.all([W.cached("/market/overview",5*wf),W.cached("/market/indices",60*wf)]);if(!e)return s.unavailable();let o=new Date().toISOString().slice(0,10),n=e.days.filter(f=>f.dayf.name==="kute-100"),l=Se().slice(0,4),c=l.length?await W.values(l.map(f=>f.skin)):{},u=l.length?P`
      ${l.map(f=>{let m=c[f.skin];return P` `).join("")}
      ${!r||!r.length?`
      ${r?"No matching items":"Search unavailable. Try typing again."}
      `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var vf={};A(vf,{searchView:()=>fc});async function fc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Hy);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` + `,points:n.map(f=>({t:Date.parse(f.day+"T00:00:00Z"),values:[f.volume]})),series:[{label:"KR traded",color:"#f580b4"}]}}var wf,fc=w(()=>{"use strict";Be();xe();pe();Vt();yr();wf=6e4});var yf={};A(yf,{default:()=>Ko,itemSearch:()=>xo});var xo,Ko,jo=w(()=>{"use strict";xe();pe();xo=(s,e,t,o="")=>`
      `,Ko=class{constructor(e,t,o,n,r){this.root=e,this.select=o,this.browse=n,this.holdings=r,this.input=null,this.list=null,this.items=[],this.active=-1,this.sequence=0,this.timer=0,e.addEventListener("input",i=>{i.target instanceof HTMLInputElement&&i.target.dataset.itemSearch&&this.search(i.target)},{signal:t}),e.addEventListener("focusin",i=>{i.target!==this.input&&!(i.target instanceof Element&&this.list?.contains(i.target))&&this.dismiss()},{signal:t}),e.addEventListener("pointerdown",i=>{i.target instanceof Element&&(this.list?.contains(i.target)?i.preventDefault():i.target!==this.input&&this.dismiss())},{signal:t}),e.addEventListener("click",i=>{let a=i.target instanceof Element?i.target.closest("[data-suggestion],[data-search-all]"):null;if(!(!(a instanceof HTMLElement)||!this.list?.contains(a)))if(a.dataset.suggestion!==void 0)this.choose(Number(a.dataset.suggestion));else{let l=this.input?.value.trim()??"",c=this.input?.dataset.itemSearch??"global";this.dismiss(),this.browse(l,c)}},{signal:t}),t.addEventListener("abort",()=>this.dismiss(),{once:!0})}dismiss(){clearTimeout(this.timer),this.sequence++,this.list&&(this.list.hidden=!0),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.input=null,this.list=null,this.items=[],this.active=-1}search(e){this.dismiss();let t=e.value.trim();if(!t)return;let o=this.root.getElementById(`${e.id}List`);if(!o)return;this.input=e,this.list=o,o.hidden=!1,o.innerHTML=`
      Searching items...
      `,e.setAttribute("aria-expanded","true");let{sequence:n}=this;this.timer=window.setTimeout(async()=>{let r=null;try{e.dataset.itemSearch==="holdings"?r=this.holdings().filter(c=>c.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())):r=(await W.cached(`/market/search?q=${encodeURIComponent(t)}&sort=volume&page=1`,6e4))?.items??null}catch{r=null}if(n!==this.sequence||!e.isConnected||e.value.trim()!==t)return;this.items=r?.slice(0,8)??[];let i=e.dataset.itemSearch,a=i==="holdings"?"Your holdings":"All items",l=i==="give"||i==="get"?"Add":"Open";o.innerHTML=`
      ${a}${l} an item
      ${this.items.map((c,u)=>``).join("")}
      ${!r||!r.length?`
      ${r?"No matching items":"Search unavailable. Try typing again."}
      `:""}${i==="global"||i==="discover"?'':""}`},250)}choose(e){let t=this.items[e],o=this.input?.dataset.itemSearch;!t||!o||(this.dismiss(),this.select(t,o))}key(e){if(e.isComposing)return!1;let t=this.root.activeElement;if(!(t instanceof HTMLInputElement)||!t.dataset.itemSearch)return!1;if(e.key==="Tab")return this.dismiss(),!1;if(e.key==="Escape"&&this.input)return this.dismiss(),e.preventDefault(),!0;if(e.key==="Enter"&&this.active>=0)return this.choose(this.active),e.preventDefault(),!0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return!1;if(e.preventDefault(),this.input!==t)return this.search(t),!0;if(!this.items.length)return!0;let o=this.active+(e.key==="ArrowDown"?1:-1);this.active<0&&e.key==="ArrowUp"&&(o=this.items.length-1),this.active=(o+this.items.length)%this.items.length,this.list?.querySelectorAll("[data-suggestion]").forEach((r,i)=>r.setAttribute("aria-selected",String(i===this.active)));let n=`${t.id}Option${this.active}`;return t.setAttribute("aria-activedescendant",n),this.root.getElementById(n)?.scrollIntoView({block:"nearest"}),!0}}});var xf={};A(xf,{searchView:()=>gc});async function gc(s){let e=s.searchState(),t=new URLSearchParams({sort:e.sort,page:String(e.page)});for(let[i,a]of Object.entries({q:e.q,rarity:e.rarity,type:e.type,budget:e.budget,[s.tab==="active"?"min_activity":"min_sales"]:e.minSales}))a!==""&&t.set(i,a);let o=await W.cached(`/market/search?${t}`,Ky);if(!o)return s.unavailable();let n=(i,a)=>i.map((l,c)=>P` `).join(""),r=Math.max(1,Math.ceil(o.total/o.perPage));return{asOf:o.asOf,html:s.intro(s.tab==="active"?"Find items that are trading.":"Find your next item.",s.tab==="active"?`At least ${e.minSales} public sales or reported private exchanges in seven days. Private activity is shown separately from cash-sale liquidity.`:"Browse by budget, recent activity, or the items you already have in mind.",'')+P`
      @@ -371,8 +371,8 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      - `}}var Hy,gc=w(()=>{"use strict";Be();xe();We();pe();jo();Hy=6e4});var wf={};A(wf,{dealEvidence:()=>bc,intelligenceView:()=>wc,itemIntelligence:()=>vc});function bc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function vc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
      {"use strict";Be();xe();Ve();pe();jo();Ky=6e4});var Sf={};A(Sf,{dealEvidence:()=>vc,intelligenceView:()=>kc,itemIntelligence:()=>wc});function vc(s){let{assessment:e}=s;if(!e)return"";let t=e.risks[0]??"Supported by recent sales";return`${S(t)}${e.risks.length>1?` +${e.risks.length-1} risk${e.risks.length>2?"s":""}`:""}`}function wc(s,e=!1){if(!s)return"";let{outlook:t}=s,o=s.signals.slice(0,e?2:4);if(!o.length&&t.state!=="published")return"";let n="";return t.state==="published"&&(n=`
      7-DAY REPORTED-PRICE OUTLOOK @@ -392,11 +392,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${S(r.title)}

      ${S(r.detail)}

      -
      `).join(""):'

      No observation to highlight.

      '}${n}`}function wc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),u=h=>`${T(h.samples)} +
      `).join(""):'

      No observation to highlight.

      '}${n}`}function kc(s,e,t,o){let{model:n}=s,r=n?.historical,i=n?.forward,a=r?.skill??null,l=[["","All signals"],["activity","Activity"],["supply","Supply"],["relative","Relative value"],["risk","Risks"],["availability","Availability"]],c=[...s.items].sort((h,p)=>Number(o.includes(p.skin))-Number(o.includes(h.skin))),u=h=>`${T(h.samples)} ${h.weeks} ${h.modelError===null?"Pending":h.modelError.toFixed(3)} -${h.skill===null?"Pending":yr(h.skill)} -${h.coverage===null?"Pending":yr(h.coverage)}`;return`
      +${h.skill===null?"Pending":xr(h.skill)} +${h.coverage===null?"Pending":xr(h.coverage)}`;return`
      KUTE INTELLIGENCE

      Read the market.

      @@ -416,7 +416,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del class="intelligenceProof"> Historical error reduction ${a===null?"Pending":yr(a)} + class="${a!==null&&a>0?"positive":"muted"}">${a===null?"Pending":xr(a)} vs the better of two baselines
      ${T(r?.samples??0)} held-out predictions
      ${T(i?.samples??0)} forward outcomes @@ -472,7 +472,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

      Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${yr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

      `:""}
      Lower log error is better. Error reduction compares with the better of unchanged last price and the existing valuation baseline. Historical mean range width: ${xr(r.width)} of the predicted price. Forward publication requires 200 outcomes, 20 items, four issue weeks, at least 5% lower error, 85-95% range coverage and mean range width no greater than the predicted price.

      `:""}
      ${T(s.coverage.dailyRows)} daily observations @@ -480,11 +480,11 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${T(s.coverage.items)} items with sales history

      Sales history: ${S(s.coverage.firstDay??"Pending")} to ${S(s.coverage.lastDay??"Pending")}. Supply observations since ${s.coverage.supplySince?S(new Date(s.coverage.supplySince).toISOString().slice(0,16).replace("T"," ")):"collection began"}. ${n?`Model trained ${S(Ge(Date.now()-n.trainedAt))} ago.`:""}

      ${s.sources.length?`
      ${s.sources.map(h=>`${S(h.source)}: ${h.records} records · ${S(Ge(Date.now()-h.observedAt))} ago`).join("")}
      `:'

      News and catalog feeds have not been collected yet.

      '}`+(s.news.length?`
      Sales history: ${S(s.coverage.firstDay??"Pending")} to ${S(s.coverage.lastDay??"Pending")}. Supply observations since ${s.coverage.supplySince?S(new Date(s.coverage.supplySince).toISOString().slice(0,16).replace("T"," ")):"collection began"}. ${n?`Model trained ${S(We(Date.now()-n.trainedAt))} ago.`:""}

      ${s.sources.length?`
      ${s.sources.map(h=>`${S(h.source)}: ${h.records} records · ${S(We(Date.now()-h.observedAt))} ago`).join("")}
      `:'

      News and catalog feeds have not been collected yet.

      '}`+(s.news.length?`

      Official news

      ${s.news.map(h=>`

      ${h.url?``:S(h.title)}

      `).join("")}
      `:"")}var yr,tn=w(()=>{"use strict";pe();We();yr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var kf={};A(kf,{contributionEvidence:()=>kc});function kc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`
      + class="sub">${h.url?``:S(h.title)}

      `).join("")}
      `:"")}var xr,tn=w(()=>{"use strict";pe();Ve();xr=s=>s===null?"Not available":`${(s*100).toFixed(1)}%`});var Ef={};A(Ef,{contributionEvidence:()=>yc});function yc(s){if(!s||!s.trades30d&&!s.sales30d)return"";let{cash:e,sales:t,swaps:o}=s;return`

      Completed trade reports

      30 days

      ${T(s.trades30d)} reported private trades involved this item. ${T(s.matchedSales30d)} of ${T(s.sales30d)} contributed market sales match independently sampled listings and fit official daily totals.

      @@ -499,7 +499,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del Comparisons require multiple reports, source sessions and dates; source sessions do not identify unique players. These descriptive samples exclude bundles and reported serial, wear, style and paint attributes. The valuation model separately uses supported bundles with KR anchors; its contribution is explained above.

      -
      `}var yc=w(()=>{"use strict";pe()});var yf={};A(yf,{exchangeEvidence:()=>xc});function xc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`
      +
      `}var xc=w(()=>{"use strict";pe()});var $f={};A($f,{exchangeEvidence:()=>Sc});function Sc(s,e){let t=s.exchange;if(!t&&!s.privateTrading?.trades30d)return"";let o=t?.status==="applied";return`

      ${o?"Private trades contribute to this value":"Private trading activity"}

      ${o&&t.confidence<35?"Tentative evidence":"Reported exchanges"}
      ${o?`

      ${T(t.reports)} eligible exchanges inform the ${T(s.fair)} KR Kute estimate. @@ -507,13 +507,13 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${S(t?.reason??"These reports establish activity; their currencies or instance attributes do not yet support a base-item KR estimate.")}

      `} ${s.privateTrading?`

      ${T(s.privateTrading.trades7d)} private trades in seven days. Latest reported trade date: ${S(s.privateTrading.lastTradeDay)} UTC.

      `:""} ${e&&o?`
      -
      Public-data baseline${T(t.baseline)} KR${S(Oy[t.baselineMethod]??"Public evidence")}
      +
      Public-data baseline${T(t.baseline)} KR${S(jy[t.baselineMethod]??"Public evidence")}
      Model sensitivity range${T(t.low)} to ${T(t.high)}KR; not a calibrated prediction interval
      Report diversity${S(t.sources)} source${t.sources===1?"":"s"} / ${S(t.days)} day${t.days===1?"":"s"}Anonymous connections, not verified unique players
      `:""}

      Client reports can be incomplete or inaccurate. A verdict needs sufficient combined public and private evidence. Private trading does not establish cash-sale liquidity. The letter grade still describes public-market activity.

      -
      `}var Oy,Sc=w(()=>{"use strict";pe();Oy={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var Sf={};A(Sf,{candleSeries:()=>$c,lineSegments:()=>Ec});function Ec(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function xf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let u=a.ask;u&&(c.ask?(c.ask.high=Math.max(c.ask.high,u.high),c.ask.low=Math.min(c.ask.low,u.low),c.ask.close=u.close,c.ask.samples+=u.samples):c.ask={...u})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function $c(s,e){let t=e,o=xf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of Fy.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=xf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var Fy,xr=w(()=>{"use strict";Fy=[36e5,144e5,432e5,864e5,6048e5]});var Ef={};A(Ef,{itemView:()=>Cc});function qy(s,e){let t=Ut[s.rarity]?.name??"items",o=[`Nobody has sold, traded or listed this item where Kute could see it, so ${s.method==="floor"?"the number above is only what the game pays on quick sell":"the number above is Krunker's own estimate"}. It can be worth far more.`];if(e&&e.pricedItems>=5&&e.low!==null&&e.high!==null&&o.push(`For reference, ${t} items with recent sales mostly went for ${T(e.low)} to ${T(e.high)} KR (middle half of ${e.pricedItems} items). Rare items of the same rarity can be worth many times that.`),e&&e.krunkerItems>=5&&e.krunkerRatio!==null){let n=Math.abs(e.krunkerRatio-1)<.1?"close to their real sale prices":`${e.krunkerRatio<1?"above":"below"} their real sale prices (ratio ${e.krunkerRatio})`;o.push(`Where ${t} items do sell, Krunker's estimate sits ${n}, but it is missing for most items without sales.`)}return`
      ${o.map(S).join("
      ")}
      `}async function Cc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),u=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,f=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],m=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&m.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...m.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?$c(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),y=(i?.listings??[]).slice(0,s.advanced?250:5),C=i?.observedAt??l?.bookAt,I=!C||Date.now()-C>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` +
      `}var jy,Ec=w(()=>{"use strict";pe();jy={sales7d:"7-day public sales",sales30d:"30-day public sales",sales90d:"90-day public sales",ask:"Sampled asking prices",krunker:"Krunker estimate",floor:"Fallback estimate"}});var Mf={};A(Mf,{candleSeries:()=>Cc,lineSegments:()=>$c});function $c(s,e,t){let o=[],n=null,r=!1;for(let i of s){let a=i.values[e];if(a==null||!Number.isFinite(a)){r=!0;continue}n&&o.push({from:n,to:i,gap:r||i.t-n.t>t*1.5}),n=i,r=!1}return o}function Cf(s,e,t){let o=new Map,n=e===7*864e5?4*864e5:0;for(let a of[...s].sort((l,c)=>l.t-c.t)){let l=Math.floor((a.t-n)/e)*e+n,c=o.get(l);c||(c={t:l,end:l+e,values:[],volume:null,ask:null,partial:!1},o.set(l,c));for(let[h,p]of a.values.entries())p!==null&&Number.isFinite(p)&&(c.values[h]=p);a.volume!==null&&a.volume!==void 0&&Number.isFinite(a.volume)&&(c.volume=(c.volume??0)+a.volume);let u=a.ask;u&&(c.ask?(c.ask.high=Math.max(c.ask.high,u.high),c.ask.low=Math.min(c.ask.low,u.low),c.ask.close=u.close,c.ask.samples+=u.samples):c.ask={...u})}let r=Math.min(...s.map(a=>a.t)),i=Math.max(...s.map(a=>a.t+t));for(let a of o.values())a.partial=a.ti||(a.end??0)>Date.now();return[...o.values()]}function Cc(s,e){let t=e,o=Cf(s,t,e),n=a=>{let l=a.filter(c=>c.ask);return{count:l.length,share:l.filter(c=>(c.ask?.samples??0)>1).length/Math.max(1,l.length)}},r=n(o);for(let a of Uy.filter(l=>l>e)){if(r.share>=.6||r.count<2)break;let l=Cf(s,a,e),c=n(l);c.count<2||c.share<=r.share||(t=a,o=l,r=c)}let i=t>=864e5?`${t/864e5}D`:`${t/36e5}h`;return{points:o,stepMs:t,label:i}}var Uy,Sr=w(()=>{"use strict";Uy=[36e5,144e5,432e5,864e5,6048e5]});var Tf={};A(Tf,{itemView:()=>Mc});function Wy(s,e){let t=Ut[s.rarity]?.name??"items",o=[`Nobody has sold, traded or listed this item where Kute could see it, so ${s.method==="floor"?"the number above is only what the game pays on quick sell":"the number above is Krunker's own estimate"}. It can be worth far more.`];if(e&&e.pricedItems>=5&&e.low!==null&&e.high!==null&&o.push(`For reference, ${t} items with recent sales mostly went for ${T(e.low)} to ${T(e.high)} KR (middle half of ${e.pricedItems} items). Rare items of the same rarity can be worth many times that.`),e&&e.krunkerItems>=5&&e.krunkerRatio!==null){let n=Math.abs(e.krunkerRatio-1)<.1?"close to their real sale prices":`${e.krunkerRatio<1?"above":"below"} their real sale prices (ratio ${e.krunkerRatio})`;o.push(`Where ${t} items do sell, Krunker's estimate sits ${n}, but it is missing for most items without sales.`)}return`
      ${o.map(S).join("
      ")}
      `}async function Mc(s){let e=s.itemState(),t=!e.candles&&e.range==="7D"?"1M":e.range,o=await W.itemDesk(e.skin,t);t!==e.range&&o?.history&&!o.history.points.some(B=>B.t>=Date.now()-7*864e5&&B.avg!==null)&&(t=e.range,o=await W.itemDesk(e.skin,t)??o);let{item:n,history:r,listings:i}=o??{};if(!n)return s.unavailable();let a=n.skin,l=n.evidence,c=Se().some(B=>B.skin===a.skin),u=l?.dailyRange,h=l?`${l.sales} sales across ${l.days} trading days in 30D`:`${n.liquidity.sales30d} sales in 30 days`,p=a.exchange?.status==="applied"?`${a.exchange.reports} eligible private exchanges${a.method.startsWith("sales")?" + public sales":"; tentative when sparse"}`:h,f=l?.reasons??[p,`The estimate is based on ${a.method.startsWith("sales")?"historical sales aggregates":"limited market evidence"}.`],m=[{label:r?.resolution==="hour"?"Lowest observed ask":"Daily average sale",color:"#f580b4"}];e.overlay!=="none"&&m.push({label:{fair:"Kute estimate",lowest:"Lowest observed ask",krunker:"Krunker estimate"}[e.overlay]??"Comparison",color:"#87b8f7"});let g=(r?.points??[]).filter(B=>t===e.range||B.t>=Date.now()-7*864e5).map(B=>({t:B.t,values:[r?.resolution==="hour"?B.lowest:B.avg,...m.length>1?[{fair:B.fair,lowest:B.lowest,krunker:B.krunker}[e.overlay]??null]:[]],volume:r?.resolution==="day"&&B.salesObserved!==!1?B.sales:null,ask:B.ask})),b=r?.resolution==="hour"?36e5:864e5,v=e.candles?Cc(g,b):null;v&&({points:g,stepMs:b}=v);let k="Daily average completed-sale prices. Today's point, when present, is incomplete. Dashed connections cross missing observations; they do not supply prices for those dates.";r?.resolution==="hour"&&(k="Intraday lines show sampled asks. Dashed connections cross unsampled periods. Official sales data is daily; individual transaction timing is unavailable."),v&&(k=`Auto interval: ${v.label}. Sparse quotes use larger intervals when they can support multiple candles. Green and red show rising and falling sampled asks; gray ticks show one quote or an unchanged close. Empty intervals remain empty. These are asking-price candles, not transaction candles.`);let E=Math.max(8,Math.ceil(g.length/e.zoom)),L=Math.max(1,Math.floor(E/2)),y=(i?.listings??[]).slice(0,s.advanced?250:5),C=i?.observedAt??l?.bookAt,I=!C||Date.now()-C>3*36e5,_=i?.highest,H="Unavailable",G="No available quote";_===null?H="None observed":_!==void 0&&(H=P` ${T(_)} KR `,G=`Sampled ask, not a sale price${I?" · quote needs updating":""}`);let J=B=>P` @@ -554,7 +554,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

      ${S(a.name)}

      - ${S(Jl(a))} + ${S(Zl(a))} · ${S(Ws(a))}

      @@ -572,13 +572,13 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del KR `,a.spread!==null?ae(a.spread)+` vs estimate${I?" · quote needs updating":""}`:"No available quote")}${ne("Highest observed ask",H,G)}${ne("Sales in the last 7 days",String(a.sales7d),`${a.onS} currently listed · ${T(a.inC)} in circulation`)}
      - ${Wt(a)?qy(a,n.rarityContext):""} + ${Wt(a)?Wy(a,n.rarityContext):""} `+P`

      Price history

      - ${Dy.map(B=>P` + ${Gy.map(B=>P` `).join("")}
      @@ -641,7 +641,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

      ${r?k:""} Dates and times are UTC.

      - `+xc(a,s.advanced)+vc(n.intelligence)+(s.advanced?uc(n)+kc(n.contributions):"")+P` + `+Sc(a,s.advanced)+wc(n.intelligence)+(s.advanced?pc(n)+yc(n.contributions):"")+P`
      THE CONTEXT
      @@ -706,7 +706,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

      Available listings

      ${i?i.total:"Unknown total"} reported - listed${C?` · observed ${Ge(Date.now()-C)} ago`:" · freshness unknown"} + listed${C?` · observed ${We(Date.now()-C)} ago`:" · freshness unknown"}
      ${I?'
      These quotes need a fresh market observation. A listing may have changed or sold since it was last seen.
      ':""}${s.advanced?P` @@ -769,7 +769,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${ae(B.price/a.fair-1)} ${S(B.seller??"Unavailable")} ${s.advanced?P` - ${B.ageMs===null?"Unknown":Ge(B.ageMs)} + ${B.ageMs===null?"Unknown":We(B.ageMs)} ${B.serial!==null?`#${S(B.serial)}`:""}${B.wear!==null?` · wear ${B.wear.toFixed(3)}`:""} @@ -841,7 +841,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

      ${J(n.instances.serial)}${J(n.instances.wear)}
      - `:"")}}var Dy,Mc=w(()=>{"use strict";Be();xe();wr();We();pe();Vt();kr();tn();yc();Sc();xr();Dy=["1D","7D","1M","3M","1Y","ALL"]});var $f={};A($f,{watchlistView:()=>Tc});async function Tc(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
      '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
      "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let u=a[c]?.skin?.rarity;Number.isInteger(u)&&(l.rarity=u)}),o.some(l=>l.rarity!==void 0)&&yo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set(Ct.unread);queueMicrotask(()=>Ct.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P` + `:"")}}var Gy,Tc=w(()=>{"use strict";Be();xe();kr();Ve();pe();Vt();yr();tn();xc();Ec();Sr();Gy=["1D","7D","1M","3M","1Y","ALL"]});var Af={};A(Af,{watchlistView:()=>Ac});async function Ac(s){let e=Se(),t=s.intro("Your eye on the market.","Watch prices and set targets. Your list is saved only on this device.",'');if(!e.length)return{html:t+'
      '+fe("Start with something you like","Open an item and choose Watch item. It will appear here with its latest estimate and asking price.",'')+"
      "};let o=e.filter(a=>a.rarity===void 0);if(o.length){let a=await Promise.all(o.map(l=>W.cached(`/market/item/${l.skin}`,3e5)));o.forEach((l,c)=>{let u=a[c]?.skin?.rarity;Number.isInteger(u)&&(l.rarity=u)}),o.some(l=>l.rarity!==void 0)&&yo(e)}let n=await W.values(e.map(a=>a.skin)),r=new Set(Ct.unread);queueMicrotask(()=>Ct.markRead());let i=Math.min(...Object.values(n).flatMap(a=>a.valuedAt?[a.valuedAt]:[]));return{asOf:Number.isFinite(i)?i:void 0,html:t+P`
      @@ -892,7 +892,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del Targets compare against the latest observed ask. Check the item page for listing freshness. Target alerts are checked in the menu, never during gameplay.

      - `}}var Ac=w(()=>{"use strict";Be();xe();pe();Vt();gr()});var Cf={};A(Cf,{moversView:()=>Lc});async function Lc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*Ky);if(!t)return s.unavailable();let o=n=>P` + `}}var Lc=w(()=>{"use strict";Be();xe();pe();Vt();br()});var Lf={};A(Lf,{moversView:()=>Rc});async function Rc(s){let e=typeof s.arg=="string"?s.arg:"7D",t=await W.cached(`/market/movers?window=${e}`,5*Vy);if(!t)return s.unavailable();let o=n=>P`
      ${n.slice(0,10).map(r=>P`
      - `}}var Ky,Rc=w(()=>{"use strict";Be();xe();pe();Ky=6e4});var Mf={};A(Mf,{dealsView:()=>Pc});async function Pc(s){let e=s.arg?.budget??"",t=P` + `}}var Vy,Pc=w(()=>{"use strict";Be();xe();pe();Vy=6e4});var Rf={};A(Rf,{dealsView:()=>Ic});async function Ic(s){let e=s.arg?.budget??"",t=P`
      cf;)this.sent.del />
      - `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,jy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P` + `,o=await W.cached(`/market/deals?min_grade=C&limit=100&budget=${encodeURIComponent(e)}`,Yy);return o?{asOf:o.asOf,asOfLabel:"Quotes observed",html:s.intro("Worth a closer look.","Observed asks below a sales-based estimate. Inspect the evidence before deciding.")+t+(o.deals.length?P`
      @@ -953,7 +953,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del ${o.deals.map(n=>P` - + @@ -970,7 +970,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del recent lower prices, unstable prices, supply changes and concentrated listings. Quotes older than three hours are excluded; availability can still change.

      - `:'
      '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
      ")}:s.unavailable()}var jy,Ic=w(()=>{"use strict";Be();xe();pe();tn();jy=6e4});var Tf={};A(Tf,{indicesView:()=>Nc});async function Nc(s){let e=await W.cached("/market/indices",60*Uy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P` + `:'
      '+fe("No supported candidates right now","The scanner only includes sales-based estimates with sufficient activity and a meaningful discount. Your watchlist can track specific items in the meantime.",'')+"
      ")}:s.unavailable()}var Yy,Nc=w(()=>{"use strict";Be();xe();pe();tn();Yy=6e4});var Pf={};A(Pf,{indicesView:()=>_c});async function _c(s){let e=await W.cached("/market/indices",60*Xy);if(!e)return s.unavailable();let t=e.indices.find(o=>o.name===s.arg)??e.indices.find(o=>o.name==="kute-100")??e.indices[0];return{asOf:e.asOf,html:s.intro("The wider picture.","Equal-weighted indices of eligible items. Base 100 at launch, rebalanced monthly.",'')+P`

      ${S(t?.name??"Index history")}

      @@ -1003,12 +1003,12 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      ${me(n)}${bc(n)}${me(n)}${vc(n)} ${T(n.price)} ${T(n.fair)} ${Math.round(n.discount*100)}%
      - `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Uy,_c=w(()=>{"use strict";Be();xe();pe();Uy=6e4});var Af={};A(Af,{portfolioView:()=>Bc});async function Bc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P` + `,points:(t?.series??[]).map(o=>({t:Date.parse(o.day+"T00:00:00Z"),values:[o.value]})),series:[{label:t?.name??"Index",color:"#f580b4"}]}}var Xy,Bc=w(()=>{"use strict";Be();xe();pe();Xy=6e4});var If={};A(If,{portfolioView:()=>zc});async function zc(s){let e=typeof s.arg=="string"?s.arg:"";if(!e)try{e=localStorage.getItem("krunker_username")??""}catch{e=""}let t=s.intro("Know what you hold.","A view of today's holdings, their estimated value, and where it is concentrated."),o=P`
      - `;if(!e)return{html:t+o+fe("Choose an inventory","Enter a username to value its public inventory.")};let n=await W.cached(`/market/portfolio?name=${encodeURIComponent(e)}`,5*Gy);if(!n)return{html:t+o+fe("Inventory is unavailable","The player may not exist, or their inventory could not be loaded.",'')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.itemsTry again')};let r=new Map(n.historyCoverage?.map(h=>[h.day,h])??[]),i=n.historyBasket,a=i?.series??n.series,l=i&&i.items

      ${S(c)} Historical prices applied to what you own today; this is not personal profit. Marks expire after @@ -1079,7 +1079,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del

      - `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Gy,zc=w(()=>{"use strict";Be();xe();pe();jo();Gy=6e4});var Lf={};A(Lf,{analyzeView:()=>Hc});async function Hc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,u=e[i].reduce((p,f)=>p+f.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P` + `,points:a.map(h=>({t:Date.parse(h.day+"T00:00:00Z"),values:[!i&&r.has(h.day)&&r.get(h.day)?.priced!==r.get(h.day)?.total?null:h.value]})),series:[{label:"Covered holdings at historical prices",color:"#f580b4"}]}}var Jy,Hc=w(()=>{"use strict";Be();xe();pe();jo();Jy=6e4});var Nf={};A(Nf,{analyzeView:()=>Oc});async function Oc(s){let{analyzer:e}=s,t=!!(e.give.length||e.get.length||e.giveKr||e.getKr),o=t?await W.analyze({give:e.give.map(({skin:i,count:a})=>({skin:i,count:a})),get:e.get.map(({skin:i,count:a})=>({skin:i,count:a})),giveKr:e.giveKr,getKr:e.getKr}):null,n=i=>{let a=o?.[i],l=i==="give"?e.giveKr:e.getKr,c=a?.items.some(p=>p.unknown)??!1,u=e[i].reduce((p,f)=>p+f.count,0),h=t?"Unavailable":"0";return a&&(h=T(a.value)),P`

      ${i==="give"?"You give":"You receive"}

      @@ -1108,7 +1108,7 @@ ${l}`));for(let l of n)this.seen.delete(l);for(;this.sent.size>cf;)this.sent.del
      ${g} - ${m?Xl(m):"Needs more evidence"} + ${m?Jl(m):"Needs more evidence"}
      ");return(r?o.slice(6):o)+n+(r?"
      ":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),d.settings.togglePerformanceMode=t=>{for(let o of hn(d.settings.data,t)){let n=d.settings.data[o];Hg(o,n),zg(o,n===!0&&!Pg(Jt[o]))}setTimeout(()=>this.rerender(),0)},d.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){d.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}d.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(Sx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(d.settings.data.rawInput&&d.platform!=="linux"?" checked":"")+" disabled>",l=d.platform==="linux"?$x:Ex;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=d.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
      ${e.button}
      `:e.button&&(r=`
      ${e.button}
      `),e.type){case"checkbox":{let a=Pg(e);if(a)return`
      ");return(r?o.slice(6):o)+n+(r?"":"")},this.settingsWindow.getCSettings=()=>this.getCSettings(),d.settings.togglePerformanceMode=t=>{for(let o of hn(d.settings.data,t)){let n=d.settings.data[o];qg(o,n),Dg(o,n===!0&&!Bg(Jt[o]))}setTimeout(()=>this.rerender(),0)},d.openKuteSettings=()=>{window.showWindow(1),this.settingsWindow.changeTab(this.settingsWindow.tabs[this.settingsWindow.settingType].length-1)},window.chrome.webview.addEventListener("message",t=>{let o=t.data;if(o?.type==="obs-plugin"){if(!o.ok){d.settings.data.obsCapturePlugin=!1;let n=document.querySelector("#obsCapturePlugin");n&&(n.checked=!1)}d.showNotification(o.message,!1,5)}})}rerender(){let e=this.settingsWindow.tabs[this.settingsWindow.settingType];(this.settingsWindow.tabIndex===e.length-1||this.settingsWindow.settingSearch)&&this.settingsWindow.changeTab(this.settingsWindow.tabIndex)}lockRawMouse(e){let t=e.indexOf(Tx);if(t<0)return e;let o=e.lastIndexOf("",t),r=e.lastIndexOf("",r);if(i<0||i>o)return e;let a=e.slice(o,n).replace(/\s+checked\b/,"")+(d.settings.data.rawInput&&d.platform!=="linux"?" checked":"")+" disabled>",l=d.platform==="linux"?Lx:Ax;return e.slice(0,i)+` title="${l}">`+e.slice(i+1,o)+a+e.slice(n+1)}searchMatches(e){let t=this.settingsWindow.settingSearch.toLowerCase()||"";return[e.name,e.category,e.description??""].some(o=>o.toLowerCase().includes(t))}generateHtml(e){let t=d.settings.data[e.id],o=e.buttonAction?.replaceAll("{{kute}}",Ue).replaceAll('"',""")??"",n=e.requiresLogin&&document.querySelector("#signedInHeaderBar")===null,r="",i=e.type==="checkbox"?"margin-right: 8px; ":"";switch(e.button&&n?r=`
      ${e.button}
      `:e.button&&(r=`
      ${e.button}
      `),e.type){case"checkbox":{let a=Bg(e);if(a)return` - ${r}`;if(n)return`