@bloopjs/web 0.0.83 → 0.0.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/mod.js.map CHANGED
@@ -2,8 +2,8 @@
2
2
  "version": 3,
3
3
  "sources": ["../../bloop/dist/mod.js", "../../engine/dist/engine.js", "../../../node_modules/preact/dist/preact.module.js", "../../../node_modules/preact/hooks/dist/hooks.module.js", "../../../node_modules/@preact/signals-core/dist/signals-core.module.js", "../../../node_modules/@preact/signals/dist/signals.module.js", "../src/debugui/state.ts", "../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js", "../src/debugui/components/Stats.tsx", "../src/debugui/hooks/useAutoScroll.ts", "../src/debugui/components/Logs.tsx", "../src/debugui/components/DebugToggle.tsx", "../src/debugui/components/TopBar.tsx", "../src/debugui/components/VerticalBar.tsx", "../src/debugui/components/BottomBar.tsx", "../src/debugui/components/Root.tsx", "../src/debugui/styles.ts", "../src/debugui/DebugUi.ts", "../../../node_modules/partysocket/dist/chunk-V6LO7DXK.mjs", "../src/netcode/logs.ts", "../src/netcode/transport.ts", "../src/netcode/broker.ts", "../src/App.ts", "../src/netcode/protocol.ts", "../src/netcode/scaffold.ts"],
4
4
  "sourcesContent": [
5
- "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// src/util.ts\nvar exports_util = {};\n__export(exports_util, {\n unwrap: () => unwrap,\n toHexString: () => toHexString,\n logPerSecond: () => logPerSecond,\n logOnce: () => logOnce,\n logEvery: () => logEvery,\n assert: () => assert\n});\nfunction toHexString(dataView, length) {\n length ??= dataView.byteLength;\n let hexString = \"\";\n for (let i = 0;i < length; i++) {\n const byte = dataView.getUint8(i);\n hexString += `${byte.toString(16).padStart(2, \"0\")} `;\n }\n return hexString.trim();\n}\nfunction assert(condition, message) {\n if (condition == null || condition === false) {\n throw new Error(message ?? \"Assertion failed\");\n }\n}\nvar backpressureLogs = new Map;\nfunction logOnce(...args) {\n const key = args.map((a) => String(a)).join(\" \");\n if (!backpressureLogs.has(key)) {\n console.log(...args);\n backpressureLogs.set(key, 1);\n }\n}\nfunction logPerSecond(now, ...args) {\n logEvery(now, 1000, ...args);\n}\nfunction logEvery(now, interval = 10, ...args) {\n const key = args.map((a) => String(a)).join(\" \");\n const lastLogged = backpressureLogs.get(key) ?? -Infinity;\n if (now - lastLogged >= interval) {\n console.log(...args);\n backpressureLogs.set(key, now);\n }\n}\nfunction unwrap(value, message) {\n assert(value != null, message ?? `Unwrap failed: value is ${value}`);\n return value;\n}\n// ../engine/dist/engine.js\nvar exports_engine = {};\n__export(exports_engine, {\n readTapeHeader: () => readTapeHeader,\n mouseButtonToMouseButtonCode: () => mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton: () => mouseButtonCodeToMouseButton,\n keyToKeyCode: () => keyToKeyCode,\n keyCodeToKey: () => keyCodeToKey,\n inputSourceToInputSourceCode: () => inputSourceToInputSourceCode,\n inputSourceCodeToInputSource: () => inputSourceCodeToInputSource,\n TimeContext: () => TimeContext,\n TIME_CTX_OFFSET: () => TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET: () => SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN: () => SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET: () => SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n PlayerInputContext: () => PlayerInputContext,\n PLAYER_INPUTS_SIZE: () => PLAYER_INPUTS_SIZE,\n NetContext: () => NetContext,\n NET_CTX_OFFSET: () => NET_CTX_OFFSET,\n MouseContext: () => MouseContext,\n MOUSE_OFFSET: () => MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET: () => MOUSE_BUTTONS_OFFSET,\n MAX_ROLLBACK_FRAMES: () => MAX_ROLLBACK_FRAMES,\n MAX_PLAYERS: () => MAX_PLAYERS,\n KeyboardContext: () => KeyboardContext,\n KEYBOARD_SIZE: () => KEYBOARD_SIZE,\n KEYBOARD_OFFSET: () => KEYBOARD_OFFSET,\n InputContext: () => InputContext,\n INPUT_CTX_SIZE: () => INPUT_CTX_SIZE,\n INPUT_CTX_OFFSET: () => INPUT_CTX_OFFSET,\n Enums: () => exports_enums,\n EVENT_PAYLOAD_SIZE: () => EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN: () => EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET: () => EVENTS_OFFSET,\n DEFAULT_WASM_URL: () => DEFAULT_WASM_URL\n});\nvar __defProp2 = Object.defineProperty;\nvar __export2 = (target, all) => {\n for (var name in all)\n __defProp2(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\nvar exports_enums = {};\n__export2(exports_enums, {\n NetJoinFailReason: () => NetJoinFailReason,\n MouseButton: () => MouseButton,\n Key: () => Key,\n InputSource: () => InputSource,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n EventType2[EventType2[\"NetJoinOk\"] = 8] = \"NetJoinOk\";\n EventType2[EventType2[\"NetJoinFail\"] = 9] = \"NetJoinFail\";\n EventType2[EventType2[\"NetPeerJoin\"] = 10] = \"NetPeerJoin\";\n EventType2[EventType2[\"NetPeerLeave\"] = 11] = \"NetPeerLeave\";\n EventType2[EventType2[\"NetPeerAssignLocalId\"] = 12] = \"NetPeerAssignLocalId\";\n EventType2[EventType2[\"NetPacketReceived\"] = 13] = \"NetPacketReceived\";\n EventType2[EventType2[\"NetSessionInit\"] = 14] = \"NetSessionInit\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\nvar InputSource;\n((InputSource2) => {\n InputSource2[InputSource2[\"None\"] = 0] = \"None\";\n InputSource2[InputSource2[\"LocalKeyboard\"] = 1] = \"LocalKeyboard\";\n InputSource2[InputSource2[\"LocalMouse\"] = 2] = \"LocalMouse\";\n InputSource2[InputSource2[\"LocalTouch\"] = 3] = \"LocalTouch\";\n InputSource2[InputSource2[\"LocalGamepad0\"] = 4] = \"LocalGamepad0\";\n InputSource2[InputSource2[\"LocalGamepad1\"] = 5] = \"LocalGamepad1\";\n InputSource2[InputSource2[\"LocalGamepad2\"] = 6] = \"LocalGamepad2\";\n InputSource2[InputSource2[\"LocalGamepad3\"] = 7] = \"LocalGamepad3\";\n InputSource2[InputSource2[\"LocalGamepad4\"] = 8] = \"LocalGamepad4\";\n InputSource2[InputSource2[\"LocalGamepad5\"] = 9] = \"LocalGamepad5\";\n InputSource2[InputSource2[\"LocalGamepad6\"] = 10] = \"LocalGamepad6\";\n InputSource2[InputSource2[\"LocalGamepad7\"] = 11] = \"LocalGamepad7\";\n InputSource2[InputSource2[\"LocalGamepad8\"] = 12] = \"LocalGamepad8\";\n InputSource2[InputSource2[\"LocalGamepad9\"] = 13] = \"LocalGamepad9\";\n InputSource2[InputSource2[\"LocalGamepad10\"] = 14] = \"LocalGamepad10\";\n InputSource2[InputSource2[\"LocalGamepad11\"] = 15] = \"LocalGamepad11\";\n InputSource2[InputSource2[\"RemotePeer0\"] = 128] = \"RemotePeer0\";\n InputSource2[InputSource2[\"RemotePeer1\"] = 129] = \"RemotePeer1\";\n InputSource2[InputSource2[\"RemotePeer2\"] = 130] = \"RemotePeer2\";\n InputSource2[InputSource2[\"RemotePeer3\"] = 131] = \"RemotePeer3\";\n InputSource2[InputSource2[\"RemotePeer4\"] = 132] = \"RemotePeer4\";\n InputSource2[InputSource2[\"RemotePeer5\"] = 133] = \"RemotePeer5\";\n InputSource2[InputSource2[\"RemotePeer6\"] = 134] = \"RemotePeer6\";\n InputSource2[InputSource2[\"RemotePeer7\"] = 135] = \"RemotePeer7\";\n InputSource2[InputSource2[\"RemotePeer8\"] = 136] = \"RemotePeer8\";\n InputSource2[InputSource2[\"RemotePeer9\"] = 137] = \"RemotePeer9\";\n InputSource2[InputSource2[\"RemotePeer10\"] = 138] = \"RemotePeer10\";\n InputSource2[InputSource2[\"RemotePeer11\"] = 139] = \"RemotePeer11\";\n InputSource2[InputSource2[\"Unmapped\"] = 255] = \"Unmapped\";\n})(InputSource ||= {});\nvar NetJoinFailReason;\n((NetJoinFailReason2) => {\n NetJoinFailReason2[NetJoinFailReason2[\"unknown\"] = 0] = \"unknown\";\n NetJoinFailReason2[NetJoinFailReason2[\"timeout\"] = 1] = \"timeout\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_full\"] = 2] = \"room_full\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_not_found\"] = 3] = \"room_not_found\";\n NetJoinFailReason2[NetJoinFailReason2[\"already_in_room\"] = 4] = \"already_in_room\";\n})(NetJoinFailReason ||= {});\nvar MAX_PLAYERS = 12;\nvar KEYBOARD_OFFSET = 0;\nvar KEYBOARD_SIZE = 256;\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar PLAYER_INPUTS_SIZE = 280;\nvar INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\nfunction inputSourceToInputSourceCode(source) {\n return InputSource[source];\n}\nfunction inputSourceCodeToInputSource(code) {\n return InputSource[code];\n}\n\nclass PlayerInputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass InputContext {\n #dataView;\n #players = [];\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n #buildPlayers() {\n this.#players = [];\n for (let i = 0;i < MAX_PLAYERS; i++) {\n const playerOffset = i * PLAYER_INPUTS_SIZE;\n const playerDataView = new DataView(this.dataView.buffer, this.dataView.byteOffset + playerOffset, PLAYER_INPUTS_SIZE);\n this.#players.push(new PlayerInputContext(playerDataView));\n }\n }\n get players() {\n return this.#players;\n }\n get keys() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].keys;\n }\n get mouse() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1);\n }\n get right() {\n return this.#buttonState(3);\n }\n get middle() {\n return this.#buttonState(2);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1);\n }\n get backslash() {\n return this.#keystate(2);\n }\n get bracketLeft() {\n return this.#keystate(3);\n }\n get bracketRight() {\n return this.#keystate(4);\n }\n get comma() {\n return this.#keystate(5);\n }\n get digit0() {\n return this.#keystate(6);\n }\n get digit1() {\n return this.#keystate(7);\n }\n get digit2() {\n return this.#keystate(8);\n }\n get digit3() {\n return this.#keystate(9);\n }\n get digit4() {\n return this.#keystate(10);\n }\n get digit5() {\n return this.#keystate(11);\n }\n get digit6() {\n return this.#keystate(12);\n }\n get digit7() {\n return this.#keystate(13);\n }\n get digit8() {\n return this.#keystate(14);\n }\n get digit9() {\n return this.#keystate(15);\n }\n get equal() {\n return this.#keystate(16);\n }\n get intlBackslash() {\n return this.#keystate(17);\n }\n get intlRo() {\n return this.#keystate(18);\n }\n get intlYen() {\n return this.#keystate(19);\n }\n get a() {\n return this.#keystate(20);\n }\n get b() {\n return this.#keystate(21);\n }\n get c() {\n return this.#keystate(22);\n }\n get d() {\n return this.#keystate(23);\n }\n get e() {\n return this.#keystate(24);\n }\n get f() {\n return this.#keystate(25);\n }\n get g() {\n return this.#keystate(26);\n }\n get h() {\n return this.#keystate(27);\n }\n get i() {\n return this.#keystate(28);\n }\n get j() {\n return this.#keystate(29);\n }\n get k() {\n return this.#keystate(30);\n }\n get l() {\n return this.#keystate(31);\n }\n get m() {\n return this.#keystate(32);\n }\n get n() {\n return this.#keystate(33);\n }\n get o() {\n return this.#keystate(34);\n }\n get p() {\n return this.#keystate(35);\n }\n get q() {\n return this.#keystate(36);\n }\n get r() {\n return this.#keystate(37);\n }\n get s() {\n return this.#keystate(38);\n }\n get t() {\n return this.#keystate(39);\n }\n get u() {\n return this.#keystate(40);\n }\n get v() {\n return this.#keystate(41);\n }\n get w() {\n return this.#keystate(42);\n }\n get x() {\n return this.#keystate(43);\n }\n get y() {\n return this.#keystate(44);\n }\n get z() {\n return this.#keystate(45);\n }\n get minus() {\n return this.#keystate(46);\n }\n get period() {\n return this.#keystate(47);\n }\n get quote() {\n return this.#keystate(48);\n }\n get semicolon() {\n return this.#keystate(49);\n }\n get slash() {\n return this.#keystate(50);\n }\n get altLeft() {\n return this.#keystate(51);\n }\n get altRight() {\n return this.#keystate(52);\n }\n get backspace() {\n return this.#keystate(53);\n }\n get capsLock() {\n return this.#keystate(54);\n }\n get contextMenu() {\n return this.#keystate(55);\n }\n get controlLeft() {\n return this.#keystate(56);\n }\n get controlRight() {\n return this.#keystate(57);\n }\n get enter() {\n return this.#keystate(58);\n }\n get metaLeft() {\n return this.#keystate(59);\n }\n get metaRight() {\n return this.#keystate(60);\n }\n get shiftLeft() {\n return this.#keystate(61);\n }\n get shiftRight() {\n return this.#keystate(62);\n }\n get space() {\n return this.#keystate(63);\n }\n get tab() {\n return this.#keystate(64);\n }\n get convert() {\n return this.#keystate(65);\n }\n get kanaMode() {\n return this.#keystate(66);\n }\n get lang1() {\n return this.#keystate(67);\n }\n get lang2() {\n return this.#keystate(68);\n }\n get lang3() {\n return this.#keystate(69);\n }\n get lang4() {\n return this.#keystate(70);\n }\n get lang5() {\n return this.#keystate(71);\n }\n get nonConvert() {\n return this.#keystate(72);\n }\n get delete() {\n return this.#keystate(73);\n }\n get end() {\n return this.#keystate(74);\n }\n get help() {\n return this.#keystate(75);\n }\n get home() {\n return this.#keystate(76);\n }\n get insert() {\n return this.#keystate(77);\n }\n get pageDown() {\n return this.#keystate(78);\n }\n get pageUp() {\n return this.#keystate(79);\n }\n get arrowDown() {\n return this.#keystate(80);\n }\n get arrowLeft() {\n return this.#keystate(81);\n }\n get arrowRight() {\n return this.#keystate(82);\n }\n get arrowUp() {\n return this.#keystate(83);\n }\n get numLock() {\n return this.#keystate(84);\n }\n get numpad0() {\n return this.#keystate(85);\n }\n get numpad1() {\n return this.#keystate(86);\n }\n get numpad2() {\n return this.#keystate(87);\n }\n get numpad3() {\n return this.#keystate(88);\n }\n get numpad4() {\n return this.#keystate(89);\n }\n get numpad5() {\n return this.#keystate(90);\n }\n get numpad6() {\n return this.#keystate(91);\n }\n get numpad7() {\n return this.#keystate(92);\n }\n get numpad8() {\n return this.#keystate(93);\n }\n get numpad9() {\n return this.#keystate(94);\n }\n get numpadAdd() {\n return this.#keystate(95);\n }\n get numpadBackspace() {\n return this.#keystate(96);\n }\n get numpadClear() {\n return this.#keystate(97);\n }\n get numpadClearEntry() {\n return this.#keystate(98);\n }\n get numpadComma() {\n return this.#keystate(99);\n }\n get numpadDecimal() {\n return this.#keystate(100);\n }\n get numpadDivide() {\n return this.#keystate(101);\n }\n get numpadEnter() {\n return this.#keystate(102);\n }\n get numpadEqual() {\n return this.#keystate(103);\n }\n get numpadHash() {\n return this.#keystate(104);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105);\n }\n get numpadMemoryClear() {\n return this.#keystate(106);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107);\n }\n get numpadMemoryStore() {\n return this.#keystate(108);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109);\n }\n get numpadMultiply() {\n return this.#keystate(110);\n }\n get numpadParenLeft() {\n return this.#keystate(111);\n }\n get numpadParenRight() {\n return this.#keystate(112);\n }\n get numpadStar() {\n return this.#keystate(113);\n }\n get numpadSubtract() {\n return this.#keystate(114);\n }\n get escape() {\n return this.#keystate(115);\n }\n get fn() {\n return this.#keystate(116);\n }\n get fnLock() {\n return this.#keystate(117);\n }\n get printScreen() {\n return this.#keystate(118);\n }\n get scrollLock() {\n return this.#keystate(119);\n }\n get pause() {\n return this.#keystate(120);\n }\n get browserBack() {\n return this.#keystate(121);\n }\n get browserFavorites() {\n return this.#keystate(122);\n }\n get browserForward() {\n return this.#keystate(123);\n }\n get browserHome() {\n return this.#keystate(124);\n }\n get browserRefresh() {\n return this.#keystate(125);\n }\n get browserSearch() {\n return this.#keystate(126);\n }\n get browserStop() {\n return this.#keystate(127);\n }\n get eject() {\n return this.#keystate(128);\n }\n get launchApp1() {\n return this.#keystate(129);\n }\n get launchApp2() {\n return this.#keystate(130);\n }\n get launchMail() {\n return this.#keystate(131);\n }\n get mediaPlayPause() {\n return this.#keystate(132);\n }\n get mediaSelect() {\n return this.#keystate(133);\n }\n get mediaStop() {\n return this.#keystate(134);\n }\n get mediaTrackNext() {\n return this.#keystate(135);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136);\n }\n get power() {\n return this.#keystate(137);\n }\n get sleep() {\n return this.#keystate(138);\n }\n get audioVolumeDown() {\n return this.#keystate(139);\n }\n get audioVolumeMute() {\n return this.#keystate(140);\n }\n get audioVolumeUp() {\n return this.#keystate(141);\n }\n get wakeUp() {\n return this.#keystate(142);\n }\n get hyper() {\n return this.#keystate(143);\n }\n get super() {\n return this.#keystate(144);\n }\n get turbo() {\n return this.#keystate(145);\n }\n get abort() {\n return this.#keystate(146);\n }\n get resume() {\n return this.#keystate(147);\n }\n get suspend() {\n return this.#keystate(148);\n }\n get again() {\n return this.#keystate(149);\n }\n get copy() {\n return this.#keystate(150);\n }\n get cut() {\n return this.#keystate(151);\n }\n get find() {\n return this.#keystate(152);\n }\n get open() {\n return this.#keystate(153);\n }\n get paste() {\n return this.#keystate(154);\n }\n get props() {\n return this.#keystate(155);\n }\n get select() {\n return this.#keystate(156);\n }\n get undo() {\n return this.#keystate(157);\n }\n get hiragana() {\n return this.#keystate(158);\n }\n get katakana() {\n return this.#keystate(159);\n }\n get f1() {\n return this.#keystate(160);\n }\n get f2() {\n return this.#keystate(161);\n }\n get f3() {\n return this.#keystate(162);\n }\n get f4() {\n return this.#keystate(163);\n }\n get f5() {\n return this.#keystate(164);\n }\n get f6() {\n return this.#keystate(165);\n }\n get f7() {\n return this.#keystate(166);\n }\n get f8() {\n return this.#keystate(167);\n }\n get f9() {\n return this.#keystate(168);\n }\n get f10() {\n return this.#keystate(169);\n }\n get f11() {\n return this.#keystate(170);\n }\n get f12() {\n return this.#keystate(171);\n }\n get f13() {\n return this.#keystate(172);\n }\n get f14() {\n return this.#keystate(173);\n }\n get f15() {\n return this.#keystate(174);\n }\n get f16() {\n return this.#keystate(175);\n }\n get f17() {\n return this.#keystate(176);\n }\n get f18() {\n return this.#keystate(177);\n }\n get f19() {\n return this.#keystate(178);\n }\n get f20() {\n return this.#keystate(179);\n }\n get f21() {\n return this.#keystate(180);\n }\n get f22() {\n return this.#keystate(181);\n }\n get f23() {\n return this.#keystate(182);\n }\n get f24() {\n return this.#keystate(183);\n }\n get f25() {\n return this.#keystate(184);\n }\n get f26() {\n return this.#keystate(185);\n }\n get f27() {\n return this.#keystate(186);\n }\n get f28() {\n return this.#keystate(187);\n }\n get f29() {\n return this.#keystate(188);\n }\n get f30() {\n return this.#keystate(189);\n }\n get f31() {\n return this.#keystate(190);\n }\n get f32() {\n return this.#keystate(191);\n }\n get f33() {\n return this.#keystate(192);\n }\n get f34() {\n return this.#keystate(193);\n }\n get f35() {\n return this.#keystate(194);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\nvar MAX_PEERS = 12;\nvar PEERS_ARRAY_OFFSET = 32;\nvar PEER_CTX_SIZE = 8;\nvar PEER_CONNECTED_OFFSET = 0;\nvar PEER_PACKET_COUNT_OFFSET = 1;\nvar PEER_SEQ_OFFSET = 2;\nvar PEER_ACK_OFFSET = 4;\nvar PEER_ACK_COUNT_OFFSET = 6;\nvar STATUS_MAP = {\n 0: \"offline\",\n 1: \"local\",\n 2: \"join:pending\",\n 3: \"connected\",\n 4: \"disconnected\"\n};\n\nclass NetContext {\n dataView;\n #peers = Array.from({ length: MAX_PEERS }, () => ({\n isLocal: false,\n seq: -1,\n ack: -1\n }));\n #peersResult = [];\n constructor(dataView) {\n this.dataView = dataView;\n }\n #hasValidBuffer() {\n if (!this.dataView)\n return false;\n return this.dataView.buffer.byteLength > 0;\n }\n get peerCount() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(0);\n }\n get localPeerId() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(1);\n }\n get isInSession() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(2) !== 0;\n }\n get status() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const statusByte = this.dataView.getUint8(3);\n return STATUS_MAP[statusByte] ?? \"local\";\n }\n get matchFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(4, true);\n }\n get sessionStartFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(8, true);\n }\n get roomCode() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(12 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return String.fromCharCode(...bytes);\n }\n get wantsRoomCode() {\n if (!this.#hasValidBuffer()) {\n return;\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(20 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return bytes.length > 0 ? String.fromCharCode(...bytes) : undefined;\n }\n set wantsRoomCode(code) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n for (let i = 0;i < 8; i++) {\n this.dataView.setUint8(20 + i, 0);\n }\n if (code) {\n for (let i = 0;i < Math.min(code.length, 7); i++) {\n this.dataView.setUint8(20 + i, code.charCodeAt(i));\n }\n }\n }\n get wantsDisconnect() {\n if (!this.#hasValidBuffer()) {\n return false;\n }\n return this.dataView.getUint8(28) !== 0;\n }\n set wantsDisconnect(value) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n this.dataView.setUint8(28, value ? 1 : 0);\n }\n get peers() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const dv = this.dataView;\n const localPeerId = this.localPeerId;\n const matchFrame = this.matchFrame;\n let minRemoteSeq = -1;\n for (let i = 0;i < MAX_PEERS; i++) {\n if (i === localPeerId)\n continue;\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n if (dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET) === 0)\n continue;\n const seq = dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n if (minRemoteSeq === -1 || seq < minRemoteSeq) {\n minRemoteSeq = seq;\n }\n }\n this.#peersResult.length = 0;\n for (let i = 0;i < MAX_PEERS; i++) {\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n const peer = this.#peers[i];\n if (!peer) {\n throw new Error(`Unexpected missing peer object at index ${i}`);\n }\n const isLocal = i === localPeerId;\n peer.isLocal = isLocal;\n if (isLocal) {\n peer.seq = matchFrame;\n peer.ack = minRemoteSeq;\n } else {\n const packetCount = dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET);\n const ackCount = dv.getUint8(peerOffset + PEER_ACK_COUNT_OFFSET);\n peer.seq = packetCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n peer.ack = ackCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_ACK_OFFSET, true);\n }\n this.#peersResult.push(peer);\n }\n return this.#peersResult;\n }\n}\n\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\nvar TAPE_MAGIC = 1413566533;\nfunction readTapeHeader(tape) {\n const view = new DataView(tape.buffer, tape.byteOffset, tape.byteLength);\n const magic = view.getUint32(0, true);\n if (magic !== TAPE_MAGIC) {\n throw new Error(`Invalid tape format: expected magic ${TAPE_MAGIC.toString(16)}, got ${magic.toString(16)}`);\n }\n return {\n magic,\n version: view.getUint16(4, true),\n startFrame: view.getUint32(8, true),\n frameCount: view.getUint16(12, true),\n eventCount: view.getUint16(14, true)\n };\n}\nvar DEFAULT_WASM_URL = new URL(\"https://unpkg.com/@bloopjs/engine@0.0.83/wasm/bloop.wasm\");\nvar MAX_ROLLBACK_FRAMES = 500;\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar NET_CTX_OFFSET = EVENTS_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\n// src/sim.ts\nvar originalConsole = globalThis.console;\nvar noop = () => {};\nvar stubConsole = Object.fromEntries(Object.keys(originalConsole).map((key) => [key, noop]));\nfunction muteConsole() {\n globalThis.console = stubConsole;\n}\nfunction unmuteConsole() {\n globalThis.console = originalConsole;\n}\n\nclass Sim {\n wasm;\n id;\n #memory;\n #time;\n #serialize;\n #isPaused = false;\n #net;\n onTapeFull;\n constructor(wasm, memory, opts) {\n this.wasm = wasm;\n this.#memory = memory;\n this.#time = new TimeContext(new DataView(this.#memory.buffer, this.wasm.get_time_ctx()));\n this.id = `${Math.floor(Math.random() * 1e6)}`;\n this.#serialize = opts?.serialize;\n this.#net = new NetContext;\n }\n step(ms) {\n if (this.#isPaused) {\n return 0;\n }\n return this.wasm.step(ms ?? 16);\n }\n tick(isResimulating) {\n this.wasm.tick(isResimulating ?? false);\n }\n cloneSession(source) {\n if (source.isRecording) {\n this.loadTape(source.saveTape());\n }\n this.restore(source.snapshot());\n }\n pause() {\n this.#isPaused = true;\n }\n unpause() {\n this.#isPaused = false;\n }\n get isPaused() {\n return this.#isPaused;\n }\n stepBack() {\n if (this.time.frame === 0) {\n return;\n }\n this.seek(this.time.frame - 1);\n }\n seek(frame, inclusive) {\n assert(this.hasHistory, \"Not recording or playing back, can't seek to frame\");\n const targetFrame = inclusive ? frame + 1 : frame;\n const shouldMute = frame < this.time.frame;\n if (shouldMute) {\n muteConsole();\n }\n this.wasm.seek(targetFrame);\n if (shouldMute) {\n unmuteConsole();\n }\n }\n snapshot() {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const ptr = this.wasm.take_snapshot(size);\n const header = new Uint32Array(this.#memory.buffer, ptr, 4);\n const userLenIndex = SNAPSHOT_HEADER_USER_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n const engineLenIndex = SNAPSHOT_HEADER_ENGINE_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n assert(header[userLenIndex], `header user length missing`);\n assert(header[engineLenIndex], `header engine length missing`);\n const length = header[userLenIndex] + header[engineLenIndex];\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, length);\n const copy = new Uint8Array(length);\n copy.set(memoryView);\n return copy;\n }\n static NETWORK_MAX_PACKET_BYTES = 2 * 1024 * 1024;\n record(maxEvents = 1024, maxPacketBytes = Sim.NETWORK_MAX_PACKET_BYTES) {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const result = this.wasm.start_recording(size, maxEvents, maxPacketBytes);\n if (result !== 0) {\n throw new Error(`failed to start recording, error code=${result}`);\n }\n }\n saveTape() {\n const tapeLen = this.wasm.get_tape_len();\n const tapePtr = this.wasm.get_tape_ptr();\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tapeLen);\n const copy = new Uint8Array(tapeLen);\n copy.set(memoryView);\n return copy;\n }\n loadTape(tape) {\n const tapePtr = this.wasm.alloc(tape.byteLength);\n assert(tapePtr > 0, `failed to allocate ${tape.byteLength} bytes for tape load, pointer=${tapePtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tape.byteLength);\n memoryView.set(tape);\n if (this.isRecording) {\n this.wasm.stop_recording();\n }\n const result = this.wasm.load_tape(tapePtr, tape.byteLength);\n assert(result === 0, `failed to load tape, error code=${result}`);\n this.wasm.free(tapePtr, tape.byteLength);\n }\n restore(snapshot) {\n const dataPtr = this.wasm.alloc(snapshot.byteLength);\n assert(dataPtr > 0, `failed to allocate ${snapshot.byteLength} bytes for snapshot restore, pointer=${dataPtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, dataPtr, snapshot.byteLength);\n memoryView.set(snapshot);\n this.wasm.restore(dataPtr);\n this.wasm.free(dataPtr, snapshot.byteLength);\n }\n unmount() {\n this.wasm.deinit();\n }\n get time() {\n if (!this.#time.dataView || this.#time.dataView.buffer !== this.#memory.buffer) {\n this.#time.dataView = new DataView(this.#memory.buffer, this.wasm.get_time_ctx());\n }\n return this.#time;\n }\n get net() {\n if (!this.#net.dataView || this.#net.dataView.buffer !== this.#memory.buffer) {\n this.#net.dataView = new DataView(this.#memory.buffer, this.wasm.get_net_ctx());\n }\n return this.#net;\n }\n get buffer() {\n return this.#memory.buffer;\n }\n get isRecording() {\n return Boolean(this.wasm.is_recording());\n }\n get isReplaying() {\n return Boolean(this.wasm.is_replaying());\n }\n get hasHistory() {\n return this.isRecording || this.isReplaying;\n }\n emit = {\n keydown: (key, peerId = 0) => {\n this.wasm.emit_keydown(keyToKeyCode(key), peerId);\n },\n keyup: (key, peerId = 0) => {\n this.wasm.emit_keyup(keyToKeyCode(key), peerId);\n },\n mousemove: (x, y, peerId = 0) => {\n this.wasm.emit_mousemove(x, y, peerId);\n },\n mousedown: (button, peerId = 0) => {\n this.wasm.emit_mousedown(mouseButtonToMouseButtonCode(button), peerId);\n },\n mouseup: (button, peerId = 0) => {\n this.wasm.emit_mouseup(mouseButtonToMouseButtonCode(button), peerId);\n },\n mousewheel: (x, y, peerId = 0) => {\n this.wasm.emit_mousewheel(x, y, peerId);\n },\n network: (type, data) => {\n switch (type) {\n case \"join:ok\": {\n const roomCode = data.roomCode;\n const encoded = new TextEncoder().encode(roomCode);\n const ptr = this.wasm.alloc(encoded.length);\n new Uint8Array(this.#memory.buffer, ptr, encoded.length).set(encoded);\n this.wasm.emit_net_join_ok(ptr, encoded.length);\n this.wasm.free(ptr, encoded.length);\n break;\n }\n case \"join:fail\":\n this.wasm.emit_net_join_fail(0);\n break;\n case \"peer:join\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_join(peerId);\n break;\n }\n case \"peer:leave\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_leave(peerId);\n break;\n }\n case \"peer:assign_local_id\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_assign_local_id(peerId);\n break;\n }\n case \"session:start\":\n this.wasm.emit_net_session_init();\n break;\n case \"session:end\":\n this.wasm.emit_net_session_end();\n break;\n }\n },\n packet: (data) => {\n if (data.length === 0) {\n return;\n }\n const ptr = this.wasm.alloc(data.byteLength);\n assert(ptr > 0, `Failed to allocate ${data.byteLength} bytes for received packet`);\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, data.byteLength);\n memoryView.set(data);\n const result = this.wasm.emit_receive_packet(ptr, data.byteLength);\n this.wasm.free(ptr, data.byteLength);\n if (result !== 0) {\n const errorMessages = {\n 1: \"No active session\",\n 2: \"Buffer too small\",\n 3: \"Unsupported packet version\",\n 4: \"Invalid event count\"\n };\n throw new Error(errorMessages[result] ?? `Unknown packet error: ${result}`);\n }\n }\n };\n getOutboundPacket(targetPeer) {\n this.wasm.build_outbound_packet(targetPeer);\n const len = this.wasm.get_outbound_packet_len();\n if (len === 0) {\n throw new Error(`No outbound packet available for peer ${targetPeer}`);\n }\n const ptr = this.wasm.get_outbound_packet();\n assert(ptr > 0, `Invalid outbound packet pointer: ${ptr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, len);\n const copy = new Uint8Array(len);\n copy.set(memoryView);\n return copy;\n }\n}\n\n// src/mount.ts\nasync function mount(mountable, options) {\n const wasmUrl = options?.wasmUrl ?? DEFAULT_WASM_URL;\n const startRecording = options?.startRecording ?? true;\n const { maxEvents, maxPacketBytes } = calculateTapeConfig(options?.tape);\n const bytes = await fetch(wasmUrl).then((res) => res.arrayBuffer()).catch((e) => {\n console.error(`Failed to fetch wasm at ${wasmUrl}`, e);\n throw e;\n });\n const memory = new WebAssembly.Memory({ initial: 310, maximum: 1000 });\n let sim;\n const wasmInstantiatedSource = await WebAssembly.instantiate(bytes, {\n env: {\n memory,\n __systems: function(system_handle, ptr) {\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.systemsCallback(system_handle, ptr);\n },\n __before_frame: function(ptr, frame) {\n try {\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.setContext(ptr);\n mountable.hooks.beforeFrame?.(frame);\n } catch (e) {\n console.error(\"Error in beforeFrame hook:\", e);\n }\n },\n __on_tape_full: function(_ctxPtr) {\n if (!sim) {\n throw new Error(\"Sim not initialized in on_tape_full\");\n }\n const tapeBytes = sim.saveTape();\n if (sim.onTapeFull) {\n sim.onTapeFull(tapeBytes);\n } else {\n const size = tapeBytes.length / 1024;\n const duration = sim.time.time;\n const kbPerSecond = size / duration;\n console.warn(\"Tape full. Recording stopped\", {\n size: `${(tapeBytes.length / 1024).toFixed(0)}kb`,\n duration: `${sim.time.time.toFixed(2)}s`,\n kbPerSecond: `${kbPerSecond.toFixed(2)} kb/s`\n });\n }\n },\n console_log: function(ptr, len) {\n const bytes2 = new Uint8Array(memory.buffer, ptr, len);\n const string = new TextDecoder(\"utf-8\").decode(bytes2);\n console.log(string);\n },\n __user_data_len: function() {\n const serializer = mountable.hooks.serialize();\n return serializer ? serializer.size : 0;\n },\n user_data_serialize: function(ptr, len) {\n const serializer = mountable.hooks.serialize();\n assert(len === serializer.size, `user_data_serialize length mismatch, expected=${serializer.size} got=${len}`);\n serializer.write(memory.buffer, ptr);\n },\n user_data_deserialize: function(ptr, len) {\n mountable.hooks.deserialize(memory.buffer, ptr, len);\n }\n }\n });\n const wasm = wasmInstantiatedSource.instance.exports;\n const enginePointer = wasm.initialize();\n sim = new Sim(wasm, memory, {\n serialize: mountable.hooks.serialize\n });\n if (startRecording) {\n sim.record(maxEvents, maxPacketBytes);\n }\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.setContext(enginePointer);\n return {\n sim\n };\n}\nfunction calculateTapeConfig(tape) {\n let maxEvents;\n if (!tape) {\n maxEvents = 1024;\n } else if (\"maxEvents\" in tape) {\n maxEvents = tape.maxEvents;\n } else {\n const avgEvents = tape.averageEventsPerFrame ?? 2;\n maxEvents = Math.ceil(tape.duration * 60 * avgEvents);\n }\n const maxPacketBytes = tape?.localOnly ? 0 : Sim.NETWORK_MAX_PACKET_BYTES;\n return { maxEvents, maxPacketBytes };\n}\n// src/bloop.ts\nclass Bloop {\n #systems = [];\n #context;\n #engineBuffer = new ArrayBuffer(0);\n static create(opts = {}) {\n return new Bloop(opts, \"dontCallMeDirectly\");\n }\n constructor(opts = {}, dontCallMeDirectly) {\n if (dontCallMeDirectly !== \"dontCallMeDirectly\") {\n throw new Error(\"Bloop constructor is private. Use Bloop.create() to create a new game instance.\");\n }\n const inputs = new InputContext;\n this.#context = {\n bag: opts.bag ?? {},\n time: new TimeContext,\n inputs,\n get players() {\n return inputs.players;\n },\n rawPointer: -1,\n net: new NetContext\n };\n }\n get bag() {\n return this.#context.bag;\n }\n get context() {\n return this.#context;\n }\n system(label, system) {\n system.label ??= label;\n this.#systems.push(system);\n return this.#systems.length;\n }\n hooks = {\n serialize: () => {\n const str = JSON.stringify(this.#context.bag);\n const encoder = new TextEncoder;\n const textBytes = encoder.encode(str);\n return {\n size: textBytes.byteLength,\n write: (buffer, ptr) => {\n const memoryView = new Uint8Array(buffer, ptr, textBytes.byteLength);\n memoryView.set(textBytes);\n }\n };\n },\n deserialize: (buffer, ptr, len) => {\n const bagBytes = new Uint8Array(buffer, ptr, len);\n const decoder = new TextDecoder;\n const str = decoder.decode(bagBytes);\n try {\n this.#context.bag = JSON.parse(str);\n } catch (e) {\n console.error(\"failed to deserialize bag\", { json: str, error: e });\n }\n },\n setBuffer: (buffer) => {\n this.#engineBuffer = buffer;\n },\n setContext: (ptr) => {\n if (!this.#engineBuffer) {\n throw new Error(\"Tried to set context before engine buffer\");\n }\n const dv = new DataView(this.#engineBuffer, ptr);\n const timeCtxPtr = dv.getUint32(TIME_CTX_OFFSET, true);\n const inputCtxPtr = dv.getUint32(INPUT_CTX_OFFSET, true);\n const netCtxPtr = dv.getUint32(NET_CTX_OFFSET, true);\n this.#context.rawPointer = ptr;\n this.#context.inputs.dataView = new DataView(this.#engineBuffer, inputCtxPtr);\n this.#context.time.dataView = new DataView(this.#engineBuffer, timeCtxPtr);\n this.#context.net.dataView = new DataView(this.#engineBuffer, netCtxPtr);\n },\n systemsCallback: (system_handle, ptr) => {\n this.hooks.setContext(ptr);\n const dv = new DataView(this.#engineBuffer, ptr);\n const eventsPtr = dv.getUint32(EVENTS_OFFSET, true);\n const eventsDataView = new DataView(this.#engineBuffer, eventsPtr);\n for (const system of this.#systems) {\n system.update?.(this.#context);\n const eventCount = eventsDataView.getUint16(0, true);\n let offset = 4;\n for (let i = 0;i < eventCount; i++) {\n const eventType = eventsDataView.getUint8(offset);\n const eventSource = eventsDataView.getUint8(offset + 1);\n const payloadOffset = offset + 4;\n const payloadByte = eventsDataView.getUint8(payloadOffset);\n const payloadVec2 = {\n x: eventsDataView.getFloat32(payloadOffset, true),\n y: eventsDataView.getFloat32(payloadOffset + Float32Array.BYTES_PER_ELEMENT, true)\n };\n switch (eventType) {\n case exports_enums.EventType.KeyDown: {\n system.keydown?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n }\n case exports_enums.EventType.KeyUp:\n system.keyup?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseDown:\n system.mousedown?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseUp:\n system.mouseup?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseMove:\n system.mousemove?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n case exports_enums.EventType.MouseWheel:\n system.mousewheel?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n case exports_enums.EventType.NetJoinOk: {\n const roomCodeBytes = [];\n for (let j = 0;j < 8; j++) {\n const byte = eventsDataView.getUint8(payloadOffset + j);\n if (byte === 0)\n break;\n roomCodeBytes.push(byte);\n }\n const roomCode = String.fromCharCode(...roomCodeBytes);\n this.#context.event = {\n type: \"join:ok\",\n data: { roomCode }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetJoinFail: {\n const reasonCode = eventsDataView.getUint8(payloadOffset);\n const reasons = [\n \"unknown\",\n \"timeout\",\n \"room_full\",\n \"room_not_found\",\n \"already_in_room\"\n ];\n const reason = reasons[reasonCode] ?? \"unknown\";\n this.#context.event = {\n type: \"join:fail\",\n data: { reason }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetPeerJoin: {\n const peerId = eventsDataView.getUint8(payloadOffset);\n this.#context.event = {\n type: \"peer:join\",\n data: { peerId }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetPeerLeave: {\n const peerId = eventsDataView.getUint8(payloadOffset);\n this.#context.event = {\n type: \"peer:leave\",\n data: { peerId }\n };\n system.netcode?.(this.#context);\n break;\n }\n default:\n break;\n }\n offset += 12;\n }\n this.#context.event = undefined;\n }\n }\n };\n}\nfunction attachEvent(context, event) {\n context.event = event;\n return context;\n}\nexport {\n unwrap,\n mount,\n assert,\n exports_util as Util,\n Sim,\n exports_engine as Engine,\n Bloop\n};\n\n//# debugId=14101D4A85812C1864756E2164756E21\n//# sourceMappingURL=mod.js.map\n",
6
- "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// js/codegen/enums.ts\nvar exports_enums = {};\n__export(exports_enums, {\n NetJoinFailReason: () => NetJoinFailReason,\n MouseButton: () => MouseButton,\n Key: () => Key,\n InputSource: () => InputSource,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n EventType2[EventType2[\"NetJoinOk\"] = 8] = \"NetJoinOk\";\n EventType2[EventType2[\"NetJoinFail\"] = 9] = \"NetJoinFail\";\n EventType2[EventType2[\"NetPeerJoin\"] = 10] = \"NetPeerJoin\";\n EventType2[EventType2[\"NetPeerLeave\"] = 11] = \"NetPeerLeave\";\n EventType2[EventType2[\"NetPeerAssignLocalId\"] = 12] = \"NetPeerAssignLocalId\";\n EventType2[EventType2[\"NetPacketReceived\"] = 13] = \"NetPacketReceived\";\n EventType2[EventType2[\"NetSessionInit\"] = 14] = \"NetSessionInit\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\nvar InputSource;\n((InputSource2) => {\n InputSource2[InputSource2[\"None\"] = 0] = \"None\";\n InputSource2[InputSource2[\"LocalKeyboard\"] = 1] = \"LocalKeyboard\";\n InputSource2[InputSource2[\"LocalMouse\"] = 2] = \"LocalMouse\";\n InputSource2[InputSource2[\"LocalTouch\"] = 3] = \"LocalTouch\";\n InputSource2[InputSource2[\"LocalGamepad0\"] = 4] = \"LocalGamepad0\";\n InputSource2[InputSource2[\"LocalGamepad1\"] = 5] = \"LocalGamepad1\";\n InputSource2[InputSource2[\"LocalGamepad2\"] = 6] = \"LocalGamepad2\";\n InputSource2[InputSource2[\"LocalGamepad3\"] = 7] = \"LocalGamepad3\";\n InputSource2[InputSource2[\"LocalGamepad4\"] = 8] = \"LocalGamepad4\";\n InputSource2[InputSource2[\"LocalGamepad5\"] = 9] = \"LocalGamepad5\";\n InputSource2[InputSource2[\"LocalGamepad6\"] = 10] = \"LocalGamepad6\";\n InputSource2[InputSource2[\"LocalGamepad7\"] = 11] = \"LocalGamepad7\";\n InputSource2[InputSource2[\"LocalGamepad8\"] = 12] = \"LocalGamepad8\";\n InputSource2[InputSource2[\"LocalGamepad9\"] = 13] = \"LocalGamepad9\";\n InputSource2[InputSource2[\"LocalGamepad10\"] = 14] = \"LocalGamepad10\";\n InputSource2[InputSource2[\"LocalGamepad11\"] = 15] = \"LocalGamepad11\";\n InputSource2[InputSource2[\"RemotePeer0\"] = 128] = \"RemotePeer0\";\n InputSource2[InputSource2[\"RemotePeer1\"] = 129] = \"RemotePeer1\";\n InputSource2[InputSource2[\"RemotePeer2\"] = 130] = \"RemotePeer2\";\n InputSource2[InputSource2[\"RemotePeer3\"] = 131] = \"RemotePeer3\";\n InputSource2[InputSource2[\"RemotePeer4\"] = 132] = \"RemotePeer4\";\n InputSource2[InputSource2[\"RemotePeer5\"] = 133] = \"RemotePeer5\";\n InputSource2[InputSource2[\"RemotePeer6\"] = 134] = \"RemotePeer6\";\n InputSource2[InputSource2[\"RemotePeer7\"] = 135] = \"RemotePeer7\";\n InputSource2[InputSource2[\"RemotePeer8\"] = 136] = \"RemotePeer8\";\n InputSource2[InputSource2[\"RemotePeer9\"] = 137] = \"RemotePeer9\";\n InputSource2[InputSource2[\"RemotePeer10\"] = 138] = \"RemotePeer10\";\n InputSource2[InputSource2[\"RemotePeer11\"] = 139] = \"RemotePeer11\";\n InputSource2[InputSource2[\"Unmapped\"] = 255] = \"Unmapped\";\n})(InputSource ||= {});\nvar NetJoinFailReason;\n((NetJoinFailReason2) => {\n NetJoinFailReason2[NetJoinFailReason2[\"unknown\"] = 0] = \"unknown\";\n NetJoinFailReason2[NetJoinFailReason2[\"timeout\"] = 1] = \"timeout\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_full\"] = 2] = \"room_full\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_not_found\"] = 3] = \"room_not_found\";\n NetJoinFailReason2[NetJoinFailReason2[\"already_in_room\"] = 4] = \"already_in_room\";\n})(NetJoinFailReason ||= {});\n// js/inputs.ts\nvar MAX_PLAYERS = 12;\nvar KEYBOARD_OFFSET = 0;\nvar KEYBOARD_SIZE = 256;\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar PLAYER_INPUTS_SIZE = 280;\nvar INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\nfunction inputSourceToInputSourceCode(source) {\n return InputSource[source];\n}\nfunction inputSourceCodeToInputSource(code) {\n return InputSource[code];\n}\n\n// js/contexts/inputContext.ts\nclass PlayerInputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass InputContext {\n #dataView;\n #players = [];\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n #buildPlayers() {\n this.#players = [];\n for (let i = 0;i < MAX_PLAYERS; i++) {\n const playerOffset = i * PLAYER_INPUTS_SIZE;\n const playerDataView = new DataView(this.dataView.buffer, this.dataView.byteOffset + playerOffset, PLAYER_INPUTS_SIZE);\n this.#players.push(new PlayerInputContext(playerDataView));\n }\n }\n get players() {\n return this.#players;\n }\n get keys() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].keys;\n }\n get mouse() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1 /* Left */);\n }\n get right() {\n return this.#buttonState(3 /* Right */);\n }\n get middle() {\n return this.#buttonState(2 /* Middle */);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1 /* Backquote */);\n }\n get backslash() {\n return this.#keystate(2 /* Backslash */);\n }\n get bracketLeft() {\n return this.#keystate(3 /* BracketLeft */);\n }\n get bracketRight() {\n return this.#keystate(4 /* BracketRight */);\n }\n get comma() {\n return this.#keystate(5 /* Comma */);\n }\n get digit0() {\n return this.#keystate(6 /* Digit0 */);\n }\n get digit1() {\n return this.#keystate(7 /* Digit1 */);\n }\n get digit2() {\n return this.#keystate(8 /* Digit2 */);\n }\n get digit3() {\n return this.#keystate(9 /* Digit3 */);\n }\n get digit4() {\n return this.#keystate(10 /* Digit4 */);\n }\n get digit5() {\n return this.#keystate(11 /* Digit5 */);\n }\n get digit6() {\n return this.#keystate(12 /* Digit6 */);\n }\n get digit7() {\n return this.#keystate(13 /* Digit7 */);\n }\n get digit8() {\n return this.#keystate(14 /* Digit8 */);\n }\n get digit9() {\n return this.#keystate(15 /* Digit9 */);\n }\n get equal() {\n return this.#keystate(16 /* Equal */);\n }\n get intlBackslash() {\n return this.#keystate(17 /* IntlBackslash */);\n }\n get intlRo() {\n return this.#keystate(18 /* IntlRo */);\n }\n get intlYen() {\n return this.#keystate(19 /* IntlYen */);\n }\n get a() {\n return this.#keystate(20 /* KeyA */);\n }\n get b() {\n return this.#keystate(21 /* KeyB */);\n }\n get c() {\n return this.#keystate(22 /* KeyC */);\n }\n get d() {\n return this.#keystate(23 /* KeyD */);\n }\n get e() {\n return this.#keystate(24 /* KeyE */);\n }\n get f() {\n return this.#keystate(25 /* KeyF */);\n }\n get g() {\n return this.#keystate(26 /* KeyG */);\n }\n get h() {\n return this.#keystate(27 /* KeyH */);\n }\n get i() {\n return this.#keystate(28 /* KeyI */);\n }\n get j() {\n return this.#keystate(29 /* KeyJ */);\n }\n get k() {\n return this.#keystate(30 /* KeyK */);\n }\n get l() {\n return this.#keystate(31 /* KeyL */);\n }\n get m() {\n return this.#keystate(32 /* KeyM */);\n }\n get n() {\n return this.#keystate(33 /* KeyN */);\n }\n get o() {\n return this.#keystate(34 /* KeyO */);\n }\n get p() {\n return this.#keystate(35 /* KeyP */);\n }\n get q() {\n return this.#keystate(36 /* KeyQ */);\n }\n get r() {\n return this.#keystate(37 /* KeyR */);\n }\n get s() {\n return this.#keystate(38 /* KeyS */);\n }\n get t() {\n return this.#keystate(39 /* KeyT */);\n }\n get u() {\n return this.#keystate(40 /* KeyU */);\n }\n get v() {\n return this.#keystate(41 /* KeyV */);\n }\n get w() {\n return this.#keystate(42 /* KeyW */);\n }\n get x() {\n return this.#keystate(43 /* KeyX */);\n }\n get y() {\n return this.#keystate(44 /* KeyY */);\n }\n get z() {\n return this.#keystate(45 /* KeyZ */);\n }\n get minus() {\n return this.#keystate(46 /* Minus */);\n }\n get period() {\n return this.#keystate(47 /* Period */);\n }\n get quote() {\n return this.#keystate(48 /* Quote */);\n }\n get semicolon() {\n return this.#keystate(49 /* Semicolon */);\n }\n get slash() {\n return this.#keystate(50 /* Slash */);\n }\n get altLeft() {\n return this.#keystate(51 /* AltLeft */);\n }\n get altRight() {\n return this.#keystate(52 /* AltRight */);\n }\n get backspace() {\n return this.#keystate(53 /* Backspace */);\n }\n get capsLock() {\n return this.#keystate(54 /* CapsLock */);\n }\n get contextMenu() {\n return this.#keystate(55 /* ContextMenu */);\n }\n get controlLeft() {\n return this.#keystate(56 /* ControlLeft */);\n }\n get controlRight() {\n return this.#keystate(57 /* ControlRight */);\n }\n get enter() {\n return this.#keystate(58 /* Enter */);\n }\n get metaLeft() {\n return this.#keystate(59 /* MetaLeft */);\n }\n get metaRight() {\n return this.#keystate(60 /* MetaRight */);\n }\n get shiftLeft() {\n return this.#keystate(61 /* ShiftLeft */);\n }\n get shiftRight() {\n return this.#keystate(62 /* ShiftRight */);\n }\n get space() {\n return this.#keystate(63 /* Space */);\n }\n get tab() {\n return this.#keystate(64 /* Tab */);\n }\n get convert() {\n return this.#keystate(65 /* Convert */);\n }\n get kanaMode() {\n return this.#keystate(66 /* KanaMode */);\n }\n get lang1() {\n return this.#keystate(67 /* Lang1 */);\n }\n get lang2() {\n return this.#keystate(68 /* Lang2 */);\n }\n get lang3() {\n return this.#keystate(69 /* Lang3 */);\n }\n get lang4() {\n return this.#keystate(70 /* Lang4 */);\n }\n get lang5() {\n return this.#keystate(71 /* Lang5 */);\n }\n get nonConvert() {\n return this.#keystate(72 /* NonConvert */);\n }\n get delete() {\n return this.#keystate(73 /* Delete */);\n }\n get end() {\n return this.#keystate(74 /* End */);\n }\n get help() {\n return this.#keystate(75 /* Help */);\n }\n get home() {\n return this.#keystate(76 /* Home */);\n }\n get insert() {\n return this.#keystate(77 /* Insert */);\n }\n get pageDown() {\n return this.#keystate(78 /* PageDown */);\n }\n get pageUp() {\n return this.#keystate(79 /* PageUp */);\n }\n get arrowDown() {\n return this.#keystate(80 /* ArrowDown */);\n }\n get arrowLeft() {\n return this.#keystate(81 /* ArrowLeft */);\n }\n get arrowRight() {\n return this.#keystate(82 /* ArrowRight */);\n }\n get arrowUp() {\n return this.#keystate(83 /* ArrowUp */);\n }\n get numLock() {\n return this.#keystate(84 /* NumLock */);\n }\n get numpad0() {\n return this.#keystate(85 /* Numpad0 */);\n }\n get numpad1() {\n return this.#keystate(86 /* Numpad1 */);\n }\n get numpad2() {\n return this.#keystate(87 /* Numpad2 */);\n }\n get numpad3() {\n return this.#keystate(88 /* Numpad3 */);\n }\n get numpad4() {\n return this.#keystate(89 /* Numpad4 */);\n }\n get numpad5() {\n return this.#keystate(90 /* Numpad5 */);\n }\n get numpad6() {\n return this.#keystate(91 /* Numpad6 */);\n }\n get numpad7() {\n return this.#keystate(92 /* Numpad7 */);\n }\n get numpad8() {\n return this.#keystate(93 /* Numpad8 */);\n }\n get numpad9() {\n return this.#keystate(94 /* Numpad9 */);\n }\n get numpadAdd() {\n return this.#keystate(95 /* NumpadAdd */);\n }\n get numpadBackspace() {\n return this.#keystate(96 /* NumpadBackspace */);\n }\n get numpadClear() {\n return this.#keystate(97 /* NumpadClear */);\n }\n get numpadClearEntry() {\n return this.#keystate(98 /* NumpadClearEntry */);\n }\n get numpadComma() {\n return this.#keystate(99 /* NumpadComma */);\n }\n get numpadDecimal() {\n return this.#keystate(100 /* NumpadDecimal */);\n }\n get numpadDivide() {\n return this.#keystate(101 /* NumpadDivide */);\n }\n get numpadEnter() {\n return this.#keystate(102 /* NumpadEnter */);\n }\n get numpadEqual() {\n return this.#keystate(103 /* NumpadEqual */);\n }\n get numpadHash() {\n return this.#keystate(104 /* NumpadHash */);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105 /* NumpadMemoryAdd */);\n }\n get numpadMemoryClear() {\n return this.#keystate(106 /* NumpadMemoryClear */);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107 /* NumpadMemoryRecall */);\n }\n get numpadMemoryStore() {\n return this.#keystate(108 /* NumpadMemoryStore */);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109 /* NumpadMemorySubtract */);\n }\n get numpadMultiply() {\n return this.#keystate(110 /* NumpadMultiply */);\n }\n get numpadParenLeft() {\n return this.#keystate(111 /* NumpadParenLeft */);\n }\n get numpadParenRight() {\n return this.#keystate(112 /* NumpadParenRight */);\n }\n get numpadStar() {\n return this.#keystate(113 /* NumpadStar */);\n }\n get numpadSubtract() {\n return this.#keystate(114 /* NumpadSubtract */);\n }\n get escape() {\n return this.#keystate(115 /* Escape */);\n }\n get fn() {\n return this.#keystate(116 /* Fn */);\n }\n get fnLock() {\n return this.#keystate(117 /* FnLock */);\n }\n get printScreen() {\n return this.#keystate(118 /* PrintScreen */);\n }\n get scrollLock() {\n return this.#keystate(119 /* ScrollLock */);\n }\n get pause() {\n return this.#keystate(120 /* Pause */);\n }\n get browserBack() {\n return this.#keystate(121 /* BrowserBack */);\n }\n get browserFavorites() {\n return this.#keystate(122 /* BrowserFavorites */);\n }\n get browserForward() {\n return this.#keystate(123 /* BrowserForward */);\n }\n get browserHome() {\n return this.#keystate(124 /* BrowserHome */);\n }\n get browserRefresh() {\n return this.#keystate(125 /* BrowserRefresh */);\n }\n get browserSearch() {\n return this.#keystate(126 /* BrowserSearch */);\n }\n get browserStop() {\n return this.#keystate(127 /* BrowserStop */);\n }\n get eject() {\n return this.#keystate(128 /* Eject */);\n }\n get launchApp1() {\n return this.#keystate(129 /* LaunchApp1 */);\n }\n get launchApp2() {\n return this.#keystate(130 /* LaunchApp2 */);\n }\n get launchMail() {\n return this.#keystate(131 /* LaunchMail */);\n }\n get mediaPlayPause() {\n return this.#keystate(132 /* MediaPlayPause */);\n }\n get mediaSelect() {\n return this.#keystate(133 /* MediaSelect */);\n }\n get mediaStop() {\n return this.#keystate(134 /* MediaStop */);\n }\n get mediaTrackNext() {\n return this.#keystate(135 /* MediaTrackNext */);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136 /* MediaTrackPrevious */);\n }\n get power() {\n return this.#keystate(137 /* Power */);\n }\n get sleep() {\n return this.#keystate(138 /* Sleep */);\n }\n get audioVolumeDown() {\n return this.#keystate(139 /* AudioVolumeDown */);\n }\n get audioVolumeMute() {\n return this.#keystate(140 /* AudioVolumeMute */);\n }\n get audioVolumeUp() {\n return this.#keystate(141 /* AudioVolumeUp */);\n }\n get wakeUp() {\n return this.#keystate(142 /* WakeUp */);\n }\n get hyper() {\n return this.#keystate(143 /* Hyper */);\n }\n get super() {\n return this.#keystate(144 /* Super */);\n }\n get turbo() {\n return this.#keystate(145 /* Turbo */);\n }\n get abort() {\n return this.#keystate(146 /* Abort */);\n }\n get resume() {\n return this.#keystate(147 /* Resume */);\n }\n get suspend() {\n return this.#keystate(148 /* Suspend */);\n }\n get again() {\n return this.#keystate(149 /* Again */);\n }\n get copy() {\n return this.#keystate(150 /* Copy */);\n }\n get cut() {\n return this.#keystate(151 /* Cut */);\n }\n get find() {\n return this.#keystate(152 /* Find */);\n }\n get open() {\n return this.#keystate(153 /* Open */);\n }\n get paste() {\n return this.#keystate(154 /* Paste */);\n }\n get props() {\n return this.#keystate(155 /* Props */);\n }\n get select() {\n return this.#keystate(156 /* Select */);\n }\n get undo() {\n return this.#keystate(157 /* Undo */);\n }\n get hiragana() {\n return this.#keystate(158 /* Hiragana */);\n }\n get katakana() {\n return this.#keystate(159 /* Katakana */);\n }\n get f1() {\n return this.#keystate(160 /* F1 */);\n }\n get f2() {\n return this.#keystate(161 /* F2 */);\n }\n get f3() {\n return this.#keystate(162 /* F3 */);\n }\n get f4() {\n return this.#keystate(163 /* F4 */);\n }\n get f5() {\n return this.#keystate(164 /* F5 */);\n }\n get f6() {\n return this.#keystate(165 /* F6 */);\n }\n get f7() {\n return this.#keystate(166 /* F7 */);\n }\n get f8() {\n return this.#keystate(167 /* F8 */);\n }\n get f9() {\n return this.#keystate(168 /* F9 */);\n }\n get f10() {\n return this.#keystate(169 /* F10 */);\n }\n get f11() {\n return this.#keystate(170 /* F11 */);\n }\n get f12() {\n return this.#keystate(171 /* F12 */);\n }\n get f13() {\n return this.#keystate(172 /* F13 */);\n }\n get f14() {\n return this.#keystate(173 /* F14 */);\n }\n get f15() {\n return this.#keystate(174 /* F15 */);\n }\n get f16() {\n return this.#keystate(175 /* F16 */);\n }\n get f17() {\n return this.#keystate(176 /* F17 */);\n }\n get f18() {\n return this.#keystate(177 /* F18 */);\n }\n get f19() {\n return this.#keystate(178 /* F19 */);\n }\n get f20() {\n return this.#keystate(179 /* F20 */);\n }\n get f21() {\n return this.#keystate(180 /* F21 */);\n }\n get f22() {\n return this.#keystate(181 /* F22 */);\n }\n get f23() {\n return this.#keystate(182 /* F23 */);\n }\n get f24() {\n return this.#keystate(183 /* F24 */);\n }\n get f25() {\n return this.#keystate(184 /* F25 */);\n }\n get f26() {\n return this.#keystate(185 /* F26 */);\n }\n get f27() {\n return this.#keystate(186 /* F27 */);\n }\n get f28() {\n return this.#keystate(187 /* F28 */);\n }\n get f29() {\n return this.#keystate(188 /* F29 */);\n }\n get f30() {\n return this.#keystate(189 /* F30 */);\n }\n get f31() {\n return this.#keystate(190 /* F31 */);\n }\n get f32() {\n return this.#keystate(191 /* F32 */);\n }\n get f33() {\n return this.#keystate(192 /* F33 */);\n }\n get f34() {\n return this.#keystate(193 /* F34 */);\n }\n get f35() {\n return this.#keystate(194 /* F35 */);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\n// js/contexts/netContext.ts\nvar MAX_PEERS = 12;\nvar PEERS_ARRAY_OFFSET = 32;\nvar PEER_CTX_SIZE = 8;\nvar PEER_CONNECTED_OFFSET = 0;\nvar PEER_PACKET_COUNT_OFFSET = 1;\nvar PEER_SEQ_OFFSET = 2;\nvar PEER_ACK_OFFSET = 4;\nvar PEER_ACK_COUNT_OFFSET = 6;\nvar STATUS_MAP = {\n 0: \"offline\",\n 1: \"local\",\n 2: \"join:pending\",\n 3: \"connected\",\n 4: \"disconnected\"\n};\n\nclass NetContext {\n dataView;\n #peers = Array.from({ length: MAX_PEERS }, () => ({\n isLocal: false,\n seq: -1,\n ack: -1\n }));\n #peersResult = [];\n constructor(dataView) {\n this.dataView = dataView;\n }\n #hasValidBuffer() {\n if (!this.dataView)\n return false;\n return this.dataView.buffer.byteLength > 0;\n }\n get peerCount() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(0);\n }\n get localPeerId() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(1);\n }\n get isInSession() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(2) !== 0;\n }\n get status() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const statusByte = this.dataView.getUint8(3);\n return STATUS_MAP[statusByte] ?? \"local\";\n }\n get matchFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(4, true);\n }\n get sessionStartFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(8, true);\n }\n get roomCode() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(12 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return String.fromCharCode(...bytes);\n }\n get wantsRoomCode() {\n if (!this.#hasValidBuffer()) {\n return;\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(20 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return bytes.length > 0 ? String.fromCharCode(...bytes) : undefined;\n }\n set wantsRoomCode(code) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n for (let i = 0;i < 8; i++) {\n this.dataView.setUint8(20 + i, 0);\n }\n if (code) {\n for (let i = 0;i < Math.min(code.length, 7); i++) {\n this.dataView.setUint8(20 + i, code.charCodeAt(i));\n }\n }\n }\n get wantsDisconnect() {\n if (!this.#hasValidBuffer()) {\n return false;\n }\n return this.dataView.getUint8(28) !== 0;\n }\n set wantsDisconnect(value) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n this.dataView.setUint8(28, value ? 1 : 0);\n }\n get peers() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const dv = this.dataView;\n const localPeerId = this.localPeerId;\n const matchFrame = this.matchFrame;\n let minRemoteSeq = -1;\n for (let i = 0;i < MAX_PEERS; i++) {\n if (i === localPeerId)\n continue;\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n if (dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET) === 0)\n continue;\n const seq = dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n if (minRemoteSeq === -1 || seq < minRemoteSeq) {\n minRemoteSeq = seq;\n }\n }\n this.#peersResult.length = 0;\n for (let i = 0;i < MAX_PEERS; i++) {\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n const peer = this.#peers[i];\n if (!peer) {\n throw new Error(`Unexpected missing peer object at index ${i}`);\n }\n const isLocal = i === localPeerId;\n peer.isLocal = isLocal;\n if (isLocal) {\n peer.seq = matchFrame;\n peer.ack = minRemoteSeq;\n } else {\n const packetCount = dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET);\n const ackCount = dv.getUint8(peerOffset + PEER_ACK_COUNT_OFFSET);\n peer.seq = packetCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n peer.ack = ackCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_ACK_OFFSET, true);\n }\n this.#peersResult.push(peer);\n }\n return this.#peersResult;\n }\n}\n// js/contexts/timeContext.ts\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\n// js/tape.ts\nvar TAPE_MAGIC = 1413566533;\nfunction readTapeHeader(tape) {\n const view = new DataView(tape.buffer, tape.byteOffset, tape.byteLength);\n const magic = view.getUint32(0, true);\n if (magic !== TAPE_MAGIC) {\n throw new Error(`Invalid tape format: expected magic ${TAPE_MAGIC.toString(16)}, got ${magic.toString(16)}`);\n }\n return {\n magic,\n version: view.getUint16(4, true),\n startFrame: view.getUint32(8, true),\n frameCount: view.getUint16(12, true),\n eventCount: view.getUint16(14, true)\n };\n}\n// js/defaultUrl.ts\nvar DEFAULT_WASM_URL = new URL(\"https://unpkg.com/@bloopjs/engine@0.0.83/wasm/bloop.wasm\");\n\n// js/engine.ts\nvar MAX_ROLLBACK_FRAMES = 500;\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar NET_CTX_OFFSET = EVENTS_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\nexport {\n readTapeHeader,\n mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton,\n keyToKeyCode,\n keyCodeToKey,\n inputSourceToInputSourceCode,\n inputSourceCodeToInputSource,\n TimeContext,\n TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n PlayerInputContext,\n PLAYER_INPUTS_SIZE,\n NetContext,\n NET_CTX_OFFSET,\n MouseContext,\n MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET,\n MAX_ROLLBACK_FRAMES,\n MAX_PLAYERS,\n KeyboardContext,\n KEYBOARD_SIZE,\n KEYBOARD_OFFSET,\n InputContext,\n INPUT_CTX_SIZE,\n INPUT_CTX_OFFSET,\n exports_enums as Enums,\n EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET,\n DEFAULT_WASM_URL\n};\n\n//# debugId=481433B14A5626C464756E2164756E21\n//# sourceMappingURL=engine.js.map\n",
5
+ "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// src/util.ts\nvar exports_util = {};\n__export(exports_util, {\n unwrap: () => unwrap,\n toHexString: () => toHexString,\n logPerSecond: () => logPerSecond,\n logOnce: () => logOnce,\n logEvery: () => logEvery,\n assert: () => assert\n});\nfunction toHexString(dataView, length) {\n length ??= dataView.byteLength;\n let hexString = \"\";\n for (let i = 0;i < length; i++) {\n const byte = dataView.getUint8(i);\n hexString += `${byte.toString(16).padStart(2, \"0\")} `;\n }\n return hexString.trim();\n}\nfunction assert(condition, message) {\n if (condition == null || condition === false) {\n throw new Error(message ?? \"Assertion failed\");\n }\n}\nvar backpressureLogs = new Map;\nfunction logOnce(...args) {\n const key = args.map((a) => String(a)).join(\" \");\n if (!backpressureLogs.has(key)) {\n console.log(...args);\n backpressureLogs.set(key, 1);\n }\n}\nfunction logPerSecond(now, ...args) {\n logEvery(now, 1000, ...args);\n}\nfunction logEvery(now, interval = 10, ...args) {\n const key = args.map((a) => String(a)).join(\" \");\n const lastLogged = backpressureLogs.get(key) ?? -Infinity;\n if (now - lastLogged >= interval) {\n console.log(...args);\n backpressureLogs.set(key, now);\n }\n}\nfunction unwrap(value, message) {\n assert(value != null, message ?? `Unwrap failed: value is ${value}`);\n return value;\n}\n// ../engine/dist/engine.js\nvar exports_engine = {};\n__export(exports_engine, {\n readTapeHeader: () => readTapeHeader,\n mouseButtonToMouseButtonCode: () => mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton: () => mouseButtonCodeToMouseButton,\n keyToKeyCode: () => keyToKeyCode,\n keyCodeToKey: () => keyCodeToKey,\n inputSourceToInputSourceCode: () => inputSourceToInputSourceCode,\n inputSourceCodeToInputSource: () => inputSourceCodeToInputSource,\n TimeContext: () => TimeContext,\n TIME_CTX_OFFSET: () => TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET: () => SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN: () => SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET: () => SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n PlayerInputContext: () => PlayerInputContext,\n PLAYER_INPUTS_SIZE: () => PLAYER_INPUTS_SIZE,\n NetContext: () => NetContext,\n NET_CTX_OFFSET: () => NET_CTX_OFFSET,\n MouseContext: () => MouseContext,\n MOUSE_OFFSET: () => MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET: () => MOUSE_BUTTONS_OFFSET,\n MAX_ROLLBACK_FRAMES: () => MAX_ROLLBACK_FRAMES,\n MAX_PLAYERS: () => MAX_PLAYERS,\n KeyboardContext: () => KeyboardContext,\n KEYBOARD_SIZE: () => KEYBOARD_SIZE,\n KEYBOARD_OFFSET: () => KEYBOARD_OFFSET,\n InputContext: () => InputContext,\n INPUT_CTX_SIZE: () => INPUT_CTX_SIZE,\n INPUT_CTX_OFFSET: () => INPUT_CTX_OFFSET,\n Enums: () => exports_enums,\n EVENT_PAYLOAD_SIZE: () => EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN: () => EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET: () => EVENTS_OFFSET,\n DEFAULT_WASM_URL: () => DEFAULT_WASM_URL\n});\nvar __defProp2 = Object.defineProperty;\nvar __export2 = (target, all) => {\n for (var name in all)\n __defProp2(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\nvar exports_enums = {};\n__export2(exports_enums, {\n NetJoinFailReason: () => NetJoinFailReason,\n MouseButton: () => MouseButton,\n Key: () => Key,\n InputSource: () => InputSource,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n EventType2[EventType2[\"NetJoinOk\"] = 8] = \"NetJoinOk\";\n EventType2[EventType2[\"NetJoinFail\"] = 9] = \"NetJoinFail\";\n EventType2[EventType2[\"NetPeerJoin\"] = 10] = \"NetPeerJoin\";\n EventType2[EventType2[\"NetPeerLeave\"] = 11] = \"NetPeerLeave\";\n EventType2[EventType2[\"NetPeerAssignLocalId\"] = 12] = \"NetPeerAssignLocalId\";\n EventType2[EventType2[\"NetPacketReceived\"] = 13] = \"NetPacketReceived\";\n EventType2[EventType2[\"NetSessionInit\"] = 14] = \"NetSessionInit\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\nvar InputSource;\n((InputSource2) => {\n InputSource2[InputSource2[\"None\"] = 0] = \"None\";\n InputSource2[InputSource2[\"LocalKeyboard\"] = 1] = \"LocalKeyboard\";\n InputSource2[InputSource2[\"LocalMouse\"] = 2] = \"LocalMouse\";\n InputSource2[InputSource2[\"LocalTouch\"] = 3] = \"LocalTouch\";\n InputSource2[InputSource2[\"LocalGamepad0\"] = 4] = \"LocalGamepad0\";\n InputSource2[InputSource2[\"LocalGamepad1\"] = 5] = \"LocalGamepad1\";\n InputSource2[InputSource2[\"LocalGamepad2\"] = 6] = \"LocalGamepad2\";\n InputSource2[InputSource2[\"LocalGamepad3\"] = 7] = \"LocalGamepad3\";\n InputSource2[InputSource2[\"LocalGamepad4\"] = 8] = \"LocalGamepad4\";\n InputSource2[InputSource2[\"LocalGamepad5\"] = 9] = \"LocalGamepad5\";\n InputSource2[InputSource2[\"LocalGamepad6\"] = 10] = \"LocalGamepad6\";\n InputSource2[InputSource2[\"LocalGamepad7\"] = 11] = \"LocalGamepad7\";\n InputSource2[InputSource2[\"LocalGamepad8\"] = 12] = \"LocalGamepad8\";\n InputSource2[InputSource2[\"LocalGamepad9\"] = 13] = \"LocalGamepad9\";\n InputSource2[InputSource2[\"LocalGamepad10\"] = 14] = \"LocalGamepad10\";\n InputSource2[InputSource2[\"LocalGamepad11\"] = 15] = \"LocalGamepad11\";\n InputSource2[InputSource2[\"RemotePeer0\"] = 128] = \"RemotePeer0\";\n InputSource2[InputSource2[\"RemotePeer1\"] = 129] = \"RemotePeer1\";\n InputSource2[InputSource2[\"RemotePeer2\"] = 130] = \"RemotePeer2\";\n InputSource2[InputSource2[\"RemotePeer3\"] = 131] = \"RemotePeer3\";\n InputSource2[InputSource2[\"RemotePeer4\"] = 132] = \"RemotePeer4\";\n InputSource2[InputSource2[\"RemotePeer5\"] = 133] = \"RemotePeer5\";\n InputSource2[InputSource2[\"RemotePeer6\"] = 134] = \"RemotePeer6\";\n InputSource2[InputSource2[\"RemotePeer7\"] = 135] = \"RemotePeer7\";\n InputSource2[InputSource2[\"RemotePeer8\"] = 136] = \"RemotePeer8\";\n InputSource2[InputSource2[\"RemotePeer9\"] = 137] = \"RemotePeer9\";\n InputSource2[InputSource2[\"RemotePeer10\"] = 138] = \"RemotePeer10\";\n InputSource2[InputSource2[\"RemotePeer11\"] = 139] = \"RemotePeer11\";\n InputSource2[InputSource2[\"Unmapped\"] = 255] = \"Unmapped\";\n})(InputSource ||= {});\nvar NetJoinFailReason;\n((NetJoinFailReason2) => {\n NetJoinFailReason2[NetJoinFailReason2[\"unknown\"] = 0] = \"unknown\";\n NetJoinFailReason2[NetJoinFailReason2[\"timeout\"] = 1] = \"timeout\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_full\"] = 2] = \"room_full\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_not_found\"] = 3] = \"room_not_found\";\n NetJoinFailReason2[NetJoinFailReason2[\"already_in_room\"] = 4] = \"already_in_room\";\n})(NetJoinFailReason ||= {});\nvar MAX_PLAYERS = 12;\nvar KEYBOARD_OFFSET = 0;\nvar KEYBOARD_SIZE = 256;\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar PLAYER_INPUTS_SIZE = 280;\nvar INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\nfunction inputSourceToInputSourceCode(source) {\n return InputSource[source];\n}\nfunction inputSourceCodeToInputSource(code) {\n return InputSource[code];\n}\n\nclass PlayerInputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass InputContext {\n #dataView;\n #players = [];\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n #buildPlayers() {\n this.#players = [];\n for (let i = 0;i < MAX_PLAYERS; i++) {\n const playerOffset = i * PLAYER_INPUTS_SIZE;\n const playerDataView = new DataView(this.dataView.buffer, this.dataView.byteOffset + playerOffset, PLAYER_INPUTS_SIZE);\n this.#players.push(new PlayerInputContext(playerDataView));\n }\n }\n get players() {\n return this.#players;\n }\n get keys() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].keys;\n }\n get mouse() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1);\n }\n get right() {\n return this.#buttonState(3);\n }\n get middle() {\n return this.#buttonState(2);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1);\n }\n get backslash() {\n return this.#keystate(2);\n }\n get bracketLeft() {\n return this.#keystate(3);\n }\n get bracketRight() {\n return this.#keystate(4);\n }\n get comma() {\n return this.#keystate(5);\n }\n get digit0() {\n return this.#keystate(6);\n }\n get digit1() {\n return this.#keystate(7);\n }\n get digit2() {\n return this.#keystate(8);\n }\n get digit3() {\n return this.#keystate(9);\n }\n get digit4() {\n return this.#keystate(10);\n }\n get digit5() {\n return this.#keystate(11);\n }\n get digit6() {\n return this.#keystate(12);\n }\n get digit7() {\n return this.#keystate(13);\n }\n get digit8() {\n return this.#keystate(14);\n }\n get digit9() {\n return this.#keystate(15);\n }\n get equal() {\n return this.#keystate(16);\n }\n get intlBackslash() {\n return this.#keystate(17);\n }\n get intlRo() {\n return this.#keystate(18);\n }\n get intlYen() {\n return this.#keystate(19);\n }\n get a() {\n return this.#keystate(20);\n }\n get b() {\n return this.#keystate(21);\n }\n get c() {\n return this.#keystate(22);\n }\n get d() {\n return this.#keystate(23);\n }\n get e() {\n return this.#keystate(24);\n }\n get f() {\n return this.#keystate(25);\n }\n get g() {\n return this.#keystate(26);\n }\n get h() {\n return this.#keystate(27);\n }\n get i() {\n return this.#keystate(28);\n }\n get j() {\n return this.#keystate(29);\n }\n get k() {\n return this.#keystate(30);\n }\n get l() {\n return this.#keystate(31);\n }\n get m() {\n return this.#keystate(32);\n }\n get n() {\n return this.#keystate(33);\n }\n get o() {\n return this.#keystate(34);\n }\n get p() {\n return this.#keystate(35);\n }\n get q() {\n return this.#keystate(36);\n }\n get r() {\n return this.#keystate(37);\n }\n get s() {\n return this.#keystate(38);\n }\n get t() {\n return this.#keystate(39);\n }\n get u() {\n return this.#keystate(40);\n }\n get v() {\n return this.#keystate(41);\n }\n get w() {\n return this.#keystate(42);\n }\n get x() {\n return this.#keystate(43);\n }\n get y() {\n return this.#keystate(44);\n }\n get z() {\n return this.#keystate(45);\n }\n get minus() {\n return this.#keystate(46);\n }\n get period() {\n return this.#keystate(47);\n }\n get quote() {\n return this.#keystate(48);\n }\n get semicolon() {\n return this.#keystate(49);\n }\n get slash() {\n return this.#keystate(50);\n }\n get altLeft() {\n return this.#keystate(51);\n }\n get altRight() {\n return this.#keystate(52);\n }\n get backspace() {\n return this.#keystate(53);\n }\n get capsLock() {\n return this.#keystate(54);\n }\n get contextMenu() {\n return this.#keystate(55);\n }\n get controlLeft() {\n return this.#keystate(56);\n }\n get controlRight() {\n return this.#keystate(57);\n }\n get enter() {\n return this.#keystate(58);\n }\n get metaLeft() {\n return this.#keystate(59);\n }\n get metaRight() {\n return this.#keystate(60);\n }\n get shiftLeft() {\n return this.#keystate(61);\n }\n get shiftRight() {\n return this.#keystate(62);\n }\n get space() {\n return this.#keystate(63);\n }\n get tab() {\n return this.#keystate(64);\n }\n get convert() {\n return this.#keystate(65);\n }\n get kanaMode() {\n return this.#keystate(66);\n }\n get lang1() {\n return this.#keystate(67);\n }\n get lang2() {\n return this.#keystate(68);\n }\n get lang3() {\n return this.#keystate(69);\n }\n get lang4() {\n return this.#keystate(70);\n }\n get lang5() {\n return this.#keystate(71);\n }\n get nonConvert() {\n return this.#keystate(72);\n }\n get delete() {\n return this.#keystate(73);\n }\n get end() {\n return this.#keystate(74);\n }\n get help() {\n return this.#keystate(75);\n }\n get home() {\n return this.#keystate(76);\n }\n get insert() {\n return this.#keystate(77);\n }\n get pageDown() {\n return this.#keystate(78);\n }\n get pageUp() {\n return this.#keystate(79);\n }\n get arrowDown() {\n return this.#keystate(80);\n }\n get arrowLeft() {\n return this.#keystate(81);\n }\n get arrowRight() {\n return this.#keystate(82);\n }\n get arrowUp() {\n return this.#keystate(83);\n }\n get numLock() {\n return this.#keystate(84);\n }\n get numpad0() {\n return this.#keystate(85);\n }\n get numpad1() {\n return this.#keystate(86);\n }\n get numpad2() {\n return this.#keystate(87);\n }\n get numpad3() {\n return this.#keystate(88);\n }\n get numpad4() {\n return this.#keystate(89);\n }\n get numpad5() {\n return this.#keystate(90);\n }\n get numpad6() {\n return this.#keystate(91);\n }\n get numpad7() {\n return this.#keystate(92);\n }\n get numpad8() {\n return this.#keystate(93);\n }\n get numpad9() {\n return this.#keystate(94);\n }\n get numpadAdd() {\n return this.#keystate(95);\n }\n get numpadBackspace() {\n return this.#keystate(96);\n }\n get numpadClear() {\n return this.#keystate(97);\n }\n get numpadClearEntry() {\n return this.#keystate(98);\n }\n get numpadComma() {\n return this.#keystate(99);\n }\n get numpadDecimal() {\n return this.#keystate(100);\n }\n get numpadDivide() {\n return this.#keystate(101);\n }\n get numpadEnter() {\n return this.#keystate(102);\n }\n get numpadEqual() {\n return this.#keystate(103);\n }\n get numpadHash() {\n return this.#keystate(104);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105);\n }\n get numpadMemoryClear() {\n return this.#keystate(106);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107);\n }\n get numpadMemoryStore() {\n return this.#keystate(108);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109);\n }\n get numpadMultiply() {\n return this.#keystate(110);\n }\n get numpadParenLeft() {\n return this.#keystate(111);\n }\n get numpadParenRight() {\n return this.#keystate(112);\n }\n get numpadStar() {\n return this.#keystate(113);\n }\n get numpadSubtract() {\n return this.#keystate(114);\n }\n get escape() {\n return this.#keystate(115);\n }\n get fn() {\n return this.#keystate(116);\n }\n get fnLock() {\n return this.#keystate(117);\n }\n get printScreen() {\n return this.#keystate(118);\n }\n get scrollLock() {\n return this.#keystate(119);\n }\n get pause() {\n return this.#keystate(120);\n }\n get browserBack() {\n return this.#keystate(121);\n }\n get browserFavorites() {\n return this.#keystate(122);\n }\n get browserForward() {\n return this.#keystate(123);\n }\n get browserHome() {\n return this.#keystate(124);\n }\n get browserRefresh() {\n return this.#keystate(125);\n }\n get browserSearch() {\n return this.#keystate(126);\n }\n get browserStop() {\n return this.#keystate(127);\n }\n get eject() {\n return this.#keystate(128);\n }\n get launchApp1() {\n return this.#keystate(129);\n }\n get launchApp2() {\n return this.#keystate(130);\n }\n get launchMail() {\n return this.#keystate(131);\n }\n get mediaPlayPause() {\n return this.#keystate(132);\n }\n get mediaSelect() {\n return this.#keystate(133);\n }\n get mediaStop() {\n return this.#keystate(134);\n }\n get mediaTrackNext() {\n return this.#keystate(135);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136);\n }\n get power() {\n return this.#keystate(137);\n }\n get sleep() {\n return this.#keystate(138);\n }\n get audioVolumeDown() {\n return this.#keystate(139);\n }\n get audioVolumeMute() {\n return this.#keystate(140);\n }\n get audioVolumeUp() {\n return this.#keystate(141);\n }\n get wakeUp() {\n return this.#keystate(142);\n }\n get hyper() {\n return this.#keystate(143);\n }\n get super() {\n return this.#keystate(144);\n }\n get turbo() {\n return this.#keystate(145);\n }\n get abort() {\n return this.#keystate(146);\n }\n get resume() {\n return this.#keystate(147);\n }\n get suspend() {\n return this.#keystate(148);\n }\n get again() {\n return this.#keystate(149);\n }\n get copy() {\n return this.#keystate(150);\n }\n get cut() {\n return this.#keystate(151);\n }\n get find() {\n return this.#keystate(152);\n }\n get open() {\n return this.#keystate(153);\n }\n get paste() {\n return this.#keystate(154);\n }\n get props() {\n return this.#keystate(155);\n }\n get select() {\n return this.#keystate(156);\n }\n get undo() {\n return this.#keystate(157);\n }\n get hiragana() {\n return this.#keystate(158);\n }\n get katakana() {\n return this.#keystate(159);\n }\n get f1() {\n return this.#keystate(160);\n }\n get f2() {\n return this.#keystate(161);\n }\n get f3() {\n return this.#keystate(162);\n }\n get f4() {\n return this.#keystate(163);\n }\n get f5() {\n return this.#keystate(164);\n }\n get f6() {\n return this.#keystate(165);\n }\n get f7() {\n return this.#keystate(166);\n }\n get f8() {\n return this.#keystate(167);\n }\n get f9() {\n return this.#keystate(168);\n }\n get f10() {\n return this.#keystate(169);\n }\n get f11() {\n return this.#keystate(170);\n }\n get f12() {\n return this.#keystate(171);\n }\n get f13() {\n return this.#keystate(172);\n }\n get f14() {\n return this.#keystate(173);\n }\n get f15() {\n return this.#keystate(174);\n }\n get f16() {\n return this.#keystate(175);\n }\n get f17() {\n return this.#keystate(176);\n }\n get f18() {\n return this.#keystate(177);\n }\n get f19() {\n return this.#keystate(178);\n }\n get f20() {\n return this.#keystate(179);\n }\n get f21() {\n return this.#keystate(180);\n }\n get f22() {\n return this.#keystate(181);\n }\n get f23() {\n return this.#keystate(182);\n }\n get f24() {\n return this.#keystate(183);\n }\n get f25() {\n return this.#keystate(184);\n }\n get f26() {\n return this.#keystate(185);\n }\n get f27() {\n return this.#keystate(186);\n }\n get f28() {\n return this.#keystate(187);\n }\n get f29() {\n return this.#keystate(188);\n }\n get f30() {\n return this.#keystate(189);\n }\n get f31() {\n return this.#keystate(190);\n }\n get f32() {\n return this.#keystate(191);\n }\n get f33() {\n return this.#keystate(192);\n }\n get f34() {\n return this.#keystate(193);\n }\n get f35() {\n return this.#keystate(194);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\nvar MAX_PEERS = 12;\nvar PEERS_ARRAY_OFFSET = 32;\nvar PEER_CTX_SIZE = 8;\nvar PEER_CONNECTED_OFFSET = 0;\nvar PEER_PACKET_COUNT_OFFSET = 1;\nvar PEER_SEQ_OFFSET = 2;\nvar PEER_ACK_OFFSET = 4;\nvar PEER_ACK_COUNT_OFFSET = 6;\nvar STATUS_MAP = {\n 0: \"offline\",\n 1: \"local\",\n 2: \"join:pending\",\n 3: \"connected\",\n 4: \"disconnected\"\n};\n\nclass NetContext {\n dataView;\n #peers = Array.from({ length: MAX_PEERS }, () => ({\n isLocal: false,\n seq: -1,\n ack: -1\n }));\n #peersResult = [];\n constructor(dataView) {\n this.dataView = dataView;\n }\n #hasValidBuffer() {\n if (!this.dataView)\n return false;\n return this.dataView.buffer.byteLength > 0;\n }\n get peerCount() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(0);\n }\n get localPeerId() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(1);\n }\n get isInSession() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(2) !== 0;\n }\n get status() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const statusByte = this.dataView.getUint8(3);\n return STATUS_MAP[statusByte] ?? \"local\";\n }\n get matchFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(4, true);\n }\n get sessionStartFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(8, true);\n }\n get roomCode() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(12 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return String.fromCharCode(...bytes);\n }\n get wantsRoomCode() {\n if (!this.#hasValidBuffer()) {\n return;\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(20 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return bytes.length > 0 ? String.fromCharCode(...bytes) : undefined;\n }\n set wantsRoomCode(code) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n for (let i = 0;i < 8; i++) {\n this.dataView.setUint8(20 + i, 0);\n }\n if (code) {\n for (let i = 0;i < Math.min(code.length, 7); i++) {\n this.dataView.setUint8(20 + i, code.charCodeAt(i));\n }\n }\n }\n get wantsDisconnect() {\n if (!this.#hasValidBuffer()) {\n return false;\n }\n return this.dataView.getUint8(28) !== 0;\n }\n set wantsDisconnect(value) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n this.dataView.setUint8(28, value ? 1 : 0);\n }\n get peers() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const dv = this.dataView;\n const localPeerId = this.localPeerId;\n const matchFrame = this.matchFrame;\n let minRemoteSeq = -1;\n for (let i = 0;i < MAX_PEERS; i++) {\n if (i === localPeerId)\n continue;\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n if (dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET) === 0)\n continue;\n const seq = dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n if (minRemoteSeq === -1 || seq < minRemoteSeq) {\n minRemoteSeq = seq;\n }\n }\n this.#peersResult.length = 0;\n for (let i = 0;i < MAX_PEERS; i++) {\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n const peer = this.#peers[i];\n if (!peer) {\n throw new Error(`Unexpected missing peer object at index ${i}`);\n }\n const isLocal = i === localPeerId;\n peer.isLocal = isLocal;\n if (isLocal) {\n peer.seq = matchFrame;\n peer.ack = minRemoteSeq;\n } else {\n const packetCount = dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET);\n const ackCount = dv.getUint8(peerOffset + PEER_ACK_COUNT_OFFSET);\n peer.seq = packetCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n peer.ack = ackCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_ACK_OFFSET, true);\n }\n this.#peersResult.push(peer);\n }\n return this.#peersResult;\n }\n}\n\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\nvar TAPE_MAGIC = 1413566533;\nfunction readTapeHeader(tape) {\n const view = new DataView(tape.buffer, tape.byteOffset, tape.byteLength);\n const magic = view.getUint32(0, true);\n if (magic !== TAPE_MAGIC) {\n throw new Error(`Invalid tape format: expected magic ${TAPE_MAGIC.toString(16)}, got ${magic.toString(16)}`);\n }\n return {\n magic,\n version: view.getUint16(4, true),\n startFrame: view.getUint32(8, true),\n frameCount: view.getUint16(12, true),\n eventCount: view.getUint16(14, true)\n };\n}\nvar DEFAULT_WASM_URL = new URL(\"https://unpkg.com/@bloopjs/engine@0.0.85/wasm/bloop.wasm\");\nvar MAX_ROLLBACK_FRAMES = 500;\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar NET_CTX_OFFSET = EVENTS_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\n// src/sim.ts\nvar originalConsole = globalThis.console;\nvar noop = () => {};\nvar stubConsole = Object.fromEntries(Object.keys(originalConsole).map((key) => [key, noop]));\nfunction muteConsole() {\n globalThis.console = stubConsole;\n}\nfunction unmuteConsole() {\n globalThis.console = originalConsole;\n}\n\nclass Sim {\n wasm;\n id;\n #memory;\n #time;\n #serialize;\n #isPaused = false;\n #net;\n onTapeFull;\n constructor(wasm, memory, opts) {\n this.wasm = wasm;\n this.#memory = memory;\n this.#time = new TimeContext(new DataView(this.#memory.buffer, this.wasm.get_time_ctx()));\n this.id = `${Math.floor(Math.random() * 1e6)}`;\n this.#serialize = opts?.serialize;\n this.#net = new NetContext;\n }\n step(ms) {\n if (this.#isPaused) {\n return 0;\n }\n return this.wasm.step(ms ?? 16);\n }\n tick(isResimulating) {\n this.wasm.tick(isResimulating ?? false);\n }\n cloneSession(source) {\n if (source.isRecording) {\n this.loadTape(source.saveTape());\n }\n this.restore(source.snapshot());\n }\n pause() {\n this.#isPaused = true;\n }\n unpause() {\n this.#isPaused = false;\n }\n get isPaused() {\n return this.#isPaused;\n }\n stepBack() {\n if (this.time.frame === 0) {\n return;\n }\n this.seek(this.time.frame - 1);\n }\n seek(frame, inclusive) {\n assert(this.hasHistory, \"Not recording or playing back, can't seek to frame\");\n const targetFrame = inclusive ? frame + 1 : frame;\n const shouldMute = frame < this.time.frame;\n if (shouldMute) {\n muteConsole();\n }\n this.wasm.seek(targetFrame);\n if (shouldMute) {\n unmuteConsole();\n }\n }\n snapshot() {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const ptr = this.wasm.take_snapshot(size);\n const header = new Uint32Array(this.#memory.buffer, ptr, 4);\n const userLenIndex = SNAPSHOT_HEADER_USER_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n const engineLenIndex = SNAPSHOT_HEADER_ENGINE_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n assert(header[userLenIndex], `header user length missing`);\n assert(header[engineLenIndex], `header engine length missing`);\n const length = header[userLenIndex] + header[engineLenIndex];\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, length);\n const copy = new Uint8Array(length);\n copy.set(memoryView);\n return copy;\n }\n static NETWORK_MAX_PACKET_BYTES = 2 * 1024 * 1024;\n record(maxEvents = 1e5, maxPacketBytes = Sim.NETWORK_MAX_PACKET_BYTES) {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const result = this.wasm.start_recording(size, maxEvents, maxPacketBytes);\n if (result !== 0) {\n throw new Error(`failed to start recording, error code=${result}`);\n }\n }\n saveTape() {\n const tapeLen = this.wasm.get_tape_len();\n const tapePtr = this.wasm.get_tape_ptr();\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tapeLen);\n const copy = new Uint8Array(tapeLen);\n copy.set(memoryView);\n return copy;\n }\n loadTape(tape, options) {\n const tapePtr = this.wasm.alloc(tape.byteLength);\n assert(tapePtr > 0, `failed to allocate ${tape.byteLength} bytes for tape load, pointer=${tapePtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tape.byteLength);\n memoryView.set(tape);\n if (this.isRecording) {\n this.wasm.stop_recording();\n }\n const checkpointInterval = options?.checkpointInterval ?? 0;\n const checkpointMaxSize = options?.checkpointMaxSize ?? 10 * 1024 * 1024;\n const result = this.wasm.load_tape(tapePtr, tape.byteLength, checkpointInterval, checkpointMaxSize);\n assert(result === 0, `failed to load tape, error code=${result}`);\n this.wasm.free(tapePtr, tape.byteLength);\n }\n restore(snapshot) {\n const dataPtr = this.wasm.alloc(snapshot.byteLength);\n assert(dataPtr > 0, `failed to allocate ${snapshot.byteLength} bytes for snapshot restore, pointer=${dataPtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, dataPtr, snapshot.byteLength);\n memoryView.set(snapshot);\n this.wasm.restore(dataPtr);\n this.wasm.free(dataPtr, snapshot.byteLength);\n }\n unmount() {\n this.wasm.deinit();\n }\n get time() {\n if (!this.#time.dataView || this.#time.dataView.buffer !== this.#memory.buffer) {\n this.#time.dataView = new DataView(this.#memory.buffer, this.wasm.get_time_ctx());\n }\n return this.#time;\n }\n get net() {\n if (!this.#net.dataView || this.#net.dataView.buffer !== this.#memory.buffer) {\n this.#net.dataView = new DataView(this.#memory.buffer, this.wasm.get_net_ctx());\n }\n return this.#net;\n }\n get buffer() {\n return this.#memory.buffer;\n }\n get isRecording() {\n return Boolean(this.wasm.is_recording());\n }\n get isReplaying() {\n return Boolean(this.wasm.is_replaying());\n }\n get hasHistory() {\n return this.isRecording || this.isReplaying;\n }\n emit = {\n keydown: (key, peerId = 0) => {\n this.wasm.emit_keydown(keyToKeyCode(key), peerId);\n },\n keyup: (key, peerId = 0) => {\n this.wasm.emit_keyup(keyToKeyCode(key), peerId);\n },\n mousemove: (x, y, peerId = 0) => {\n this.wasm.emit_mousemove(x, y, peerId);\n },\n mousedown: (button, peerId = 0) => {\n this.wasm.emit_mousedown(mouseButtonToMouseButtonCode(button), peerId);\n },\n mouseup: (button, peerId = 0) => {\n this.wasm.emit_mouseup(mouseButtonToMouseButtonCode(button), peerId);\n },\n mousewheel: (x, y, peerId = 0) => {\n this.wasm.emit_mousewheel(x, y, peerId);\n },\n network: (type, data) => {\n switch (type) {\n case \"join:ok\": {\n const roomCode = data.roomCode;\n const encoded = new TextEncoder().encode(roomCode);\n const ptr = this.wasm.alloc(encoded.length);\n new Uint8Array(this.#memory.buffer, ptr, encoded.length).set(encoded);\n this.wasm.emit_net_join_ok(ptr, encoded.length);\n this.wasm.free(ptr, encoded.length);\n break;\n }\n case \"join:fail\":\n this.wasm.emit_net_join_fail(0);\n break;\n case \"peer:join\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_join(peerId);\n break;\n }\n case \"peer:leave\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_leave(peerId);\n break;\n }\n case \"peer:assign_local_id\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_assign_local_id(peerId);\n break;\n }\n case \"session:start\":\n this.wasm.emit_net_session_init();\n break;\n case \"session:end\":\n this.wasm.emit_net_session_end();\n break;\n }\n },\n packet: (data) => {\n if (data.length === 0) {\n return;\n }\n const ptr = this.wasm.alloc(data.byteLength);\n assert(ptr > 0, `Failed to allocate ${data.byteLength} bytes for received packet`);\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, data.byteLength);\n memoryView.set(data);\n const result = this.wasm.emit_receive_packet(ptr, data.byteLength);\n this.wasm.free(ptr, data.byteLength);\n if (result !== 0) {\n const errorMessages = {\n 1: \"No active session\",\n 2: \"Buffer too small\",\n 3: \"Unsupported packet version\",\n 4: \"Invalid event count\"\n };\n throw new Error(errorMessages[result] ?? `Unknown packet error: ${result}`);\n }\n }\n };\n getOutboundPacket(targetPeer) {\n this.wasm.build_outbound_packet(targetPeer);\n const len = this.wasm.get_outbound_packet_len();\n if (len === 0) {\n throw new Error(`No outbound packet available for peer ${targetPeer}`);\n }\n const ptr = this.wasm.get_outbound_packet();\n assert(ptr > 0, `Invalid outbound packet pointer: ${ptr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, len);\n const copy = new Uint8Array(len);\n copy.set(memoryView);\n return copy;\n }\n}\n\n// src/mount.ts\nasync function mount(mountable, options) {\n const wasmUrl = options?.wasmUrl ?? DEFAULT_WASM_URL;\n const startRecording = options?.startRecording ?? true;\n const { maxEvents, maxPacketBytes } = calculateTapeConfig(options?.tape);\n const bytes = await fetch(wasmUrl).then((res) => res.arrayBuffer()).catch((e) => {\n console.error(`Failed to fetch wasm at ${wasmUrl}`, e);\n throw e;\n });\n const memory = new WebAssembly.Memory({ initial: 310, maximum: 1000 });\n let sim;\n const wasmInstantiatedSource = await WebAssembly.instantiate(bytes, {\n env: {\n memory,\n __systems: function(system_handle, ptr) {\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.systemsCallback(system_handle, ptr);\n },\n __before_frame: function(ptr, frame) {\n try {\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.setContext(ptr);\n mountable.hooks.beforeFrame?.(frame);\n } catch (e) {\n console.error(\"Error in beforeFrame hook:\", e);\n }\n },\n __on_tape_full: function(_ctxPtr) {\n if (!sim) {\n throw new Error(\"Sim not initialized in on_tape_full\");\n }\n const tapeBytes = sim.saveTape();\n if (sim.onTapeFull) {\n sim.onTapeFull(tapeBytes);\n } else {\n const size = tapeBytes.length / 1024;\n const duration = sim.time.time;\n const kbPerSecond = size / duration;\n console.warn(\"Tape full. Recording stopped\", {\n size: `${(tapeBytes.length / 1024).toFixed(0)}kb`,\n duration: `${sim.time.time.toFixed(2)}s`,\n kbPerSecond: `${kbPerSecond.toFixed(2)} kb/s`\n });\n }\n },\n console_log: function(ptr, len) {\n const bytes2 = new Uint8Array(memory.buffer, ptr, len);\n const string = new TextDecoder(\"utf-8\").decode(bytes2);\n console.log(string);\n },\n __user_data_len: function() {\n const serializer = mountable.hooks.serialize();\n return serializer ? serializer.size : 0;\n },\n user_data_serialize: function(ptr, len) {\n const serializer = mountable.hooks.serialize();\n assert(len === serializer.size, `user_data_serialize length mismatch, expected=${serializer.size} got=${len}`);\n serializer.write(memory.buffer, ptr);\n },\n user_data_deserialize: function(ptr, len) {\n mountable.hooks.deserialize(memory.buffer, ptr, len);\n }\n }\n });\n const wasm = wasmInstantiatedSource.instance.exports;\n const enginePointer = wasm.initialize();\n sim = new Sim(wasm, memory, {\n serialize: mountable.hooks.serialize\n });\n if (startRecording) {\n sim.record(maxEvents, maxPacketBytes);\n }\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.setContext(enginePointer);\n return {\n sim\n };\n}\nfunction calculateTapeConfig(tape) {\n let maxEvents;\n if (!tape) {\n maxEvents = 1e5;\n } else if (\"maxEvents\" in tape) {\n maxEvents = tape.maxEvents;\n } else {\n const avgEvents = tape.averageEventsPerFrame ?? 2;\n maxEvents = Math.ceil(tape.duration * 60 * avgEvents);\n }\n const localOnly = tape?.localOnly ?? false;\n const maxPacketBytes = localOnly ? 0 : Sim.NETWORK_MAX_PACKET_BYTES;\n return { maxEvents, maxPacketBytes };\n}\n// src/bloop.ts\nclass Bloop {\n #systems = [];\n #context;\n #engineBuffer = new ArrayBuffer(0);\n static create(opts = {}) {\n return new Bloop(opts, \"dontCallMeDirectly\");\n }\n constructor(opts = {}, dontCallMeDirectly) {\n if (dontCallMeDirectly !== \"dontCallMeDirectly\") {\n throw new Error(\"Bloop constructor is private. Use Bloop.create() to create a new game instance.\");\n }\n const inputs = new InputContext;\n this.#context = {\n bag: opts.bag ?? {},\n time: new TimeContext,\n inputs,\n get players() {\n return inputs.players;\n },\n rawPointer: -1,\n net: new NetContext\n };\n }\n get bag() {\n return this.#context.bag;\n }\n get context() {\n return this.#context;\n }\n system(label, system) {\n system.label ??= label;\n this.#systems.push(system);\n return this.#systems.length;\n }\n hooks = {\n serialize: () => {\n const str = JSON.stringify(this.#context.bag);\n const encoder = new TextEncoder;\n const textBytes = encoder.encode(str);\n return {\n size: textBytes.byteLength,\n write: (buffer, ptr) => {\n const memoryView = new Uint8Array(buffer, ptr, textBytes.byteLength);\n memoryView.set(textBytes);\n }\n };\n },\n deserialize: (buffer, ptr, len) => {\n const bagBytes = new Uint8Array(buffer, ptr, len);\n const decoder = new TextDecoder;\n const str = decoder.decode(bagBytes);\n try {\n this.#context.bag = JSON.parse(str);\n } catch (e) {\n console.error(\"failed to deserialize bag\", { json: str, error: e });\n }\n },\n setBuffer: (buffer) => {\n this.#engineBuffer = buffer;\n },\n setContext: (ptr) => {\n if (!this.#engineBuffer) {\n throw new Error(\"Tried to set context before engine buffer\");\n }\n const dv = new DataView(this.#engineBuffer, ptr);\n const timeCtxPtr = dv.getUint32(TIME_CTX_OFFSET, true);\n const inputCtxPtr = dv.getUint32(INPUT_CTX_OFFSET, true);\n const netCtxPtr = dv.getUint32(NET_CTX_OFFSET, true);\n this.#context.rawPointer = ptr;\n this.#context.inputs.dataView = new DataView(this.#engineBuffer, inputCtxPtr);\n this.#context.time.dataView = new DataView(this.#engineBuffer, timeCtxPtr);\n this.#context.net.dataView = new DataView(this.#engineBuffer, netCtxPtr);\n },\n systemsCallback: (system_handle, ptr) => {\n this.hooks.setContext(ptr);\n const dv = new DataView(this.#engineBuffer, ptr);\n const eventsPtr = dv.getUint32(EVENTS_OFFSET, true);\n const eventsDataView = new DataView(this.#engineBuffer, eventsPtr);\n for (const system of this.#systems) {\n system.update?.(this.#context);\n const eventCount = eventsDataView.getUint16(0, true);\n let offset = 4;\n for (let i = 0;i < eventCount; i++) {\n const eventType = eventsDataView.getUint8(offset);\n const eventSource = eventsDataView.getUint8(offset + 1);\n const payloadOffset = offset + 4;\n const payloadByte = eventsDataView.getUint8(payloadOffset);\n const payloadVec2 = {\n x: eventsDataView.getFloat32(payloadOffset, true),\n y: eventsDataView.getFloat32(payloadOffset + Float32Array.BYTES_PER_ELEMENT, true)\n };\n switch (eventType) {\n case exports_enums.EventType.KeyDown: {\n system.keydown?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n }\n case exports_enums.EventType.KeyUp:\n system.keyup?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseDown:\n system.mousedown?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseUp:\n system.mouseup?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseMove:\n system.mousemove?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n case exports_enums.EventType.MouseWheel:\n system.mousewheel?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n case exports_enums.EventType.NetJoinOk: {\n const roomCodeBytes = [];\n for (let j = 0;j < 8; j++) {\n const byte = eventsDataView.getUint8(payloadOffset + j);\n if (byte === 0)\n break;\n roomCodeBytes.push(byte);\n }\n const roomCode = String.fromCharCode(...roomCodeBytes);\n this.#context.event = {\n type: \"join:ok\",\n data: { roomCode }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetJoinFail: {\n const reasonCode = eventsDataView.getUint8(payloadOffset);\n const reasons = [\n \"unknown\",\n \"timeout\",\n \"room_full\",\n \"room_not_found\",\n \"already_in_room\"\n ];\n const reason = reasons[reasonCode] ?? \"unknown\";\n this.#context.event = {\n type: \"join:fail\",\n data: { reason }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetPeerJoin: {\n const peerId = eventsDataView.getUint8(payloadOffset);\n this.#context.event = {\n type: \"peer:join\",\n data: { peerId }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetPeerLeave: {\n const peerId = eventsDataView.getUint8(payloadOffset);\n this.#context.event = {\n type: \"peer:leave\",\n data: { peerId }\n };\n system.netcode?.(this.#context);\n break;\n }\n default:\n break;\n }\n offset += 12;\n }\n this.#context.event = undefined;\n }\n }\n };\n}\nfunction attachEvent(context, event) {\n context.event = event;\n return context;\n}\nexport {\n unwrap,\n mount,\n assert,\n exports_util as Util,\n Sim,\n exports_engine as Engine,\n Bloop\n};\n\n//# debugId=E85C2C15D3DEFCAC64756E2164756E21\n//# sourceMappingURL=mod.js.map\n",
6
+ "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// js/codegen/enums.ts\nvar exports_enums = {};\n__export(exports_enums, {\n NetJoinFailReason: () => NetJoinFailReason,\n MouseButton: () => MouseButton,\n Key: () => Key,\n InputSource: () => InputSource,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n EventType2[EventType2[\"NetJoinOk\"] = 8] = \"NetJoinOk\";\n EventType2[EventType2[\"NetJoinFail\"] = 9] = \"NetJoinFail\";\n EventType2[EventType2[\"NetPeerJoin\"] = 10] = \"NetPeerJoin\";\n EventType2[EventType2[\"NetPeerLeave\"] = 11] = \"NetPeerLeave\";\n EventType2[EventType2[\"NetPeerAssignLocalId\"] = 12] = \"NetPeerAssignLocalId\";\n EventType2[EventType2[\"NetPacketReceived\"] = 13] = \"NetPacketReceived\";\n EventType2[EventType2[\"NetSessionInit\"] = 14] = \"NetSessionInit\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\nvar InputSource;\n((InputSource2) => {\n InputSource2[InputSource2[\"None\"] = 0] = \"None\";\n InputSource2[InputSource2[\"LocalKeyboard\"] = 1] = \"LocalKeyboard\";\n InputSource2[InputSource2[\"LocalMouse\"] = 2] = \"LocalMouse\";\n InputSource2[InputSource2[\"LocalTouch\"] = 3] = \"LocalTouch\";\n InputSource2[InputSource2[\"LocalGamepad0\"] = 4] = \"LocalGamepad0\";\n InputSource2[InputSource2[\"LocalGamepad1\"] = 5] = \"LocalGamepad1\";\n InputSource2[InputSource2[\"LocalGamepad2\"] = 6] = \"LocalGamepad2\";\n InputSource2[InputSource2[\"LocalGamepad3\"] = 7] = \"LocalGamepad3\";\n InputSource2[InputSource2[\"LocalGamepad4\"] = 8] = \"LocalGamepad4\";\n InputSource2[InputSource2[\"LocalGamepad5\"] = 9] = \"LocalGamepad5\";\n InputSource2[InputSource2[\"LocalGamepad6\"] = 10] = \"LocalGamepad6\";\n InputSource2[InputSource2[\"LocalGamepad7\"] = 11] = \"LocalGamepad7\";\n InputSource2[InputSource2[\"LocalGamepad8\"] = 12] = \"LocalGamepad8\";\n InputSource2[InputSource2[\"LocalGamepad9\"] = 13] = \"LocalGamepad9\";\n InputSource2[InputSource2[\"LocalGamepad10\"] = 14] = \"LocalGamepad10\";\n InputSource2[InputSource2[\"LocalGamepad11\"] = 15] = \"LocalGamepad11\";\n InputSource2[InputSource2[\"RemotePeer0\"] = 128] = \"RemotePeer0\";\n InputSource2[InputSource2[\"RemotePeer1\"] = 129] = \"RemotePeer1\";\n InputSource2[InputSource2[\"RemotePeer2\"] = 130] = \"RemotePeer2\";\n InputSource2[InputSource2[\"RemotePeer3\"] = 131] = \"RemotePeer3\";\n InputSource2[InputSource2[\"RemotePeer4\"] = 132] = \"RemotePeer4\";\n InputSource2[InputSource2[\"RemotePeer5\"] = 133] = \"RemotePeer5\";\n InputSource2[InputSource2[\"RemotePeer6\"] = 134] = \"RemotePeer6\";\n InputSource2[InputSource2[\"RemotePeer7\"] = 135] = \"RemotePeer7\";\n InputSource2[InputSource2[\"RemotePeer8\"] = 136] = \"RemotePeer8\";\n InputSource2[InputSource2[\"RemotePeer9\"] = 137] = \"RemotePeer9\";\n InputSource2[InputSource2[\"RemotePeer10\"] = 138] = \"RemotePeer10\";\n InputSource2[InputSource2[\"RemotePeer11\"] = 139] = \"RemotePeer11\";\n InputSource2[InputSource2[\"Unmapped\"] = 255] = \"Unmapped\";\n})(InputSource ||= {});\nvar NetJoinFailReason;\n((NetJoinFailReason2) => {\n NetJoinFailReason2[NetJoinFailReason2[\"unknown\"] = 0] = \"unknown\";\n NetJoinFailReason2[NetJoinFailReason2[\"timeout\"] = 1] = \"timeout\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_full\"] = 2] = \"room_full\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_not_found\"] = 3] = \"room_not_found\";\n NetJoinFailReason2[NetJoinFailReason2[\"already_in_room\"] = 4] = \"already_in_room\";\n})(NetJoinFailReason ||= {});\n// js/inputs.ts\nvar MAX_PLAYERS = 12;\nvar KEYBOARD_OFFSET = 0;\nvar KEYBOARD_SIZE = 256;\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar PLAYER_INPUTS_SIZE = 280;\nvar INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\nfunction inputSourceToInputSourceCode(source) {\n return InputSource[source];\n}\nfunction inputSourceCodeToInputSource(code) {\n return InputSource[code];\n}\n\n// js/contexts/inputContext.ts\nclass PlayerInputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass InputContext {\n #dataView;\n #players = [];\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n #buildPlayers() {\n this.#players = [];\n for (let i = 0;i < MAX_PLAYERS; i++) {\n const playerOffset = i * PLAYER_INPUTS_SIZE;\n const playerDataView = new DataView(this.dataView.buffer, this.dataView.byteOffset + playerOffset, PLAYER_INPUTS_SIZE);\n this.#players.push(new PlayerInputContext(playerDataView));\n }\n }\n get players() {\n return this.#players;\n }\n get keys() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].keys;\n }\n get mouse() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1 /* Left */);\n }\n get right() {\n return this.#buttonState(3 /* Right */);\n }\n get middle() {\n return this.#buttonState(2 /* Middle */);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1 /* Backquote */);\n }\n get backslash() {\n return this.#keystate(2 /* Backslash */);\n }\n get bracketLeft() {\n return this.#keystate(3 /* BracketLeft */);\n }\n get bracketRight() {\n return this.#keystate(4 /* BracketRight */);\n }\n get comma() {\n return this.#keystate(5 /* Comma */);\n }\n get digit0() {\n return this.#keystate(6 /* Digit0 */);\n }\n get digit1() {\n return this.#keystate(7 /* Digit1 */);\n }\n get digit2() {\n return this.#keystate(8 /* Digit2 */);\n }\n get digit3() {\n return this.#keystate(9 /* Digit3 */);\n }\n get digit4() {\n return this.#keystate(10 /* Digit4 */);\n }\n get digit5() {\n return this.#keystate(11 /* Digit5 */);\n }\n get digit6() {\n return this.#keystate(12 /* Digit6 */);\n }\n get digit7() {\n return this.#keystate(13 /* Digit7 */);\n }\n get digit8() {\n return this.#keystate(14 /* Digit8 */);\n }\n get digit9() {\n return this.#keystate(15 /* Digit9 */);\n }\n get equal() {\n return this.#keystate(16 /* Equal */);\n }\n get intlBackslash() {\n return this.#keystate(17 /* IntlBackslash */);\n }\n get intlRo() {\n return this.#keystate(18 /* IntlRo */);\n }\n get intlYen() {\n return this.#keystate(19 /* IntlYen */);\n }\n get a() {\n return this.#keystate(20 /* KeyA */);\n }\n get b() {\n return this.#keystate(21 /* KeyB */);\n }\n get c() {\n return this.#keystate(22 /* KeyC */);\n }\n get d() {\n return this.#keystate(23 /* KeyD */);\n }\n get e() {\n return this.#keystate(24 /* KeyE */);\n }\n get f() {\n return this.#keystate(25 /* KeyF */);\n }\n get g() {\n return this.#keystate(26 /* KeyG */);\n }\n get h() {\n return this.#keystate(27 /* KeyH */);\n }\n get i() {\n return this.#keystate(28 /* KeyI */);\n }\n get j() {\n return this.#keystate(29 /* KeyJ */);\n }\n get k() {\n return this.#keystate(30 /* KeyK */);\n }\n get l() {\n return this.#keystate(31 /* KeyL */);\n }\n get m() {\n return this.#keystate(32 /* KeyM */);\n }\n get n() {\n return this.#keystate(33 /* KeyN */);\n }\n get o() {\n return this.#keystate(34 /* KeyO */);\n }\n get p() {\n return this.#keystate(35 /* KeyP */);\n }\n get q() {\n return this.#keystate(36 /* KeyQ */);\n }\n get r() {\n return this.#keystate(37 /* KeyR */);\n }\n get s() {\n return this.#keystate(38 /* KeyS */);\n }\n get t() {\n return this.#keystate(39 /* KeyT */);\n }\n get u() {\n return this.#keystate(40 /* KeyU */);\n }\n get v() {\n return this.#keystate(41 /* KeyV */);\n }\n get w() {\n return this.#keystate(42 /* KeyW */);\n }\n get x() {\n return this.#keystate(43 /* KeyX */);\n }\n get y() {\n return this.#keystate(44 /* KeyY */);\n }\n get z() {\n return this.#keystate(45 /* KeyZ */);\n }\n get minus() {\n return this.#keystate(46 /* Minus */);\n }\n get period() {\n return this.#keystate(47 /* Period */);\n }\n get quote() {\n return this.#keystate(48 /* Quote */);\n }\n get semicolon() {\n return this.#keystate(49 /* Semicolon */);\n }\n get slash() {\n return this.#keystate(50 /* Slash */);\n }\n get altLeft() {\n return this.#keystate(51 /* AltLeft */);\n }\n get altRight() {\n return this.#keystate(52 /* AltRight */);\n }\n get backspace() {\n return this.#keystate(53 /* Backspace */);\n }\n get capsLock() {\n return this.#keystate(54 /* CapsLock */);\n }\n get contextMenu() {\n return this.#keystate(55 /* ContextMenu */);\n }\n get controlLeft() {\n return this.#keystate(56 /* ControlLeft */);\n }\n get controlRight() {\n return this.#keystate(57 /* ControlRight */);\n }\n get enter() {\n return this.#keystate(58 /* Enter */);\n }\n get metaLeft() {\n return this.#keystate(59 /* MetaLeft */);\n }\n get metaRight() {\n return this.#keystate(60 /* MetaRight */);\n }\n get shiftLeft() {\n return this.#keystate(61 /* ShiftLeft */);\n }\n get shiftRight() {\n return this.#keystate(62 /* ShiftRight */);\n }\n get space() {\n return this.#keystate(63 /* Space */);\n }\n get tab() {\n return this.#keystate(64 /* Tab */);\n }\n get convert() {\n return this.#keystate(65 /* Convert */);\n }\n get kanaMode() {\n return this.#keystate(66 /* KanaMode */);\n }\n get lang1() {\n return this.#keystate(67 /* Lang1 */);\n }\n get lang2() {\n return this.#keystate(68 /* Lang2 */);\n }\n get lang3() {\n return this.#keystate(69 /* Lang3 */);\n }\n get lang4() {\n return this.#keystate(70 /* Lang4 */);\n }\n get lang5() {\n return this.#keystate(71 /* Lang5 */);\n }\n get nonConvert() {\n return this.#keystate(72 /* NonConvert */);\n }\n get delete() {\n return this.#keystate(73 /* Delete */);\n }\n get end() {\n return this.#keystate(74 /* End */);\n }\n get help() {\n return this.#keystate(75 /* Help */);\n }\n get home() {\n return this.#keystate(76 /* Home */);\n }\n get insert() {\n return this.#keystate(77 /* Insert */);\n }\n get pageDown() {\n return this.#keystate(78 /* PageDown */);\n }\n get pageUp() {\n return this.#keystate(79 /* PageUp */);\n }\n get arrowDown() {\n return this.#keystate(80 /* ArrowDown */);\n }\n get arrowLeft() {\n return this.#keystate(81 /* ArrowLeft */);\n }\n get arrowRight() {\n return this.#keystate(82 /* ArrowRight */);\n }\n get arrowUp() {\n return this.#keystate(83 /* ArrowUp */);\n }\n get numLock() {\n return this.#keystate(84 /* NumLock */);\n }\n get numpad0() {\n return this.#keystate(85 /* Numpad0 */);\n }\n get numpad1() {\n return this.#keystate(86 /* Numpad1 */);\n }\n get numpad2() {\n return this.#keystate(87 /* Numpad2 */);\n }\n get numpad3() {\n return this.#keystate(88 /* Numpad3 */);\n }\n get numpad4() {\n return this.#keystate(89 /* Numpad4 */);\n }\n get numpad5() {\n return this.#keystate(90 /* Numpad5 */);\n }\n get numpad6() {\n return this.#keystate(91 /* Numpad6 */);\n }\n get numpad7() {\n return this.#keystate(92 /* Numpad7 */);\n }\n get numpad8() {\n return this.#keystate(93 /* Numpad8 */);\n }\n get numpad9() {\n return this.#keystate(94 /* Numpad9 */);\n }\n get numpadAdd() {\n return this.#keystate(95 /* NumpadAdd */);\n }\n get numpadBackspace() {\n return this.#keystate(96 /* NumpadBackspace */);\n }\n get numpadClear() {\n return this.#keystate(97 /* NumpadClear */);\n }\n get numpadClearEntry() {\n return this.#keystate(98 /* NumpadClearEntry */);\n }\n get numpadComma() {\n return this.#keystate(99 /* NumpadComma */);\n }\n get numpadDecimal() {\n return this.#keystate(100 /* NumpadDecimal */);\n }\n get numpadDivide() {\n return this.#keystate(101 /* NumpadDivide */);\n }\n get numpadEnter() {\n return this.#keystate(102 /* NumpadEnter */);\n }\n get numpadEqual() {\n return this.#keystate(103 /* NumpadEqual */);\n }\n get numpadHash() {\n return this.#keystate(104 /* NumpadHash */);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105 /* NumpadMemoryAdd */);\n }\n get numpadMemoryClear() {\n return this.#keystate(106 /* NumpadMemoryClear */);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107 /* NumpadMemoryRecall */);\n }\n get numpadMemoryStore() {\n return this.#keystate(108 /* NumpadMemoryStore */);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109 /* NumpadMemorySubtract */);\n }\n get numpadMultiply() {\n return this.#keystate(110 /* NumpadMultiply */);\n }\n get numpadParenLeft() {\n return this.#keystate(111 /* NumpadParenLeft */);\n }\n get numpadParenRight() {\n return this.#keystate(112 /* NumpadParenRight */);\n }\n get numpadStar() {\n return this.#keystate(113 /* NumpadStar */);\n }\n get numpadSubtract() {\n return this.#keystate(114 /* NumpadSubtract */);\n }\n get escape() {\n return this.#keystate(115 /* Escape */);\n }\n get fn() {\n return this.#keystate(116 /* Fn */);\n }\n get fnLock() {\n return this.#keystate(117 /* FnLock */);\n }\n get printScreen() {\n return this.#keystate(118 /* PrintScreen */);\n }\n get scrollLock() {\n return this.#keystate(119 /* ScrollLock */);\n }\n get pause() {\n return this.#keystate(120 /* Pause */);\n }\n get browserBack() {\n return this.#keystate(121 /* BrowserBack */);\n }\n get browserFavorites() {\n return this.#keystate(122 /* BrowserFavorites */);\n }\n get browserForward() {\n return this.#keystate(123 /* BrowserForward */);\n }\n get browserHome() {\n return this.#keystate(124 /* BrowserHome */);\n }\n get browserRefresh() {\n return this.#keystate(125 /* BrowserRefresh */);\n }\n get browserSearch() {\n return this.#keystate(126 /* BrowserSearch */);\n }\n get browserStop() {\n return this.#keystate(127 /* BrowserStop */);\n }\n get eject() {\n return this.#keystate(128 /* Eject */);\n }\n get launchApp1() {\n return this.#keystate(129 /* LaunchApp1 */);\n }\n get launchApp2() {\n return this.#keystate(130 /* LaunchApp2 */);\n }\n get launchMail() {\n return this.#keystate(131 /* LaunchMail */);\n }\n get mediaPlayPause() {\n return this.#keystate(132 /* MediaPlayPause */);\n }\n get mediaSelect() {\n return this.#keystate(133 /* MediaSelect */);\n }\n get mediaStop() {\n return this.#keystate(134 /* MediaStop */);\n }\n get mediaTrackNext() {\n return this.#keystate(135 /* MediaTrackNext */);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136 /* MediaTrackPrevious */);\n }\n get power() {\n return this.#keystate(137 /* Power */);\n }\n get sleep() {\n return this.#keystate(138 /* Sleep */);\n }\n get audioVolumeDown() {\n return this.#keystate(139 /* AudioVolumeDown */);\n }\n get audioVolumeMute() {\n return this.#keystate(140 /* AudioVolumeMute */);\n }\n get audioVolumeUp() {\n return this.#keystate(141 /* AudioVolumeUp */);\n }\n get wakeUp() {\n return this.#keystate(142 /* WakeUp */);\n }\n get hyper() {\n return this.#keystate(143 /* Hyper */);\n }\n get super() {\n return this.#keystate(144 /* Super */);\n }\n get turbo() {\n return this.#keystate(145 /* Turbo */);\n }\n get abort() {\n return this.#keystate(146 /* Abort */);\n }\n get resume() {\n return this.#keystate(147 /* Resume */);\n }\n get suspend() {\n return this.#keystate(148 /* Suspend */);\n }\n get again() {\n return this.#keystate(149 /* Again */);\n }\n get copy() {\n return this.#keystate(150 /* Copy */);\n }\n get cut() {\n return this.#keystate(151 /* Cut */);\n }\n get find() {\n return this.#keystate(152 /* Find */);\n }\n get open() {\n return this.#keystate(153 /* Open */);\n }\n get paste() {\n return this.#keystate(154 /* Paste */);\n }\n get props() {\n return this.#keystate(155 /* Props */);\n }\n get select() {\n return this.#keystate(156 /* Select */);\n }\n get undo() {\n return this.#keystate(157 /* Undo */);\n }\n get hiragana() {\n return this.#keystate(158 /* Hiragana */);\n }\n get katakana() {\n return this.#keystate(159 /* Katakana */);\n }\n get f1() {\n return this.#keystate(160 /* F1 */);\n }\n get f2() {\n return this.#keystate(161 /* F2 */);\n }\n get f3() {\n return this.#keystate(162 /* F3 */);\n }\n get f4() {\n return this.#keystate(163 /* F4 */);\n }\n get f5() {\n return this.#keystate(164 /* F5 */);\n }\n get f6() {\n return this.#keystate(165 /* F6 */);\n }\n get f7() {\n return this.#keystate(166 /* F7 */);\n }\n get f8() {\n return this.#keystate(167 /* F8 */);\n }\n get f9() {\n return this.#keystate(168 /* F9 */);\n }\n get f10() {\n return this.#keystate(169 /* F10 */);\n }\n get f11() {\n return this.#keystate(170 /* F11 */);\n }\n get f12() {\n return this.#keystate(171 /* F12 */);\n }\n get f13() {\n return this.#keystate(172 /* F13 */);\n }\n get f14() {\n return this.#keystate(173 /* F14 */);\n }\n get f15() {\n return this.#keystate(174 /* F15 */);\n }\n get f16() {\n return this.#keystate(175 /* F16 */);\n }\n get f17() {\n return this.#keystate(176 /* F17 */);\n }\n get f18() {\n return this.#keystate(177 /* F18 */);\n }\n get f19() {\n return this.#keystate(178 /* F19 */);\n }\n get f20() {\n return this.#keystate(179 /* F20 */);\n }\n get f21() {\n return this.#keystate(180 /* F21 */);\n }\n get f22() {\n return this.#keystate(181 /* F22 */);\n }\n get f23() {\n return this.#keystate(182 /* F23 */);\n }\n get f24() {\n return this.#keystate(183 /* F24 */);\n }\n get f25() {\n return this.#keystate(184 /* F25 */);\n }\n get f26() {\n return this.#keystate(185 /* F26 */);\n }\n get f27() {\n return this.#keystate(186 /* F27 */);\n }\n get f28() {\n return this.#keystate(187 /* F28 */);\n }\n get f29() {\n return this.#keystate(188 /* F29 */);\n }\n get f30() {\n return this.#keystate(189 /* F30 */);\n }\n get f31() {\n return this.#keystate(190 /* F31 */);\n }\n get f32() {\n return this.#keystate(191 /* F32 */);\n }\n get f33() {\n return this.#keystate(192 /* F33 */);\n }\n get f34() {\n return this.#keystate(193 /* F34 */);\n }\n get f35() {\n return this.#keystate(194 /* F35 */);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\n// js/contexts/netContext.ts\nvar MAX_PEERS = 12;\nvar PEERS_ARRAY_OFFSET = 32;\nvar PEER_CTX_SIZE = 8;\nvar PEER_CONNECTED_OFFSET = 0;\nvar PEER_PACKET_COUNT_OFFSET = 1;\nvar PEER_SEQ_OFFSET = 2;\nvar PEER_ACK_OFFSET = 4;\nvar PEER_ACK_COUNT_OFFSET = 6;\nvar STATUS_MAP = {\n 0: \"offline\",\n 1: \"local\",\n 2: \"join:pending\",\n 3: \"connected\",\n 4: \"disconnected\"\n};\n\nclass NetContext {\n dataView;\n #peers = Array.from({ length: MAX_PEERS }, () => ({\n isLocal: false,\n seq: -1,\n ack: -1\n }));\n #peersResult = [];\n constructor(dataView) {\n this.dataView = dataView;\n }\n #hasValidBuffer() {\n if (!this.dataView)\n return false;\n return this.dataView.buffer.byteLength > 0;\n }\n get peerCount() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(0);\n }\n get localPeerId() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(1);\n }\n get isInSession() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(2) !== 0;\n }\n get status() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const statusByte = this.dataView.getUint8(3);\n return STATUS_MAP[statusByte] ?? \"local\";\n }\n get matchFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(4, true);\n }\n get sessionStartFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(8, true);\n }\n get roomCode() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(12 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return String.fromCharCode(...bytes);\n }\n get wantsRoomCode() {\n if (!this.#hasValidBuffer()) {\n return;\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(20 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return bytes.length > 0 ? String.fromCharCode(...bytes) : undefined;\n }\n set wantsRoomCode(code) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n for (let i = 0;i < 8; i++) {\n this.dataView.setUint8(20 + i, 0);\n }\n if (code) {\n for (let i = 0;i < Math.min(code.length, 7); i++) {\n this.dataView.setUint8(20 + i, code.charCodeAt(i));\n }\n }\n }\n get wantsDisconnect() {\n if (!this.#hasValidBuffer()) {\n return false;\n }\n return this.dataView.getUint8(28) !== 0;\n }\n set wantsDisconnect(value) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n this.dataView.setUint8(28, value ? 1 : 0);\n }\n get peers() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const dv = this.dataView;\n const localPeerId = this.localPeerId;\n const matchFrame = this.matchFrame;\n let minRemoteSeq = -1;\n for (let i = 0;i < MAX_PEERS; i++) {\n if (i === localPeerId)\n continue;\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n if (dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET) === 0)\n continue;\n const seq = dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n if (minRemoteSeq === -1 || seq < minRemoteSeq) {\n minRemoteSeq = seq;\n }\n }\n this.#peersResult.length = 0;\n for (let i = 0;i < MAX_PEERS; i++) {\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n const peer = this.#peers[i];\n if (!peer) {\n throw new Error(`Unexpected missing peer object at index ${i}`);\n }\n const isLocal = i === localPeerId;\n peer.isLocal = isLocal;\n if (isLocal) {\n peer.seq = matchFrame;\n peer.ack = minRemoteSeq;\n } else {\n const packetCount = dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET);\n const ackCount = dv.getUint8(peerOffset + PEER_ACK_COUNT_OFFSET);\n peer.seq = packetCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n peer.ack = ackCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_ACK_OFFSET, true);\n }\n this.#peersResult.push(peer);\n }\n return this.#peersResult;\n }\n}\n// js/contexts/timeContext.ts\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\n// js/tape.ts\nvar TAPE_MAGIC = 1413566533;\nfunction readTapeHeader(tape) {\n const view = new DataView(tape.buffer, tape.byteOffset, tape.byteLength);\n const magic = view.getUint32(0, true);\n if (magic !== TAPE_MAGIC) {\n throw new Error(`Invalid tape format: expected magic ${TAPE_MAGIC.toString(16)}, got ${magic.toString(16)}`);\n }\n return {\n magic,\n version: view.getUint16(4, true),\n startFrame: view.getUint32(8, true),\n frameCount: view.getUint16(12, true),\n eventCount: view.getUint16(14, true)\n };\n}\n// js/defaultUrl.ts\nvar DEFAULT_WASM_URL = new URL(\"https://unpkg.com/@bloopjs/engine@0.0.85/wasm/bloop.wasm\");\n\n// js/engine.ts\nvar MAX_ROLLBACK_FRAMES = 500;\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar NET_CTX_OFFSET = EVENTS_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\nexport {\n readTapeHeader,\n mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton,\n keyToKeyCode,\n keyCodeToKey,\n inputSourceToInputSourceCode,\n inputSourceCodeToInputSource,\n TimeContext,\n TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n PlayerInputContext,\n PLAYER_INPUTS_SIZE,\n NetContext,\n NET_CTX_OFFSET,\n MouseContext,\n MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET,\n MAX_ROLLBACK_FRAMES,\n MAX_PLAYERS,\n KeyboardContext,\n KEYBOARD_SIZE,\n KEYBOARD_OFFSET,\n InputContext,\n INPUT_CTX_SIZE,\n INPUT_CTX_OFFSET,\n exports_enums as Enums,\n EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET,\n DEFAULT_WASM_URL\n};\n\n//# debugId=1042069BD0D99CE564756E2164756E21\n//# sourceMappingURL=engine.js.map\n",
7
7
  "var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,r=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,N(f,t,c),r.__e=r.__=null,t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_,m=t&&t.__k||v,b=l.length;for(f=P(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:m[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&B(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),(_=!!(4&y.__u))||h.__k===y.__k?f=A(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?o=n.__k[r]=m(null,o,null,null,null):w(o)?o=n.__k[r]=m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?o=n.__k[r]=m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):n.__k[r]=o,f=r+h,o.__=n,o.__b=n.__b+1,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),D(e,e));return t}function A(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=A(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==e||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=E),C&&C.sub(h),h.state||(h.state={}),h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),u.__v==t.__v||!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=V(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(T=o.length;T--;)g(o[T]);z(u)}else u.__e=t.__e,u.__k=t.__k,n.then||z(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=q(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n){n&&n.__c&&(n.__c.__e=!0),n&&n.__k&&n.__k.forEach(z)}function N(n,u,t){for(var i=0;i<t.length;i++)B(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function V(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(V):d({},n)}function q(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props||p,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function B(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function D(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||B(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&D(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function E(n,l,u){return this.constructor(n,u)}function G(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),N(e,u,f)}function J(n,l){G(n,l,J)}function K(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function Q(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,K as cloneElement,Q as createContext,_ as createElement,b as createRef,_ as h,J as hydrate,t as isValidElement,l as options,G as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n",
8
8
  "import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n",
9
9
  "var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;while(void 0!==h){var r=h;h=void 0;f++;while(void 0!==r){var o=r.o;r.o=void 0;r.f&=-3;if(!(8&r.f)&&c(r))try{r.c()}catch(r){if(!t){i=r;t=!0}}r=o}}f=0;s--;if(t)throw i}else s--}function r(i){if(s>0)return i();s++;try{return i()}finally{t()}}var o=void 0;function n(i){var t=o;o=void 0;try{return i()}finally{o=t}}var h=void 0,s=0,f=0,v=0;function e(i){if(void 0!==o){var t=i.n;if(void 0===t||t.t!==o){t={i:0,S:i,p:o.s,n:void 0,t:o,e:void 0,x:void 0,r:t};if(void 0!==o.s)o.s.n=t;o.s=t;i.n=t;if(32&o.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=o.s;t.n=void 0;o.s.n=t;o.s=t}return t}}}function u(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}u.prototype.brand=i;u.prototype.h=function(){return!0};u.prototype.S=function(i){var t=this,r=this.t;if(r!==i&&void 0===i.e){i.x=r;this.t=i;if(void 0!==r)r.e=i;else n(function(){var i;null==(i=t.W)||i.call(t)})}};u.prototype.U=function(i){var t=this;if(void 0!==this.t){var r=i.e,o=i.x;if(void 0!==r){r.x=o;i.e=void 0}if(void 0!==o){o.e=r;i.x=void 0}if(i===this.t){this.t=o;if(void 0===o)n(function(){var i;null==(i=t.Z)||i.call(t)})}}};u.prototype.subscribe=function(i){var t=this;return E(function(){var r=t.value,n=o;o=void 0;try{i(r)}finally{o=n}},{name:\"sub\"})};u.prototype.valueOf=function(){return this.value};u.prototype.toString=function(){return this.value+\"\"};u.prototype.toJSON=function(){return this.value};u.prototype.peek=function(){var i=o;o=void 0;try{return this.value}finally{o=i}};Object.defineProperty(u.prototype,\"value\",{get:function(){var i=e(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(f>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;v++;s++;try{for(var r=this.t;void 0!==r;r=r.x)r.t.N()}finally{t()}}}});function d(i,t){return new u(i,t)}function c(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function a(i){for(var t=i.s;void 0!==t;t=t.n){var r=t.S.n;if(void 0!==r)t.r=r;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function l(i){var t=i.s,r=void 0;while(void 0!==t){var o=t.p;if(-1===t.i){t.S.U(t);if(void 0!==o)o.n=t.n;if(void 0!==t.n)t.n.p=o}else r=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=o}i.s=r}function y(i,t){u.call(this,void 0);this.x=i;this.s=void 0;this.g=v-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}y.prototype=new u;y.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===v)return!0;this.g=v;this.f|=1;if(this.i>0&&!c(this)){this.f&=-2;return!0}var i=o;try{a(this);o=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}o=i;l(this);this.f&=-2;return!0};y.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}u.prototype.S.call(this,i)};y.prototype.U=function(i){if(void 0!==this.t){u.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};y.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(y.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function w(i,t){return new y(i,t)}function _(i){var r=i.u;i.u=void 0;if(\"function\"==typeof r){s++;var n=o;o=void 0;try{r()}catch(t){i.f&=-2;i.f|=8;b(i);throw t}finally{o=n;t()}}}function b(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i)}function g(i){if(o!==this)throw new Error(\"Out-of-order effect\");l(this);o=i;this.f&=-2;if(8&this.f)b(this);t()}function p(i,t){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;this.name=null==t?void 0:t.name}p.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.u=t}finally{i()}};p.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);a(this);s++;var i=o;o=this;return g.bind(this,i)};p.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=h;h=this}};p.prototype.d=function(){this.f|=8;if(!(1&this.f))b(this)};p.prototype.dispose=function(){this.d()};function E(i,t){var r=new p(i,t);try{r.c()}catch(i){r.d();throw i}var o=r.d.bind(r);o[Symbol.dispose]=o;return o}export{y as Computed,p as Effect,u as Signal,r as batch,w as computed,E as effect,d as signal,n as untracked};//# sourceMappingURL=signals-core.module.js.map\n",
@@ -17,18 +17,18 @@
17
17
  "import { debugState } from \"../state.ts\";\n\ntype TopBarProps = {\n leftLabel: string;\n rightLabel: string;\n};\n\nexport function TopBar({ leftLabel, rightLabel }: TopBarProps) {\n const fps = debugState.fps.value;\n const frameNumber = debugState.frameNumber.value;\n const rtt = debugState.netStatus.value.rtt;\n const isOnline = debugState.netStatus.value.peers.length > 0;\n\n return (\n <div className=\"top-bar\">\n <span className=\"top-bar-side-label\">{leftLabel}</span>\n <div className=\"top-bar-center\">\n <div className=\"top-bar-item\">\n <span className=\"top-bar-label\">FPS</span>\n <span className=\"top-bar-value\">{fps}</span>\n </div>\n <div className=\"top-bar-item\">\n <span className=\"top-bar-label\">Frame</span>\n <span className=\"top-bar-value\">{frameNumber}</span>\n </div>\n {isOnline && rtt !== null && (\n <div className=\"top-bar-item\">\n <span className=\"top-bar-label\">Ping</span>\n <span className=\"top-bar-value\">{rtt}ms</span>\n </div>\n )}\n </div>\n <span className=\"top-bar-side-label\">{rightLabel}</span>\n </div>\n );\n}\n",
18
18
  "type VerticalBarProps = {\n value: number;\n max: number;\n side: \"left\" | \"right\";\n color?: string;\n};\n\nexport function VerticalBar({\n value,\n max,\n side,\n color = \"#4a9eff\",\n}: VerticalBarProps) {\n const percentage = max > 0 ? Math.min(100, (value / max) * 100) : 0;\n\n return (\n <div className={`${side}-bar`}>\n <div className=\"vertical-bar\">\n <div\n className=\"vertical-bar-fill\"\n style={{ height: `${percentage}%`, background: color }}\n />\n </div>\n </div>\n );\n}\n",
19
19
  "import { useRef, useCallback } from \"preact/hooks\";\nimport { debugState } from \"../state.ts\";\n\n/** Hook that returns handlers for repeat-on-hold behavior with initial debounce */\nfunction useRepeatOnHold(action: () => void) {\n const rafId = useRef<number | null>(null);\n const timeoutId = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const startRepeat = useCallback(() => {\n // Fire immediately on first press\n action();\n\n // Wait 300ms before starting repeat\n timeoutId.current = setTimeout(() => {\n const repeat = () => {\n action();\n rafId.current = requestAnimationFrame(repeat);\n };\n rafId.current = requestAnimationFrame(repeat);\n }, 300);\n }, [action]);\n\n const stopRepeat = useCallback(() => {\n if (timeoutId.current !== null) {\n clearTimeout(timeoutId.current);\n timeoutId.current = null;\n }\n if (rafId.current !== null) {\n cancelAnimationFrame(rafId.current);\n rafId.current = null;\n }\n }, []);\n\n return {\n onMouseDown: startRepeat,\n onMouseUp: stopRepeat,\n onMouseLeave: stopRepeat,\n };\n}\n\n/** Hook for seek bar drag behavior */\nfunction useSeekDrag(onSeek: (ratio: number) => void) {\n const isDragging = useRef(false);\n const targetRef = useRef<HTMLElement | null>(null);\n\n const getRatio = (clientX: number, target: HTMLElement) => {\n const rect = target.getBoundingClientRect();\n const clickX = clientX - rect.left;\n return Math.max(0, Math.min(1, clickX / rect.width));\n };\n\n const handleMouseDown = useCallback(\n (e: { currentTarget: EventTarget; clientX: number }) => {\n const target = e.currentTarget as HTMLElement;\n isDragging.current = true;\n targetRef.current = target;\n onSeek(getRatio(e.clientX, target));\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n if (isDragging.current && targetRef.current) {\n onSeek(getRatio(moveEvent.clientX, targetRef.current));\n }\n };\n\n const handleMouseUp = () => {\n isDragging.current = false;\n targetRef.current = null;\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n },\n [onSeek],\n );\n\n return { onMouseDown: handleMouseDown };\n}\n\nexport function BottomBar() {\n const isPlaying = debugState.isPlaying.value;\n const tapeUtilization = debugState.tapeUtilization.value;\n const playheadPosition = debugState.playheadPosition.value;\n\n const handleJumpBack = useCallback(() => {\n debugState.onJumpBack.value?.();\n }, []);\n\n const handleStepBack = useCallback(() => {\n debugState.onStepBack.value?.();\n }, []);\n\n const handlePlayPause = useCallback(() => {\n debugState.onPlayPause.value?.();\n }, []);\n\n const handleStepForward = useCallback(() => {\n debugState.onStepForward.value?.();\n }, []);\n\n const handleJumpForward = useCallback(() => {\n debugState.onJumpForward.value?.();\n }, []);\n\n const jumpBackRepeat = useRepeatOnHold(handleJumpBack);\n const stepBackRepeat = useRepeatOnHold(handleStepBack);\n const stepForwardRepeat = useRepeatOnHold(handleStepForward);\n const jumpForwardRepeat = useRepeatOnHold(handleJumpForward);\n\n const handleSeek = useCallback((ratio: number) => {\n debugState.onSeek.value?.(ratio);\n }, []);\n\n const seekDrag = useSeekDrag(handleSeek);\n\n return (\n <div className=\"bottom-bar\">\n <div className=\"playbar-controls\">\n <button className=\"playbar-btn\" {...jumpBackRepeat}>\n {\"<<\"}\n <span className=\"tooltip tooltip-left\">\n Jump back <kbd>4</kbd>\n </span>\n </button>\n <button className=\"playbar-btn\" {...stepBackRepeat}>\n {\"<\"}\n <span className=\"tooltip\">\n Step back <kbd>5</kbd>\n </span>\n </button>\n <button className=\"playbar-btn\" onClick={handlePlayPause}>\n {isPlaying ? \"||\" : \">\"}\n <span className=\"tooltip\">\n {isPlaying ? \"Pause\" : \"Play\"} <kbd>6</kbd>\n </span>\n </button>\n <button className=\"playbar-btn\" {...stepForwardRepeat}>\n {\">\"}\n <span className=\"tooltip\">\n Step forward <kbd>7</kbd>\n </span>\n </button>\n <button className=\"playbar-btn\" {...jumpForwardRepeat}>\n {\">>\"}\n <span className=\"tooltip\">\n Jump forward <kbd>8</kbd>\n </span>\n </button>\n </div>\n <div className=\"seek-bar\" {...seekDrag}>\n <div\n className=\"seek-bar-fill\"\n style={{ width: `${tapeUtilization * 100}%` }}\n />\n {tapeUtilization > 0 && (\n <div\n className=\"seek-bar-position\"\n style={{ left: `${playheadPosition * tapeUtilization * 100}%` }}\n />\n )}\n </div>\n </div>\n );\n}\n",
20
- "import { useRef, useEffect } from \"preact/hooks\";\nimport { debugState } from \"../state.ts\";\nimport { Stats } from \"./Stats.tsx\";\nimport { Logs } from \"./Logs.tsx\";\nimport { DebugToggle } from \"./DebugToggle.tsx\";\nimport { TopBar } from \"./TopBar.tsx\";\nimport { VerticalBar } from \"./VerticalBar.tsx\";\nimport { BottomBar } from \"./BottomBar.tsx\";\n\ntype RootProps = {\n canvas: HTMLCanvasElement;\n hotkey?: string;\n};\n\nexport function Root({ canvas, hotkey = \"Escape\" }: RootProps) {\n const layoutMode = debugState.layoutMode.value;\n\n if (layoutMode === \"off\") {\n return (\n <>\n <main className=\"fullscreen\">\n <GameCanvas canvas={canvas} />\n </main>\n <DebugToggle hotkey={hotkey} />\n </>\n );\n }\n\n if (layoutMode === \"letterboxed\") {\n return (\n <>\n <LetterboxedLayout canvas={canvas} />\n <DebugToggle hotkey={hotkey} />\n </>\n );\n }\n\n // Full layout (netcode debug)\n return (\n <>\n <main className=\"layout\">\n <section className=\"game\">\n <GameCanvas canvas={canvas} />\n </section>\n <section className=\"stats\">\n <Stats />\n </section>\n <section className=\"logs\">\n <Logs />\n </section>\n </main>\n <DebugToggle hotkey={hotkey} />\n </>\n );\n}\n\nfunction LetterboxedLayout({ canvas }: { canvas: HTMLCanvasElement }) {\n const isOnline = debugState.netStatus.value.peers.length > 0;\n const advantage = debugState.advantage.value ?? 0;\n const frameTime = debugState.frameTime.value;\n const snapshotSize = debugState.snapshotSize.value;\n const hmrFlash = debugState.hmrFlash.value;\n\n // Left bar: frame advantage (online) or frame time % (offline)\n const leftValue = isOnline ? Math.abs(advantage) : frameTime;\n const leftMax = isOnline ? 10 : 16.67; // 10 frames advantage or 16.67ms budget\n const leftLabel = isOnline ? \"ADV\" : \"MS\";\n const leftColor = isOnline\n ? advantage >= 0\n ? \"#4a9eff\"\n : \"#ff4a4a\"\n : frameTime > 16.67\n ? \"#ff4a4a\"\n : \"#4aff4a\";\n\n // Right bar: rollback depth (online) or snapshot size (offline)\n // For now, we don't have rollback depth exposed, so use a placeholder\n const rightValue = isOnline ? 0 : snapshotSize;\n const rightMax = isOnline ? 10 : 10000; // 10 frames rollback or 10KB\n const rightLabel = isOnline ? \"RB\" : \"KB\";\n\n const gameClassName = hmrFlash ? \"letterboxed-game hmr-flash\" : \"letterboxed-game\";\n\n return (\n <main className=\"layout-letterboxed\">\n <TopBar leftLabel={leftLabel} rightLabel={rightLabel} />\n <VerticalBar\n value={leftValue}\n max={leftMax}\n side=\"left\"\n color={leftColor}\n />\n <div className={gameClassName}>\n <GameCanvas canvas={canvas} />\n </div>\n <VerticalBar\n value={rightValue}\n max={rightMax}\n side=\"right\"\n />\n <BottomBar />\n </main>\n );\n}\n\nfunction GameCanvas({ canvas }: { canvas: HTMLCanvasElement }) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const container = containerRef.current;\n if (container && !container.contains(canvas)) {\n container.appendChild(canvas);\n }\n\n return () => {\n // Don't remove canvas on cleanup - it may need to persist\n };\n }, [canvas]);\n\n return <div className=\"canvas-container\" ref={containerRef} />;\n}\n",
20
+ "import { useRef, useEffect } from \"preact/hooks\";\nimport { debugState } from \"../state.ts\";\nimport { Stats } from \"./Stats.tsx\";\nimport { Logs } from \"./Logs.tsx\";\nimport { DebugToggle } from \"./DebugToggle.tsx\";\nimport { TopBar } from \"./TopBar.tsx\";\nimport { VerticalBar } from \"./VerticalBar.tsx\";\nimport { BottomBar } from \"./BottomBar.tsx\";\n\ntype RootProps = {\n canvas: HTMLCanvasElement;\n hotkey?: string;\n};\n\nexport function Root({ canvas, hotkey = \"Escape\" }: RootProps) {\n const layoutMode = debugState.layoutMode.value;\n\n if (layoutMode === \"off\") {\n return (\n <>\n <main className=\"fullscreen\">\n <GameCanvas canvas={canvas} />\n </main>\n <DebugToggle hotkey={hotkey} />\n </>\n );\n }\n\n if (layoutMode === \"letterboxed\") {\n return (\n <>\n <LetterboxedLayout canvas={canvas} />\n <DebugToggle hotkey={hotkey} />\n </>\n );\n }\n\n // Full layout (netcode debug)\n return (\n <>\n <main className=\"layout\">\n <section className=\"game\">\n <GameCanvas canvas={canvas} />\n </section>\n <section className=\"stats\">\n <Stats />\n </section>\n <section className=\"logs\">\n <Logs />\n </section>\n </main>\n <DebugToggle hotkey={hotkey} />\n </>\n );\n}\n\nfunction LetterboxedLayout({ canvas }: { canvas: HTMLCanvasElement }) {\n const isOnline = debugState.netStatus.value.peers.length > 0;\n const advantage = debugState.advantage.value ?? 0;\n const frameTime = debugState.frameTime.value;\n const snapshotSize = debugState.snapshotSize.value;\n const hmrFlash = debugState.hmrFlash.value;\n\n // Left bar: frame advantage (online) or frame time % (offline)\n const leftValue = isOnline ? Math.abs(advantage) : frameTime;\n const leftMax = isOnline ? 10 : 16.67; // 10 frames advantage or 16.67ms budget\n const leftLabel = isOnline ? \"ADV\" : \"MS\";\n const leftColor = isOnline\n ? advantage >= 0\n ? \"#4a9eff\"\n : \"#ff4a4a\"\n : frameTime > 16.67\n ? \"#ff4a4a\"\n : \"#4aff4a\";\n\n // Right bar: rollback depth (online) or snapshot size (offline)\n // For now, we don't have rollback depth exposed, so use a placeholder\n const rightValue = isOnline ? 0 : snapshotSize;\n const rightMax = isOnline ? 10 : 10000; // 10k frames rollback or 10KB\n const rightLabel = isOnline ? \"RB\" : \"KB\";\n\n const gameClassName = hmrFlash ? \"letterboxed-game hmr-flash\" : \"letterboxed-game\";\n\n return (\n <main className=\"layout-letterboxed\">\n <TopBar leftLabel={leftLabel} rightLabel={rightLabel} />\n <VerticalBar\n value={leftValue}\n max={leftMax}\n side=\"left\"\n color={leftColor}\n />\n <div className={gameClassName}>\n <GameCanvas canvas={canvas} />\n </div>\n <VerticalBar\n value={rightValue}\n max={rightMax}\n side=\"right\"\n />\n <BottomBar />\n </main>\n );\n}\n\nfunction GameCanvas({ canvas }: { canvas: HTMLCanvasElement }) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const container = containerRef.current;\n if (container && !container.contains(canvas)) {\n container.appendChild(canvas);\n }\n\n return () => {\n // Don't remove canvas on cleanup - it may need to persist\n };\n }, [canvas]);\n\n return <div className=\"canvas-container\" ref={containerRef} />;\n}\n",
21
21
  "export const styles = /*css*/ `\n/* Reset for shadow DOM */\n* {\n box-sizing: border-box;\n}\n\n/* Layout */\n.fullscreen {\n width: 100vw;\n height: 100vh;\n margin: 0;\n padding: 0;\n overflow: hidden;\n}\n\n.fullscreen .canvas-container {\n width: 100%;\n height: 100%;\n}\n\n.fullscreen canvas {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n.layout {\n display: grid;\n grid-template-areas:\n \"game stats\"\n \"logs logs\";\n grid-template-columns: calc(50% - 0.5rem) calc(50% - 0.5rem);\n grid-template-rows: calc(50% - 0.5rem) calc(50% - 0.5rem);\n gap: 1rem;\n width: 100%;\n height: 100%;\n padding: 1rem;\n}\n\n/* Letterboxed layout - using equal vw/vh percentages keeps game at viewport aspect ratio */\n.layout-letterboxed {\n display: grid;\n grid-template-areas:\n \"top-bar top-bar top-bar\"\n \"left-bar game right-bar\"\n \"bottom-bar bottom-bar bottom-bar\";\n grid-template-columns: 2vw 1fr 2vw;\n grid-template-rows: 2vh 1fr 2vh;\n width: 100vw;\n height: 100vh;\n background: #1a1a1a;\n overflow: hidden;\n overscroll-behavior: none;\n}\n\n.top-bar {\n grid-area: top-bar;\n display: flex;\n align-items: center;\n justify-content: space-between;\n background: #111;\n color: #aaa;\n font-family: monospace;\n font-size: 12px;\n padding: 0;\n}\n\n.top-bar-side-label {\n width: 2vw;\n text-align: center;\n font-size: 9px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: #666;\n}\n\n.top-bar-center {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 24px;\n flex: 1;\n}\n\n.top-bar-item {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.top-bar-label {\n opacity: 0.6;\n}\n\n.top-bar-value {\n color: #fff;\n font-weight: 500;\n}\n\n.left-bar {\n grid-area: left-bar;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-end;\n background: #111;\n padding: 4px 0;\n}\n\n.right-bar {\n grid-area: right-bar;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-end;\n background: #111;\n padding: 4px 0;\n}\n\n.vertical-bar {\n width: 12px;\n flex: 1;\n background: #333;\n border-radius: 2px;\n position: relative;\n overflow: hidden;\n}\n\n.vertical-bar-fill {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background: #4a9eff;\n border-radius: 2px;\n transition: height 0.1s ease-out;\n}\n\n\n.bottom-bar {\n grid-area: bottom-bar;\n display: flex;\n align-items: center;\n background: #111;\n padding: 0 8px;\n gap: 8px;\n}\n\n.playbar-controls {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n\n.playbar-btn {\n width: 1.5vh;\n height: 1.5vh;\n min-width: 18px;\n min-height: 18px;\n border: none;\n outline: none;\n background: transparent;\n color: #888;\n font-size: 10px;\n cursor: pointer;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s, color 0.15s;\n position: relative;\n}\n\n.playbar-btn:hover {\n background: #333;\n color: #fff;\n}\n\n.playbar-btn:hover .tooltip {\n opacity: 1;\n visibility: visible;\n}\n\n.tooltip {\n position: absolute;\n bottom: calc(100% + 4px);\n left: 50%;\n transform: translateX(-50%);\n background: #222;\n color: #ccc;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 10px;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.15s;\n pointer-events: none;\n z-index: 10;\n}\n\n.tooltip-left {\n left: 0;\n transform: none;\n}\n\n.tooltip kbd {\n background: #444;\n padding: 1px 4px;\n border-radius: 2px;\n margin-left: 4px;\n font-family: monospace;\n}\n\n.seek-bar {\n flex: 1;\n height: 16px;\n background: #222;\n border-radius: 4px;\n position: relative;\n cursor: pointer;\n overflow: hidden;\n}\n\n.seek-bar-fill {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n background: linear-gradient(to right, #4a2070, #7b3fa0);\n border-radius: 4px;\n transition: width 0.1s ease-out;\n}\n\n.seek-bar-position {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 2px;\n background: #fff;\n}\n\n.letterboxed-game {\n grid-area: game;\n overflow: hidden;\n}\n\n.letterboxed-game .canvas-container {\n width: 100%;\n height: 100%;\n}\n\n.letterboxed-game canvas {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n.letterboxed-game {\n position: relative;\n}\n\n.letterboxed-game.hmr-flash::after {\n content: \"\";\n position: absolute;\n inset: 0;\n pointer-events: none;\n animation: hmr-pulse 0.3s ease-out forwards;\n}\n\n@keyframes hmr-pulse {\n 0% { box-shadow: inset 0 0 0 36px #7b3fa0; }\n 100% { box-shadow: inset 0 0 0 0 #7b3fa0; }\n}\n\n.game {\n grid-area: game;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.stats {\n grid-area: stats;\n background-color: #f0f0f0;\n padding: 1rem;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.logs {\n grid-area: logs;\n background-color: #f0f0f0;\n padding: 1rem;\n border-radius: 8px;\n overflow: hidden;\n}\n\n/* Canvas container */\n.canvas-container {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.canvas-container canvas {\n max-width: 100%;\n max-height: 100%;\n}\n\n/* Debug toggle button */\n.debug-toggle {\n position: fixed;\n bottom: 16px;\n right: 16px;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n border: none;\n background-color: rgba(0, 0, 0, 0.5);\n color: white;\n font-size: 18px;\n cursor: pointer;\n z-index: 1000;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s;\n}\n\n.debug-toggle:hover {\n background-color: rgba(0, 0, 0, 0.7);\n}\n\n/* Stats panel */\n.stats-panel {\n background: rgba(0, 0, 0, 0.7);\n color: white;\n padding: 12px;\n border-radius: 8px;\n font-family: monospace;\n font-size: 14px;\n max-width: 100%;\n overflow: hidden;\n}\n\n.stats-panel h3 {\n margin: 0 0 8px 0;\n font-size: 14px;\n font-weight: 600;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.stats-panel table {\n width: 100%;\n border-collapse: collapse;\n table-layout: fixed;\n}\n\n.stats-panel tr {\n border-bottom: 1px solid rgba(255, 255, 255, 0.2);\n}\n\n.stats-panel tr:last-child {\n border-bottom: none;\n}\n\n.stats-panel td {\n padding: 4px 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.stats-panel td:first-child {\n opacity: 0.7;\n width: 60%;\n}\n\n.stats-panel td:last-child {\n text-align: right;\n font-weight: 600;\n width: 40%;\n}\n\n.stats-panel p {\n margin: 0;\n opacity: 0.7;\n}\n\n/* Logs panel */\n.logs-list {\n width: 100%;\n height: 100%;\n overflow: auto;\n margin: 0;\n padding: 0;\n}\n\n.logs-list li {\n margin: 0 0 24px 0;\n list-style: none;\n}\n\n.logs-list h3 {\n font-size: 16px;\n font-weight: 500;\n margin: 0;\n}\n\n.logs-list .ws {\n color: darkolivegreen;\n}\n\n.logs-list .webrtc {\n color: darkmagenta;\n}\n\n.logs-list .rollback {\n color: darkblue;\n}\n\n.logs-list .local {\n color: #333;\n}\n\n.logs-list .content {\n font-size: 16px;\n}\n\n.logs-list p {\n margin: 4px 0;\n}\n\n.logs-list pre {\n margin: 0;\n white-space: pre-wrap;\n word-break: break-word;\n background-color: oldlace;\n padding: 8px;\n border-radius: 4px;\n border: 1px inset lavender;\n}\n`;\n",
22
22
  "import { type ComponentChild, render } from \"preact\";\nimport { Root } from \"./components/Root.tsx\";\nimport { type DebugState, cycleLayout, debugState } from \"./state.ts\";\nimport { styles } from \"./styles.ts\";\n\nexport type DebugUiOptions = {\n /** Hotkey to toggle debug mode (default: 'Escape') */\n hotkey?: string;\n /** Initial debug visibility (default: false, or true if ?debug in URL) */\n initiallyVisible?: boolean;\n /** Container element to mount to (default: document.body) */\n container?: HTMLElement;\n};\n\nexport class DebugUi {\n #host: HTMLElement;\n #shadow: ShadowRoot;\n #canvas: HTMLCanvasElement;\n #mountPoint: HTMLElement;\n #cleanup: (() => void) | null = null;\n #hotkey: string;\n\n constructor(options: DebugUiOptions = {}) {\n this.#hotkey = options.hotkey ?? \"Escape\";\n const container = options.container ?? document.body;\n const initiallyVisible =\n options.initiallyVisible ??\n new URLSearchParams(window.location.search).has(\"debug\");\n\n // Create host element\n this.#host = document.createElement(\"bloop-debug-ui\");\n this.#host.style.cssText =\n \"display:block;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden;overscroll-behavior:none;\";\n\n // Attach shadow DOM\n this.#shadow = this.#host.attachShadow({ mode: \"open\" });\n\n // Inject styles\n const styleEl = document.createElement(\"style\");\n styleEl.textContent = styles;\n this.#shadow.appendChild(styleEl);\n\n // Create mount point\n this.#mountPoint = document.createElement(\"div\");\n this.#mountPoint.id = \"debug-root\";\n this.#mountPoint.style.cssText = \"width:100%;height:100%;\";\n this.#shadow.appendChild(this.#mountPoint);\n\n // Initialize state\n debugState.layoutMode.value = initiallyVisible ? \"letterboxed\" : \"off\";\n\n // Create canvas element (game renders here)\n this.#canvas = document.createElement(\"canvas\");\n\n // Render Preact app\n this.#render();\n\n // Append to container\n container.appendChild(this.#host);\n\n // Set up hotkey listener\n this.#cleanup = this.#setupHotkey();\n\n // Re-render when layoutMode changes\n debugState.layoutMode.subscribe(() => {\n this.#render();\n });\n }\n\n #render(): void {\n render(\n Root({ canvas: this.#canvas, hotkey: this.#hotkey }) as ComponentChild,\n this.#mountPoint,\n );\n }\n\n #setupHotkey(): () => void {\n const handler = (e: KeyboardEvent) => {\n if (e.key === this.#hotkey) {\n cycleLayout();\n }\n };\n window.addEventListener(\"keydown\", handler);\n return () => window.removeEventListener(\"keydown\", handler);\n }\n\n /** The canvas element for game rendering */\n get canvas(): HTMLCanvasElement {\n return this.#canvas;\n }\n\n /** Access to state signals for external updates */\n get state(): DebugState {\n return debugState;\n }\n\n /** Whether the debug panel is currently visible */\n get isVisible(): boolean {\n return debugState.isVisible.value;\n }\n\n set isVisible(value: boolean) {\n debugState.layoutMode.value = value ? \"letterboxed\" : \"off\";\n }\n\n unmount(): void {\n this.#cleanup?.();\n render(null, this.#mountPoint);\n this.#host.remove();\n }\n}\n",
23
23
  "// src/ws.ts\nif (!globalThis.EventTarget || !globalThis.Event) {\n console.error(`\n PartySocket requires a global 'EventTarget' class to be available!\n You can polyfill this global by adding this to your code before any partysocket imports: \n \n \\`\\`\\`\n import 'partysocket/event-target-polyfill';\n \\`\\`\\`\n Please file an issue at https://github.com/partykit/partykit if you're still having trouble.\n`);\n}\nvar ErrorEvent = class extends Event {\n message;\n error;\n // biome-ignore lint/suspicious/noExplicitAny: vibes\n constructor(error, target) {\n super(\"error\", target);\n this.message = error.message;\n this.error = error;\n }\n};\nvar CloseEvent = class extends Event {\n code;\n reason;\n wasClean = true;\n // biome-ignore lint/suspicious/noExplicitAny: legacy\n constructor(code = 1e3, reason = \"\", target) {\n super(\"close\", target);\n this.code = code;\n this.reason = reason;\n }\n};\nvar Events = {\n Event,\n ErrorEvent,\n CloseEvent\n};\nfunction assert(condition, msg) {\n if (!condition) {\n throw new Error(msg);\n }\n}\nfunction cloneEventBrowser(e) {\n return new e.constructor(e.type, e);\n}\nfunction cloneEventNode(e) {\n if (\"data\" in e) {\n const evt2 = new MessageEvent(e.type, e);\n return evt2;\n }\n if (\"code\" in e || \"reason\" in e) {\n const evt2 = new CloseEvent(\n // @ts-expect-error we need to fix event/listener types\n e.code || 1999,\n // @ts-expect-error we need to fix event/listener types\n e.reason || \"unknown reason\",\n e\n );\n return evt2;\n }\n if (\"error\" in e) {\n const evt2 = new ErrorEvent(e.error, e);\n return evt2;\n }\n const evt = new Event(e.type, e);\n return evt;\n}\nvar _a;\nvar isNode =\n typeof process !== \"undefined\" &&\n typeof ((_a = process.versions) == null ? void 0 : _a.node) !== \"undefined\" &&\n typeof document === \"undefined\";\nvar cloneEvent = isNode ? cloneEventNode : cloneEventBrowser;\nvar DEFAULT = {\n maxReconnectionDelay: 1e4,\n minReconnectionDelay: 1e3 + Math.random() * 4e3,\n minUptime: 5e3,\n reconnectionDelayGrowFactor: 1.3,\n connectionTimeout: 4e3,\n maxRetries: Number.POSITIVE_INFINITY,\n maxEnqueuedMessages: Number.POSITIVE_INFINITY,\n startClosed: false,\n debug: false\n};\nvar didWarnAboutMissingWebSocket = false;\nvar ReconnectingWebSocket = class _ReconnectingWebSocket extends EventTarget {\n _ws;\n _retryCount = -1;\n _uptimeTimeout;\n _connectTimeout;\n _shouldReconnect = true;\n _connectLock = false;\n _binaryType = \"blob\";\n _closeCalled = false;\n _messageQueue = [];\n _debugLogger = console.log.bind(console);\n _url;\n _protocols;\n _options;\n constructor(url, protocols, options = {}) {\n super();\n this._url = url;\n this._protocols = protocols;\n this._options = options;\n if (this._options.startClosed) {\n this._shouldReconnect = false;\n }\n if (this._options.debugLogger) {\n this._debugLogger = this._options.debugLogger;\n }\n this._connect();\n }\n static get CONNECTING() {\n return 0;\n }\n static get OPEN() {\n return 1;\n }\n static get CLOSING() {\n return 2;\n }\n static get CLOSED() {\n return 3;\n }\n get CONNECTING() {\n return _ReconnectingWebSocket.CONNECTING;\n }\n get OPEN() {\n return _ReconnectingWebSocket.OPEN;\n }\n get CLOSING() {\n return _ReconnectingWebSocket.CLOSING;\n }\n get CLOSED() {\n return _ReconnectingWebSocket.CLOSED;\n }\n get binaryType() {\n return this._ws ? this._ws.binaryType : this._binaryType;\n }\n set binaryType(value) {\n this._binaryType = value;\n if (this._ws) {\n this._ws.binaryType = value;\n }\n }\n /**\n * Returns the number or connection retries\n */\n get retryCount() {\n return Math.max(this._retryCount, 0);\n }\n /**\n * The number of bytes of data that have been queued using calls to send() but not yet\n * transmitted to the network. This value resets to zero once all queued data has been sent.\n * This value does not reset to zero when the connection is closed; if you keep calling send(),\n * this will continue to climb. Read only\n */\n get bufferedAmount() {\n const bytes = this._messageQueue.reduce((acc, message) => {\n if (typeof message === \"string\") {\n acc += message.length;\n } else if (message instanceof Blob) {\n acc += message.size;\n } else {\n acc += message.byteLength;\n }\n return acc;\n }, 0);\n return bytes + (this._ws ? this._ws.bufferedAmount : 0);\n }\n /**\n * The extensions selected by the server. This is currently only the empty string or a list of\n * extensions as negotiated by the connection\n */\n get extensions() {\n return this._ws ? this._ws.extensions : \"\";\n }\n /**\n * A string indicating the name of the sub-protocol the server selected;\n * this will be one of the strings specified in the protocols parameter when creating the\n * WebSocket object\n */\n get protocol() {\n return this._ws ? this._ws.protocol : \"\";\n }\n /**\n * The current state of the connection; this is one of the Ready state constants\n */\n get readyState() {\n if (this._ws) {\n return this._ws.readyState;\n }\n return this._options.startClosed\n ? _ReconnectingWebSocket.CLOSED\n : _ReconnectingWebSocket.CONNECTING;\n }\n /**\n * The URL as resolved by the constructor\n */\n get url() {\n return this._ws ? this._ws.url : \"\";\n }\n /**\n * Whether the websocket object is now in reconnectable state\n */\n get shouldReconnect() {\n return this._shouldReconnect;\n }\n /**\n * An event listener to be called when the WebSocket connection's readyState changes to CLOSED\n */\n onclose = null;\n /**\n * An event listener to be called when an error occurs\n */\n onerror = null;\n /**\n * An event listener to be called when a message is received from the server\n */\n onmessage = null;\n /**\n * An event listener to be called when the WebSocket connection's readyState changes to OPEN;\n * this indicates that the connection is ready to send and receive data\n */\n onopen = null;\n /**\n * Closes the WebSocket connection or connection attempt, if any. If the connection is already\n * CLOSED, this method does nothing\n */\n close(code = 1e3, reason) {\n this._closeCalled = true;\n this._shouldReconnect = false;\n this._clearTimeouts();\n if (!this._ws) {\n this._debug(\"close enqueued: no ws instance\");\n return;\n }\n if (this._ws.readyState === this.CLOSED) {\n this._debug(\"close: already closed\");\n return;\n }\n this._ws.close(code, reason);\n }\n /**\n * Closes the WebSocket connection or connection attempt and connects again.\n * Resets retry counter;\n */\n reconnect(code, reason) {\n this._shouldReconnect = true;\n this._closeCalled = false;\n this._retryCount = -1;\n if (!this._ws || this._ws.readyState === this.CLOSED) {\n this._connect();\n } else {\n this._disconnect(code, reason);\n this._connect();\n }\n }\n /**\n * Enqueue specified data to be transmitted to the server over the WebSocket connection\n */\n send(data) {\n if (this._ws && this._ws.readyState === this.OPEN) {\n this._debug(\"send\", data);\n this._ws.send(data);\n } else {\n const { maxEnqueuedMessages = DEFAULT.maxEnqueuedMessages } =\n this._options;\n if (this._messageQueue.length < maxEnqueuedMessages) {\n this._debug(\"enqueue\", data);\n this._messageQueue.push(data);\n }\n }\n }\n _debug(...args) {\n if (this._options.debug) {\n this._debugLogger(\"RWS>\", ...args);\n }\n }\n _getNextDelay() {\n const {\n reconnectionDelayGrowFactor = DEFAULT.reconnectionDelayGrowFactor,\n minReconnectionDelay = DEFAULT.minReconnectionDelay,\n maxReconnectionDelay = DEFAULT.maxReconnectionDelay\n } = this._options;\n let delay = 0;\n if (this._retryCount > 0) {\n delay =\n minReconnectionDelay *\n reconnectionDelayGrowFactor ** (this._retryCount - 1);\n if (delay > maxReconnectionDelay) {\n delay = maxReconnectionDelay;\n }\n }\n this._debug(\"next delay\", delay);\n return delay;\n }\n _wait() {\n return new Promise((resolve) => {\n setTimeout(resolve, this._getNextDelay());\n });\n }\n _getNextProtocols(protocolsProvider) {\n if (!protocolsProvider) return Promise.resolve(null);\n if (\n typeof protocolsProvider === \"string\" ||\n Array.isArray(protocolsProvider)\n ) {\n return Promise.resolve(protocolsProvider);\n }\n if (typeof protocolsProvider === \"function\") {\n const protocols = protocolsProvider();\n if (!protocols) return Promise.resolve(null);\n if (typeof protocols === \"string\" || Array.isArray(protocols)) {\n return Promise.resolve(protocols);\n }\n if (protocols.then) {\n return protocols;\n }\n }\n throw Error(\"Invalid protocols\");\n }\n _getNextUrl(urlProvider) {\n if (typeof urlProvider === \"string\") {\n return Promise.resolve(urlProvider);\n }\n if (typeof urlProvider === \"function\") {\n const url = urlProvider();\n if (typeof url === \"string\") {\n return Promise.resolve(url);\n }\n if (url.then) {\n return url;\n }\n }\n throw Error(\"Invalid URL\");\n }\n _connect() {\n if (this._connectLock || !this._shouldReconnect) {\n return;\n }\n this._connectLock = true;\n const {\n maxRetries = DEFAULT.maxRetries,\n connectionTimeout = DEFAULT.connectionTimeout\n } = this._options;\n if (this._retryCount >= maxRetries) {\n this._debug(\"max retries reached\", this._retryCount, \">=\", maxRetries);\n return;\n }\n this._retryCount++;\n this._debug(\"connect\", this._retryCount);\n this._removeListeners();\n this._wait()\n .then(() =>\n Promise.all([\n this._getNextUrl(this._url),\n this._getNextProtocols(this._protocols || null)\n ])\n )\n .then(([url, protocols]) => {\n if (this._closeCalled) {\n this._connectLock = false;\n return;\n }\n if (\n !this._options.WebSocket &&\n typeof WebSocket === \"undefined\" &&\n !didWarnAboutMissingWebSocket\n ) {\n console.error(`\\u203C\\uFE0F No WebSocket implementation available. You should define options.WebSocket. \n\nFor example, if you're using node.js, run \\`npm install ws\\`, and then in your code:\n\nimport PartySocket from 'partysocket';\nimport WS from 'ws';\n\nconst partysocket = new PartySocket({\n host: \"127.0.0.1:1999\",\n room: \"test-room\",\n WebSocket: WS\n});\n\n`);\n didWarnAboutMissingWebSocket = true;\n }\n const WS = this._options.WebSocket || WebSocket;\n this._debug(\"connect\", { url, protocols });\n this._ws = protocols ? new WS(url, protocols) : new WS(url);\n this._ws.binaryType = this._binaryType;\n this._connectLock = false;\n this._addListeners();\n this._connectTimeout = setTimeout(\n () => this._handleTimeout(),\n connectionTimeout\n );\n })\n .catch((err) => {\n this._connectLock = false;\n this._handleError(new Events.ErrorEvent(Error(err.message), this));\n });\n }\n _handleTimeout() {\n this._debug(\"timeout event\");\n this._handleError(new Events.ErrorEvent(Error(\"TIMEOUT\"), this));\n }\n _disconnect(code = 1e3, reason) {\n this._clearTimeouts();\n if (!this._ws) {\n return;\n }\n this._removeListeners();\n try {\n if (\n this._ws.readyState === this.OPEN ||\n this._ws.readyState === this.CONNECTING\n ) {\n this._ws.close(code, reason);\n }\n this._handleClose(new Events.CloseEvent(code, reason, this));\n } catch (_error) {}\n }\n _acceptOpen() {\n this._debug(\"accept open\");\n this._retryCount = 0;\n }\n _handleOpen = (event) => {\n this._debug(\"open event\");\n const { minUptime = DEFAULT.minUptime } = this._options;\n clearTimeout(this._connectTimeout);\n this._uptimeTimeout = setTimeout(() => this._acceptOpen(), minUptime);\n assert(this._ws, \"WebSocket is not defined\");\n this._ws.binaryType = this._binaryType;\n this._messageQueue.forEach((message) => {\n var _a2;\n (_a2 = this._ws) == null ? void 0 : _a2.send(message);\n });\n this._messageQueue = [];\n if (this.onopen) {\n this.onopen(event);\n }\n this.dispatchEvent(cloneEvent(event));\n };\n _handleMessage = (event) => {\n this._debug(\"message event\");\n if (this.onmessage) {\n this.onmessage(event);\n }\n this.dispatchEvent(cloneEvent(event));\n };\n _handleError = (event) => {\n this._debug(\"error event\", event.message);\n this._disconnect(void 0, event.message === \"TIMEOUT\" ? \"timeout\" : void 0);\n if (this.onerror) {\n this.onerror(event);\n }\n this._debug(\"exec error listeners\");\n this.dispatchEvent(cloneEvent(event));\n this._connect();\n };\n _handleClose = (event) => {\n this._debug(\"close event\");\n this._clearTimeouts();\n if (this._shouldReconnect) {\n this._connect();\n }\n if (this.onclose) {\n this.onclose(event);\n }\n this.dispatchEvent(cloneEvent(event));\n };\n _removeListeners() {\n if (!this._ws) {\n return;\n }\n this._debug(\"removeListeners\");\n this._ws.removeEventListener(\"open\", this._handleOpen);\n this._ws.removeEventListener(\"close\", this._handleClose);\n this._ws.removeEventListener(\"message\", this._handleMessage);\n this._ws.removeEventListener(\"error\", this._handleError);\n }\n _addListeners() {\n if (!this._ws) {\n return;\n }\n this._debug(\"addListeners\");\n this._ws.addEventListener(\"open\", this._handleOpen);\n this._ws.addEventListener(\"close\", this._handleClose);\n this._ws.addEventListener(\"message\", this._handleMessage);\n this._ws.addEventListener(\"error\", this._handleError);\n }\n _clearTimeouts() {\n clearTimeout(this._connectTimeout);\n clearTimeout(this._uptimeTimeout);\n }\n};\n\nexport { ErrorEvent, CloseEvent, ReconnectingWebSocket };\n/*!\n * Reconnecting WebSocket\n * by Pedro Ladaria <pedro.ladaria@gmail.com>\n * https://github.com/pladaria/reconnecting-websocket\n * License MIT\n */\n//# sourceMappingURL=chunk-V6LO7DXK.mjs.map\n",
24
24
  "import type { PeerId } from \"./protocol.ts\";\n\nexport type Log = {\n source: \"webrtc\" | \"ws\" | \"local\" | \"rollback\";\n /** absolute frame number since the start of the sim */\n frame_number: number;\n /** relative frame number since the start of the current session */\n match_frame: number | null;\n /** unix timestamp */\n timestamp: number;\n severity: LogSeverity;\n label?: string;\n json?: any;\n // webrtc stuff\n direction?: LogDirection;\n from?: PeerId;\n to?: PeerId;\n reliable?: boolean;\n packet?: {\n size: number;\n bytes: Uint8Array;\n };\n};\n\nexport type LogOpts = Partial<Log> & {\n source: Log[\"source\"];\n};\n\nexport type LogDirection = \"inbound\" | \"outbound\";\n\nexport type LogSeverity = \"debug\" | \"log\" | \"warn\" | \"error\";\n\nexport type OnLogCallback = (log: Log) => void;\n\nexport type Logger = {\n onLog: OnLogCallback | null;\n\n matchFrame: number;\n frameNumber: number;\n\n log(opts: LogOpts): void;\n warn(opts: LogOpts): void;\n error(opts: LogOpts): void;\n}\n\nexport const logger: Logger = {\n onLog: null as OnLogCallback | null,\n\n matchFrame: -1,\n frameNumber: -1,\n\n log(opts: LogOpts) {\n this.onLog?.({\n ...opts,\n frame_number: this.frameNumber,\n match_frame: this.matchFrame >= 0 ? this.matchFrame : null,\n timestamp: Date.now(),\n severity: \"log\",\n });\n },\n\n warn(opts: LogOpts) {\n this.onLog?.({\n ...opts,\n frame_number: this.frameNumber,\n match_frame: this.matchFrame >= 0 ? this.matchFrame : null,\n timestamp: Date.now(),\n severity: \"warn\",\n });\n },\n\n error(opts: LogOpts) {\n this.onLog?.({\n ...opts,\n frame_number: this.frameNumber,\n match_frame: this.matchFrame >= 0 ? this.matchFrame : null,\n timestamp: Date.now(),\n severity: \"error\",\n });\n },\n};\n",
25
25
  "import { assert } from \"@bloopjs/bloop\";\nimport type { WebSocket } from \"partysocket\";\nimport { logger } from \"./logs.ts\";\nimport type { BrokerMessage, PeerMessage } from \"./protocol.ts\";\n\n// Cached TURN credentials\nlet cachedIceServers: RTCConfiguration[\"iceServers\"] | null = null;\nlet cacheExpiry = 0;\n\n// TURN credentials endpoint - use absolute URL so it works in local dev too\nconst TURN_CREDENTIALS_URL =\n \"https://webrtc-divine-glade-8064.fly.dev/turn-credentials\";\n\nconst DEFAULT_ICE_TIMEOUT = 60000; // 60s\n\n/**\n * Fetch TURN credentials from the server.\n * Results are cached for 1 hour.\n */\nexport async function getIceServers(): Promise<RTCConfiguration[\"iceServers\"]> {\n const now = Date.now();\n if (cachedIceServers && now < cacheExpiry) {\n return cachedIceServers;\n }\n\n const res = await fetch(TURN_CREDENTIALS_URL);\n if (!res.ok) {\n throw new Error(`TURN credentials fetch failed: ${res.status}`);\n }\n\n const data = await res.json();\n if (!data.iceServers) {\n throw new Error(\"No iceServers in TURN response\");\n }\n\n // Filter out port 53 URLs - they're blocked by browsers and cause long timeouts\n // See: https://developers.cloudflare.com/realtime/turn/generate-credentials/\n cachedIceServers = data.iceServers.map((server: RTCIceServer) => {\n if (Array.isArray(server.urls)) {\n return {\n ...server,\n urls: server.urls.filter((url: string) => !url.includes(\":53\")),\n };\n }\n return server;\n });\n\n assert(\n cachedIceServers && cachedIceServers.length > 0,\n \"No valid iceServers after filtering\",\n );\n\n cacheExpiry = now + 60 * 60 * 1000; // 1 hour\n logger.log({\n source: \"webrtc\",\n label: `Got TURN credentials`,\n json: {\n iceServers: cachedIceServers,\n },\n });\n return cachedIceServers;\n}\n\nexport type WebRtcPipe = {\n peerConnection: RTCPeerConnection;\n reliable: RTCDataChannel;\n unreliable: RTCDataChannel;\n peerId: string;\n};\n\nexport async function connect(\n ws: WebSocket,\n peerId: string,\n /** defaults to 10s */\n timeoutMs: number = DEFAULT_ICE_TIMEOUT,\n): Promise<WebRtcPipe> {\n const iceServers = await getIceServers();\n const pc = new RTCPeerConnection({ iceServers });\n const reliable = pc.createDataChannel(\"reliable\", {});\n const unreliable = pc.createDataChannel(\"unreliable\", {\n ordered: false,\n maxRetransmits: 0,\n });\n\n const offer = await pc.createOffer();\n await pc.setLocalDescription(offer);\n logger.log({ source: \"webrtc\", label: \"set offer\", json: offer });\n await gatherIce(pc, timeoutMs);\n logger.log({ source: \"webrtc\", label: \"gathered ICE candidates\" });\n\n logger.log({\n source: \"ws\",\n label: \"sending local description\",\n json: pc.localDescription,\n to: peerId,\n });\n send(ws, {\n type: \"offer\",\n payload: btoa(JSON.stringify(pc.localDescription)),\n target: peerId,\n });\n await waitForAnswer(ws, pc, timeoutMs);\n\n return {\n peerConnection: pc,\n reliable,\n unreliable,\n peerId,\n };\n}\n\nexport async function logErrors(dc: RTCDataChannel) {\n dc.onerror = (event) => {\n logger.error({\n source: \"webrtc\",\n label: `error on ${dc.label} channel`,\n json: event.error,\n });\n };\n\n dc.onclosing = (_event) => {\n logger.log({\n source: \"webrtc\",\n label: `closing ${dc.label} channel`,\n });\n };\n\n dc.onopen = (_event) => {\n logger.log({\n source: \"webrtc\",\n label: `opened ${dc.label} channel`,\n });\n };\n\n dc.onclose = (_event) => {\n logger.log({\n source: \"webrtc\",\n label: `closed ${dc.label} channel`,\n });\n };\n}\n\nexport async function logPeerConnection(pc: RTCPeerConnection, peerId: string) {\n pc.onconnectionstatechange = () => {\n logger.log({\n source: \"webrtc\",\n label: `[${peerId.substring(0, 6)}] connectionState = ${pc.connectionState}`,\n });\n };\n\n pc.onsignalingstatechange = () => {\n logger.log({\n source: \"webrtc\",\n label: `[${peerId.substring(0, 6)}] signalingState = ${pc.signalingState}`,\n });\n };\n}\n\nexport async function gatherIce(\n pc: RTCPeerConnection,\n timeoutMs: number,\n): Promise<boolean | Error> {\n return new Promise<boolean | Error>((yes, no) => {\n setTimeout(() => no(new Error(\"Ice Gathering Timeout\")), timeoutMs);\n\n pc.onicegatheringstatechange = () => {\n logger.log({\n source: \"webrtc\",\n label: `icegatheringstatechange: ${pc.iceGatheringState}`,\n });\n\n if (pc.iceGatheringState === \"complete\") {\n yes(true);\n }\n };\n });\n}\n\nexport async function waitForAnswer(\n ws: WebSocket,\n pc: RTCPeerConnection,\n timeoutMs: number,\n): Promise<void> {\n return new Promise<void>((yes, no) => {\n const timeoutId = setTimeout(no, timeoutMs);\n const messageListener = async (event: MessageEvent) => {\n const serverMsg: BrokerMessage = JSON.parse(event.data);\n if (serverMsg.type !== \"message:json\") {\n return;\n }\n const peerMsg = serverMsg.message;\n if (peerMsg.type !== \"answer\") {\n return;\n }\n const answerDesc = JSON.parse(atob(peerMsg.payload));\n logger.log({\n source: \"webrtc\",\n label: \"received answer\",\n json: answerDesc,\n });\n await pc.setRemoteDescription(new RTCSessionDescription(answerDesc));\n logger.log({\n source: \"webrtc\",\n label: \"set remote description with answer\",\n });\n clearTimeout(timeoutId);\n yes();\n };\n ws.addEventListener(\"message\", messageListener);\n });\n}\n\nexport function listenForOffers(ws: WebSocket, cb: (pipe: WebRtcPipe) => void) {\n const messageListener = async (event: MessageEvent) => {\n const envelope: BrokerMessage = JSON.parse(event.data);\n if (envelope.type !== \"message:json\") {\n return;\n }\n const msg = envelope.message;\n if (msg.type !== \"offer\") {\n return;\n }\n logger.log({ source: \"webrtc\", label: \"received offer\" });\n const offer = JSON.parse(atob(msg.payload));\n const iceServers = await getIceServers();\n const pc = new RTCPeerConnection({ iceServers });\n\n await pc.setRemoteDescription(offer);\n logger.log({\n source: \"webrtc\",\n label: \"set remote description\",\n json: { offer, remoteDescription: pc.remoteDescription },\n });\n const answer = await pc.createAnswer();\n await pc.setLocalDescription(answer);\n logger.log({\n source: \"webrtc\",\n label: \"set local description\",\n json: pc.localDescription,\n });\n await gatherIce(pc, DEFAULT_ICE_TIMEOUT);\n\n const channels = {\n reliable: null as RTCDataChannel | null,\n unreliable: null as RTCDataChannel | null,\n };\n\n pc.ondatachannel = (event) => {\n logger.log({\n source: \"webrtc\",\n label: `received datachannel ${event.channel.label}`,\n });\n switch (event.channel.label) {\n case \"reliable\":\n channels.reliable = event.channel;\n break;\n case \"unreliable\":\n channels.unreliable = event.channel;\n break;\n }\n if (channels.reliable && channels.unreliable) {\n pc.ondatachannel = null;\n cb({\n peerConnection: pc,\n reliable: channels.reliable,\n unreliable: channels.unreliable,\n peerId: envelope.peerId,\n });\n }\n };\n\n logger.log({\n source: \"webrtc\",\n label: \"sending answer\",\n json: pc.localDescription,\n });\n\n send(ws, {\n type: \"answer\",\n payload: btoa(JSON.stringify(pc.localDescription)),\n target: envelope.peerId,\n });\n };\n\n ws.addEventListener(\"message\", messageListener);\n}\n\nfunction send(ws: WebSocket, msg: PeerMessage) {\n ws.send(JSON.stringify(msg));\n logger.log({ source: \"ws\", direction: \"outbound\", json: msg });\n}\n",
26
26
  "import { WebSocket } from \"partysocket\";\nimport { logger } from \"./logs.ts\";\nimport type { BrokerMessage } from \"./protocol.ts\";\nimport {\n connect,\n listenForOffers,\n logErrors,\n logPeerConnection,\n type WebRtcPipe,\n} from \"./transport.ts\";\n\nexport type RoomEvents = {\n onBrokerMessage: (message: BrokerMessage) => void;\n onPeerIdAssign: (peerId: string) => void;\n onPeerConnected: (peerId: string) => void;\n onPeerDisconnected: (peerId: string) => void;\n\n onDataChannelOpen: (\n peerId: string,\n reliable: boolean,\n channel: RTCDataChannel,\n ) => void;\n onMessage: (peerId: string, data: Uint8Array, reliable: boolean) => void;\n onDataChannelClose: (peerId: string, reliable: boolean) => void;\n};\n\nexport function joinRoom(brokerUrl: string, _roomId: string, cbs: RoomEvents) {\n const broker = new WebSocket(brokerUrl);\n\n broker.addEventListener(\"open\", () => {\n logger.log({\n source: \"ws\",\n label: \"Connection opened\",\n });\n });\n\n broker.addEventListener(\"close\", (event) => {\n logger.warn({\n source: \"ws\",\n label: \"Connection closed\",\n json: event,\n });\n });\n\n broker.addEventListener(\"error\", (event) => {\n logger.error({\n source: \"ws\",\n label: \"Connection error\",\n json: event,\n });\n });\n\n const pipes: Map<string, WebRtcPipe> = new Map();\n\n let ourId = \"\";\n\n broker.addEventListener(\"message\", async (event) => {\n try {\n const envelope = JSON.parse(event.data) as BrokerMessage;\n logger.log({\n source: \"ws\",\n direction: \"inbound\",\n json: envelope,\n });\n\n switch (envelope.type) {\n case \"welcome\":\n ourId = envelope.yourId;\n cbs.onPeerIdAssign(envelope.yourId);\n for (const peerId of envelope.peerIds) {\n if (peerId === ourId) continue;\n cbs.onPeerConnected(peerId);\n }\n break;\n case \"message:json\":\n break;\n case \"peer:connect\": {\n const pipe = await connect(broker, envelope.peerId);\n registerPipe(pipe, cbs);\n cbs.onPeerConnected(envelope.peerId);\n break;\n }\n case \"peer:disconnect\":\n cbs.onPeerDisconnected(envelope.peerId);\n break;\n default:\n logger.warn({\n source: \"ws\",\n label: `Unknown message type: ${envelope.type}`,\n json: envelope,\n });\n }\n } catch (e) {\n logger.error({\n source: \"ws\",\n label: \"Failure in message handler\",\n json: {\n data: event.data,\n error: e,\n },\n });\n }\n });\n\n listenForOffers(broker, (pipe) => {\n registerPipe(pipe, cbs);\n });\n\n function registerPipe(pipe: WebRtcPipe, cbs: RoomEvents) {\n logErrors(pipe.reliable);\n logErrors(pipe.unreliable);\n logPeerConnection(pipe.peerConnection, ourId);\n\n cbs.onDataChannelOpen(pipe.peerId, true, pipe.reliable);\n cbs.onDataChannelOpen(pipe.peerId, false, pipe.unreliable);\n\n pipe.reliable.onmessage = (event) => {\n cbs.onMessage(pipe.peerId, event.data, true);\n };\n pipe.reliable.onclose = () => {\n cbs.onDataChannelClose(pipe.peerId, true);\n };\n\n pipe.unreliable.onmessage = (event) => {\n cbs.onMessage(pipe.peerId, event.data, false);\n };\n pipe.unreliable.onclose = () => {\n cbs.onDataChannelClose(pipe.peerId, false);\n };\n pipes.set(pipe.peerId, pipe);\n }\n}\n",
27
- "import { type Bloop, type MountOptions, mount, type Sim } from \"@bloopjs/bloop\";\nimport type { Key } from \"@bloopjs/engine\";\nimport { mouseButtonCodeToMouseButton, readTapeHeader } from \"@bloopjs/engine\";\nimport { DebugUi, type DebugUiOptions } from \"./debugui/mod.ts\";\nimport {\n debugState,\n triggerHmrFlash,\n wirePlaybarHandlers,\n wireTapeDragDrop,\n} from \"./debugui/state.ts\";\nimport {\n joinRoom as joinRoomInternal,\n type RoomEvents,\n} from \"./netcode/broker\";\nimport { logger } from \"./netcode/logs.ts\";\n\nexport type StartOptions = {\n /** A bloop game instance */\n game: Bloop<any>;\n /** A pre-mounted sim instance, defaults to mount with default options */\n sim?: Sim;\n /** An override url to use to fetch the engine wasm */\n wasmUrl?: URL;\n /** Whether the sim should pause before running the first frame, defaults to false */\n startPaused?: boolean;\n /** Whether the sim should be recording to tape from initialization, defaults to true */\n startRecording?: boolean;\n /** URL for the WebRTC signaling broker (e.g. \"wss://broker.example.com/ws\") */\n brokerUrl?: string;\n /** Enable debug UI with optional configuration */\n debugUi?: boolean | DebugUiOptions;\n};\n\nconst DEFAULT_BROKER_URL = \"wss://webrtc-divine-glade-8064.fly.dev/ws\";\n\n/** Start a bloop game on the web */\nexport async function start(opts: StartOptions): Promise<App> {\n if (!opts.sim) {\n const { sim } = await mount(opts.game, {\n startRecording: opts.startRecording ?? true,\n wasmUrl: opts.wasmUrl,\n });\n opts.sim = sim;\n }\n\n const debugOpts = opts.debugUi\n ? typeof opts.debugUi === \"boolean\"\n ? { initiallyVisible: true }\n : opts.debugUi\n : undefined;\n\n const app = new App(\n opts.sim,\n opts.game,\n opts.brokerUrl ?? DEFAULT_BROKER_URL,\n debugOpts,\n );\n\n return app;\n}\n\n/**\n * The main application class for running a bloop game in the browser\n *\n * This class handles translating browser events and APIs to bloopjs and the wasm engine.\n *\n * Usually instantiated with the start() function\n */\nexport class App {\n #sim: Sim;\n game: Bloop<any>;\n /** URL for the WebRTC signaling broker */\n readonly brokerUrl: string;\n /** RequestAnimationFrame handle for cancelling */\n #rafHandle: number | null = null;\n #unsubscribe: UnsubscribeFn | null = null;\n #now: number = performance.now();\n #debugUi: DebugUi | null = null;\n\n constructor(\n sim: Sim,\n game: Bloop<any>,\n brokerUrl: string,\n debugUiOpts?: DebugUiOptions,\n ) {\n this.#sim = sim;\n this.game = game;\n this.brokerUrl = brokerUrl;\n\n if (debugUiOpts) {\n this.#initDebugUi(debugUiOpts);\n }\n\n this.game.hooks.beforeFrame = (frame: number) => {\n logger.frameNumber = this.#sim.time.frame;\n logger.matchFrame = this.game.context.net.matchFrame;\n this.beforeFrame.notify(frame);\n };\n\n this.subscribe();\n }\n\n /** The simulation instance associated with this app */\n get sim(): Sim {\n return this.#sim;\n }\n\n set sim(sim: Sim) {\n this.#sim = sim;\n }\n\n /** Initialize debug UI (creates shadow DOM and mounts Preact) */\n #initDebugUi(opts: DebugUiOptions = {}): DebugUi {\n if (this.#debugUi) return this.#debugUi;\n this.#debugUi = new DebugUi(opts);\n\n // Wire up playbar handlers and drag-drop\n wirePlaybarHandlers(this);\n wireTapeDragDrop(this.#debugUi.canvas, this);\n\n return this.#debugUi;\n }\n\n /** Access debug UI instance */\n get debugUi(): DebugUi | null {\n return this.#debugUi;\n }\n\n /** Get the canvas element from debug UI (for game rendering) */\n get canvas(): HTMLCanvasElement | null {\n return this.#debugUi?.canvas ?? null;\n }\n\n /** Join a multiplayer room via the broker */\n joinRoom(roomId: string, callbacks: RoomEvents): void {\n joinRoomInternal(this.brokerUrl, roomId, callbacks);\n }\n\n /** Load a tape for replay */\n loadTape(tape: Uint8Array): void {\n const header = readTapeHeader(tape);\n this.sim.loadTape(tape);\n this.sim.seek(header.startFrame);\n this.sim.pause();\n\n // Update debug state with tape info\n debugState.tapeStartFrame.value = header.startFrame;\n debugState.tapeFrameCount.value = header.frameCount;\n debugState.tapeUtilization.value = 1; // Loaded tape is \"full\"\n debugState.playheadPosition.value = 0;\n debugState.isPlaying.value = false;\n }\n\n /** Event listeners for before a frame is processed */\n beforeFrame: ReturnType<typeof createListener> = createListener<[number]>();\n /** Event listeners for after a frame is processed */\n afterFrame: ReturnType<typeof createListener> = createListener<[number]>();\n /** Event listeners for HMR events */\n onHmr: ReturnType<typeof createListener> = createListener<[HmrEvent]>();\n\n /** Subscribe to the browser events and start the render loop */\n subscribe(): void {\n // TODO: move this logic to the engine\n // Skip emitting input events during replay to avoid filling the event buffer\n const shouldEmitInputs = () => !this.sim.isReplaying;\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (shouldEmitInputs()) this.sim.emit.keydown(event.code as Key);\n };\n window.addEventListener(\"keydown\", handleKeydown);\n\n const handleKeyup = (event: KeyboardEvent) => {\n if (shouldEmitInputs()) this.sim.emit.keyup(event.code as Key);\n };\n window.addEventListener(\"keyup\", handleKeyup);\n\n const handleMousemove = (event: MouseEvent) => {\n if (shouldEmitInputs())\n this.sim.emit.mousemove(event.clientX, event.clientY);\n };\n window.addEventListener(\"mousemove\", handleMousemove);\n\n const handleMousedown = (event: MouseEvent) => {\n if (shouldEmitInputs())\n this.sim.emit.mousedown(mouseButtonCodeToMouseButton(event.button + 1));\n };\n window.addEventListener(\"mousedown\", handleMousedown);\n\n const handleMouseup = (event: MouseEvent) => {\n if (shouldEmitInputs())\n this.sim.emit.mouseup(mouseButtonCodeToMouseButton(event.button + 1));\n };\n window.addEventListener(\"mouseup\", handleMouseup);\n\n const handleMousewheel = (event: WheelEvent) => {\n if (shouldEmitInputs())\n this.sim.emit.mousewheel(event.deltaX, event.deltaY);\n };\n window.addEventListener(\"wheel\", handleMousewheel);\n\n // Touch events for mobile support\n const handleTouchstart = (event: TouchEvent) => {\n if (!shouldEmitInputs()) return;\n const touch = event.touches[0];\n if (touch) {\n this.sim.emit.mousemove(touch.clientX, touch.clientY);\n this.sim.emit.mousedown(\"Left\");\n }\n };\n window.addEventListener(\"touchstart\", handleTouchstart);\n\n const handleTouchend = () => {\n if (shouldEmitInputs()) this.sim.emit.mouseup(\"Left\");\n };\n window.addEventListener(\"touchend\", handleTouchend);\n\n const handleTouchmove = (event: TouchEvent) => {\n if (!shouldEmitInputs()) return;\n const touch = event.touches[0];\n if (touch) {\n this.sim.emit.mousemove(touch.clientX, touch.clientY);\n }\n };\n window.addEventListener(\"touchmove\", handleTouchmove);\n\n const playbarHotkeys = (event: KeyboardEvent) => {\n // Ctrl/Cmd+S to save tape\n if ((event.ctrlKey || event.metaKey) && event.key === \"s\") {\n event.preventDefault();\n if (this.sim.hasHistory) {\n const tape = this.sim.saveTape();\n const blob = new Blob([tape], { type: \"application/octet-stream\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `tape-${Date.now()}.bloop`;\n a.click();\n URL.revokeObjectURL(url);\n }\n return;\n }\n\n const isPauseHotkey =\n event.key === \"Enter\" && (event.ctrlKey || event.metaKey);\n if (isPauseHotkey || event.key === \"6\") {\n this.sim.isPaused ? this.sim.unpause() : this.sim.pause();\n }\n\n if (this.sim.hasHistory) {\n switch (event.key) {\n case \"4\":\n case \";\":\n debugState.onJumpBack.value?.();\n break;\n case \",\":\n case \"5\":\n if (this.sim.isPaused) this.sim.stepBack();\n break;\n case \".\":\n case \"7\":\n if (this.sim.isPaused) this.sim.seek(this.sim.time.frame + 1);\n break;\n case \"8\":\n case \"'\":\n debugState.onJumpForward.value?.();\n break;\n }\n }\n };\n window.addEventListener(\"keydown\", playbarHotkeys);\n\n // FPS calculation\n let fpsFrames = 0;\n let fpsLastTime = performance.now();\n\n const frame = () => {\n const stepStart = performance.now();\n const ticks = this.sim.step(stepStart - this.#now);\n\n // Always update frame number (even when paused/stepping)\n debugState.frameNumber.value = this.sim.time.frame;\n\n // Update performance metrics only when we actually ran simulation\n if (ticks > 0) {\n const stepEnd = performance.now();\n debugState.frameTime.value = stepEnd - stepStart;\n\n // Measure snapshot size when debug UI is visible (letterboxed mode)\n if (debugState.layoutMode.value === \"letterboxed\") {\n const bag = this.game.bag;\n if (bag) {\n debugState.snapshotSize.value = JSON.stringify(bag).length;\n }\n }\n\n // Calculate FPS every second\n fpsFrames++;\n const elapsed = stepEnd - fpsLastTime;\n if (elapsed >= 1000) {\n debugState.fps.value = Math.round((fpsFrames * 1000) / elapsed);\n fpsFrames = 0;\n fpsLastTime = stepEnd;\n }\n }\n\n // Update tape playback state\n debugState.isPlaying.value = !this.sim.isPaused;\n if (this.sim.hasHistory && debugState.tapeFrameCount.value > 0) {\n const currentFrame = this.sim.time.frame;\n const startFrame = debugState.tapeStartFrame.value;\n const frameCount = debugState.tapeFrameCount.value;\n const position = (currentFrame - startFrame) / frameCount;\n debugState.playheadPosition.value = Math.max(0, Math.min(1, position));\n\n // Auto-pause at end of tape\n if (\n this.sim.isReplaying &&\n !this.sim.isPaused &&\n currentFrame >= startFrame + frameCount\n ) {\n this.sim.pause();\n }\n }\n\n if (!this.sim.isPaused) {\n try {\n this.afterFrame.notify(this.sim.time.frame);\n } catch (e) {\n console.error(\"Error in afterFrame listeners:\", e);\n }\n }\n this.#now = performance.now();\n this.#rafHandle = requestAnimationFrame(frame);\n };\n frame();\n\n this.#unsubscribe = () => {\n window.removeEventListener(\"keydown\", handleKeydown);\n window.removeEventListener(\"keyup\", handleKeyup);\n window.removeEventListener(\"mousemove\", handleMousemove);\n window.removeEventListener(\"mousedown\", handleMousedown);\n window.removeEventListener(\"mouseup\", handleMouseup);\n window.removeEventListener(\"wheel\", handleMousewheel);\n window.removeEventListener(\"keydown\", playbarHotkeys);\n window.removeEventListener(\"touchstart\", handleTouchstart);\n window.removeEventListener(\"touchend\", handleTouchend);\n window.removeEventListener(\"touchmove\", handleTouchmove);\n if (this.#rafHandle != null) {\n cancelAnimationFrame(this.#rafHandle);\n }\n };\n }\n\n /** Clean up wasm resources and event listeners */\n cleanup(): void {\n this.#unsubscribe?.();\n this.sim.unmount();\n this.beforeFrame.unsubscribeAll();\n this.afterFrame.unsubscribeAll();\n this.onHmr.unsubscribeAll();\n this.#debugUi?.unmount();\n }\n\n /**\n * Accept Hot Module Replacement when running in a vite dev server\n *\n * @example\n *\n * ```ts\n * import.meta.hot?.accept(\"./game\", async (newModule) => {\n * await app.acceptHmr(newModule?.game, {\n * wasmUrl: monorepoWasmUrl,\n * files: [\"./game\"],\n * });\n * ```\n */\n async acceptHmr(\n module: any,\n opts?: MountOptions & { files?: string[] },\n ): Promise<void> {\n const game = (module.game ?? module) as Bloop<any>;\n if (!game.hooks) {\n throw new Error(\n `HMR: missing game.hooks export on module: ${JSON.stringify(module)}`,\n );\n }\n\n // load session from the current sim\n this.sim.pause();\n const { sim } = await mount(game, {\n wasmUrl: new URL(\"/bloop-wasm/bloop.wasm\", window.location.href),\n ...opts,\n });\n sim.cloneSession(this.sim);\n this.sim.unmount();\n this.sim = sim;\n this.game = game;\n\n // Trigger HMR flash and notify listeners\n triggerHmrFlash();\n this.onHmr.notify({ files: opts?.files ?? [] });\n }\n}\n\nfunction createListener<T extends any[]>(): {\n subscribe: (callback: (...args: T) => void) => UnsubscribeFn;\n notify: (...args: T) => void;\n unsubscribeAll: UnsubscribeFn;\n} {\n const listeners = new Set<(...args: T) => void>();\n\n const subscribe = (callback: (...args: T) => void): (() => void) => {\n listeners.add(callback);\n\n // Return unsubscribe function\n return () => {\n listeners.delete(callback);\n };\n };\n\n const notify = (...args: T): void => {\n listeners.forEach((callback) => {\n callback(...args);\n });\n };\n\n return {\n subscribe,\n notify,\n unsubscribeAll: () => listeners.clear(),\n };\n}\n\nexport type UnsubscribeFn = () => void;\n\nexport type HmrEvent = {\n files: string[];\n};\n",
27
+ "import {\n type Bloop,\n type LoadTapeOptions,\n type MountOptions,\n mount,\n type Sim,\n} from \"@bloopjs/bloop\";\nimport type { Key } from \"@bloopjs/engine\";\nimport { mouseButtonCodeToMouseButton, readTapeHeader } from \"@bloopjs/engine\";\nimport { DebugUi, type DebugUiOptions } from \"./debugui/mod.ts\";\nimport {\n debugState,\n triggerHmrFlash,\n wirePlaybarHandlers,\n wireTapeDragDrop,\n} from \"./debugui/state.ts\";\nimport {\n joinRoom as joinRoomInternal,\n type RoomEvents,\n} from \"./netcode/broker\";\nimport { logger } from \"./netcode/logs.ts\";\n\nexport type StartOptions = {\n /** A bloop game instance */\n game: Bloop<any>;\n /** A pre-mounted sim instance, defaults to mount with default options */\n sim?: Sim;\n /** An override url to use to fetch the engine wasm */\n wasmUrl?: URL;\n /** Whether the sim should pause before running the first frame, defaults to false */\n startPaused?: boolean;\n /** Whether the sim should be recording to tape from initialization, defaults to true */\n startRecording?: boolean;\n /** URL for the WebRTC signaling broker (e.g. \"wss://broker.example.com/ws\") */\n brokerUrl?: string;\n /** Enable debug UI with optional configuration */\n debugUi?: boolean | DebugUiOptions;\n /** Tape recording options */\n tape?: MountOptions[\"tape\"];\n};\n\nconst DEFAULT_BROKER_URL = \"wss://webrtc-divine-glade-8064.fly.dev/ws\";\n\n/** Start a bloop game on the web */\nexport async function start(opts: StartOptions): Promise<App> {\n if (!opts.sim) {\n const { sim } = await mount(opts.game, {\n startRecording: opts.startRecording ?? true,\n wasmUrl: opts.wasmUrl,\n });\n opts.sim = sim;\n }\n\n const debugOpts = opts.debugUi\n ? typeof opts.debugUi === \"boolean\"\n ? { initiallyVisible: true }\n : opts.debugUi\n : undefined;\n\n const app = new App(\n opts.sim,\n opts.game,\n opts.brokerUrl ?? DEFAULT_BROKER_URL,\n debugOpts,\n );\n\n return app;\n}\n\n/**\n * The main application class for running a bloop game in the browser\n *\n * This class handles translating browser events and APIs to bloopjs and the wasm engine.\n *\n * Usually instantiated with the start() function\n */\nexport class App {\n #sim: Sim;\n game: Bloop<any>;\n /** URL for the WebRTC signaling broker */\n readonly brokerUrl: string;\n /** RequestAnimationFrame handle for cancelling */\n #rafHandle: number | null = null;\n #unsubscribe: UnsubscribeFn | null = null;\n #now: number = performance.now();\n #debugUi: DebugUi | null = null;\n\n constructor(\n sim: Sim,\n game: Bloop<any>,\n brokerUrl: string,\n debugUiOpts?: DebugUiOptions,\n ) {\n this.#sim = sim;\n this.game = game;\n this.brokerUrl = brokerUrl;\n\n if (debugUiOpts) {\n this.#initDebugUi(debugUiOpts);\n }\n\n this.game.hooks.beforeFrame = (frame: number) => {\n logger.frameNumber = this.#sim.time.frame;\n logger.matchFrame = this.game.context.net.matchFrame;\n this.beforeFrame.notify(frame);\n };\n\n this.subscribe();\n }\n\n /** The simulation instance associated with this app */\n get sim(): Sim {\n return this.#sim;\n }\n\n set sim(sim: Sim) {\n this.#sim = sim;\n }\n\n /** Initialize debug UI (creates shadow DOM and mounts Preact) */\n #initDebugUi(opts: DebugUiOptions = {}): DebugUi {\n if (this.#debugUi) return this.#debugUi;\n this.#debugUi = new DebugUi(opts);\n\n // Wire up playbar handlers and drag-drop\n wirePlaybarHandlers(this);\n wireTapeDragDrop(this.#debugUi.canvas, this);\n\n return this.#debugUi;\n }\n\n /** Access debug UI instance */\n get debugUi(): DebugUi | null {\n return this.#debugUi;\n }\n\n /** Get the canvas element from debug UI (for game rendering) */\n get canvas(): HTMLCanvasElement | null {\n return this.#debugUi?.canvas ?? null;\n }\n\n /** Join a multiplayer room via the broker */\n joinRoom(roomId: string, callbacks: RoomEvents): void {\n joinRoomInternal(this.brokerUrl, roomId, callbacks);\n }\n\n /** Load a tape for replay */\n loadTape(tape: Uint8Array, options?: LoadTapeOptions): void {\n const header = readTapeHeader(tape);\n this.sim.loadTape(tape, options);\n this.sim.seek(header.startFrame);\n this.sim.pause();\n\n // Update debug state with tape info\n debugState.tapeStartFrame.value = header.startFrame;\n debugState.tapeFrameCount.value = header.frameCount;\n debugState.tapeUtilization.value = 1; // Loaded tape is \"full\"\n debugState.playheadPosition.value = 0;\n debugState.isPlaying.value = false;\n }\n\n /** Event listeners for before a frame is processed */\n beforeFrame: ReturnType<typeof createListener> = createListener<[number]>();\n /** Event listeners for after a frame is processed */\n afterFrame: ReturnType<typeof createListener> = createListener<[number]>();\n /** Event listeners for HMR events */\n onHmr: ReturnType<typeof createListener> = createListener<[HmrEvent]>();\n\n /** Subscribe to the browser events and start the render loop */\n subscribe(): void {\n // TODO: move this logic to the engine\n // Skip emitting input events during replay to avoid filling the event buffer\n const shouldEmitInputs = () => !this.sim.isReplaying;\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (shouldEmitInputs()) this.sim.emit.keydown(event.code as Key);\n };\n window.addEventListener(\"keydown\", handleKeydown);\n\n const handleKeyup = (event: KeyboardEvent) => {\n if (shouldEmitInputs()) this.sim.emit.keyup(event.code as Key);\n };\n window.addEventListener(\"keyup\", handleKeyup);\n\n const handleMousemove = (event: MouseEvent) => {\n if (shouldEmitInputs())\n this.sim.emit.mousemove(event.clientX, event.clientY);\n };\n window.addEventListener(\"mousemove\", handleMousemove);\n\n const handleMousedown = (event: MouseEvent) => {\n if (shouldEmitInputs())\n this.sim.emit.mousedown(mouseButtonCodeToMouseButton(event.button + 1));\n };\n window.addEventListener(\"mousedown\", handleMousedown);\n\n const handleMouseup = (event: MouseEvent) => {\n if (shouldEmitInputs())\n this.sim.emit.mouseup(mouseButtonCodeToMouseButton(event.button + 1));\n };\n window.addEventListener(\"mouseup\", handleMouseup);\n\n const handleMousewheel = (event: WheelEvent) => {\n if (shouldEmitInputs())\n this.sim.emit.mousewheel(event.deltaX, event.deltaY);\n };\n window.addEventListener(\"wheel\", handleMousewheel);\n\n // Touch events for mobile support\n const handleTouchstart = (event: TouchEvent) => {\n if (!shouldEmitInputs()) return;\n const touch = event.touches[0];\n if (touch) {\n this.sim.emit.mousemove(touch.clientX, touch.clientY);\n this.sim.emit.mousedown(\"Left\");\n }\n };\n window.addEventListener(\"touchstart\", handleTouchstart);\n\n const handleTouchend = () => {\n if (shouldEmitInputs()) this.sim.emit.mouseup(\"Left\");\n };\n window.addEventListener(\"touchend\", handleTouchend);\n\n const handleTouchmove = (event: TouchEvent) => {\n if (!shouldEmitInputs()) return;\n const touch = event.touches[0];\n if (touch) {\n this.sim.emit.mousemove(touch.clientX, touch.clientY);\n }\n };\n window.addEventListener(\"touchmove\", handleTouchmove);\n\n const playbarHotkeys = (event: KeyboardEvent) => {\n // Ctrl/Cmd+S to save tape\n if ((event.ctrlKey || event.metaKey) && event.key === \"s\") {\n event.preventDefault();\n if (this.sim.hasHistory) {\n const tape = this.sim.saveTape();\n const blob = new Blob([tape], { type: \"application/octet-stream\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `tape-${Date.now()}.bloop`;\n a.click();\n URL.revokeObjectURL(url);\n }\n return;\n }\n\n const isPauseHotkey =\n event.key === \"Enter\" && (event.ctrlKey || event.metaKey);\n if (isPauseHotkey || event.key === \"6\") {\n this.sim.isPaused ? this.sim.unpause() : this.sim.pause();\n }\n\n if (this.sim.hasHistory) {\n switch (event.key) {\n case \"4\":\n case \";\":\n debugState.onJumpBack.value?.();\n break;\n case \",\":\n case \"5\":\n if (this.sim.isPaused) this.sim.stepBack();\n break;\n case \".\":\n case \"7\":\n if (this.sim.isPaused) this.sim.seek(this.sim.time.frame + 1);\n break;\n case \"8\":\n case \"'\":\n debugState.onJumpForward.value?.();\n break;\n }\n }\n };\n window.addEventListener(\"keydown\", playbarHotkeys);\n\n // FPS calculation\n let fpsFrames = 0;\n let fpsLastTime = performance.now();\n\n const frame = () => {\n const stepStart = performance.now();\n const ticks = this.sim.step(stepStart - this.#now);\n\n // Always update frame number (even when paused/stepping)\n debugState.frameNumber.value = this.sim.time.frame;\n\n // Update performance metrics only when we actually ran simulation\n if (ticks > 0) {\n const stepEnd = performance.now();\n debugState.frameTime.value = stepEnd - stepStart;\n\n // Measure snapshot size when debug UI is visible (letterboxed mode)\n if (debugState.layoutMode.value === \"letterboxed\") {\n const bag = this.game.bag;\n if (bag) {\n debugState.snapshotSize.value = JSON.stringify(bag).length;\n }\n }\n\n // Calculate FPS every second\n fpsFrames++;\n const elapsed = stepEnd - fpsLastTime;\n if (elapsed >= 1000) {\n debugState.fps.value = Math.round((fpsFrames * 1000) / elapsed);\n fpsFrames = 0;\n fpsLastTime = stepEnd;\n }\n }\n\n // Update tape playback state\n debugState.isPlaying.value = !this.sim.isPaused;\n if (this.sim.hasHistory && debugState.tapeFrameCount.value > 0) {\n const currentFrame = this.sim.time.frame;\n const startFrame = debugState.tapeStartFrame.value;\n const frameCount = debugState.tapeFrameCount.value;\n const position = (currentFrame - startFrame) / frameCount;\n debugState.playheadPosition.value = Math.max(0, Math.min(1, position));\n\n // Auto-pause at end of tape\n if (\n this.sim.isReplaying &&\n !this.sim.isPaused &&\n currentFrame >= startFrame + frameCount\n ) {\n this.sim.pause();\n }\n }\n\n if (!this.sim.isPaused) {\n try {\n this.afterFrame.notify(this.sim.time.frame);\n } catch (e) {\n console.error(\"Error in afterFrame listeners:\", e);\n }\n }\n this.#now = performance.now();\n this.#rafHandle = requestAnimationFrame(frame);\n };\n frame();\n\n this.#unsubscribe = () => {\n window.removeEventListener(\"keydown\", handleKeydown);\n window.removeEventListener(\"keyup\", handleKeyup);\n window.removeEventListener(\"mousemove\", handleMousemove);\n window.removeEventListener(\"mousedown\", handleMousedown);\n window.removeEventListener(\"mouseup\", handleMouseup);\n window.removeEventListener(\"wheel\", handleMousewheel);\n window.removeEventListener(\"keydown\", playbarHotkeys);\n window.removeEventListener(\"touchstart\", handleTouchstart);\n window.removeEventListener(\"touchend\", handleTouchend);\n window.removeEventListener(\"touchmove\", handleTouchmove);\n if (this.#rafHandle != null) {\n cancelAnimationFrame(this.#rafHandle);\n }\n };\n }\n\n /** Clean up wasm resources and event listeners */\n cleanup(): void {\n this.#unsubscribe?.();\n this.sim.unmount();\n this.beforeFrame.unsubscribeAll();\n this.afterFrame.unsubscribeAll();\n this.onHmr.unsubscribeAll();\n this.#debugUi?.unmount();\n }\n\n /**\n * Accept Hot Module Replacement when running in a vite dev server\n *\n * @example\n *\n * ```ts\n * import.meta.hot?.accept(\"./game\", async (newModule) => {\n * await app.acceptHmr(newModule?.game, {\n * wasmUrl: monorepoWasmUrl,\n * files: [\"./game\"],\n * });\n * ```\n */\n async acceptHmr(\n module: any,\n opts?: MountOptions & { files?: string[] },\n ): Promise<void> {\n const game = (module.game ?? module) as Bloop<any>;\n if (!game.hooks) {\n throw new Error(\n `HMR: missing game.hooks export on module: ${JSON.stringify(module)}`,\n );\n }\n\n // load session from the current sim\n this.sim.pause();\n const { sim } = await mount(game, {\n wasmUrl: new URL(\"/bloop-wasm/bloop.wasm\", window.location.href),\n ...opts,\n });\n sim.cloneSession(this.sim);\n this.sim.unmount();\n this.sim = sim;\n this.game = game;\n\n // Trigger HMR flash and notify listeners\n triggerHmrFlash();\n this.onHmr.notify({ files: opts?.files ?? [] });\n }\n}\n\nfunction createListener<T extends any[]>(): {\n subscribe: (callback: (...args: T) => void) => UnsubscribeFn;\n notify: (...args: T) => void;\n unsubscribeAll: UnsubscribeFn;\n} {\n const listeners = new Set<(...args: T) => void>();\n\n const subscribe = (callback: (...args: T) => void): (() => void) => {\n listeners.add(callback);\n\n // Return unsubscribe function\n return () => {\n listeners.delete(callback);\n };\n };\n\n const notify = (...args: T): void => {\n listeners.forEach((callback) => {\n callback(...args);\n });\n };\n\n return {\n subscribe,\n notify,\n unsubscribeAll: () => listeners.clear(),\n };\n}\n\nexport type UnsubscribeFn = () => void;\n\nexport type HmrEvent = {\n files: string[];\n};\n",
28
28
  "export type PeerId = string;\n\n// TODO: bring the websocket server from neilsarkar/labs into this repo\n\n// Wire format packet types\nexport enum PacketType {\n None = 0,\n Inputs = 1,\n}\n\nexport type BrokerMessage =\n | {\n type: \"welcome\";\n yourId: PeerId;\n peerIds: PeerId[];\n serverId: string;\n }\n | {\n type: \"message:json\";\n peerId: PeerId;\n message: PeerMessage;\n }\n | {\n type: \"message:string\";\n peerId: PeerId;\n message: string;\n }\n | {\n type: \"message:buffer\";\n peerId: PeerId;\n message: ArrayBuffer;\n }\n | {\n type: \"peer:connect\";\n peerId: PeerId;\n }\n | {\n type: \"peer:disconnect\";\n peerId: PeerId;\n };\n\nexport type PeerMessage =\n | {\n type: \"offer\";\n target: string;\n payload: string;\n }\n | {\n type: \"answer\";\n target: string;\n payload: string;\n }\n | {\n type: \"message\";\n payload: any;\n };\n",
29
29
  "import { unwrap } from \"@bloopjs/bloop\";\nimport type { App } from \"../App.ts\";\nimport * as Debug from \"../debugui/mod.ts\";\nimport { logger } from \"./logs.ts\";\n\nexport type JoinRollbackRoomOptions = {\n /** Called when session becomes active */\n onSessionStart?: () => void;\n /** Called when session ends */\n onSessionEnd?: () => void;\n};\n\n/**\n * Join a rollback netcode room and wire up packet processing.\n * This is a scaffold/stopgap - not the final architecture.\n */\nexport function joinRollbackRoom(\n roomId: string,\n app: App,\n opts?: JoinRollbackRoomOptions,\n): void {\n // State\n let udp: RTCDataChannel | null = null;\n let sessionActive = false;\n let localPeerId: number | null = null;\n let remotePeerId: number | null = null;\n let localStringPeerId: string | null = null;\n let remoteStringPeerId: string | null = null;\n const incomingPackets: Uint8Array[] = [];\n\n function assignPeerIds(\n localId: string,\n remoteId: string,\n ): { local: number; remote: number } {\n if (localId < remoteId) {\n return { local: 0, remote: 1 };\n } else {\n return { local: 1, remote: 0 };\n }\n }\n\n function receivePackets() {\n for (const packetData of incomingPackets) {\n app.sim.emit.packet(packetData);\n\n if (remotePeerId == null) {\n return;\n }\n\n const peerState = unwrap(\n app.sim.net.peers[remotePeerId],\n `Remote peer state not found for peerId ${remotePeerId}`,\n );\n Debug.updatePeer(remoteStringPeerId!, {\n ack: peerState.ack,\n seq: peerState.seq,\n lastPacketTime: performance.now(),\n });\n }\n incomingPackets.length = 0;\n }\n\n function sendPacket() {\n if (!udp || remotePeerId === null) {\n console.warn(\"[netcode] Cannot send packet, udp or remotePeerId is null\");\n return;\n }\n\n if (udp.readyState !== \"open\") {\n console.warn(\n \"[netcode] Data channel not open, cannot send packet. readyState=\",\n udp.readyState,\n );\n return;\n }\n\n const packet = app.sim.getOutboundPacket(remotePeerId);\n\n if (!packet) {\n console.warn(\"[netcode] No packet to send\");\n return;\n }\n\n udp.send(packet);\n }\n\n // Wire up logger to debug state\n logger.onLog = (log) => {\n Debug.addLog(log);\n };\n\n app.joinRoom(roomId, {\n onPeerIdAssign: (peerId) => {\n localStringPeerId = peerId;\n },\n onBrokerMessage: (_message) => {},\n onMessage(_peerId, data, _reliable) {\n incomingPackets.push(new Uint8Array(data));\n },\n onDataChannelClose(peerId, reliable) {\n if (!reliable && remotePeerId !== null) {\n app.sim.emit.network(\"peer:leave\", { peerId: remotePeerId });\n sessionActive = false;\n opts?.onSessionEnd?.();\n }\n },\n onDataChannelOpen(peerId, reliable, channel) {\n if (!reliable) {\n udp = channel;\n\n if (localStringPeerId === null) {\n console.error(\"[netcode] Local peer ID not assigned yet!\");\n return;\n }\n\n const ids = assignPeerIds(localStringPeerId, peerId);\n localPeerId = ids.local;\n Debug.setLocalId(localPeerId);\n remotePeerId = ids.remote;\n remoteStringPeerId = peerId;\n Debug.setRemoteId(remotePeerId);\n\n // Set up local and remote peers in net state\n app.sim.emit.network(\"peer:join\", { peerId: localPeerId });\n app.sim.emit.network(\"peer:join\", { peerId: remotePeerId });\n app.sim.emit.network(\"peer:assign_local_id\", { peerId: localPeerId });\n app.sim.emit.network(\"session:start\", {});\n\n sessionActive = true;\n opts?.onSessionStart?.();\n }\n },\n onPeerConnected(peerId) {\n Debug.addPeer({\n id: peerId,\n nickname: peerId.substring(0, 6),\n ack: -1,\n seq: -1,\n lastPacketTime: performance.now(),\n });\n console.log(\n `[netcode] Peer connected: ${peerId}. Total peers: ${Debug.debugState.netStatus.value.peers.length}`,\n );\n },\n onPeerDisconnected(peerId) {\n Debug.removePeer(peerId);\n if (remotePeerId !== null && peerId === remoteStringPeerId) {\n app.sim.emit.network(\"peer:leave\", { peerId: remotePeerId });\n sessionActive = false;\n opts?.onSessionEnd?.();\n }\n },\n });\n\n // Process packets and send our state each frame\n app.beforeFrame.subscribe((_frame) => {\n if (!sessionActive || !udp || remotePeerId === null) {\n return;\n }\n\n try {\n receivePackets();\n sendPacket();\n } catch (e) {\n console.error(\"Error in beforeFrame:\", e);\n }\n });\n}\n"
30
30
  ],
31
- "mappings": ";;;;;;;;;;;;AAAA,IAAI,aAAY,OAAO;AACvB,IAAI,YAAW,CAAC,QAAQ,QAAQ;AAAA,EAC9B,SAAS,QAAQ;AAAA,IACf,WAAU,QAAQ,MAAM;AAAA,MACtB,KAAK,IAAI;AAAA,MACT,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,KAAK,CAAC,aAAa,IAAI,QAAQ,MAAM;AAAA,IACvC,CAAC;AAAA;AAIL,IAAI,eAAe,CAAC;AACpB,UAAS,cAAc;AAAA,EACrB,QAAQ,MAAM;AAAA,EACd,aAAa,MAAM;AAAA,EACnB,cAAc,MAAM;AAAA,EACpB,SAAS,MAAM;AAAA,EACf,UAAU,MAAM;AAAA,EAChB,QAAQ,MAAM;AAChB,CAAC;AACD,SAAS,WAAW,CAAC,UAAU,QAAQ;AAAA,EACrC,WAAW,SAAS;AAAA,EACpB,IAAI,YAAY;AAAA,EAChB,SAAS,IAAI,EAAE,IAAI,QAAQ,KAAK;AAAA,IAC9B,MAAM,OAAO,SAAS,SAAS,CAAC;AAAA,IAChC,aAAa,GAAG,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,EACnD;AAAA,EACA,OAAO,UAAU,KAAK;AAAA;AAExB,SAAS,MAAM,CAAC,WAAW,SAAS;AAAA,EAClC,IAAI,aAAa,QAAQ,cAAc,OAAO;AAAA,IAC5C,MAAM,IAAI,MAAM,WAAW,kBAAkB;AAAA,EAC/C;AAAA;AAEF,IAAI,mBAAmB,IAAI;AAC3B,SAAS,OAAO,IAAI,MAAM;AAAA,EACxB,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG;AAAA,EAC/C,IAAI,CAAC,iBAAiB,IAAI,GAAG,GAAG;AAAA,IAC9B,QAAQ,IAAI,GAAG,IAAI;AAAA,IACnB,iBAAiB,IAAI,KAAK,CAAC;AAAA,EAC7B;AAAA;AAEF,SAAS,YAAY,CAAC,QAAQ,MAAM;AAAA,EAClC,SAAS,KAAK,MAAM,GAAG,IAAI;AAAA;AAE7B,SAAS,QAAQ,CAAC,KAAK,WAAW,OAAO,MAAM;AAAA,EAC7C,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG;AAAA,EAC/C,MAAM,aAAa,iBAAiB,IAAI,GAAG,KAAK;AAAA,EAChD,IAAI,MAAM,cAAc,UAAU;AAAA,IAChC,QAAQ,IAAI,GAAG,IAAI;AAAA,IACnB,iBAAiB,IAAI,KAAK,GAAG;AAAA,EAC/B;AAAA;AAEF,SAAS,MAAM,CAAC,OAAO,SAAS;AAAA,EAC9B,OAAO,SAAS,MAAM,WAAW,2BAA2B,OAAO;AAAA,EACnE,OAAO;AAAA;AAGT,IAAI,iBAAiB,CAAC;AACtB,UAAS,gBAAgB;AAAA,EACvB,gBAAgB,MAAM;AAAA,EACtB,8BAA8B,MAAM;AAAA,EACpC,8BAA8B,MAAM;AAAA,EACpC,cAAc,MAAM;AAAA,EACpB,cAAc,MAAM;AAAA,EACpB,8BAA8B,MAAM;AAAA,EACpC,8BAA8B,MAAM;AAAA,EACpC,aAAa,MAAM;AAAA,EACnB,iBAAiB,MAAM;AAAA,EACvB,iCAAiC,MAAM;AAAA,EACvC,qBAAqB,MAAM;AAAA,EAC3B,mCAAmC,MAAM;AAAA,EACzC,oBAAoB,MAAM;AAAA,EAC1B,oBAAoB,MAAM;AAAA,EAC1B,YAAY,MAAM;AAAA,EAClB,gBAAgB,MAAM;AAAA,EACtB,cAAc,MAAM;AAAA,EACpB,cAAc,MAAM;AAAA,EACpB,sBAAsB,MAAM;AAAA,EAC5B,qBAAqB,MAAM;AAAA,EAC3B,aAAa,MAAM;AAAA,EACnB,iBAAiB,MAAM;AAAA,EACvB,eAAe,MAAM;AAAA,EACrB,iBAAiB,MAAM;AAAA,EACvB,cAAc,MAAM;AAAA,EACpB,gBAAgB,MAAM;AAAA,EACtB,kBAAkB,MAAM;AAAA,EACxB,OAAO,MAAM;AAAA,EACb,oBAAoB,MAAM;AAAA,EAC1B,qBAAqB,MAAM;AAAA,EAC3B,eAAe,MAAM;AAAA,EACrB,kBAAkB,MAAM;AAC1B,CAAC;AACD,IAAI,cAAa,OAAO;AACxB,IAAI,aAAY,CAAC,QAAQ,QAAQ;AAAA,EAC/B,SAAS,QAAQ;AAAA,IACf,YAAW,QAAQ,MAAM;AAAA,MACvB,KAAK,IAAI;AAAA,MACT,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,KAAK,CAAC,aAAa,IAAI,QAAQ,MAAM;AAAA,IACvC,CAAC;AAAA;AAEL,IAAI,gBAAgB,CAAC;AACrB,WAAU,eAAe;AAAA,EACvB,mBAAmB,MAAM;AAAA,EACzB,aAAa,MAAM;AAAA,EACnB,KAAK,MAAM;AAAA,EACX,aAAa,MAAM;AAAA,EACnB,WAAW,MAAM;AACnB,CAAC;AACD,IAAI;AAAA,CACH,CAAC,eAAe;AAAA,EACf,WAAW,WAAW,UAAU,KAAK;AAAA,EACrC,WAAW,WAAW,aAAa,KAAK;AAAA,EACxC,WAAW,WAAW,WAAW,KAAK;AAAA,EACtC,WAAW,WAAW,eAAe,KAAK;AAAA,EAC1C,WAAW,WAAW,eAAe,KAAK;AAAA,EAC1C,WAAW,WAAW,aAAa,KAAK;AAAA,EACxC,WAAW,WAAW,gBAAgB,KAAK;AAAA,EAC3C,WAAW,WAAW,gBAAgB,KAAK;AAAA,EAC3C,WAAW,WAAW,eAAe,KAAK;AAAA,EAC1C,WAAW,WAAW,iBAAiB,KAAK;AAAA,EAC5C,WAAW,WAAW,iBAAiB,MAAM;AAAA,EAC7C,WAAW,WAAW,kBAAkB,MAAM;AAAA,EAC9C,WAAW,WAAW,0BAA0B,MAAM;AAAA,EACtD,WAAW,WAAW,uBAAuB,MAAM;AAAA,EACnD,WAAW,WAAW,oBAAoB,MAAM;AAAA,GAC/C,cAAc,CAAC,CAAC;AACnB,IAAI;AAAA,CACH,CAAC,iBAAiB;AAAA,EACjB,aAAa,aAAa,UAAU,KAAK;AAAA,EACzC,aAAa,aAAa,UAAU,KAAK;AAAA,EACzC,aAAa,aAAa,YAAY,KAAK;AAAA,EAC3C,aAAa,aAAa,WAAW,KAAK;AAAA,EAC1C,aAAa,aAAa,QAAQ,KAAK;AAAA,EACvC,aAAa,aAAa,QAAQ,KAAK;AAAA,EACvC,aAAa,aAAa,QAAQ,KAAK;AAAA,EACvC,aAAa,aAAa,QAAQ,KAAK;AAAA,EACvC,aAAa,aAAa,QAAQ,KAAK;AAAA,GACtC,gBAAgB,CAAC,CAAC;AACrB,IAAI;AAAA,CACH,CAAC,SAAS;AAAA,EACT,KAAK,KAAK,UAAU,KAAK;AAAA,EACzB,KAAK,KAAK,eAAe,KAAK;AAAA,EAC9B,KAAK,KAAK,eAAe,KAAK;AAAA,EAC9B,KAAK,KAAK,iBAAiB,KAAK;AAAA,EAChC,KAAK,KAAK,kBAAkB,KAAK;AAAA,EACjC,KAAK,KAAK,WAAW,KAAK;AAAA,EAC1B,KAAK,KAAK,YAAY,KAAK;AAAA,EAC3B,KAAK,KAAK,YAAY,KAAK;AAAA,EAC3B,KAAK,KAAK,YAAY,KAAK;AAAA,EAC3B,KAAK,KAAK,YAAY,KAAK;AAAA,EAC3B,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,mBAAmB,MAAM;AAAA,EACnC,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,eAAe,MAAM;AAAA,EAC/B,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,cAAc,MAAM;AAAA,EAC9B,KAAK,KAAK,eAAe,MAAM;AAAA,EAC/B,KAAK,KAAK,cAAc,MAAM;AAAA,EAC9B,KAAK,KAAK,iBAAiB,MAAM;AAAA,EACjC,KAAK,KAAK,iBAAiB,MAAM;AAAA,EACjC,KAAK,KAAK,kBAAkB,MAAM;AAAA,EAClC,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,cAAc,MAAM;AAAA,EAC9B,KAAK,KAAK,eAAe,MAAM;AAAA,EAC/B,KAAK,KAAK,eAAe,MAAM;AAAA,EAC/B,KAAK,KAAK,gBAAgB,MAAM;AAAA,EAChC,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,SAAS,MAAM;AAAA,EACzB,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,cAAc,MAAM;AAAA,EAC9B,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,WAAW,MAAM;AAAA,EAC3B,KAAK,KAAK,gBAAgB,MAAM;AAAA,EAChC,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,SAAS,MAAM;AAAA,EACzB,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,UAAU,MAAM;AAAA,EAC1B,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,cAAc,MAAM;AAAA,EAC9B,KAAK,KAAK,YAAY,MAAM;AAAA,EAC5B,KAAK,KAAK,eAAe,MAAM;AAAA,EAC/B,KAAK,KAAK,eAAe,MAAM;AAAA,EAC/B,KAAK,KAAK,gBAAgB,MAAM;AAAA,EAChC,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,aAAa,MAAM;AAAA,EAC7B,KAAK,KAAK,eAAe,MAAM;AAAA,EAC/B,KAAK,KAAK,qBAAqB,MAAM;AAAA,EACrC,KAAK,KAAK,iBAAiB,MAAM;AAAA,EACjC,KAAK,KAAK,sBAAsB,MAAM;AAAA,EACtC,KAAK,KAAK,iBAAiB,MAAM;AAAA,EACjC,KAAK,KAAK,mBAAmB,OAAO;AAAA,EACpC,KAAK,KAAK,kBAAkB,OAAO;AAAA,EACnC,KAAK,KAAK,iBAAiB,OAAO;AAAA,EAClC,KAAK,KAAK,iBAAiB,OAAO;AAAA,EAClC,KAAK,KAAK,gBAAgB,OAAO;AAAA,EACjC,KAAK,KAAK,qBAAqB,OAAO;AAAA,EACtC,KAAK,KAAK,uBAAuB,OAAO;AAAA,EACxC,KAAK,KAAK,wBAAwB,OAAO;AAAA,EACzC,KAAK,KAAK,uBAAuB,OAAO;AAAA,EACxC,KAAK,KAAK,0BAA0B,OAAO;AAAA,EAC3C,KAAK,KAAK,oBAAoB,OAAO;AAAA,EACrC,KAAK,KAAK,qBAAqB,OAAO;AAAA,EACtC,KAAK,KAAK,sBAAsB,OAAO;AAAA,EACvC,KAAK,KAAK,gBAAgB,OAAO;AAAA,EACjC,KAAK,KAAK,oBAAoB,OAAO;AAAA,EACrC,KAAK,KAAK,YAAY,OAAO;AAAA,EAC7B,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,YAAY,OAAO;AAAA,EAC7B,KAAK,KAAK,iBAAiB,OAAO;AAAA,EAClC,KAAK,KAAK,gBAAgB,OAAO;AAAA,EACjC,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,iBAAiB,OAAO;AAAA,EAClC,KAAK,KAAK,sBAAsB,OAAO;AAAA,EACvC,KAAK,KAAK,oBAAoB,OAAO;AAAA,EACrC,KAAK,KAAK,iBAAiB,OAAO;AAAA,EAClC,KAAK,KAAK,oBAAoB,OAAO;AAAA,EACrC,KAAK,KAAK,mBAAmB,OAAO;AAAA,EACpC,KAAK,KAAK,iBAAiB,OAAO;AAAA,EAClC,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,gBAAgB,OAAO;AAAA,EACjC,KAAK,KAAK,gBAAgB,OAAO;AAAA,EACjC,KAAK,KAAK,gBAAgB,OAAO;AAAA,EACjC,KAAK,KAAK,oBAAoB,OAAO;AAAA,EACrC,KAAK,KAAK,iBAAiB,OAAO;AAAA,EAClC,KAAK,KAAK,eAAe,OAAO;AAAA,EAChC,KAAK,KAAK,oBAAoB,OAAO;AAAA,EACrC,KAAK,KAAK,wBAAwB,OAAO;AAAA,EACzC,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,qBAAqB,OAAO;AAAA,EACtC,KAAK,KAAK,qBAAqB,OAAO;AAAA,EACtC,KAAK,KAAK,mBAAmB,OAAO;AAAA,EACpC,KAAK,KAAK,YAAY,OAAO;AAAA,EAC7B,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,YAAY,OAAO;AAAA,EAC7B,KAAK,KAAK,aAAa,OAAO;AAAA,EAC9B,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,UAAU,OAAO;AAAA,EAC3B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,UAAU,OAAO;AAAA,EAC3B,KAAK,KAAK,UAAU,OAAO;AAAA,EAC3B,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,WAAW,OAAO;AAAA,EAC5B,KAAK,KAAK,YAAY,OAAO;AAAA,EAC7B,KAAK,KAAK,UAAU,OAAO;AAAA,EAC3B,KAAK,KAAK,cAAc,OAAO;AAAA,EAC/B,KAAK,KAAK,cAAc,OAAO;AAAA,EAC/B,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,QAAQ,OAAO;AAAA,EACzB,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,EAC1B,KAAK,KAAK,SAAS,OAAO;AAAA,GACzB,QAAQ,CAAC,CAAC;AACb,IAAI;AAAA,CACH,CAAC,iBAAiB;AAAA,EACjB,aAAa,aAAa,UAAU,KAAK;AAAA,EACzC,aAAa,aAAa,mBAAmB,KAAK;AAAA,EAClD,aAAa,aAAa,gBAAgB,KAAK;AAAA,EAC/C,aAAa,aAAa,gBAAgB,KAAK;AAAA,EAC/C,aAAa,aAAa,mBAAmB,KAAK;AAAA,EAClD,aAAa,aAAa,mBAAmB,KAAK;AAAA,EAClD,aAAa,aAAa,mBAAmB,KAAK;AAAA,EAClD,aAAa,aAAa,mBAAmB,KAAK;AAAA,EAClD,aAAa,aAAa,mBAAmB,KAAK;AAAA,EAClD,aAAa,aAAa,mBAAmB,KAAK;AAAA,EAClD,aAAa,aAAa,mBAAmB,MAAM;AAAA,EACnD,aAAa,aAAa,mBAAmB,MAAM;AAAA,EACnD,aAAa,aAAa,mBAAmB,MAAM;AAAA,EACnD,aAAa,aAAa,mBAAmB,MAAM;AAAA,EACnD,aAAa,aAAa,oBAAoB,MAAM;AAAA,EACpD,aAAa,aAAa,oBAAoB,MAAM;AAAA,EACpD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,iBAAiB,OAAO;AAAA,EAClD,aAAa,aAAa,kBAAkB,OAAO;AAAA,EACnD,aAAa,aAAa,kBAAkB,OAAO;AAAA,EACnD,aAAa,aAAa,cAAc,OAAO;AAAA,GAC9C,gBAAgB,CAAC,CAAC;AACrB,IAAI;AAAA,CACH,CAAC,uBAAuB;AAAA,EACvB,mBAAmB,mBAAmB,aAAa,KAAK;AAAA,EACxD,mBAAmB,mBAAmB,aAAa,KAAK;AAAA,EACxD,mBAAmB,mBAAmB,eAAe,KAAK;AAAA,EAC1D,mBAAmB,mBAAmB,oBAAoB,KAAK;AAAA,EAC/D,mBAAmB,mBAAmB,qBAAqB,KAAK;AAAA,GAC/D,sBAAsB,CAAC,CAAC;AAC3B,IAAI,cAAc;AAClB,IAAI,kBAAkB;AACtB,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI,uBAAuB;AAC3B,IAAI,qBAAqB;AACzB,IAAI,iBAAiB,cAAc;AACnC,IAAI,qBAAqB;AACzB,IAAI,sBAAsB;AAC1B,SAAS,YAAY,CAAC,KAAK;AAAA,EACzB,OAAO,IAAI;AAAA;AAEb,SAAS,YAAY,CAAC,MAAM;AAAA,EAC1B,OAAO,IAAI;AAAA;AAEb,SAAS,4BAA4B,CAAC,QAAQ;AAAA,EAC5C,OAAO,YAAY;AAAA;AAErB,SAAS,4BAA4B,CAAC,MAAM;AAAA,EAC1C,OAAO,YAAY;AAAA;AAErB,SAAS,4BAA4B,CAAC,QAAQ;AAAA,EAC5C,OAAO,YAAY;AAAA;AAErB,SAAS,4BAA4B,CAAC,MAAM;AAAA,EAC1C,OAAO,YAAY;AAAA;AAAA;AAGrB,MAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,YAAY;AAAA;AAAA,MAEf,IAAI,GAAG;AAAA,IACT,IAAI,CAAC,KAAK,OAAO;AAAA,MACf,KAAK,QAAQ,IAAI,gBAAgB,IAAI,SAAS,KAAK,UAAU,QAAQ,KAAK,UAAU,aAAa,eAAe,CAAC;AAAA,IACnH;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAEV,KAAK,GAAG;AAAA,IACV,IAAI,CAAC,KAAK,QAAQ;AAAA,MAChB,KAAK,SAAS,IAAI,aAAa,IAAI,SAAS,KAAK,UAAU,QAAQ,KAAK,UAAU,aAAa,YAAY,CAAC;AAAA,IAC9G;AAAA,IACA,OAAO,KAAK;AAAA;AAEhB;AAAA;AAEA,MAAM,aAAa;AAAA,EACjB;AAAA,EACA,WAAW,CAAC;AAAA,EACZ,WAAW,CAAC,UAAU;AAAA,IACpB,IAAI,UAAU;AAAA,MACZ,KAAK,YAAY;AAAA,MACjB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,QAAQ,GAAG;AAAA,IACb,IAAI,CAAC,KAAK,WAAW;AAAA,MACnB,MAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,UAAU;AAAA,IACrB,KAAK,YAAY;AAAA,IACjB,KAAK,cAAc;AAAA;AAAA,EAErB,aAAa,GAAG;AAAA,IACd,KAAK,WAAW,CAAC;AAAA,IACjB,SAAS,IAAI,EAAE,IAAI,aAAa,KAAK;AAAA,MACnC,MAAM,eAAe,IAAI;AAAA,MACzB,MAAM,iBAAiB,IAAI,SAAS,KAAK,SAAS,QAAQ,KAAK,SAAS,aAAa,cAAc,kBAAkB;AAAA,MACrH,KAAK,SAAS,KAAK,IAAI,mBAAmB,cAAc,CAAC;AAAA,IAC3D;AAAA;AAAA,MAEE,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,IAAI,GAAG;AAAA,IACT,IAAI,CAAC,KAAK,SAAS,IAAI;AAAA,MACrB,MAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAAA,IACA,OAAO,KAAK,SAAS,GAAG;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,IAAI,CAAC,KAAK,SAAS,IAAI;AAAA,MACrB,MAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAAA,IACA,OAAO,KAAK,SAAS,GAAG;AAAA;AAE5B;AAAA;AAEA,MAAM,aAAa;AAAA,EACjB;AAAA,EACA,gBAAgB,IAAI;AAAA,EACpB,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,YAAY;AAAA;AAAA,MAEf,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,WAAW,GAAG,IAAI;AAAA;AAAA,MAEtC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,WAAW,GAAG,IAAI;AAAA;AAAA,MAEtC,KAAK,GAAG;AAAA,IACV,OAAO,EAAE,GAAG,KAAK,QAAQ,GAAG,KAAK,OAAO;AAAA;AAAA,MAEtC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,WAAW,GAAG,IAAI;AAAA;AAAA,MAEtC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,WAAW,IAAI,IAAI;AAAA;AAAA,MAEvC,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,aAAa,CAAC;AAAA;AAAA,MAExB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,aAAa,CAAC;AAAA;AAAA,MAExB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,aAAa,CAAC;AAAA;AAAA,EAE5B,YAAY,CAAC,MAAM;AAAA,IACjB,IAAI;AAAA,IACJ,IAAI,KAAK,cAAc,IAAI,IAAI,GAAG;AAAA,MAChC,QAAQ,KAAK,cAAc,IAAI,IAAI;AAAA,IACrC,EAAO;AAAA,MACL,QAAQ,EAAE,MAAM,OAAO,MAAM,OAAO,IAAI,MAAM;AAAA,MAC9C,KAAK,cAAc,IAAI,MAAM,KAAK;AAAA;AAAA,IAEpC,MAAM,SAAS;AAAA,IACf,MAAM,OAAO,CAAC,EAAE,KAAK,UAAU,SAAS,SAAS,IAAI,IAAI;AAAA,IACzD,MAAM,OAAO,MAAM,QAAQ,EAAE,KAAK,UAAU,SAAS,SAAS,IAAI,IAAI;AAAA,IACtE,MAAM,KAAK,CAAC,MAAM,QAAQ,CAAC,EAAE,KAAK,UAAU,SAAS,SAAS,IAAI,IAAI;AAAA,IACtE,OAAO;AAAA;AAEX;AAAA;AAEA,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA,aAAa,IAAI;AAAA,EACjB,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,YAAY;AAAA;AAAA,MAEf,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,aAAa,KAAK;AAAA;AAAA,MAE5B,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,WAAW,KAAK;AAAA;AAAA,MAE1B,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,eAAe,KAAK;AAAA;AAAA,MAE9B,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,YAAY,KAAK;AAAA;AAAA,MAE3B,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,MAErB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,MAErB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,MAErB,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,MAErB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,MAErB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,MAErB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,MAErB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,MAErB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,CAAC;AAAA;AAAA,MAErB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,EAAE;AAAA;AAAA,MAEtB,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,iBAAiB,GAAG;AAAA,IACtB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,kBAAkB,GAAG;AAAA,IACvB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,iBAAiB,GAAG;AAAA,IACtB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,oBAAoB,GAAG;AAAA,IACzB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,kBAAkB,GAAG;AAAA,IACvB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,EAAE,GAAG;AAAA,IACP,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,MAEvB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,EAE3B,SAAS,CAAC,MAAM;AAAA,IACd,IAAI;AAAA,IACJ,IAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AAAA,MAC7B,QAAQ,KAAK,WAAW,IAAI,IAAI;AAAA,IAClC,EAAO;AAAA,MACL,QAAQ,EAAE,MAAM,OAAO,MAAM,OAAO,IAAI,MAAM;AAAA,MAC9C,KAAK,WAAW,IAAI,MAAM,KAAK;AAAA;AAAA,IAEjC,MAAM,OAAO,CAAC,EAAE,KAAK,UAAU,SAAS,IAAI,IAAI;AAAA,IAChD,MAAM,OAAO,MAAM,QAAQ,EAAE,KAAK,UAAU,SAAS,IAAI,IAAI;AAAA,IAC7D,MAAM,KAAK,CAAC,MAAM,QAAQ,CAAC,EAAE,KAAK,UAAU,SAAS,IAAI,IAAI;AAAA,IAC7D,OAAO;AAAA;AAEX;AACA,IAAI,YAAY;AAChB,IAAI,qBAAqB;AACzB,IAAI,gBAAgB;AACpB,IAAI,wBAAwB;AAC5B,IAAI,2BAA2B;AAC/B,IAAI,kBAAkB;AACtB,IAAI,kBAAkB;AACtB,IAAI,wBAAwB;AAC5B,IAAI,aAAa;AAAA,EACf,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAAA;AAEA,MAAM,WAAW;AAAA,EACf;AAAA,EACA,SAAS,MAAM,KAAK,EAAE,QAAQ,UAAU,GAAG,OAAO;AAAA,IAChD,SAAS;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,EACP,EAAE;AAAA,EACF,eAAe,CAAC;AAAA,EAChB,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,WAAW;AAAA;AAAA,EAElB,eAAe,GAAG;AAAA,IAChB,IAAI,CAAC,KAAK;AAAA,MACR,OAAO;AAAA,IACT,OAAO,KAAK,SAAS,OAAO,aAAa;AAAA;AAAA,MAEvC,SAAS,GAAG;AAAA,IACd,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,OAAO,KAAK,SAAS,SAAS,CAAC;AAAA;AAAA,MAE7B,WAAW,GAAG;AAAA,IAChB,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,OAAO,KAAK,SAAS,SAAS,CAAC;AAAA;AAAA,MAE7B,WAAW,GAAG;AAAA,IAChB,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,OAAO,KAAK,SAAS,SAAS,CAAC,MAAM;AAAA;AAAA,MAEnC,MAAM,GAAG;AAAA,IACX,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,MAAM,aAAa,KAAK,SAAS,SAAS,CAAC;AAAA,IAC3C,OAAO,WAAW,eAAe;AAAA;AAAA,MAE/B,UAAU,GAAG;AAAA,IACf,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,OAAO,KAAK,SAAS,UAAU,GAAG,IAAI;AAAA;AAAA,MAEpC,iBAAiB,GAAG;AAAA,IACtB,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,OAAO,KAAK,SAAS,UAAU,GAAG,IAAI;AAAA;AAAA,MAEpC,QAAQ,GAAG;AAAA,IACb,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,MAAM,QAAQ,CAAC;AAAA,IACf,SAAS,IAAI,EAAE,IAAI,GAAG,KAAK;AAAA,MACzB,MAAM,OAAO,KAAK,SAAS,SAAS,KAAK,CAAC;AAAA,MAC1C,IAAI,SAAS;AAAA,QACX;AAAA,MACF,MAAM,KAAK,IAAI;AAAA,IACjB;AAAA,IACA,OAAO,OAAO,aAAa,GAAG,KAAK;AAAA;AAAA,MAEjC,aAAa,GAAG;AAAA,IAClB,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,CAAC;AAAA,IACf,SAAS,IAAI,EAAE,IAAI,GAAG,KAAK;AAAA,MACzB,MAAM,OAAO,KAAK,SAAS,SAAS,KAAK,CAAC;AAAA,MAC1C,IAAI,SAAS;AAAA,QACX;AAAA,MACF,MAAM,KAAK,IAAI;AAAA,IACjB;AAAA,IACA,OAAO,MAAM,SAAS,IAAI,OAAO,aAAa,GAAG,KAAK,IAAI;AAAA;AAAA,MAExD,aAAa,CAAC,MAAM;AAAA,IACtB,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,SAAS,IAAI,EAAE,IAAI,GAAG,KAAK;AAAA,MACzB,KAAK,SAAS,SAAS,KAAK,GAAG,CAAC;AAAA,IAClC;AAAA,IACA,IAAI,MAAM;AAAA,MACR,SAAS,IAAI,EAAE,IAAI,KAAK,IAAI,KAAK,QAAQ,CAAC,GAAG,KAAK;AAAA,QAChD,KAAK,SAAS,SAAS,KAAK,GAAG,KAAK,WAAW,CAAC,CAAC;AAAA,MACnD;AAAA,IACF;AAAA;AAAA,MAEE,eAAe,GAAG;AAAA,IACpB,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,OAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,SAAS,SAAS,EAAE,MAAM;AAAA;AAAA,MAEpC,eAAe,CAAC,OAAO;AAAA,IACzB,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,KAAK,SAAS,SAAS,IAAI,QAAQ,IAAI,CAAC;AAAA;AAAA,MAEtC,KAAK,GAAG;AAAA,IACV,IAAI,CAAC,KAAK,gBAAgB,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,IACA,MAAM,KAAK,KAAK;AAAA,IAChB,MAAM,cAAc,KAAK;AAAA,IACzB,MAAM,aAAa,KAAK;AAAA,IACxB,IAAI,eAAe;AAAA,IACnB,SAAS,IAAI,EAAE,IAAI,WAAW,KAAK;AAAA,MACjC,IAAI,MAAM;AAAA,QACR;AAAA,MACF,MAAM,aAAa,qBAAqB,IAAI;AAAA,MAC5C,IAAI,GAAG,SAAS,aAAa,qBAAqB,MAAM;AAAA,QACtD;AAAA,MACF,IAAI,GAAG,SAAS,aAAa,wBAAwB,MAAM;AAAA,QACzD;AAAA,MACF,MAAM,MAAM,GAAG,UAAU,aAAa,iBAAiB,IAAI;AAAA,MAC3D,IAAI,iBAAiB,MAAM,MAAM,cAAc;AAAA,QAC7C,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,KAAK,aAAa,SAAS;AAAA,IAC3B,SAAS,IAAI,EAAE,IAAI,WAAW,KAAK;AAAA,MACjC,MAAM,aAAa,qBAAqB,IAAI;AAAA,MAC5C,IAAI,GAAG,SAAS,aAAa,qBAAqB,MAAM;AAAA,QACtD;AAAA,MACF,MAAM,OAAO,KAAK,OAAO;AAAA,MACzB,IAAI,CAAC,MAAM;AAAA,QACT,MAAM,IAAI,MAAM,2CAA2C,GAAG;AAAA,MAChE;AAAA,MACA,MAAM,UAAU,MAAM;AAAA,MACtB,KAAK,UAAU;AAAA,MACf,IAAI,SAAS;AAAA,QACX,KAAK,MAAM;AAAA,QACX,KAAK,MAAM;AAAA,MACb,EAAO;AAAA,QACL,MAAM,cAAc,GAAG,SAAS,aAAa,wBAAwB;AAAA,QACrE,MAAM,WAAW,GAAG,SAAS,aAAa,qBAAqB;AAAA,QAC/D,KAAK,MAAM,gBAAgB,IAAI,KAAK,GAAG,UAAU,aAAa,iBAAiB,IAAI;AAAA,QACnF,KAAK,MAAM,aAAa,IAAI,KAAK,GAAG,UAAU,aAAa,iBAAiB,IAAI;AAAA;AAAA,MAElF,KAAK,aAAa,KAAK,IAAI;AAAA,IAC7B;AAAA,IACA,OAAO,KAAK;AAAA;AAEhB;AAAA;AAEA,MAAM,YAAY;AAAA,EAChB;AAAA,EACA,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,WAAW;AAAA;AAAA,MAEd,KAAK,GAAG;AAAA,IACV,IAAI,CAAC,KAAK,UAAU;AAAA,MAClB,MAAM,IAAI,MAAM,yCAAyC;AAAA,IAC3D;AAAA,IACA,OAAO,KAAK,SAAS,UAAU,GAAG,IAAI;AAAA;AAAA,MAEpC,EAAE,GAAG;AAAA,IACP,IAAI,CAAC,KAAK,UAAU;AAAA,MAClB,MAAM,IAAI,MAAM,yCAAyC;AAAA,IAC3D;AAAA,IACA,OAAO,KAAK,SAAS,UAAU,GAAG,IAAI,IAAI;AAAA;AAAA,MAExC,IAAI,GAAG;AAAA,IACT,IAAI,CAAC,KAAK,UAAU;AAAA,MAClB,MAAM,IAAI,MAAM,yCAAyC;AAAA,IAC3D;AAAA,IACA,OAAO,KAAK,SAAS,UAAU,GAAG,IAAI,IAAI;AAAA;AAE9C;AACA,IAAI,aAAa;AACjB,SAAS,cAAc,CAAC,MAAM;AAAA,EAC5B,MAAM,OAAO,IAAI,SAAS,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,EACvE,MAAM,QAAQ,KAAK,UAAU,GAAG,IAAI;AAAA,EACpC,IAAI,UAAU,YAAY;AAAA,IACxB,MAAM,IAAI,MAAM,uCAAuC,WAAW,SAAS,EAAE,UAAU,MAAM,SAAS,EAAE,GAAG;AAAA,EAC7G;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA,SAAS,KAAK,UAAU,GAAG,IAAI;AAAA,IAC/B,YAAY,KAAK,UAAU,GAAG,IAAI;AAAA,IAClC,YAAY,KAAK,UAAU,IAAI,IAAI;AAAA,IACnC,YAAY,KAAK,UAAU,IAAI,IAAI;AAAA,EACrC;AAAA;AAEF,IAAI,mBAAmB,IAAI,IAAI,0DAA0D;AACzF,IAAI,sBAAsB;AAC1B,IAAI,kBAAkB;AACtB,IAAI,mBAAmB,kBAAkB;AACzC,IAAI,gBAAgB,mBAAmB;AACvC,IAAI,iBAAiB,gBAAgB;AACrC,IAAI,sBAAsB;AAC1B,IAAI,kCAAkC;AACtC,IAAI,oCAAoC;AAExC,IAAI,kBAAkB,WAAW;AACjC,IAAI,OAAO,MAAM;AACjB,IAAI,cAAc,OAAO,YAAY,OAAO,KAAK,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;AAC3F,SAAS,WAAW,GAAG;AAAA,EACrB,WAAW,UAAU;AAAA;AAEvB,SAAS,aAAa,GAAG;AAAA,EACvB,WAAW,UAAU;AAAA;AAAA;AAGvB,MAAM,IAAI;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,WAAW,CAAC,MAAM,QAAQ,MAAM;AAAA,IAC9B,KAAK,OAAO;AAAA,IACZ,KAAK,UAAU;AAAA,IACf,KAAK,QAAQ,IAAI,YAAY,IAAI,SAAS,KAAK,QAAQ,QAAQ,KAAK,KAAK,aAAa,CAAC,CAAC;AAAA,IACxF,KAAK,KAAK,GAAG,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG;AAAA,IAC3C,KAAK,aAAa,MAAM;AAAA,IACxB,KAAK,OAAO,IAAI;AAAA;AAAA,EAElB,IAAI,CAAC,IAAI;AAAA,IACP,IAAI,KAAK,WAAW;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK,KAAK,KAAK,MAAM,EAAE;AAAA;AAAA,EAEhC,IAAI,CAAC,gBAAgB;AAAA,IACnB,KAAK,KAAK,KAAK,kBAAkB,KAAK;AAAA;AAAA,EAExC,YAAY,CAAC,QAAQ;AAAA,IACnB,IAAI,OAAO,aAAa;AAAA,MACtB,KAAK,SAAS,OAAO,SAAS,CAAC;AAAA,IACjC;AAAA,IACA,KAAK,QAAQ,OAAO,SAAS,CAAC;AAAA;AAAA,EAEhC,KAAK,GAAG;AAAA,IACN,KAAK,YAAY;AAAA;AAAA,EAEnB,OAAO,GAAG;AAAA,IACR,KAAK,YAAY;AAAA;AAAA,MAEf,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,EAEd,QAAQ,GAAG;AAAA,IACT,IAAI,KAAK,KAAK,UAAU,GAAG;AAAA,MACzB;AAAA,IACF;AAAA,IACA,KAAK,KAAK,KAAK,KAAK,QAAQ,CAAC;AAAA;AAAA,EAE/B,IAAI,CAAC,OAAO,WAAW;AAAA,IACrB,OAAO,KAAK,YAAY,oDAAoD;AAAA,IAC5E,MAAM,cAAc,YAAY,QAAQ,IAAI;AAAA,IAC5C,MAAM,aAAa,QAAQ,KAAK,KAAK;AAAA,IACrC,IAAI,YAAY;AAAA,MACd,YAAY;AAAA,IACd;AAAA,IACA,KAAK,KAAK,KAAK,WAAW;AAAA,IAC1B,IAAI,YAAY;AAAA,MACd,cAAc;AAAA,IAChB;AAAA;AAAA,EAEF,QAAQ,GAAG;AAAA,IACT,MAAM,aAAa,KAAK,aAAa,KAAK,WAAW,IAAI;AAAA,IACzD,MAAM,OAAO,aAAa,WAAW,OAAO;AAAA,IAC5C,MAAM,MAAM,KAAK,KAAK,cAAc,IAAI;AAAA,IACxC,MAAM,SAAS,IAAI,YAAY,KAAK,QAAQ,QAAQ,KAAK,CAAC;AAAA,IAC1D,MAAM,eAAe,kCAAkC,YAAY;AAAA,IACnE,MAAM,iBAAiB,oCAAoC,YAAY;AAAA,IACvE,OAAO,OAAO,eAAe,4BAA4B;AAAA,IACzD,OAAO,OAAO,iBAAiB,8BAA8B;AAAA,IAC7D,MAAM,SAAS,OAAO,gBAAgB,OAAO;AAAA,IAC7C,MAAM,aAAa,IAAI,WAAW,KAAK,QAAQ,QAAQ,KAAK,MAAM;AAAA,IAClE,MAAM,OAAO,IAAI,WAAW,MAAM;AAAA,IAClC,KAAK,IAAI,UAAU;AAAA,IACnB,OAAO;AAAA;AAAA,SAEF,2BAA2B,IAAI,OAAO;AAAA,EAC7C,MAAM,CAAC,YAAY,MAAM,iBAAiB,IAAI,0BAA0B;AAAA,IACtE,MAAM,aAAa,KAAK,aAAa,KAAK,WAAW,IAAI;AAAA,IACzD,MAAM,OAAO,aAAa,WAAW,OAAO;AAAA,IAC5C,MAAM,SAAS,KAAK,KAAK,gBAAgB,MAAM,WAAW,cAAc;AAAA,IACxE,IAAI,WAAW,GAAG;AAAA,MAChB,MAAM,IAAI,MAAM,yCAAyC,QAAQ;AAAA,IACnE;AAAA;AAAA,EAEF,QAAQ,GAAG;AAAA,IACT,MAAM,UAAU,KAAK,KAAK,aAAa;AAAA,IACvC,MAAM,UAAU,KAAK,KAAK,aAAa;AAAA,IACvC,MAAM,aAAa,IAAI,WAAW,KAAK,QAAQ,QAAQ,SAAS,OAAO;AAAA,IACvE,MAAM,OAAO,IAAI,WAAW,OAAO;AAAA,IACnC,KAAK,IAAI,UAAU;AAAA,IACnB,OAAO;AAAA;AAAA,EAET,QAAQ,CAAC,MAAM;AAAA,IACb,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK,UAAU;AAAA,IAC/C,OAAO,UAAU,GAAG,sBAAsB,KAAK,2CAA2C,SAAS;AAAA,IACnG,MAAM,aAAa,IAAI,WAAW,KAAK,QAAQ,QAAQ,SAAS,KAAK,UAAU;AAAA,IAC/E,WAAW,IAAI,IAAI;AAAA,IACnB,IAAI,KAAK,aAAa;AAAA,MACpB,KAAK,KAAK,eAAe;AAAA,IAC3B;AAAA,IACA,MAAM,SAAS,KAAK,KAAK,UAAU,SAAS,KAAK,UAAU;AAAA,IAC3D,OAAO,WAAW,GAAG,mCAAmC,QAAQ;AAAA,IAChE,KAAK,KAAK,KAAK,SAAS,KAAK,UAAU;AAAA;AAAA,EAEzC,OAAO,CAAC,UAAU;AAAA,IAChB,MAAM,UAAU,KAAK,KAAK,MAAM,SAAS,UAAU;AAAA,IACnD,OAAO,UAAU,GAAG,sBAAsB,SAAS,kDAAkD,SAAS;AAAA,IAC9G,MAAM,aAAa,IAAI,WAAW,KAAK,QAAQ,QAAQ,SAAS,SAAS,UAAU;AAAA,IACnF,WAAW,IAAI,QAAQ;AAAA,IACvB,KAAK,KAAK,QAAQ,OAAO;AAAA,IACzB,KAAK,KAAK,KAAK,SAAS,SAAS,UAAU;AAAA;AAAA,EAE7C,OAAO,GAAG;AAAA,IACR,KAAK,KAAK,OAAO;AAAA;AAAA,MAEf,IAAI,GAAG;AAAA,IACT,IAAI,CAAC,KAAK,MAAM,YAAY,KAAK,MAAM,SAAS,WAAW,KAAK,QAAQ,QAAQ;AAAA,MAC9E,KAAK,MAAM,WAAW,IAAI,SAAS,KAAK,QAAQ,QAAQ,KAAK,KAAK,aAAa,CAAC;AAAA,IAClF;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAEV,GAAG,GAAG;AAAA,IACR,IAAI,CAAC,KAAK,KAAK,YAAY,KAAK,KAAK,SAAS,WAAW,KAAK,QAAQ,QAAQ;AAAA,MAC5E,KAAK,KAAK,WAAW,IAAI,SAAS,KAAK,QAAQ,QAAQ,KAAK,KAAK,YAAY,CAAC;AAAA,IAChF;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAEV,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,QAAQ;AAAA;AAAA,MAElB,WAAW,GAAG;AAAA,IAChB,OAAO,QAAQ,KAAK,KAAK,aAAa,CAAC;AAAA;AAAA,MAErC,WAAW,GAAG;AAAA,IAChB,OAAO,QAAQ,KAAK,KAAK,aAAa,CAAC;AAAA;AAAA,MAErC,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,eAAe,KAAK;AAAA;AAAA,EAElC,OAAO;AAAA,IACL,SAAS,CAAC,KAAK,SAAS,MAAM;AAAA,MAC5B,KAAK,KAAK,aAAa,aAAa,GAAG,GAAG,MAAM;AAAA;AAAA,IAElD,OAAO,CAAC,KAAK,SAAS,MAAM;AAAA,MAC1B,KAAK,KAAK,WAAW,aAAa,GAAG,GAAG,MAAM;AAAA;AAAA,IAEhD,WAAW,CAAC,GAAG,GAAG,SAAS,MAAM;AAAA,MAC/B,KAAK,KAAK,eAAe,GAAG,GAAG,MAAM;AAAA;AAAA,IAEvC,WAAW,CAAC,QAAQ,SAAS,MAAM;AAAA,MACjC,KAAK,KAAK,eAAe,6BAA6B,MAAM,GAAG,MAAM;AAAA;AAAA,IAEvE,SAAS,CAAC,QAAQ,SAAS,MAAM;AAAA,MAC/B,KAAK,KAAK,aAAa,6BAA6B,MAAM,GAAG,MAAM;AAAA;AAAA,IAErE,YAAY,CAAC,GAAG,GAAG,SAAS,MAAM;AAAA,MAChC,KAAK,KAAK,gBAAgB,GAAG,GAAG,MAAM;AAAA;AAAA,IAExC,SAAS,CAAC,MAAM,SAAS;AAAA,MACvB,QAAQ;AAAA,aACD,WAAW;AAAA,UACd,MAAM,WAAW,KAAK;AAAA,UACtB,MAAM,UAAU,IAAI,YAAY,EAAE,OAAO,QAAQ;AAAA,UACjD,MAAM,MAAM,KAAK,KAAK,MAAM,QAAQ,MAAM;AAAA,UAC1C,IAAI,WAAW,KAAK,QAAQ,QAAQ,KAAK,QAAQ,MAAM,EAAE,IAAI,OAAO;AAAA,UACpE,KAAK,KAAK,iBAAiB,KAAK,QAAQ,MAAM;AAAA,UAC9C,KAAK,KAAK,KAAK,KAAK,QAAQ,MAAM;AAAA,UAClC;AAAA,QACF;AAAA,aACK;AAAA,UACH,KAAK,KAAK,mBAAmB,CAAC;AAAA,UAC9B;AAAA,aACG,aAAa;AAAA,UAChB,MAAM,SAAS,KAAK;AAAA,UACpB,KAAK,KAAK,mBAAmB,MAAM;AAAA,UACnC;AAAA,QACF;AAAA,aACK,cAAc;AAAA,UACjB,MAAM,SAAS,KAAK;AAAA,UACpB,KAAK,KAAK,oBAAoB,MAAM;AAAA,UACpC;AAAA,QACF;AAAA,aACK,wBAAwB;AAAA,UAC3B,MAAM,SAAS,KAAK;AAAA,UACpB,KAAK,KAAK,8BAA8B,MAAM;AAAA,UAC9C;AAAA,QACF;AAAA,aACK;AAAA,UACH,KAAK,KAAK,sBAAsB;AAAA,UAChC;AAAA,aACG;AAAA,UACH,KAAK,KAAK,qBAAqB;AAAA,UAC/B;AAAA;AAAA;AAAA,IAGN,QAAQ,CAAC,SAAS;AAAA,MAChB,IAAI,KAAK,WAAW,GAAG;AAAA,QACrB;AAAA,MACF;AAAA,MACA,MAAM,MAAM,KAAK,KAAK,MAAM,KAAK,UAAU;AAAA,MAC3C,OAAO,MAAM,GAAG,sBAAsB,KAAK,sCAAsC;AAAA,MACjF,MAAM,aAAa,IAAI,WAAW,KAAK,QAAQ,QAAQ,KAAK,KAAK,UAAU;AAAA,MAC3E,WAAW,IAAI,IAAI;AAAA,MACnB,MAAM,SAAS,KAAK,KAAK,oBAAoB,KAAK,KAAK,UAAU;AAAA,MACjE,KAAK,KAAK,KAAK,KAAK,KAAK,UAAU;AAAA,MACnC,IAAI,WAAW,GAAG;AAAA,QAChB,MAAM,gBAAgB;AAAA,UACpB,GAAG;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AAAA,QACA,MAAM,IAAI,MAAM,cAAc,WAAW,yBAAyB,QAAQ;AAAA,MAC5E;AAAA;AAAA,EAEJ;AAAA,EACA,iBAAiB,CAAC,YAAY;AAAA,IAC5B,KAAK,KAAK,sBAAsB,UAAU;AAAA,IAC1C,MAAM,MAAM,KAAK,KAAK,wBAAwB;AAAA,IAC9C,IAAI,QAAQ,GAAG;AAAA,MACb,MAAM,IAAI,MAAM,yCAAyC,YAAY;AAAA,IACvE;AAAA,IACA,MAAM,MAAM,KAAK,KAAK,oBAAoB;AAAA,IAC1C,OAAO,MAAM,GAAG,oCAAoC,KAAK;AAAA,IACzD,MAAM,aAAa,IAAI,WAAW,KAAK,QAAQ,QAAQ,KAAK,GAAG;AAAA,IAC/D,MAAM,OAAO,IAAI,WAAW,GAAG;AAAA,IAC/B,KAAK,IAAI,UAAU;AAAA,IACnB,OAAO;AAAA;AAEX;AAGA,eAAe,KAAK,CAAC,WAAW,SAAS;AAAA,EACvC,MAAM,UAAU,SAAS,WAAW;AAAA,EACpC,MAAM,iBAAiB,SAAS,kBAAkB;AAAA,EAClD,QAAQ,WAAW,mBAAmB,oBAAoB,SAAS,IAAI;AAAA,EACvE,MAAM,QAAQ,MAAM,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM;AAAA,IAC/E,QAAQ,MAAM,2BAA2B,WAAW,CAAC;AAAA,IACrD,MAAM;AAAA,GACP;AAAA,EACD,MAAM,SAAS,IAAI,YAAY,OAAO,EAAE,SAAS,KAAK,SAAS,KAAK,CAAC;AAAA,EACrE,IAAI;AAAA,EACJ,MAAM,yBAAyB,MAAM,YAAY,YAAY,OAAO;AAAA,IAClE,KAAK;AAAA,MACH;AAAA,MACA,WAAW,QAAQ,CAAC,eAAe,KAAK;AAAA,QACtC,UAAU,MAAM,UAAU,OAAO,MAAM;AAAA,QACvC,UAAU,MAAM,gBAAgB,eAAe,GAAG;AAAA;AAAA,MAEpD,gBAAgB,QAAQ,CAAC,KAAK,OAAO;AAAA,QACnC,IAAI;AAAA,UACF,UAAU,MAAM,UAAU,OAAO,MAAM;AAAA,UACvC,UAAU,MAAM,WAAW,GAAG;AAAA,UAC9B,UAAU,MAAM,cAAc,KAAK;AAAA,UACnC,OAAO,GAAG;AAAA,UACV,QAAQ,MAAM,8BAA8B,CAAC;AAAA;AAAA;AAAA,MAGjD,gBAAgB,QAAQ,CAAC,SAAS;AAAA,QAChC,IAAI,CAAC,KAAK;AAAA,UACR,MAAM,IAAI,MAAM,qCAAqC;AAAA,QACvD;AAAA,QACA,MAAM,YAAY,IAAI,SAAS;AAAA,QAC/B,IAAI,IAAI,YAAY;AAAA,UAClB,IAAI,WAAW,SAAS;AAAA,QAC1B,EAAO;AAAA,UACL,MAAM,OAAO,UAAU,SAAS;AAAA,UAChC,MAAM,WAAW,IAAI,KAAK;AAAA,UAC1B,MAAM,cAAc,OAAO;AAAA,UAC3B,QAAQ,KAAK,gCAAgC;AAAA,YAC3C,MAAM,IAAI,UAAU,SAAS,MAAM,QAAQ,CAAC;AAAA,YAC5C,UAAU,GAAG,IAAI,KAAK,KAAK,QAAQ,CAAC;AAAA,YACpC,aAAa,GAAG,YAAY,QAAQ,CAAC;AAAA,UACvC,CAAC;AAAA;AAAA;AAAA,MAGL,aAAa,QAAQ,CAAC,KAAK,KAAK;AAAA,QAC9B,MAAM,SAAS,IAAI,WAAW,OAAO,QAAQ,KAAK,GAAG;AAAA,QACrD,MAAM,SAAS,IAAI,YAAY,OAAO,EAAE,OAAO,MAAM;AAAA,QACrD,QAAQ,IAAI,MAAM;AAAA;AAAA,MAEpB,iBAAiB,QAAQ,GAAG;AAAA,QAC1B,MAAM,aAAa,UAAU,MAAM,UAAU;AAAA,QAC7C,OAAO,aAAa,WAAW,OAAO;AAAA;AAAA,MAExC,qBAAqB,QAAQ,CAAC,KAAK,KAAK;AAAA,QACtC,MAAM,aAAa,UAAU,MAAM,UAAU;AAAA,QAC7C,OAAO,QAAQ,WAAW,MAAM,iDAAiD,WAAW,YAAY,KAAK;AAAA,QAC7G,WAAW,MAAM,OAAO,QAAQ,GAAG;AAAA;AAAA,MAErC,uBAAuB,QAAQ,CAAC,KAAK,KAAK;AAAA,QACxC,UAAU,MAAM,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA;AAAA,IAEvD;AAAA,EACF,CAAC;AAAA,EACD,MAAM,OAAO,uBAAuB,SAAS;AAAA,EAC7C,MAAM,gBAAgB,KAAK,WAAW;AAAA,EACtC,MAAM,IAAI,IAAI,MAAM,QAAQ;AAAA,IAC1B,WAAW,UAAU,MAAM;AAAA,EAC7B,CAAC;AAAA,EACD,IAAI,gBAAgB;AAAA,IAClB,IAAI,OAAO,WAAW,cAAc;AAAA,EACtC;AAAA,EACA,UAAU,MAAM,UAAU,OAAO,MAAM;AAAA,EACvC,UAAU,MAAM,WAAW,aAAa;AAAA,EACxC,OAAO;AAAA,IACL;AAAA,EACF;AAAA;AAEF,SAAS,mBAAmB,CAAC,MAAM;AAAA,EACjC,IAAI;AAAA,EACJ,IAAI,CAAC,MAAM;AAAA,IACT,YAAY;AAAA,EACd,EAAO,SAAI,eAAe,MAAM;AAAA,IAC9B,YAAY,KAAK;AAAA,EACnB,EAAO;AAAA,IACL,MAAM,YAAY,KAAK,yBAAyB;AAAA,IAChD,YAAY,KAAK,KAAK,KAAK,WAAW,KAAK,SAAS;AAAA;AAAA,EAEtD,MAAM,iBAAiB,MAAM,YAAY,IAAI,IAAI;AAAA,EACjD,OAAO,EAAE,WAAW,eAAe;AAAA;AAAA;AAGrC,MAAM,MAAM;AAAA,EACV,WAAW,CAAC;AAAA,EACZ;AAAA,EACA,gBAAgB,IAAI,YAAY,CAAC;AAAA,SAC1B,MAAM,CAAC,OAAO,CAAC,GAAG;AAAA,IACvB,OAAO,IAAI,MAAM,MAAM,oBAAoB;AAAA;AAAA,EAE7C,WAAW,CAAC,OAAO,CAAC,GAAG,oBAAoB;AAAA,IACzC,IAAI,uBAAuB,sBAAsB;AAAA,MAC/C,MAAM,IAAI,MAAM,iFAAiF;AAAA,IACnG;AAAA,IACA,MAAM,SAAS,IAAI;AAAA,IACnB,KAAK,WAAW;AAAA,MACd,KAAK,KAAK,OAAO,CAAC;AAAA,MAClB,MAAM,IAAI;AAAA,MACV;AAAA,UACI,OAAO,GAAG;AAAA,QACZ,OAAO,OAAO;AAAA;AAAA,MAEhB,YAAY;AAAA,MACZ,KAAK,IAAI;AAAA,IACX;AAAA;AAAA,MAEE,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,SAAS;AAAA;AAAA,MAEnB,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,EAEd,MAAM,CAAC,OAAO,QAAQ;AAAA,IACpB,OAAO,UAAU;AAAA,IACjB,KAAK,SAAS,KAAK,MAAM;AAAA,IACzB,OAAO,KAAK,SAAS;AAAA;AAAA,EAEvB,QAAQ;AAAA,IACN,WAAW,MAAM;AAAA,MACf,MAAM,MAAM,KAAK,UAAU,KAAK,SAAS,GAAG;AAAA,MAC5C,MAAM,UAAU,IAAI;AAAA,MACpB,MAAM,YAAY,QAAQ,OAAO,GAAG;AAAA,MACpC,OAAO;AAAA,QACL,MAAM,UAAU;AAAA,QAChB,OAAO,CAAC,QAAQ,QAAQ;AAAA,UACtB,MAAM,aAAa,IAAI,WAAW,QAAQ,KAAK,UAAU,UAAU;AAAA,UACnE,WAAW,IAAI,SAAS;AAAA;AAAA,MAE5B;AAAA;AAAA,IAEF,aAAa,CAAC,QAAQ,KAAK,QAAQ;AAAA,MACjC,MAAM,WAAW,IAAI,WAAW,QAAQ,KAAK,GAAG;AAAA,MAChD,MAAM,UAAU,IAAI;AAAA,MACpB,MAAM,MAAM,QAAQ,OAAO,QAAQ;AAAA,MACnC,IAAI;AAAA,QACF,KAAK,SAAS,MAAM,KAAK,MAAM,GAAG;AAAA,QAClC,OAAO,GAAG;AAAA,QACV,QAAQ,MAAM,6BAA6B,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA;AAAA;AAAA,IAGtE,WAAW,CAAC,WAAW;AAAA,MACrB,KAAK,gBAAgB;AAAA;AAAA,IAEvB,YAAY,CAAC,QAAQ;AAAA,MACnB,IAAI,CAAC,KAAK,eAAe;AAAA,QACvB,MAAM,IAAI,MAAM,2CAA2C;AAAA,MAC7D;AAAA,MACA,MAAM,KAAK,IAAI,SAAS,KAAK,eAAe,GAAG;AAAA,MAC/C,MAAM,aAAa,GAAG,UAAU,iBAAiB,IAAI;AAAA,MACrD,MAAM,cAAc,GAAG,UAAU,kBAAkB,IAAI;AAAA,MACvD,MAAM,YAAY,GAAG,UAAU,gBAAgB,IAAI;AAAA,MACnD,KAAK,SAAS,aAAa;AAAA,MAC3B,KAAK,SAAS,OAAO,WAAW,IAAI,SAAS,KAAK,eAAe,WAAW;AAAA,MAC5E,KAAK,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,eAAe,UAAU;AAAA,MACzE,KAAK,SAAS,IAAI,WAAW,IAAI,SAAS,KAAK,eAAe,SAAS;AAAA;AAAA,IAEzE,iBAAiB,CAAC,eAAe,QAAQ;AAAA,MACvC,KAAK,MAAM,WAAW,GAAG;AAAA,MACzB,MAAM,KAAK,IAAI,SAAS,KAAK,eAAe,GAAG;AAAA,MAC/C,MAAM,YAAY,GAAG,UAAU,eAAe,IAAI;AAAA,MAClD,MAAM,iBAAiB,IAAI,SAAS,KAAK,eAAe,SAAS;AAAA,MACjE,WAAW,UAAU,KAAK,UAAU;AAAA,QAClC,OAAO,SAAS,KAAK,QAAQ;AAAA,QAC7B,MAAM,aAAa,eAAe,UAAU,GAAG,IAAI;AAAA,QACnD,IAAI,SAAS;AAAA,QACb,SAAS,IAAI,EAAE,IAAI,YAAY,KAAK;AAAA,UAClC,MAAM,YAAY,eAAe,SAAS,MAAM;AAAA,UAChD,MAAM,cAAc,eAAe,SAAS,SAAS,CAAC;AAAA,UACtD,MAAM,gBAAgB,SAAS;AAAA,UAC/B,MAAM,cAAc,eAAe,SAAS,aAAa;AAAA,UACzD,MAAM,cAAc;AAAA,YAClB,GAAG,eAAe,WAAW,eAAe,IAAI;AAAA,YAChD,GAAG,eAAe,WAAW,gBAAgB,aAAa,mBAAmB,IAAI;AAAA,UACnF;AAAA,UACA,QAAQ;AAAA,iBACD,cAAc,UAAU,SAAS;AAAA,cACpC,OAAO,UAAU,YAAY,KAAK,UAAU;AAAA,gBAC1C,KAAK,aAAa,WAAW;AAAA,cAC/B,CAAC,CAAC;AAAA,cACF;AAAA,YACF;AAAA,iBACK,cAAc,UAAU;AAAA,cAC3B,OAAO,QAAQ,YAAY,KAAK,UAAU;AAAA,gBACxC,KAAK,aAAa,WAAW;AAAA,cAC/B,CAAC,CAAC;AAAA,cACF;AAAA,iBACG,cAAc,UAAU;AAAA,cAC3B,OAAO,YAAY,YAAY,KAAK,UAAU;AAAA,gBAC5C,QAAQ,6BAA6B,WAAW;AAAA,cAClD,CAAC,CAAC;AAAA,cACF;AAAA,iBACG,cAAc,UAAU;AAAA,cAC3B,OAAO,UAAU,YAAY,KAAK,UAAU;AAAA,gBAC1C,QAAQ,6BAA6B,WAAW;AAAA,cAClD,CAAC,CAAC;AAAA,cACF;AAAA,iBACG,cAAc,UAAU;AAAA,cAC3B,OAAO,YAAY,YAAY,KAAK,UAAU;AAAA,gBAC5C,GAAG,YAAY;AAAA,gBACf,GAAG,YAAY;AAAA,cACjB,CAAC,CAAC;AAAA,cACF;AAAA,iBACG,cAAc,UAAU;AAAA,cAC3B,OAAO,aAAa,YAAY,KAAK,UAAU;AAAA,gBAC7C,GAAG,YAAY;AAAA,gBACf,GAAG,YAAY;AAAA,cACjB,CAAC,CAAC;AAAA,cACF;AAAA,iBACG,cAAc,UAAU,WAAW;AAAA,cACtC,MAAM,gBAAgB,CAAC;AAAA,cACvB,SAAS,IAAI,EAAE,IAAI,GAAG,KAAK;AAAA,gBACzB,MAAM,OAAO,eAAe,SAAS,gBAAgB,CAAC;AAAA,gBACtD,IAAI,SAAS;AAAA,kBACX;AAAA,gBACF,cAAc,KAAK,IAAI;AAAA,cACzB;AAAA,cACA,MAAM,WAAW,OAAO,aAAa,GAAG,aAAa;AAAA,cACrD,KAAK,SAAS,QAAQ;AAAA,gBACpB,MAAM;AAAA,gBACN,MAAM,EAAE,SAAS;AAAA,cACnB;AAAA,cACA,OAAO,UAAU,KAAK,QAAQ;AAAA,cAC9B;AAAA,YACF;AAAA,iBACK,cAAc,UAAU,aAAa;AAAA,cACxC,MAAM,aAAa,eAAe,SAAS,aAAa;AAAA,cACxD,MAAM,UAAU;AAAA,gBACd;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,MAAM,SAAS,QAAQ,eAAe;AAAA,cACtC,KAAK,SAAS,QAAQ;AAAA,gBACpB,MAAM;AAAA,gBACN,MAAM,EAAE,OAAO;AAAA,cACjB;AAAA,cACA,OAAO,UAAU,KAAK,QAAQ;AAAA,cAC9B;AAAA,YACF;AAAA,iBACK,cAAc,UAAU,aAAa;AAAA,cACxC,MAAM,SAAS,eAAe,SAAS,aAAa;AAAA,cACpD,KAAK,SAAS,QAAQ;AAAA,gBACpB,MAAM;AAAA,gBACN,MAAM,EAAE,OAAO;AAAA,cACjB;AAAA,cACA,OAAO,UAAU,KAAK,QAAQ;AAAA,cAC9B;AAAA,YACF;AAAA,iBACK,cAAc,UAAU,cAAc;AAAA,cACzC,MAAM,SAAS,eAAe,SAAS,aAAa;AAAA,cACpD,KAAK,SAAS,QAAQ;AAAA,gBACpB,MAAM;AAAA,gBACN,MAAM,EAAE,OAAO;AAAA,cACjB;AAAA,cACA,OAAO,UAAU,KAAK,QAAQ;AAAA,cAC9B;AAAA,YACF;AAAA;AAAA,cAEE;AAAA;AAAA,UAEJ,UAAU;AAAA,QACZ;AAAA,QACA,KAAK,SAAS,QAAQ;AAAA,MACxB;AAAA;AAAA,EAEJ;AACF;AACA,SAAS,WAAW,CAAC,SAAS,OAAO;AAAA,EACnC,QAAQ,QAAQ;AAAA,EAChB,OAAO;AAAA;;;AC70DT,IAAI,aAAY,OAAO;AACvB,IAAI,YAAW,CAAC,QAAQ,QAAQ;AAAA,EAC9B,SAAS,QAAQ;AAAA,IACf,WAAU,QAAQ,MAAM;AAAA,MACtB,KAAK,IAAI;AAAA,MACT,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,KAAK,CAAC,aAAa,IAAI,QAAQ,MAAM;AAAA,IACvC,CAAC;AAAA;AAIL,IAAI,iBAAgB,CAAC;AACrB,UAAS,gBAAe;AAAA,EACtB,mBAAmB,MAAM;AAAA,EACzB,aAAa,MAAM;AAAA,EACnB,KAAK,MAAM;AAAA,EACX,aAAa,MAAM;AAAA,EACnB,WAAW,MAAM;AACnB,CAAC;AACD,IAAI;AAAA,CACH,CAAC,gBAAe;AAAA,EACf,YAAW,YAAW,UAAU,KAAK;AAAA,EACrC,YAAW,YAAW,aAAa,KAAK;AAAA,EACxC,YAAW,YAAW,WAAW,KAAK;AAAA,EACtC,YAAW,YAAW,eAAe,KAAK;AAAA,EAC1C,YAAW,YAAW,eAAe,KAAK;AAAA,EAC1C,YAAW,YAAW,aAAa,KAAK;AAAA,EACxC,YAAW,YAAW,gBAAgB,KAAK;AAAA,EAC3C,YAAW,YAAW,gBAAgB,KAAK;AAAA,EAC3C,YAAW,YAAW,eAAe,KAAK;AAAA,EAC1C,YAAW,YAAW,iBAAiB,KAAK;AAAA,EAC5C,YAAW,YAAW,iBAAiB,MAAM;AAAA,EAC7C,YAAW,YAAW,kBAAkB,MAAM;AAAA,EAC9C,YAAW,YAAW,0BAA0B,MAAM;AAAA,EACtD,YAAW,YAAW,uBAAuB,MAAM;AAAA,EACnD,YAAW,YAAW,oBAAoB,MAAM;AAAA,GAC/C,eAAc,CAAC,CAAC;AACnB,IAAI;AAAA,CACH,CAAC,kBAAiB;AAAA,EACjB,cAAa,cAAa,UAAU,KAAK;AAAA,EACzC,cAAa,cAAa,UAAU,KAAK;AAAA,EACzC,cAAa,cAAa,YAAY,KAAK;AAAA,EAC3C,cAAa,cAAa,WAAW,KAAK;AAAA,EAC1C,cAAa,cAAa,QAAQ,KAAK;AAAA,EACvC,cAAa,cAAa,QAAQ,KAAK;AAAA,EACvC,cAAa,cAAa,QAAQ,KAAK;AAAA,EACvC,cAAa,cAAa,QAAQ,KAAK;AAAA,EACvC,cAAa,cAAa,QAAQ,KAAK;AAAA,GACtC,iBAAgB,CAAC,CAAC;AACrB,IAAI;AAAA,CACH,CAAC,UAAS;AAAA,EACT,MAAK,MAAK,UAAU,KAAK;AAAA,EACzB,MAAK,MAAK,eAAe,KAAK;AAAA,EAC9B,MAAK,MAAK,eAAe,KAAK;AAAA,EAC9B,MAAK,MAAK,iBAAiB,KAAK;AAAA,EAChC,MAAK,MAAK,kBAAkB,KAAK;AAAA,EACjC,MAAK,MAAK,WAAW,KAAK;AAAA,EAC1B,MAAK,MAAK,YAAY,KAAK;AAAA,EAC3B,MAAK,MAAK,YAAY,KAAK;AAAA,EAC3B,MAAK,MAAK,YAAY,KAAK;AAAA,EAC3B,MAAK,MAAK,YAAY,KAAK;AAAA,EAC3B,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,mBAAmB,MAAM;AAAA,EACnC,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,eAAe,MAAM;AAAA,EAC/B,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,cAAc,MAAM;AAAA,EAC9B,MAAK,MAAK,eAAe,MAAM;AAAA,EAC/B,MAAK,MAAK,cAAc,MAAM;AAAA,EAC9B,MAAK,MAAK,iBAAiB,MAAM;AAAA,EACjC,MAAK,MAAK,iBAAiB,MAAM;AAAA,EACjC,MAAK,MAAK,kBAAkB,MAAM;AAAA,EAClC,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,cAAc,MAAM;AAAA,EAC9B,MAAK,MAAK,eAAe,MAAM;AAAA,EAC/B,MAAK,MAAK,eAAe,MAAM;AAAA,EAC/B,MAAK,MAAK,gBAAgB,MAAM;AAAA,EAChC,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,SAAS,MAAM;AAAA,EACzB,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,cAAc,MAAM;AAAA,EAC9B,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,WAAW,MAAM;AAAA,EAC3B,MAAK,MAAK,gBAAgB,MAAM;AAAA,EAChC,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,SAAS,MAAM;AAAA,EACzB,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,UAAU,MAAM;AAAA,EAC1B,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,cAAc,MAAM;AAAA,EAC9B,MAAK,MAAK,YAAY,MAAM;AAAA,EAC5B,MAAK,MAAK,eAAe,MAAM;AAAA,EAC/B,MAAK,MAAK,eAAe,MAAM;AAAA,EAC/B,MAAK,MAAK,gBAAgB,MAAM;AAAA,EAChC,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,aAAa,MAAM;AAAA,EAC7B,MAAK,MAAK,eAAe,MAAM;AAAA,EAC/B,MAAK,MAAK,qBAAqB,MAAM;AAAA,EACrC,MAAK,MAAK,iBAAiB,MAAM;AAAA,EACjC,MAAK,MAAK,sBAAsB,MAAM;AAAA,EACtC,MAAK,MAAK,iBAAiB,MAAM;AAAA,EACjC,MAAK,MAAK,mBAAmB,OAAO;AAAA,EACpC,MAAK,MAAK,kBAAkB,OAAO;AAAA,EACnC,MAAK,MAAK,iBAAiB,OAAO;AAAA,EAClC,MAAK,MAAK,iBAAiB,OAAO;AAAA,EAClC,MAAK,MAAK,gBAAgB,OAAO;AAAA,EACjC,MAAK,MAAK,qBAAqB,OAAO;AAAA,EACtC,MAAK,MAAK,uBAAuB,OAAO;AAAA,EACxC,MAAK,MAAK,wBAAwB,OAAO;AAAA,EACzC,MAAK,MAAK,uBAAuB,OAAO;AAAA,EACxC,MAAK,MAAK,0BAA0B,OAAO;AAAA,EAC3C,MAAK,MAAK,oBAAoB,OAAO;AAAA,EACrC,MAAK,MAAK,qBAAqB,OAAO;AAAA,EACtC,MAAK,MAAK,sBAAsB,OAAO;AAAA,EACvC,MAAK,MAAK,gBAAgB,OAAO;AAAA,EACjC,MAAK,MAAK,oBAAoB,OAAO;AAAA,EACrC,MAAK,MAAK,YAAY,OAAO;AAAA,EAC7B,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,YAAY,OAAO;AAAA,EAC7B,MAAK,MAAK,iBAAiB,OAAO;AAAA,EAClC,MAAK,MAAK,gBAAgB,OAAO;AAAA,EACjC,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,iBAAiB,OAAO;AAAA,EAClC,MAAK,MAAK,sBAAsB,OAAO;AAAA,EACvC,MAAK,MAAK,oBAAoB,OAAO;AAAA,EACrC,MAAK,MAAK,iBAAiB,OAAO;AAAA,EAClC,MAAK,MAAK,oBAAoB,OAAO;AAAA,EACrC,MAAK,MAAK,mBAAmB,OAAO;AAAA,EACpC,MAAK,MAAK,iBAAiB,OAAO;AAAA,EAClC,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,gBAAgB,OAAO;AAAA,EACjC,MAAK,MAAK,gBAAgB,OAAO;AAAA,EACjC,MAAK,MAAK,gBAAgB,OAAO;AAAA,EACjC,MAAK,MAAK,oBAAoB,OAAO;AAAA,EACrC,MAAK,MAAK,iBAAiB,OAAO;AAAA,EAClC,MAAK,MAAK,eAAe,OAAO;AAAA,EAChC,MAAK,MAAK,oBAAoB,OAAO;AAAA,EACrC,MAAK,MAAK,wBAAwB,OAAO;AAAA,EACzC,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,qBAAqB,OAAO;AAAA,EACtC,MAAK,MAAK,qBAAqB,OAAO;AAAA,EACtC,MAAK,MAAK,mBAAmB,OAAO;AAAA,EACpC,MAAK,MAAK,YAAY,OAAO;AAAA,EAC7B,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,YAAY,OAAO;AAAA,EAC7B,MAAK,MAAK,aAAa,OAAO;AAAA,EAC9B,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,UAAU,OAAO;AAAA,EAC3B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,UAAU,OAAO;AAAA,EAC3B,MAAK,MAAK,UAAU,OAAO;AAAA,EAC3B,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,WAAW,OAAO;AAAA,EAC5B,MAAK,MAAK,YAAY,OAAO;AAAA,EAC7B,MAAK,MAAK,UAAU,OAAO;AAAA,EAC3B,MAAK,MAAK,cAAc,OAAO;AAAA,EAC/B,MAAK,MAAK,cAAc,OAAO;AAAA,EAC/B,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,QAAQ,OAAO;AAAA,EACzB,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,EAC1B,MAAK,MAAK,SAAS,OAAO;AAAA,GACzB,SAAQ,CAAC,CAAC;AACb,IAAI;AAAA,CACH,CAAC,kBAAiB;AAAA,EACjB,cAAa,cAAa,UAAU,KAAK;AAAA,EACzC,cAAa,cAAa,mBAAmB,KAAK;AAAA,EAClD,cAAa,cAAa,gBAAgB,KAAK;AAAA,EAC/C,cAAa,cAAa,gBAAgB,KAAK;AAAA,EAC/C,cAAa,cAAa,mBAAmB,KAAK;AAAA,EAClD,cAAa,cAAa,mBAAmB,KAAK;AAAA,EAClD,cAAa,cAAa,mBAAmB,KAAK;AAAA,EAClD,cAAa,cAAa,mBAAmB,KAAK;AAAA,EAClD,cAAa,cAAa,mBAAmB,KAAK;AAAA,EAClD,cAAa,cAAa,mBAAmB,KAAK;AAAA,EAClD,cAAa,cAAa,mBAAmB,MAAM;AAAA,EACnD,cAAa,cAAa,mBAAmB,MAAM;AAAA,EACnD,cAAa,cAAa,mBAAmB,MAAM;AAAA,EACnD,cAAa,cAAa,mBAAmB,MAAM;AAAA,EACnD,cAAa,cAAa,oBAAoB,MAAM;AAAA,EACpD,cAAa,cAAa,oBAAoB,MAAM;AAAA,EACpD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,iBAAiB,OAAO;AAAA,EAClD,cAAa,cAAa,kBAAkB,OAAO;AAAA,EACnD,cAAa,cAAa,kBAAkB,OAAO;AAAA,EACnD,cAAa,cAAa,cAAc,OAAO;AAAA,GAC9C,iBAAgB,CAAC,CAAC;AACrB,IAAI;AAAA,CACH,CAAC,wBAAuB;AAAA,EACvB,oBAAmB,oBAAmB,aAAa,KAAK;AAAA,EACxD,oBAAmB,oBAAmB,aAAa,KAAK;AAAA,EACxD,oBAAmB,oBAAmB,eAAe,KAAK;AAAA,EAC1D,oBAAmB,oBAAmB,oBAAoB,KAAK;AAAA,EAC/D,oBAAmB,oBAAmB,qBAAqB,KAAK;AAAA,GAC/D,uBAAsB,CAAC,CAAC;AAE3B,IAAI,eAAc;AAClB,IAAI,mBAAkB;AAEtB,IAAI,gBAAe;AACnB,IAAI,wBAAuB;AAC3B,IAAI,sBAAqB;AACzB,IAAI,kBAAiB,eAAc;AAYnC,SAAS,6BAA4B,CAAC,MAAM;AAAA,EAC1C,OAAO,aAAY;AAAA;AAUrB,MAAM,oBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,YAAY;AAAA;AAAA,MAEf,IAAI,GAAG;AAAA,IACT,IAAI,CAAC,KAAK,OAAO;AAAA,MACf,KAAK,QAAQ,IAAI,iBAAgB,IAAI,SAAS,KAAK,UAAU,QAAQ,KAAK,UAAU,aAAa,gBAAe,CAAC;AAAA,IACnH;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAEV,KAAK,GAAG;AAAA,IACV,IAAI,CAAC,KAAK,QAAQ;AAAA,MAChB,KAAK,SAAS,IAAI,cAAa,IAAI,SAAS,KAAK,UAAU,QAAQ,KAAK,UAAU,aAAa,aAAY,CAAC;AAAA,IAC9G;AAAA,IACA,OAAO,KAAK;AAAA;AAEhB;AAAA;AAEA,MAAM,cAAa;AAAA,EACjB;AAAA,EACA,WAAW,CAAC;AAAA,EACZ,WAAW,CAAC,UAAU;AAAA,IACpB,IAAI,UAAU;AAAA,MACZ,KAAK,YAAY;AAAA,MACjB,KAAK,cAAc;AAAA,IACrB;AAAA;AAAA,MAEE,QAAQ,GAAG;AAAA,IACb,IAAI,CAAC,KAAK,WAAW;AAAA,MACnB,MAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAEV,QAAQ,CAAC,UAAU;AAAA,IACrB,KAAK,YAAY;AAAA,IACjB,KAAK,cAAc;AAAA;AAAA,EAErB,aAAa,GAAG;AAAA,IACd,KAAK,WAAW,CAAC;AAAA,IACjB,SAAS,IAAI,EAAE,IAAI,cAAa,KAAK;AAAA,MACnC,MAAM,eAAe,IAAI;AAAA,MACzB,MAAM,iBAAiB,IAAI,SAAS,KAAK,SAAS,QAAQ,KAAK,SAAS,aAAa,cAAc,mBAAkB;AAAA,MACrH,KAAK,SAAS,KAAK,IAAI,oBAAmB,cAAc,CAAC;AAAA,IAC3D;AAAA;AAAA,MAEE,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,MAEV,IAAI,GAAG;AAAA,IACT,IAAI,CAAC,KAAK,SAAS,IAAI;AAAA,MACrB,MAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAAA,IACA,OAAO,KAAK,SAAS,GAAG;AAAA;AAAA,MAEtB,KAAK,GAAG;AAAA,IACV,IAAI,CAAC,KAAK,SAAS,IAAI;AAAA,MACrB,MAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAAA,IACA,OAAO,KAAK,SAAS,GAAG;AAAA;AAE5B;AAAA;AAEA,MAAM,cAAa;AAAA,EACjB;AAAA,EACA,gBAAgB,IAAI;AAAA,EACpB,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,YAAY;AAAA;AAAA,MAEf,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,WAAW,GAAG,IAAI;AAAA;AAAA,MAEtC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,WAAW,GAAG,IAAI;AAAA;AAAA,MAEtC,KAAK,GAAG;AAAA,IACV,OAAO,EAAE,GAAG,KAAK,QAAQ,GAAG,KAAK,OAAO;AAAA;AAAA,MAEtC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,WAAW,GAAG,IAAI;AAAA;AAAA,MAEtC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,WAAW,IAAI,IAAI;AAAA;AAAA,MAEvC,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,aAAa,CAAY;AAAA;AAAA,MAEnC,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,aAAa,CAAa;AAAA;AAAA,MAEpC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,aAAa,CAAc;AAAA;AAAA,EAEzC,YAAY,CAAC,MAAM;AAAA,IACjB,IAAI;AAAA,IACJ,IAAI,KAAK,cAAc,IAAI,IAAI,GAAG;AAAA,MAChC,QAAQ,KAAK,cAAc,IAAI,IAAI;AAAA,IACrC,EAAO;AAAA,MACL,QAAQ,EAAE,MAAM,OAAO,MAAM,OAAO,IAAI,MAAM;AAAA,MAC9C,KAAK,cAAc,IAAI,MAAM,KAAK;AAAA;AAAA,IAEpC,MAAM,SAAS;AAAA,IACf,MAAM,OAAO,CAAC,EAAE,KAAK,UAAU,SAAS,SAAS,IAAI,IAAI;AAAA,IACzD,MAAM,OAAO,MAAM,QAAQ,EAAE,KAAK,UAAU,SAAS,SAAS,IAAI,IAAI;AAAA,IACtE,MAAM,KAAK,CAAC,MAAM,QAAQ,CAAC,EAAE,KAAK,UAAU,SAAS,SAAS,IAAI,IAAI;AAAA,IACtE,OAAO;AAAA;AAEX;AAAA;AAEA,MAAM,iBAAgB;AAAA,EACpB;AAAA,EACA,aAAa,IAAI;AAAA,EACjB,WAAW,CAAC,UAAU;AAAA,IACpB,KAAK,YAAY;AAAA;AAAA,MAEf,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,aAAa,KAAK;AAAA;AAAA,MAE5B,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,WAAW,KAAK;AAAA;AAAA,MAE1B,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,eAAe,KAAK;AAAA;AAAA,MAE9B,IAAI,GAAG;AAAA,IACT,OAAO,KAAK,YAAY,KAAK;AAAA;AAAA,MAE3B,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,CAAiB;AAAA;AAAA,MAErC,SAAS,GAAG;AAAA,IACd,OAAO,KAAK,UAAU,CAAiB;AAAA;AAAA,MAErC,WAAW,GAAG;AAAA,IAChB,OAAO,KAAK,UAAU,CAAmB;AAAA;AAAA,MAEvC,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,UAAU,CAAoB;AAAA;AAAA,MAExC,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,CAAa;AAAA;AAAA,MAEjC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,CAAc;AAAA;AAAA,MAElC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,CAAc;AAAA;AAAA,MAElC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,CAAc;AAAA;AAAA,MAElC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,CAAc;AAAA;AAAA,MAElC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAe;AAAA;AAAA,MAEnC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAe;AAAA;AAAA,MAEnC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAe;AAAA;AAAA,MAEnC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAe;AAAA;AAAA,MAEnC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAe;AAAA;AAAA,MAEnC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAe;AAAA;AAAA,MAEnC,KAAK,GAAG;AAAA,IACV,OAAO,KAAK,UAAU,EAAc;AAAA;AAAA,MAElC,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK,UAAU,EAAsB;AAAA;AAAA,MAE1C,MAAM,GAAG;AAAA,IACX,OAAO,KAAK,UAAU,EAAe;AAAA;AAAA,MAEnC,OAAO,GAAG;AAAA,IACZ,OAAO,KAAK,UAAU,EAAgB;AAAA;AAAA,MAEpC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,GAAG;AAAA,IACN,OAAO,KAAK,UAAU,EAAa;AAAA;AAAA,MAEjC,CAAC,G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OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA;AAAA,MAEjC,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,UAAU,GAAa;AAAA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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
32
- "debugId": "9CF70C9E5A89368264756E2164756E21",
31
+ "mappings": "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,SAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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",
32
+ "debugId": "84BFA067C8C329F964756E2164756E21",
33
33
  "names": []
34
34
  }