@minicode-dev/chat 0.1.11 → 0.1.13

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.
Files changed (33) hide show
  1. package/README.md +102 -6
  2. package/assets/sounds/effects/avalanche.mp3 +0 -0
  3. package/dist/chunks/{TanksGameCard-B47ZQcSr.js → TanksGameCard-GrqmdwJ7.js} +2 -2
  4. package/dist/chunks/{TanksGameCard-B47ZQcSr.js.map → TanksGameCard-GrqmdwJ7.js.map} +1 -1
  5. package/dist/chunks/TanksLiveGameCard-DSmQcUMh.js +1225 -0
  6. package/dist/chunks/TanksLiveGameCard-DSmQcUMh.js.map +1 -0
  7. package/dist/chunks/{WebRtcLab-lijo_Rta.js → WebRtcLab-ClRSYt4E.js} +2 -2
  8. package/dist/chunks/{WebRtcLab-lijo_Rta.js.map → WebRtcLab-ClRSYt4E.js.map} +1 -1
  9. package/dist/chunks/avalancheScene3d-Dnl2E3EA.js +1878 -0
  10. package/dist/chunks/avalancheScene3d-Dnl2E3EA.js.map +1 -0
  11. package/dist/chunks/createLiveScene-819NWv84.js +365 -0
  12. package/dist/chunks/createLiveScene-819NWv84.js.map +1 -0
  13. package/dist/chunks/createPeerLink-DBVs_yvQ.js +1136 -0
  14. package/dist/chunks/createPeerLink-DBVs_yvQ.js.map +1 -0
  15. package/dist/chunks/{createTankScene-CV7Brxmt.js → createTankScene-6asWHKFf.js} +120 -119
  16. package/dist/chunks/{createTankScene-CV7Brxmt.js.map → createTankScene-6asWHKFf.js.map} +1 -1
  17. package/dist/chunks/fx-BNJvJYOu.js +871 -0
  18. package/dist/chunks/fx-BNJvJYOu.js.map +1 -0
  19. package/dist/chunks/tank-DIn6Jyt8.js +605 -0
  20. package/dist/chunks/tank-DIn6Jyt8.js.map +1 -0
  21. package/dist/index.js +1581 -1184
  22. package/dist/index.js.map +1 -1
  23. package/dist/styles.css +1 -1
  24. package/index.d.ts +23 -3
  25. package/package.json +1 -1
  26. package/dist/chunks/TanksLiveGameCard-BNJqWt1z.js +0 -915
  27. package/dist/chunks/TanksLiveGameCard-BNJqWt1z.js.map +0 -1
  28. package/dist/chunks/createLiveScene-CJQtq54t.js +0 -364
  29. package/dist/chunks/createLiveScene-CJQtq54t.js.map +0 -1
  30. package/dist/chunks/createPeerLink-CL7VZuHS.js +0 -480
  31. package/dist/chunks/createPeerLink-CL7VZuHS.js.map +0 -1
  32. package/dist/chunks/fx-BHsl4S_J.js +0 -1470
  33. package/dist/chunks/fx-BHsl4S_J.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tank-DIn6Jyt8.js","names":["GeoBuilder","lin","Color","hex","clamp","v","a","b","clamp01","smooth","t","x","e0","e1","DEG","dampK","rate","dt","wrapPi","hash2","s","y","rng","seed","canvas","c","w","h","tex","CanvasTexture","LinearFilter","repeat","RepeatWrapping","glowTexture","size","g","grd","smokeTexture","rand","i","d","rr","ringTexture","blobTexture","trackTexture","TANK_SCALE","TEAM","W","W2","G","D","M","K","TRACK_Z","TRACK_W","WHEEL_R","WHEEL_X","SPROCKET","IDLER","TRACK_TILE","TURRET_PIVOT","Vector3","GUN_PIVOT","MUZZLE","sec","z","yb","zb","yt","loft","cx","cy","n","r","rings","p","ins","A","B","m","k","k1","a0","a1","b0","b1","isTop","topColor","color","glow","p0","p1","cylX","x0","x1","seg","r0","r1","cylZ","z0","z1","buildHull","buildHullAccent","buildLamps","buildTurret","buildTurretAccent","buildGun","buildWheel","L","zz","buildTrack","pts","arc","lens","P","Nn","UV","side","y0","y1","nx","ny","l","u0","u1","quad","q","BufferGeometry","BufferAttribute","WHEELS","list","createTankGeometries","CHAR","CHAR_ACCENT","createTank","team","root","Group","body","turret","gun","accentMat","MeshBasicMaterial","trackTex","shared","bodyMat","trackMat","hull","Mesh","geos","hullAccent","lamps","track","turretMesh","turretAccent","gunMesh","casters","makeMaterials","MeshLambertMaterial","DoubleSide","MeshStandardMaterial","state","applyCharred","quality","up","nrm","qTilt","Quaternion","qYaw","tiltTarget","tiltInit","place","terrain","setCharred","on","setFlash","setShadows","tmpM","Matrix4","tmpQ","tmpP","tmpS","zAxis","writeWheels","mesh","offset","out","createTankShared"],"sources":["../../src/games/tanks/scene/util.js","../../src/games/tanks/scene/tank.js"],"sourcesContent":["// Shared helpers for the tanks scene (pure, no per-frame allocations).\nimport { CanvasTexture, Color, LinearFilter, RepeatWrapping } from 'three'\n\nexport const lin = (hex) => new Color(hex).convertSRGBToLinear()\nexport const clamp = (v, a, b) => (v < a ? a : v > b ? b : v)\nexport const clamp01 = (v) => (v < 0 ? 0 : v > 1 ? 1 : v)\nexport const lerp = (a, b, t) => a + (b - a) * t\nexport const smooth = (e0, e1, x) => {\n const t = clamp01((x - e0) / (e1 - e0))\n return t * t * (3 - 2 * t)\n}\nexport const DEG = Math.PI / 180\n// exponential damping factor for frame-rate independent smoothing\nexport const dampK = (rate, dt) => 1 - Math.exp(-rate * dt)\nexport const wrapPi = (a) => {\n while (a > Math.PI) a -= Math.PI * 2\n while (a < -Math.PI) a += Math.PI * 2\n return a\n}\n// deterministic hash in [0,1)\nexport const hash2 = (x, y) => {\n const s = Math.sin(x * 127.1 + y * 311.7) * 43758.5453\n return s - Math.floor(s)\n}\n\n// Tiny seeded PRNG for decor jitter (stable across rebuilds).\nexport function rng(seed) {\n let s = seed >>> 0 || 1\n return () => {\n s ^= s << 13\n s ^= s >>> 17\n s ^= s << 5\n return (s >>> 0) / 4294967296\n }\n}\n\nfunction canvas(w, h) {\n const c = document.createElement('canvas')\n c.width = w\n c.height = h\n return c\n}\n\nfunction tex(c, repeat = false) {\n const t = new CanvasTexture(c)\n t.minFilter = LinearFilter\n t.magFilter = LinearFilter\n t.generateMipmaps = false\n if (repeat) {\n t.wrapS = RepeatWrapping\n t.wrapT = RepeatWrapping\n }\n return t\n}\n\n// Soft radial glow (white, alpha falloff) for additive sprites/points.\nexport function glowTexture(size = 64) {\n const c = canvas(size, size)\n const g = c.getContext('2d')\n const r = size / 2\n const grd = g.createRadialGradient(r, r, 0, r, r, r)\n grd.addColorStop(0, 'rgba(255,255,255,1)')\n grd.addColorStop(0.18, 'rgba(255,255,255,0.85)')\n grd.addColorStop(0.45, 'rgba(255,255,255,0.32)')\n grd.addColorStop(1, 'rgba(255,255,255,0)')\n g.fillStyle = grd\n g.fillRect(0, 0, size, size)\n return tex(c)\n}\n\n// Puffy smoke blob: several overlapping soft circles (alpha only).\nexport function smokeTexture(size = 64) {\n const c = canvas(size, size)\n const g = c.getContext('2d')\n const r = size / 2\n const rand = rng(7)\n for (let i = 0; i < 7; i++) {\n const a = rand() * Math.PI * 2\n const d = rand() * r * 0.32\n const x = r + Math.cos(a) * d\n const y = r + Math.sin(a) * d\n const rr = r * (0.45 + rand() * 0.25)\n const grd = g.createRadialGradient(x, y, 0, x, y, rr)\n grd.addColorStop(0, 'rgba(255,255,255,0.55)')\n grd.addColorStop(0.6, 'rgba(255,255,255,0.25)')\n grd.addColorStop(1, 'rgba(255,255,255,0)')\n g.fillStyle = grd\n g.fillRect(0, 0, size, size)\n }\n return tex(c)\n}\n\n// Thin bright ring for shockwaves / target markers.\nexport function ringTexture(size = 128) {\n const c = canvas(size, size)\n const g = c.getContext('2d')\n const r = size / 2\n const grd = g.createRadialGradient(r, r, 0, r, r, r)\n grd.addColorStop(0, 'rgba(255,255,255,0)')\n grd.addColorStop(0.62, 'rgba(255,255,255,0)')\n grd.addColorStop(0.8, 'rgba(255,255,255,0.55)')\n grd.addColorStop(0.9, 'rgba(255,255,255,1)')\n grd.addColorStop(1, 'rgba(255,255,255,0)')\n g.fillStyle = grd\n g.fillRect(0, 0, size, size)\n return tex(c)\n}\n\n// Blob shadow (dark center, soft edge).\nexport function blobTexture(size = 64) {\n const c = canvas(size, size)\n const g = c.getContext('2d')\n const r = size / 2\n const grd = g.createRadialGradient(r, r, 0, r, r, r)\n grd.addColorStop(0, 'rgba(0,0,0,0.6)')\n grd.addColorStop(0.55, 'rgba(0,0,0,0.38)')\n grd.addColorStop(1, 'rgba(0,0,0,0)')\n g.fillStyle = grd\n g.fillRect(0, 0, size, size)\n return tex(c)\n}\n\n// Track tread strip: u runs along the track loop, v across its width.\nexport function trackTexture() {\n const c = canvas(64, 32)\n const g = c.getContext('2d')\n g.fillStyle = '#3b3b3e'\n g.fillRect(0, 0, 64, 32)\n for (let i = 0; i < 4; i++) {\n const x = i * 16\n g.fillStyle = '#1b1b1d'\n g.fillRect(x, 0, 6, 32)\n g.fillStyle = '#5a5a5f'\n g.fillRect(x + 6, 0, 2, 32)\n g.fillStyle = '#2a2a2d'\n g.fillRect(x + 8, 13, 8, 6)\n }\n g.fillStyle = 'rgba(0,0,0,0.35)'\n g.fillRect(0, 0, 64, 3)\n g.fillRect(0, 29, 64, 3)\n return tex(c, true)\n}\n","// Procedural low-poly tank. Geometry is built once and shared by every tank; each tank only\n// owns its materials (team tint, accent glow, track texture offset).\n// Local frame: +x forward, +y up, +z right side. Units: meters before TANK_SCALE.\nimport {\n BufferAttribute,\n BufferGeometry,\n DoubleSide,\n Group,\n Matrix4,\n Mesh,\n MeshBasicMaterial,\n MeshLambertMaterial,\n MeshStandardMaterial,\n Quaternion,\n Vector3,\n} from 'three'\nimport { GeoBuilder } from '../../battleship/scene/core-geo.js'\nimport { lin, trackTexture } from './util.js'\n\nexport const TANK_SCALE = 1.15\nexport const TEAM = {\n green: { tint: lin('#7fa35c'), accent: lin('#22c55e'), hex: '#22c55e' },\n red: { tint: lin('#b8584a'), accent: lin('#ef4444'), hex: '#ef4444' },\n}\nconst W = lin('#e9e6dc') // body panel (tinted by material color)\nconst W2 = lin('#c9c4b6')\nconst G = lin('#6d6a64') // darker panel\nconst D = lin('#2a2927') // grille / dark\nconst M = lin('#55565b') // metal (barrel ends)\nconst K = lin('#ffffff')\n\nconst TRACK_Z = 1.35\nconst TRACK_W = 0.74\nconst WHEEL_R = 0.36\nconst WHEEL_X = [-2.1, -1.05, 0, 1.05, 2.1]\nconst SPROCKET = [2.85, 0.62, 0.3]\nconst IDLER = [-2.85, 0.62, 0.3]\nconst TRACK_TILE = 0.9 // meters of track per texture repeat\n\nexport const TURRET_PIVOT = new Vector3(-0.35, 1.6, 0)\nexport const GUN_PIVOT = new Vector3(1.55, 0.42, 0)\nexport const MUZZLE = new Vector3(4.7, 0, 0)\n\n// hexagonal section (y,z): bottom edge, vertical sides, bevelled top\nconst sec = (yb, yt, z, b, zb = z) => [\n [yb, -zb],\n [yb, zb],\n [yt - b, z],\n [yt, z - b * 1.6],\n [yt, -(z - b * 1.6)],\n [yt - b, -z],\n]\n\n// Loft rings along x (each ring same point count) + end caps.\nfunction loft(b, rings, color, glow = 0, topColor = null) {\n let cx = 0, cy = 0, n = 0\n for (const r of rings) for (const p of r.pts) { cx += r.x; cy += p[0]; n++ }\n const ins = [cx / n, cy / n, 0]\n for (let i = 0; i < rings.length - 1; i++) {\n const A = rings[i], B = rings[i + 1]\n const m = A.pts.length\n for (let k = 0; k < m; k++) {\n const k1 = (k + 1) % m\n const a0 = [A.x, A.pts[k][0], A.pts[k][1]]\n const a1 = [A.x, A.pts[k1][0], A.pts[k1][1]]\n const b0 = [B.x, B.pts[k][0], B.pts[k][1]]\n const b1 = [B.x, B.pts[k1][0], B.pts[k1][1]]\n const isTop = topColor && A.pts[k][0] === A.pts[k1][0] && A.pts[k][0] > ins[1]\n b.quad(a0, a1, b1, b0, ins, isTop ? topColor : color, glow)\n }\n }\n for (const r of [rings[0], rings[rings.length - 1]]) {\n const c = [r.x, 0, 0]\n for (const p of r.pts) c[1] += p[0] / r.pts.length\n for (let k = 0; k < r.pts.length; k++) {\n const p0 = r.pts[k], p1 = r.pts[(k + 1) % r.pts.length]\n b.tri(c, [r.x, p0[0], p0[1]], [r.x, p1[0], p1[1]], ins, color, glow)\n }\n }\n}\n\n// Cylinder along x.\nfunction cylX(b, x0, x1, r0, r1, seg, color, y = 0, z = 0, glow = 0) {\n const ins = [(x0 + x1) / 2, y, z]\n for (let i = 0; i < seg; i++) {\n const a0 = (i / seg) * Math.PI * 2 + Math.PI / seg\n const a1 = ((i + 1) / seg) * Math.PI * 2 + Math.PI / seg\n const p = (x, r, a) => [x, y + Math.cos(a) * r, z + Math.sin(a) * r]\n b.quad(p(x0, r0, a0), p(x0, r0, a1), p(x1, r1, a1), p(x1, r1, a0), ins, color, glow)\n b.tri([x0, y, z], p(x0, r0, a0), p(x0, r0, a1), [x1, y, z], color, glow)\n b.tri([x1, y, z], p(x1, r1, a0), p(x1, r1, a1), [x0, y, z], color, glow)\n }\n}\n\n// Cylinder along z centred at origin (wheel).\nfunction cylZ(b, z0, z1, r, seg, color, cx = 0, cy = 0) {\n const ins = [cx, cy, (z0 + z1) / 2]\n for (let i = 0; i < seg; i++) {\n const a0 = (i / seg) * Math.PI * 2\n const a1 = ((i + 1) / seg) * Math.PI * 2\n const p = (z, a) => [cx + Math.cos(a) * r, cy + Math.sin(a) * r, z]\n b.quad(p(z0, a0), p(z0, a1), p(z1, a1), p(z1, a0), ins, color)\n b.tri([cx, cy, z0], p(z0, a0), p(z0, a1), [cx, cy, z1], color)\n b.tri([cx, cy, z1], p(z1, a0), p(z1, a1), [cx, cy, z0], color)\n }\n}\n\nfunction buildHull() {\n const b = new GeoBuilder()\n // lower hull between the tracks\n loft(b, [\n { x: -3.0, pts: [[0.5, -0.9], [0.5, 0.9], [1.0, 0.98], [1.0, -0.98]] },\n { x: 2.55, pts: [[0.45, -0.9], [0.45, 0.9], [1.0, 0.98], [1.0, -0.98]] },\n { x: 3.15, pts: [[0.85, -0.85], [0.85, 0.85], [1.0, 0.95], [1.0, -0.95]] },\n ], G)\n // upper hull / deck over the tracks with sloped glacis\n loft(b, [\n { x: -3.15, pts: sec(0.98, 1.48, 1.68, 0.1) },\n { x: -2.95, pts: sec(0.95, 1.6, 1.8, 0.14) },\n { x: 1.85, pts: sec(0.95, 1.6, 1.8, 0.14) },\n { x: 3.3, pts: sec(0.95, 1.1, 1.72, 0.06) },\n ], W, 0, W2)\n // engine deck grilles + exhausts\n b.box(-2.2, 1.62, 0, 1.1, 0.05, 1.7, D)\n for (let i = 0; i < 4; i++) b.box(-2.65 + i * 0.3, 1.66, 0, 0.12, 0.03, 1.6, G)\n b.box(-3.18, 1.22, 0.9, 0.12, 0.28, 0.5, D)\n b.box(-3.18, 1.22, -0.9, 0.12, 0.28, 0.5, D)\n // side skirts (cover the upper run of the tracks)\n for (const s of [-1, 1]) {\n loft(b, [\n { x: -2.95, pts: [[0.62, s * 1.82], [0.98, s * 1.8], [0.98, s * 1.88], [0.62, s * 1.9]] },\n { x: 2.35, pts: [[0.62, s * 1.82], [0.98, s * 1.8], [0.98, s * 1.88], [0.62, s * 1.9]] },\n ], W2)\n // fender storage boxes\n b.box(-1.3, 1.72, s * 1.4, 1.3, 0.24, 0.5, G)\n b.box(0.7, 1.7, s * 1.45, 0.7, 0.2, 0.4, W2)\n // tow hooks / front bumpers\n b.box(3.2, 0.92, s * 1.25, 0.25, 0.14, 0.22, D)\n }\n // driver hatch\n b.prism(1.35, 1.6, 0.55, 0.32, 0.32, 0.08, 6, G)\n b.box(1.8, 1.61, -0.45, 0.35, 0.06, 0.5, D)\n return b.build()\n}\n\nfunction buildHullAccent() {\n const b = new GeoBuilder()\n for (const s of [-1, 1]) {\n b.box(-0.3, 1.0, s * 1.905, 5.0, 0.07, 0.03, K, 1) // skirt top stripe\n b.box(-0.3, 0.66, s * 1.915, 5.0, 0.04, 0.03, K, 1)\n b.box(-3.19, 1.4, s * 1.3, 0.04, 0.12, 0.4, K, 1) // rear lights\n }\n b.box(2.9, 1.24, 0, 0.6, 0.02, 0.22, K, 1) // glacis chevron\n return b.build()\n}\n\nfunction buildLamps() {\n const b = new GeoBuilder()\n for (const s of [-1, 1]) {\n b.box(3.24, 1.16, s * 1.3, 0.12, 0.16, 0.26, K, 1)\n }\n return b.build()\n}\n\nfunction buildTurret() {\n const b = new GeoBuilder()\n loft(b, [\n { x: -2.25, pts: sec(0.05, 0.62, 1.0, 0.1, 0.95) },\n { x: -1.55, pts: sec(0.0, 0.8, 1.32, 0.14, 1.25) },\n { x: 0.85, pts: sec(0.0, 0.8, 1.35, 0.14, 1.28) },\n { x: 1.75, pts: sec(0.05, 0.55, 0.85, 0.08, 0.95) },\n ], W, 0, W2)\n // ring base\n b.prism(-0.2, -0.08, 0, 1.15, 1.15, 0.1, 10, D)\n // commander cupola + hatch\n b.prism(-0.75, 0.8, 0.55, 0.4, 0.4, 0.22, 8, G, 0, 0.9)\n b.prism(-0.75, 1.02, 0.55, 0.3, 0.3, 0.07, 8, W2)\n b.box(-0.2, 0.86, -0.6, 0.6, 0.1, 0.45, G)\n // gunner sight\n b.box(0.55, 0.92, -0.75, 0.42, 0.26, 0.3, G)\n b.box(0.77, 0.94, -0.75, 0.02, 0.16, 0.22, D)\n // bustle rack\n b.box(-2.3, 0.45, 0, 0.32, 0.4, 1.7, D)\n // smoke dischargers\n for (const s of [-1, 1]) {\n for (let i = 0; i < 3; i++) b.box(1.0 - i * 0.12, 0.58, s * (1.18 + i * 0.03), 0.22, 0.12, 0.12, G)\n }\n // antenna\n b.box(-1.85, 1.5, -0.85, 0.04, 1.5, 0.04, D)\n return b.build()\n}\n\nfunction buildTurretAccent() {\n const b = new GeoBuilder()\n for (const s of [-1, 1]) {\n b.box(-0.35, 0.42, s * 1.34, 2.3, 0.1, 0.03, K, 1)\n }\n b.box(-2.42, 0.45, 0, 0.03, 0.08, 1.6, K, 1)\n b.box(-1.85, 2.27, -0.85, 0.08, 0.08, 0.08, K, 1) // antenna tip\n return b.build()\n}\n\nfunction buildGun() {\n const b = new GeoBuilder()\n // mantlet\n loft(b, [\n { x: -0.05, pts: [[-0.32, -0.5], [-0.32, 0.5], [0.3, 0.5], [0.3, -0.5]] },\n { x: 0.55, pts: [[-0.22, -0.36], [-0.22, 0.36], [0.22, 0.36], [0.22, -0.36]] },\n ], G)\n cylX(b, 0.5, 4.3, 0.15, 0.12, 10, W2)\n cylX(b, 1.9, 2.55, 0.21, 0.21, 10, G)\n cylX(b, 4.25, 4.7, 0.19, 0.19, 8, M)\n b.box(4.47, 0, 0, 0.18, 0.3, 0.46, D)\n return b.build()\n}\n\nfunction buildWheel() {\n const b = new GeoBuilder()\n const h = TRACK_W * 0.42\n cylZ(b, -h, h, WHEEL_R, 10, D)\n cylZ(b, h - 0.01, h + 0.04, WHEEL_R * 0.66, 10, W2)\n cylZ(b, -h - 0.04, -h + 0.01, WHEEL_R * 0.66, 10, W2)\n // spokes (make rotation readable)\n for (let i = 0; i < 3; i++) {\n const a = (i / 3) * Math.PI\n const c = Math.cos(a), s = Math.sin(a)\n const L = WHEEL_R * 0.55\n const w = 0.07\n const zf = h + 0.06\n for (const zz of [zf, -zf]) {\n const ins = [0, 0, zz > 0 ? zz - 0.1 : zz + 0.1]\n b.quad(\n [-c * L - s * w, -s * L + c * w, zz],\n [c * L - s * w, s * L + c * w, zz],\n [c * L + s * w, s * L - c * w, zz],\n [-c * L + s * w, -s * L - c * w, zz],\n ins,\n G,\n )\n }\n }\n cylZ(b, -h - 0.08, h + 0.08, 0.08, 6, M)\n return b.build()\n}\n\n// Track loop (outer surface only) with uv along the loop.\nfunction buildTrack() {\n const pts = []\n const arc = (cx, cy, r, a0, a1, n) => {\n for (let i = 0; i <= n; i++) {\n const a = a0 + ((a1 - a0) * i) / n\n pts.push([cx + Math.cos(a) * r, cy + Math.sin(a) * r])\n }\n }\n const rr = 0.38\n pts.push([-2.1, -0.0])\n pts.push([2.1, -0.0])\n arc(SPROCKET[0], SPROCKET[1], rr, -2.0, Math.PI / 2, 6)\n arc(IDLER[0], IDLER[1], rr, Math.PI / 2, Math.PI + 2.0, 6)\n pts.push(pts[0])\n const lens = [0]\n for (let i = 1; i < pts.length; i++) {\n lens.push(lens[i - 1] + Math.hypot(pts[i][0] - pts[i - 1][0], pts[i][1] - pts[i - 1][1]))\n }\n const P = [], Nn = [], UV = []\n for (const side of [-1, 1]) {\n const z0 = side * TRACK_Z - TRACK_W / 2\n const z1 = side * TRACK_Z + TRACK_W / 2\n for (let i = 0; i < pts.length - 1; i++) {\n const [x0, y0] = pts[i]\n const [x1, y1] = pts[i + 1]\n // loop is CCW in (x,y) seen from +z → outward normal = (dy, -dx)\n let nx = y1 - y0, ny = -(x1 - x0)\n const l = Math.hypot(nx, ny) || 1\n nx /= l\n ny /= l\n const u0 = lens[i] / TRACK_TILE\n const u1 = lens[i + 1] / TRACK_TILE\n const quad = [\n [x0, y0, z0, u0, 0], [x1, y1, z0, u1, 0], [x1, y1, z1, u1, 1],\n [x0, y0, z0, u0, 0], [x1, y1, z1, u1, 1], [x0, y0, z1, u0, 1],\n ]\n for (const q of quad) {\n P.push(q[0], q[1] + 0.02, q[2])\n Nn.push(nx, ny, 0)\n UV.push(q[3], q[4])\n }\n }\n }\n const g = new BufferGeometry()\n g.setAttribute('position', new BufferAttribute(new Float32Array(P), 3))\n g.setAttribute('normal', new BufferAttribute(new Float32Array(Nn), 3))\n g.setAttribute('uv', new BufferAttribute(new Float32Array(UV), 2))\n g.computeBoundingSphere()\n return g\n}\n\n// Local wheel transforms (position + radius scale) for one tank: 14 wheels.\nexport const WHEELS = (() => {\n const list = []\n for (const s of [-1, 1]) {\n for (const x of WHEEL_X) list.push({ x, y: WHEEL_R, z: s * TRACK_Z, r: WHEEL_R })\n list.push({ x: SPROCKET[0], y: SPROCKET[1], z: s * TRACK_Z, r: SPROCKET[2] })\n list.push({ x: IDLER[0], y: IDLER[1], z: s * TRACK_Z, r: IDLER[2] })\n }\n return list\n})()\n\nexport function createTankGeometries() {\n const g = {\n hull: buildHull(),\n hullAccent: buildHullAccent(),\n lamps: buildLamps(),\n turret: buildTurret(),\n turretAccent: buildTurretAccent(),\n gun: buildGun(),\n wheel: buildWheel(),\n track: buildTrack(),\n }\n g.dispose = () => {\n for (const k of Object.keys(g)) if (g[k] && g[k].isBufferGeometry) g[k].dispose()\n }\n return g\n}\n\nconst CHAR = lin('#3a3431')\nconst CHAR_ACCENT = lin('#2a201b')\n\n/** One tank instance (scene graph + own materials). */\nexport function createTank(geos, shared, { id, color = 'green', quality = 'high' }) {\n const team = TEAM[color] || TEAM.green\n const root = new Group()\n root.scale.setScalar(TANK_SCALE)\n const body = new Group() // tilt + hull yaw\n root.add(body)\n const turret = new Group()\n turret.position.copy(TURRET_PIVOT)\n const gun = new Group()\n gun.position.copy(GUN_PIVOT)\n turret.add(gun)\n body.add(turret)\n\n const accentMat = new MeshBasicMaterial({ color: team.accent.clone() })\n accentMat.color.multiplyScalar(1.35)\n const trackTex = shared.trackTex.clone()\n trackTex.needsUpdate = true\n let bodyMat = null\n let trackMat = null\n\n const hull = new Mesh(geos.hull, null)\n const hullAccent = new Mesh(geos.hullAccent, accentMat)\n const lamps = new Mesh(geos.lamps, shared.lampMat)\n const track = new Mesh(geos.track, null)\n const turretMesh = new Mesh(geos.turret, null)\n const turretAccent = new Mesh(geos.turretAccent, accentMat)\n const gunMesh = new Mesh(geos.gun, null)\n body.add(hull, hullAccent, lamps, track)\n turret.add(turretMesh, turretAccent)\n gun.add(gunMesh)\n const casters = [hull, track, turretMesh, gunMesh]\n\n function makeMaterials(q) {\n if (bodyMat) bodyMat.dispose()\n if (trackMat) trackMat.dispose()\n if (q === 'low') {\n bodyMat = new MeshLambertMaterial({ vertexColors: true, color: team.tint.clone() })\n trackMat = new MeshLambertMaterial({ map: trackTex, color: lin('#9a9a9a'), side: DoubleSide })\n } else {\n bodyMat = new MeshStandardMaterial({\n vertexColors: true,\n color: team.tint.clone(),\n roughness: 0.62,\n metalness: 0.18,\n flatShading: true,\n })\n trackMat = new MeshStandardMaterial({\n map: trackTex,\n color: lin('#a0a0a0'),\n roughness: 0.85,\n metalness: 0.2,\n side: DoubleSide,\n })\n }\n hull.material = bodyMat\n turretMesh.material = bodyMat\n gunMesh.material = bodyMat\n track.material = trackMat\n if (state.charred) applyCharred()\n }\n\n const state = {\n id,\n color,\n alive: true,\n charred: false,\n hp: 100,\n maxHp: 100,\n x: 0,\n y: 0,\n z: 0,\n hullYaw: 0, // deg\n yaw: 0, // turret absolute deg\n pitch: 10, // deg\n targetYaw: null,\n targetPitch: null,\n recoil: 0,\n hitFlash: 0,\n trackDist: 0,\n wheelSpin: 0,\n smokeAcc: 0,\n blown: null, // { pos:Vector3, vel:Vector3, rot:Vector3, spin:Vector3, landed }\n }\n\n function applyCharred() {\n bodyMat.color.copy(CHAR)\n accentMat.color.copy(CHAR_ACCENT)\n lamps.visible = false\n if (trackMat) trackMat.color.copy(lin('#3a3836'))\n }\n\n makeMaterials(quality)\n\n const up = new Vector3(0, 1, 0)\n const nrm = new Vector3()\n const qTilt = new Quaternion()\n const qYaw = new Quaternion()\n const tiltTarget = new Quaternion()\n let tiltInit = false\n\n /** Place hull on terrain: position + tilt from terrain normal. */\n function place(terrain, dt = 0) {\n root.position.set(state.x, state.y, state.z)\n terrain.normalAt(state.x, state.z, nrm, 2.2)\n tiltTarget.setFromUnitVectors(up, nrm)\n if (!tiltInit || dt <= 0) {\n qTilt.copy(tiltTarget)\n tiltInit = true\n } else {\n qTilt.slerp(tiltTarget, 1 - Math.exp(-10 * dt))\n }\n qYaw.setFromAxisAngle(up, (-state.hullYaw * Math.PI) / 180)\n body.quaternion.copy(qTilt).multiply(qYaw)\n turret.rotation.y = (-(state.yaw - state.hullYaw) * Math.PI) / 180\n gun.rotation.z = (state.pitch * Math.PI) / 180\n gun.position.x = GUN_PIVOT.x - state.recoil * 0.55\n }\n\n function setCharred(on) {\n if (state.charred === on) return\n state.charred = on\n if (on) applyCharred()\n else {\n bodyMat.color.copy(team.tint)\n accentMat.color.copy(team.accent).multiplyScalar(1.35)\n lamps.visible = true\n trackMat.color.copy(lin(quality === 'low' ? '#9a9a9a' : '#a0a0a0'))\n }\n }\n\n function setFlash(k) {\n bodyMat.emissive.setRGB(1.0 * k, 0.45 * k, 0.2 * k)\n }\n\n function setShadows(on) {\n for (const m of casters) {\n m.castShadow = on\n m.receiveShadow = on\n }\n }\n\n const tmpM = new Matrix4()\n const tmpQ = new Quaternion()\n const tmpP = new Vector3()\n const tmpS = new Vector3()\n const zAxis = new Vector3(0, 0, 1)\n /** Write 14 wheel matrices into an InstancedMesh starting at offset. */\n function writeWheels(mesh, offset) {\n body.updateWorldMatrix(true, false)\n for (let i = 0; i < WHEELS.length; i++) {\n const w = WHEELS[i]\n tmpQ.setFromAxisAngle(zAxis, -state.trackDist / w.r)\n tmpS.setScalar(w.r / WHEEL_R)\n tmpP.set(w.x, w.y, w.z)\n tmpM.compose(tmpP, tmpQ, tmpS)\n tmpM.premultiply(body.matrixWorld)\n mesh.setMatrixAt(offset + i, tmpM)\n }\n }\n\n return {\n id,\n team,\n root,\n body,\n turret,\n gun,\n turretMesh,\n turretAccent,\n state,\n trackTex,\n place,\n setCharred,\n setFlash,\n setShadows,\n writeWheels,\n setQuality(q) {\n quality = q\n makeMaterials(q)\n },\n scrollTracks(d) {\n state.trackDist += d\n trackTex.offset.x = -state.trackDist / TRACK_TILE\n },\n muzzleWorld(out) {\n gun.updateWorldMatrix(true, false)\n return out.copy(MUZZLE).applyMatrix4(gun.matrixWorld)\n },\n gunDirWorld(out) {\n gun.updateWorldMatrix(true, false)\n return out.set(1, 0, 0).transformDirection(gun.matrixWorld)\n },\n localToWorld(out, x, y, z) {\n body.updateWorldMatrix(true, false)\n return out.set(x, y, z).applyMatrix4(body.matrixWorld)\n },\n dispose() {\n bodyMat.dispose()\n trackMat.dispose()\n accentMat.dispose()\n trackTex.dispose()\n root.removeFromParent()\n },\n }\n}\n\nexport function createTankShared() {\n return {\n trackTex: trackTexture(),\n lampMat: new MeshBasicMaterial({ color: lin('#fff1c2').multiplyScalar(1.6) }),\n dispose() {\n this.trackTex.dispose()\n this.lampMat.dispose()\n },\n }\n}\n"],"mappings":";;;AAGA,IAAaC,KAAO,MAAQ,IAAIC,EAAMC,CAAG,CAAC,CAAC,oBAAoB,GAClDC,KAAS,GAAG,GAAG,MAAOC,IAAIC,IAAIA,IAAID,IAAIE,IAAIA,IAAIF,GAC9CG,KAAW,MAAOH,IAAI,IAAI,IAAIA,IAAI,IAAI,IAAIA,GAE1CI,KAAU,GAAI,GAAI,MAAM;CACnC,IAAMC,IAAIF,GAASG,IAAIC,MAAOC,IAAKD,EAAG;CACtC,OAAOF,IAAIA,KAAK,IAAI,IAAIA;AAC1B,GACaI,IAAM,KAAK,KAAK,KAEhBC,KAAS,GAAM,MAAO,IAAI,KAAK,IAAI,CAACC,IAAOC,CAAE,GAC7CC,KAAU,MAAM;CAC3B,OAAOZ,IAAI,KAAK,KAAI,KAAK,KAAK,KAAK;CACnC,OAAOA,IAAI,CAAC,KAAK,KAAI,KAAK,KAAK,KAAK;CACpC,OAAOA;AACT,GAEaa,KAAS,GAAG,MAAM;CAC7B,IAAMC,IAAI,KAAK,IAAIT,IAAI,QAAQU,IAAI,KAAK,IAAI;CAC5C,OAAOD,IAAI,KAAK,MAAMA,CAAC;AACzB;AAGA,SAAgBE,EAAI,GAAM;CACxB,IAAIF,IAAIG,MAAS,KAAK;CACtB,cACE,KAAKH,KAAK,IACV,KAAKA,MAAM,IACX,KAAKA,KAAK,IACFA,MAAM,KAAK;AAEvB;AAEA,SAASI,EAAO,GAAG,GAAG;CACpB,IAAMC,IAAI,SAAS,cAAc,QAAQ;CAGzC,OAFA,EAAE,QAAQC,GACV,EAAE,SAASC,GACJF;AACT;AAEA,SAASG,EAAI,GAAG,IAAS,IAAO;CAC9B,IAAMlB,IAAI,IAAImB,EAAcJ,CAAC;CAQ7B,OAPA,EAAE,YAAYK,GACd,EAAE,YAAYA,GACd,EAAE,kBAAkB,IAChBC,MACF,EAAE,QAAQC,GACV,EAAE,QAAQA,IAELtB;AACT;AAGA,SAAgBuB,EAAY,IAAO,IAAI;CACrC,IAAMR,IAAID,EAAOU,GAAMA,CAAI,GACrBC,IAAIV,EAAE,WAAW,IAAI,GACrB,IAAIS,IAAO,GACXE,IAAMD,EAAE,qBAAqB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAOnD,OANAC,EAAI,aAAa,GAAG,qBAAqB,GACzCA,EAAI,aAAa,KAAM,wBAAwB,GAC/CA,EAAI,aAAa,KAAM,wBAAwB,GAC/CA,EAAI,aAAa,GAAG,qBAAqB,GACzC,EAAE,YAAYA,GACdD,EAAE,SAAS,GAAG,GAAGD,GAAMA,CAAI,GACpBN,EAAIH,CAAC;AACd;AAGA,SAAgBY,EAAa,IAAO,IAAI;CACtC,IAAMZ,IAAID,EAAOU,GAAMA,CAAI,GACrBC,IAAIV,EAAE,WAAW,IAAI,GACrB,IAAIS,IAAO,GACXI,IAAOhB,EAAI,CAAC;CAClB,KAAK,IAAIiB,IAAI,GAAGA,IAAI,GAAG,KAAK;EAC1B,IAAMjC,IAAIgC,EAAK,IAAI,KAAK,KAAK,GACvBE,IAAIF,EAAK,IAAI,IAAI,KACjB3B,IAAI,IAAI,KAAK,IAAIL,CAAC,IAAIkC,GACtBnB,IAAI,IAAI,KAAK,IAAIf,CAAC,IAAIkC,GACtBC,IAAK,KAAK,MAAOH,EAAK,IAAI,MAC1BF,IAAMD,EAAE,qBAAqBxB,GAAGU,GAAG,GAAGV,GAAGU,GAAGoB,CAAE;EAKpD,AAJAL,EAAI,aAAa,GAAG,wBAAwB,GAC5CA,EAAI,aAAa,IAAK,wBAAwB,GAC9CA,EAAI,aAAa,GAAG,qBAAqB,GACzC,EAAE,YAAYA,GACdD,EAAE,SAAS,GAAG,GAAGD,GAAMA,CAAI;CAC7B;CACA,OAAON,EAAIH,CAAC;AACd;AAGA,SAAgBiB,EAAY,IAAO,KAAK;CACtC,IAAMjB,IAAID,EAAOU,GAAMA,CAAI,GACrBC,IAAIV,EAAE,WAAW,IAAI,GACrB,IAAIS,IAAO,GACXE,IAAMD,EAAE,qBAAqB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAQnD,OAPAC,EAAI,aAAa,GAAG,qBAAqB,GACzCA,EAAI,aAAa,KAAM,qBAAqB,GAC5CA,EAAI,aAAa,IAAK,wBAAwB,GAC9CA,EAAI,aAAa,IAAK,qBAAqB,GAC3CA,EAAI,aAAa,GAAG,qBAAqB,GACzC,EAAE,YAAYA,GACdD,EAAE,SAAS,GAAG,GAAGD,GAAMA,CAAI,GACpBN,EAAIH,CAAC;AACd;AAGA,SAAgBkB,EAAY,IAAO,IAAI;CACrC,IAAMlB,IAAID,EAAOU,GAAMA,CAAI,GACrBC,IAAIV,EAAE,WAAW,IAAI,GACrB,IAAIS,IAAO,GACXE,IAAMD,EAAE,qBAAqB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAMnD,OALAC,EAAI,aAAa,GAAG,iBAAiB,GACrCA,EAAI,aAAa,KAAM,kBAAkB,GACzCA,EAAI,aAAa,GAAG,eAAe,GACnC,EAAE,YAAYA,GACdD,EAAE,SAAS,GAAG,GAAGD,GAAMA,CAAI,GACpBN,EAAIH,CAAC;AACd;AAGA,SAAgBmB,IAAe;CAC7B,IAAMnB,IAAID,EAAO,IAAI,EAAE,GACjBW,IAAIV,EAAE,WAAW,IAAI;CAE3B,AADA,EAAE,YAAY,WACdU,EAAE,SAAS,GAAG,GAAG,IAAI,EAAE;CACvB,KAAK,IAAII,IAAI,GAAGA,IAAI,GAAG,KAAK;EAC1B,IAAM5B,IAAI4B,IAAI;EAMd,AALA,EAAE,YAAY,WACdJ,EAAE,SAASxB,GAAG,GAAG,GAAG,EAAE,GACtB,EAAE,YAAY,WACdwB,EAAE,SAASxB,IAAI,GAAG,GAAG,GAAG,EAAE,GAC1B,EAAE,YAAY,WACdwB,EAAE,SAASxB,IAAI,GAAG,IAAI,GAAG,CAAC;CAC5B;CAIA,OAHA,EAAE,YAAY,oBACdwB,EAAE,SAAS,GAAG,GAAG,IAAI,CAAC,GACtBA,EAAE,SAAS,GAAG,IAAI,IAAI,CAAC,GAChBP,EAAIH,GAAG,EAAI;AACpB;;AC1HA,IAAaoB,KAAa,MACbC,IAAO;CAClB,OAAO;EAAE,MAAM7C,EAAI,SAAS;EAAG,QAAQA,EAAI,SAAS;EAAG,KAAK;CAAU;CACtE,KAAK;EAAE,MAAMA,EAAI,SAAS;EAAG,QAAQA,EAAI,SAAS;EAAG,KAAK;CAAU;AACtE,GACM8C,IAAI9C,EAAI,SAAS,GACjB+C,IAAK/C,EAAI,SAAS,GAClBgD,IAAIhD,EAAI,SAAS,GACjBiD,IAAIjD,EAAI,SAAS,GACjBkD,IAAIlD,EAAI,SAAS,GACjBmD,IAAInD,EAAI,SAAS,GAEjBoD,IAAU,MACVC,IAAU,KACVC,IAAU,KACVC,IAAU;CAAC;CAAM;CAAO;CAAG;CAAM;AAAG,GACpCC,IAAW;CAAC;CAAM;CAAM;AAAG,GAC3BC,IAAQ;CAAC;CAAO;CAAM;AAAG,GACzBC,IAAa,IAENC,KAAe,IAAIC,EAAQ,MAAO,KAAK,CAAC,GACxCC,IAAY,IAAID,EAAQ,MAAM,KAAM,CAAC,GACrCE,KAAS,IAAIF,EAAQ,KAAK,GAAG,CAAC,GAGrCG,KAAO,GAAI,GAAI,GAAG,GAAG,IAAKC,MAAM;CACpC,CAACC,GAAI,CAACC,CAAE;CACR,CAACD,GAAIC,CAAE;CACP,CAACC,IAAK7D,GAAG0D,CAAC;CACV,CAACG,GAAIH,IAAI1D,IAAI,GAAG;CAChB,CAAC6D,GAAI,EAAEH,IAAI1D,IAAI,IAAI;CACnB,CAAC6D,IAAK7D,GAAG,CAAC0D,CAAC;AACb;AAGA,SAASI,EAAK,GAAG,GAAO,GAAO,IAAO,GAAG,IAAW,MAAM;CACxD,IAAIC,IAAK,GAAGC,IAAK,GAAGC,IAAI;CACxB,KAAK,IAAMC,KAAKC,GAAO,KAAK,IAAMC,KAAKF,EAAE,KAA8B,AAAvB,KAAMA,EAAE,GAAG,KAAME,EAAE,IAAI;CACvE,IAAMC,IAAM;EAACN,IAAKE;EAAGD,IAAKC;EAAG;CAAC;CAC9B,KAAK,IAAIjC,IAAI,GAAGA,IAAImC,EAAM,SAAS,GAAG,KAAK;EACzC,IAAMG,IAAIH,EAAMnC,IAAIuC,IAAIJ,EAAMnC,IAAI,IAC5BwC,IAAIF,EAAE,IAAI;EAChB,KAAK,IAAIG,IAAI,GAAGA,IAAID,GAAG,KAAK;GAC1B,IAAME,KAAMD,IAAI,KAAKD,GACfG,IAAK;IAACL,EAAE;IAAGA,EAAE,IAAIG,EAAE,CAAC;IAAIH,EAAE,IAAIG,EAAE,CAAC;GAAE,GACnCG,IAAK;IAACN,EAAE;IAAGA,EAAE,IAAII,EAAG,CAAC;IAAIJ,EAAE,IAAII,EAAG,CAAC;GAAE,GACrCG,IAAK;IAACN,EAAE;IAAGA,EAAE,IAAIE,EAAE,CAAC;IAAIF,EAAE,IAAIE,EAAE,CAAC;GAAE,GACnCK,IAAK;IAACP,EAAE;IAAGA,EAAE,IAAIG,EAAG,CAAC;IAAIH,EAAE,IAAIG,EAAG,CAAC;GAAE,GACrCK,IAAQC,KAAYV,EAAE,IAAIG,EAAE,CAAC,OAAOH,EAAE,IAAII,EAAG,CAAC,MAAMJ,EAAE,IAAIG,EAAE,CAAC,KAAKJ,EAAI;GAC5E,EAAE,KAAKM,GAAIC,GAAIE,GAAID,GAAIR,GAAKU,IAAQC,IAAWC,GAAOC,CAAI;EAC5D;CACF;CACA,KAAK,IAAMhB,KAAK,CAACC,EAAM,IAAIA,EAAMA,EAAM,SAAS,EAAE,GAAG;EACnD,IAAMjD,IAAI;GAACgD,EAAE;GAAG;GAAG;EAAC;EACpB,KAAK,IAAME,KAAKF,EAAE,KAAK,EAAE,MAAME,EAAE,KAAKF,EAAE,IAAI;EAC5C,KAAK,IAAIO,IAAI,GAAGA,IAAIP,EAAE,IAAI,QAAQ,KAAK;GACrC,IAAMiB,IAAKjB,EAAE,IAAIO,IAAIW,IAAKlB,EAAE,KAAKO,IAAI,KAAKP,EAAE,IAAI;GAChD,EAAE,IAAIhD,GAAG;IAACgD,EAAE;IAAGiB,EAAG;IAAIA,EAAG;GAAE,GAAG;IAACjB,EAAE;IAAGkB,EAAG;IAAIA,EAAG;GAAE,GAAGf,GAAKY,GAAOC,CAAI;EACrE;CACF;AACF;AAGA,SAASG,EAAK,GAAG,GAAI,GAAI,GAAI,GAAI,GAAK,GAAO,IAAI,GAAG,IAAI,GAAG,IAAO,GAAG;CACnE,IAAMhB,IAAM;GAAEiB,IAAKC,KAAM;EAAGzE;EAAG4C;CAAC;CAChC,KAAK,IAAI1B,IAAI,GAAGA,IAAIwD,GAAK,KAAK;EAC5B,IAAMb,IAAM3C,IAAIwD,IAAO,KAAK,KAAK,IAAI,KAAK,KAAKA,GACzCZ,KAAO5C,IAAI,KAAKwD,IAAO,KAAK,KAAK,IAAI,KAAK,KAAKA,GAC/CpB,KAAK,GAAG,GAAG,MAAM;GAAChE;GAAGU,IAAI,KAAK,IAAIf,CAAC,IAAImE;GAAGR,IAAI,KAAK,IAAI3D,CAAC,IAAImE;EAAC;EAGnE,AAFAlE,EAAE,KAAKoE,EAAEkB,GAAIG,GAAId,CAAE,GAAGP,EAAEkB,GAAIG,GAAIb,CAAE,GAAGR,EAAEmB,GAAIG,GAAId,CAAE,GAAGR,EAAEmB,GAAIG,GAAIf,CAAE,GAAGN,GAAKY,GAAOC,CAAI,GACnFlF,EAAE,IAAI;GAACsF;GAAIxE;GAAG4C;EAAC,GAAGU,EAAEkB,GAAIG,GAAId,CAAE,GAAGP,EAAEkB,GAAIG,GAAIb,CAAE,GAAG;GAACW;GAAIzE;GAAG4C;EAAC,GAAGuB,GAAOC,CAAI,GACvElF,EAAE,IAAI;GAACuF;GAAIzE;GAAG4C;EAAC,GAAGU,EAAEmB,GAAIG,GAAIf,CAAE,GAAGP,EAAEmB,GAAIG,GAAId,CAAE,GAAG;GAACU;GAAIxE;GAAG4C;EAAC,GAAGuB,GAAOC,CAAI;CACzE;AACF;AAGA,SAASS,EAAK,GAAG,GAAI,GAAI,GAAG,GAAK,GAAO,IAAK,GAAG,IAAK,GAAG;CACtD,IAAMtB,IAAM;EAACN;EAAIC;GAAK4B,IAAKC,KAAM;CAAC;CAClC,KAAK,IAAI7D,IAAI,GAAGA,IAAIwD,GAAK,KAAK;EAC5B,IAAMb,IAAM3C,IAAIwD,IAAO,KAAK,KAAK,GAC3BZ,KAAO5C,IAAI,KAAKwD,IAAO,KAAK,KAAK,GACjCpB,KAAK,GAAG,MAAM;GAACL,IAAK,KAAK,IAAIhE,CAAC,IAAI;GAAGiE,IAAK,KAAK,IAAIjE,CAAC,IAAI;GAAG2D;EAAC;EAGlE,AAFA1D,EAAE,KAAKoE,EAAEwB,GAAIjB,CAAE,GAAGP,EAAEwB,GAAIhB,CAAE,GAAGR,EAAEyB,GAAIjB,CAAE,GAAGR,EAAEyB,GAAIlB,CAAE,GAAGN,GAAKY,CAAK,GAC7DjF,EAAE,IAAI;GAAC+D;GAAIC;GAAI4B;EAAE,GAAGxB,EAAEwB,GAAIjB,CAAE,GAAGP,EAAEwB,GAAIhB,CAAE,GAAG;GAACb;GAAIC;GAAI6B;EAAE,GAAGZ,CAAK,GAC7DjF,EAAE,IAAI;GAAC+D;GAAIC;GAAI6B;EAAE,GAAGzB,EAAEyB,GAAIlB,CAAE,GAAGP,EAAEyB,GAAIjB,CAAE,GAAG;GAACb;GAAIC;GAAI4B;EAAE,GAAGX,CAAK;CAC/D;AACF;AAEA,SAASa,IAAY;CACnB,IAAM9F,IAAI,IAAIP,EAAW;CAezB,AAbAqE,EAAK9D,GAAG;EACN;GAAE,GAAG;GAAM,KAAK;IAAC,CAAC,IAAK,GAAI;IAAG,CAAC,IAAK,EAAG;IAAG,CAAC,GAAK,GAAI;IAAG,CAAC,GAAK,IAAK;GAAC;EAAE;EACrE;GAAE,GAAG;GAAM,KAAK;IAAC,CAAC,KAAM,GAAI;IAAG,CAAC,KAAM,EAAG;IAAG,CAAC,GAAK,GAAI;IAAG,CAAC,GAAK,IAAK;GAAC;EAAE;EACvE;GAAE,GAAG;GAAM,KAAK;IAAC,CAAC,KAAM,IAAK;IAAG,CAAC,KAAM,GAAI;IAAG,CAAC,GAAK,GAAI;IAAG,CAAC,GAAK,IAAK;GAAC;EAAE;CAC3E,GAAG0C,CAAC,GAEJoB,EAAK9D,GAAG;EACN;GAAE,GAAG;GAAO,KAAKyD,EAAI,KAAM,MAAM,MAAM,EAAG;EAAE;EAC5C;GAAE,GAAG;GAAO,KAAKA,EAAI,KAAM,KAAK,KAAK,GAAI;EAAE;EAC3C;GAAE,GAAG;GAAM,KAAKA,EAAI,KAAM,KAAK,KAAK,GAAI;EAAE;EAC1C;GAAE,GAAG;GAAK,KAAKA,EAAI,KAAM,KAAK,MAAM,GAAI;EAAE;CAC5C,GAAGjB,GAAG,GAAGC,CAAE,GAEXzC,EAAE,IAAI,MAAM,MAAM,GAAG,KAAK,KAAM,KAAK2C,CAAC;CACtC,KAAK,IAAIX,IAAI,GAAGA,IAAI,GAAG,KAAK,EAAE,IAAI,QAAQA,IAAI,IAAK,MAAM,GAAG,KAAM,KAAM,KAAKU,CAAC;CAE9E,AADA1C,EAAE,IAAI,OAAO,MAAM,IAAK,KAAM,KAAM,IAAK2C,CAAC,GAC1C3C,EAAE,IAAI,OAAO,MAAM,KAAM,KAAM,KAAM,IAAK2C,CAAC;CAE3C,KAAK,IAAM9B,KAAK,CAAC,IAAI,CAAC,GASpB,AARAiD,EAAK9D,GAAG,CACN;EAAE,GAAG;EAAO,KAAK;GAAC,CAAC,KAAMa,IAAI,IAAI;GAAG,CAAC,KAAMA,IAAI,GAAG;GAAG,CAAC,KAAMA,IAAI,IAAI;GAAG,CAAC,KAAMA,IAAI,GAAG;EAAC;CAAE,GACxF;EAAE,GAAG;EAAM,KAAK;GAAC,CAAC,KAAMA,IAAI,IAAI;GAAG,CAAC,KAAMA,IAAI,GAAG;GAAG,CAAC,KAAMA,IAAI,IAAI;GAAG,CAAC,KAAMA,IAAI,GAAG;EAAC;CAAE,CACzF,GAAG4B,CAAE,GAELzC,EAAE,IAAI,MAAM,MAAMa,IAAI,KAAK,KAAK,KAAM,IAAK6B,CAAC,GAC5C1C,EAAE,IAAI,IAAK,KAAKa,IAAI,MAAM,IAAK,IAAK,IAAK4B,CAAE,GAE3CzC,EAAE,IAAI,KAAK,KAAMa,IAAI,MAAM,KAAM,KAAM,KAAM8B,CAAC;CAKhD,OAFA3C,EAAE,MAAM,MAAM,KAAK,KAAM,KAAM,KAAM,KAAM,GAAG0C,CAAC,GAC/C1C,EAAE,IAAI,KAAK,MAAM,MAAO,KAAM,KAAM,IAAK2C,CAAC,GACnC3C,EAAE,MAAM;AACjB;AAEA,SAAS+F,IAAkB;CACzB,IAAM/F,IAAI,IAAIP,EAAW;CACzB,KAAK,IAAMoB,KAAK,CAAC,IAAI,CAAC,GAGpB,AAFAb,EAAE,IAAI,KAAM,GAAKa,IAAI,OAAO,GAAK,KAAM,KAAMgC,GAAG,CAAC,GACjD7C,EAAE,IAAI,KAAM,KAAMa,IAAI,OAAO,GAAK,KAAM,KAAMgC,GAAG,CAAC,GAClD7C,EAAE,IAAI,OAAO,KAAKa,IAAI,KAAK,KAAM,KAAM,IAAKgC,GAAG,CAAC;CAGlD,OADA7C,EAAE,IAAI,KAAK,MAAM,GAAG,IAAK,KAAM,KAAM6C,GAAG,CAAC,GAClC7C,EAAE,MAAM;AACjB;AAEA,SAASgG,KAAa;CACpB,IAAMhG,IAAI,IAAIP,EAAW;CACzB,KAAK,IAAMoB,KAAK,CAAC,IAAI,CAAC,GACpB,EAAE,IAAI,MAAM,MAAMA,IAAI,KAAK,KAAM,KAAM,KAAMgC,GAAG,CAAC;CAEnD,OAAO7C,EAAE,MAAM;AACjB;AAEA,SAASiG,KAAc;CACrB,IAAMjG,IAAI,IAAIP,EAAW;CAiBzB,AAhBAqE,EAAK9D,GAAG;EACN;GAAE,GAAG;GAAO,KAAKyD,EAAI,KAAM,KAAM,GAAK,IAAK,GAAI;EAAE;EACjD;GAAE,GAAG;GAAO,KAAKA,EAAI,GAAK,IAAK,MAAM,KAAM,IAAI;EAAE;EACjD;GAAE,GAAG;GAAM,KAAKA,EAAI,GAAK,IAAK,MAAM,KAAM,IAAI;EAAE;EAChD;GAAE,GAAG;GAAM,KAAKA,EAAI,KAAM,KAAM,KAAM,KAAM,GAAI;EAAE;CACpD,GAAGjB,GAAG,GAAGC,CAAE,GAEXzC,EAAE,MAAM,KAAM,MAAO,GAAG,MAAM,MAAM,IAAK,IAAI2C,CAAC,GAE9C3C,EAAE,MAAM,MAAO,IAAK,KAAM,IAAK,IAAK,KAAM,GAAG0C,GAAG,GAAG,EAAG,GACtD1C,EAAE,MAAM,MAAO,MAAM,KAAM,IAAK,IAAK,KAAM,GAAGyC,CAAE,GAChDzC,EAAE,IAAI,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM0C,CAAC,GAEzC1C,EAAE,IAAI,KAAM,KAAM,MAAO,KAAM,KAAM,IAAK0C,CAAC,GAC3C1C,EAAE,IAAI,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM2C,CAAC,GAE5C3C,EAAE,IAAI,MAAM,KAAM,GAAG,KAAM,IAAK,KAAK2C,CAAC;CAEtC,KAAK,IAAM9B,KAAK,CAAC,IAAI,CAAC,GACpB,KAAK,IAAImB,IAAI,GAAGA,IAAI,GAAG,KAAK,EAAE,IAAI,IAAMA,IAAI,KAAM,KAAMnB,KAAK,OAAOmB,IAAI,MAAO,KAAM,KAAM,KAAMU,CAAC;CAIpG,OADA1C,EAAE,IAAI,OAAO,KAAK,MAAO,KAAM,KAAK,KAAM2C,CAAC,GACpC3C,EAAE,MAAM;AACjB;AAEA,SAASkG,KAAoB;CAC3B,IAAMlG,IAAI,IAAIP,EAAW;CACzB,KAAK,IAAMoB,KAAK,CAAC,IAAI,CAAC,GACpB,EAAE,IAAI,MAAO,KAAMA,IAAI,MAAM,KAAK,IAAK,KAAMgC,GAAG,CAAC;CAInD,OAFA7C,EAAE,IAAI,OAAO,KAAM,GAAG,KAAM,KAAM,KAAK6C,GAAG,CAAC,GAC3C7C,EAAE,IAAI,OAAO,MAAM,MAAO,KAAM,KAAM,KAAM6C,GAAG,CAAC,GACzC7C,EAAE,MAAM;AACjB;AAEA,SAASmG,KAAW;CAClB,IAAMnG,IAAI,IAAIP,EAAW;CAUzB,OARAqE,EAAK9D,GAAG,CACN;EAAE,GAAG;EAAO,KAAK;GAAC,CAAC,MAAO,GAAI;GAAG,CAAC,MAAO,EAAG;GAAG,CAAC,IAAK,EAAG;GAAG,CAAC,IAAK,GAAI;EAAC;CAAE,GACxE;EAAE,GAAG;EAAM,KAAK;GAAC,CAAC,MAAO,IAAK;GAAG,CAAC,MAAO,GAAI;GAAG,CAAC,KAAM,GAAI;GAAG,CAAC,KAAM,IAAK;EAAC;CAAE,CAC/E,GAAG0C,CAAC,GACJ2C,EAAKrF,GAAG,IAAK,KAAK,KAAM,KAAM,IAAIyC,CAAE,GACpC4C,EAAKrF,GAAG,KAAK,MAAM,KAAM,KAAM,IAAI0C,CAAC,GACpC2C,EAAKrF,GAAG,MAAM,KAAK,KAAM,KAAM,GAAG4C,CAAC,GACnC5C,EAAE,IAAI,MAAM,GAAG,GAAG,KAAM,IAAK,KAAM2C,CAAC,GAC7B3C,EAAE,MAAM;AACjB;AAEA,SAASoG,KAAa;CACpB,IAAMpG,IAAI,IAAIP,EAAW;CAIzB,AAFAkG,EAAK3F,GAAG,qBADE+C,IAAU,KACLC,GAAS,IAAIL,CAAC,GAC7BgD,EAAK3F,GAAG,oBAAU,oBAAUgD,IAAU,KAAM,IAAIP,CAAE,GAClDkD,EAAK3F,GAAG,qBAAW,qBAAWgD,IAAU,KAAM,IAAIP,CAAE;CAEpD,KAAK,IAAIT,IAAI,GAAGA,IAAI,GAAG,KAAK;EAC1B,IAAMjC,IAAKiC,IAAI,IAAK,KAAK,IACnBd,IAAI,KAAK,IAAInB,CAAC,GAAGc,IAAI,KAAK,IAAId,CAAC,GAC/BsG,IAAIrD,IAAU,KACd7B,IAAI;EAEV,KAAK,IAAMmF,KAAM,CAAC,oBAAI,mBAAG,GAAG;GAC1B,IAAMjC,IAAM;IAAC;IAAG;IAAGiC,IAAK,IAAIA,IAAK,KAAMA,IAAK;GAAG;GAC/C,EAAE,KACA;IAAC,CAACpF,IAAImF,IAAIxF,IAAIM;IAAG,CAACN,IAAIwF,IAAInF,IAAIC;IAAGmF;GAAE,GACnC;IAACpF,IAAImF,IAAIxF,IAAIM;IAAGN,IAAIwF,IAAInF,IAAIC;IAAGmF;GAAE,GACjC;IAACpF,IAAImF,IAAIxF,IAAIM;IAAGN,IAAIwF,IAAInF,IAAIC;IAAGmF;GAAE,GACjC;IAAC,CAACpF,IAAImF,IAAIxF,IAAIM;IAAG,CAACN,IAAIwF,IAAInF,IAAIC;IAAGmF;GAAE,GACnCjC,GACA3B,CACF;EACF;CACF;CAEA,OADAiD,EAAK3F,GAAG,QAAW,OAAU,KAAM,GAAG4C,CAAC,GAChC5C,EAAE,MAAM;AACjB;AAGA,SAASuG,KAAa;CACpB,IAAMC,IAAM,CAAC,GACPC,KAAO,GAAI,GAAI,GAAG,GAAI,GAAI,MAAM;EACpC,KAAK,IAAIzE,IAAI,GAAGA,KAAKiC,GAAG,KAAK;GAC3B,IAAMlE,IAAI4E,KAAOC,IAAKD,KAAM3C,IAAKiC;GACjC,EAAI,KAAK,CAACF,IAAK,KAAK,IAAIhE,CAAC,IAAI,GAAGiE,IAAK,KAAK,IAAIjE,CAAC,IAAI,CAAC,CAAC;EACvD;CACF,GACMmC,IAAK;CAKX,AAJAsE,EAAI,KAAK,CAAC,MAAM,EAAI,CAAC,GACrBA,EAAI,KAAK,CAAC,KAAK,EAAI,CAAC,GACpBC,EAAIvD,EAAS,IAAIA,EAAS,IAAIhB,GAAI,IAAM,KAAK,KAAK,GAAG,CAAC,GACtDuE,EAAItD,EAAM,IAAIA,EAAM,IAAIjB,GAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAK,CAAC,GACzDsE,EAAI,KAAKA,EAAI,EAAE;CACf,IAAME,IAAO,CAAC,CAAC;CACf,KAAK,IAAI1E,IAAI,GAAGA,IAAIwE,EAAI,QAAQ,KAC9B,EAAK,KAAKE,EAAK1E,IAAI,KAAK,KAAK,MAAMwE,EAAIxE,EAAE,CAAC,KAAKwE,EAAIxE,IAAI,EAAE,CAAC,IAAIwE,EAAIxE,EAAE,CAAC,KAAKwE,EAAIxE,IAAI,EAAE,CAAC,EAAE,CAAC;CAE1F,IAAM2E,IAAI,CAAC,GAAGC,IAAK,CAAC,GAAGC,IAAK,CAAC;CAC7B,KAAK,IAAMC,KAAQ,CAAC,IAAI,CAAC,GAAG;EAC1B,IAAMlB,IAAKkB,IAAOhE,IAAUC,IAAU,GAChC8C,IAAKiB,IAAOhE,IAAUC,IAAU;EACtC,KAAK,IAAIf,IAAI,GAAGA,IAAIwE,EAAI,SAAS,GAAG,KAAK;GACvC,IAAM,CAAClB,GAAIyB,KAAMP,EAAIxE,IACf,CAACuD,GAAIyB,KAAMR,EAAIxE,IAAI,IAErBiF,IAAKD,IAAKD,GAAIG,IAAK,EAAE3B,IAAKD,IACxB6B,IAAI,KAAK,MAAMF,GAAIC,CAAE,KAAK;GAEhC,AADA,KAAMC,GACN,KAAMA;GACN,IAAMC,IAAKV,EAAK1E,KAAKoB,GACfiE,IAAKX,EAAK1E,IAAI,KAAKoB,GACnBkE,IAAO;IACX;KAAChC;KAAIyB;KAAInB;KAAIwB;KAAI;IAAC;IAAG;KAAC7B;KAAIyB;KAAIpB;KAAIyB;KAAI;IAAC;IAAG;KAAC9B;KAAIyB;KAAInB;KAAIwB;KAAI;IAAC;IAC5D;KAAC/B;KAAIyB;KAAInB;KAAIwB;KAAI;IAAC;IAAG;KAAC7B;KAAIyB;KAAInB;KAAIwB;KAAI;IAAC;IAAG;KAAC/B;KAAIyB;KAAIlB;KAAIuB;KAAI;IAAC;GAC9D;GACA,KAAK,IAAMG,KAAKD,GAGd,AAFAX,EAAE,KAAKY,EAAE,IAAIA,EAAE,KAAK,KAAMA,EAAE,EAAE,GAC9BX,EAAG,KAAKK,GAAIC,GAAI,CAAC,GACjBL,EAAG,KAAKU,EAAE,IAAIA,EAAE,EAAE;EAEtB;CACF;CACA,IAAM3F,IAAI,IAAI4F,EAAe;CAK7B,OAJA5F,EAAE,aAAa,YAAY,IAAI6F,EAAgB,IAAI,aAAad,CAAC,GAAG,CAAC,CAAC,GACtE/E,EAAE,aAAa,UAAU,IAAI6F,EAAgB,IAAI,aAAab,CAAE,GAAG,CAAC,CAAC,GACrEhF,EAAE,aAAa,MAAM,IAAI6F,EAAgB,IAAI,aAAaZ,CAAE,GAAG,CAAC,CAAC,GACjEjF,EAAE,sBAAsB,GACjBA;AACT;AAGA,IAAa8F,WAAgB;CAC3B,IAAMC,IAAO,CAAC;CACd,KAAK,IAAM9G,KAAK,CAAC,IAAI,CAAC,GAAG;EACvB,KAAK,IAAMT,KAAK6C,GAAS,EAAK,KAAK;GAAE;GAAG,GAAGD;GAAS,GAAGnC,IAAIiC;GAAS,GAAGE;EAAQ,CAAC;EAEhF,AADA2E,EAAK,KAAK;GAAE,GAAGzE,EAAS;GAAI,GAAGA,EAAS;GAAI,GAAGrC,IAAIiC;GAAS,GAAGI,EAAS;EAAG,CAAC,GAC5EyE,EAAK,KAAK;GAAE,GAAGxE,EAAM;GAAI,GAAGA,EAAM;GAAI,GAAGtC,IAAIiC;GAAS,GAAGK,EAAM;EAAG,CAAC;CACrE;CACA,OAAOwE;AACT,EAAA,CAAG;AAEH,SAAgBC,KAAuB;CACrC,IAAMhG,IAAI;EACR,MAAMkE,EAAU;EAChB,YAAYC,EAAgB;EAC5B,OAAOC,GAAW;EAClB,QAAQC,GAAY;EACpB,cAAcC,GAAkB;EAChC,KAAKC,GAAS;EACd,OAAOC,GAAW;EAClB,OAAOG,GAAW;CACpB;CAIA,OAHA,EAAE,gBAAgB;EAChB,KAAK,IAAM9B,KAAK,OAAO,KAAK7C,CAAC,GAAG,AAAIA,EAAE6C,MAAM7C,EAAE6C,EAAE,CAAC,oBAAkB7C,EAAE6C,EAAE,CAAC,QAAQ;CAClF,GACO7C;AACT;AAEA,IAAMiG,KAAOnI,EAAI,SAAS,GACpBoI,KAAcpI,EAAI,SAAS;AAGjC,SAAgBqI,GAAW,GAAM,GAAQ,EAAE,OAAI,WAAQ,SAAS,aAAU,UAAU;CAClF,IAAMC,IAAOzF,EAAK0C,MAAU1C,EAAK,OAC3B0F,IAAO,IAAIC,EAAM;CACvB,EAAK,MAAM,UAAU5F,EAAU;CAC/B,IAAM6F,IAAO,IAAID,EAAM;CACvB,EAAK,IAAIC,CAAI;CACb,IAAMC,IAAS,IAAIF,EAAM;CACzB,EAAO,SAAS,KAAK7E,EAAY;CACjC,IAAMgF,IAAM,IAAIH,EAAM;CAGtB,AAFAG,EAAI,SAAS,KAAK9E,CAAS,GAC3B6E,EAAO,IAAIC,CAAG,GACdF,EAAK,IAAIC,CAAM;CAEf,IAAME,IAAY,IAAIC,EAAkB,EAAE,OAAOP,EAAK,OAAO,MAAM,EAAE,CAAC;CACtE,EAAU,MAAM,eAAe,IAAI;CACnC,IAAMQ,IAAWC,EAAO,SAAS,MAAM;CACvC,EAAS,cAAc;CACvB,IAAIC,IAAU,MACVC,IAAW,MAETC,IAAO,IAAIC,EAAKC,EAAK,MAAM,IAAI,GAC/BC,IAAa,IAAIF,EAAKC,EAAK,YAAYR,CAAS,GAChDU,IAAQ,IAAIH,EAAKC,EAAK,OAAOL,EAAO,OAAO,GAC3CQ,IAAQ,IAAIJ,EAAKC,EAAK,OAAO,IAAI,GACjCI,IAAa,IAAIL,EAAKC,EAAK,QAAQ,IAAI,GACvCK,IAAe,IAAIN,EAAKC,EAAK,cAAcR,CAAS,GACpDc,IAAU,IAAIP,EAAKC,EAAK,KAAK,IAAI;CAGvC,AAFAX,EAAK,IAAIS,GAAMG,GAAYC,GAAOC,CAAK,GACvCb,EAAO,IAAIc,GAAYC,CAAY,GACnCd,EAAI,IAAIe,CAAO;CACf,IAAMC,IAAU;EAACT;EAAMK;EAAOC;EAAYE;CAAO;CAEjD,SAASE,EAAc,GAAG;EA0BxB,AAzBIZ,KAASA,EAAQ,QAAQ,GACzBC,KAAUA,EAAS,QAAQ,GAC3BpB,MAAM,SACR,IAAU,IAAIgC,EAAoB;GAAE,cAAc;GAAM,OAAOvB,EAAK,KAAK,MAAM;EAAE,CAAC,GAClF,IAAW,IAAIuB,EAAoB;GAAE,KAAKf;GAAU,OAAO9I,EAAI,SAAS;GAAG,MAAM8J;EAAW,CAAC,MAE7F,IAAU,IAAIC,EAAqB;GACjC,cAAc;GACd,OAAOzB,EAAK,KAAK,MAAM;GACvB,WAAW;GACX,WAAW;GACX,aAAa;EACf,CAAC,GACD,IAAW,IAAIyB,EAAqB;GAClC,KAAKjB;GACL,OAAO9I,EAAI,SAAS;GACpB,WAAW;GACX,WAAW;GACX,MAAM8J;EACR,CAAC,IAEH,EAAK,WAAWd,GAChB,EAAW,WAAWA,GACtB,EAAQ,WAAWA,GACnB,EAAM,WAAWC,GACbe,EAAM,WAASC,EAAa;CAClC;CAEA,IAAMD,IAAQ;EACZ;EACA;EACA,OAAO;EACP,SAAS;EACT,IAAI;EACJ,OAAO;EACP,GAAG;EACH,GAAG;EACH,GAAG;EACH,SAAS;EACT,KAAK;EACL,OAAO;EACP,WAAW;EACX,aAAa;EACb,QAAQ;EACR,UAAU;EACV,WAAW;EACX,WAAW;EACX,UAAU;EACV,OAAO;CACT;CAEA,SAASC,IAAe;EAItB,AAHAjB,EAAQ,MAAM,KAAKb,EAAI,GACvBS,EAAU,MAAM,KAAKR,EAAW,GAChC,EAAM,UAAU,IACZa,KAAUA,EAAS,MAAM,KAAKjJ,EAAI,SAAS,CAAC;CAClD;CAEA,EAAckK,CAAO;CAErB,IAAMC,IAAK,IAAIvG,EAAQ,GAAG,GAAG,CAAC,GACxBwG,IAAM,IAAIxG,EAAQ,GAClByG,IAAQ,IAAIC,EAAW,GACvBC,IAAO,IAAID,EAAW,GACtBE,IAAa,IAAIF,EAAW,GAC9BG,IAAW;CAGf,SAASC,EAAM,GAAS,IAAK,GAAG;EAc9B,AAbAnC,EAAK,SAAS,IAAIyB,EAAM,GAAGA,EAAM,GAAGA,EAAM,CAAC,GAC3CW,EAAQ,SAASX,EAAM,GAAGA,EAAM,GAAGI,GAAK,GAAG,GAC3CI,EAAW,mBAAmBL,GAAIC,CAAG,GACjC,CAACK,KAAYzJ,KAAM,KACrBqJ,EAAM,KAAKG,CAAU,GACrB,IAAW,MAEXH,EAAM,MAAMG,GAAY,IAAI,KAAK,IAAI,MAAMxJ,CAAE,CAAC,GAEhDuJ,EAAK,iBAAiBJ,GAAK,CAACH,EAAM,UAAU,KAAK,KAAM,GAAG,GAC1DvB,EAAK,WAAW,KAAK4B,CAAK,CAAC,CAAC,SAASE,CAAI,GACzC,EAAO,SAAS,IAAK,EAAEP,EAAM,MAAMA,EAAM,WAAW,KAAK,KAAM,KAC/D,EAAI,SAAS,IAAKA,EAAM,QAAQ,KAAK,KAAM,KAC3C,EAAI,SAAS,IAAInG,EAAU,IAAImG,EAAM,SAAS;CAChD;CAEA,SAASY,EAAW,GAAI;EACtB,AAAIZ,EAAM,YAAYa,MACtB,EAAM,UAAUA,GACZA,IAAIZ,EAAa,KAEnBjB,EAAQ,MAAM,KAAKV,EAAK,IAAI,GAC5BM,EAAU,MAAM,KAAKN,EAAK,MAAM,CAAC,CAAC,eAAe,IAAI,GACrD,EAAM,UAAU,IAChBW,EAAS,MAAM,KAAKjJ,EAAIkK,MAAY,QAAQ,YAAY,SAAS,CAAC;CAEtE;CAEA,SAASY,EAAS,GAAG;EACnB,EAAQ,SAAS,OAAO,IAAM/F,GAAG,MAAOA,GAAG,KAAMA,CAAC;CACpD;CAEA,SAASgG,EAAW,GAAI;EACtB,KAAK,IAAMjG,KAAK6E,GAEd,AADA,EAAE,aAAakB,GACf,EAAE,gBAAgBA;CAEtB;CAEA,IAAMG,IAAO,IAAIC,EAAQ,GACnBC,IAAO,IAAIZ,EAAW,GACtBa,IAAO,IAAIvH,EAAQ,GACnBwH,IAAO,IAAIxH,EAAQ,GACnByH,KAAQ,IAAIzH,EAAQ,GAAG,GAAG,CAAC;CAEjC,SAAS0H,GAAY,GAAM,GAAQ;EACjC,EAAK,kBAAkB,IAAM,EAAK;EAClC,KAAK,IAAIhJ,IAAI,GAAGA,IAAI0F,EAAO,QAAQ,KAAK;GACtC,IAAMvG,IAAIuG,EAAO1F;GAMjB,AALA4I,EAAK,iBAAiBG,IAAO,CAACrB,EAAM,YAAYvI,EAAE,CAAC,GACnD2J,EAAK,UAAU3J,EAAE,IAAI6B,CAAO,GAC5B6H,EAAK,IAAI1J,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,GACtBuJ,EAAK,QAAQG,GAAMD,GAAME,CAAI,GAC7BJ,EAAK,YAAYvC,EAAK,WAAW,GACjC8C,EAAK,YAAYC,IAASlJ,GAAG0I,CAAI;EACnC;CACF;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW,GAAG;GAEZ,AADA,IAAUnD,GACV+B,EAAc/B,CAAC;EACjB;EACA,aAAa,GAAG;GAEd,AADA,EAAM,aAAatF,GACnB,EAAS,OAAO,IAAI,CAACyH,EAAM,YAAYtG;EACzC;EACA,YAAY,GAAK;GAEf,OADAiF,EAAI,kBAAkB,IAAM,EAAK,GAC1B8C,EAAI,KAAK3H,EAAM,CAAC,CAAC,aAAa6E,EAAI,WAAW;EACtD;EACA,YAAY,GAAK;GAEf,OADAA,EAAI,kBAAkB,IAAM,EAAK,GAC1B8C,EAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,mBAAmB9C,EAAI,WAAW;EAC5D;EACA,aAAa,GAAK,GAAG,GAAG,GAAG;GAEzB,OADAF,EAAK,kBAAkB,IAAM,EAAK,GAC3BgD,EAAI,IAAI/K,GAAGU,GAAG4C,CAAC,CAAC,CAAC,aAAayE,EAAK,WAAW;EACvD;EACA,UAAU;GAKR,AAJAO,EAAQ,QAAQ,GAChBC,EAAS,QAAQ,GACjBL,EAAU,QAAQ,GAClBE,EAAS,QAAQ,GACjBP,EAAK,iBAAiB;EACxB;CACF;AACF;AAEA,SAAgBmD,KAAmB;CACjC,OAAO;EACL,UAAU/I,EAAa;EACvB,SAAS,IAAIkG,EAAkB,EAAE,OAAO7I,EAAI,SAAS,CAAC,CAAC,eAAe,GAAG,EAAE,CAAC;EAC5E,UAAU;GAER,AADA,KAAK,SAAS,QAAQ,GACtB,KAAK,QAAQ,QAAQ;EACvB;CACF;AACF"}