seriffic Claude Opus 4.7 (1M context) commited on
Commit
48be8c8
·
1 Parent(s): 611231a

feat: rasterize Cornerstone + honest UI skip reasons + register gate

Browse files

Cornerstone (DEP stormwater + Sandy 2012) bottleneck on HF Space CPU
is GDB cold-load, not the join itself: dep_extreme_2080 alone is 30s
to read on first call, and worker memory pressure evicts the
lru_cache between queries. Bake DEP scenarios + Sandy extent to
DEFLATE uint8 GeoTIFFs at 10 ft/px (data/baked/, 7 MB total) and
sample with rasterio. ~500x faster cold-load, ~5x faster per-query,
full parity on 4 canonical addresses across 3 DEP scenarios + Sandy.

- app/flood_layers/dep_stormwater.py: add join_raster() with
thread-local DatasetReader cache; legacy GDB join() retained as
fallback when baked rasters absent (local dev) and as the
polygon-overlap path for coverage_for_polygon (neighborhood mode)
- app/flood_layers/sandy_inundation.py: same pattern, inside_raster()
- app/fsm.py: step_dep / step_sandy use the raster path
- scripts/bake_cornerstone_rasters.py: one-shot bake (~50s)
- experiments/22_cornerstone_optim/: bench harness + RESULTS.md

UI honesty: stoneRegistry.ts had hardcoded "RIPRAP_HEAVY_SPECIALISTS=0"
copy on TerraMind Buildings, Prithvi-NYC-Pluvial, and TerraMind LULC.
On the live Space heavy specialists are enabled (vLLM path sets
_HEAVY_DEFAULT=1) — they silently skip when the eo_chip Sentinel-2
fetch returns nothing recent. Reword to honest cause and rebuild
SvelteKit so the change ships in the static bundle.

Heavy register gate: scripts/update_hf_env.sh now sets
RIPRAP_NYCHA_REGISTERS=1 so the FSM actually adds step_nycha,
step_doe_schools, step_doh_hospitals to the action set on the
live Space (web/main.py:_warm_caches pre-warms them at boot when
this is set; without it the demo never sees register cards).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. FRIDAY-REPORT.md +33 -0
  2. app/flood_layers/dep_stormwater.py +57 -0
  3. app/flood_layers/sandy_inundation.py +50 -2
  4. app/fsm.py +10 -6
  5. data/baked/dep_extreme_2080.tif +3 -0
  6. data/baked/dep_moderate_2050.tif +3 -0
  7. data/baked/dep_moderate_current.tif +3 -0
  8. data/baked/sandy.tif +3 -0
  9. experiments/22_cornerstone_optim/README.md +53 -0
  10. experiments/22_cornerstone_optim/RESULTS.md +112 -0
  11. experiments/22_cornerstone_optim/bake_rasters.py +134 -0
  12. experiments/22_cornerstone_optim/baked/dep_extreme_2080.tif +3 -0
  13. experiments/22_cornerstone_optim/baked/dep_moderate_2050.tif +3 -0
  14. experiments/22_cornerstone_optim/baked/dep_moderate_current.tif +3 -0
  15. experiments/22_cornerstone_optim/baked/sandy.tif +3 -0
  16. experiments/22_cornerstone_optim/bench.py +272 -0
  17. experiments/22_cornerstone_optim/bench_concurrent.py +178 -0
  18. scripts/bake_cornerstone_rasters.py +108 -0
  19. scripts/update_hf_env.sh +5 -0
  20. web/sveltekit/build/200.html +9 -10
  21. web/sveltekit/build/_app/immutable/assets/4.D4-aMRnd.css +0 -1
  22. web/sveltekit/build/_app/immutable/chunks/{BbRPgcjS.js → B-yumwKg.js} +1 -1
  23. web/sveltekit/build/_app/immutable/chunks/B5Keu-3_.js +0 -1
  24. web/sveltekit/build/_app/immutable/chunks/{33K0dtcD.js → BRRh3tKo.js} +1 -1
  25. web/sveltekit/build/_app/immutable/chunks/BS22DDzI.js +0 -1
  26. web/sveltekit/build/_app/immutable/chunks/BZuv-XBZ.js +0 -37
  27. web/sveltekit/build/_app/immutable/chunks/BgqmyNr8.js +0 -1
  28. web/sveltekit/build/_app/immutable/chunks/Bi6ZzEYr.js +0 -1
  29. web/sveltekit/build/_app/immutable/chunks/{CC8czMej.js → C3emz_VZ.js} +0 -0
  30. web/sveltekit/build/_app/immutable/chunks/CAMdvC-O.js +0 -1
  31. web/sveltekit/build/_app/immutable/chunks/CR2ah4JU.js +0 -1
  32. web/sveltekit/build/_app/immutable/chunks/CbyeixEA.js +0 -1
  33. web/sveltekit/build/_app/immutable/chunks/Drrr58vi.js +0 -1
  34. web/sveltekit/build/_app/immutable/chunks/WSwxEsIs.js +0 -37
  35. web/sveltekit/build/_app/immutable/chunks/sQImrWTX.js +0 -1
  36. web/sveltekit/build/_app/immutable/entry/{app.BJix1erd.js → app.C74wsJjh.js} +2 -2
  37. web/sveltekit/build/_app/immutable/entry/app.CUih6yVd.js +0 -2
  38. web/sveltekit/build/_app/immutable/entry/app.C_JcOYY7.js +0 -2
  39. web/sveltekit/build/_app/immutable/entry/app.DtHxgVfE.js +0 -2
  40. web/sveltekit/build/_app/immutable/entry/app.KWIsKmKE.js +0 -2
  41. web/sveltekit/build/_app/immutable/entry/start.BkS8JQ5_.js +0 -1
  42. web/sveltekit/build/_app/immutable/entry/start.Bs_Nr3wJ.js +0 -1
  43. web/sveltekit/build/_app/immutable/entry/start.CNQZC3fg.js +0 -1
  44. web/sveltekit/build/_app/immutable/entry/start.CUNz9P5k.js +0 -1
  45. web/sveltekit/build/_app/immutable/entry/start.D9d5J30B.js +1 -0
  46. web/sveltekit/build/_app/immutable/entry/start.DcdyosVQ.js +0 -1
  47. web/sveltekit/build/_app/immutable/nodes/0.CRsWI93d.js +0 -2
  48. web/sveltekit/build/_app/immutable/nodes/0.CazXc5O3.js +0 -2
  49. web/sveltekit/build/_app/immutable/nodes/0.LAFF30Kg.js +0 -2
  50. web/sveltekit/build/_app/immutable/nodes/{0.BxBHE18q.js → 0.WjwQ9Jo9.js} +1 -1
FRIDAY-REPORT.md ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Friday Mission Report: Performance Restoration & Audit
2
+ **Date:** Friday, May 8, 2026
3
+ **System State:** v0.5.0 (Healthy & Live)
4
+ **Target:** [lablab-ai-amd-developer-hackathon-riprap-nyc.hf.space](https://lablab-ai-amd-developer-hackathon-riprap-nyc.hf.space)
5
+
6
+ ## 1. Performance Diagnosis
7
+ The "sudden slowness" (180s+ ReadTimeouts) reported during batch testing was isolated to a **Geospatial Processing Bottleneck** on the Hugging Face Space CPU.
8
+
9
+ * **Primary Bottleneck:** The **Cornerstone Stone** (Hazard Reader).
10
+ * **Metric:** A single `dep` (NYC DEP Stormwater) spatial join against high-res GDB layers takes **~33.0s** on the shared HF CPU.
11
+ * **Summation:** Summing across all specialists (Sandy, DEP, Microtopo, Ida HWM), a single query requires ~60-90s of pure spatial computation before the Reconciler begins.
12
+ * **The Trap:** Automated batch tests triggered a queue. Because `OLLAMA_NUM_PARALLEL=1`, subsequent queries timed out waiting for the geospatial processing window of the previous query to clear.
13
+ * **Steady State:** vLLM inference on the MI300X is healthy (**0.08s latency**), confirming the bottleneck is entirely local to the Space's CPU-bound spatial logic.
14
+
15
+ ## 2. Stabilization Completed
16
+ - **Register Memory Fix:** Resolved a 503 error on the `mta_entrances` API. All three registers (NYCHA, Schools, MTA) are now pre-built and resident in Space memory.
17
+ - **Naming Alignment:** Patched `stoneRegistry.ts` to recognize shortened v0.5.0 step names (e.g., `sandy`, `nycha`). The UI now correctly displays active Stones instead of "outside NYC" ghosts.
18
+ - **Geocoding Resilience:** Implemented a robust Nominatim fallback that maps region/county data (e.g., "Kings County") to NYC boroughs ("Brooklyn"), bypassing the current NYC Geosearch outage.
19
+
20
+ ## 3. Top 3 Canonical Demo Locations
21
+ Selected via city-wide register scan for maximum "Data Density":
22
+
23
+ | Rank | Location | High-Signal Assets | Query String |
24
+ | :--- | :--- | :--- | :--- |
25
+ | **1** | **Beach Channel Dr, Queens** | 8 Subway Entrances, 2 Schools, NYCHA | `2508 Beach Channel Drive, Queens - resilient infrastructure briefing` |
26
+ | **2** | **Coney Island Houses, BK** | 5 Schools, 3 Subway Entrances, NYCHA | `Coney Island I Houses, Brooklyn - emergency management briefing` |
27
+ | **3** | **Carleton Manor, Queens** | 7 Subway Entrances, 2 Schools | `Carleton Manor Houses, Queens - transit resilience assessment` |
28
+
29
+ ## 4. Immediate Next Step: Optimization
30
+ The next logical phase is **Algorithmic Optimization of Cornerstone**.
31
+ - **Strategy:** Move from full `geopandas` spatial joins to a pre-indexed or point-in-polygon lookup for the Hazard Reader.
32
+ - **Constraint:** Maintain the "Five Stones" integrity while reducing the 33s `dep` join time to <1s.
33
+ - **Validation:** Retest the 20-query batch after optimization to confirm the performance gain.
app/flood_layers/dep_stormwater.py CHANGED
@@ -4,15 +4,31 @@ Four scenarios, all in EPSG:2263. Polygons are categorized by depth class:
4
  1 = Nuisance Flooding (>4" and ≤1 ft)
5
  2 = Deep and Contiguous Flooding (>1 ft and ≤4 ft)
6
  3 = Deep Contiguous Flooding (>4 ft)
 
 
 
 
 
 
 
 
 
7
  """
8
  from __future__ import annotations
9
 
 
 
10
  from functools import lru_cache
11
 
12
  import geopandas as gpd
13
 
14
  from app.spatial import DATA, NYC_CRS
15
 
 
 
 
 
 
16
  ROOT = DATA / "dep"
17
 
18
  SCENARIOS = {
@@ -72,6 +88,47 @@ def label(scenario: str) -> str:
72
  return SCENARIOS[scenario]["label"]
73
 
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  def coverage_for_polygon(polygon, scenario: str,
76
  polygon_crs: str = "EPSG:4326") -> dict:
77
  """Polygon-level summary: what fraction of the input polygon falls into
 
4
  1 = Nuisance Flooding (>4" and ≤1 ft)
5
  2 = Deep and Contiguous Flooding (>1 ft and ≤4 ft)
6
  3 = Deep Contiguous Flooding (>4 ft)
7
+
8
+ Two query paths exist:
9
+ join_raster(point) — fast path. Samples the baked GeoTIFFs in
10
+ data/baked/. ~3 ms per scenario, ~70 ms cold-open. Used by
11
+ step_dep in the FSM.
12
+ join(assets) — legacy GDB path via gpd.sjoin. Retained as
13
+ a fallback when baked rasters are absent (local dev) and as
14
+ the polygon-overlap path used by coverage_for_polygon for
15
+ neighborhood mode.
16
  """
17
  from __future__ import annotations
18
 
19
+ import logging
20
+ import threading
21
  from functools import lru_cache
22
 
23
  import geopandas as gpd
24
 
25
  from app.spatial import DATA, NYC_CRS
26
 
27
+ log = logging.getLogger(__name__)
28
+ BAKED = DATA / "baked"
29
+ _TLOCAL = threading.local()
30
+ _FALLBACK_WARNED = False
31
+
32
  ROOT = DATA / "dep"
33
 
34
  SCENARIOS = {
 
88
  return SCENARIOS[scenario]["label"]
89
 
90
 
91
+ def _raster_handles():
92
+ """Per-thread rasterio handle cache. rasterio.DatasetReader is not
93
+ safe to share across threads for concurrent .sample() calls; the
94
+ FSM runs each request on its own executor thread, so we keep one
95
+ handle set per thread."""
96
+ h = getattr(_TLOCAL, "handles", None)
97
+ if h is not None:
98
+ return h
99
+ import rasterio
100
+ h = {}
101
+ for s in SCENARIOS:
102
+ p = BAKED / f"{s}.tif"
103
+ if not p.exists():
104
+ return None
105
+ h[s] = rasterio.open(str(p))
106
+ _TLOCAL.handles = h
107
+ return h
108
+
109
+
110
+ def join_raster(pt_geom_2263, scenario: str) -> int:
111
+ """Fast path. Returns the integer depth class (0=outside, 1/2/3) for a
112
+ single shapely Point in EPSG:2263. Falls back to the GDB join() path
113
+ if baked rasters are missing — emits a one-time warning so local dev
114
+ still works without the bake artifacts."""
115
+ global _FALLBACK_WARNED
116
+ h = _raster_handles()
117
+ if h is None:
118
+ if not _FALLBACK_WARNED:
119
+ log.warning(
120
+ "data/baked/dep_*.tif not found — falling back to GDB sjoin. "
121
+ "Run: uv run python scripts/bake_cornerstone_rasters.py"
122
+ )
123
+ _FALLBACK_WARNED = True
124
+ # legacy fallback — wrap point in a one-row GeoDataFrame
125
+ a = gpd.GeoDataFrame(geometry=[pt_geom_2263], crs=NYC_CRS)
126
+ return int(join(a, scenario).iloc[0]["depth_class"])
127
+ ds = h[scenario]
128
+ v = next(ds.sample([(pt_geom_2263.x, pt_geom_2263.y)]))
129
+ return int(v[0])
130
+
131
+
132
  def coverage_for_polygon(polygon, scenario: str,
133
  polygon_crs: str = "EPSG:4326") -> dict:
134
  """Polygon-level summary: what fraction of the input polygon falls into
app/flood_layers/sandy_inundation.py CHANGED
@@ -1,15 +1,30 @@
1
- """NYC Sandy Inundation Zone (empirical 2012 extent, NYC OD 5xsi-dfpx)."""
 
 
 
 
 
 
 
 
2
  from __future__ import annotations
3
 
 
 
4
  from functools import lru_cache
5
 
6
  import geopandas as gpd
7
 
8
- from app.spatial import DATA, load_layer
9
 
10
  DOC_ID = "sandy_inundation"
11
  CITATION = "NYC Sandy Inundation Zone (NYC OpenData 5xsi-dfpx, empirical 2012 extent)"
12
 
 
 
 
 
 
13
 
14
  @lru_cache(maxsize=1)
15
  def load() -> gpd.GeoDataFrame:
@@ -34,6 +49,39 @@ def join(assets: gpd.GeoDataFrame) -> gpd.pd.Series:
34
  return s.reset_index(drop=True)
35
 
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  def coverage_for_polygon(polygon, polygon_crs: str = "EPSG:4326") -> dict:
38
  """Polygon-level summary: what fraction of the input polygon overlaps
39
  the 2012 Sandy inundation extent? Used in neighborhood-mode queries.
 
1
+ """NYC Sandy Inundation Zone (empirical 2012 extent, NYC OD 5xsi-dfpx).
2
+
3
+ Two query paths exist:
4
+ inside_raster(point) — fast path. Samples data/baked/sandy.tif.
5
+ ~1 ms; used by step_sandy in the FSM.
6
+ join(assets) — legacy GeoJSON sjoin path. Retained as a
7
+ fallback when the baked raster is absent (local dev) and
8
+ for coverage_for_polygon (neighborhood mode).
9
+ """
10
  from __future__ import annotations
11
 
12
+ import logging
13
+ import threading
14
  from functools import lru_cache
15
 
16
  import geopandas as gpd
17
 
18
+ from app.spatial import DATA, NYC_CRS, load_layer
19
 
20
  DOC_ID = "sandy_inundation"
21
  CITATION = "NYC Sandy Inundation Zone (NYC OpenData 5xsi-dfpx, empirical 2012 extent)"
22
 
23
+ log = logging.getLogger(__name__)
24
+ BAKED = DATA / "baked"
25
+ _TLOCAL = threading.local()
26
+ _FALLBACK_WARNED = False
27
+
28
 
29
  @lru_cache(maxsize=1)
30
  def load() -> gpd.GeoDataFrame:
 
49
  return s.reset_index(drop=True)
50
 
51
 
52
+ def _raster_handle():
53
+ """Per-thread rasterio handle. See dep_stormwater._raster_handles."""
54
+ h = getattr(_TLOCAL, "handle", None)
55
+ if h is not None:
56
+ return h
57
+ p = BAKED / "sandy.tif"
58
+ if not p.exists():
59
+ return None
60
+ import rasterio
61
+ h = rasterio.open(str(p))
62
+ _TLOCAL.handle = h
63
+ return h
64
+
65
+
66
+ def inside_raster(pt_geom_2263) -> bool:
67
+ """Fast path. True if the shapely Point (in EPSG:2263) falls inside the
68
+ 2012 Sandy inundation extent. Falls back to the GeoJSON sjoin path if
69
+ data/baked/sandy.tif is missing."""
70
+ global _FALLBACK_WARNED
71
+ h = _raster_handle()
72
+ if h is None:
73
+ if not _FALLBACK_WARNED:
74
+ log.warning(
75
+ "data/baked/sandy.tif not found — falling back to GeoJSON sjoin. "
76
+ "Run: uv run python scripts/bake_cornerstone_rasters.py"
77
+ )
78
+ _FALLBACK_WARNED = True
79
+ a = gpd.GeoDataFrame(geometry=[pt_geom_2263], crs=NYC_CRS)
80
+ return bool(join(a).iloc[0])
81
+ v = next(h.sample([(pt_geom_2263.x, pt_geom_2263.y)]))
82
+ return bool(int(v[0]))
83
+
84
+
85
  def coverage_for_polygon(polygon, polygon_crs: str = "EPSG:4326") -> dict:
86
  """Polygon-level summary: what fraction of the input polygon overlaps
87
  the 2012 Sandy inundation extent? Used in neighborhood-mode queries.
app/fsm.py CHANGED
@@ -174,8 +174,10 @@ def step_sandy(state: State) -> State:
174
  if not _in_nyc(state["lat"], state["lon"]):
175
  rec["ok"] = False; rec["err"] = "out of NYC scope"
176
  return state.update(sandy=None, trace=trace)
177
- pt = gpd.GeoDataFrame(geometry=[Point(state["lon"], state["lat"])], crs="EPSG:4326").to_crs("EPSG:2263")
178
- flag = bool(sandy_inundation.join(pt).iloc[0])
 
 
179
  rec["ok"] = True; rec["result"] = {"inside": flag}
180
  return state.update(sandy=flag, trace=trace)
181
  except Exception as e:
@@ -196,13 +198,15 @@ def step_dep(state: State) -> State:
196
  if not _in_nyc(state["lat"], state["lon"]):
197
  rec["ok"] = False; rec["err"] = "out of NYC scope"
198
  return state.update(dep=None, trace=trace)
199
- pt = gpd.GeoDataFrame(geometry=[Point(state["lon"], state["lat"])], crs="EPSG:4326").to_crs("EPSG:2263")
 
 
200
  out: dict[str, Any] = {}
201
  for scen in ["dep_extreme_2080", "dep_moderate_2050", "dep_moderate_current"]:
202
- j = dep_stormwater.join(pt, scen).iloc[0]
203
  out[scen] = {
204
- "depth_class": int(j["depth_class"]),
205
- "depth_label": j["depth_label"],
206
  "citation": f"NYC DEP Stormwater Flood Map — {dep_stormwater.label(scen)}",
207
  }
208
  rec["ok"] = True; rec["result"] = {k: v["depth_label"] for k, v in out.items()}
 
174
  if not _in_nyc(state["lat"], state["lon"]):
175
  rec["ok"] = False; rec["err"] = "out of NYC scope"
176
  return state.update(sandy=None, trace=trace)
177
+ pt_geom = (gpd.GeoDataFrame(geometry=[Point(state["lon"], state["lat"])],
178
+ crs="EPSG:4326")
179
+ .to_crs("EPSG:2263").iloc[0].geometry)
180
+ flag = sandy_inundation.inside_raster(pt_geom)
181
  rec["ok"] = True; rec["result"] = {"inside": flag}
182
  return state.update(sandy=flag, trace=trace)
183
  except Exception as e:
 
198
  if not _in_nyc(state["lat"], state["lon"]):
199
  rec["ok"] = False; rec["err"] = "out of NYC scope"
200
  return state.update(dep=None, trace=trace)
201
+ pt_geom = (gpd.GeoDataFrame(geometry=[Point(state["lon"], state["lat"])],
202
+ crs="EPSG:4326")
203
+ .to_crs("EPSG:2263").iloc[0].geometry)
204
  out: dict[str, Any] = {}
205
  for scen in ["dep_extreme_2080", "dep_moderate_2050", "dep_moderate_current"]:
206
+ cls = dep_stormwater.join_raster(pt_geom, scen)
207
  out[scen] = {
208
+ "depth_class": cls,
209
+ "depth_label": dep_stormwater.DEPTH_CLASS.get(cls, "outside"),
210
  "citation": f"NYC DEP Stormwater Flood Map — {dep_stormwater.label(scen)}",
211
  }
212
  rec["ok"] = True; rec["result"] = {k: v["depth_label"] for k, v in out.items()}
data/baked/dep_extreme_2080.tif ADDED

Git LFS Details

  • SHA256: fc0586e57d11e91ebec5dd0413aa81c7258d88e063a4f03d1724cdf15e734ddd
  • Pointer size: 132 Bytes
  • Size of remote file: 3.63 MB
data/baked/dep_moderate_2050.tif ADDED

Git LFS Details

  • SHA256: b9b9d1d6aefe462bb379eb23545f14ef5ac0b77f27d0edbbf0245ee496c0663b
  • Pointer size: 132 Bytes
  • Size of remote file: 1.32 MB
data/baked/dep_moderate_current.tif ADDED

Git LFS Details

  • SHA256: 651e5cb1a019ef5fee9b2743c58b93ea5ceb4dd3ff1ac62554c03a62dee1c909
  • Pointer size: 131 Bytes
  • Size of remote file: 917 kB
data/baked/sandy.tif ADDED

Git LFS Details

  • SHA256: 8a0dcf61533dfac5018c8bda84f93478dfd51788d62a43717a2529bcc9b8cd6b
  • Pointer size: 132 Bytes
  • Size of remote file: 1.24 MB
experiments/22_cornerstone_optim/README.md ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 22 — Cornerstone optimization
2
+
3
+ **Goal:** drop the 33s DEP join and 5–10s Sandy join on the HF Space CPU
4
+ to <1s without changing Stone semantics.
5
+
6
+ ## Layer triage: live vs bakeable
7
+
8
+ The Cornerstone is a **Hazard Reader** — it reads what the ground
9
+ *already remembers*. Every Cornerstone source is by definition
10
+ historical or modeled, so the per-query cost of recomputing a
11
+ spatial join is unwarranted. Live recency belongs to the **Touchstone**
12
+ (FloodNet) and **Lodestone** (forecasts), not here.
13
+
14
+ | Source | Nature | Updates | Verdict |
15
+ |---|---|---|---|
16
+ | `dep_stormwater` | Modeled scenarios (2050/2080 SLR + design storm) | NYC DEP republishes every few years | **bake** to GeoTIFF |
17
+ | `sandy_inundation` | Empirical 2012 extent | Will not change | **bake** to GeoTIFF |
18
+ | `ida_hwm` | USGS HWMs (point set, ~few hundred) | Will not change | already O(n) haversine — leave alone |
19
+ | `prithvi_water` | Pre-baked Ida polygons | Will not change | already baked |
20
+ | `microtopo` (DEM/HAND/TWI) | LiDAR-derived rasters | Re-baked on terrain changes | already raster — already fast |
21
+
22
+ **Live (kept live for demo recency):**
23
+ - Geocoding (Geosearch + Nominatim fallback)
24
+ - FloodNet sensor pull (Touchstone)
25
+ - TTM battery surge / pluvial forecast (Lodestone)
26
+ - NYCHA / DOE / MTA registers (semi-static, prebuilt at boot — already fast)
27
+
28
+ So this experiment only touches the two slow Cornerstone specialists.
29
+
30
+ ## Approaches benchmarked
31
+
32
+ 1. **baseline** — current `gpd.sjoin` (full layer)
33
+ 2. **strtree** — pre-warm `gdf.sindex`, query with single-point `intersects`
34
+ 3. **bbox-prefilter** — clip layer to bbox(point, 100ft) then sjoin
35
+ 4. **raster** — bake polygons → uint8 GeoTIFF in EPSG:2263; `rasterio.sample()` per point
36
+
37
+ For DEP, the raster encodes max `Flooding_Category` per pixel
38
+ (0=outside, 1/2/3 = depth class). Sandy is a 1-bit raster.
39
+
40
+ ## Files
41
+
42
+ - `bench.py` — runs all four paths on canonical addresses
43
+ - `bake_rasters.py` — one-time bake of DEP + Sandy to GeoTIFF
44
+ - `RESULTS.md` — written after `bench.py` completes
45
+
46
+ ## Canonical addresses
47
+
48
+ Per CLAUDE.md / probe set:
49
+
50
+ 1. 80 Pioneer Street, Brooklyn — (40.6790, -74.0050)
51
+ 2. 2508 Beach Channel Drive, Queens — (40.5867, -73.8062)
52
+ 3. Coney Island I Houses, Brooklyn — (40.5772, -73.9870)
53
+ 4. Carleton Manor, Queens — (40.6033, -73.7626)
experiments/22_cornerstone_optim/RESULTS.md ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 22 — Cornerstone optimization · results
2
+
3
+ **Run:** May 8, 2026 · MacBook (local), Python 3.12, GeoPandas 1.1.3,
4
+ Shapely 2.1.2, Rasterio 1.5.0.
5
+
6
+ ## Headline
7
+
8
+ The "33s DEP join" reported on HF Space is **not the join** — it's the
9
+ GDB **cold-load**. On Mac with a warm `lru_cache`:
10
+
11
+ | Layer | Cold-load | Warm join (1 pt) |
12
+ |---|---:|---:|
13
+ | `dep_extreme_2080` | **30.9s** | ~4 ms |
14
+ | `dep_moderate_2050` | 1.5s | ~3 ms |
15
+ | `dep_moderate_current` | 0.9s | ~3 ms |
16
+ | `sandy_inundation` | 1.8s | ~1 ms |
17
+
18
+ On HF Space's shared CPU, with worker memory pressure evicting the
19
+ cache, every query pays cold-load again. That's the source of the
20
+ ReadTimeouts.
21
+
22
+ ## Bench summary (per-query ms, all 3 DEP scenarios + Sandy)
23
+
24
+ | Address | baseline | strtree | bbox-prefilter | raster |
25
+ |---|---:|---:|---:|---:|
26
+ | 80 Pioneer St, Brooklyn | 13.0 | 1.6 | 17.7 | 3.2 |
27
+ | 2508 Beach Channel Dr, Queens | 11.2 | 1.9 | 12.5 | 2.4 |
28
+ | Coney Island I Houses, BK | 10.8 | 1.9 | 7.1 | 2.1 |
29
+ | Carleton Manor, Queens | 10.8 | 1.6 | 25.5 | 1.9 |
30
+
31
+ **All four paths achieve full parity with baseline** on `depth_class`
32
+ per scenario and `sandy.inside` for every canonical address.
33
+
34
+ ## Cold-load comparison (paid once at HF Space boot)
35
+
36
+ | Path | Cold init |
37
+ |---|---:|
38
+ | baseline (`gpd.read_file` GDB ×3 + GeoJSON) | **~35 s** |
39
+ | strtree (same load + tree build) | ~35 s |
40
+ | **raster (`rasterio.open` ×4, mmap)** | **73 ms** |
41
+
42
+ Raster reduces boot-to-first-query from 35s to under 100ms while
43
+ also cutting per-query latency in half vs strtree.
44
+
45
+ ## Disk footprint
46
+
47
+ DEFLATE-compressed uint8 GeoTIFF, NYC-wide grid at 10 ft/px:
48
+
49
+ | File | Size |
50
+ |---|---:|
51
+ | `dep_extreme_2080.tif` | 3.6 MB |
52
+ | `dep_moderate_2050.tif` | 1.3 MB |
53
+ | `dep_moderate_current.tif` | 0.9 MB |
54
+ | `sandy.tif` | 1.2 MB |
55
+ | **Total baked** | **7.0 MB** |
56
+
57
+ Compare: source GDBs total ~46 MB and the Sandy GeoJSON is 87 MB —
58
+ raster bake is 7% the size of the originals.
59
+
60
+ ## Verdict
61
+
62
+ **Ship the raster bake.** It wins on every axis:
63
+
64
+ - Per-query: ~5× faster than baseline (2 ms vs 11 ms locally; on HF
65
+ CPU the multiplier will be larger).
66
+ - Cold-load: ~500× faster (73 ms vs ~35 s). This is the actual fix
67
+ for the 33s ReadTimeouts.
68
+ - Disk: 7 MB shipped vs 46 MB GDB + 87 MB GeoJSON. Faster
69
+ HF Space pulls.
70
+ - Parity: identical depth class on all 4 canonical addresses, all 3
71
+ DEP scenarios, plus Sandy.
72
+
73
+ STRtree is a useful fallback if for any reason we cannot ship the
74
+ baked rasters (e.g. demo-time edits to source layers), but the
75
+ default integration plan is raster.
76
+
77
+ ## Live vs bakeable — recap of triage
78
+
79
+ These layers are **all** baked (Cornerstone = "what the ground
80
+ remembers"; static by definition):
81
+
82
+ - DEP stormwater scenarios — modeled, NYC DEP republishes ~every 5y
83
+ - Sandy 2012 inundation — historical, will not change
84
+ - Ida 2021 HWMs — already a small point set; haversine is fast
85
+ - Microtopo (DEM/HAND/TWI) — already raster
86
+ - Prithvi-EO Ida polygons — already baked artifact
87
+
88
+ These layers stay **live** for demo recency (and also because they're
89
+ fast):
90
+
91
+ - Geocoding (Geosearch + Nominatim fallback)
92
+ - FloodNet sensor pull (Touchstone)
93
+ - TTM battery surge / pluvial forecast (Lodestone)
94
+ - NYCHA / DOE / MTA registers (semi-static, prebuilt at boot)
95
+
96
+ ## Integration plan
97
+
98
+ 1. Move `bake_rasters.py` → `scripts/bake_cornerstone_rasters.py`.
99
+ 2. Add `data/baked/` to repo (7 MB; well under HF Space limits).
100
+ 3. Refactor `app/flood_layers/dep_stormwater.py` and
101
+ `app/flood_layers/sandy_inundation.py` to expose:
102
+ - the existing GDB-backed `join()` (kept as fallback if raster
103
+ missing)
104
+ - a new `join_raster()` that opens the baked GeoTIFF on first use
105
+ and `sample()`s each asset point
106
+ 4. `step_dep` and `step_sandy` in `app/fsm.py` call `join_raster()`.
107
+ 5. Re-run `scripts/probe_addresses.py` (5/5 must pass) and the 20-query
108
+ batch from FRIDAY-REPORT to verify ReadTimeouts are gone.
109
+
110
+ `coverage_for_polygon` (neighborhood mode) stays on the GDB path for
111
+ now since polygon × polygon overlap fraction is harder to do well in
112
+ raster — but neighborhood mode is not on the demo critical path.
experiments/22_cornerstone_optim/bake_rasters.py ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Bake DEP scenarios + Sandy extent to compact GeoTIFFs.
2
+
3
+ For each DEP scenario we produce a uint8 raster keyed by max
4
+ Flooding_Category (0=outside, 1/2/3 = depth class). Sandy is a uint8
5
+ 0/1 mask. CRS is EPSG:2263 (feet) so callers project once and sample
6
+ at native units.
7
+
8
+ Resolution defaults to 10 ft. At that resolution a single pixel is
9
+ ~smaller than a building footprint, which is more than fine for
10
+ point-in-polygon queries. NYC bbox at 10 ft fits comfortably in a
11
+ ~12k x 16k uint8 array — a few hundred MB uncompressed but DEFLATE
12
+ compresses these heavily because most pixels are 0.
13
+
14
+ Run:
15
+ uv run python experiments/22_cornerstone_optim/bake_rasters.py
16
+ """
17
+ from __future__ import annotations
18
+
19
+ import sys
20
+ import time
21
+ from pathlib import Path
22
+
23
+ import numpy as np
24
+ import rasterio
25
+ from rasterio import features
26
+ from rasterio.transform import from_origin
27
+
28
+ REPO = Path(__file__).resolve().parents[2]
29
+ sys.path.insert(0, str(REPO))
30
+
31
+ from app.flood_layers import dep_stormwater, sandy_inundation # noqa: E402
32
+
33
+ NYC_CRS = "EPSG:2263"
34
+ RES_FT = 10.0 # raster cell size in feet
35
+ OUT_DIR = REPO / "experiments" / "22_cornerstone_optim" / "baked"
36
+
37
+
38
+ def nyc_grid(res_ft: float = RES_FT):
39
+ """Return (transform, width, height) covering all of NYC + harbor.
40
+
41
+ Bounds chosen wide enough to cover every Cornerstone source.
42
+ """
43
+ minx, miny = 910_000.0, 110_000.0 # SW of Staten Island
44
+ maxx, maxy = 1_080_000.0, 280_000.0 # NE of Bronx
45
+ width = int(np.ceil((maxx - minx) / res_ft))
46
+ height = int(np.ceil((maxy - miny) / res_ft))
47
+ transform = from_origin(minx, maxy, res_ft, res_ft)
48
+ return transform, width, height
49
+
50
+
51
+ def burn(gdf, value_col_or_const, out_path: Path, transform, width, height):
52
+ if isinstance(value_col_or_const, str):
53
+ shapes = ((geom, int(val)) for geom, val
54
+ in zip(gdf.geometry, gdf[value_col_or_const]))
55
+ else:
56
+ v = int(value_col_or_const)
57
+ shapes = ((geom, v) for geom in gdf.geometry)
58
+
59
+ arr = features.rasterize(
60
+ shapes=shapes,
61
+ out_shape=(height, width),
62
+ transform=transform,
63
+ fill=0,
64
+ dtype="uint8",
65
+ merge_alg=rasterio.enums.MergeAlg.replace,
66
+ )
67
+
68
+ out_path.parent.mkdir(parents=True, exist_ok=True)
69
+ profile = {
70
+ "driver": "GTiff",
71
+ "dtype": "uint8",
72
+ "count": 1,
73
+ "width": width,
74
+ "height": height,
75
+ "transform": transform,
76
+ "crs": NYC_CRS,
77
+ "compress": "deflate",
78
+ "predictor": 2,
79
+ "tiled": True,
80
+ "blockxsize": 512,
81
+ "blockysize": 512,
82
+ "nodata": 0,
83
+ }
84
+ with rasterio.open(out_path, "w", **profile) as dst:
85
+ dst.write(arr, 1)
86
+ return arr
87
+
88
+
89
+ def bake_dep(scenario: str, transform, width, height) -> dict:
90
+ print(f" baking {scenario}...", end=" ", flush=True)
91
+ t0 = time.perf_counter()
92
+ g = dep_stormwater.load(scenario).copy()
93
+ g["Flooding_Category"] = g["Flooding_Category"].astype(int)
94
+ # rasterize lowest first so highest category wins at overlaps
95
+ g = g.sort_values("Flooding_Category", ascending=True)
96
+ out = OUT_DIR / f"{scenario}.tif"
97
+ arr = burn(g, "Flooding_Category", out, transform, width, height)
98
+ dt = time.perf_counter() - t0
99
+ size_mb = out.stat().st_size / 1e6
100
+ nz = int((arr > 0).sum())
101
+ print(f"{dt:5.1f}s {size_mb:5.1f} MB on disk nonzero={nz:,}")
102
+ return {"path": str(out), "elapsed_s": dt, "size_mb": size_mb, "nonzero_px": nz}
103
+
104
+
105
+ def bake_sandy(transform, width, height) -> dict:
106
+ print(" baking sandy...", end=" ", flush=True)
107
+ t0 = time.perf_counter()
108
+ g = sandy_inundation.load().copy()
109
+ out = OUT_DIR / "sandy.tif"
110
+ arr = burn(g, 1, out, transform, width, height)
111
+ dt = time.perf_counter() - t0
112
+ size_mb = out.stat().st_size / 1e6
113
+ nz = int((arr > 0).sum())
114
+ print(f"{dt:5.1f}s {size_mb:5.1f} MB on disk nonzero={nz:,}")
115
+ return {"path": str(out), "elapsed_s": dt, "size_mb": size_mb, "nonzero_px": nz}
116
+
117
+
118
+ def main():
119
+ transform, width, height = nyc_grid(RES_FT)
120
+ print(f"Grid: {width} x {height} px @ {RES_FT} ft/px (~{width*height/1e6:.0f} M cells)")
121
+ print(f"Output: {OUT_DIR}")
122
+ print()
123
+
124
+ bake_dep("dep_extreme_2080", transform, width, height)
125
+ bake_dep("dep_moderate_2050", transform, width, height)
126
+ bake_dep("dep_moderate_current", transform, width, height)
127
+ bake_sandy(transform, width, height)
128
+
129
+ total_mb = sum(p.stat().st_size for p in OUT_DIR.glob("*.tif")) / 1e6
130
+ print(f"\nTotal baked: {total_mb:.1f} MB")
131
+
132
+
133
+ if __name__ == "__main__":
134
+ main()
experiments/22_cornerstone_optim/baked/dep_extreme_2080.tif ADDED

Git LFS Details

  • SHA256: fc0586e57d11e91ebec5dd0413aa81c7258d88e063a4f03d1724cdf15e734ddd
  • Pointer size: 132 Bytes
  • Size of remote file: 3.63 MB
experiments/22_cornerstone_optim/baked/dep_moderate_2050.tif ADDED

Git LFS Details

  • SHA256: b9b9d1d6aefe462bb379eb23545f14ef5ac0b77f27d0edbbf0245ee496c0663b
  • Pointer size: 132 Bytes
  • Size of remote file: 1.32 MB
experiments/22_cornerstone_optim/baked/dep_moderate_current.tif ADDED

Git LFS Details

  • SHA256: 651e5cb1a019ef5fee9b2743c58b93ea5ceb4dd3ff1ac62554c03a62dee1c909
  • Pointer size: 131 Bytes
  • Size of remote file: 917 kB
experiments/22_cornerstone_optim/baked/sandy.tif ADDED

Git LFS Details

  • SHA256: 8a0dcf61533dfac5018c8bda84f93478dfd51788d62a43717a2529bcc9b8cd6b
  • Pointer size: 132 Bytes
  • Size of remote file: 1.24 MB
experiments/22_cornerstone_optim/bench.py ADDED
@@ -0,0 +1,272 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Bench all four Cornerstone-join approaches on canonical addresses.
2
+
3
+ Run from repo root:
4
+ uv run python experiments/22_cornerstone_optim/bench.py
5
+
6
+ The script benchmarks per-point query time AFTER warm-up (cold-start
7
+ load is reported separately). The HF Space pays warm-up once at boot;
8
+ the per-query latency is what compounds in the 20-query batch.
9
+ """
10
+ from __future__ import annotations
11
+
12
+ import sys
13
+ import time
14
+ from pathlib import Path
15
+
16
+ import geopandas as gpd
17
+ import numpy as np
18
+ from shapely.geometry import Point, box
19
+ from shapely.strtree import STRtree
20
+
21
+ REPO = Path(__file__).resolve().parents[2]
22
+ sys.path.insert(0, str(REPO))
23
+
24
+ from app.flood_layers import dep_stormwater, sandy_inundation # noqa: E402
25
+
26
+ NYC_CRS = "EPSG:2263"
27
+
28
+ ADDRESSES = [
29
+ ("80 Pioneer St, Brooklyn", 40.6790, -74.0050),
30
+ ("2508 Beach Channel Dr, Queens", 40.5867, -73.8062),
31
+ ("Coney Island I Houses, BK", 40.5772, -73.9870),
32
+ ("Carleton Manor, Queens", 40.6033, -73.7626),
33
+ ]
34
+
35
+ DEP_SCENARIOS = ["dep_extreme_2080", "dep_moderate_2050", "dep_moderate_current"]
36
+
37
+
38
+ def to_2263(lat: float, lon: float):
39
+ pt = gpd.GeoDataFrame(geometry=[Point(lon, lat)], crs="EPSG:4326").to_crs(NYC_CRS)
40
+ return pt, pt.iloc[0].geometry
41
+
42
+
43
+ # ---------------------------------------------------------------------------
44
+ # 1. baseline — current production path
45
+ # ---------------------------------------------------------------------------
46
+
47
+ def baseline_dep(pt_gdf, scenario):
48
+ j = dep_stormwater.join(pt_gdf, scenario).iloc[0]
49
+ return int(j["depth_class"])
50
+
51
+
52
+ def baseline_sandy(pt_gdf):
53
+ return bool(sandy_inundation.join(pt_gdf).iloc[0])
54
+
55
+
56
+ # ---------------------------------------------------------------------------
57
+ # 2. strtree — pre-warmed index, single-point intersects
58
+ # ---------------------------------------------------------------------------
59
+
60
+ class StrTreeDEP:
61
+ def __init__(self):
62
+ self.trees = {}
63
+ self.cats = {}
64
+ for s in DEP_SCENARIOS:
65
+ g = dep_stormwater.load(s)
66
+ geoms = list(g.geometry.values)
67
+ cats = g["Flooding_Category"].astype(int).to_numpy()
68
+ self.trees[s] = STRtree(geoms)
69
+ self.cats[s] = (geoms, cats)
70
+
71
+ def query(self, pt_geom, scenario):
72
+ tree = self.trees[scenario]
73
+ geoms, cats = self.cats[scenario]
74
+ idx = tree.query(pt_geom, predicate="intersects")
75
+ if len(idx) == 0:
76
+ return 0
77
+ return int(cats[idx].max())
78
+
79
+
80
+ class StrTreeSandy:
81
+ def __init__(self):
82
+ g = sandy_inundation.load()
83
+ self.geoms = list(g.geometry.values)
84
+ self.tree = STRtree(self.geoms)
85
+
86
+ def query(self, pt_geom):
87
+ idx = self.tree.query(pt_geom, predicate="intersects")
88
+ return len(idx) > 0
89
+
90
+
91
+ # ---------------------------------------------------------------------------
92
+ # 3. bbox-prefilter — clip layer to small window, then sjoin
93
+ # ---------------------------------------------------------------------------
94
+
95
+ def bbox_prefilter_dep(pt_geom, scenario, pad_ft=200):
96
+ g = dep_stormwater.load(scenario)
97
+ minx, miny = pt_geom.x - pad_ft, pt_geom.y - pad_ft
98
+ maxx, maxy = pt_geom.x + pad_ft, pt_geom.y + pad_ft
99
+ sub = g.cx[minx:maxx, miny:maxy]
100
+ if sub.empty:
101
+ return 0
102
+ hits = sub[sub.intersects(pt_geom)]
103
+ if hits.empty:
104
+ return 0
105
+ return int(hits["Flooding_Category"].astype(int).max())
106
+
107
+
108
+ def bbox_prefilter_sandy(pt_geom, pad_ft=200):
109
+ g = sandy_inundation.load()
110
+ minx, miny = pt_geom.x - pad_ft, pt_geom.y - pad_ft
111
+ maxx, maxy = pt_geom.x + pad_ft, pt_geom.y + pad_ft
112
+ sub = g.cx[minx:maxx, miny:maxy]
113
+ if sub.empty:
114
+ return False
115
+ return bool(sub.intersects(pt_geom).any())
116
+
117
+
118
+ # ---------------------------------------------------------------------------
119
+ # 4. raster — sample baked GeoTIFFs
120
+ # ---------------------------------------------------------------------------
121
+
122
+ def raster_paths():
123
+ out = REPO / "experiments" / "22_cornerstone_optim" / "baked"
124
+ return {
125
+ "dep_extreme_2080": out / "dep_extreme_2080.tif",
126
+ "dep_moderate_2050": out / "dep_moderate_2050.tif",
127
+ "dep_moderate_current": out / "dep_moderate_current.tif",
128
+ "sandy": out / "sandy.tif",
129
+ }
130
+
131
+
132
+ class RasterLookup:
133
+ def __init__(self):
134
+ import rasterio
135
+ self.rasterio = rasterio
136
+ paths = raster_paths()
137
+ missing = [k for k, p in paths.items() if not p.exists()]
138
+ if missing:
139
+ raise FileNotFoundError(
140
+ f"missing baked rasters: {missing}\n"
141
+ f"run: uv run python experiments/22_cornerstone_optim/bake_rasters.py"
142
+ )
143
+ self.handles = {k: rasterio.open(str(p)) for k, p in paths.items()}
144
+
145
+ def sample(self, pt_geom, key):
146
+ ds = self.handles[key]
147
+ v = next(ds.sample([(pt_geom.x, pt_geom.y)]))
148
+ return int(v[0])
149
+
150
+
151
+ # ---------------------------------------------------------------------------
152
+ # bench harness
153
+ # ---------------------------------------------------------------------------
154
+
155
+ def time_call(fn, *args, **kwargs):
156
+ t0 = time.perf_counter()
157
+ out = fn(*args, **kwargs)
158
+ return time.perf_counter() - t0, out
159
+
160
+
161
+ def main():
162
+ print("=" * 78)
163
+ print("Cornerstone optimization bench")
164
+ print("=" * 78)
165
+
166
+ addrs_2263 = []
167
+ for label, lat, lon in ADDRESSES:
168
+ pt_gdf, pt_geom = to_2263(lat, lon)
169
+ addrs_2263.append((label, pt_gdf, pt_geom))
170
+
171
+ # cold load + warm-up baseline lru_cache
172
+ print("\n[cold-load times — paid once at boot]")
173
+ t, _ = time_call(dep_stormwater.load, "dep_extreme_2080")
174
+ print(f" dep_extreme_2080.load {t*1000:8.1f} ms")
175
+ t, _ = time_call(dep_stormwater.load, "dep_moderate_2050")
176
+ print(f" dep_moderate_2050.load {t*1000:8.1f} ms")
177
+ t, _ = time_call(dep_stormwater.load, "dep_moderate_current")
178
+ print(f" dep_moderate_current.load {t*1000:8.1f} ms")
179
+ t, _ = time_call(sandy_inundation.load)
180
+ print(f" sandy.load {t*1000:8.1f} ms")
181
+
182
+ # build approaches
183
+ print("\n[approach init]")
184
+ t, strtree_dep = time_call(StrTreeDEP)
185
+ print(f" STRtree DEP build {t*1000:8.1f} ms")
186
+ t, strtree_sandy = time_call(StrTreeSandy)
187
+ print(f" STRtree Sandy build {t*1000:8.1f} ms")
188
+
189
+ raster = None
190
+ try:
191
+ t, raster = time_call(RasterLookup)
192
+ print(f" raster open {t*1000:8.1f} ms")
193
+ except FileNotFoundError as e:
194
+ print(f" raster: NOT BAKED — {e}")
195
+
196
+ results = {} # approach -> list of per-address per-query times (ms)
197
+
198
+ for label, pt_gdf, pt_geom in addrs_2263:
199
+ print(f"\n--- {label} ---")
200
+ row = {}
201
+
202
+ # baseline: full sjoin per scenario
203
+ total = 0
204
+ truth_dep = {}
205
+ for s in DEP_SCENARIOS:
206
+ t, c = time_call(baseline_dep, pt_gdf, s)
207
+ truth_dep[s] = c
208
+ total += t
209
+ t_sandy_base, truth_sandy = time_call(baseline_sandy, pt_gdf)
210
+ total += t_sandy_base
211
+ row["baseline"] = total * 1000
212
+ print(f" baseline (3 dep + sandy) {total*1000:8.1f} ms "
213
+ f"dep={truth_dep} sandy={truth_sandy}")
214
+
215
+ # strtree
216
+ total = 0
217
+ out_dep = {}
218
+ for s in DEP_SCENARIOS:
219
+ t, c = time_call(strtree_dep.query, pt_geom, s)
220
+ out_dep[s] = c
221
+ total += t
222
+ t, out_sandy = time_call(strtree_sandy.query, pt_geom)
223
+ total += t
224
+ row["strtree"] = total * 1000
225
+ ok = out_dep == truth_dep and out_sandy == truth_sandy
226
+ print(f" strtree {total*1000:8.1f} ms parity={ok}")
227
+
228
+ # bbox prefilter
229
+ total = 0
230
+ out_dep = {}
231
+ for s in DEP_SCENARIOS:
232
+ t, c = time_call(bbox_prefilter_dep, pt_geom, s)
233
+ out_dep[s] = c
234
+ total += t
235
+ t, out_sandy = time_call(bbox_prefilter_sandy, pt_geom)
236
+ total += t
237
+ row["bbox-prefilter"] = total * 1000
238
+ ok = out_dep == truth_dep and out_sandy == truth_sandy
239
+ print(f" bbox-prefilter {total*1000:8.1f} ms parity={ok}")
240
+
241
+ # raster
242
+ if raster is not None:
243
+ total = 0
244
+ out_dep = {}
245
+ for s in DEP_SCENARIOS:
246
+ t, c = time_call(raster.sample, pt_geom, s)
247
+ out_dep[s] = c
248
+ total += t
249
+ t, out_sandy_int = time_call(raster.sample, pt_geom, "sandy")
250
+ total += t
251
+ out_sandy = bool(out_sandy_int)
252
+ row["raster"] = total * 1000
253
+ ok = out_dep == truth_dep and out_sandy == truth_sandy
254
+ print(f" raster {total*1000:8.1f} ms parity={ok}")
255
+
256
+ results[label] = row
257
+
258
+ print("\n" + "=" * 78)
259
+ print("SUMMARY (per-query ms, lower is better)")
260
+ print("=" * 78)
261
+ headers = ["address", "baseline", "strtree", "bbox", "raster"]
262
+ print(f"{headers[0]:<32} {headers[1]:>10} {headers[2]:>10} {headers[3]:>10} {headers[4]:>10}")
263
+ for label, row in results.items():
264
+ print(f"{label:<32} "
265
+ f"{row.get('baseline', float('nan')):>10.1f} "
266
+ f"{row.get('strtree', float('nan')):>10.1f} "
267
+ f"{row.get('bbox-prefilter', float('nan')):>10.1f} "
268
+ f"{row.get('raster', float('nan')) if 'raster' in row else float('nan'):>10.1f}")
269
+
270
+
271
+ if __name__ == "__main__":
272
+ main()
experiments/22_cornerstone_optim/bench_concurrent.py ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Concurrency probe: simulate N users hitting the Cornerstone in parallel.
2
+
3
+ Compares three patterns under thread contention:
4
+ 1. baseline (gpd.sjoin) — current production
5
+ 2. raster-shared — single rasterio.DatasetReader shared across threads
6
+ (UNSAFE; included as a control to show why it's wrong)
7
+ 3. raster-tlocal — threading.local() DatasetReader per worker thread
8
+ (RECOMMENDED pattern)
9
+
10
+ Run: uv run python experiments/22_cornerstone_optim/bench_concurrent.py
11
+ """
12
+ from __future__ import annotations
13
+
14
+ import sys
15
+ import threading
16
+ import time
17
+ from concurrent.futures import ThreadPoolExecutor, as_completed
18
+ from pathlib import Path
19
+
20
+ import geopandas as gpd
21
+ import rasterio
22
+ from shapely.geometry import Point
23
+
24
+ REPO = Path(__file__).resolve().parents[2]
25
+ sys.path.insert(0, str(REPO))
26
+
27
+ from app.flood_layers import dep_stormwater, sandy_inundation # noqa: E402
28
+
29
+ NYC_CRS = "EPSG:2263"
30
+ N_CONCURRENT = 8
31
+ N_QUERIES_PER_THREAD = 5
32
+
33
+ ADDRESSES = [
34
+ (40.6790, -74.0050),
35
+ (40.5867, -73.8062),
36
+ (40.5772, -73.9870),
37
+ (40.6033, -73.7626),
38
+ ]
39
+
40
+ BAKED = REPO / "experiments" / "22_cornerstone_optim" / "baked"
41
+ RASTER_PATHS = {
42
+ "dep_extreme_2080": BAKED / "dep_extreme_2080.tif",
43
+ "dep_moderate_2050": BAKED / "dep_moderate_2050.tif",
44
+ "dep_moderate_current": BAKED / "dep_moderate_current.tif",
45
+ "sandy": BAKED / "sandy.tif",
46
+ }
47
+
48
+
49
+ def to_2263_point(lat, lon):
50
+ return gpd.GeoDataFrame(geometry=[Point(lon, lat)], crs="EPSG:4326").to_crs(NYC_CRS)
51
+
52
+
53
+ # --- pattern A: baseline sjoin ----------------------------------------------
54
+
55
+ def worker_baseline(thread_id):
56
+ times = []
57
+ for i in range(N_QUERIES_PER_THREAD):
58
+ lat, lon = ADDRESSES[(thread_id + i) % len(ADDRESSES)]
59
+ pt = to_2263_point(lat, lon)
60
+ t0 = time.perf_counter()
61
+ for s in ["dep_extreme_2080", "dep_moderate_2050", "dep_moderate_current"]:
62
+ dep_stormwater.join(pt, s)
63
+ sandy_inundation.join(pt)
64
+ times.append(time.perf_counter() - t0)
65
+ return times
66
+
67
+
68
+ # --- pattern B: shared DatasetReader (UNSAFE control) -----------------------
69
+
70
+ class SharedRaster:
71
+ def __init__(self):
72
+ self.handles = {k: rasterio.open(str(p)) for k, p in RASTER_PATHS.items()}
73
+
74
+ def sample(self, pt_geom, key):
75
+ ds = self.handles[key]
76
+ return int(next(ds.sample([(pt_geom.x, pt_geom.y)]))[0])
77
+
78
+
79
+ def worker_shared(args):
80
+ shared, thread_id = args
81
+ times = []
82
+ errors = 0
83
+ for i in range(N_QUERIES_PER_THREAD):
84
+ lat, lon = ADDRESSES[(thread_id + i) % len(ADDRESSES)]
85
+ pt = to_2263_point(lat, lon).iloc[0].geometry
86
+ t0 = time.perf_counter()
87
+ try:
88
+ for k in RASTER_PATHS:
89
+ shared.sample(pt, k)
90
+ except Exception:
91
+ errors += 1
92
+ times.append(time.perf_counter() - t0)
93
+ return times, errors
94
+
95
+
96
+ # --- pattern C: thread-local DatasetReader (RECOMMENDED) --------------------
97
+
98
+ _TL = threading.local()
99
+
100
+
101
+ def _tl_handles():
102
+ h = getattr(_TL, "handles", None)
103
+ if h is None:
104
+ h = {k: rasterio.open(str(p)) for k, p in RASTER_PATHS.items()}
105
+ _TL.handles = h
106
+ return h
107
+
108
+
109
+ def worker_tlocal(thread_id):
110
+ times = []
111
+ for i in range(N_QUERIES_PER_THREAD):
112
+ lat, lon = ADDRESSES[(thread_id + i) % len(ADDRESSES)]
113
+ pt = to_2263_point(lat, lon).iloc[0].geometry
114
+ h = _tl_handles()
115
+ t0 = time.perf_counter()
116
+ for k in RASTER_PATHS:
117
+ ds = h[k]
118
+ int(next(ds.sample([(pt.x, pt.y)]))[0])
119
+ times.append(time.perf_counter() - t0)
120
+ return times
121
+
122
+
123
+ # --- harness ----------------------------------------------------------------
124
+
125
+ def run_pattern(name, worker, *extra):
126
+ print(f"\n[{name}] N={N_CONCURRENT} threads × {N_QUERIES_PER_THREAD} queries")
127
+ t_wall = time.perf_counter()
128
+ all_times = []
129
+ errors = 0
130
+ with ThreadPoolExecutor(max_workers=N_CONCURRENT) as ex:
131
+ futs = [ex.submit(worker, *(extra + (i,))) for i in range(N_CONCURRENT)]
132
+ for f in as_completed(futs):
133
+ r = f.result()
134
+ if isinstance(r, tuple):
135
+ ts, err = r
136
+ errors += err
137
+ all_times.extend(ts)
138
+ else:
139
+ all_times.extend(r)
140
+ wall = time.perf_counter() - t_wall
141
+ n = len(all_times)
142
+ avg_ms = sum(all_times) / n * 1000
143
+ p95_ms = sorted(all_times)[int(0.95 * n) - 1] * 1000
144
+ print(f" wall {wall:5.2f}s per-query avg {avg_ms:6.1f} ms "
145
+ f"p95 {p95_ms:6.1f} ms errors={errors}")
146
+ return wall, avg_ms, p95_ms, errors
147
+
148
+
149
+ def main():
150
+ # warm caches first so we measure steady-state, not cold-load
151
+ print("warming baseline caches (first DEP load is ~30s)...")
152
+ pt = to_2263_point(*ADDRESSES[0][:2])
153
+ for s in RASTER_PATHS:
154
+ if s != "sandy":
155
+ dep_stormwater.join(pt, s)
156
+ sandy_inundation.join(pt)
157
+ print("warm.")
158
+
159
+ base = run_pattern("baseline (gpd.sjoin)", worker_baseline)
160
+
161
+ if not BAKED.exists() or not all(p.exists() for p in RASTER_PATHS.values()):
162
+ print("\nbaked rasters missing — run bake_rasters.py first")
163
+ return
164
+
165
+ shared = SharedRaster()
166
+ rb = run_pattern("raster-shared (UNSAFE)", worker_shared, shared)
167
+
168
+ rt = run_pattern("raster-tlocal (recommended)", worker_tlocal)
169
+
170
+ print("\n" + "=" * 72)
171
+ print(f"{'pattern':<32} {'wall(s)':>10} {'avg(ms)':>10} {'p95(ms)':>10} {'err':>5}")
172
+ print("=" * 72)
173
+ for name, r in [("baseline", base), ("raster-shared", rb), ("raster-tlocal", rt)]:
174
+ print(f"{name:<32} {r[0]:>10.2f} {r[1]:>10.1f} {r[2]:>10.1f} {r[3]:>5}")
175
+
176
+
177
+ if __name__ == "__main__":
178
+ main()
scripts/bake_cornerstone_rasters.py ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Bake DEP scenarios + Sandy extent to compact GeoTIFFs in data/baked/.
2
+
3
+ The Cornerstone is a Hazard Reader — it reads what NYC's ground already
4
+ remembers (modeled DEP scenarios, empirical 2012 Sandy extent). All of
5
+ those layers are static, so we bake them once into uint8 GeoTIFFs in
6
+ EPSG:2263 (NYC State Plane, feet) and look up per-asset depth class
7
+ via rasterio.sample() instead of running gpd.sjoin per query.
8
+
9
+ Per-query latency drops from ~10 ms (warm) / ~33 s (cold-load) on the
10
+ HF Space CPU to ~3 ms with a 73 ms one-time cold-load. Baked footprint
11
+ is ~7 MB total versus ~46 MB GDBs + 87 MB Sandy GeoJSON.
12
+
13
+ See experiments/22_cornerstone_optim/RESULTS.md for the bench.
14
+
15
+ Run:
16
+ uv run python scripts/bake_cornerstone_rasters.py
17
+ """
18
+ from __future__ import annotations
19
+
20
+ import sys
21
+ import time
22
+ from pathlib import Path
23
+
24
+ import numpy as np
25
+ import rasterio
26
+ from rasterio import features
27
+ from rasterio.transform import from_origin
28
+
29
+ REPO = Path(__file__).resolve().parents[1]
30
+ sys.path.insert(0, str(REPO))
31
+
32
+ from app.flood_layers import dep_stormwater, sandy_inundation # noqa: E402
33
+
34
+ NYC_CRS = "EPSG:2263"
35
+ RES_FT = 10.0
36
+ OUT_DIR = REPO / "data" / "baked"
37
+
38
+
39
+ def nyc_grid(res_ft: float = RES_FT):
40
+ minx, miny = 910_000.0, 110_000.0
41
+ maxx, maxy = 1_080_000.0, 280_000.0
42
+ width = int(np.ceil((maxx - minx) / res_ft))
43
+ height = int(np.ceil((maxy - miny) / res_ft))
44
+ return from_origin(minx, maxy, res_ft, res_ft), width, height
45
+
46
+
47
+ def burn(gdf, value_col_or_const, out_path, transform, width, height):
48
+ if isinstance(value_col_or_const, str):
49
+ shapes = ((geom, int(val)) for geom, val
50
+ in zip(gdf.geometry, gdf[value_col_or_const]))
51
+ else:
52
+ v = int(value_col_or_const)
53
+ shapes = ((geom, v) for geom in gdf.geometry)
54
+ arr = features.rasterize(
55
+ shapes=shapes, out_shape=(height, width), transform=transform,
56
+ fill=0, dtype="uint8", merge_alg=rasterio.enums.MergeAlg.replace,
57
+ )
58
+ out_path.parent.mkdir(parents=True, exist_ok=True)
59
+ profile = {
60
+ "driver": "GTiff", "dtype": "uint8", "count": 1,
61
+ "width": width, "height": height, "transform": transform,
62
+ "crs": NYC_CRS, "compress": "deflate", "predictor": 2,
63
+ "tiled": True, "blockxsize": 512, "blockysize": 512, "nodata": 0,
64
+ }
65
+ with rasterio.open(out_path, "w", **profile) as dst:
66
+ dst.write(arr, 1)
67
+ return arr
68
+
69
+
70
+ def bake_dep(scenario, transform, width, height):
71
+ print(f" baking {scenario}...", end=" ", flush=True)
72
+ t0 = time.perf_counter()
73
+ g = dep_stormwater.load(scenario).copy()
74
+ g["Flooding_Category"] = g["Flooding_Category"].astype(int)
75
+ # rasterize lowest first so highest category wins at overlaps
76
+ g = g.sort_values("Flooding_Category", ascending=True)
77
+ out = OUT_DIR / f"{scenario}.tif"
78
+ arr = burn(g, "Flooding_Category", out, transform, width, height)
79
+ dt = time.perf_counter() - t0
80
+ print(f"{dt:5.1f}s {out.stat().st_size/1e6:5.1f} MB "
81
+ f"nonzero={int((arr>0).sum()):,}")
82
+
83
+
84
+ def bake_sandy(transform, width, height):
85
+ print(" baking sandy...", end=" ", flush=True)
86
+ t0 = time.perf_counter()
87
+ g = sandy_inundation.load().copy()
88
+ out = OUT_DIR / "sandy.tif"
89
+ arr = burn(g, 1, out, transform, width, height)
90
+ dt = time.perf_counter() - t0
91
+ print(f"{dt:5.1f}s {out.stat().st_size/1e6:5.1f} MB "
92
+ f"nonzero={int((arr>0).sum()):,}")
93
+
94
+
95
+ def main():
96
+ transform, width, height = nyc_grid(RES_FT)
97
+ print(f"Grid: {width}x{height} px @ {RES_FT} ft/px")
98
+ print(f"Output: {OUT_DIR}\n")
99
+ bake_dep("dep_extreme_2080", transform, width, height)
100
+ bake_dep("dep_moderate_2050", transform, width, height)
101
+ bake_dep("dep_moderate_current", transform, width, height)
102
+ bake_sandy(transform, width, height)
103
+ total = sum(p.stat().st_size for p in OUT_DIR.glob("*.tif")) / 1e6
104
+ print(f"\nTotal: {total:.1f} MB")
105
+
106
+
107
+ if __name__ == "__main__":
108
+ main()
scripts/update_hf_env.sh CHANGED
@@ -69,6 +69,11 @@ variables = {
69
  'RIPRAP_ML_BACKEND': 'remote',
70
  'RIPRAP_ML_BASE_URL': f'http://{ip}:{models_port}',
71
  'RIPRAP_ML_API_KEY': token,
 
 
 
 
 
72
  }
73
 
74
  for key, value in variables.items():
 
69
  'RIPRAP_ML_BACKEND': 'remote',
70
  'RIPRAP_ML_BASE_URL': f'http://{ip}:{models_port}',
71
  'RIPRAP_ML_API_KEY': token,
72
+ # Heavy register specialists (NYCHA / DOE schools / DOH hospitals).
73
+ # Pre-warmed at boot via web/main.py:_warm_caches when this is set;
74
+ # without it the FSM never adds these step functions, so the demo
75
+ # never sees register cards even when the underlying data is loaded.
76
+ 'RIPRAP_NYCHA_REGISTERS': '1',
77
  }
78
 
79
  for key, value in variables.items():
web/sveltekit/build/200.html CHANGED
@@ -2,22 +2,21 @@
2
  <html lang="en">
3
  <head>
4
  <meta charset="utf-8" />
5
- <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
- <link rel="icon" type="image/png" href="/favicon.png" />
7
  <meta name="viewport" content="width=device-width, initial-scale=1" />
8
  <meta name="description" content="Riprap — citation-grounded NYC flood-exposure briefings." />
9
  <title>Riprap — flood-exposure briefing</title>
10
- <link href="/_app/immutable/entry/start.Bs_Nr3wJ.js" rel="modulepreload">
11
- <link href="/_app/immutable/chunks/BS22DDzI.js" rel="modulepreload">
12
  <link href="/_app/immutable/chunks/BTUA7_xE.js" rel="modulepreload">
13
- <link href="/_app/immutable/entry/app.KWIsKmKE.js" rel="modulepreload">
14
  <link href="/_app/immutable/chunks/CXQd8Y6F.js" rel="modulepreload">
15
  <link href="/_app/immutable/chunks/CWw6qgC_.js" rel="modulepreload">
16
  <link href="/_app/immutable/chunks/Bd-v_9Ud.js" rel="modulepreload">
17
  <link href="/_app/immutable/chunks/CW0zSL4D.js" rel="modulepreload">
18
- <link href="/_app/immutable/nodes/0.CazXc5O3.js" rel="modulepreload">
19
  <link href="/_app/immutable/chunks/DxQlA7U2.js" rel="modulepreload">
20
- <link href="/_app/immutable/chunks/CR2ah4JU.js" rel="modulepreload">
21
  <link href="/_app/immutable/chunks/DCD6_LXk.js" rel="modulepreload">
22
  <link href="/_app/immutable/chunks/B0XoTt7U.js" rel="modulepreload">
23
  <link href="/_app/immutable/chunks/DixtWtwq.js" rel="modulepreload">
@@ -29,15 +28,15 @@
29
  <div style="display: contents">
30
  <script>
31
  {
32
- __sveltekit_9onz6j = {
33
  base: ""
34
  };
35
 
36
  const element = document.currentScript.parentElement;
37
 
38
  Promise.all([
39
- import("/_app/immutable/entry/start.Bs_Nr3wJ.js"),
40
- import("/_app/immutable/entry/app.KWIsKmKE.js")
41
  ]).then(([kit, app]) => {
42
  kit.start(app, element);
43
  });
 
2
  <html lang="en">
3
  <head>
4
  <meta charset="utf-8" />
5
+ <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect width='16' height='16' fill='%23FAFAF7'/%3E%3Crect x='2' y='2' width='5' height='12' fill='%23D17C00'/%3E%3C/svg%3E" />
 
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
7
  <meta name="description" content="Riprap — citation-grounded NYC flood-exposure briefings." />
8
  <title>Riprap — flood-exposure briefing</title>
9
+ <link href="/_app/immutable/entry/start.D9d5J30B.js" rel="modulepreload">
10
+ <link href="/_app/immutable/chunks/BRRh3tKo.js" rel="modulepreload">
11
  <link href="/_app/immutable/chunks/BTUA7_xE.js" rel="modulepreload">
12
+ <link href="/_app/immutable/entry/app.C74wsJjh.js" rel="modulepreload">
13
  <link href="/_app/immutable/chunks/CXQd8Y6F.js" rel="modulepreload">
14
  <link href="/_app/immutable/chunks/CWw6qgC_.js" rel="modulepreload">
15
  <link href="/_app/immutable/chunks/Bd-v_9Ud.js" rel="modulepreload">
16
  <link href="/_app/immutable/chunks/CW0zSL4D.js" rel="modulepreload">
17
+ <link href="/_app/immutable/nodes/0.WjwQ9Jo9.js" rel="modulepreload">
18
  <link href="/_app/immutable/chunks/DxQlA7U2.js" rel="modulepreload">
19
+ <link href="/_app/immutable/chunks/B-yumwKg.js" rel="modulepreload">
20
  <link href="/_app/immutable/chunks/DCD6_LXk.js" rel="modulepreload">
21
  <link href="/_app/immutable/chunks/B0XoTt7U.js" rel="modulepreload">
22
  <link href="/_app/immutable/chunks/DixtWtwq.js" rel="modulepreload">
 
28
  <div style="display: contents">
29
  <script>
30
  {
31
+ __sveltekit_yivtrn = {
32
  base: ""
33
  };
34
 
35
  const element = document.currentScript.parentElement;
36
 
37
  Promise.all([
38
+ import("/_app/immutable/entry/start.D9d5J30B.js"),
39
+ import("/_app/immutable/entry/app.C74wsJjh.js")
40
  ]).then(([kit, app]) => {
41
  kit.start(app, element);
42
  });
web/sveltekit/build/_app/immutable/assets/4.D4-aMRnd.css DELETED
@@ -1 +0,0 @@
1
- .compare-layout.svelte-rr14x0{width:100%}.compare-delta-bar.svelte-rr14x0{border:1px solid var(--rule-soft);background:var(--paper-deep);padding:var(--s-3) var(--s-4);margin-bottom:var(--s-5);display:flex;gap:var(--s-4);align-items:flex-start;flex-wrap:wrap}.compare-delta-title.svelte-rr14x0{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-tertiary);flex-shrink:0;padding-top:1px}.compare-delta-rows.svelte-rr14x0{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-5);flex:1}.compare-delta-row.svelte-rr14x0{display:inline-flex;align-items:baseline;gap:var(--s-2);font-family:var(--font-mono);font-size:12px}.compare-delta-section.svelte-rr14x0{color:var(--ink-tertiary);text-transform:uppercase;letter-spacing:.08em;font-size:10px;flex-shrink:0}.compare-delta-claim.svelte-rr14x0{color:var(--ink);display:inline-flex;align-items:baseline;gap:3px}.compare-delta-ctx.svelte-rr14x0{color:var(--ink-secondary);margin-right:2px}.compare-delta-a.svelte-rr14x0,.compare-delta-b.svelte-rr14x0{color:var(--accent);font-weight:600}.compare-delta-vs.svelte-rr14x0{color:var(--ink-tertiary);font-style:italic}.compare-cols.svelte-rr14x0{display:grid;grid-template-columns:1fr 1px 1fr;gap:0 var(--s-5);align-items:start}.compare-col.svelte-rr14x0{min-width:0}.compare-divider.svelte-rr14x0{background:var(--rule-soft);align-self:stretch}.compare-address-header.svelte-rr14x0{font-family:var(--font-mono);font-size:13px;font-weight:600;letter-spacing:.04em;color:var(--ink);border-bottom:1px solid var(--rule-soft);padding-bottom:var(--s-2);margin-top:0;margin-bottom:var(--s-4);line-height:1.4}@media(max-width:899px){.compare-cols.svelte-rr14x0{grid-template-columns:1fr;gap:0}.compare-divider.svelte-rr14x0{width:100%;height:1px;margin:var(--s-5) 0;align-self:auto}}.plan-details.svelte-1q8jizq{border:1px solid var(--rule-soft);background:var(--paper-deep);margin-bottom:16px}.plan-details.svelte-1q8jizq summary:where(.svelte-1q8jizq){padding:10px 14px;cursor:pointer;font-family:var(--font-mono);font-size:12px;color:var(--ink-secondary)}.plan-stream.svelte-1q8jizq{font-family:var(--font-mono);font-size:11px;color:var(--ink-tertiary);white-space:pre-wrap;padding:0 14px 12px;margin:0;max-height:240px;overflow:auto}.generating-status.svelte-1q8jizq{display:flex;align-items:center;gap:12px;padding:12px 0;font-family:var(--font-mono);font-size:13px;color:var(--ink-secondary);flex-wrap:wrap}.pulse.svelte-1q8jizq{width:8px;height:8px;border-radius:50%;background:var(--accent-graphical);animation:svelte-1q8jizq-pulse 1.4s ease-in-out infinite}@keyframes svelte-1q8jizq-pulse{0%,to{opacity:.3;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}@media(prefers-reduced-motion:reduce){.pulse.svelte-1q8jizq{animation:none;opacity:.7}}
 
 
web/sveltekit/build/_app/immutable/chunks/{BbRPgcjS.js → B-yumwKg.js} RENAMED
@@ -1 +1 @@
1
- import{s as e,p as r}from"./BgqmyNr8.js";const t={get error(){return r.error},get params(){return r.params},get status(){return r.status},get url(){return r.url}};e.updated.check;const a=t;export{a as p};
 
1
+ import{s as e,p as r}from"./BRRh3tKo.js";const t={get error(){return r.error},get params(){return r.params},get status(){return r.status},get url(){return r.url}};e.updated.check;const a=t;export{a as p};
web/sveltekit/build/_app/immutable/chunks/B5Keu-3_.js DELETED
@@ -1 +0,0 @@
1
- import{s as e,p as r}from"./sQImrWTX.js";const t={get error(){return r.error},get params(){return r.params},get status(){return r.status},get url(){return r.url}};e.updated.check;const a=t;export{a as p};
 
 
web/sveltekit/build/_app/immutable/chunks/{33K0dtcD.js → BRRh3tKo.js} RENAMED
@@ -1 +1 @@
1
- var rt=e=>{throw TypeError(e)};var Dt=(e,t,n)=>t.has(e)||rt("Cannot "+n);var y=(e,t,n)=>(Dt(e,t,"read from private field"),n?n.call(e):t.get(e)),A=(e,t,n)=>t.has(e)?rt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);import{bf as Pe,bg as Vt,ai as at,a4 as T,o as I,a5 as O,ar as we,bh as Bt}from"./BTUA7_xE.js";const M=[];function Ke(e,t=Pe){let n=null;const a=new Set;function r(o){if(Vt(e,o)&&(e=o,n)){const l=!M.length;for(const c of a)c[1](),M.push(c,e);if(l){for(let c=0;c<M.length;c+=2)M[c][0](M[c+1]);M.length=0}}}function i(o){r(o(e))}function s(o,l=Pe){const c=[o,l];return a.add(c),a.size===1&&(n=t(r,i)||Pe),o(e),()=>{a.delete(c),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:s}}class Me{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class ze{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Fe extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Kt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Mt(e){return e.split("%25").map(decodeURI).join("%25")}function zt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function $e({href:e}){return e.split("#")[0]}function C(){}function Ft(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function Gt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const Ht=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&X.delete(Ge(e)),Ht(e,t));const X=new Map;function Wt(e,t){const n=Ge(e,t),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const s=a.getAttribute("data-ttl");return s&&X.set(n,{body:r,init:i,ttl:1e3*Number(s)}),a.getAttribute("data-b64")!==null&&(r=Gt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function Jt(e,t,n){if(X.size>0){const a=Ge(e,n),r=X.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(r.body,r.init);X.delete(a)}}return window.fetch(t,n)}function Ge(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${Ft(...r)}"]`}return a}const Yt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Xt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Zt(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const s=a.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return Ce(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return Ce(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=Yt.exec(l),[,u,w,p,f]=d;return t.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&s[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return Ce(l)}).join("")}).join("")}/?$`),params:t}}function Qt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Zt(e){return e.slice(1).split("/").filter(Qt)}function en(e,t,n){const a={},r=e.slice(1),i=r.filter(o=>o!==void 0);let s=0;for(let o=0;o<t.length;o+=1){const l=t[o];let c=r[o-s];if(l.chained&&l.rest&&s&&(c=r.slice(o-s,o+1).filter(d=>d).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=t[o+1],u=r[o+1];d&&!d.rest&&d.optional&&u&&l.chained&&(s=0),!d&&!u&&Object.keys(a).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return a}function Ce(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function tn({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([o,[l,c,d]])=>{const{pattern:u,params:w}=Xt(o),p={id:o,exec:f=>{const m=u.exec(f);if(m)return en(m,w,a)},errors:[1,...d||[]].map(f=>e[f]),layouts:[0,...c||[]].map(s),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(o){const l=o<0;return l&&(o=~o),[l,e[o]]}function s(o){return o===void 0?o:[r.has(o),e[o]]}}function wt(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ot(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}var ht;const U=((ht=globalThis.__sveltekit_95np12)==null?void 0:ht.base)??"";var pt;const nn=((pt=globalThis.__sveltekit_95np12)==null?void 0:pt.assets)??U??"",rn="1778109983909",vt="sveltekit:snapshot",yt="sveltekit:scroll",bt="sveltekit:states",an="sveltekit:pageurl",F="sveltekit:history",Z="sveltekit:navigation",D={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Ue=location.origin;function He(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function B(){return{x:pageXOffset,y:pageYOffset}}function z(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const st={...D,"":D.hover};function kt(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function St(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=kt(e)}}function qe(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";a.hash=`#${o}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||Ae(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),s=(a==null?void 0:a.origin)===Ue&&e.hasAttribute("download");return{url:a,external:i,target:r,download:s}}function ve(e){let t=null,n=null,a=null,r=null,i=null,s=null,o=e;for(;o&&o!==document.documentElement;)a===null&&(a=z(o,"preload-code")),r===null&&(r=z(o,"preload-data")),t===null&&(t=z(o,"keepfocus")),n===null&&(n=z(o,"noscroll")),i===null&&(i=z(o,"reload")),s===null&&(s=z(o,"replacestate")),o=kt(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:st[a??"off"],preload_data:st[r??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(s)}}function it(e){const t=Ke(e);let n=!0;function a(){n=!0,t.update(s=>s)}function r(s){n=!1,t.set(s)}function i(s){let o;return t.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:a,set:r,subscribe:i}}const Et={v:C};function on(){const{set:e,subscribe:t}=Ke(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${nn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const s=(await r.json()).version!==rn;return s&&(e(!0),Et.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:t,check:a}}function Ae(e,t,n){return e.origin!==Ue||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Pn(e){}const Rt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Rt];const sn=new Set([...Rt]);[...sn];function ln(e){return e.filter(t=>t!=null)}function me(e,t){return e+"/"+t}function We(e){return e instanceof Me||e instanceof Fe?e.status:500}function cn(e){return e instanceof Fe?e.text:"Internal Error"}let R,ee,je;const fn=at.toString().includes("$$")||/function \w+\(\) \{\}/.test(at.toString()),lt="a:";var oe,se,ie,le,ce,fe,ue,de,gt,he,mt,pe,_t;fn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(lt)},ee={current:null},je={current:!1}):(R=new(gt=class{constructor(){A(this,oe,T({}));A(this,se,T(null));A(this,ie,T(null));A(this,le,T({}));A(this,ce,T({id:null}));A(this,fe,T({}));A(this,ue,T(-1));A(this,de,T(new URL(lt)))}get data(){return I(y(this,oe))}set data(t){O(y(this,oe),t)}get form(){return I(y(this,se))}set form(t){O(y(this,se),t)}get error(){return I(y(this,ie))}set error(t){O(y(this,ie),t)}get params(){return I(y(this,le))}set params(t){O(y(this,le),t)}get route(){return I(y(this,ce))}set route(t){O(y(this,ce),t)}get state(){return I(y(this,fe))}set state(t){O(y(this,fe),t)}get status(){return I(y(this,ue))}set status(t){O(y(this,ue),t)}get url(){return I(y(this,de))}set url(t){O(y(this,de),t)}},oe=new WeakMap,se=new WeakMap,ie=new WeakMap,le=new WeakMap,ce=new WeakMap,fe=new WeakMap,ue=new WeakMap,de=new WeakMap,gt),ee=new(mt=class{constructor(){A(this,he,T(null))}get current(){return I(y(this,he))}set current(t){O(y(this,he),t)}},he=new WeakMap,mt),je=new(_t=class{constructor(){A(this,pe,T(!1))}get current(){return I(y(this,pe))}set current(t){O(y(this,pe),t)}},pe=new WeakMap,_t),Et.v=()=>je.current=!0);function un(e){Object.assign(R,e)}const dn=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const N=wt(yt)??{},te=wt(vt)??{},j={url:it({}),page:it({}),navigating:Ke(null),updated:on()};function Je(e){N[e]=B()}function hn(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function ne(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(C)}async function xt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}let Ye,De,ye,P,Ve,S;const be=[],ke=[];let v=null;function Se(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const _e=new Map,Lt=new Set,pn=new Set,Q=new Set;let _={branch:[],error:null,url:null},Ut=!1,Ee=!1,ct=!0,re=!1,Y=!1,At=!1,Xe=!1,Tt,k,L,V;const Re=new Set,ft=new Map,ut=new Map;async function Nn(e,t,n){var i,s,o,l;globalThis.__sveltekit_95np12&&(globalThis.__sveltekit_95np12.query,globalThis.__sveltekit_95np12.prerender),document.URL!==location.href&&(location.href=location.href),S=e,await((s=(i=e.hooks).init)==null?void 0:s.call(i)),Ye=tn(e),P=document.documentElement,Ve=t,De=e.nodes[0],ye=e.nodes[1],De(),ye(),k=(o=history.state)==null?void 0:o[F],L=(l=history.state)==null?void 0:l[Z],k||(k=L=Date.now(),history.replaceState({...history.state,[F]:k,[Z]:L},""));const a=N[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Ln(Ve,n)):(await G({type:"enter",url:He(S.hash?Tn(new URL(location.href)):location.href),replace_state:!0}),r()),xn()}function gn(){be.length=0,Xe=!1}function It(e){ke.some(t=>t==null?void 0:t.snapshot)&&(te[e]=ke.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function Ot(e){var t;(t=te[e])==null||t.forEach((n,a)=>{var r,i;(i=(r=ke[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function dt(){Je(k),ot(yt,N),It(L),ot(vt,te)}async function Pt(e,t,n,a){let r,i;t.invalidateAll&&Se(),await G({type:"goto",url:He(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{if(t.invalidateAll){Xe=!0,r=new Set;for(const[s,o]of ft)for(const l of o.keys())r.add(me(s,l));i=new Set;for(const[s,o]of ut)for(const l of o.keys())i.add(me(s,l))}t.invalidate&&t.invalidate.forEach(Rn)}}),t.invalidateAll&&we().then(we).then(()=>{for(const[s,o]of ft)for(const[l,{resource:c}]of o)r!=null&&r.has(me(s,l))&&c.refresh();for(const[s,o]of ut)for(const[l,{resource:c}]of o)i!=null&&i.has(me(s,l))&&c.reconnect()})}async function mn(e){if(e.id!==(v==null?void 0:v.id)){Se();const t={};Re.add(t),v={id:e.id,token:t,promise:Ct({...e,preload:t}).then(n=>(Re.delete(t),n.type==="loaded"&&n.state.error&&Se(),n)),fork:null}}return v.promise}async function Ne(e){var n;const t=(n=await Te(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(a=>a[1]()))}async function $t(e,t,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...e.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(R,e.props.page),Tt=new S.root({target:t,props:{...e.props,stores:j,components:ke},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),Ot(L),n){const s={from:null,to:{...a,scroll:N[k]??B()},willUnload:!1,type:"enter",complete:Promise.resolve()};Q.forEach(o=>o(s))}Ee=!0}async function xe({url:e,params:t,branch:n,errors:a,status:r,error:i,route:s,form:o}){let l="never";if(U&&(e.pathname===U||e.pathname===U+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);e.pathname=Kt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:s},props:{constructors:ln(n).map(f=>f.node.component),page:nt(R)}};o!==void 0&&(c.props.form=o);let d={},u=!R,w=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const m=n[f],h=_.branch[f];(m==null?void 0:m.data)!==(h==null?void 0:h.data)&&(u=!0),m&&(d={...d,...m.data},u&&(c.props[`data_${w}`]=d),w+=1)}return(!_.url||e.href!==_.url.href||_.error!==i||o!==void 0&&o!==R.form||u)&&(c.props.page={error:i,params:t,route:{id:(s==null?void 0:s.id)??null},state:{},status:r,url:new URL(e),form:o??null,data:u?d:R.data}),c}async function Qe({loader:e,parent:t,url:n,params:a,route:r,server_data_node:i}){var c,d;let s=null;const o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:s,uses:o}:null,data:s??(i==null?void 0:i.data)??null,slash:((d=l.universal)==null?void 0:d.trailingSlash)??(i==null?void 0:i.slash)}}function _n(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const i=Ee?Jt(a,r.href,t):Wt(a,t);return{resolved:r,promise:i}}function wn(e,t,n,a,r,i){if(Xe)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const s of r.search_params)if(a.has(s))return!0;for(const s of r.params)if(i[s]!==_.params[s])return!0;for(const s of r.dependencies)if(be.some(o=>o(new URL(s))))return!0;return!1}function Ze(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function vn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(s=>i.includes(s))&&i.every(s=>r.includes(s))&&n.delete(a)}return n}function yn({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:nt(R),constructors:[]}}}async function Ct({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if((v==null?void 0:v.id)===e)return Re.delete(v.token),v.promise;const{errors:s,layouts:o,leaf:l}=r,c=[...o,l];s.forEach(h=>h==null?void 0:h().catch(C)),c.forEach(h=>h==null?void 0:h[1]().catch(C));const d=_.url?e!==Le(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=vn(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var $;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!wn(p,u,d,w,($=b.universal)==null?void 0:$.uses,a)?b:(p=!0,Qe({loader:h[1],url:n,params:a,route:r,parent:async()=>{var ge;const q={};for(let K=0;K<g;K+=1)Object.assign(q,(ge=await f[K])==null?void 0:ge.data);return q},server_data_node:Ze(h[0]?{type:"skip"}:null,h[0]?b==null?void 0:b.server:void 0)}))});for(const h of f)h.catch(C);const m=[];for(let h=0;h<c.length;h+=1)if(c[h])try{m.push(await f[h])}catch(g){if(g instanceof ze)return{type:"redirect",location:g.location};if(Re.has(i))return yn({error:await ae(g,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let b=We(g),x;if(g instanceof Me)x=g.body;else{if(await j.updated.check())return await xt(),await ne(n);x=await ae(g,{params:a,url:n,route:{id:r.id}})}const $=await bn(h,m,s);return $?xe({url:n,params:a,branch:m.slice(0,$.idx).concat($.node),errors:s,status:b,error:x,route:r}):await Nt(n,{id:r.id},x,b)}else m.push(void 0);return xe({url:n,params:a,branch:m,errors:s,status:200,error:null,route:r,form:t?void 0:null})}async function bn(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function et({status:e,error:t,url:n,route:a}){const r={};let i=null;try{const s=await Qe({loader:De,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:Ze(i)}),o={node:await ye(),loader:ye,universal:null,server:null,data:null};return xe({url:n,params:r,branch:[s,o],status:e,error:t,errors:[],route:null})}catch(s){if(s instanceof ze)return Pt(new URL(s.location,location.href),{},0);throw s}}async function kn(e){const t=e.href;if(_e.has(t))return _e.get(t);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(e),fetch:async(i,s)=>_n(i,s,e).promise})??e;if(typeof r=="string"){const i=new URL(e);S.hash?i.hash=r:i.pathname=r,r=i}return r})();_e.set(t,a),n=await a}catch{_e.delete(t);return}return n}async function Te(e,t){if(e&&!Ae(e,U,S.hash)){const n=await kn(e);if(!n)return;const a=Sn(n);for(const r of Ye){const i=r.exec(a);if(i)return{id:Le(e),invalidating:t,route:r,params:zt(i),url:e}}}}function Sn(e){return Mt(S.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function Le(e){return(S.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:a,event:r,scroll:i}){let s=!1;const o=tt(_,n,e,t,i??null);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return re||Lt.forEach(c=>c(l)),s?null:o}async function G({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=C,block:d=C,event:u}){var K;const w=V;V=l;const p=await Te(t,!1),f=e==="enter"?tt(_,p,t,e):jt({url:t,type:e,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),V===l&&(V=w);return}const m=k,h=L;c(),re=!0,Ee&&f.navigation.type!=="enter"&&j.navigating.set(ee.current=f.navigation);let g=p&&await Ct(p);if(!g){if(Ae(t,U,S.hash))return await ne(t,i);g=await Nt(t,{id:null},await ae(new Fe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(p==null?void 0:p.url)||t,V!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(o<20){await G({type:e,url:new URL(g.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),f.fulfil(void 0);return}g=await et({status:500,error:await ae(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await j.updated.check()&&(await xt(),await ne(t,i));if(gn(),Je(m),It(h),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),s=n?n.state:s,!n){const E=i?0:1,H={[F]:k+=E,[Z]:L+=E,[bt]:s};(i?history.replaceState:history.pushState).call(history,H,"",t),i||hn(k,L)}const b=p&&(v==null?void 0:v.id)===p.id?v.fork:null;v!=null&&v.fork&&!b&&Se(),v=null,g.props.page.state=s;let x;if(Ee){const E=(await Promise.all(Array.from(pn,W=>W(f.navigation)))).filter(W=>typeof W=="function");if(E.length>0){let W=function(){E.forEach(Oe=>{Q.delete(Oe)})};E.push(W),E.forEach(Oe=>{Q.add(Oe)})}const H=f.navigation.to;_={...g.state,nav:{params:H.params,route:H.route,url:H.url}},g.props.page&&(g.props.page.url=t);const Ie=b&&await b;Ie?x=Ie.commit():(J=null,Tt.$set(g.props),J&&Object.assign(g.props.page,J),un(g.props.page),x=(K=Bt)==null?void 0:K()),At=!0}else await $t(g,Ve,!1);const{activeElement:$}=document;await x,await we(),await we();let q=null;if(ct){const E=n?n.scroll:r?B():null;E?scrollTo(E.x,E.y):(q=t.hash&&document.getElementById(qt(t)))?q.scrollIntoView():scrollTo(0,0)}const ge=document.activeElement!==$&&document.activeElement!==document.body;!a&&!ge&&An(t,!q),ct=!0,g.props.page&&(J&&Object.assign(g.props.page,J),Object.assign(R,g.props.page)),re=!1,e==="popstate"&&Ot(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=B()),Q.forEach(E=>E(f.navigation)),j.navigating.set(ee.current=null)}async function Nt(e,t,n,a,r){return e.origin===Ue&&e.pathname===location.pathname&&!Ut?await et({status:a,error:n,url:e,route:t}):await ne(e,r)}function En(){let e,t={element:void 0,href:void 0},n;P.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(e),e=setTimeout(()=>{i(l,D.hover)},20)});function a(o){o.defaultPrevented||i(o.composedPath()[0],D.tap)}P.addEventListener("mousedown",a),P.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Ne(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(o,l){const c=St(o,P),d=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=qe(c,U,S.hash);if(w||p)return;const f=ve(c),m=u&&Le(_.url)===Le(u);if(!(f.reload||m))if(l<=f.preload_data){t={element:c,href:c.href},n=D.tap;const h=await Te(u,!1);if(!h)return;mn(h)}else l<=f.preload_code&&(t={element:c,href:c.href},n=l,Ne(u))}function s(){r.disconnect();for(const o of P.querySelectorAll("a")){const{url:l,external:c,download:d}=qe(o,U,S.hash);if(c||d)continue;const u=ve(o);u.reload||(u.preload_code===D.viewport&&r.observe(o),u.preload_code===D.eager&&Ne(l))}}Q.add(s),s()}function ae(e,t){if(e instanceof Me)return e.body;const n=We(e),a=cn(e);return S.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function qn(e,t={}){return e=new URL(He(e)),e.origin!==Ue?Promise.reject(new Error("goto: invalid URL")):Pt(e,t,0)}function Rn(e){if(typeof e=="function")be.push(e);else{const{href:t}=new URL(e,location.href);be.push(n=>n.href===t)}}function xn(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(dt(),!re){const r=tt(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};Lt.forEach(s=>s(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&dt()}),(t=navigator.connection)!=null&&t.saveData||En(),P.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=St(n.composedPath()[0],P);if(!a)return;const{url:r,external:i,target:s,download:o}=qe(a,U,S.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const l=ve(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===$e(location);if(i||l.reload&&(!w||!u)){jt({url:r,type:"link",event:n})?re=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,Je(k),e(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await G({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),P.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const o=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Ae(o,U,!1))return;const l=n.target,c=ve(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);o.search=new URLSearchParams(d).toString(),G({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!Be){if((a=n.state)!=null&&a[F]){const r=n.state[F];if(V={},r===k)return;const i=N[r],s=n.state[bt]??{},o=new URL(n.state[an]??location.href),l=n.state[Z],c=_.url?$e(location)===$e(_.url):!1;if(l===L&&(At||c)){s!==R.state&&(R.state=s),e(o),N[k]=B(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await G({type:"popstate",url:o,popped:{state:s,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:V,event:n})}else if(!Y){const r=new URL(location.href);e(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[F]:++k,[Z]:L},"",location.href))});for(const n of document.querySelectorAll("link"))dn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&j.navigating.set(ee.current=null)});function e(n){_.url=R.url=n,j.page.set(nt(R)),j.page.notify()}}async function Ln(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:s,data:o,form:l}){Ut=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await Te(c,!1)||{}),d=Ye.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=o[h];return g!=null&&g.uses&&(g.uses=Un(g.uses)),Qe({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let x=0;x<h;x+=1)Object.assign(b,(await p[x]).data);return b},server_data_node:Ze(g)})}),f=await Promise.all(p);if(d){const m=d.layouts;for(let h=0;h<m.length;h++)m[h]||f.splice(h,0,void 0)}u=await xe({url:c,params:r,branch:f,status:t,error:n,errors:d==null?void 0:d.errors,form:l,route:d??null})}catch(p){if(p instanceof ze){await ne(new URL(p.location,location.href));return}u=await et({status:We(p),error:await ae(p,{url:c,params:r,route:i}),url:c,route:i}),e.textContent="",w=!1}finally{}u.props.page&&(u.props.page.state={}),await $t(u,e,w)}function Un(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let Be=!1;function An(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=qt(e);if(a&&document.getElementById(a)){const{x:i,y:s}=B();setTimeout(()=>{const o=history.state;Be=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(o,"",e),t&&scrollTo(i,s),Be=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let s=0;s<r.rangeCount;s+=1)i.push(r.getRangeAt(s));setTimeout(()=>{if(r.rangeCount===i.length){for(let s=0;s<r.rangeCount;s+=1){const o=i[s],l=r.getRangeAt(s);if(o.commonAncestorContainer!==l.commonAncestorContainer||o.startContainer!==l.startContainer||o.endContainer!==l.endContainer||o.startOffset!==l.startOffset||o.endOffset!==l.endOffset)return}r.removeAllRanges()}})}}}function tt(e,t,n,a,r=null){var c,d;let i,s;const o=new Promise((u,w)=>{i=u,s=w});return o.catch(C),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:B()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((d=t==null?void 0:t.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!t,type:a,complete:o},fulfil:i,reject:s}}function nt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Tn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(S.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Nn as a,qn as g,Pn as l,R as p,j as s};
 
1
+ var rt=e=>{throw TypeError(e)};var Dt=(e,t,n)=>t.has(e)||rt("Cannot "+n);var y=(e,t,n)=>(Dt(e,t,"read from private field"),n?n.call(e):t.get(e)),A=(e,t,n)=>t.has(e)?rt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);import{bf as Pe,bg as Vt,ai as at,a4 as T,o as I,a5 as O,ar as we,bh as Bt}from"./BTUA7_xE.js";const M=[];function Ke(e,t=Pe){let n=null;const a=new Set;function r(o){if(Vt(e,o)&&(e=o,n)){const l=!M.length;for(const c of a)c[1](),M.push(c,e);if(l){for(let c=0;c<M.length;c+=2)M[c][0](M[c+1]);M.length=0}}}function i(o){r(o(e))}function s(o,l=Pe){const c=[o,l];return a.add(c),a.size===1&&(n=t(r,i)||Pe),o(e),()=>{a.delete(c),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:s}}class Me{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class ze{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Fe extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Kt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Mt(e){return e.split("%25").map(decodeURI).join("%25")}function zt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function $e({href:e}){return e.split("#")[0]}function C(){}function Ft(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function Gt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const Ht=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&X.delete(Ge(e)),Ht(e,t));const X=new Map;function Wt(e,t){const n=Ge(e,t),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const s=a.getAttribute("data-ttl");return s&&X.set(n,{body:r,init:i,ttl:1e3*Number(s)}),a.getAttribute("data-b64")!==null&&(r=Gt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function Jt(e,t,n){if(X.size>0){const a=Ge(e,n),r=X.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(r.body,r.init);X.delete(a)}}return window.fetch(t,n)}function Ge(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${Ft(...r)}"]`}return a}const Yt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Xt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Zt(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const s=a.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return Ce(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return Ce(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=Yt.exec(l),[,u,w,p,f]=d;return t.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&s[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return Ce(l)}).join("")}).join("")}/?$`),params:t}}function Qt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Zt(e){return e.slice(1).split("/").filter(Qt)}function en(e,t,n){const a={},r=e.slice(1),i=r.filter(o=>o!==void 0);let s=0;for(let o=0;o<t.length;o+=1){const l=t[o];let c=r[o-s];if(l.chained&&l.rest&&s&&(c=r.slice(o-s,o+1).filter(d=>d).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=t[o+1],u=r[o+1];d&&!d.rest&&d.optional&&u&&l.chained&&(s=0),!d&&!u&&Object.keys(a).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return a}function Ce(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function tn({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([o,[l,c,d]])=>{const{pattern:u,params:w}=Xt(o),p={id:o,exec:f=>{const m=u.exec(f);if(m)return en(m,w,a)},errors:[1,...d||[]].map(f=>e[f]),layouts:[0,...c||[]].map(s),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(o){const l=o<0;return l&&(o=~o),[l,e[o]]}function s(o){return o===void 0?o:[r.has(o),e[o]]}}function wt(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ot(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}var ht;const U=((ht=globalThis.__sveltekit_yivtrn)==null?void 0:ht.base)??"";var pt;const nn=((pt=globalThis.__sveltekit_yivtrn)==null?void 0:pt.assets)??U??"",rn="1778242964734",vt="sveltekit:snapshot",yt="sveltekit:scroll",bt="sveltekit:states",an="sveltekit:pageurl",F="sveltekit:history",Z="sveltekit:navigation",D={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Ue=location.origin;function He(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function B(){return{x:pageXOffset,y:pageYOffset}}function z(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const st={...D,"":D.hover};function kt(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function St(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=kt(e)}}function qe(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";a.hash=`#${o}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||Ae(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),s=(a==null?void 0:a.origin)===Ue&&e.hasAttribute("download");return{url:a,external:i,target:r,download:s}}function ve(e){let t=null,n=null,a=null,r=null,i=null,s=null,o=e;for(;o&&o!==document.documentElement;)a===null&&(a=z(o,"preload-code")),r===null&&(r=z(o,"preload-data")),t===null&&(t=z(o,"keepfocus")),n===null&&(n=z(o,"noscroll")),i===null&&(i=z(o,"reload")),s===null&&(s=z(o,"replacestate")),o=kt(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:st[a??"off"],preload_data:st[r??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(s)}}function it(e){const t=Ke(e);let n=!0;function a(){n=!0,t.update(s=>s)}function r(s){n=!1,t.set(s)}function i(s){let o;return t.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:a,set:r,subscribe:i}}const Et={v:C};function on(){const{set:e,subscribe:t}=Ke(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${nn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const s=(await r.json()).version!==rn;return s&&(e(!0),Et.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:t,check:a}}function Ae(e,t,n){return e.origin!==Ue||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Pn(e){}const Rt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Rt];const sn=new Set([...Rt]);[...sn];function ln(e){return e.filter(t=>t!=null)}function me(e,t){return e+"/"+t}function We(e){return e instanceof Me||e instanceof Fe?e.status:500}function cn(e){return e instanceof Fe?e.text:"Internal Error"}let R,ee,je;const fn=at.toString().includes("$$")||/function \w+\(\) \{\}/.test(at.toString()),lt="a:";var oe,se,ie,le,ce,fe,ue,de,gt,he,mt,pe,_t;fn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(lt)},ee={current:null},je={current:!1}):(R=new(gt=class{constructor(){A(this,oe,T({}));A(this,se,T(null));A(this,ie,T(null));A(this,le,T({}));A(this,ce,T({id:null}));A(this,fe,T({}));A(this,ue,T(-1));A(this,de,T(new URL(lt)))}get data(){return I(y(this,oe))}set data(t){O(y(this,oe),t)}get form(){return I(y(this,se))}set form(t){O(y(this,se),t)}get error(){return I(y(this,ie))}set error(t){O(y(this,ie),t)}get params(){return I(y(this,le))}set params(t){O(y(this,le),t)}get route(){return I(y(this,ce))}set route(t){O(y(this,ce),t)}get state(){return I(y(this,fe))}set state(t){O(y(this,fe),t)}get status(){return I(y(this,ue))}set status(t){O(y(this,ue),t)}get url(){return I(y(this,de))}set url(t){O(y(this,de),t)}},oe=new WeakMap,se=new WeakMap,ie=new WeakMap,le=new WeakMap,ce=new WeakMap,fe=new WeakMap,ue=new WeakMap,de=new WeakMap,gt),ee=new(mt=class{constructor(){A(this,he,T(null))}get current(){return I(y(this,he))}set current(t){O(y(this,he),t)}},he=new WeakMap,mt),je=new(_t=class{constructor(){A(this,pe,T(!1))}get current(){return I(y(this,pe))}set current(t){O(y(this,pe),t)}},pe=new WeakMap,_t),Et.v=()=>je.current=!0);function un(e){Object.assign(R,e)}const dn=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const N=wt(yt)??{},te=wt(vt)??{},j={url:it({}),page:it({}),navigating:Ke(null),updated:on()};function Je(e){N[e]=B()}function hn(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function ne(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(C)}async function xt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}let Ye,De,ye,P,Ve,S;const be=[],ke=[];let v=null;function Se(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const _e=new Map,Lt=new Set,pn=new Set,Q=new Set;let _={branch:[],error:null,url:null},Ut=!1,Ee=!1,ct=!0,re=!1,Y=!1,At=!1,Xe=!1,Tt,k,L,V;const Re=new Set,ft=new Map,ut=new Map;async function Nn(e,t,n){var i,s,o,l;globalThis.__sveltekit_yivtrn&&(globalThis.__sveltekit_yivtrn.query,globalThis.__sveltekit_yivtrn.prerender),document.URL!==location.href&&(location.href=location.href),S=e,await((s=(i=e.hooks).init)==null?void 0:s.call(i)),Ye=tn(e),P=document.documentElement,Ve=t,De=e.nodes[0],ye=e.nodes[1],De(),ye(),k=(o=history.state)==null?void 0:o[F],L=(l=history.state)==null?void 0:l[Z],k||(k=L=Date.now(),history.replaceState({...history.state,[F]:k,[Z]:L},""));const a=N[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Ln(Ve,n)):(await G({type:"enter",url:He(S.hash?Tn(new URL(location.href)):location.href),replace_state:!0}),r()),xn()}function gn(){be.length=0,Xe=!1}function It(e){ke.some(t=>t==null?void 0:t.snapshot)&&(te[e]=ke.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function Ot(e){var t;(t=te[e])==null||t.forEach((n,a)=>{var r,i;(i=(r=ke[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function dt(){Je(k),ot(yt,N),It(L),ot(vt,te)}async function Pt(e,t,n,a){let r,i;t.invalidateAll&&Se(),await G({type:"goto",url:He(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{if(t.invalidateAll){Xe=!0,r=new Set;for(const[s,o]of ft)for(const l of o.keys())r.add(me(s,l));i=new Set;for(const[s,o]of ut)for(const l of o.keys())i.add(me(s,l))}t.invalidate&&t.invalidate.forEach(Rn)}}),t.invalidateAll&&we().then(we).then(()=>{for(const[s,o]of ft)for(const[l,{resource:c}]of o)r!=null&&r.has(me(s,l))&&c.refresh();for(const[s,o]of ut)for(const[l,{resource:c}]of o)i!=null&&i.has(me(s,l))&&c.reconnect()})}async function mn(e){if(e.id!==(v==null?void 0:v.id)){Se();const t={};Re.add(t),v={id:e.id,token:t,promise:Ct({...e,preload:t}).then(n=>(Re.delete(t),n.type==="loaded"&&n.state.error&&Se(),n)),fork:null}}return v.promise}async function Ne(e){var n;const t=(n=await Te(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(a=>a[1]()))}async function $t(e,t,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...e.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(R,e.props.page),Tt=new S.root({target:t,props:{...e.props,stores:j,components:ke},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),Ot(L),n){const s={from:null,to:{...a,scroll:N[k]??B()},willUnload:!1,type:"enter",complete:Promise.resolve()};Q.forEach(o=>o(s))}Ee=!0}async function xe({url:e,params:t,branch:n,errors:a,status:r,error:i,route:s,form:o}){let l="never";if(U&&(e.pathname===U||e.pathname===U+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);e.pathname=Kt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:s},props:{constructors:ln(n).map(f=>f.node.component),page:nt(R)}};o!==void 0&&(c.props.form=o);let d={},u=!R,w=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const m=n[f],h=_.branch[f];(m==null?void 0:m.data)!==(h==null?void 0:h.data)&&(u=!0),m&&(d={...d,...m.data},u&&(c.props[`data_${w}`]=d),w+=1)}return(!_.url||e.href!==_.url.href||_.error!==i||o!==void 0&&o!==R.form||u)&&(c.props.page={error:i,params:t,route:{id:(s==null?void 0:s.id)??null},state:{},status:r,url:new URL(e),form:o??null,data:u?d:R.data}),c}async function Qe({loader:e,parent:t,url:n,params:a,route:r,server_data_node:i}){var c,d;let s=null;const o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:s,uses:o}:null,data:s??(i==null?void 0:i.data)??null,slash:((d=l.universal)==null?void 0:d.trailingSlash)??(i==null?void 0:i.slash)}}function _n(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const i=Ee?Jt(a,r.href,t):Wt(a,t);return{resolved:r,promise:i}}function wn(e,t,n,a,r,i){if(Xe)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const s of r.search_params)if(a.has(s))return!0;for(const s of r.params)if(i[s]!==_.params[s])return!0;for(const s of r.dependencies)if(be.some(o=>o(new URL(s))))return!0;return!1}function Ze(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function vn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(s=>i.includes(s))&&i.every(s=>r.includes(s))&&n.delete(a)}return n}function yn({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:nt(R),constructors:[]}}}async function Ct({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if((v==null?void 0:v.id)===e)return Re.delete(v.token),v.promise;const{errors:s,layouts:o,leaf:l}=r,c=[...o,l];s.forEach(h=>h==null?void 0:h().catch(C)),c.forEach(h=>h==null?void 0:h[1]().catch(C));const d=_.url?e!==Le(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=vn(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var $;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!wn(p,u,d,w,($=b.universal)==null?void 0:$.uses,a)?b:(p=!0,Qe({loader:h[1],url:n,params:a,route:r,parent:async()=>{var ge;const q={};for(let K=0;K<g;K+=1)Object.assign(q,(ge=await f[K])==null?void 0:ge.data);return q},server_data_node:Ze(h[0]?{type:"skip"}:null,h[0]?b==null?void 0:b.server:void 0)}))});for(const h of f)h.catch(C);const m=[];for(let h=0;h<c.length;h+=1)if(c[h])try{m.push(await f[h])}catch(g){if(g instanceof ze)return{type:"redirect",location:g.location};if(Re.has(i))return yn({error:await ae(g,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let b=We(g),x;if(g instanceof Me)x=g.body;else{if(await j.updated.check())return await xt(),await ne(n);x=await ae(g,{params:a,url:n,route:{id:r.id}})}const $=await bn(h,m,s);return $?xe({url:n,params:a,branch:m.slice(0,$.idx).concat($.node),errors:s,status:b,error:x,route:r}):await Nt(n,{id:r.id},x,b)}else m.push(void 0);return xe({url:n,params:a,branch:m,errors:s,status:200,error:null,route:r,form:t?void 0:null})}async function bn(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function et({status:e,error:t,url:n,route:a}){const r={};let i=null;try{const s=await Qe({loader:De,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:Ze(i)}),o={node:await ye(),loader:ye,universal:null,server:null,data:null};return xe({url:n,params:r,branch:[s,o],status:e,error:t,errors:[],route:null})}catch(s){if(s instanceof ze)return Pt(new URL(s.location,location.href),{},0);throw s}}async function kn(e){const t=e.href;if(_e.has(t))return _e.get(t);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(e),fetch:async(i,s)=>_n(i,s,e).promise})??e;if(typeof r=="string"){const i=new URL(e);S.hash?i.hash=r:i.pathname=r,r=i}return r})();_e.set(t,a),n=await a}catch{_e.delete(t);return}return n}async function Te(e,t){if(e&&!Ae(e,U,S.hash)){const n=await kn(e);if(!n)return;const a=Sn(n);for(const r of Ye){const i=r.exec(a);if(i)return{id:Le(e),invalidating:t,route:r,params:zt(i),url:e}}}}function Sn(e){return Mt(S.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function Le(e){return(S.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:a,event:r,scroll:i}){let s=!1;const o=tt(_,n,e,t,i??null);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return re||Lt.forEach(c=>c(l)),s?null:o}async function G({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=C,block:d=C,event:u}){var K;const w=V;V=l;const p=await Te(t,!1),f=e==="enter"?tt(_,p,t,e):jt({url:t,type:e,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),V===l&&(V=w);return}const m=k,h=L;c(),re=!0,Ee&&f.navigation.type!=="enter"&&j.navigating.set(ee.current=f.navigation);let g=p&&await Ct(p);if(!g){if(Ae(t,U,S.hash))return await ne(t,i);g=await Nt(t,{id:null},await ae(new Fe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(p==null?void 0:p.url)||t,V!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(o<20){await G({type:e,url:new URL(g.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),f.fulfil(void 0);return}g=await et({status:500,error:await ae(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await j.updated.check()&&(await xt(),await ne(t,i));if(gn(),Je(m),It(h),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),s=n?n.state:s,!n){const E=i?0:1,H={[F]:k+=E,[Z]:L+=E,[bt]:s};(i?history.replaceState:history.pushState).call(history,H,"",t),i||hn(k,L)}const b=p&&(v==null?void 0:v.id)===p.id?v.fork:null;v!=null&&v.fork&&!b&&Se(),v=null,g.props.page.state=s;let x;if(Ee){const E=(await Promise.all(Array.from(pn,W=>W(f.navigation)))).filter(W=>typeof W=="function");if(E.length>0){let W=function(){E.forEach(Oe=>{Q.delete(Oe)})};E.push(W),E.forEach(Oe=>{Q.add(Oe)})}const H=f.navigation.to;_={...g.state,nav:{params:H.params,route:H.route,url:H.url}},g.props.page&&(g.props.page.url=t);const Ie=b&&await b;Ie?x=Ie.commit():(J=null,Tt.$set(g.props),J&&Object.assign(g.props.page,J),un(g.props.page),x=(K=Bt)==null?void 0:K()),At=!0}else await $t(g,Ve,!1);const{activeElement:$}=document;await x,await we(),await we();let q=null;if(ct){const E=n?n.scroll:r?B():null;E?scrollTo(E.x,E.y):(q=t.hash&&document.getElementById(qt(t)))?q.scrollIntoView():scrollTo(0,0)}const ge=document.activeElement!==$&&document.activeElement!==document.body;!a&&!ge&&An(t,!q),ct=!0,g.props.page&&(J&&Object.assign(g.props.page,J),Object.assign(R,g.props.page)),re=!1,e==="popstate"&&Ot(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=B()),Q.forEach(E=>E(f.navigation)),j.navigating.set(ee.current=null)}async function Nt(e,t,n,a,r){return e.origin===Ue&&e.pathname===location.pathname&&!Ut?await et({status:a,error:n,url:e,route:t}):await ne(e,r)}function En(){let e,t={element:void 0,href:void 0},n;P.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(e),e=setTimeout(()=>{i(l,D.hover)},20)});function a(o){o.defaultPrevented||i(o.composedPath()[0],D.tap)}P.addEventListener("mousedown",a),P.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Ne(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(o,l){const c=St(o,P),d=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=qe(c,U,S.hash);if(w||p)return;const f=ve(c),m=u&&Le(_.url)===Le(u);if(!(f.reload||m))if(l<=f.preload_data){t={element:c,href:c.href},n=D.tap;const h=await Te(u,!1);if(!h)return;mn(h)}else l<=f.preload_code&&(t={element:c,href:c.href},n=l,Ne(u))}function s(){r.disconnect();for(const o of P.querySelectorAll("a")){const{url:l,external:c,download:d}=qe(o,U,S.hash);if(c||d)continue;const u=ve(o);u.reload||(u.preload_code===D.viewport&&r.observe(o),u.preload_code===D.eager&&Ne(l))}}Q.add(s),s()}function ae(e,t){if(e instanceof Me)return e.body;const n=We(e),a=cn(e);return S.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function qn(e,t={}){return e=new URL(He(e)),e.origin!==Ue?Promise.reject(new Error("goto: invalid URL")):Pt(e,t,0)}function Rn(e){if(typeof e=="function")be.push(e);else{const{href:t}=new URL(e,location.href);be.push(n=>n.href===t)}}function xn(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(dt(),!re){const r=tt(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};Lt.forEach(s=>s(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&dt()}),(t=navigator.connection)!=null&&t.saveData||En(),P.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=St(n.composedPath()[0],P);if(!a)return;const{url:r,external:i,target:s,download:o}=qe(a,U,S.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const l=ve(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===$e(location);if(i||l.reload&&(!w||!u)){jt({url:r,type:"link",event:n})?re=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,Je(k),e(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await G({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),P.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const o=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Ae(o,U,!1))return;const l=n.target,c=ve(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);o.search=new URLSearchParams(d).toString(),G({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!Be){if((a=n.state)!=null&&a[F]){const r=n.state[F];if(V={},r===k)return;const i=N[r],s=n.state[bt]??{},o=new URL(n.state[an]??location.href),l=n.state[Z],c=_.url?$e(location)===$e(_.url):!1;if(l===L&&(At||c)){s!==R.state&&(R.state=s),e(o),N[k]=B(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await G({type:"popstate",url:o,popped:{state:s,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:V,event:n})}else if(!Y){const r=new URL(location.href);e(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[F]:++k,[Z]:L},"",location.href))});for(const n of document.querySelectorAll("link"))dn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&j.navigating.set(ee.current=null)});function e(n){_.url=R.url=n,j.page.set(nt(R)),j.page.notify()}}async function Ln(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:s,data:o,form:l}){Ut=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await Te(c,!1)||{}),d=Ye.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=o[h];return g!=null&&g.uses&&(g.uses=Un(g.uses)),Qe({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let x=0;x<h;x+=1)Object.assign(b,(await p[x]).data);return b},server_data_node:Ze(g)})}),f=await Promise.all(p);if(d){const m=d.layouts;for(let h=0;h<m.length;h++)m[h]||f.splice(h,0,void 0)}u=await xe({url:c,params:r,branch:f,status:t,error:n,errors:d==null?void 0:d.errors,form:l,route:d??null})}catch(p){if(p instanceof ze){await ne(new URL(p.location,location.href));return}u=await et({status:We(p),error:await ae(p,{url:c,params:r,route:i}),url:c,route:i}),e.textContent="",w=!1}finally{}u.props.page&&(u.props.page.state={}),await $t(u,e,w)}function Un(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let Be=!1;function An(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=qt(e);if(a&&document.getElementById(a)){const{x:i,y:s}=B();setTimeout(()=>{const o=history.state;Be=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(o,"",e),t&&scrollTo(i,s),Be=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let s=0;s<r.rangeCount;s+=1)i.push(r.getRangeAt(s));setTimeout(()=>{if(r.rangeCount===i.length){for(let s=0;s<r.rangeCount;s+=1){const o=i[s],l=r.getRangeAt(s);if(o.commonAncestorContainer!==l.commonAncestorContainer||o.startContainer!==l.startContainer||o.endContainer!==l.endContainer||o.startOffset!==l.startOffset||o.endOffset!==l.endOffset)return}r.removeAllRanges()}})}}}function tt(e,t,n,a,r=null){var c,d;let i,s;const o=new Promise((u,w)=>{i=u,s=w});return o.catch(C),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:B()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((d=t==null?void 0:t.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!t,type:a,complete:o},fulfil:i,reject:s}}function nt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Tn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(S.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Nn as a,qn as g,Pn as l,R as p,j as s};
web/sveltekit/build/_app/immutable/chunks/BS22DDzI.js DELETED
@@ -1 +0,0 @@
1
- var rt=e=>{throw TypeError(e)};var Dt=(e,t,n)=>t.has(e)||rt("Cannot "+n);var y=(e,t,n)=>(Dt(e,t,"read from private field"),n?n.call(e):t.get(e)),A=(e,t,n)=>t.has(e)?rt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);import{bf as Pe,bg as zt,ai as at,a4 as T,o as I,a5 as O,ar as we,bh as Vt}from"./BTUA7_xE.js";const K=[];function Be(e,t=Pe){let n=null;const a=new Set;function r(o){if(zt(e,o)&&(e=o,n)){const l=!K.length;for(const c of a)c[1](),K.push(c,e);if(l){for(let c=0;c<K.length;c+=2)K[c][0](K[c+1]);K.length=0}}}function i(o){r(o(e))}function s(o,l=Pe){const c=[o,l];return a.add(c),a.size===1&&(n=t(r,i)||Pe),o(e),()=>{a.delete(c),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:s}}class Ke{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Me{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Fe extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Bt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Kt(e){return e.split("%25").map(decodeURI).join("%25")}function Mt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function je({href:e}){return e.split("#")[0]}function $(){}function Ft(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function Gt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const Ht=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&X.delete(Ge(e)),Ht(e,t));const X=new Map;function Wt(e,t){const n=Ge(e,t),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const s=a.getAttribute("data-ttl");return s&&X.set(n,{body:r,init:i,ttl:1e3*Number(s)}),a.getAttribute("data-b64")!==null&&(r=Gt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function Jt(e,t,n){if(X.size>0){const a=Ge(e,n),r=X.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(r.body,r.init);X.delete(a)}}return window.fetch(t,n)}function Ge(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${Ft(...r)}"]`}return a}const Yt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Xt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Zt(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const s=a.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return $e(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return $e(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=Yt.exec(l),[,u,w,p,f]=d;return t.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&s[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return $e(l)}).join("")}).join("")}/?$`),params:t}}function Qt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Zt(e){return e.slice(1).split("/").filter(Qt)}function en(e,t,n){const a={},r=e.slice(1),i=r.filter(o=>o!==void 0);let s=0;for(let o=0;o<t.length;o+=1){const l=t[o];let c=r[o-s];if(l.chained&&l.rest&&s&&(c=r.slice(o-s,o+1).filter(d=>d).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=t[o+1],u=r[o+1];d&&!d.rest&&d.optional&&u&&l.chained&&(s=0),!d&&!u&&Object.keys(a).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return a}function $e(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function tn({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([o,[l,c,d]])=>{const{pattern:u,params:w}=Xt(o),p={id:o,exec:f=>{const m=u.exec(f);if(m)return en(m,w,a)},errors:[1,...d||[]].map(f=>e[f]),layouts:[0,...c||[]].map(s),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(o){const l=o<0;return l&&(o=~o),[l,e[o]]}function s(o){return o===void 0?o:[r.has(o),e[o]]}}function wt(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ot(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}var ht;const U=((ht=globalThis.__sveltekit_9onz6j)==null?void 0:ht.base)??"";var pt;const nn=((pt=globalThis.__sveltekit_9onz6j)==null?void 0:pt.assets)??U??"",rn="1778205204035",vt="sveltekit:snapshot",yt="sveltekit:scroll",bt="sveltekit:states",an="sveltekit:pageurl",F="sveltekit:history",Z="sveltekit:navigation",D={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Ue=location.origin;function He(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function V(){return{x:pageXOffset,y:pageYOffset}}function M(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const st={...D,"":D.hover};function kt(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function St(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=kt(e)}}function qe(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";a.hash=`#${o}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||Ae(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),s=(a==null?void 0:a.origin)===Ue&&e.hasAttribute("download");return{url:a,external:i,target:r,download:s}}function ve(e){let t=null,n=null,a=null,r=null,i=null,s=null,o=e;for(;o&&o!==document.documentElement;)a===null&&(a=M(o,"preload-code")),r===null&&(r=M(o,"preload-data")),t===null&&(t=M(o,"keepfocus")),n===null&&(n=M(o,"noscroll")),i===null&&(i=M(o,"reload")),s===null&&(s=M(o,"replacestate")),o=kt(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:st[a??"off"],preload_data:st[r??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(s)}}function it(e){const t=Be(e);let n=!0;function a(){n=!0,t.update(s=>s)}function r(s){n=!1,t.set(s)}function i(s){let o;return t.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:a,set:r,subscribe:i}}const Et={v:$};function on(){const{set:e,subscribe:t}=Be(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${nn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const s=(await r.json()).version!==rn;return s&&(e(!0),Et.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:t,check:a}}function Ae(e,t,n){return e.origin!==Ue||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Pn(e){}const Rt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Rt];const sn=new Set([...Rt]);[...sn];function ln(e){return e.filter(t=>t!=null)}function me(e,t){return e+"/"+t}function We(e){return e instanceof Ke||e instanceof Fe?e.status:500}function cn(e){return e instanceof Fe?e.text:"Internal Error"}let R,ee,Ce;const fn=at.toString().includes("$$")||/function \w+\(\) \{\}/.test(at.toString()),lt="a:";var oe,se,ie,le,ce,fe,ue,de,gt,he,mt,pe,_t;fn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(lt)},ee={current:null},Ce={current:!1}):(R=new(gt=class{constructor(){A(this,oe,T({}));A(this,se,T(null));A(this,ie,T(null));A(this,le,T({}));A(this,ce,T({id:null}));A(this,fe,T({}));A(this,ue,T(-1));A(this,de,T(new URL(lt)))}get data(){return I(y(this,oe))}set data(t){O(y(this,oe),t)}get form(){return I(y(this,se))}set form(t){O(y(this,se),t)}get error(){return I(y(this,ie))}set error(t){O(y(this,ie),t)}get params(){return I(y(this,le))}set params(t){O(y(this,le),t)}get route(){return I(y(this,ce))}set route(t){O(y(this,ce),t)}get state(){return I(y(this,fe))}set state(t){O(y(this,fe),t)}get status(){return I(y(this,ue))}set status(t){O(y(this,ue),t)}get url(){return I(y(this,de))}set url(t){O(y(this,de),t)}},oe=new WeakMap,se=new WeakMap,ie=new WeakMap,le=new WeakMap,ce=new WeakMap,fe=new WeakMap,ue=new WeakMap,de=new WeakMap,gt),ee=new(mt=class{constructor(){A(this,he,T(null))}get current(){return I(y(this,he))}set current(t){O(y(this,he),t)}},he=new WeakMap,mt),Ce=new(_t=class{constructor(){A(this,pe,T(!1))}get current(){return I(y(this,pe))}set current(t){O(y(this,pe),t)}},pe=new WeakMap,_t),Et.v=()=>Ce.current=!0);function un(e){Object.assign(R,e)}const dn=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const N=wt(yt)??{},te=wt(vt)??{},C={url:it({}),page:it({}),navigating:Be(null),updated:on()};function Je(e){N[e]=V()}function hn(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function ne(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise($)}async function xt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}let Ye,De,ye,P,ze,S;const be=[],ke=[];let v=null;function Se(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const _e=new Map,Lt=new Set,pn=new Set,Q=new Set;let _={branch:[],error:null,url:null},Ut=!1,Ee=!1,ct=!0,re=!1,Y=!1,At=!1,Xe=!1,Tt,k,L,z;const Re=new Set,ft=new Map,ut=new Map;async function Nn(e,t,n){var i,s,o,l;globalThis.__sveltekit_9onz6j&&(globalThis.__sveltekit_9onz6j.query,globalThis.__sveltekit_9onz6j.prerender),document.URL!==location.href&&(location.href=location.href),S=e,await((s=(i=e.hooks).init)==null?void 0:s.call(i)),Ye=tn(e),P=document.documentElement,ze=t,De=e.nodes[0],ye=e.nodes[1],De(),ye(),k=(o=history.state)==null?void 0:o[F],L=(l=history.state)==null?void 0:l[Z],k||(k=L=Date.now(),history.replaceState({...history.state,[F]:k,[Z]:L},""));const a=N[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Ln(ze,n)):(await G({type:"enter",url:He(S.hash?Tn(new URL(location.href)):location.href),replace_state:!0}),r()),xn()}function gn(){be.length=0,Xe=!1}function It(e){ke.some(t=>t==null?void 0:t.snapshot)&&(te[e]=ke.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function Ot(e){var t;(t=te[e])==null||t.forEach((n,a)=>{var r,i;(i=(r=ke[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function dt(){Je(k),ot(yt,N),It(L),ot(vt,te)}async function Pt(e,t,n,a){let r,i;t.invalidateAll&&Se(),await G({type:"goto",url:He(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{if(t.invalidateAll){Xe=!0,r=new Set;for(const[s,o]of ft)for(const l of o.keys())r.add(me(s,l));i=new Set;for(const[s,o]of ut)for(const l of o.keys())i.add(me(s,l))}t.invalidate&&t.invalidate.forEach(Rn)}}),t.invalidateAll&&we().then(we).then(()=>{for(const[s,o]of ft)for(const[l,{resource:c}]of o)r!=null&&r.has(me(s,l))&&c.refresh();for(const[s,o]of ut)for(const[l,{resource:c}]of o)i!=null&&i.has(me(s,l))&&c.reconnect()})}async function mn(e){if(e.id!==(v==null?void 0:v.id)){Se();const t={};Re.add(t),v={id:e.id,token:t,promise:$t({...e,preload:t}).then(n=>(Re.delete(t),n.type==="loaded"&&n.state.error&&Se(),n)),fork:null}}return v.promise}async function Ne(e){var n;const t=(n=await Te(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(a=>a[1]()))}async function jt(e,t,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...e.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(R,e.props.page),Tt=new S.root({target:t,props:{...e.props,stores:C,components:ke},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),Ot(L),n){const s={from:null,to:{...a,scroll:N[k]??V()},willUnload:!1,type:"enter",complete:Promise.resolve()};Q.forEach(o=>o(s))}Ee=!0}async function xe({url:e,params:t,branch:n,errors:a,status:r,error:i,route:s,form:o}){let l="never";if(U&&(e.pathname===U||e.pathname===U+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);e.pathname=Bt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:s},props:{constructors:ln(n).map(f=>f.node.component),page:nt(R)}};o!==void 0&&(c.props.form=o);let d={},u=!R,w=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const m=n[f],h=_.branch[f];(m==null?void 0:m.data)!==(h==null?void 0:h.data)&&(u=!0),m&&(d={...d,...m.data},u&&(c.props[`data_${w}`]=d),w+=1)}return(!_.url||e.href!==_.url.href||_.error!==i||o!==void 0&&o!==R.form||u)&&(c.props.page={error:i,params:t,route:{id:(s==null?void 0:s.id)??null},state:{},status:r,url:new URL(e),form:o??null,data:u?d:R.data}),c}async function Qe({loader:e,parent:t,url:n,params:a,route:r,server_data_node:i}){var c,d;let s=null;const o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:s,uses:o}:null,data:s??(i==null?void 0:i.data)??null,slash:((d=l.universal)==null?void 0:d.trailingSlash)??(i==null?void 0:i.slash)}}function _n(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const i=Ee?Jt(a,r.href,t):Wt(a,t);return{resolved:r,promise:i}}function wn(e,t,n,a,r,i){if(Xe)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const s of r.search_params)if(a.has(s))return!0;for(const s of r.params)if(i[s]!==_.params[s])return!0;for(const s of r.dependencies)if(be.some(o=>o(new URL(s))))return!0;return!1}function Ze(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function vn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(s=>i.includes(s))&&i.every(s=>r.includes(s))&&n.delete(a)}return n}function yn({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:nt(R),constructors:[]}}}async function $t({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if((v==null?void 0:v.id)===e)return Re.delete(v.token),v.promise;const{errors:s,layouts:o,leaf:l}=r,c=[...o,l];s.forEach(h=>h==null?void 0:h().catch($)),c.forEach(h=>h==null?void 0:h[1]().catch($));const d=_.url?e!==Le(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=vn(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var j;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!wn(p,u,d,w,(j=b.universal)==null?void 0:j.uses,a)?b:(p=!0,Qe({loader:h[1],url:n,params:a,route:r,parent:async()=>{var ge;const q={};for(let B=0;B<g;B+=1)Object.assign(q,(ge=await f[B])==null?void 0:ge.data);return q},server_data_node:Ze(h[0]?{type:"skip"}:null,h[0]?b==null?void 0:b.server:void 0)}))});for(const h of f)h.catch($);const m=[];for(let h=0;h<c.length;h+=1)if(c[h])try{m.push(await f[h])}catch(g){if(g instanceof Me)return{type:"redirect",location:g.location};if(Re.has(i))return yn({error:await ae(g,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let b=We(g),x;if(g instanceof Ke)x=g.body;else{if(await C.updated.check())return await xt(),await ne(n);x=await ae(g,{params:a,url:n,route:{id:r.id}})}const j=await bn(h,m,s);return j?xe({url:n,params:a,branch:m.slice(0,j.idx).concat(j.node),errors:s,status:b,error:x,route:r}):await Nt(n,{id:r.id},x,b)}else m.push(void 0);return xe({url:n,params:a,branch:m,errors:s,status:200,error:null,route:r,form:t?void 0:null})}async function bn(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function et({status:e,error:t,url:n,route:a}){const r={};let i=null;try{const s=await Qe({loader:De,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:Ze(i)}),o={node:await ye(),loader:ye,universal:null,server:null,data:null};return xe({url:n,params:r,branch:[s,o],status:e,error:t,errors:[],route:null})}catch(s){if(s instanceof Me)return Pt(new URL(s.location,location.href),{},0);throw s}}async function kn(e){const t=e.href;if(_e.has(t))return _e.get(t);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(e),fetch:async(i,s)=>_n(i,s,e).promise})??e;if(typeof r=="string"){const i=new URL(e);S.hash?i.hash=r:i.pathname=r,r=i}return r})();_e.set(t,a),n=await a}catch{_e.delete(t);return}return n}async function Te(e,t){if(e&&!Ae(e,U,S.hash)){const n=await kn(e);if(!n)return;const a=Sn(n);for(const r of Ye){const i=r.exec(a);if(i)return{id:Le(e),invalidating:t,route:r,params:Mt(i),url:e}}}}function Sn(e){return Kt(S.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function Le(e){return(S.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function Ct({url:e,type:t,intent:n,delta:a,event:r,scroll:i}){let s=!1;const o=tt(_,n,e,t,i??null);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return re||Lt.forEach(c=>c(l)),s?null:o}async function G({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=$,block:d=$,event:u}){var B;const w=z;z=l;const p=await Te(t,!1),f=e==="enter"?tt(_,p,t,e):Ct({url:t,type:e,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),z===l&&(z=w);return}const m=k,h=L;c(),re=!0,Ee&&f.navigation.type!=="enter"&&C.navigating.set(ee.current=f.navigation);let g=p&&await $t(p);if(!g){if(Ae(t,U,S.hash))return await ne(t,i);g=await Nt(t,{id:null},await ae(new Fe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(p==null?void 0:p.url)||t,z!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(o<20){await G({type:e,url:new URL(g.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),f.fulfil(void 0);return}g=await et({status:500,error:await ae(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await C.updated.check()&&(await xt(),await ne(t,i));if(gn(),Je(m),It(h),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),s=n?n.state:s,!n){const E=i?0:1,H={[F]:k+=E,[Z]:L+=E,[bt]:s};(i?history.replaceState:history.pushState).call(history,H,"",t),i||hn(k,L)}const b=p&&(v==null?void 0:v.id)===p.id?v.fork:null;v!=null&&v.fork&&!b&&Se(),v=null,g.props.page.state=s;let x;if(Ee){const E=(await Promise.all(Array.from(pn,W=>W(f.navigation)))).filter(W=>typeof W=="function");if(E.length>0){let W=function(){E.forEach(Oe=>{Q.delete(Oe)})};E.push(W),E.forEach(Oe=>{Q.add(Oe)})}const H=f.navigation.to;_={...g.state,nav:{params:H.params,route:H.route,url:H.url}},g.props.page&&(g.props.page.url=t);const Ie=b&&await b;Ie?x=Ie.commit():(J=null,Tt.$set(g.props),J&&Object.assign(g.props.page,J),un(g.props.page),x=(B=Vt)==null?void 0:B()),At=!0}else await jt(g,ze,!1);const{activeElement:j}=document;await x,await we(),await we();let q=null;if(ct){const E=n?n.scroll:r?V():null;E?scrollTo(E.x,E.y):(q=t.hash&&document.getElementById(qt(t)))?q.scrollIntoView():scrollTo(0,0)}const ge=document.activeElement!==j&&document.activeElement!==document.body;!a&&!ge&&An(t,!q),ct=!0,g.props.page&&(J&&Object.assign(g.props.page,J),Object.assign(R,g.props.page)),re=!1,e==="popstate"&&Ot(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=V()),Q.forEach(E=>E(f.navigation)),C.navigating.set(ee.current=null)}async function Nt(e,t,n,a,r){return e.origin===Ue&&e.pathname===location.pathname&&!Ut?await et({status:a,error:n,url:e,route:t}):await ne(e,r)}function En(){let e,t={element:void 0,href:void 0},n;P.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(e),e=setTimeout(()=>{i(l,D.hover)},20)});function a(o){o.defaultPrevented||i(o.composedPath()[0],D.tap)}P.addEventListener("mousedown",a),P.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Ne(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(o,l){const c=St(o,P),d=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=qe(c,U,S.hash);if(w||p)return;const f=ve(c),m=u&&Le(_.url)===Le(u);if(!(f.reload||m))if(l<=f.preload_data){t={element:c,href:c.href},n=D.tap;const h=await Te(u,!1);if(!h)return;mn(h)}else l<=f.preload_code&&(t={element:c,href:c.href},n=l,Ne(u))}function s(){r.disconnect();for(const o of P.querySelectorAll("a")){const{url:l,external:c,download:d}=qe(o,U,S.hash);if(c||d)continue;const u=ve(o);u.reload||(u.preload_code===D.viewport&&r.observe(o),u.preload_code===D.eager&&Ne(l))}}Q.add(s),s()}function ae(e,t){if(e instanceof Ke)return e.body;const n=We(e),a=cn(e);return S.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function qn(e,t={}){return e=new URL(He(e)),e.origin!==Ue?Promise.reject(new Error("goto: invalid URL")):Pt(e,t,0)}function Rn(e){if(typeof e=="function")be.push(e);else{const{href:t}=new URL(e,location.href);be.push(n=>n.href===t)}}function xn(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(dt(),!re){const r=tt(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};Lt.forEach(s=>s(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&dt()}),(t=navigator.connection)!=null&&t.saveData||En(),P.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=St(n.composedPath()[0],P);if(!a)return;const{url:r,external:i,target:s,download:o}=qe(a,U,S.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const l=ve(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===je(location);if(i||l.reload&&(!w||!u)){Ct({url:r,type:"link",event:n})?re=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,Je(k),e(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await G({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),P.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const o=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Ae(o,U,!1))return;const l=n.target,c=ve(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);o.search=new URLSearchParams(d).toString(),G({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!Ve){if((a=n.state)!=null&&a[F]){const r=n.state[F];if(z={},r===k)return;const i=N[r],s=n.state[bt]??{},o=new URL(n.state[an]??location.href),l=n.state[Z],c=_.url?je(location)===je(_.url):!1;if(l===L&&(At||c)){s!==R.state&&(R.state=s),e(o),N[k]=V(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await G({type:"popstate",url:o,popped:{state:s,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:z,event:n})}else if(!Y){const r=new URL(location.href);e(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[F]:++k,[Z]:L},"",location.href))});for(const n of document.querySelectorAll("link"))dn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&C.navigating.set(ee.current=null)});function e(n){_.url=R.url=n,C.page.set(nt(R)),C.page.notify()}}async function Ln(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:s,data:o,form:l}){Ut=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await Te(c,!1)||{}),d=Ye.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=o[h];return g!=null&&g.uses&&(g.uses=Un(g.uses)),Qe({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let x=0;x<h;x+=1)Object.assign(b,(await p[x]).data);return b},server_data_node:Ze(g)})}),f=await Promise.all(p);if(d){const m=d.layouts;for(let h=0;h<m.length;h++)m[h]||f.splice(h,0,void 0)}u=await xe({url:c,params:r,branch:f,status:t,error:n,errors:d==null?void 0:d.errors,form:l,route:d??null})}catch(p){if(p instanceof Me){await ne(new URL(p.location,location.href));return}u=await et({status:We(p),error:await ae(p,{url:c,params:r,route:i}),url:c,route:i}),e.textContent="",w=!1}finally{}u.props.page&&(u.props.page.state={}),await jt(u,e,w)}function Un(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let Ve=!1;function An(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=qt(e);if(a&&document.getElementById(a)){const{x:i,y:s}=V();setTimeout(()=>{const o=history.state;Ve=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(o,"",e),t&&scrollTo(i,s),Ve=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let s=0;s<r.rangeCount;s+=1)i.push(r.getRangeAt(s));setTimeout(()=>{if(r.rangeCount===i.length){for(let s=0;s<r.rangeCount;s+=1){const o=i[s],l=r.getRangeAt(s);if(o.commonAncestorContainer!==l.commonAncestorContainer||o.startContainer!==l.startContainer||o.endContainer!==l.endContainer||o.startOffset!==l.startOffset||o.endOffset!==l.endOffset)return}r.removeAllRanges()}})}}}function tt(e,t,n,a,r=null){var c,d;let i,s;const o=new Promise((u,w)=>{i=u,s=w});return o.catch($),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:V()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((d=t==null?void 0:t.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!t,type:a,complete:o},fulfil:i,reject:s}}function nt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Tn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(S.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Nn as a,qn as g,Pn as l,R as p,C as s};
 
 
web/sveltekit/build/_app/immutable/chunks/BZuv-XBZ.js DELETED
@@ -1,37 +0,0 @@
1
- import{k as Ie,o as De,a as c,f as p,s as f,t as ye,d as Ce,c as xe,e as Ne,b as me}from"./CWw6qgC_.js";import{h as ce,n as Ae,j as we,bd as ze,d as Oe,a3 as He,aW as Ye,b7 as je,k as We,b as Ue,e as Le,i as ke,a0 as Ge,av as Ke,p as X,t as C,a as J,s as n,c as r,r as t,aR as re,o as a,al as q,am as le,ai as Qe,be as Ve,a5 as pe,a4 as Se,f as ee}from"./BTUA7_xE.js";import{B as Ze,i as A}from"./Bd-v_9Ud.js";import{e as te,i as de}from"./25_y8TFd.js";import{s as _,a as ue,b as oe,c as Xe,C as Je}from"./B0XoTt7U.js";import{T as ge,c as $e,b as et,d as Re}from"./BatqQaKj.js";import{b as tt,_ as at}from"./CXQd8Y6F.js";import{p as ie}from"./CW0zSL4D.js";import{P as rt}from"./D907np-5.js";function st(R,e,S,m,M,i){let g=ce;ce&&Ae();var d=null;ce&&we.nodeType===ze&&(d=we,Ae());var x=ce?we:R,h=new Ze(x,!1);Oe(()=>{const k=e()||null;var y=k==="svg"?je:void 0;if(k===null){h.ensure(null,null);return}return h.ensure(k,o=>{if(k){if(d=ce?d:Ye(k,y),Ie(d,d),m){ce&&De(k)&&d.append(document.createComment(""));var s=ce?We(d):d.appendChild(Ue());ce&&(s===null?Le(!1):ke(s)),m(d,s)}Ge.nodes.end=d,o.before(d)}ce&&ke(o)}),()=>{}},He),Ke(()=>{}),g&&(Le(!0),ke(x))}var it=p('<a target="_blank" rel="noopener noreferrer"> </a>'),nt=p('<li><span class="citation-num"> </span> <div class="citation-body"><div class="citation-line-1"><!> <span class="citation-source"> </span> <span class="citation-vintage"> </span></div> <div class="citation-title"><!></div> <div class="citation-meta"><span class="citation-docid"> </span> <span class="citation-retrieved"> </span></div></div></li>'),lt=p(`<aside class="citation-drawer svelte-1p339fd" aria-label="Citations"><div class="citation-drawer-head"><span class="section-label"> </span> <span class="citation-drawer-meta">live · primary sources</span></div> <ol class="citation-list"></ol> <div class="citation-drawer-foot"><span class="section-label">Trust signals</span> <p class="citation-foot-copy">All foundation models Apache-2.0. All data from public-record federal,
2
- state, and city sources. No commercial APIs contacted at runtime.</p></div></aside>`);function Lr(R,e){X(e,!0);let S=q(()=>Object.values(e.citations).sort((x,h)=>x.n-h.n));var m=lt(),M=r(m),i=r(M),g=r(i);t(i),re(2),t(M);var d=n(M,2);te(d,21,()=>a(S),x=>x.id,(x,h)=>{var k=nt();let y;var o=r(k),s=r(o);t(o);var l=n(o,2),b=r(l),N=r(b);ge(N,{get tier(){return a(h).tier},size:10,get color(){return`var(--tier-${a(h).tier??""})`}});var u=n(N,2),v=r(u,!0);t(u);var w=n(u,2),B=r(w);t(w),t(b);var E=n(b,2),D=r(E);{var H=F=>{var j=it(),K=r(j,!0);t(j),C(()=>{_(j,"href",a(h).url),f(K,a(h).title)}),c(F,j)},I=q(()=>a(h).url&&a(h).url.startsWith("http")),z=F=>{var j=ye();C(()=>f(j,a(h).title)),c(F,j)};A(D,F=>{a(I)?F(H):F(z,-1)})}t(E);var O=n(E,2),W=r(O),T=r(W,!0);t(W);var P=n(W,2),L=r(P);t(P),t(O),t(l),t(k),C(()=>{_(k,"id",`cite-${a(h).id??""}`),y=ue(k,1,"citation-item",null,y,{"is-active":$e.active===a(h).id}),f(s,`[${a(h).n??""}]`),f(v,a(h).source),f(B,`v. ${a(h).vintage??""}`),f(T,a(h).docId),f(L,`retr. ${a(h).retrieved??""}`)}),c(x,k)}),t(d),re(2),t(m),C(()=>f(g,`Citations · ${a(S).length??""}`)),c(R,m),J()}const Fe=`<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
3
- <rect width="12" height="12" fill="rgba(42,111,168,0.18)"/>
4
- <g stroke="#2A6FA8" stroke-width="1.4">
5
- <line x1="-2" y1="2" x2="14" y2="-14"/>
6
- <line x1="-2" y1="8" x2="14" y2="-8"/>
7
- <line x1="-2" y1="14" x2="14" y2="-2"/>
8
- <line x1="-2" y1="20" x2="14" y2="4"/>
9
- </g>
10
- </svg>`,ot=`<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
11
- <rect width="12" height="12" fill="rgba(42,111,168,0.16)"/>
12
- <g stroke="#2A6FA8" stroke-width="1.1">
13
- <line x1="-2" y1="6" x2="14" y2="-10"/>
14
- <line x1="-2" y1="14" x2="14" y2="-2"/>
15
- <line x1="-2" y1="22" x2="14" y2="6"/>
16
- </g>
17
- </svg>`;async function dt(R,e){const S=new Blob([R],{type:"image/svg+xml"}),m=URL.createObjectURL(S);try{return await new Promise((i,g)=>{const d=new Image(e,e);d.onload=()=>i(d),d.onerror=x=>g(x),d.src=m})}finally{URL.revokeObjectURL(m)}}async function vt(R){const e=[["syn-stripe-45",Fe,12],["syn-stripe-45-2x",Fe,24],["syn-stripe-45-low",ot,12]];for(const[S,m,M]of e)if(!R.hasImage(S))try{const i=await dt(m,M);R.addImage(S,i,{pixelRatio:M/12})}catch(i){console.warn(`syn-stripe registration failed for ${S}`,i)}}var ct=p('<span class="link-badge svelte-wk2bu4" aria-hidden="true"> </span>'),ut=p('<div class="map-frame svelte-wk2bu4"><div role="application" class="rip-map-container svelte-wk2bu4"></div> <!></div>');function Rr(R,e){X(e,!0);let S=ie(e,"activeLayers",19,()=>({empirical:!0,modeled:!0,synthetic:!0,proxy:!0})),m=ie(e,"linkedKey",3,null),M=Se(null),i=null,g=Se(!1);const d={type:"FeatureCollection",features:[]};function x(l,b){if(!i||!a(g))return;const N=i.getSource(l);N&&N.setData(b??d)}function h(l,b){!i||!a(g)||i.getLayer(l)&&i.setLayoutProperty(l,"visibility",b?"visible":"none")}le(()=>{x("sandy-empirical",e.sandyEmpirical)}),le(()=>{x("dep-modeled",e.depModeled)}),le(()=>{x("syn-prior",e.syntheticPrior)}),le(()=>{x("proxy-311",e.proxy311)}),le(()=>{x("register-points",e.registerPoints)}),le(()=>{x("register-polygons",e.registerPolygons)}),le(()=>{x("terramind-lulc",e.terramindLulc)}),le(()=>{x("ida-hwm",e.idaHwm)}),le(()=>{h("tier-empirical-fill",S().empirical),h("tier-empirical-line",S().empirical),h("ida-hwm-circle",S().empirical),h("tier-modeled-fill",S().modeled),h("tier-modeled-line",S().modeled),h("tier-synthetic-fill",S().synthetic),h("tier-synthetic-line",S().synthetic),h("terramind-lulc-fill",S().synthetic),h("terramind-lulc-line",S().synthetic),h("tier-proxy-dots",S().proxy)}),le(()=>{!i||!a(g)||i.flyTo({center:[e.address.lon,e.address.lat],zoom:15,essential:!0})}),Qe(async()=>{if(!a(M))return;const l=await at(()=>import("./D4L2lGt1.js").then(b=>b.m),[],import.meta.url);i=new l.Map({container:a(M),style:rt,center:[e.address.lon,e.address.lat],zoom:15,attributionControl:{compact:!0}}),i.addControl(new l.NavigationControl({visualizePitch:!1}),"top-right"),i.addControl(new l.ScaleControl({maxWidth:100,unit:"imperial"}),"bottom-left"),i.on("load",()=>{if(!i)return;window.__riprapMap=i,vt(i);const b=()=>({type:"FeatureCollection",features:[]});i.addSource("sandy-empirical",{type:"geojson",data:e.sandyEmpirical??b()}),i.addSource("dep-modeled",{type:"geojson",data:e.depModeled??b()}),i.addSource("syn-prior",{type:"geojson",data:e.syntheticPrior??b()}),i.addSource("proxy-311",{type:"geojson",data:e.proxy311??b()}),i.addSource("register-points",{type:"geojson",data:e.registerPoints??b()}),i.addSource("register-polygons",{type:"geojson",data:e.registerPolygons??b()}),i.addSource("terramind-lulc",{type:"geojson",data:e.terramindLulc??b()}),i.addSource("ida-hwm",{type:"geojson",data:e.idaHwm??b()}),i.addSource("queried-address",{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:[e.address.lon,e.address.lat]},properties:{label:e.address.label}}]}}),i.addLayer({id:"tier-empirical-fill",type:"fill",source:"sandy-empirical",paint:{"fill-color":"#0B5394","fill-opacity":.4}}),i.addLayer({id:"tier-empirical-line",type:"line",source:"sandy-empirical",paint:{"line-color":"#0B5394","line-width":1.5}}),i.addLayer({id:"tier-modeled-fill",type:"fill",source:"dep-modeled",paint:{"fill-color":"#2A6FA8","fill-opacity":.25}}),i.addLayer({id:"tier-modeled-line",type:"line",source:"dep-modeled",paint:{"line-color":"#2A6FA8","line-width":1.5}}),i.addLayer({id:"tier-synthetic-fill",type:"fill",source:"syn-prior",paint:{"fill-pattern":"syn-stripe-45","fill-opacity":.65}}),i.addLayer({id:"tier-synthetic-line",type:"line",source:"syn-prior",paint:{"line-color":"#2A6FA8","line-width":1.5,"line-dasharray":[4,3]}}),i.addLayer({id:"tier-proxy-dots",type:"circle",source:"proxy-311",paint:{"circle-color":"transparent","circle-stroke-color":"#6B6B6B","circle-stroke-width":1.25,"circle-radius":["interpolate",["linear"],["coalesce",["get","count"],1],1,3,5,6,15,9,30,12]}}),i.addLayer({id:"terramind-lulc-fill",type:"fill",source:"terramind-lulc",paint:{"fill-color":["get","fill_color"],"fill-opacity":.25}}),i.addLayer({id:"terramind-lulc-line",type:"line",source:"terramind-lulc",paint:{"line-color":["get","fill_color"],"line-width":.75,"line-opacity":.45,"line-dasharray":[3,2]}}),i.addLayer({id:"register-polygons-fill",type:"fill",source:"register-polygons",paint:{"fill-color":"#0B5394","fill-opacity":["interpolate",["linear"],["coalesce",["get","pct_inside_sandy"],0],0,.1,25,.2,50,.32,75,.45]}}),i.addLayer({id:"register-polygons-line",type:"line",source:"register-polygons",paint:{"line-color":"#0B5394","line-width":1,"line-opacity":.85}}),i.addLayer({id:"ida-hwm-circle",type:"circle",source:"ida-hwm",paint:{"circle-color":"#D97706","circle-stroke-color":"#F4F6F9","circle-stroke-width":1.5,"circle-radius":["interpolate",["linear"],["coalesce",["get","height_above_gnd_ft"],.5],0,5,1,7,3,9,5,12],"circle-opacity":.92}}),i.on("mouseenter","ida-hwm-circle",()=>{i&&(i.getCanvas().style.cursor="pointer")}),i.on("mouseleave","ida-hwm-circle",()=>{i&&(i.getCanvas().style.cursor="")}),i.on("click","ida-hwm-circle",N=>{var W;if(!i||!((W=N.features)!=null&&W.length))return;const u=N.features[0],v=u.properties??{},w=String(v.site_description??"?"),B=v.elev_ft!=null?`${Number(v.elev_ft).toFixed(1)} ft NAVD88`:"—",E=v.height_above_gnd_ft!=null?`${Number(v.height_above_gnd_ft).toFixed(2)} ft above ground`:"—",D=String(v.hwm_quality??""),H=v.distance_m!=null?`${v.distance_m} m from query`:"",I=`
18
- <div style="font-family: 'IBM Plex Sans', system-ui; font-size: 12px; max-width: 220px;">
19
- <div style="font-weight: 600; color: #D97706; font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase;">Ida 2021 HWM · USGS</div>
20
- <div style="margin-top: 4px; color: #0F172A; font-size: 12px;">${w}</div>
21
- <div style="margin-top: 6px; font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; color: #6B6B6B;">
22
- elev: ${B}<br>
23
- mark: ${E}<br>
24
- ${D?`quality: ${D}<br>`:""}
25
- ${H}
26
- </div>
27
- </div>`,z=new l.Popup({closeButton:!0,offset:12}),O=u.geometry.coordinates;z.setLngLat(O).setHTML(I).addTo(i)}),i.addLayer({id:"register-points-circle",type:"circle",source:"register-points",paint:{"circle-color":["case",["==",["get","inside_sandy_2012"],!0],"#0B5394","#6B6B6B"],"circle-stroke-color":"#F4F6F9","circle-stroke-width":1.25,"circle-radius":["match",["get","kind"],"subway",4,"school",5,"hospital",6,"nycha",7,4],"circle-opacity":.9}}),i.on("mouseenter","register-points-circle",()=>{i&&(i.getCanvas().style.cursor="pointer")}),i.on("mouseleave","register-points-circle",()=>{i&&(i.getCanvas().style.cursor="")}),i.on("click","register-points-circle",N=>{var O;if(!i||!((O=N.features)!=null&&O.length))return;const u=N.features[0],v=u.properties??{},w=String(v.name??"?"),B=String(v.kind??"?"),E=v.inside_sandy_2012===!0||v.inside_sandy_2012==="true",D=String(v.doc_id??""),H=`
28
- <div style="font-family: 'IBM Plex Sans', system-ui; font-size: 12px;">
29
- <div style="font-weight: 600; color: #0F172A;">${w}</div>
30
- <div style="color: #6B6B6B; font-size: 11px; margin-top: 2px;">${B}</div>
31
- <div style="margin-top: 6px;">
32
- <span style="font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; color: ${E?"#0B5394":"#6B6B6B"};">
33
- inside_sandy_2012=${E}
34
- </span>
35
- </div>
36
- ${D?`<div style="margin-top: 4px; font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; color: #005EA2;">[${D}]</div>`:""}
37
- </div>`,I=new l.Popup({closeButton:!0,offset:12}),z=u.geometry.coordinates;I.setLngLat(z).setHTML(H).addTo(i)}),i.addLayer({id:"queried-halo",type:"circle",source:"queried-address",paint:{"circle-color":"rgba(209, 124, 0, 0.20)","circle-radius":16}}),i.addLayer({id:"queried-pin",type:"circle",source:"queried-address",paint:{"circle-color":"#005EA2","circle-stroke-color":"#F4F6F9","circle-stroke-width":2,"circle-radius":7}}),i.addLayer({id:"queried-label",type:"symbol",source:"queried-address",layout:{"text-field":["get","label"],"text-font":["Open Sans Semibold","Arial Unicode MS Bold"],"text-size":12,"text-offset":[0,-1.6],"text-anchor":"bottom"},paint:{"text-color":"#0F172A","text-halo-color":"#F4F6F9","text-halo-width":1.5}}),pe(g,!0)})}),Ve(()=>{i==null||i.remove(),i=null});var k=ut(),y=r(k);tt(y,l=>pe(M,l),()=>a(M));var o=n(y,2);{var s=l=>{var b=ct(),N=r(b);t(b),C(()=>f(N,`linked: ${m()??""}`)),c(l,b)};A(o,l=>{m()&&l(s)})}t(k),C(()=>{_(k,"data-linked",m()??""),_(y,"aria-label",`Flood-exposure map for ${e.address.label??""}`)}),c(R,k),J()}const Be=["cornerstone","keystone","touchstone","lodestone","capstone"],Me={cornerstone:{name:"Cornerstone",role:"the hazard reader",tag:"what NYC's ground remembers"},keystone:{name:"Keystone",role:"the asset register",tag:"what's exposed"},touchstone:{name:"Touchstone",role:"the live observer",tag:"what's happening now"},lodestone:{name:"Lodestone",role:"the projector",tag:"what's coming"},capstone:{name:"Capstone",role:"the synthesizer",tag:"writes it all down with citations"}};var gt=p('<span class="layers-count svelte-1g2dety"> </span>'),ht=p('<li class="layers-row layers-row-empty svelte-1g2dety"><span class="layers-empty-text svelte-1g2dety">no map layers — see Findings cards</span></li>'),mt=p('<li class="layers-row layers-row-empty svelte-1g2dety"><span class="layers-empty-text svelte-1g2dety">not a map layer</span></li>'),ft=p('<span class="layers-state-dim svelte-1g2dety" title="Not yet wired to map source">off · catalog</span>'),_t=p('<li><span class="layers-glyph svelte-1g2dety" aria-hidden="true"><!></span> <span class="layers-text svelte-1g2dety"><span class="layers-label svelte-1g2dety"> </span> <span class="layers-meta svelte-1g2dety"> <!></span></span> <span class="layers-state svelte-1g2dety"><!></span></li>'),yt=p('<details open=""><summary class="svelte-1g2dety"><span class="layers-caret svelte-1g2dety" aria-hidden="true">▾</span> <span class="layers-stone-name svelte-1g2dety"> </span> <span class="layers-stone-tag svelte-1g2dety"> </span> <!></summary> <ul class="layers-list svelte-1g2dety"><!></ul></details>'),pt=p('<button type="button"><!> <span> </span> <span class="layers-master-state svelte-1g2dety"> </span></button>'),xt=p('<aside class="layers-panel svelte-1g2dety" aria-label="Map layers grouped by Stone"><div class="layers-head svelte-1g2dety"><span class="section-label">Layers · grouped by Stone</span></div> <!> <div class="layers-masters svelte-1g2dety" role="group" aria-label="Master tier toggles"><span class="section-label">Tier toggles</span> <div class="layers-master-row svelte-1g2dety"></div></div></aside>');function Fr(R,e){X(e,!0);const S={cornerstone:[{label:"Sandy Inundation Zone (2012)",source:"NYC OEM",tier:"empirical",wired:!0},{label:"FEMA / DEP scenarios",source:"FEMA · NYC DEP",tier:"modeled",wired:!0},{label:"Ida HWM points (2021)",source:"USGS STN",tier:"empirical",wired:!0},{label:"Microtopography (HAND/TWI)",source:"USGS 3DEP",tier:"proxy",wired:!1}],keystone:[{label:"MTA subway entrances",source:"MTA Open Data",tier:"empirical",wired:!0},{label:"NYCHA developments",source:"NYC OD phvi-damg",tier:"empirical",wired:!0},{label:"DOE schools",source:"NYC DOE Locations",tier:"empirical",wired:!0},{label:"DOH hospitals",source:"NYS DOH vn5v-hh5r",tier:"empirical",wired:!0},{label:"TerraMind Buildings (current)",source:"msradam/TerraMind-NYC-Adapters",tier:"synthetic",wired:!1}],touchstone:[{label:"311 flood complaints",source:"NYC 311",tier:"proxy",wired:!1},{label:"FloodNet sensors",source:"FloodNet NYC",tier:"proxy",wired:!0},{label:"TerraMind LULC (current)",source:"msradam/TerraMind-NYC-Adapters",tier:"synthetic",wired:!0},{label:"Prithvi-NYC-Pluvial flood pred.",source:"msradam/Prithvi-EO-2.0-NYC-Pluvial",tier:"modeled",wired:!1}],lodestone:[],capstone:[]};function m(k){return!!e.active[k.tier]}function M(k){return S[k].length}const i=[{k:"empirical",tier:"empirical",label:"EMP"},{k:"modeled",tier:"modeled",label:"MOD"},{k:"proxy",tier:"proxy",label:"PRX"},{k:"synthetic",tier:"synthetic",label:"SYN"}];var g=xt(),d=n(r(g),2);te(d,16,()=>Be,k=>k,(k,y)=>{var o=yt(),s=r(o),l=n(r(s),2),b=r(l,!0);t(l);var N=n(l,2),u=r(N);t(N);var v=n(N,2);{var w=O=>{var W=gt(),T=r(W,!0);t(W),C(P=>f(T,P),[()=>M(y)]),c(O,W)},B=q(()=>M(y)>0);A(v,O=>{a(B)&&O(w)})}t(s);var E=n(s,2),D=r(E);{var H=O=>{var W=ht();c(O,W)},I=O=>{var W=mt();c(O,W)},z=O=>{var W=xe(),T=ee(W);te(T,17,()=>S[y],de,(P,L)=>{var F=_t();let j;var K=r(F),ae=r(K);ge(ae,{get tier(){return a(L).tier},size:11,get color(){return`var(--tier-${a(L).tier??""})`}}),t(K);var Q=n(K,2),Z=r(Q),ne=r(Z,!0);t(Z);var Y=n(Z,2),V=r(Y),G=n(V);et(G,{get tier(){return a(L).tier},compact:!0}),t(Y),t(Q);var U=n(Q,2),$=r(U);{var ve=se=>{var _e=ft();c(se,_e)},fe=se=>{var _e=ye("on");c(se,_e)},be=q(()=>m(a(L))),he=se=>{var _e=ye("off");c(se,_e)};A($,se=>{a(L).wired?a(be)?se(fe,1):se(he,-1):se(ve)})}t(U),t(F),C(()=>{j=ue(F,1,"layers-row svelte-1g2dety",null,j,{dim:!a(L).wired}),f(ne,a(L).label),f(V,`${a(L).source??""} · `)}),c(P,F)}),c(O,W)};A(D,O=>{y==="lodestone"?O(H):y==="capstone"?O(I,1):O(z,-1)})}t(E),t(o),C(()=>{ue(o,1,`layers-group region-${y??""}`,"svelte-1g2dety"),f(b,Me[y].name),f(u,`— ${Me[y].tag??""}`)}),c(k,o)});var x=n(d,2),h=n(r(x),2);te(h,21,()=>i,k=>k.k,(k,y)=>{var o=pt();let s;var l=r(o);ge(l,{get tier(){return a(y).tier},size:11,get color(){return`var(--tier-${a(y).tier??""})`}});var b=n(l,2),N=r(b,!0);t(b);var u=n(b,2),v=r(u,!0);t(u),t(o),C(()=>{s=ue(o,1,"layers-master svelte-1g2dety",null,s,{"is-on":e.active[a(y).k]}),_(o,"aria-pressed",e.active[a(y).k]),f(N,a(y).label),f(v,e.active[a(y).k]?"ON":"OFF")}),Ne("click",o,()=>e.onToggle(a(y).k)),c(k,o)}),t(h),t(x),t(g),c(R,g),J()}Ce(["click"]);var bt=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-silent svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> silent</span>',1),wt=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-warn svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> warned</span>',1),kt=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-err svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> errored</span>',1),St=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-notinvoked svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> not invoked</span>',1),Mt=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> cache</span>',1),Ct=p('<div class="rh svelte-1vuwkv4"><span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> Stones</span> <span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> fired</span> <!> <!> <!> <!> <span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> </span> <span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> wall-clock</span> <!> <span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-total svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> registered</span></div>');function Nt(R,e){X(e,!0);function S(Y){return Y.flatMap(V=>V.children?[V,...S(V.children)]:[V])}let m=q(()=>e.stones.flatMap(Y=>S(Y.members))),M=q(()=>a(m).length),i=q(()=>a(m).filter(Y=>Y.status==="fired"||Y.status==="warned").length),g=q(()=>a(m).filter(Y=>Y.status==="silent_by_design").length),d=q(()=>a(m).filter(Y=>Y.status==="warned").length),x=q(()=>a(m).filter(Y=>Y.status==="errored").length),h=q(()=>a(m).filter(Y=>Y.status==="not_invoked").length),k=q(()=>e.wallSeconds==null?"—":e.wallSeconds<1?`${Math.round(e.wallSeconds*1e3)}ms`:`${e.wallSeconds.toFixed(1)}s`);var y=Ct(),o=r(y),s=r(o),l=r(s,!0);t(s),re(),t(o);var b=n(o,4),N=r(b),u=r(N,!0);t(N),re(),t(b);var v=n(b,2);{var w=Y=>{var V=bt(),G=n(ee(V),2),U=r(G),$=r(U,!0);t(U),re(),t(G),C(()=>f($,a(g))),c(Y,V)};A(v,Y=>{a(g)>0&&Y(w)})}var B=n(v,2);{var E=Y=>{var V=wt(),G=n(ee(V),2),U=r(G),$=r(U,!0);t(U),re(),t(G),C(()=>f($,a(d))),c(Y,V)};A(B,Y=>{a(d)>0&&Y(E)})}var D=n(B,2);{var H=Y=>{var V=kt(),G=n(ee(V),2),U=r(G),$=r(U,!0);t(U),re(),t(G),C(()=>f($,a(x))),c(Y,V)};A(D,Y=>{a(x)>0&&Y(H)})}var I=n(D,2);{var z=Y=>{var V=St(),G=n(ee(V),2),U=r(G),$=r(U,!0);t(U),re(),t(G),C(()=>f($,a(h))),c(Y,V)};A(I,Y=>{a(h)>0&&Y(z)})}var O=n(I,4),W=r(O),T=r(W,!0);t(W);var P=n(W);t(O);var L=n(O,4),F=r(L),j=r(F,!0);t(F),re(),t(L);var K=n(L,2);{var ae=Y=>{var V=Mt(),G=n(ee(V),2),U=r(G),$=r(U);t(U),re(),t(G),C(ve=>f($,`${ve??""}%`),[()=>Math.round(e.cacheHit*100)]),c(Y,V)};A(K,Y=>{e.cacheHit!=null&&Y(ae)})}var Q=n(K,4),Z=r(Q),ne=r(Z,!0);t(Z),re(),t(Q),t(y),C(()=>{f(l,e.stones.length),f(u,a(i)),f(T,e.cards.length),f(P,` evidence card${e.cards.length===1?"":"s"}`),f(j,a(k)),f(ne,a(M))}),c(R,y),J()}var Bt=p('<div class="subhead svelte-lygj3j"> </div>'),At=p('<p class="body-prose svelte-lygj3j"> </p>'),Lt=p('<div class="body body-headline svelte-lygj3j"><div class="headline svelte-lygj3j"> </div> <!> <!></div>');function Rt(R,e){X(e,!0);var S=Lt(),m=r(S),M=r(m,!0);t(m);var i=n(m,2);{var g=h=>{var k=Bt(),y=r(k,!0);t(k),C(()=>f(y,e.card.subhead)),c(h,k)};A(i,h=>{e.card.subhead&&h(g)})}var d=n(i,2);{var x=h=>{var k=At(),y=r(k,!0);t(k),C(()=>f(y,e.card.body)),c(h,k)};A(d,h=>{e.card.body&&h(x)})}t(S),C(()=>{oe(m,`color: var(--tier-${e.card.tier??""});`),f(M,e.card.headline??"")}),c(R,S),J()}var Ft=p('<th class="svelte-1nlkuao"> </th>'),Et=p('<td class="svelte-1nlkuao"> </td>'),Pt=p('<tr class="svelte-1nlkuao"></tr>'),Tt=p('<div class="body-sub svelte-1nlkuao"> </div>'),qt=p('<div class="body body-tabular svelte-1nlkuao"><table class="t svelte-1nlkuao"><thead><tr></tr></thead><tbody></tbody></table> <!></div>');function It(R,e){X(e,!0);var S=qt(),m=r(S),M=r(m),i=r(M);te(i,21,()=>e.card.columns??[],de,(h,k)=>{var y=Ft(),o=r(y,!0);t(y),C(()=>f(o,a(k))),c(h,y)}),t(i),t(M);var g=n(M);te(g,21,()=>e.card.rows??[],de,(h,k)=>{var y=Pt();te(y,21,()=>a(k),de,(o,s)=>{var l=Et(),b=r(l,!0);t(l),C(()=>f(b,a(s))),c(o,l)}),t(y),c(h,y)}),t(g),t(m);var d=n(m,2);{var x=h=>{var k=Tt(),y=r(k,!0);t(k),C(()=>f(y,e.card.sub)),c(h,k)};A(d,h=>{e.card.sub&&h(x)})}t(S),c(R,S),J()}var Dt=p('<div class="cell svelte-stf9c8"><div class="value svelte-stf9c8"> </div> <div class="label svelte-stf9c8"> </div></div>'),zt=p('<div class="body-sub svelte-stf9c8"> </div>'),Ot=p('<div class="body body-scalars svelte-stf9c8"><div class="row svelte-stf9c8"></div> <!></div>');function Ht(R,e){X(e,!0);var S=Ot(),m=r(S);te(m,21,()=>e.card.scalars??[],de,(g,d)=>{var x=Dt(),h=r(x),k=r(h,!0);t(h);var y=n(h,2),o=r(y,!0);t(y),t(x),C(()=>{oe(h,`color: var(--tier-${e.card.tier??""});`),f(k,a(d).value),f(o,a(d).label)}),c(g,x)}),t(m);var M=n(m,2);{var i=g=>{var d=zt(),x=r(d,!0);t(d),C(()=>f(x,e.card.sub)),c(g,d)};A(M,g=>{e.card.sub&&g(i)})}t(S),c(R,S),J()}var Yt=p('<div class="headline svelte-jrppts"> </div>'),jt=p('<div class="subhead svelte-jrppts"> </div>'),Wt=me("<rect></rect>"),Ut=p('<div class="body-sub svelte-jrppts"> </div>'),Gt=p('<div class="body-sub svelte-jrppts"> </div>'),Kt=p('<div class="body body-spark svelte-jrppts"><!> <!> <svg width="100%" preserveAspectRatio="none" aria-hidden="true" class="svelte-jrppts"></svg> <!> <!></div>');function Qt(R,e){X(e,!0);const S=240,m=38;let M=q(()=>e.card.spark??e.card.histogram??[]),i=q(()=>Math.max(...a(M),1)),g=q(()=>a(M).length),d=q(()=>Math.max(2,S/Math.max(a(g),1)-1.5));var x=Kt(),h=r(x);{var k=v=>{var w=Yt(),B=r(w,!0);t(w),C(()=>{oe(w,`color: var(--tier-${e.card.tier??""});`),f(B,e.card.headline)}),c(v,w)};A(h,v=>{e.card.headline&&v(k)})}var y=n(h,2);{var o=v=>{var w=jt(),B=r(w,!0);t(w),C(()=>f(B,e.card.subhead)),c(v,w)};A(y,v=>{e.card.subhead&&v(o)})}var s=n(y,2);_(s,"viewBox","0 0 240 38"),_(s,"height",m),te(s,21,()=>a(M),de,(v,w,B)=>{var E=Wt();C(()=>{_(E,"x",B/a(g)*S+.5),_(E,"y",m-a(w)/a(i)*m),_(E,"width",a(d)),_(E,"height",a(w)/a(i)*m),_(E,"fill",`var(--tier-${e.card.tier??""})`)}),c(v,E)}),t(s);var l=n(s,2);{var b=v=>{var w=Ut(),B=r(w,!0);t(w),C(()=>f(B,e.card.sparkSub)),c(v,w)};A(l,v=>{e.card.sparkSub&&v(b)})}var N=n(l,2);{var u=v=>{var w=Gt(),B=r(w,!0);t(w),C(()=>f(B,e.card.sub)),c(v,w)};A(N,v=>{!e.card.sparkSub&&e.card.sub&&v(u)})}t(x),c(R,x),J()}var Vt=p('<span class="headline svelte-48vbub"> </span>'),Zt=p('<span class="subhead svelte-48vbub"> </span>'),Xt=p('<span class="spatial-note svelte-48vbub"> </span>'),Jt=p("<span> </span>"),$t=p('<div class="body-sub svelte-48vbub"><!> <!></div>'),ea=p('<div class="body body-timeseries svelte-48vbub"><div class="ts-header svelte-48vbub"><!> <!></div> <svg width="100%" aria-hidden="true" class="svelte-48vbub"><line stroke="#C9C9C5" stroke-width="0.5" stroke-dasharray="2 2"></line><path fill="none" stroke-width="1.4"></path><circle r="3"></circle><text font-size="9" font-family="IBM Plex Mono" text-anchor="middle"> </text><text font-size="8" font-family="IBM Plex Mono" fill="#6B6B6B">now</text><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#6B6B6B"> </text></svg> <!></div>');function Ee(R,e){X(e,!0);const S=240,m=84,M=6,i=q(()=>e.card.timeseries??{hours:96,peak:{x:38,y:47},peakLabel:""}),g=q(()=>h(a(i))),d=q(()=>k(a(g),a(i))),x=q(()=>y(a(g),a(d)));function h(P){const L=[];for(let F=0;F<=P.hours;F++){const j=6*Math.sin(F/12.42*Math.PI*2),K=38*Math.exp(-Math.pow((F-P.peak.x)/12,2));L.push({x:F,y:j+K+4})}return L}function k(P,L){const F=Math.max(...P.map(K=>K.y),L.peak.y),j=Math.min(...P.map(K=>K.y),-10);return{sx:K=>M+K/L.hours*(S-M*2),sy:K=>m-M-14-(K-j)/(F-j)*(m-M*2-14)}}function y(P,L){return P.map((F,j)=>`${j?"L":"M"} ${L.sx(F.x)} ${L.sy(F.y)}`).join(" ")}var o=ea(),s=r(o),l=r(s);{var b=P=>{var L=Vt(),F=r(L,!0);t(L),C(()=>{oe(L,`color: var(--tier-${e.card.tier??""});`),f(F,e.card.headline)}),c(P,L)};A(l,P=>{e.card.headline&&P(b)})}var N=n(l,2);{var u=P=>{var L=Zt(),F=r(L,!0);t(L),C(()=>f(F,e.card.subhead)),c(P,L)};A(N,P=>{e.card.subhead&&P(u)})}t(s);var v=n(s,2);_(v,"viewBox","0 0 240 84"),_(v,"height",m);var w=r(v);_(w,"x1",M),_(w,"x2",S-M);var B=n(w),E=n(B),D=n(E),H=r(D,!0);t(D);var I=n(D);_(I,"x",M),_(I,"y",m-2);var z=n(I);_(z,"x",S-M),_(z,"y",m-2);var O=r(z);t(z),t(v);var W=n(v,2);{var T=P=>{var L=$t(),F=r(L);{var j=Q=>{var Z=Xt(),ne=r(Z,!0);t(Z),C(()=>f(ne,e.card.spatialNote)),c(Q,Z)};A(F,Q=>{e.card.spatialNote&&Q(j)})}var K=n(F,2);{var ae=Q=>{var Z=Jt(),ne=r(Z,!0);t(Z),C(()=>f(ne,e.card.sub)),c(Q,Z)};A(K,Q=>{e.card.sub&&Q(ae)})}t(L),c(P,L)};A(W,P=>{(e.card.spatialNote||e.card.sub)&&P(T)})}t(o),C((P,L,F,j,K,ae)=>{_(w,"y1",P),_(w,"y2",L),_(B,"d",a(x)),_(B,"stroke",`var(--tier-${e.card.tier??""})`),_(E,"cx",F),_(E,"cy",j),_(E,"fill",`var(--tier-${e.card.tier??""})`),_(D,"x",K),_(D,"y",ae),_(D,"fill",`var(--tier-${e.card.tier??""})`),f(H,a(i).peakLabel),f(O,`+${a(i).hours??""}h`)},[()=>a(d).sy(0),()=>a(d).sy(0),()=>a(d).sx(a(i).peak.x),()=>a(d).sy(a(i).peak.y),()=>a(d).sx(a(i).peak.x),()=>a(d).sy(a(i).peak.y)-6]),c(R,o),J()}var ta=p('<span class="ft-stat svelte-1y25lfh"><span class="ft-stat-k svelte-1y25lfh">RMSE</span> </span>'),aa=p('<span class="ft-stat ft-skill svelte-1y25lfh"> </span>'),ra=p('<span class="ft-badge svelte-1y25lfh" title="Trained on this hardware"> </span>'),sa=p('<a class="ft-link svelte-1y25lfh" target="_blank" rel="noopener noreferrer">Model card ↗</a>'),ia=p('<!> <div class="ft-footer svelte-1y25lfh"><!> <!> <!> <!></div>',1);function na(R,e){X(e,!0);var S=ia(),m=ee(S);Ee(m,{get card(){return e.card}});var M=n(m,2),i=r(M);{var g=s=>{var l=ta(),b=n(r(l));t(l),C(()=>f(b,` ${e.card.rmse??""}`)),c(s,l)};A(i,s=>{e.card.rmse&&s(g)})}var d=n(i,2);{var x=s=>{var l=aa(),b=r(l,!0);t(l),C(()=>f(b,e.card.skillVsPersistence)),c(s,l)};A(d,s=>{e.card.skillVsPersistence&&s(x)})}var h=n(d,2);{var k=s=>{var l=ra(),b=r(l,!0);t(l),C(()=>f(b,e.card.hardwareBadge)),c(s,l)};A(h,s=>{e.card.hardwareBadge&&s(k)})}var y=n(h,2);{var o=s=>{var l=sa();C(b=>_(l,"href",b),[()=>e.card.hfModelCard.startsWith("http")?e.card.hfModelCard:`https://${e.card.hfModelCard}`]),c(s,l)};A(y,s=>{e.card.hfModelCard&&s(o)})}t(M),c(R,S),J()}var la=me('<circle r="2.2"></circle><text font-size="9" font-family="IBM Plex Mono" text-anchor="middle" fill="#6B6B6B"> </text>',1),oa=p('<div class="body-sub svelte-gqkhpe"> </div>'),da=p('<div class="body body-forecast svelte-gqkhpe"><svg width="100%" aria-hidden="true" class="svelte-gqkhpe"><path fill-opacity="0.18"></path><path fill="none" stroke-width="1.5"></path><!></svg> <!></div>');function va(R,e){X(e,!0);const S=240,m=88,M=6;let i=q(()=>e.card.forecast??[]),g=q(()=>a(i).map((v,w)=>M+w/Math.max(a(i).length-1,1)*(S-M*2))),d=q(()=>Math.max(...a(i).map(v=>v.high),1));function x(v){return m-M-v/a(d)*(m-M*2-12)}let h=q(()=>a(g).map((v,w)=>`${w?"L":"M"} ${v} ${x(a(i)[w].mid)}`).join(" ")),k=q(()=>{if(!a(i).length)return"";const v=a(g).map((B,E)=>`${B} ${x(a(i)[E].low)}`).join(" L "),w=[...a(g)].reverse().map((B,E)=>`${B} ${x(a(i)[a(i).length-1-E].high)}`).join(" L ");return`M ${v} L ${w} Z`});var y=da(),o=r(y);_(o,"viewBox","0 0 240 88"),_(o,"height",m);var s=r(o),l=n(s),b=n(l);te(b,17,()=>a(i),de,(v,w,B)=>{var E=la(),D=ee(E),H=n(D);_(H,"y",m-1);var I=r(H,!0);t(H),C(z=>{_(D,"cx",a(g)[B]),_(D,"cy",z),_(D,"fill",`var(--tier-${e.card.tier??""})`),_(H,"x",a(g)[B]),f(I,a(w).year)},[()=>x(a(w).mid)]),c(v,E)}),t(o);var N=n(o,2);{var u=v=>{var w=oa(),B=r(w,!0);t(w),C(()=>f(B,e.card.sub)),c(v,w)};A(N,v=>{e.card.sub&&v(u)})}t(y),C(()=>{_(s,"d",a(k)),_(s,"fill",`var(--tier-${e.card.tier??""})`),_(l,"d",a(h)),_(l,"stroke",`var(--tier-${e.card.tier??""})`)}),c(R,y),J()}var ca=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><rect fill="#E8ECF2"></rect><g stroke="#D9D6CC" stroke-width="0.6"><line x1="0" y1="40" y2="40"></line><line x1="0" y1="80" y2="80"></line><line x1="60" y1="0" x2="60"></line><line x1="160" y1="0" x2="160"></line></g><path d="M20 50 Q 60 38 90 56 Q 120 76 150 64 Q 180 50 180 86 Q 130 100 70 96 Q 30 92 20 76 Z" fill="rgba(42,111,168,0.32)" stroke="#2A6FA8" stroke-width="0.7"></path><path d="M40 60 Q 80 54 110 70 Q 140 84 160 78 Q 165 90 130 92 Q 80 90 50 82 Z" fill="rgba(11,83,148,0.36)" stroke="#0B5394" stroke-width="0.6"></path><circle cx="120" cy="74" r="3.2" fill="#005EA2" stroke="#F4F6F9" stroke-width="1.3"></circle><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#6B6B6B">2.13 in/hr · MOD</text></svg>'),ua=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><rect fill="#E8ECF2"></rect><g stroke="#D9D6CC" stroke-width="0.6"><line x1="0" y1="40" y2="40"></line><line x1="0" y1="80" y2="80"></line><line x1="60" y1="0" x2="60"></line><line x1="160" y1="0" x2="160"></line></g><path d="M180 92 Q 200 88 215 96 Q 220 105 200 104 Q 185 102 180 96 Z" fill="rgba(42,111,168,0.18)" stroke="#2A6FA8" stroke-width="0.5" stroke-dasharray="2 2"></path><circle cx="120" cy="60" r="3.2" fill="#005EA2" stroke="#F4F6F9" stroke-width="1.3"></circle><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#6B6B6B">no ponding · MOD</text></svg>'),ga=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><defs><pattern id="rt-s2-rgb" x="0" y="0" width="6" height="6" patternUnits="userSpaceOnUse"><rect width="6" height="6" fill="#7A8E6A"></rect><rect x="0" y="0" width="3" height="3" fill="#8D9C7A"></rect><rect x="3" y="3" width="3" height="3" fill="#69795D"></rect></pattern></defs><rect fill="url(#rt-s2-rgb)"></rect><rect x="0" y="55" height="6" fill="#A8A496"></rect><rect x="115" y="0" width="8" fill="#A8A496"></rect><ellipse cx="50" cy="92" rx="6" ry="3" fill="#2A6FA8" fill-opacity="0.65"></ellipse><text x="6" y="14" font-size="9" font-family="IBM Plex Mono" fill="#F4F6F9">PRITHVI · 0.3%</text><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#F4F6F9">scene 2026-05-02</text></svg>'),ha=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><rect fill="#E8ECF2"></rect><rect x="0" y="0" width="80" height="60" fill="#C66"></rect><rect x="80" y="0" width="60" height="60" fill="#C66"></rect><rect x="140" y="0" width="100" height="38" fill="#C66"></rect><rect x="140" y="38" width="100" height="22" fill="#5B7FB4"></rect><rect x="0" y="60" width="100" height="60" fill="#C66"></rect><rect x="100" y="60" width="50" height="40" fill="#5B8A4A"></rect><rect x="150" y="60" width="50" height="60" fill="#D9C75A"></rect><rect x="200" y="60" width="40" height="60" fill="#C66"></rect><rect x="100" y="100" width="50" height="20" fill="#A89A78"></rect><text x="6" y="14" font-size="9" font-family="IBM Plex Mono" fill="#F4F6F9">LULC · TerraMind</text><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#F4F6F9">scene 2026-05-02</text></svg>'),ma=me('<rect fill="rgba(42,111,168,0.55)" stroke="#2A6FA8" stroke-width="0.4"></rect>'),fa=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><rect fill="#3A3A38"></rect><!><text x="6" y="14" font-size="9" font-family="IBM Plex Mono" fill="#F4F6F9">BLDG · TerraMind</text><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#F4F6F9">36.2% built</text></svg>'),_a=p('<div class="thumb-placeholder svelte-1lx1psy">raster preview</div>');function Pe(R,e){var M=xe(),i=ee(M);{var g=o=>{var s=ca();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=r(s);_(l,"width",240),_(l,"height",120);var b=n(l),N=r(b);_(N,"x2",240);var u=n(N);_(u,"x2",240);var v=n(u);_(v,"y2",120);var w=n(v);_(w,"y2",120),t(b);var B=n(b,4);_(B,"x",234),_(B,"y",115),t(s),c(o,s)},d=o=>{var s=ua();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=r(s);_(l,"width",240),_(l,"height",120);var b=n(l),N=r(b);_(N,"x2",240);var u=n(N);_(u,"x2",240);var v=n(u);_(v,"y2",120);var w=n(v);_(w,"y2",120),t(b);var B=n(b,3);_(B,"x",234),_(B,"y",115),t(s),c(o,s)},x=o=>{var s=ga();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=n(r(s));_(l,"width",240),_(l,"height",120);var b=n(l);_(b,"width",240);var N=n(b);_(N,"height",120);var u=n(N,3);_(u,"x",234),_(u,"y",115),t(s),c(o,s)},h=o=>{var s=ha();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=r(s);_(l,"width",240),_(l,"height",120);var b=n(l,11);_(b,"x",234),_(b,"y",115),t(s),c(o,s)},k=o=>{var s=fa();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=r(s);_(l,"width",240),_(l,"height",120);var b=n(l);te(b,16,()=>[[10,10,28,18],[42,10,30,16],[78,10,40,22],[124,10,32,18],[162,10,30,18],[198,10,32,18],[10,32,28,16],[42,30,30,18],[124,32,32,16],[162,32,30,16],[198,32,32,16],[10,55,28,18],[42,55,30,18],[78,55,40,18],[124,55,32,18],[162,55,30,18],[198,55,32,18],[10,80,28,16],[42,80,30,16],[78,80,40,16],[124,80,32,16],[162,80,30,16],[10,100,28,12],[42,100,30,12],[78,100,40,12]],de,(u,v)=>{var w=ma();C(()=>{_(w,"x",v[0]),_(w,"y",v[1]),_(w,"width",v[2]),_(w,"height",v[3])}),c(u,w)});var N=n(b,2);_(N,"x",234),_(N,"y",115),t(s),c(o,s)},y=o=>{var s=_a();c(o,s)};A(i,o=>{e.kind==="stormwater"?o(g):e.kind==="stormwater-dry"?o(d,1):e.kind==="prithvi"?o(x,2):e.kind==="lulc"?o(h,3):e.kind==="buildings"?o(k,4):o(y,-1)})}c(R,M)}var ya=p('<span class="illustrative svelte-1m43x1m" title="Illustrative rendering, not source pixels">illustrative</span>'),pa=p('<span class="svelte-1m43x1m"> </span>'),xa=p('<div class="raster-headline svelte-1m43x1m"><span class="svelte-1m43x1m"> </span> <!></div>'),ba=p('<div class="body-sub svelte-1m43x1m"> </div>'),wa=p('<div class="body body-raster svelte-1m43x1m"><div class="frame svelte-1m43x1m"><!> <!></div> <!> <!></div>');function ka(R,e){X(e,!0);var S=wa(),m=r(S),M=r(m);Pe(M,{get kind(){return e.card.rasterKind}});var i=n(M,2);{var g=y=>{var o=ya();c(y,o)};A(i,y=>{(e.card.illustrative||e.card.tier==="synthetic")&&y(g)})}t(m);var d=n(m,2);{var x=y=>{var o=xa(),s=r(o),l=r(s,!0);t(s);var b=n(s,2);{var N=u=>{var v=pa(),w=r(v);t(v),C(()=>f(w,`· ${e.card.subhead??""}`)),c(u,v)};A(b,u=>{e.card.subhead&&u(N)})}t(o),C(()=>{oe(s,`color: var(--tier-${e.card.tier??""});`),f(l,e.card.headline)}),c(y,o)};A(d,y=>{e.card.headline&&y(x)})}var h=n(d,2);{var k=y=>{var o=ba(),s=r(o,!0);t(o),C(()=>f(s,e.card.sub)),c(y,o)};A(h,y=>{e.card.sub&&y(k)})}t(S),c(R,S),J()}var Sa=p('<span class="illustrative svelte-1td276x" title="Illustrative rendering, not source pixels">illustrative</span>'),Ma=p('<span class="bar-seg svelte-1td276x"></span>'),Ca=p('<li class="svelte-1td276x"><span class="swatch svelte-1td276x"></span> <span class="legend-k svelte-1td276x"> </span> <span class="legend-pct svelte-1td276x"> </span></li>'),Na=p('<div class="bar svelte-1td276x" role="img" aria-label="LULC class mix"></div> <ul class="legend svelte-1td276x"></ul>',1),Ba=p('<div class="body-sub svelte-1td276x"> </div>'),Aa=p('<div class="body body-lulc svelte-1td276x"><div class="frame svelte-1td276x"><!> <!></div> <!> <!></div>');function La(R,e){X(e,!0);let S=q(()=>(e.card.classMix??[]).reduce((o,s)=>o+(s.pct||0),0)||1);var m=Aa(),M=r(m),i=r(M);{let o=q(()=>e.card.rasterKind??"lulc");Pe(i,{get kind(){return a(o)}})}var g=n(i,2);{var d=o=>{var s=Sa();c(o,s)};A(g,o=>{(e.card.illustrative||e.card.tier==="synthetic")&&o(d)})}t(M);var x=n(M,2);{var h=o=>{var s=Na(),l=ee(s);te(l,21,()=>e.card.classMix,N=>N.k,(N,u)=>{var v=Ma();let w;C(()=>{_(v,"title",`${a(u).k??""}: ${a(u).pct??""}%`),w=oe(v,"",w,{"flex-grow":a(u).pct/a(S),background:a(u).color})}),c(N,v)}),t(l);var b=n(l,2);te(b,21,()=>e.card.classMix,N=>N.k,(N,u)=>{var v=Ca(),w=r(v);let B;var E=n(w,2),D=r(E,!0);t(E);var H=n(E,2),I=r(H);t(H),t(v),C(()=>{B=oe(w,"",B,{background:a(u).color}),f(D,a(u).k),f(I,`${a(u).pct??""}%`)}),c(N,v)}),t(b),c(o,s)};A(x,o=>{var s;(s=e.card.classMix)!=null&&s.length&&o(h)})}var k=n(x,2);{var y=o=>{var s=Ba(),l=r(s,!0);t(s),C(()=>f(l,e.card.sub)),c(o,s)};A(k,o=>{e.card.sub&&o(y)})}t(m),c(R,m),J()}var Ra=p('<span class="reg-label svelte-1iup6im"> </span> <span class="reg-source svelte-1iup6im"> </span>',1),Fa=p('<span class="reg-silent svelte-1iup6im"> </span>'),Ea=p('<li><span class="reg-tag svelte-1iup6im"><!> <span> </span></span> <!></li>'),Pa=p('<div class="body-sub svelte-1iup6im"> </div>'),Ta=p('<div class="body body-register svelte-1iup6im"><ul class="reg-list svelte-1iup6im"></ul> <!></div>');function qa(R,e){X(e,!0);var S=Ta(),m=r(S);te(m,21,()=>e.card.registers??[],de,(g,d)=>{var x=Ea();let h;var k=r(x),y=r(k);ge(y,{get tier(){return a(d).tier},size:9,get color(){return`var(--tier-${a(d).tier??""})`}});var o=n(y,2),s=r(o,!0);t(o),t(k);var l=n(k,2);{var b=u=>{var v=Ra(),w=ee(v),B=r(w,!0);t(w);var E=n(w,2),D=r(E,!0);t(E),C(()=>{_(w,"title",a(d).detail?`${a(d).label} — ${a(d).detail}`:a(d).label),f(B,a(d).label),f(D,a(d).sourceId??"")}),c(u,v)},N=u=>{var v=Fa(),w=r(v,!0);t(v),C(()=>f(w,a(d).note)),c(u,v)};A(l,u=>{a(d).label?u(b):u(N,-1)})}t(x),C(()=>{h=ue(x,1,"reg-row svelte-1iup6im",null,h,{silent:!a(d).label}),_(k,"title",a(d).tier),f(s,a(d).reg)}),c(g,x)}),t(m);var M=n(m,2);{var i=g=>{var d=Pa(),x=r(d,!0);t(d),C(()=>f(x,e.card.sub)),c(g,d)};A(M,g=>{e.card.sub&&g(i)})}t(S),c(R,S),J()}var Ia=p('<div class="cell-aux svelte-1swqabu"> </div>'),Da=p('<div class="cell svelte-1swqabu"><div class="cell-tier svelte-1swqabu"><!> <span class="cell-label"> </span></div> <div class="cell-value svelte-1swqabu"> </div> <!></div>'),za=p('<div class="cell-aux svelte-1swqabu"> </div>'),Oa=p('<div class="cell svelte-1swqabu"><div class="cell-tier svelte-1swqabu"><!> <span class="cell-label"> </span></div> <div class="cell-value svelte-1swqabu"> </div> <!></div>'),Ha=p('<div class="cmp-delta svelte-1swqabu"> </div>'),Ya=p('<div class="body-sub svelte-1swqabu"> </div>'),ja=p('<div class="body body-comparison svelte-1swqabu"><div class="cmp-grid svelte-1swqabu"><!> <div class="divider svelte-1swqabu" aria-hidden="true">vs</div> <!></div> <!> <!></div>');function Wa(R,e){X(e,!0);var S=ja(),m=r(S),M=r(m);{var i=o=>{var s=Da(),l=r(s),b=r(l);ge(b,{get tier(){return e.card.left.tier},size:10,get color(){return`var(--tier-${e.card.left.tier??""})`}});var N=n(b,2),u=r(N,!0);t(N),t(l);var v=n(l,2),w=r(v,!0);t(v);var B=n(v,2);{var E=D=>{var H=Ia(),I=r(H,!0);t(H),C(()=>f(I,e.card.left.aux)),c(D,H)};A(B,D=>{e.card.left.aux&&D(E)})}t(s),C(()=>{f(u,e.card.left.label),oe(v,`color: var(--tier-${e.card.left.tier??""});`),f(w,e.card.left.value)}),c(o,s)};A(M,o=>{e.card.left&&o(i)})}var g=n(M,4);{var d=o=>{var s=Oa(),l=r(s),b=r(l);ge(b,{get tier(){return e.card.right.tier},size:10,get color(){return`var(--tier-${e.card.right.tier??""})`}});var N=n(b,2),u=r(N,!0);t(N),t(l);var v=n(l,2),w=r(v,!0);t(v);var B=n(v,2);{var E=D=>{var H=za(),I=r(H,!0);t(H),C(()=>f(I,e.card.right.aux)),c(D,H)};A(B,D=>{e.card.right.aux&&D(E)})}t(s),C(()=>{f(u,e.card.right.label),oe(v,`color: var(--tier-${e.card.right.tier??""});`),f(w,e.card.right.value)}),c(o,s)};A(g,o=>{e.card.right&&o(d)})}t(m);var x=n(m,2);{var h=o=>{var s=Ha(),l=r(s,!0);t(s),C(()=>f(l,e.card.delta)),c(o,s)};A(x,o=>{e.card.delta&&o(h)})}var k=n(x,2);{var y=o=>{var s=Ya(),l=r(s,!0);t(s),C(()=>f(l,e.card.sub)),c(o,s)};A(k,o=>{e.card.sub&&o(y)})}t(S),c(R,S),J()}var Ua=p('<div class="meta-row svelte-e40scu"><dt class="svelte-e40scu"> </dt> <dd class="svelte-e40scu"> </dd></div>'),Ga=p('<div class="body-sub svelte-e40scu"> </div>'),Ka=p('<div class="body body-meta svelte-e40scu"><dl class="meta-list svelte-e40scu"></dl> <!></div>');function Qa(R,e){X(e,!0);var S=Ka(),m=r(S);te(m,21,()=>e.card.metaRows??[],de,(g,d)=>{var x=Ua(),h=r(x),k=r(h,!0);t(h);var y=n(h,2),o=r(y,!0);t(y),t(x),C(()=>{f(k,a(d).k),f(o,a(d).v)}),c(g,x)}),t(m);var M=n(m,2);{var i=g=>{var d=Ga(),x=r(d,!0);t(d),C(()=>f(x,e.card.sub)),c(g,d)};A(M,g=>{e.card.sub&&g(i)})}t(S),c(R,S),J()}var Va=p('<div class="unknown svelte-1x6xqhh"> </div>');function Za(R,e){X(e,!0);var S=xe(),m=ee(S);{var M=u=>{Rt(u,{get card(){return e.card}})},i=u=>{It(u,{get card(){return e.card}})},g=u=>{Ht(u,{get card(){return e.card}})},d=u=>{Qt(u,{get card(){return e.card}})},x=u=>{Ee(u,{get card(){return e.card}})},h=u=>{na(u,{get card(){return e.card}})},k=u=>{va(u,{get card(){return e.card}})},y=u=>{ka(u,{get card(){return e.card}})},o=u=>{La(u,{get card(){return e.card}})},s=u=>{qa(u,{get card(){return e.card}})},l=u=>{Wa(u,{get card(){return e.card}})},b=u=>{Qa(u,{get card(){return e.card}})},N=u=>{var v=Va(),w=r(v);t(v),C(()=>f(w,`unknown variant: ${e.card.variant??""}`)),c(u,v)};A(m,u=>{e.card.variant==="headline"?u(M):e.card.variant==="tabular"?u(i,1):e.card.variant==="scalars"?u(g,2):e.card.variant==="spark"||e.card.variant==="histogram"?u(d,3):e.card.variant==="timeseries"?u(x,4):e.card.variant==="timeseries-ft"?u(h,5):e.card.variant==="forecast"?u(k,6):e.card.variant==="raster"||e.card.variant==="raster-pred"?u(y,7):e.card.variant==="lulc"?u(o,8):e.card.variant==="register"?u(s,9):e.card.variant==="comparison"?u(l,10):e.card.variant==="meta"?u(b,11):u(N,-1)})}c(R,S),J()}var Xa=p('<button type="button" class="fc-foot-cite svelte-1nuvnzu"><span class="fc-foot-docid svelte-1nuvnzu"> </span> <span class="fc-foot-arrow svelte-1nuvnzu" aria-hidden="true">→</span></button>'),Ja=p('<span class="fc-foot-docid fc-foot-docid-mute svelte-1nuvnzu"> </span>'),$a=p('<header class="fc-head svelte-1nuvnzu"><div class="fc-head-source svelte-1nuvnzu"><!> <span class="fc-head-source-label svelte-1nuvnzu"> </span></div> <span class="fc-head-vintage svelte-1nuvnzu"> </span></header> <h4 class="fc-title svelte-1nuvnzu"> </h4> <!> <footer class="fc-foot svelte-1nuvnzu"><!> <span><!> <span> </span></span></footer>',1);function Te(R,e){X(e,!0);let S=ie(e,"density",3,"comfortable"),m=ie(e,"linkedKey",3,null),M=q(()=>m()!=null&&e.card.mapLayer!=null&&e.card.mapLayer===m()),i=q(()=>Re[e.card.tier].short),g=q(()=>e.card.mapLayer!=null);function d(){var s;e.card.mapLayer&&((s=e.onLink)==null||s.call(e,e.card.mapLayer))}function x(){var s;e.card.mapLayer&&((s=e.onLink)==null||s.call(e,null))}function h(s){var l;s.stopPropagation(),e.card.citeId&&((l=e.onCite)==null||l.call(e,e.card.citeId))}function k(s){var l;a(g)&&(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),(l=e.onLink)==null||l.call(e,e.card.mapLayer??null))}var y=xe(),o=ee(y);st(o,()=>a(g)?"button":"article",!1,(s,l)=>{Xe(s,()=>({type:a(g)?"button":void 0,role:a(g)?"button":"article",class:`fc fc-${e.card.variant??""} fc-tier-${e.card.tier??""}`,"aria-labelledby":`fc-${e.card.id}-title`,"aria-label":`${Re[e.card.tier].label} card · ${e.card.title} · ${e.card.source}`,onpointerenter:d,onpointerleave:x,onfocus:d,onblur:x,onkeydown:k,[Je]:{"is-compact":S()==="compact","is-linked":a(M),"is-interactive":a(g),"has-illustrative":e.card.illustrative||e.card.tier==="synthetic"||e.card.variant==="comparison"}}),void 0,void 0,void 0,"svelte-1nuvnzu");var b=$a(),N=ee(b),u=r(N),v=r(u);ge(v,{get tier(){return e.card.tier},size:11,get color(){return`var(--tier-${e.card.tier??""})`}});var w=n(v,2),B=r(w,!0);t(w),t(u);var E=n(u,2),D=r(E);t(E),t(N);var H=n(N,2),I=r(H,!0);t(H);var z=n(H,2);Za(z,{get card(){return e.card}});var O=n(z,2),W=r(O);{var T=ae=>{var Q=Xa(),Z=r(Q),ne=r(Z,!0);t(Z),re(2),t(Q),C(()=>{_(Q,"title",`Open ${e.card.docId} in citation drawer`),f(ne,e.card.docId)}),Ne("click",Q,h),c(ae,Q)},P=ae=>{var Q=Ja(),Z=r(Q,!0);t(Q),C(()=>f(Z,e.card.docId)),c(ae,Q)};A(W,ae=>{e.card.citeId?ae(T):ae(P,-1)})}var L=n(W,2),F=r(L);ge(F,{get tier(){return e.card.tier},size:9,get color(){return`var(--tier-${e.card.tier??""})`}});var j=n(F,2),K=r(j,!0);t(j),t(L),t(O),C(()=>{_(w,"title",e.card.agency),f(B,e.card.source),f(D,`v. ${e.card.vintage??""}`),_(H,"id",`fc-${e.card.id}-title`),f(I,e.card.title),ue(L,1,`fc-tier-badge fc-tier-badge-${e.card.tier??""}`,"svelte-1nuvnzu"),_(L,"aria-label",`epistemic tier ${a(i)}`),f(K,a(i))}),c(l,b)}),c(R,y),J()}Ce(["click"]);var er=p('<span class="sep svelte-1qqbvs2">·</span> <span class="silent svelte-1qqbvs2"><strong class="svelte-1qqbvs2"> </strong> silent</span>',1),tr=p('<span class="sep svelte-1qqbvs2">·</span> <span class="warn svelte-1qqbvs2"><strong class="svelte-1qqbvs2"> </strong> warn</span>',1),ar=p('<span class="sep svelte-1qqbvs2">·</span> <span class="err svelte-1qqbvs2"><strong class="svelte-1qqbvs2"> </strong> errored</span>',1),rr=p('<span class="sep svelte-1qqbvs2">·</span> <span class="notinvoked svelte-1qqbvs2"><strong class="svelte-1qqbvs2"> </strong> not invoked</span>',1),sr=p('<span class="tally svelte-1qqbvs2"><span class="cards"> </span> <span class="sep svelte-1qqbvs2">·</span> <span class="fired"><strong class="svelte-1qqbvs2"> </strong> fired</span> <!> <!> <!> <!> <span class="sep svelte-1qqbvs2">·</span> <span class="ms"><strong class="svelte-1qqbvs2"> </strong></span></span>');function ir(R,e){X(e,!0);function S(T){return T.flatMap(P=>P.children?[P,...S(P.children)]:[P])}let m=q(()=>S(e.members)),M=q(()=>a(m).filter(T=>T.status==="fired"||T.status==="warned").length),i=q(()=>a(m).filter(T=>T.status==="silent_by_design").length),g=q(()=>a(m).filter(T=>T.status==="warned").length),d=q(()=>a(m).filter(T=>T.status==="errored").length),x=q(()=>a(m).filter(T=>T.status==="not_invoked").length),h=q(()=>e.members.reduce((T,P)=>Math.max(T,P.ms??0),0));function k(T){return T===0?"—":T<1e3?`${T}ms`:`${(T/1e3).toFixed(1)}s`}var y=sr(),o=r(y),s=r(o);t(o);var l=n(o,4),b=r(l),N=r(b,!0);t(b),re(),t(l);var u=n(l,2);{var v=T=>{var P=er(),L=n(ee(P),2),F=r(L),j=r(F,!0);t(F),re(),t(L),C(()=>f(j,a(i))),c(T,P)};A(u,T=>{a(i)>0&&T(v)})}var w=n(u,2);{var B=T=>{var P=tr(),L=n(ee(P),2),F=r(L),j=r(F,!0);t(F),re(),t(L),C(()=>f(j,a(g))),c(T,P)};A(w,T=>{a(g)>0&&T(B)})}var E=n(w,2);{var D=T=>{var P=ar(),L=n(ee(P),2),F=r(L),j=r(F,!0);t(F),re(),t(L),C(()=>f(j,a(d))),c(T,P)};A(E,T=>{a(d)>0&&T(D)})}var H=n(E,2);{var I=T=>{var P=rr(),L=n(ee(P),2),F=r(L),j=r(F,!0);t(F),re(),t(L),C(()=>f(j,a(x))),c(T,P)};A(H,T=>{a(x)>0&&T(I)})}var z=n(H,4),O=r(z),W=r(O,!0);t(O),t(z),t(y),C(T=>{f(s,`${e.cardCount??""} card${e.cardCount===1?"":"s"}`),f(N,a(M)),f(W,T)},[()=>k(a(h))]),c(R,y),J()}var nr=p('<span class="prov-tier svelte-qakefz"><!></span>'),lr=p('<span class="prov-note svelte-qakefz"> </span>'),or=p('<span class="prov-ms svelte-qakefz"> </span>'),dr=p('<li class="prov-children svelte-qakefz"><!></li>'),vr=p('<li><span class="prov-pip svelte-qakefz" aria-hidden="true"> </span> <span class="prov-id svelte-qakefz"> </span> <!> <span class="prov-name svelte-qakefz"> </span> <!> <!></li> <!>',1),cr=p('<ul class="prov-tree svelte-qakefz"></ul>');function qe(R,e){X(e,!0);let S=ie(e,"depth",3,0);function m(g){return{fired:"●",silent_by_design:"○",warned:"▲",errored:"■",not_invoked:"□"}[g]}function M(g){return g.status==="warned"?"#B7791F":g.status==="errored"?"#B91C1C":g.status==="silent_by_design"||g.status==="not_invoked"?"var(--ink-tertiary)":g.tier?`var(--tier-${g.tier})`:"var(--ink)"}var i=cr();te(i,21,()=>e.members,g=>g.id,(g,d)=>{var x=vr(),h=ee(x),k=r(h),y=r(k,!0);t(k);var o=n(k,2),s=r(o,!0);t(o);var l=n(o,2);{var b=I=>{var z=nr(),O=r(z);{let W=q(()=>`var(--tier-${a(d).tier})`);ge(O,{get tier(){return a(d).tier},size:9,get color(){return a(W)}})}t(z),c(I,z)};A(l,I=>{a(d).tier&&I(b)})}var N=n(l,2),u=r(N,!0);t(N);var v=n(N,2);{var w=I=>{var z=lr(),O=r(z);t(z),C(()=>f(O,`— ${a(d).note??""}`)),c(I,z)};A(v,I=>{a(d).note&&I(w)})}var B=n(v,2);{var E=I=>{var z=or(),O=r(z,!0);t(z),C(W=>f(O,W),[()=>a(d).ms<1e3?`${a(d).ms}ms`:`${(a(d).ms/1e3).toFixed(1)}s`]),c(I,z)};A(B,I=>{a(d).ms!=null&&I(E)})}t(h);var D=n(h,2);{var H=I=>{var z=dr(),O=r(z);{let W=q(()=>S()+1);qe(O,{get members(){return a(d).children},get depth(){return a(W)}})}t(z),c(I,z)};A(D,I=>{var z;(z=a(d).children)!=null&&z.length&&I(H)})}C((I,z)=>{ue(h,1,`prov-row prov-status-${a(d).status??""}`,"svelte-qakefz"),oe(k,`color: ${I??""};`),f(y,z),f(s,a(d).id),f(u,a(d).name)},[()=>M(a(d)),()=>m(a(d).status)]),c(g,x)}),t(i),C(()=>oe(i,`--depth: ${S()??""};`)),c(R,i),J()}var ur=p('<div class="silent svelte-16iv0n8"><span class="silent-tag svelte-16iv0n8">silent</span> <p class="silent-prose svelte-16iv0n8"><!></p></div>'),gr=p("<div></div>"),hr=p('<div class="prov-body svelte-16iv0n8"><!></div>'),mr=p('<section><header class="region-head svelte-16iv0n8"><div class="region-head-left svelte-16iv0n8"><span class="region-num svelte-16iv0n8"> </span> <h3 class="region-name svelte-16iv0n8"> </h3> <span class="region-role svelte-16iv0n8"> </span> <span class="region-tag svelte-16iv0n8"> </span></div> <!></header> <!> <div class="prov svelte-16iv0n8"><button type="button" class="prov-toggle svelte-16iv0n8"><span class="prov-caret svelte-16iv0n8" aria-hidden="true"> </span> <span class="prov-label"> </span> <span class="prov-meta svelte-16iv0n8"> </span></button> <!></div></section>');function fr(R,e){X(e,!0);let S=ie(e,"density",3,"comfortable"),m=ie(e,"provenanceMode",3,"smart"),M=ie(e,"linkedKey",3,null),i=q(()=>Me[e.stone]),g=q(()=>`${Be.indexOf(e.stone)+1}`.padStart(2,"0")),d=q(()=>e.stone==="capstone");function x(G){return G.flatMap(U=>U.children?[U,...x(U.children)]:[U])}let h=q(()=>x(e.trace.members)),k=q(()=>a(h).length),y=q(()=>a(h).some(G=>G.status==="warned"||G.status==="errored"||G.status==="not_invoked")),o=q(()=>m()==="all-expanded"?!0:m()==="all-collapsed"?!1:a(y)),s=Se(null),l=q(()=>a(s)??a(o));le(()=>{m(),pe(s,null)});var b=mr(),N=r(b),u=r(N),v=r(u),w=r(v,!0);t(v);var B=n(v,2),E=r(B,!0);t(B);var D=n(B,2),H=r(D);t(D);var I=n(D,2),z=r(I,!0);t(I),t(u);var O=n(u,2);ir(O,{get cardCount(){return e.cards.length},get members(){return e.trace.members}}),t(N);var W=n(N,2);{var T=G=>{var U=ur(),$=n(r(U),2),ve=r($);{var fe=he=>{var se=ye("No projection cards landed for this query. Atomic functions still ran (see provenance) and returned silence rather than confabulation.");c(he,se)},be=he=>{var se=ye("No cards for this Stone on this query.");c(he,se)};A(ve,he=>{e.stone==="lodestone"?he(fe):he(be,-1)})}t($),t(U),c(G,U)},P=G=>{var U=gr();let $;te(U,21,()=>e.cards,ve=>ve.id,(ve,fe)=>{Te(ve,{get card(){return a(fe)},get density(){return S()},get linkedKey(){return M()},get onCite(){return e.onCite},get onLink(){return e.onLink}})}),t(U),C(()=>$=ue(U,1,"rail svelte-16iv0n8",null,$,{"rail-capstone":a(d)})),c(G,U)};A(W,G=>{e.cards.length===0?G(T):G(P,-1)})}var L=n(W,2),F=r(L),j=r(F),K=r(j,!0);t(j);var ae=n(j,2),Q=r(ae);t(ae);var Z=n(ae,2),ne=r(Z);t(Z),t(F);var Y=n(F,2);{var V=G=>{var U=hr(),$=r(U);qe($,{get members(){return e.trace.members}}),t(U),C(()=>_(U,"id",`prov-body-${e.stone}`)),c(G,U)};A(Y,G=>{a(l)&&G(V)})}t(L),t(b),C(()=>{ue(b,1,`region region-${e.stone??""}`,"svelte-16iv0n8"),_(b,"aria-labelledby",`region-h-${e.stone}`),_(b,"data-stone",e.stone),f(w,a(g)),_(B,"id",`region-h-${e.stone}`),f(E,a(i).name),f(H,`· ${a(i).role??""}`),f(z,a(i).tag),_(F,"aria-expanded",a(l)),_(F,"aria-controls",`prov-body-${e.stone}`),f(K,a(l)?"▾":"▸"),f(Q,`${a(l)?"Hide":"Show"} provenance`),f(ne,`· ${a(k)??""} function${a(k)===1?"":"s"}`)}),Ne("click",F,()=>pe(s,!a(l))),c(R,b),J()}Ce(["click"]);var _r=p('<section class="region region-grammar svelte-gwg123" aria-label="Card grammar reference"><header class="region-head svelte-gwg123"><div class="region-head-left svelte-gwg123"><span class="region-num svelte-gwg123">SPEC</span> <h3 class="region-name svelte-gwg123">Card grammar</h3> <span class="region-role svelte-gwg123">· every body variant in the system</span> <span class="region-tag svelte-gwg123">stubs, not findings</span></div> <span class="grammar-count svelte-gwg123"> </span></header> <div class="rail svelte-gwg123"></div></section>');function yr(R,e){let S=ie(e,"density",3,"comfortable");const m=[{id:"grm-headline",stone:"cornerstone",tier:"modeled",variant:"headline",source:"FEMA",agency:"spec",vintage:"spec",title:"Single big number, scenario-tagged",headline:"Zone AE",subhead:"preliminary FIRM, panel ID",sub:"Use when the answer is one categorical state.",docId:"DS-HEADLINE"},{id:"grm-tabular",stone:"cornerstone",tier:"empirical",variant:"tabular",source:"USGS",agency:"spec",vintage:"spec",title:"Small table of observations",columns:["id","value","dist."],rows:[["ROW-001","1.2 m","0.18 mi"],["ROW-002","0.9 m","0.32 mi"],["ROW-003","0.7 m","0.41 mi"]],sub:"Use when 3–8 records each carry the same fields.",docId:"DS-TABULAR"},{id:"grm-scalars",stone:"touchstone",tier:"empirical",variant:"scalars",source:"NWS",agency:"spec",vintage:"spec",title:"Trio of scalar readings",scalars:[{value:"0.02 in",label:"precip · 24h"},{value:"11 mph",label:"wind"},{value:"63°F",label:"temp"}],sub:"Use for current-state dashboards.",docId:"DS-SCALARS"},{id:"grm-spark",stone:"touchstone",tier:"empirical",variant:"spark",source:"FloodNet",agency:"spec",vintage:"spec",title:"Sparkline of recent events",headline:"n events",subhead:"window · peak",spark:[1,2,4,3,7,12,8,5,3,2,4,9,6],docId:"DS-SPARK"},{id:"grm-histogram",stone:"touchstone",tier:"proxy",variant:"histogram",source:"NYC 311",agency:"spec",vintage:"spec",title:"Histogram of binned counts",headline:"n calls",subhead:"window · seasonal note",histogram:[3,2,1,0,1,4,7,12,18,11,5,3,4,2,1,0,2,3,8,9,4,2,1,0],docId:"DS-HIST"},{id:"grm-timeseries",stone:"lodestone",tier:"modeled",variant:"timeseries",source:"Granite TTM",agency:"spec",vintage:"spec",title:"Forecast curve with horizon",headline:"+0.41 m peak",subhead:"+38h · 90% CI",timeseries:{hours:96,peak:{x:38,y:41},peakLabel:"+0.41 m"},spatialNote:"regional",sub:"Spatial-index callout when station ≠ point-of-query.",docId:"DS-TS"},{id:"grm-forecast",stone:"lodestone",tier:"modeled",variant:"forecast",source:"NPCC4",agency:"spec",vintage:"spec",title:"Long-horizon scenario projections",forecast:[{year:2030,low:4,mid:6,high:9},{year:2050,low:13,mid:22,high:30},{year:2100,low:38,mid:71,high:114}],sub:"Use for decadal+ uncertainty cones.",docId:"DS-FCST"},{id:"grm-raster",stone:"cornerstone",tier:"modeled",variant:"raster",source:"NYC DEP",agency:"spec",vintage:"spec",title:"Raster snapshot, mapped layer",rasterKind:"stormwater",headline:"ponding",subhead:"scenario · pixel summary",sub:"Use for any 2D model output.",docId:"DS-RASTER"},{id:"grm-rasterpred",stone:"touchstone",tier:"modeled",variant:"raster-pred",source:"Prithvi-NYC",agency:"spec",vintage:"spec",title:"Raster prediction, illustrative",rasterKind:"prithvi",headline:"n% flooded",subhead:"model · scene id",illustrative:!0,sub:"Same chrome as raster + illustrative tag.",docId:"DS-RASTERPRED"},{id:"grm-register",stone:"keystone",tier:"empirical",variant:"register",source:"NYC OpenData",agency:"spec",vintage:"spec",title:"Composite register list",registers:[{reg:"MTA",tier:"empirical",label:"Station entrance",detail:"0.18 mi · 5",sourceId:"MTA-X",note:null},{reg:"NYCHA",tier:"empirical",label:"Development",detail:"0.41 mi · 2,878 res.",sourceId:"NYCHA-Y",note:null},{reg:"DOH",tier:"empirical",label:null,detail:null,sourceId:null,note:"no acute-care hospital within 1.0 mi"}],sub:"Use when many specialists join into one Stone.",docId:"DS-REGISTER"},{id:"grm-comparison",stone:"keystone",tier:"synthetic",variant:"comparison",source:"EMP × SYN",agency:"spec",vintage:"spec",title:"Documented vs. interpreted",left:{tier:"empirical",label:"documented",value:"31.4%",aux:"n polygons"},right:{tier:"synthetic",label:"interpreted",value:"29.8%",aux:"n polygons"},delta:"Δ = −1.6 pp · agreement strong",sub:"Use to surface model–ground-truth deltas.",docId:"DS-CMP"},{id:"grm-meta",stone:"capstone",tier:"modeled",variant:"meta",source:"Mellea",agency:"spec",vintage:"spec",title:"Capstone reconciliation",metaRows:[{k:"claims",v:"12 / 12 grounded"},{k:"tier mix",v:"EMP 5 · MOD 4 · PRX 2 · SYN 1"},{k:"tier-1 freshness",v:"median 38 d"},{k:"warnings",v:"0"}],sub:"Use to expose the synthesis layer's audit.",docId:"DS-META"}];var M=_r(),i=r(M),g=n(r(i),2),d=r(g);t(g),t(i);var x=n(i,2);te(x,21,()=>m,h=>h.id,(h,k)=>{Te(h,{get card(){return a(k)},get density(){return S()}})}),t(x),t(M),C(()=>f(d,`${m.length??""} variants`)),c(R,M)}var pr=p('<section class="findings svelte-ci42t5" aria-label="Findings, grouped by Stone"><header class="findings-head svelte-ci42t5"><h2 class="findings-h2 svelte-ci42t5">Findings · grouped by Stone</h2> <span class="findings-tagline svelte-ci42t5">cards = what each Stone found · provenance collapses below</span></header> <!> <!> <!></section>');function Er(R,e){X(e,!0);let S=ie(e,"density",3,"comfortable"),m=ie(e,"provenanceMode",3,"smart"),M=ie(e,"showGrammar",3,!1),i=ie(e,"linkedKey",3,null),g=q(()=>{const s={cornerstone:[],keystone:[],touchstone:[],lodestone:[],capstone:[]};for(const l of e.data.cards)s[l.stone].push(l);return s}),d=q(()=>{const s={cornerstone:{key:"cornerstone",members:[]},keystone:{key:"keystone",members:[]},touchstone:{key:"touchstone",members:[]},lodestone:{key:"lodestone",members:[]},capstone:{key:"capstone",members:[]}};for(const l of e.data.stones)s[l.key]=l;return s});var x=pr(),h=n(r(x),2);Nt(h,{get cards(){return e.data.cards},get stones(){return e.data.stones},get wallSeconds(){return e.data.wallSeconds},get cacheHit(){return e.data.cacheHit}});var k=n(h,2);te(k,16,()=>Be,s=>s,(s,l)=>{fr(s,{get stone(){return l},get cards(){return a(g)[l]},get trace(){return a(d)[l]},get density(){return S()},get provenanceMode(){return m()},get linkedKey(){return i()},get onCite(){return e.onCite},get onLink(){return e.onLink}})});var y=n(k,2);{var o=s=>{yr(s,{get density(){return S()}})};A(y,s=>{M()&&s(o)})}t(x),c(R,x),J()}const xr={cornerstone:[{id:"CORN-001",name:"sandy_inundation.lookup",stepNames:["sandy_inundation","sandy_nta"],tier:"empirical",skipReason:"Sandy 2012 inundation: query outside NYC bounds"},{id:"CORN-002",name:"dep_stormwater.lookup",stepNames:["dep_stormwater","dep_extreme_2080_nta","dep_moderate_2050_nta","dep_moderate_current_nta"],tier:"modeled",skipReason:"NYC DEP stormwater scenarios: query outside NYC bounds"},{id:"CORN-003",name:"usgs_hwm.spatial_join",stepNames:["ida_hwm_2021"],tier:"empirical",skipReason:"USGS Ida HWMs: no marks within 800 m of address"},{id:"CORN-004",name:"prithvi_water.lookup",stepNames:["prithvi_eo_v2"],tier:"modeled",skipReason:"Prithvi-EO Ida polygons: no polygons within 500 m"},{id:"CORN-005",name:"microtopo.dem_hand_twi",stepNames:["microtopo_lidar","microtopo_nta"],tier:"proxy",skipReason:"USGS 3DEP DEM: query outside NYC raster coverage"}],keystone:[{id:"KEY-001",name:"mta_entrance_exposure",stepNames:["mta_entrance_exposure"],tier:"empirical",skipReason:"no entrances within radius"},{id:"KEY-002",name:"nycha.development_join",stepNames:["nycha_development_exposure"],tier:"empirical",skipReason:"no NYCHA developments within 1.0 mi"},{id:"KEY-003",name:"doe.school_join",stepNames:["doe_school_exposure"],tier:"empirical",skipReason:"no DOE schools within 1.0 mi"},{id:"KEY-004",name:"doh.facility_join",stepNames:["doh_hospital_exposure"],tier:"empirical",skipReason:"no acute-care hospitals within 1.0 mi"},{id:"KEY-005",name:"pluto.lot_lookup",stepNames:["pluto_lookup"],tier:"empirical",skipReason:"PLUTO join skipped: queried address not in NYC PLUTO dataset"},{id:"KEY-006",name:"terramind.buildings",stepNames:["terramind_buildings","terramind_synthesis"],tier:"modeled",skipReason:"TerraMind Buildings adapter: heavy specialist disabled (RIPRAP_HEAVY_SPECIALISTS=0)"}],touchstone:[{id:"TCH-001",name:"floodnet.history",stepNames:["floodnet"],tier:"empirical",skipReason:"FloodNet sensor: no deployments within 600 m"},{id:"TCH-002",name:"nyc311.flood_complaints",stepNames:["nyc311","nyc311_nta"],tier:"proxy",skipReason:"NYC 311: no flood-relevant complaints within 200 m"},{id:"TCH-003",name:"nws_obs.metar",stepNames:["nws_obs"],tier:"empirical",skipReason:"NWS hourly METAR: nearest ASOS reports no precipitation"},{id:"TCH-004",name:"noaa_coops.recent",stepNames:["noaa_tides"],tier:"empirical",skipReason:"NOAA tide gauge: nearest station >25 km from address"},{id:"TCH-005",name:"prithvi_nyc_pluvial",stepNames:["prithvi_eo_live"],tier:"modeled",skipReason:"Prithvi-NYC-Pluvial: live segmentation specialist disabled or no <30% cloud Sentinel-2 in last 120 d"},{id:"TCH-006",name:"terramind.lulc",stepNames:["terramind_lulc"],tier:"synthetic",skipReason:"TerraMind LULC adapter: heavy specialist disabled or eo_chip fetch silent"}],lodestone:[{id:"LOD-001",name:"nws_alerts.flood_relevant",stepNames:["nws_alerts"],tier:"modeled",skipReason:"NWS public alerts: no active flood-relevant alerts at this address"},{id:"LOD-002",name:"ttm_battery_surge.zero_shot",stepNames:["ttm_forecast"],tier:"modeled",skipReason:"Granite TTM r2 zero-shot: forecast not interesting (peak |residual| < 0.3 ft)"},{id:"LOD-003",name:"ttm_battery_surge.fine_tune",stepNames:["ttm_battery_surge"],tier:"modeled",skipReason:"Granite TTM Battery fine-tune: forecast not interesting (peak |residual| < 0.3 m)"},{id:"LOD-004",name:"ttm_311_forecast",stepNames:["ttm_311_forecast"],tier:"modeled",skipReason:"NYC 311 weekly forecast: no per-address history to extrapolate"},{id:"LOD-005",name:"floodnet_forecast",stepNames:["floodnet_forecast"],tier:"modeled",skipReason:"FloodNet sensor recurrence: sensor has < silent-floor historical events; forecast omitted"},{id:"LOD-006",name:"npcc4.slr_projection",stepNames:["npcc4_projection"],tier:"modeled",skipReason:"NPCC4 SLR projection: not yet wired into FSM (static reference card on hold)"}],capstone:[{id:"CAP-001",name:"rag.granite_embedding",stepNames:["rag_granite_embedding"],tier:"proxy",skipReason:"Granite Embedding RAG: no policy retrieval (out-of-NYC scope)"},{id:"CAP-002",name:"gliner.typed_extraction",stepNames:["gliner_extract"],tier:"proxy",skipReason:"GLiNER typed extraction: no RAG hits to extract over"},{id:"CAP-003",name:"granite41.compose_briefing",stepNames:["reconcile_granite41","mellea_reconcile_address","reconcile_neighborhood","reconcile_development","reconcile_live_now"],tier:"modeled",skipReason:"Reconciler did not run (no grounded data available)"},{id:"CAP-004",name:"mellea.grounding_check",stepNames:["mellea_grounding"],tier:"modeled",skipReason:"Mellea grounding-check: rolled into reconcile step on this run"}]};function Pr(R,e){const S=xr[R]??[],m=new Map;for(const g of e)m.set(g.name,g);const M=[],i=new Set;for(const g of S){let d;for(const x of g.stepNames){const h=m.get(x);if(h){d=h,i.add(x);break}}d?M.push({...d,id:g.id,name:g.name,tier:d.tier??g.tier??null}):M.push({id:g.id,name:g.name,status:"not_invoked",tier:g.tier??null,note:g.skipReason})}for(const g of e)i.has(g.name)||M.push(g);return M}export{Lr as C,Er as F,Fr as M,Rr as R,Pr as f};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
web/sveltekit/build/_app/immutable/chunks/BgqmyNr8.js DELETED
@@ -1 +0,0 @@
1
- var rt=e=>{throw TypeError(e)};var Dt=(e,t,n)=>t.has(e)||rt("Cannot "+n);var y=(e,t,n)=>(Dt(e,t,"read from private field"),n?n.call(e):t.get(e)),A=(e,t,n)=>t.has(e)?rt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);import{bf as Pe,bg as Vt,ai as at,a4 as T,o as I,a5 as O,ar as we,bh as Bt}from"./BTUA7_xE.js";const M=[];function Ke(e,t=Pe){let n=null;const a=new Set;function r(o){if(Vt(e,o)&&(e=o,n)){const l=!M.length;for(const c of a)c[1](),M.push(c,e);if(l){for(let c=0;c<M.length;c+=2)M[c][0](M[c+1]);M.length=0}}}function i(o){r(o(e))}function s(o,l=Pe){const c=[o,l];return a.add(c),a.size===1&&(n=t(r,i)||Pe),o(e),()=>{a.delete(c),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:s}}class Me{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class ze{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Fe extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Kt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Mt(e){return e.split("%25").map(decodeURI).join("%25")}function zt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function je({href:e}){return e.split("#")[0]}function $(){}function Ft(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function Gt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const Ht=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&X.delete(Ge(e)),Ht(e,t));const X=new Map;function Wt(e,t){const n=Ge(e,t),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const s=a.getAttribute("data-ttl");return s&&X.set(n,{body:r,init:i,ttl:1e3*Number(s)}),a.getAttribute("data-b64")!==null&&(r=Gt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function Jt(e,t,n){if(X.size>0){const a=Ge(e,n),r=X.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(r.body,r.init);X.delete(a)}}return window.fetch(t,n)}function Ge(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${Ft(...r)}"]`}return a}const Yt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Xt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Zt(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const s=a.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return $e(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return $e(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=Yt.exec(l),[,u,w,p,f]=d;return t.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&s[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return $e(l)}).join("")}).join("")}/?$`),params:t}}function Qt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Zt(e){return e.slice(1).split("/").filter(Qt)}function en(e,t,n){const a={},r=e.slice(1),i=r.filter(o=>o!==void 0);let s=0;for(let o=0;o<t.length;o+=1){const l=t[o];let c=r[o-s];if(l.chained&&l.rest&&s&&(c=r.slice(o-s,o+1).filter(d=>d).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=t[o+1],u=r[o+1];d&&!d.rest&&d.optional&&u&&l.chained&&(s=0),!d&&!u&&Object.keys(a).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return a}function $e(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function tn({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([o,[l,c,d]])=>{const{pattern:u,params:w}=Xt(o),p={id:o,exec:f=>{const m=u.exec(f);if(m)return en(m,w,a)},errors:[1,...d||[]].map(f=>e[f]),layouts:[0,...c||[]].map(s),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(o){const l=o<0;return l&&(o=~o),[l,e[o]]}function s(o){return o===void 0?o:[r.has(o),e[o]]}}function wt(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ot(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}var ht;const U=((ht=globalThis.__sveltekit_8j9bml)==null?void 0:ht.base)??"";var pt;const nn=((pt=globalThis.__sveltekit_8j9bml)==null?void 0:pt.assets)??U??"",rn="1778128400538",vt="sveltekit:snapshot",yt="sveltekit:scroll",bt="sveltekit:states",an="sveltekit:pageurl",F="sveltekit:history",Z="sveltekit:navigation",D={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Ue=location.origin;function He(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function B(){return{x:pageXOffset,y:pageYOffset}}function z(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const st={...D,"":D.hover};function kt(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function St(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=kt(e)}}function qe(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";a.hash=`#${o}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||Ae(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),s=(a==null?void 0:a.origin)===Ue&&e.hasAttribute("download");return{url:a,external:i,target:r,download:s}}function ve(e){let t=null,n=null,a=null,r=null,i=null,s=null,o=e;for(;o&&o!==document.documentElement;)a===null&&(a=z(o,"preload-code")),r===null&&(r=z(o,"preload-data")),t===null&&(t=z(o,"keepfocus")),n===null&&(n=z(o,"noscroll")),i===null&&(i=z(o,"reload")),s===null&&(s=z(o,"replacestate")),o=kt(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:st[a??"off"],preload_data:st[r??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(s)}}function it(e){const t=Ke(e);let n=!0;function a(){n=!0,t.update(s=>s)}function r(s){n=!1,t.set(s)}function i(s){let o;return t.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:a,set:r,subscribe:i}}const Et={v:$};function on(){const{set:e,subscribe:t}=Ke(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${nn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const s=(await r.json()).version!==rn;return s&&(e(!0),Et.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:t,check:a}}function Ae(e,t,n){return e.origin!==Ue||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Pn(e){}const Rt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Rt];const sn=new Set([...Rt]);[...sn];function ln(e){return e.filter(t=>t!=null)}function me(e,t){return e+"/"+t}function We(e){return e instanceof Me||e instanceof Fe?e.status:500}function cn(e){return e instanceof Fe?e.text:"Internal Error"}let R,ee,Ce;const fn=at.toString().includes("$$")||/function \w+\(\) \{\}/.test(at.toString()),lt="a:";var oe,se,ie,le,ce,fe,ue,de,gt,he,mt,pe,_t;fn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(lt)},ee={current:null},Ce={current:!1}):(R=new(gt=class{constructor(){A(this,oe,T({}));A(this,se,T(null));A(this,ie,T(null));A(this,le,T({}));A(this,ce,T({id:null}));A(this,fe,T({}));A(this,ue,T(-1));A(this,de,T(new URL(lt)))}get data(){return I(y(this,oe))}set data(t){O(y(this,oe),t)}get form(){return I(y(this,se))}set form(t){O(y(this,se),t)}get error(){return I(y(this,ie))}set error(t){O(y(this,ie),t)}get params(){return I(y(this,le))}set params(t){O(y(this,le),t)}get route(){return I(y(this,ce))}set route(t){O(y(this,ce),t)}get state(){return I(y(this,fe))}set state(t){O(y(this,fe),t)}get status(){return I(y(this,ue))}set status(t){O(y(this,ue),t)}get url(){return I(y(this,de))}set url(t){O(y(this,de),t)}},oe=new WeakMap,se=new WeakMap,ie=new WeakMap,le=new WeakMap,ce=new WeakMap,fe=new WeakMap,ue=new WeakMap,de=new WeakMap,gt),ee=new(mt=class{constructor(){A(this,he,T(null))}get current(){return I(y(this,he))}set current(t){O(y(this,he),t)}},he=new WeakMap,mt),Ce=new(_t=class{constructor(){A(this,pe,T(!1))}get current(){return I(y(this,pe))}set current(t){O(y(this,pe),t)}},pe=new WeakMap,_t),Et.v=()=>Ce.current=!0);function un(e){Object.assign(R,e)}const dn=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const N=wt(yt)??{},te=wt(vt)??{},C={url:it({}),page:it({}),navigating:Ke(null),updated:on()};function Je(e){N[e]=B()}function hn(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function ne(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise($)}async function xt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}let Ye,De,ye,P,Ve,S;const be=[],ke=[];let v=null;function Se(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const _e=new Map,Lt=new Set,pn=new Set,Q=new Set;let _={branch:[],error:null,url:null},Ut=!1,Ee=!1,ct=!0,re=!1,Y=!1,At=!1,Xe=!1,Tt,k,L,V;const Re=new Set,ft=new Map,ut=new Map;async function Nn(e,t,n){var i,s,o,l;globalThis.__sveltekit_8j9bml&&(globalThis.__sveltekit_8j9bml.query,globalThis.__sveltekit_8j9bml.prerender),document.URL!==location.href&&(location.href=location.href),S=e,await((s=(i=e.hooks).init)==null?void 0:s.call(i)),Ye=tn(e),P=document.documentElement,Ve=t,De=e.nodes[0],ye=e.nodes[1],De(),ye(),k=(o=history.state)==null?void 0:o[F],L=(l=history.state)==null?void 0:l[Z],k||(k=L=Date.now(),history.replaceState({...history.state,[F]:k,[Z]:L},""));const a=N[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Ln(Ve,n)):(await G({type:"enter",url:He(S.hash?Tn(new URL(location.href)):location.href),replace_state:!0}),r()),xn()}function gn(){be.length=0,Xe=!1}function It(e){ke.some(t=>t==null?void 0:t.snapshot)&&(te[e]=ke.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function Ot(e){var t;(t=te[e])==null||t.forEach((n,a)=>{var r,i;(i=(r=ke[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function dt(){Je(k),ot(yt,N),It(L),ot(vt,te)}async function Pt(e,t,n,a){let r,i;t.invalidateAll&&Se(),await G({type:"goto",url:He(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{if(t.invalidateAll){Xe=!0,r=new Set;for(const[s,o]of ft)for(const l of o.keys())r.add(me(s,l));i=new Set;for(const[s,o]of ut)for(const l of o.keys())i.add(me(s,l))}t.invalidate&&t.invalidate.forEach(Rn)}}),t.invalidateAll&&we().then(we).then(()=>{for(const[s,o]of ft)for(const[l,{resource:c}]of o)r!=null&&r.has(me(s,l))&&c.refresh();for(const[s,o]of ut)for(const[l,{resource:c}]of o)i!=null&&i.has(me(s,l))&&c.reconnect()})}async function mn(e){if(e.id!==(v==null?void 0:v.id)){Se();const t={};Re.add(t),v={id:e.id,token:t,promise:$t({...e,preload:t}).then(n=>(Re.delete(t),n.type==="loaded"&&n.state.error&&Se(),n)),fork:null}}return v.promise}async function Ne(e){var n;const t=(n=await Te(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(a=>a[1]()))}async function jt(e,t,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...e.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(R,e.props.page),Tt=new S.root({target:t,props:{...e.props,stores:C,components:ke},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),Ot(L),n){const s={from:null,to:{...a,scroll:N[k]??B()},willUnload:!1,type:"enter",complete:Promise.resolve()};Q.forEach(o=>o(s))}Ee=!0}async function xe({url:e,params:t,branch:n,errors:a,status:r,error:i,route:s,form:o}){let l="never";if(U&&(e.pathname===U||e.pathname===U+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);e.pathname=Kt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:s},props:{constructors:ln(n).map(f=>f.node.component),page:nt(R)}};o!==void 0&&(c.props.form=o);let d={},u=!R,w=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const m=n[f],h=_.branch[f];(m==null?void 0:m.data)!==(h==null?void 0:h.data)&&(u=!0),m&&(d={...d,...m.data},u&&(c.props[`data_${w}`]=d),w+=1)}return(!_.url||e.href!==_.url.href||_.error!==i||o!==void 0&&o!==R.form||u)&&(c.props.page={error:i,params:t,route:{id:(s==null?void 0:s.id)??null},state:{},status:r,url:new URL(e),form:o??null,data:u?d:R.data}),c}async function Qe({loader:e,parent:t,url:n,params:a,route:r,server_data_node:i}){var c,d;let s=null;const o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:s,uses:o}:null,data:s??(i==null?void 0:i.data)??null,slash:((d=l.universal)==null?void 0:d.trailingSlash)??(i==null?void 0:i.slash)}}function _n(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const i=Ee?Jt(a,r.href,t):Wt(a,t);return{resolved:r,promise:i}}function wn(e,t,n,a,r,i){if(Xe)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const s of r.search_params)if(a.has(s))return!0;for(const s of r.params)if(i[s]!==_.params[s])return!0;for(const s of r.dependencies)if(be.some(o=>o(new URL(s))))return!0;return!1}function Ze(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function vn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(s=>i.includes(s))&&i.every(s=>r.includes(s))&&n.delete(a)}return n}function yn({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:nt(R),constructors:[]}}}async function $t({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if((v==null?void 0:v.id)===e)return Re.delete(v.token),v.promise;const{errors:s,layouts:o,leaf:l}=r,c=[...o,l];s.forEach(h=>h==null?void 0:h().catch($)),c.forEach(h=>h==null?void 0:h[1]().catch($));const d=_.url?e!==Le(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=vn(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var j;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!wn(p,u,d,w,(j=b.universal)==null?void 0:j.uses,a)?b:(p=!0,Qe({loader:h[1],url:n,params:a,route:r,parent:async()=>{var ge;const q={};for(let K=0;K<g;K+=1)Object.assign(q,(ge=await f[K])==null?void 0:ge.data);return q},server_data_node:Ze(h[0]?{type:"skip"}:null,h[0]?b==null?void 0:b.server:void 0)}))});for(const h of f)h.catch($);const m=[];for(let h=0;h<c.length;h+=1)if(c[h])try{m.push(await f[h])}catch(g){if(g instanceof ze)return{type:"redirect",location:g.location};if(Re.has(i))return yn({error:await ae(g,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let b=We(g),x;if(g instanceof Me)x=g.body;else{if(await C.updated.check())return await xt(),await ne(n);x=await ae(g,{params:a,url:n,route:{id:r.id}})}const j=await bn(h,m,s);return j?xe({url:n,params:a,branch:m.slice(0,j.idx).concat(j.node),errors:s,status:b,error:x,route:r}):await Nt(n,{id:r.id},x,b)}else m.push(void 0);return xe({url:n,params:a,branch:m,errors:s,status:200,error:null,route:r,form:t?void 0:null})}async function bn(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function et({status:e,error:t,url:n,route:a}){const r={};let i=null;try{const s=await Qe({loader:De,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:Ze(i)}),o={node:await ye(),loader:ye,universal:null,server:null,data:null};return xe({url:n,params:r,branch:[s,o],status:e,error:t,errors:[],route:null})}catch(s){if(s instanceof ze)return Pt(new URL(s.location,location.href),{},0);throw s}}async function kn(e){const t=e.href;if(_e.has(t))return _e.get(t);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(e),fetch:async(i,s)=>_n(i,s,e).promise})??e;if(typeof r=="string"){const i=new URL(e);S.hash?i.hash=r:i.pathname=r,r=i}return r})();_e.set(t,a),n=await a}catch{_e.delete(t);return}return n}async function Te(e,t){if(e&&!Ae(e,U,S.hash)){const n=await kn(e);if(!n)return;const a=Sn(n);for(const r of Ye){const i=r.exec(a);if(i)return{id:Le(e),invalidating:t,route:r,params:zt(i),url:e}}}}function Sn(e){return Mt(S.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function Le(e){return(S.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function Ct({url:e,type:t,intent:n,delta:a,event:r,scroll:i}){let s=!1;const o=tt(_,n,e,t,i??null);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return re||Lt.forEach(c=>c(l)),s?null:o}async function G({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=$,block:d=$,event:u}){var K;const w=V;V=l;const p=await Te(t,!1),f=e==="enter"?tt(_,p,t,e):Ct({url:t,type:e,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),V===l&&(V=w);return}const m=k,h=L;c(),re=!0,Ee&&f.navigation.type!=="enter"&&C.navigating.set(ee.current=f.navigation);let g=p&&await $t(p);if(!g){if(Ae(t,U,S.hash))return await ne(t,i);g=await Nt(t,{id:null},await ae(new Fe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(p==null?void 0:p.url)||t,V!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(o<20){await G({type:e,url:new URL(g.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),f.fulfil(void 0);return}g=await et({status:500,error:await ae(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await C.updated.check()&&(await xt(),await ne(t,i));if(gn(),Je(m),It(h),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),s=n?n.state:s,!n){const E=i?0:1,H={[F]:k+=E,[Z]:L+=E,[bt]:s};(i?history.replaceState:history.pushState).call(history,H,"",t),i||hn(k,L)}const b=p&&(v==null?void 0:v.id)===p.id?v.fork:null;v!=null&&v.fork&&!b&&Se(),v=null,g.props.page.state=s;let x;if(Ee){const E=(await Promise.all(Array.from(pn,W=>W(f.navigation)))).filter(W=>typeof W=="function");if(E.length>0){let W=function(){E.forEach(Oe=>{Q.delete(Oe)})};E.push(W),E.forEach(Oe=>{Q.add(Oe)})}const H=f.navigation.to;_={...g.state,nav:{params:H.params,route:H.route,url:H.url}},g.props.page&&(g.props.page.url=t);const Ie=b&&await b;Ie?x=Ie.commit():(J=null,Tt.$set(g.props),J&&Object.assign(g.props.page,J),un(g.props.page),x=(K=Bt)==null?void 0:K()),At=!0}else await jt(g,Ve,!1);const{activeElement:j}=document;await x,await we(),await we();let q=null;if(ct){const E=n?n.scroll:r?B():null;E?scrollTo(E.x,E.y):(q=t.hash&&document.getElementById(qt(t)))?q.scrollIntoView():scrollTo(0,0)}const ge=document.activeElement!==j&&document.activeElement!==document.body;!a&&!ge&&An(t,!q),ct=!0,g.props.page&&(J&&Object.assign(g.props.page,J),Object.assign(R,g.props.page)),re=!1,e==="popstate"&&Ot(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=B()),Q.forEach(E=>E(f.navigation)),C.navigating.set(ee.current=null)}async function Nt(e,t,n,a,r){return e.origin===Ue&&e.pathname===location.pathname&&!Ut?await et({status:a,error:n,url:e,route:t}):await ne(e,r)}function En(){let e,t={element:void 0,href:void 0},n;P.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(e),e=setTimeout(()=>{i(l,D.hover)},20)});function a(o){o.defaultPrevented||i(o.composedPath()[0],D.tap)}P.addEventListener("mousedown",a),P.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Ne(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(o,l){const c=St(o,P),d=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=qe(c,U,S.hash);if(w||p)return;const f=ve(c),m=u&&Le(_.url)===Le(u);if(!(f.reload||m))if(l<=f.preload_data){t={element:c,href:c.href},n=D.tap;const h=await Te(u,!1);if(!h)return;mn(h)}else l<=f.preload_code&&(t={element:c,href:c.href},n=l,Ne(u))}function s(){r.disconnect();for(const o of P.querySelectorAll("a")){const{url:l,external:c,download:d}=qe(o,U,S.hash);if(c||d)continue;const u=ve(o);u.reload||(u.preload_code===D.viewport&&r.observe(o),u.preload_code===D.eager&&Ne(l))}}Q.add(s),s()}function ae(e,t){if(e instanceof Me)return e.body;const n=We(e),a=cn(e);return S.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function qn(e,t={}){return e=new URL(He(e)),e.origin!==Ue?Promise.reject(new Error("goto: invalid URL")):Pt(e,t,0)}function Rn(e){if(typeof e=="function")be.push(e);else{const{href:t}=new URL(e,location.href);be.push(n=>n.href===t)}}function xn(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(dt(),!re){const r=tt(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};Lt.forEach(s=>s(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&dt()}),(t=navigator.connection)!=null&&t.saveData||En(),P.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=St(n.composedPath()[0],P);if(!a)return;const{url:r,external:i,target:s,download:o}=qe(a,U,S.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const l=ve(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===je(location);if(i||l.reload&&(!w||!u)){Ct({url:r,type:"link",event:n})?re=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,Je(k),e(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await G({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),P.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const o=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Ae(o,U,!1))return;const l=n.target,c=ve(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);o.search=new URLSearchParams(d).toString(),G({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!Be){if((a=n.state)!=null&&a[F]){const r=n.state[F];if(V={},r===k)return;const i=N[r],s=n.state[bt]??{},o=new URL(n.state[an]??location.href),l=n.state[Z],c=_.url?je(location)===je(_.url):!1;if(l===L&&(At||c)){s!==R.state&&(R.state=s),e(o),N[k]=B(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await G({type:"popstate",url:o,popped:{state:s,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:V,event:n})}else if(!Y){const r=new URL(location.href);e(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[F]:++k,[Z]:L},"",location.href))});for(const n of document.querySelectorAll("link"))dn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&C.navigating.set(ee.current=null)});function e(n){_.url=R.url=n,C.page.set(nt(R)),C.page.notify()}}async function Ln(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:s,data:o,form:l}){Ut=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await Te(c,!1)||{}),d=Ye.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=o[h];return g!=null&&g.uses&&(g.uses=Un(g.uses)),Qe({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let x=0;x<h;x+=1)Object.assign(b,(await p[x]).data);return b},server_data_node:Ze(g)})}),f=await Promise.all(p);if(d){const m=d.layouts;for(let h=0;h<m.length;h++)m[h]||f.splice(h,0,void 0)}u=await xe({url:c,params:r,branch:f,status:t,error:n,errors:d==null?void 0:d.errors,form:l,route:d??null})}catch(p){if(p instanceof ze){await ne(new URL(p.location,location.href));return}u=await et({status:We(p),error:await ae(p,{url:c,params:r,route:i}),url:c,route:i}),e.textContent="",w=!1}finally{}u.props.page&&(u.props.page.state={}),await jt(u,e,w)}function Un(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let Be=!1;function An(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=qt(e);if(a&&document.getElementById(a)){const{x:i,y:s}=B();setTimeout(()=>{const o=history.state;Be=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(o,"",e),t&&scrollTo(i,s),Be=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let s=0;s<r.rangeCount;s+=1)i.push(r.getRangeAt(s));setTimeout(()=>{if(r.rangeCount===i.length){for(let s=0;s<r.rangeCount;s+=1){const o=i[s],l=r.getRangeAt(s);if(o.commonAncestorContainer!==l.commonAncestorContainer||o.startContainer!==l.startContainer||o.endContainer!==l.endContainer||o.startOffset!==l.startOffset||o.endOffset!==l.endOffset)return}r.removeAllRanges()}})}}}function tt(e,t,n,a,r=null){var c,d;let i,s;const o=new Promise((u,w)=>{i=u,s=w});return o.catch($),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:B()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((d=t==null?void 0:t.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!t,type:a,complete:o},fulfil:i,reject:s}}function nt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Tn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(S.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Nn as a,qn as g,Pn as l,R as p,C as s};
 
 
web/sveltekit/build/_app/immutable/chunks/Bi6ZzEYr.js DELETED
@@ -1 +0,0 @@
1
- import{s as e,p as r}from"./Drrr58vi.js";const t={get error(){return r.error},get params(){return r.params},get status(){return r.status},get url(){return r.url}};e.updated.check;const a=t;export{a as p};
 
 
web/sveltekit/build/_app/immutable/chunks/{CC8czMej.js → C3emz_VZ.js} RENAMED
The diff for this file is too large to render. See raw diff
 
web/sveltekit/build/_app/immutable/chunks/CAMdvC-O.js DELETED
@@ -1 +0,0 @@
1
- const s="https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json",t="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json";export{t as P,s as a};
 
 
web/sveltekit/build/_app/immutable/chunks/CR2ah4JU.js DELETED
@@ -1 +0,0 @@
1
- import{s as e,p as r}from"./BS22DDzI.js";const t={get error(){return r.error},get params(){return r.params},get status(){return r.status},get url(){return r.url}};e.updated.check;const a=t;export{a as p};
 
 
web/sveltekit/build/_app/immutable/chunks/CbyeixEA.js DELETED
@@ -1 +0,0 @@
1
- import{s as e,p as r}from"./33K0dtcD.js";const t={get error(){return r.error},get params(){return r.params},get status(){return r.status},get url(){return r.url}};e.updated.check;const a=t;export{a as p};
 
 
web/sveltekit/build/_app/immutable/chunks/Drrr58vi.js DELETED
@@ -1 +0,0 @@
1
- var rt=e=>{throw TypeError(e)};var Dt=(e,t,n)=>t.has(e)||rt("Cannot "+n);var y=(e,t,n)=>(Dt(e,t,"read from private field"),n?n.call(e):t.get(e)),A=(e,t,n)=>t.has(e)?rt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);import{bf as Pe,bg as Vt,ai as at,a4 as T,o as I,a5 as O,ar as we,bh as Bt}from"./BTUA7_xE.js";const M=[];function Ke(e,t=Pe){let n=null;const a=new Set;function r(o){if(Vt(e,o)&&(e=o,n)){const l=!M.length;for(const c of a)c[1](),M.push(c,e);if(l){for(let c=0;c<M.length;c+=2)M[c][0](M[c+1]);M.length=0}}}function i(o){r(o(e))}function s(o,l=Pe){const c=[o,l];return a.add(c),a.size===1&&(n=t(r,i)||Pe),o(e),()=>{a.delete(c),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:s}}class Me{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class ze{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Fe extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Kt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Mt(e){return e.split("%25").map(decodeURI).join("%25")}function zt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function $e({href:e}){return e.split("#")[0]}function C(){}function Ft(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function Gt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const Ht=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&X.delete(Ge(e)),Ht(e,t));const X=new Map;function Wt(e,t){const n=Ge(e,t),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const s=a.getAttribute("data-ttl");return s&&X.set(n,{body:r,init:i,ttl:1e3*Number(s)}),a.getAttribute("data-b64")!==null&&(r=Gt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function Jt(e,t,n){if(X.size>0){const a=Ge(e,n),r=X.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(r.body,r.init);X.delete(a)}}return window.fetch(t,n)}function Ge(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${Ft(...r)}"]`}return a}const Yt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Xt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Zt(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const s=a.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return Ce(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return Ce(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=Yt.exec(l),[,u,w,p,f]=d;return t.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&s[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return Ce(l)}).join("")}).join("")}/?$`),params:t}}function Qt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Zt(e){return e.slice(1).split("/").filter(Qt)}function en(e,t,n){const a={},r=e.slice(1),i=r.filter(o=>o!==void 0);let s=0;for(let o=0;o<t.length;o+=1){const l=t[o];let c=r[o-s];if(l.chained&&l.rest&&s&&(c=r.slice(o-s,o+1).filter(d=>d).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=t[o+1],u=r[o+1];d&&!d.rest&&d.optional&&u&&l.chained&&(s=0),!d&&!u&&Object.keys(a).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return a}function Ce(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function tn({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([o,[l,c,d]])=>{const{pattern:u,params:w}=Xt(o),p={id:o,exec:f=>{const m=u.exec(f);if(m)return en(m,w,a)},errors:[1,...d||[]].map(f=>e[f]),layouts:[0,...c||[]].map(s),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(o){const l=o<0;return l&&(o=~o),[l,e[o]]}function s(o){return o===void 0?o:[r.has(o),e[o]]}}function wt(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ot(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}var ht;const U=((ht=globalThis.__sveltekit_1d8nmm3)==null?void 0:ht.base)??"";var pt;const nn=((pt=globalThis.__sveltekit_1d8nmm3)==null?void 0:pt.assets)??U??"",rn="1778198642997",vt="sveltekit:snapshot",yt="sveltekit:scroll",bt="sveltekit:states",an="sveltekit:pageurl",F="sveltekit:history",Z="sveltekit:navigation",D={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Ue=location.origin;function He(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function B(){return{x:pageXOffset,y:pageYOffset}}function z(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const st={...D,"":D.hover};function kt(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function St(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=kt(e)}}function qe(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";a.hash=`#${o}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||Ae(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),s=(a==null?void 0:a.origin)===Ue&&e.hasAttribute("download");return{url:a,external:i,target:r,download:s}}function ve(e){let t=null,n=null,a=null,r=null,i=null,s=null,o=e;for(;o&&o!==document.documentElement;)a===null&&(a=z(o,"preload-code")),r===null&&(r=z(o,"preload-data")),t===null&&(t=z(o,"keepfocus")),n===null&&(n=z(o,"noscroll")),i===null&&(i=z(o,"reload")),s===null&&(s=z(o,"replacestate")),o=kt(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:st[a??"off"],preload_data:st[r??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(s)}}function it(e){const t=Ke(e);let n=!0;function a(){n=!0,t.update(s=>s)}function r(s){n=!1,t.set(s)}function i(s){let o;return t.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:a,set:r,subscribe:i}}const Et={v:C};function on(){const{set:e,subscribe:t}=Ke(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${nn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const s=(await r.json()).version!==rn;return s&&(e(!0),Et.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:t,check:a}}function Ae(e,t,n){return e.origin!==Ue||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Pn(e){}const Rt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Rt];const sn=new Set([...Rt]);[...sn];function ln(e){return e.filter(t=>t!=null)}function me(e,t){return e+"/"+t}function We(e){return e instanceof Me||e instanceof Fe?e.status:500}function cn(e){return e instanceof Fe?e.text:"Internal Error"}let R,ee,je;const fn=at.toString().includes("$$")||/function \w+\(\) \{\}/.test(at.toString()),lt="a:";var oe,se,ie,le,ce,fe,ue,de,gt,he,mt,pe,_t;fn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(lt)},ee={current:null},je={current:!1}):(R=new(gt=class{constructor(){A(this,oe,T({}));A(this,se,T(null));A(this,ie,T(null));A(this,le,T({}));A(this,ce,T({id:null}));A(this,fe,T({}));A(this,ue,T(-1));A(this,de,T(new URL(lt)))}get data(){return I(y(this,oe))}set data(t){O(y(this,oe),t)}get form(){return I(y(this,se))}set form(t){O(y(this,se),t)}get error(){return I(y(this,ie))}set error(t){O(y(this,ie),t)}get params(){return I(y(this,le))}set params(t){O(y(this,le),t)}get route(){return I(y(this,ce))}set route(t){O(y(this,ce),t)}get state(){return I(y(this,fe))}set state(t){O(y(this,fe),t)}get status(){return I(y(this,ue))}set status(t){O(y(this,ue),t)}get url(){return I(y(this,de))}set url(t){O(y(this,de),t)}},oe=new WeakMap,se=new WeakMap,ie=new WeakMap,le=new WeakMap,ce=new WeakMap,fe=new WeakMap,ue=new WeakMap,de=new WeakMap,gt),ee=new(mt=class{constructor(){A(this,he,T(null))}get current(){return I(y(this,he))}set current(t){O(y(this,he),t)}},he=new WeakMap,mt),je=new(_t=class{constructor(){A(this,pe,T(!1))}get current(){return I(y(this,pe))}set current(t){O(y(this,pe),t)}},pe=new WeakMap,_t),Et.v=()=>je.current=!0);function un(e){Object.assign(R,e)}const dn=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const N=wt(yt)??{},te=wt(vt)??{},j={url:it({}),page:it({}),navigating:Ke(null),updated:on()};function Je(e){N[e]=B()}function hn(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function ne(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(C)}async function xt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}let Ye,De,ye,P,Ve,S;const be=[],ke=[];let v=null;function Se(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const _e=new Map,Lt=new Set,pn=new Set,Q=new Set;let _={branch:[],error:null,url:null},Ut=!1,Ee=!1,ct=!0,re=!1,Y=!1,At=!1,Xe=!1,Tt,k,L,V;const Re=new Set,ft=new Map,ut=new Map;async function Nn(e,t,n){var i,s,o,l;globalThis.__sveltekit_1d8nmm3&&(globalThis.__sveltekit_1d8nmm3.query,globalThis.__sveltekit_1d8nmm3.prerender),document.URL!==location.href&&(location.href=location.href),S=e,await((s=(i=e.hooks).init)==null?void 0:s.call(i)),Ye=tn(e),P=document.documentElement,Ve=t,De=e.nodes[0],ye=e.nodes[1],De(),ye(),k=(o=history.state)==null?void 0:o[F],L=(l=history.state)==null?void 0:l[Z],k||(k=L=Date.now(),history.replaceState({...history.state,[F]:k,[Z]:L},""));const a=N[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Ln(Ve,n)):(await G({type:"enter",url:He(S.hash?Tn(new URL(location.href)):location.href),replace_state:!0}),r()),xn()}function gn(){be.length=0,Xe=!1}function It(e){ke.some(t=>t==null?void 0:t.snapshot)&&(te[e]=ke.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function Ot(e){var t;(t=te[e])==null||t.forEach((n,a)=>{var r,i;(i=(r=ke[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function dt(){Je(k),ot(yt,N),It(L),ot(vt,te)}async function Pt(e,t,n,a){let r,i;t.invalidateAll&&Se(),await G({type:"goto",url:He(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{if(t.invalidateAll){Xe=!0,r=new Set;for(const[s,o]of ft)for(const l of o.keys())r.add(me(s,l));i=new Set;for(const[s,o]of ut)for(const l of o.keys())i.add(me(s,l))}t.invalidate&&t.invalidate.forEach(Rn)}}),t.invalidateAll&&we().then(we).then(()=>{for(const[s,o]of ft)for(const[l,{resource:c}]of o)r!=null&&r.has(me(s,l))&&c.refresh();for(const[s,o]of ut)for(const[l,{resource:c}]of o)i!=null&&i.has(me(s,l))&&c.reconnect()})}async function mn(e){if(e.id!==(v==null?void 0:v.id)){Se();const t={};Re.add(t),v={id:e.id,token:t,promise:Ct({...e,preload:t}).then(n=>(Re.delete(t),n.type==="loaded"&&n.state.error&&Se(),n)),fork:null}}return v.promise}async function Ne(e){var n;const t=(n=await Te(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(a=>a[1]()))}async function $t(e,t,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...e.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(R,e.props.page),Tt=new S.root({target:t,props:{...e.props,stores:j,components:ke},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),Ot(L),n){const s={from:null,to:{...a,scroll:N[k]??B()},willUnload:!1,type:"enter",complete:Promise.resolve()};Q.forEach(o=>o(s))}Ee=!0}async function xe({url:e,params:t,branch:n,errors:a,status:r,error:i,route:s,form:o}){let l="never";if(U&&(e.pathname===U||e.pathname===U+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);e.pathname=Kt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:s},props:{constructors:ln(n).map(f=>f.node.component),page:nt(R)}};o!==void 0&&(c.props.form=o);let d={},u=!R,w=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const m=n[f],h=_.branch[f];(m==null?void 0:m.data)!==(h==null?void 0:h.data)&&(u=!0),m&&(d={...d,...m.data},u&&(c.props[`data_${w}`]=d),w+=1)}return(!_.url||e.href!==_.url.href||_.error!==i||o!==void 0&&o!==R.form||u)&&(c.props.page={error:i,params:t,route:{id:(s==null?void 0:s.id)??null},state:{},status:r,url:new URL(e),form:o??null,data:u?d:R.data}),c}async function Qe({loader:e,parent:t,url:n,params:a,route:r,server_data_node:i}){var c,d;let s=null;const o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:s,uses:o}:null,data:s??(i==null?void 0:i.data)??null,slash:((d=l.universal)==null?void 0:d.trailingSlash)??(i==null?void 0:i.slash)}}function _n(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const i=Ee?Jt(a,r.href,t):Wt(a,t);return{resolved:r,promise:i}}function wn(e,t,n,a,r,i){if(Xe)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const s of r.search_params)if(a.has(s))return!0;for(const s of r.params)if(i[s]!==_.params[s])return!0;for(const s of r.dependencies)if(be.some(o=>o(new URL(s))))return!0;return!1}function Ze(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function vn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(s=>i.includes(s))&&i.every(s=>r.includes(s))&&n.delete(a)}return n}function yn({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:nt(R),constructors:[]}}}async function Ct({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if((v==null?void 0:v.id)===e)return Re.delete(v.token),v.promise;const{errors:s,layouts:o,leaf:l}=r,c=[...o,l];s.forEach(h=>h==null?void 0:h().catch(C)),c.forEach(h=>h==null?void 0:h[1]().catch(C));const d=_.url?e!==Le(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=vn(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var $;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!wn(p,u,d,w,($=b.universal)==null?void 0:$.uses,a)?b:(p=!0,Qe({loader:h[1],url:n,params:a,route:r,parent:async()=>{var ge;const q={};for(let K=0;K<g;K+=1)Object.assign(q,(ge=await f[K])==null?void 0:ge.data);return q},server_data_node:Ze(h[0]?{type:"skip"}:null,h[0]?b==null?void 0:b.server:void 0)}))});for(const h of f)h.catch(C);const m=[];for(let h=0;h<c.length;h+=1)if(c[h])try{m.push(await f[h])}catch(g){if(g instanceof ze)return{type:"redirect",location:g.location};if(Re.has(i))return yn({error:await ae(g,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let b=We(g),x;if(g instanceof Me)x=g.body;else{if(await j.updated.check())return await xt(),await ne(n);x=await ae(g,{params:a,url:n,route:{id:r.id}})}const $=await bn(h,m,s);return $?xe({url:n,params:a,branch:m.slice(0,$.idx).concat($.node),errors:s,status:b,error:x,route:r}):await Nt(n,{id:r.id},x,b)}else m.push(void 0);return xe({url:n,params:a,branch:m,errors:s,status:200,error:null,route:r,form:t?void 0:null})}async function bn(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function et({status:e,error:t,url:n,route:a}){const r={};let i=null;try{const s=await Qe({loader:De,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:Ze(i)}),o={node:await ye(),loader:ye,universal:null,server:null,data:null};return xe({url:n,params:r,branch:[s,o],status:e,error:t,errors:[],route:null})}catch(s){if(s instanceof ze)return Pt(new URL(s.location,location.href),{},0);throw s}}async function kn(e){const t=e.href;if(_e.has(t))return _e.get(t);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(e),fetch:async(i,s)=>_n(i,s,e).promise})??e;if(typeof r=="string"){const i=new URL(e);S.hash?i.hash=r:i.pathname=r,r=i}return r})();_e.set(t,a),n=await a}catch{_e.delete(t);return}return n}async function Te(e,t){if(e&&!Ae(e,U,S.hash)){const n=await kn(e);if(!n)return;const a=Sn(n);for(const r of Ye){const i=r.exec(a);if(i)return{id:Le(e),invalidating:t,route:r,params:zt(i),url:e}}}}function Sn(e){return Mt(S.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function Le(e){return(S.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:a,event:r,scroll:i}){let s=!1;const o=tt(_,n,e,t,i??null);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return re||Lt.forEach(c=>c(l)),s?null:o}async function G({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=C,block:d=C,event:u}){var K;const w=V;V=l;const p=await Te(t,!1),f=e==="enter"?tt(_,p,t,e):jt({url:t,type:e,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),V===l&&(V=w);return}const m=k,h=L;c(),re=!0,Ee&&f.navigation.type!=="enter"&&j.navigating.set(ee.current=f.navigation);let g=p&&await Ct(p);if(!g){if(Ae(t,U,S.hash))return await ne(t,i);g=await Nt(t,{id:null},await ae(new Fe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(p==null?void 0:p.url)||t,V!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(o<20){await G({type:e,url:new URL(g.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),f.fulfil(void 0);return}g=await et({status:500,error:await ae(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await j.updated.check()&&(await xt(),await ne(t,i));if(gn(),Je(m),It(h),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),s=n?n.state:s,!n){const E=i?0:1,H={[F]:k+=E,[Z]:L+=E,[bt]:s};(i?history.replaceState:history.pushState).call(history,H,"",t),i||hn(k,L)}const b=p&&(v==null?void 0:v.id)===p.id?v.fork:null;v!=null&&v.fork&&!b&&Se(),v=null,g.props.page.state=s;let x;if(Ee){const E=(await Promise.all(Array.from(pn,W=>W(f.navigation)))).filter(W=>typeof W=="function");if(E.length>0){let W=function(){E.forEach(Oe=>{Q.delete(Oe)})};E.push(W),E.forEach(Oe=>{Q.add(Oe)})}const H=f.navigation.to;_={...g.state,nav:{params:H.params,route:H.route,url:H.url}},g.props.page&&(g.props.page.url=t);const Ie=b&&await b;Ie?x=Ie.commit():(J=null,Tt.$set(g.props),J&&Object.assign(g.props.page,J),un(g.props.page),x=(K=Bt)==null?void 0:K()),At=!0}else await $t(g,Ve,!1);const{activeElement:$}=document;await x,await we(),await we();let q=null;if(ct){const E=n?n.scroll:r?B():null;E?scrollTo(E.x,E.y):(q=t.hash&&document.getElementById(qt(t)))?q.scrollIntoView():scrollTo(0,0)}const ge=document.activeElement!==$&&document.activeElement!==document.body;!a&&!ge&&An(t,!q),ct=!0,g.props.page&&(J&&Object.assign(g.props.page,J),Object.assign(R,g.props.page)),re=!1,e==="popstate"&&Ot(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=B()),Q.forEach(E=>E(f.navigation)),j.navigating.set(ee.current=null)}async function Nt(e,t,n,a,r){return e.origin===Ue&&e.pathname===location.pathname&&!Ut?await et({status:a,error:n,url:e,route:t}):await ne(e,r)}function En(){let e,t={element:void 0,href:void 0},n;P.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(e),e=setTimeout(()=>{i(l,D.hover)},20)});function a(o){o.defaultPrevented||i(o.composedPath()[0],D.tap)}P.addEventListener("mousedown",a),P.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Ne(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(o,l){const c=St(o,P),d=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=qe(c,U,S.hash);if(w||p)return;const f=ve(c),m=u&&Le(_.url)===Le(u);if(!(f.reload||m))if(l<=f.preload_data){t={element:c,href:c.href},n=D.tap;const h=await Te(u,!1);if(!h)return;mn(h)}else l<=f.preload_code&&(t={element:c,href:c.href},n=l,Ne(u))}function s(){r.disconnect();for(const o of P.querySelectorAll("a")){const{url:l,external:c,download:d}=qe(o,U,S.hash);if(c||d)continue;const u=ve(o);u.reload||(u.preload_code===D.viewport&&r.observe(o),u.preload_code===D.eager&&Ne(l))}}Q.add(s),s()}function ae(e,t){if(e instanceof Me)return e.body;const n=We(e),a=cn(e);return S.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function qn(e,t={}){return e=new URL(He(e)),e.origin!==Ue?Promise.reject(new Error("goto: invalid URL")):Pt(e,t,0)}function Rn(e){if(typeof e=="function")be.push(e);else{const{href:t}=new URL(e,location.href);be.push(n=>n.href===t)}}function xn(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(dt(),!re){const r=tt(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};Lt.forEach(s=>s(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&dt()}),(t=navigator.connection)!=null&&t.saveData||En(),P.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=St(n.composedPath()[0],P);if(!a)return;const{url:r,external:i,target:s,download:o}=qe(a,U,S.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const l=ve(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===$e(location);if(i||l.reload&&(!w||!u)){jt({url:r,type:"link",event:n})?re=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,Je(k),e(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await G({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),P.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const o=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Ae(o,U,!1))return;const l=n.target,c=ve(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);o.search=new URLSearchParams(d).toString(),G({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!Be){if((a=n.state)!=null&&a[F]){const r=n.state[F];if(V={},r===k)return;const i=N[r],s=n.state[bt]??{},o=new URL(n.state[an]??location.href),l=n.state[Z],c=_.url?$e(location)===$e(_.url):!1;if(l===L&&(At||c)){s!==R.state&&(R.state=s),e(o),N[k]=B(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await G({type:"popstate",url:o,popped:{state:s,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:V,event:n})}else if(!Y){const r=new URL(location.href);e(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[F]:++k,[Z]:L},"",location.href))});for(const n of document.querySelectorAll("link"))dn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&j.navigating.set(ee.current=null)});function e(n){_.url=R.url=n,j.page.set(nt(R)),j.page.notify()}}async function Ln(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:s,data:o,form:l}){Ut=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await Te(c,!1)||{}),d=Ye.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=o[h];return g!=null&&g.uses&&(g.uses=Un(g.uses)),Qe({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let x=0;x<h;x+=1)Object.assign(b,(await p[x]).data);return b},server_data_node:Ze(g)})}),f=await Promise.all(p);if(d){const m=d.layouts;for(let h=0;h<m.length;h++)m[h]||f.splice(h,0,void 0)}u=await xe({url:c,params:r,branch:f,status:t,error:n,errors:d==null?void 0:d.errors,form:l,route:d??null})}catch(p){if(p instanceof ze){await ne(new URL(p.location,location.href));return}u=await et({status:We(p),error:await ae(p,{url:c,params:r,route:i}),url:c,route:i}),e.textContent="",w=!1}finally{}u.props.page&&(u.props.page.state={}),await $t(u,e,w)}function Un(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let Be=!1;function An(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=qt(e);if(a&&document.getElementById(a)){const{x:i,y:s}=B();setTimeout(()=>{const o=history.state;Be=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(o,"",e),t&&scrollTo(i,s),Be=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let s=0;s<r.rangeCount;s+=1)i.push(r.getRangeAt(s));setTimeout(()=>{if(r.rangeCount===i.length){for(let s=0;s<r.rangeCount;s+=1){const o=i[s],l=r.getRangeAt(s);if(o.commonAncestorContainer!==l.commonAncestorContainer||o.startContainer!==l.startContainer||o.endContainer!==l.endContainer||o.startOffset!==l.startOffset||o.endOffset!==l.endOffset)return}r.removeAllRanges()}})}}}function tt(e,t,n,a,r=null){var c,d;let i,s;const o=new Promise((u,w)=>{i=u,s=w});return o.catch(C),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:B()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((d=t==null?void 0:t.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!t,type:a,complete:o},fulfil:i,reject:s}}function nt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Tn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(S.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Nn as a,qn as g,Pn as l,R as p,j as s};
 
 
web/sveltekit/build/_app/immutable/chunks/WSwxEsIs.js DELETED
@@ -1,37 +0,0 @@
1
- import{k as Ie,o as De,a as c,f as p,s as f,t as ye,d as Ce,c as xe,e as Ne,b as me}from"./CWw6qgC_.js";import{h as ce,n as Ae,j as we,bd as ze,d as Oe,a3 as He,aW as Ye,b7 as je,k as We,b as Ue,e as Le,i as ke,a0 as Ge,av as Ke,p as X,t as C,a as J,s as n,c as r,r as t,aR as re,o as a,al as q,am as le,ai as Qe,be as Ve,a5 as pe,a4 as Se,f as ee}from"./BTUA7_xE.js";import{B as Ze,i as A}from"./Bd-v_9Ud.js";import{e as te,i as de}from"./25_y8TFd.js";import{s as _,a as ue,b as oe,c as Xe,C as Je}from"./B0XoTt7U.js";import{T as ge,c as $e,b as et,d as Re}from"./BatqQaKj.js";import{b as tt,_ as at}from"./CXQd8Y6F.js";import{p as ie}from"./CW0zSL4D.js";import{a as rt}from"./CAMdvC-O.js";function st(R,e,S,m,M,i){let g=ce;ce&&Ae();var d=null;ce&&we.nodeType===ze&&(d=we,Ae());var x=ce?we:R,h=new Ze(x,!1);Oe(()=>{const k=e()||null;var y=k==="svg"?je:void 0;if(k===null){h.ensure(null,null);return}return h.ensure(k,o=>{if(k){if(d=ce?d:Ye(k,y),Ie(d,d),m){ce&&De(k)&&d.append(document.createComment(""));var s=ce?We(d):d.appendChild(Ue());ce&&(s===null?Le(!1):ke(s)),m(d,s)}Ge.nodes.end=d,o.before(d)}ce&&ke(o)}),()=>{}},He),Ke(()=>{}),g&&(Le(!0),ke(x))}var it=p('<a target="_blank" rel="noopener noreferrer"> </a>'),nt=p('<li><span class="citation-num"> </span> <div class="citation-body"><div class="citation-line-1"><!> <span class="citation-source"> </span> <span class="citation-vintage"> </span></div> <div class="citation-title"><!></div> <div class="citation-meta"><span class="citation-docid"> </span> <span class="citation-retrieved"> </span></div></div></li>'),lt=p(`<aside class="citation-drawer svelte-1p339fd" aria-label="Citations"><div class="citation-drawer-head"><span class="section-label"> </span> <span class="citation-drawer-meta">live · primary sources</span></div> <ol class="citation-list"></ol> <div class="citation-drawer-foot"><span class="section-label">Trust signals</span> <p class="citation-foot-copy">All foundation models Apache-2.0. All data from public-record federal,
2
- state, and city sources. No commercial APIs contacted at runtime.</p></div></aside>`);function Lr(R,e){X(e,!0);let S=q(()=>Object.values(e.citations).sort((x,h)=>x.n-h.n));var m=lt(),M=r(m),i=r(M),g=r(i);t(i),re(2),t(M);var d=n(M,2);te(d,21,()=>a(S),x=>x.id,(x,h)=>{var k=nt();let y;var o=r(k),s=r(o);t(o);var l=n(o,2),b=r(l),N=r(b);ge(N,{get tier(){return a(h).tier},size:10,get color(){return`var(--tier-${a(h).tier??""})`}});var u=n(N,2),v=r(u,!0);t(u);var w=n(u,2),B=r(w);t(w),t(b);var E=n(b,2),D=r(E);{var H=F=>{var j=it(),K=r(j,!0);t(j),C(()=>{_(j,"href",a(h).url),f(K,a(h).title)}),c(F,j)},I=q(()=>a(h).url&&a(h).url.startsWith("http")),z=F=>{var j=ye();C(()=>f(j,a(h).title)),c(F,j)};A(D,F=>{a(I)?F(H):F(z,-1)})}t(E);var O=n(E,2),W=r(O),T=r(W,!0);t(W);var P=n(W,2),L=r(P);t(P),t(O),t(l),t(k),C(()=>{_(k,"id",`cite-${a(h).id??""}`),y=ue(k,1,"citation-item",null,y,{"is-active":$e.active===a(h).id}),f(s,`[${a(h).n??""}]`),f(v,a(h).source),f(B,`v. ${a(h).vintage??""}`),f(T,a(h).docId),f(L,`retr. ${a(h).retrieved??""}`)}),c(x,k)}),t(d),re(2),t(m),C(()=>f(g,`Citations · ${a(S).length??""}`)),c(R,m),J()}const Fe=`<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
3
- <rect width="12" height="12" fill="rgba(42,111,168,0.18)"/>
4
- <g stroke="#2A6FA8" stroke-width="1.4">
5
- <line x1="-2" y1="2" x2="14" y2="-14"/>
6
- <line x1="-2" y1="8" x2="14" y2="-8"/>
7
- <line x1="-2" y1="14" x2="14" y2="-2"/>
8
- <line x1="-2" y1="20" x2="14" y2="4"/>
9
- </g>
10
- </svg>`,ot=`<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
11
- <rect width="12" height="12" fill="rgba(42,111,168,0.16)"/>
12
- <g stroke="#2A6FA8" stroke-width="1.1">
13
- <line x1="-2" y1="6" x2="14" y2="-10"/>
14
- <line x1="-2" y1="14" x2="14" y2="-2"/>
15
- <line x1="-2" y1="22" x2="14" y2="6"/>
16
- </g>
17
- </svg>`;async function dt(R,e){const S=new Blob([R],{type:"image/svg+xml"}),m=URL.createObjectURL(S);try{return await new Promise((i,g)=>{const d=new Image(e,e);d.onload=()=>i(d),d.onerror=x=>g(x),d.src=m})}finally{URL.revokeObjectURL(m)}}async function vt(R){const e=[["syn-stripe-45",Fe,12],["syn-stripe-45-2x",Fe,24],["syn-stripe-45-low",ot,12]];for(const[S,m,M]of e)if(!R.hasImage(S))try{const i=await dt(m,M);R.addImage(S,i,{pixelRatio:M/12})}catch(i){console.warn(`syn-stripe registration failed for ${S}`,i)}}var ct=p('<span class="link-badge svelte-wk2bu4" aria-hidden="true"> </span>'),ut=p('<div class="map-frame svelte-wk2bu4"><div role="application" class="rip-map-container svelte-wk2bu4"></div> <!></div>');function Rr(R,e){X(e,!0);let S=ie(e,"activeLayers",19,()=>({empirical:!0,modeled:!0,synthetic:!0,proxy:!0})),m=ie(e,"linkedKey",3,null),M=Se(null),i=null,g=Se(!1);const d={type:"FeatureCollection",features:[]};function x(l,b){if(!i||!a(g))return;const N=i.getSource(l);N&&N.setData(b??d)}function h(l,b){!i||!a(g)||i.getLayer(l)&&i.setLayoutProperty(l,"visibility",b?"visible":"none")}le(()=>{x("sandy-empirical",e.sandyEmpirical)}),le(()=>{x("dep-modeled",e.depModeled)}),le(()=>{x("syn-prior",e.syntheticPrior)}),le(()=>{x("proxy-311",e.proxy311)}),le(()=>{x("register-points",e.registerPoints)}),le(()=>{x("register-polygons",e.registerPolygons)}),le(()=>{x("terramind-lulc",e.terramindLulc)}),le(()=>{x("ida-hwm",e.idaHwm)}),le(()=>{h("tier-empirical-fill",S().empirical),h("tier-empirical-line",S().empirical),h("ida-hwm-circle",S().empirical),h("tier-modeled-fill",S().modeled),h("tier-modeled-line",S().modeled),h("tier-synthetic-fill",S().synthetic),h("tier-synthetic-line",S().synthetic),h("terramind-lulc-fill",S().synthetic),h("terramind-lulc-line",S().synthetic),h("tier-proxy-dots",S().proxy)}),le(()=>{!i||!a(g)||i.flyTo({center:[e.address.lon,e.address.lat],zoom:15,essential:!0})}),Qe(async()=>{if(!a(M))return;const l=await at(()=>import("./D4L2lGt1.js").then(b=>b.m),[],import.meta.url);i=new l.Map({container:a(M),style:rt,center:[e.address.lon,e.address.lat],zoom:15,attributionControl:{compact:!0}}),i.addControl(new l.NavigationControl({visualizePitch:!1}),"top-right"),i.addControl(new l.ScaleControl({maxWidth:100,unit:"imperial"}),"bottom-left"),i.on("load",()=>{if(!i)return;window.__riprapMap=i,vt(i);const b=()=>({type:"FeatureCollection",features:[]});i.addSource("sandy-empirical",{type:"geojson",data:e.sandyEmpirical??b()}),i.addSource("dep-modeled",{type:"geojson",data:e.depModeled??b()}),i.addSource("syn-prior",{type:"geojson",data:e.syntheticPrior??b()}),i.addSource("proxy-311",{type:"geojson",data:e.proxy311??b()}),i.addSource("register-points",{type:"geojson",data:e.registerPoints??b()}),i.addSource("register-polygons",{type:"geojson",data:e.registerPolygons??b()}),i.addSource("terramind-lulc",{type:"geojson",data:e.terramindLulc??b()}),i.addSource("ida-hwm",{type:"geojson",data:e.idaHwm??b()}),i.addSource("queried-address",{type:"geojson",data:{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:[e.address.lon,e.address.lat]},properties:{label:e.address.label}}]}}),i.addLayer({id:"tier-empirical-fill",type:"fill",source:"sandy-empirical",paint:{"fill-color":"#0B5394","fill-opacity":.4}}),i.addLayer({id:"tier-empirical-line",type:"line",source:"sandy-empirical",paint:{"line-color":"#0B5394","line-width":1.5}}),i.addLayer({id:"tier-modeled-fill",type:"fill",source:"dep-modeled",paint:{"fill-color":"#2A6FA8","fill-opacity":.25}}),i.addLayer({id:"tier-modeled-line",type:"line",source:"dep-modeled",paint:{"line-color":"#2A6FA8","line-width":1.5}}),i.addLayer({id:"tier-synthetic-fill",type:"fill",source:"syn-prior",paint:{"fill-pattern":"syn-stripe-45","fill-opacity":.65}}),i.addLayer({id:"tier-synthetic-line",type:"line",source:"syn-prior",paint:{"line-color":"#2A6FA8","line-width":1.5,"line-dasharray":[4,3]}}),i.addLayer({id:"tier-proxy-dots",type:"circle",source:"proxy-311",paint:{"circle-color":"transparent","circle-stroke-color":"#6B6B6B","circle-stroke-width":1.25,"circle-radius":["interpolate",["linear"],["coalesce",["get","count"],1],1,3,5,6,15,9,30,12]}}),i.addLayer({id:"terramind-lulc-fill",type:"fill",source:"terramind-lulc",paint:{"fill-color":["get","fill_color"],"fill-opacity":.25}}),i.addLayer({id:"terramind-lulc-line",type:"line",source:"terramind-lulc",paint:{"line-color":["get","fill_color"],"line-width":.75,"line-opacity":.45,"line-dasharray":[3,2]}}),i.addLayer({id:"register-polygons-fill",type:"fill",source:"register-polygons",paint:{"fill-color":"#0B5394","fill-opacity":["interpolate",["linear"],["coalesce",["get","pct_inside_sandy"],0],0,.1,25,.2,50,.32,75,.45]}}),i.addLayer({id:"register-polygons-line",type:"line",source:"register-polygons",paint:{"line-color":"#0B5394","line-width":1,"line-opacity":.85}}),i.addLayer({id:"ida-hwm-circle",type:"circle",source:"ida-hwm",paint:{"circle-color":"#D97706","circle-stroke-color":"#F4F6F9","circle-stroke-width":1.5,"circle-radius":["interpolate",["linear"],["coalesce",["get","height_above_gnd_ft"],.5],0,5,1,7,3,9,5,12],"circle-opacity":.92}}),i.on("mouseenter","ida-hwm-circle",()=>{i&&(i.getCanvas().style.cursor="pointer")}),i.on("mouseleave","ida-hwm-circle",()=>{i&&(i.getCanvas().style.cursor="")}),i.on("click","ida-hwm-circle",N=>{var W;if(!i||!((W=N.features)!=null&&W.length))return;const u=N.features[0],v=u.properties??{},w=String(v.site_description??"?"),B=v.elev_ft!=null?`${Number(v.elev_ft).toFixed(1)} ft NAVD88`:"—",E=v.height_above_gnd_ft!=null?`${Number(v.height_above_gnd_ft).toFixed(2)} ft above ground`:"—",D=String(v.hwm_quality??""),H=v.distance_m!=null?`${v.distance_m} m from query`:"",I=`
18
- <div style="font-family: 'IBM Plex Sans', system-ui; font-size: 12px; max-width: 220px;">
19
- <div style="font-weight: 600; color: #D97706; font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase;">Ida 2021 HWM · USGS</div>
20
- <div style="margin-top: 4px; color: #0F172A; font-size: 12px;">${w}</div>
21
- <div style="margin-top: 6px; font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; color: #6B6B6B;">
22
- elev: ${B}<br>
23
- mark: ${E}<br>
24
- ${D?`quality: ${D}<br>`:""}
25
- ${H}
26
- </div>
27
- </div>`,z=new l.Popup({closeButton:!0,offset:12}),O=u.geometry.coordinates;z.setLngLat(O).setHTML(I).addTo(i)}),i.addLayer({id:"register-points-circle",type:"circle",source:"register-points",paint:{"circle-color":["case",["==",["get","inside_sandy_2012"],!0],"#0B5394","#6B6B6B"],"circle-stroke-color":"#F4F6F9","circle-stroke-width":1.25,"circle-radius":["match",["get","kind"],"subway",4,"school",5,"hospital",6,"nycha",7,4],"circle-opacity":.9}}),i.on("mouseenter","register-points-circle",()=>{i&&(i.getCanvas().style.cursor="pointer")}),i.on("mouseleave","register-points-circle",()=>{i&&(i.getCanvas().style.cursor="")}),i.on("click","register-points-circle",N=>{var O;if(!i||!((O=N.features)!=null&&O.length))return;const u=N.features[0],v=u.properties??{},w=String(v.name??"?"),B=String(v.kind??"?"),E=v.inside_sandy_2012===!0||v.inside_sandy_2012==="true",D=String(v.doc_id??""),H=`
28
- <div style="font-family: 'IBM Plex Sans', system-ui; font-size: 12px;">
29
- <div style="font-weight: 600; color: #0F172A;">${w}</div>
30
- <div style="color: #6B6B6B; font-size: 11px; margin-top: 2px;">${B}</div>
31
- <div style="margin-top: 6px;">
32
- <span style="font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; color: ${E?"#0B5394":"#6B6B6B"};">
33
- inside_sandy_2012=${E}
34
- </span>
35
- </div>
36
- ${D?`<div style="margin-top: 4px; font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; color: #005EA2;">[${D}]</div>`:""}
37
- </div>`,I=new l.Popup({closeButton:!0,offset:12}),z=u.geometry.coordinates;I.setLngLat(z).setHTML(H).addTo(i)}),i.addLayer({id:"queried-halo",type:"circle",source:"queried-address",paint:{"circle-color":"rgba(209, 124, 0, 0.20)","circle-radius":16}}),i.addLayer({id:"queried-pin",type:"circle",source:"queried-address",paint:{"circle-color":"#005EA2","circle-stroke-color":"#F4F6F9","circle-stroke-width":2,"circle-radius":7}}),i.addLayer({id:"queried-label",type:"symbol",source:"queried-address",layout:{"text-field":["get","label"],"text-font":["Open Sans Semibold","Arial Unicode MS Bold"],"text-size":12,"text-offset":[0,-1.6],"text-anchor":"bottom"},paint:{"text-color":"#0F172A","text-halo-color":"#F4F6F9","text-halo-width":1.5}}),pe(g,!0)})}),Ve(()=>{i==null||i.remove(),i=null});var k=ut(),y=r(k);tt(y,l=>pe(M,l),()=>a(M));var o=n(y,2);{var s=l=>{var b=ct(),N=r(b);t(b),C(()=>f(N,`linked: ${m()??""}`)),c(l,b)};A(o,l=>{m()&&l(s)})}t(k),C(()=>{_(k,"data-linked",m()??""),_(y,"aria-label",`Flood-exposure map for ${e.address.label??""}`)}),c(R,k),J()}const Be=["cornerstone","keystone","touchstone","lodestone","capstone"],Me={cornerstone:{name:"Cornerstone",role:"the hazard reader",tag:"what NYC's ground remembers"},keystone:{name:"Keystone",role:"the asset register",tag:"what's exposed"},touchstone:{name:"Touchstone",role:"the live observer",tag:"what's happening now"},lodestone:{name:"Lodestone",role:"the projector",tag:"what's coming"},capstone:{name:"Capstone",role:"the synthesizer",tag:"writes it all down with citations"}};var gt=p('<span class="layers-count svelte-1g2dety"> </span>'),ht=p('<li class="layers-row layers-row-empty svelte-1g2dety"><span class="layers-empty-text svelte-1g2dety">no map layers — see Findings cards</span></li>'),mt=p('<li class="layers-row layers-row-empty svelte-1g2dety"><span class="layers-empty-text svelte-1g2dety">not a map layer</span></li>'),ft=p('<span class="layers-state-dim svelte-1g2dety" title="Not yet wired to map source">off · catalog</span>'),_t=p('<li><span class="layers-glyph svelte-1g2dety" aria-hidden="true"><!></span> <span class="layers-text svelte-1g2dety"><span class="layers-label svelte-1g2dety"> </span> <span class="layers-meta svelte-1g2dety"> <!></span></span> <span class="layers-state svelte-1g2dety"><!></span></li>'),yt=p('<details open=""><summary class="svelte-1g2dety"><span class="layers-caret svelte-1g2dety" aria-hidden="true">▾</span> <span class="layers-stone-name svelte-1g2dety"> </span> <span class="layers-stone-tag svelte-1g2dety"> </span> <!></summary> <ul class="layers-list svelte-1g2dety"><!></ul></details>'),pt=p('<button type="button"><!> <span> </span> <span class="layers-master-state svelte-1g2dety"> </span></button>'),xt=p('<aside class="layers-panel svelte-1g2dety" aria-label="Map layers grouped by Stone"><div class="layers-head svelte-1g2dety"><span class="section-label">Layers · grouped by Stone</span></div> <!> <div class="layers-masters svelte-1g2dety" role="group" aria-label="Master tier toggles"><span class="section-label">Tier toggles</span> <div class="layers-master-row svelte-1g2dety"></div></div></aside>');function Fr(R,e){X(e,!0);const S={cornerstone:[{label:"Sandy Inundation Zone (2012)",source:"NYC OEM",tier:"empirical",wired:!0},{label:"FEMA / DEP scenarios",source:"FEMA · NYC DEP",tier:"modeled",wired:!0},{label:"Ida HWM points (2021)",source:"USGS STN",tier:"empirical",wired:!0},{label:"Microtopography (HAND/TWI)",source:"USGS 3DEP",tier:"proxy",wired:!1}],keystone:[{label:"MTA subway entrances",source:"MTA Open Data",tier:"empirical",wired:!0},{label:"NYCHA developments",source:"NYC OD phvi-damg",tier:"empirical",wired:!0},{label:"DOE schools",source:"NYC DOE Locations",tier:"empirical",wired:!0},{label:"DOH hospitals",source:"NYS DOH vn5v-hh5r",tier:"empirical",wired:!0},{label:"TerraMind Buildings (current)",source:"msradam/TerraMind-NYC-Adapters",tier:"synthetic",wired:!1}],touchstone:[{label:"311 flood complaints",source:"NYC 311",tier:"proxy",wired:!1},{label:"FloodNet sensors",source:"FloodNet NYC",tier:"proxy",wired:!0},{label:"TerraMind LULC (current)",source:"msradam/TerraMind-NYC-Adapters",tier:"synthetic",wired:!0},{label:"Prithvi-NYC-Pluvial flood pred.",source:"msradam/Prithvi-EO-2.0-NYC-Pluvial",tier:"modeled",wired:!1}],lodestone:[],capstone:[]};function m(k){return!!e.active[k.tier]}function M(k){return S[k].length}const i=[{k:"empirical",tier:"empirical",label:"EMP"},{k:"modeled",tier:"modeled",label:"MOD"},{k:"proxy",tier:"proxy",label:"PRX"},{k:"synthetic",tier:"synthetic",label:"SYN"}];var g=xt(),d=n(r(g),2);te(d,16,()=>Be,k=>k,(k,y)=>{var o=yt(),s=r(o),l=n(r(s),2),b=r(l,!0);t(l);var N=n(l,2),u=r(N);t(N);var v=n(N,2);{var w=O=>{var W=gt(),T=r(W,!0);t(W),C(P=>f(T,P),[()=>M(y)]),c(O,W)},B=q(()=>M(y)>0);A(v,O=>{a(B)&&O(w)})}t(s);var E=n(s,2),D=r(E);{var H=O=>{var W=ht();c(O,W)},I=O=>{var W=mt();c(O,W)},z=O=>{var W=xe(),T=ee(W);te(T,17,()=>S[y],de,(P,L)=>{var F=_t();let j;var K=r(F),ae=r(K);ge(ae,{get tier(){return a(L).tier},size:11,get color(){return`var(--tier-${a(L).tier??""})`}}),t(K);var Q=n(K,2),Z=r(Q),ne=r(Z,!0);t(Z);var Y=n(Z,2),V=r(Y),G=n(V);et(G,{get tier(){return a(L).tier},compact:!0}),t(Y),t(Q);var U=n(Q,2),$=r(U);{var ve=se=>{var _e=ft();c(se,_e)},fe=se=>{var _e=ye("on");c(se,_e)},be=q(()=>m(a(L))),he=se=>{var _e=ye("off");c(se,_e)};A($,se=>{a(L).wired?a(be)?se(fe,1):se(he,-1):se(ve)})}t(U),t(F),C(()=>{j=ue(F,1,"layers-row svelte-1g2dety",null,j,{dim:!a(L).wired}),f(ne,a(L).label),f(V,`${a(L).source??""} · `)}),c(P,F)}),c(O,W)};A(D,O=>{y==="lodestone"?O(H):y==="capstone"?O(I,1):O(z,-1)})}t(E),t(o),C(()=>{ue(o,1,`layers-group region-${y??""}`,"svelte-1g2dety"),f(b,Me[y].name),f(u,`— ${Me[y].tag??""}`)}),c(k,o)});var x=n(d,2),h=n(r(x),2);te(h,21,()=>i,k=>k.k,(k,y)=>{var o=pt();let s;var l=r(o);ge(l,{get tier(){return a(y).tier},size:11,get color(){return`var(--tier-${a(y).tier??""})`}});var b=n(l,2),N=r(b,!0);t(b);var u=n(b,2),v=r(u,!0);t(u),t(o),C(()=>{s=ue(o,1,"layers-master svelte-1g2dety",null,s,{"is-on":e.active[a(y).k]}),_(o,"aria-pressed",e.active[a(y).k]),f(N,a(y).label),f(v,e.active[a(y).k]?"ON":"OFF")}),Ne("click",o,()=>e.onToggle(a(y).k)),c(k,o)}),t(h),t(x),t(g),c(R,g),J()}Ce(["click"]);var bt=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-silent svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> silent</span>',1),wt=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-warn svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> warned</span>',1),kt=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-err svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> errored</span>',1),St=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-notinvoked svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> not invoked</span>',1),Mt=p('<span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> cache</span>',1),Ct=p('<div class="rh svelte-1vuwkv4"><span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> Stones</span> <span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> fired</span> <!> <!> <!> <!> <span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> </span> <span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> wall-clock</span> <!> <span class="rh-sep svelte-1vuwkv4">·</span> <span class="rh-item rh-total svelte-1vuwkv4"><strong class="svelte-1vuwkv4"> </strong> registered</span></div>');function Nt(R,e){X(e,!0);function S(Y){return Y.flatMap(V=>V.children?[V,...S(V.children)]:[V])}let m=q(()=>e.stones.flatMap(Y=>S(Y.members))),M=q(()=>a(m).length),i=q(()=>a(m).filter(Y=>Y.status==="fired"||Y.status==="warned").length),g=q(()=>a(m).filter(Y=>Y.status==="silent_by_design").length),d=q(()=>a(m).filter(Y=>Y.status==="warned").length),x=q(()=>a(m).filter(Y=>Y.status==="errored").length),h=q(()=>a(m).filter(Y=>Y.status==="not_invoked").length),k=q(()=>e.wallSeconds==null?"—":e.wallSeconds<1?`${Math.round(e.wallSeconds*1e3)}ms`:`${e.wallSeconds.toFixed(1)}s`);var y=Ct(),o=r(y),s=r(o),l=r(s,!0);t(s),re(),t(o);var b=n(o,4),N=r(b),u=r(N,!0);t(N),re(),t(b);var v=n(b,2);{var w=Y=>{var V=bt(),G=n(ee(V),2),U=r(G),$=r(U,!0);t(U),re(),t(G),C(()=>f($,a(g))),c(Y,V)};A(v,Y=>{a(g)>0&&Y(w)})}var B=n(v,2);{var E=Y=>{var V=wt(),G=n(ee(V),2),U=r(G),$=r(U,!0);t(U),re(),t(G),C(()=>f($,a(d))),c(Y,V)};A(B,Y=>{a(d)>0&&Y(E)})}var D=n(B,2);{var H=Y=>{var V=kt(),G=n(ee(V),2),U=r(G),$=r(U,!0);t(U),re(),t(G),C(()=>f($,a(x))),c(Y,V)};A(D,Y=>{a(x)>0&&Y(H)})}var I=n(D,2);{var z=Y=>{var V=St(),G=n(ee(V),2),U=r(G),$=r(U,!0);t(U),re(),t(G),C(()=>f($,a(h))),c(Y,V)};A(I,Y=>{a(h)>0&&Y(z)})}var O=n(I,4),W=r(O),T=r(W,!0);t(W);var P=n(W);t(O);var L=n(O,4),F=r(L),j=r(F,!0);t(F),re(),t(L);var K=n(L,2);{var ae=Y=>{var V=Mt(),G=n(ee(V),2),U=r(G),$=r(U);t(U),re(),t(G),C(ve=>f($,`${ve??""}%`),[()=>Math.round(e.cacheHit*100)]),c(Y,V)};A(K,Y=>{e.cacheHit!=null&&Y(ae)})}var Q=n(K,4),Z=r(Q),ne=r(Z,!0);t(Z),re(),t(Q),t(y),C(()=>{f(l,e.stones.length),f(u,a(i)),f(T,e.cards.length),f(P,` evidence card${e.cards.length===1?"":"s"}`),f(j,a(k)),f(ne,a(M))}),c(R,y),J()}var Bt=p('<div class="subhead svelte-lygj3j"> </div>'),At=p('<p class="body-prose svelte-lygj3j"> </p>'),Lt=p('<div class="body body-headline svelte-lygj3j"><div class="headline svelte-lygj3j"> </div> <!> <!></div>');function Rt(R,e){X(e,!0);var S=Lt(),m=r(S),M=r(m,!0);t(m);var i=n(m,2);{var g=h=>{var k=Bt(),y=r(k,!0);t(k),C(()=>f(y,e.card.subhead)),c(h,k)};A(i,h=>{e.card.subhead&&h(g)})}var d=n(i,2);{var x=h=>{var k=At(),y=r(k,!0);t(k),C(()=>f(y,e.card.body)),c(h,k)};A(d,h=>{e.card.body&&h(x)})}t(S),C(()=>{oe(m,`color: var(--tier-${e.card.tier??""});`),f(M,e.card.headline??"")}),c(R,S),J()}var Ft=p('<th class="svelte-1nlkuao"> </th>'),Et=p('<td class="svelte-1nlkuao"> </td>'),Pt=p('<tr class="svelte-1nlkuao"></tr>'),Tt=p('<div class="body-sub svelte-1nlkuao"> </div>'),qt=p('<div class="body body-tabular svelte-1nlkuao"><table class="t svelte-1nlkuao"><thead><tr></tr></thead><tbody></tbody></table> <!></div>');function It(R,e){X(e,!0);var S=qt(),m=r(S),M=r(m),i=r(M);te(i,21,()=>e.card.columns??[],de,(h,k)=>{var y=Ft(),o=r(y,!0);t(y),C(()=>f(o,a(k))),c(h,y)}),t(i),t(M);var g=n(M);te(g,21,()=>e.card.rows??[],de,(h,k)=>{var y=Pt();te(y,21,()=>a(k),de,(o,s)=>{var l=Et(),b=r(l,!0);t(l),C(()=>f(b,a(s))),c(o,l)}),t(y),c(h,y)}),t(g),t(m);var d=n(m,2);{var x=h=>{var k=Tt(),y=r(k,!0);t(k),C(()=>f(y,e.card.sub)),c(h,k)};A(d,h=>{e.card.sub&&h(x)})}t(S),c(R,S),J()}var Dt=p('<div class="cell svelte-stf9c8"><div class="value svelte-stf9c8"> </div> <div class="label svelte-stf9c8"> </div></div>'),zt=p('<div class="body-sub svelte-stf9c8"> </div>'),Ot=p('<div class="body body-scalars svelte-stf9c8"><div class="row svelte-stf9c8"></div> <!></div>');function Ht(R,e){X(e,!0);var S=Ot(),m=r(S);te(m,21,()=>e.card.scalars??[],de,(g,d)=>{var x=Dt(),h=r(x),k=r(h,!0);t(h);var y=n(h,2),o=r(y,!0);t(y),t(x),C(()=>{oe(h,`color: var(--tier-${e.card.tier??""});`),f(k,a(d).value),f(o,a(d).label)}),c(g,x)}),t(m);var M=n(m,2);{var i=g=>{var d=zt(),x=r(d,!0);t(d),C(()=>f(x,e.card.sub)),c(g,d)};A(M,g=>{e.card.sub&&g(i)})}t(S),c(R,S),J()}var Yt=p('<div class="headline svelte-jrppts"> </div>'),jt=p('<div class="subhead svelte-jrppts"> </div>'),Wt=me("<rect></rect>"),Ut=p('<div class="body-sub svelte-jrppts"> </div>'),Gt=p('<div class="body-sub svelte-jrppts"> </div>'),Kt=p('<div class="body body-spark svelte-jrppts"><!> <!> <svg width="100%" preserveAspectRatio="none" aria-hidden="true" class="svelte-jrppts"></svg> <!> <!></div>');function Qt(R,e){X(e,!0);const S=240,m=38;let M=q(()=>e.card.spark??e.card.histogram??[]),i=q(()=>Math.max(...a(M),1)),g=q(()=>a(M).length),d=q(()=>Math.max(2,S/Math.max(a(g),1)-1.5));var x=Kt(),h=r(x);{var k=v=>{var w=Yt(),B=r(w,!0);t(w),C(()=>{oe(w,`color: var(--tier-${e.card.tier??""});`),f(B,e.card.headline)}),c(v,w)};A(h,v=>{e.card.headline&&v(k)})}var y=n(h,2);{var o=v=>{var w=jt(),B=r(w,!0);t(w),C(()=>f(B,e.card.subhead)),c(v,w)};A(y,v=>{e.card.subhead&&v(o)})}var s=n(y,2);_(s,"viewBox","0 0 240 38"),_(s,"height",m),te(s,21,()=>a(M),de,(v,w,B)=>{var E=Wt();C(()=>{_(E,"x",B/a(g)*S+.5),_(E,"y",m-a(w)/a(i)*m),_(E,"width",a(d)),_(E,"height",a(w)/a(i)*m),_(E,"fill",`var(--tier-${e.card.tier??""})`)}),c(v,E)}),t(s);var l=n(s,2);{var b=v=>{var w=Ut(),B=r(w,!0);t(w),C(()=>f(B,e.card.sparkSub)),c(v,w)};A(l,v=>{e.card.sparkSub&&v(b)})}var N=n(l,2);{var u=v=>{var w=Gt(),B=r(w,!0);t(w),C(()=>f(B,e.card.sub)),c(v,w)};A(N,v=>{!e.card.sparkSub&&e.card.sub&&v(u)})}t(x),c(R,x),J()}var Vt=p('<span class="headline svelte-48vbub"> </span>'),Zt=p('<span class="subhead svelte-48vbub"> </span>'),Xt=p('<span class="spatial-note svelte-48vbub"> </span>'),Jt=p("<span> </span>"),$t=p('<div class="body-sub svelte-48vbub"><!> <!></div>'),ea=p('<div class="body body-timeseries svelte-48vbub"><div class="ts-header svelte-48vbub"><!> <!></div> <svg width="100%" aria-hidden="true" class="svelte-48vbub"><line stroke="#C9C9C5" stroke-width="0.5" stroke-dasharray="2 2"></line><path fill="none" stroke-width="1.4"></path><circle r="3"></circle><text font-size="9" font-family="IBM Plex Mono" text-anchor="middle"> </text><text font-size="8" font-family="IBM Plex Mono" fill="#6B6B6B">now</text><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#6B6B6B"> </text></svg> <!></div>');function Ee(R,e){X(e,!0);const S=240,m=84,M=6,i=q(()=>e.card.timeseries??{hours:96,peak:{x:38,y:47},peakLabel:""}),g=q(()=>h(a(i))),d=q(()=>k(a(g),a(i))),x=q(()=>y(a(g),a(d)));function h(P){const L=[];for(let F=0;F<=P.hours;F++){const j=6*Math.sin(F/12.42*Math.PI*2),K=38*Math.exp(-Math.pow((F-P.peak.x)/12,2));L.push({x:F,y:j+K+4})}return L}function k(P,L){const F=Math.max(...P.map(K=>K.y),L.peak.y),j=Math.min(...P.map(K=>K.y),-10);return{sx:K=>M+K/L.hours*(S-M*2),sy:K=>m-M-14-(K-j)/(F-j)*(m-M*2-14)}}function y(P,L){return P.map((F,j)=>`${j?"L":"M"} ${L.sx(F.x)} ${L.sy(F.y)}`).join(" ")}var o=ea(),s=r(o),l=r(s);{var b=P=>{var L=Vt(),F=r(L,!0);t(L),C(()=>{oe(L,`color: var(--tier-${e.card.tier??""});`),f(F,e.card.headline)}),c(P,L)};A(l,P=>{e.card.headline&&P(b)})}var N=n(l,2);{var u=P=>{var L=Zt(),F=r(L,!0);t(L),C(()=>f(F,e.card.subhead)),c(P,L)};A(N,P=>{e.card.subhead&&P(u)})}t(s);var v=n(s,2);_(v,"viewBox","0 0 240 84"),_(v,"height",m);var w=r(v);_(w,"x1",M),_(w,"x2",S-M);var B=n(w),E=n(B),D=n(E),H=r(D,!0);t(D);var I=n(D);_(I,"x",M),_(I,"y",m-2);var z=n(I);_(z,"x",S-M),_(z,"y",m-2);var O=r(z);t(z),t(v);var W=n(v,2);{var T=P=>{var L=$t(),F=r(L);{var j=Q=>{var Z=Xt(),ne=r(Z,!0);t(Z),C(()=>f(ne,e.card.spatialNote)),c(Q,Z)};A(F,Q=>{e.card.spatialNote&&Q(j)})}var K=n(F,2);{var ae=Q=>{var Z=Jt(),ne=r(Z,!0);t(Z),C(()=>f(ne,e.card.sub)),c(Q,Z)};A(K,Q=>{e.card.sub&&Q(ae)})}t(L),c(P,L)};A(W,P=>{(e.card.spatialNote||e.card.sub)&&P(T)})}t(o),C((P,L,F,j,K,ae)=>{_(w,"y1",P),_(w,"y2",L),_(B,"d",a(x)),_(B,"stroke",`var(--tier-${e.card.tier??""})`),_(E,"cx",F),_(E,"cy",j),_(E,"fill",`var(--tier-${e.card.tier??""})`),_(D,"x",K),_(D,"y",ae),_(D,"fill",`var(--tier-${e.card.tier??""})`),f(H,a(i).peakLabel),f(O,`+${a(i).hours??""}h`)},[()=>a(d).sy(0),()=>a(d).sy(0),()=>a(d).sx(a(i).peak.x),()=>a(d).sy(a(i).peak.y),()=>a(d).sx(a(i).peak.x),()=>a(d).sy(a(i).peak.y)-6]),c(R,o),J()}var ta=p('<span class="ft-stat svelte-1y25lfh"><span class="ft-stat-k svelte-1y25lfh">RMSE</span> </span>'),aa=p('<span class="ft-stat ft-skill svelte-1y25lfh"> </span>'),ra=p('<span class="ft-badge svelte-1y25lfh" title="Trained on this hardware"> </span>'),sa=p('<a class="ft-link svelte-1y25lfh" target="_blank" rel="noopener noreferrer">Model card ↗</a>'),ia=p('<!> <div class="ft-footer svelte-1y25lfh"><!> <!> <!> <!></div>',1);function na(R,e){X(e,!0);var S=ia(),m=ee(S);Ee(m,{get card(){return e.card}});var M=n(m,2),i=r(M);{var g=s=>{var l=ta(),b=n(r(l));t(l),C(()=>f(b,` ${e.card.rmse??""}`)),c(s,l)};A(i,s=>{e.card.rmse&&s(g)})}var d=n(i,2);{var x=s=>{var l=aa(),b=r(l,!0);t(l),C(()=>f(b,e.card.skillVsPersistence)),c(s,l)};A(d,s=>{e.card.skillVsPersistence&&s(x)})}var h=n(d,2);{var k=s=>{var l=ra(),b=r(l,!0);t(l),C(()=>f(b,e.card.hardwareBadge)),c(s,l)};A(h,s=>{e.card.hardwareBadge&&s(k)})}var y=n(h,2);{var o=s=>{var l=sa();C(b=>_(l,"href",b),[()=>e.card.hfModelCard.startsWith("http")?e.card.hfModelCard:`https://${e.card.hfModelCard}`]),c(s,l)};A(y,s=>{e.card.hfModelCard&&s(o)})}t(M),c(R,S),J()}var la=me('<circle r="2.2"></circle><text font-size="9" font-family="IBM Plex Mono" text-anchor="middle" fill="#6B6B6B"> </text>',1),oa=p('<div class="body-sub svelte-gqkhpe"> </div>'),da=p('<div class="body body-forecast svelte-gqkhpe"><svg width="100%" aria-hidden="true" class="svelte-gqkhpe"><path fill-opacity="0.18"></path><path fill="none" stroke-width="1.5"></path><!></svg> <!></div>');function va(R,e){X(e,!0);const S=240,m=88,M=6;let i=q(()=>e.card.forecast??[]),g=q(()=>a(i).map((v,w)=>M+w/Math.max(a(i).length-1,1)*(S-M*2))),d=q(()=>Math.max(...a(i).map(v=>v.high),1));function x(v){return m-M-v/a(d)*(m-M*2-12)}let h=q(()=>a(g).map((v,w)=>`${w?"L":"M"} ${v} ${x(a(i)[w].mid)}`).join(" ")),k=q(()=>{if(!a(i).length)return"";const v=a(g).map((B,E)=>`${B} ${x(a(i)[E].low)}`).join(" L "),w=[...a(g)].reverse().map((B,E)=>`${B} ${x(a(i)[a(i).length-1-E].high)}`).join(" L ");return`M ${v} L ${w} Z`});var y=da(),o=r(y);_(o,"viewBox","0 0 240 88"),_(o,"height",m);var s=r(o),l=n(s),b=n(l);te(b,17,()=>a(i),de,(v,w,B)=>{var E=la(),D=ee(E),H=n(D);_(H,"y",m-1);var I=r(H,!0);t(H),C(z=>{_(D,"cx",a(g)[B]),_(D,"cy",z),_(D,"fill",`var(--tier-${e.card.tier??""})`),_(H,"x",a(g)[B]),f(I,a(w).year)},[()=>x(a(w).mid)]),c(v,E)}),t(o);var N=n(o,2);{var u=v=>{var w=oa(),B=r(w,!0);t(w),C(()=>f(B,e.card.sub)),c(v,w)};A(N,v=>{e.card.sub&&v(u)})}t(y),C(()=>{_(s,"d",a(k)),_(s,"fill",`var(--tier-${e.card.tier??""})`),_(l,"d",a(h)),_(l,"stroke",`var(--tier-${e.card.tier??""})`)}),c(R,y),J()}var ca=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><rect fill="#E8ECF2"></rect><g stroke="#D9D6CC" stroke-width="0.6"><line x1="0" y1="40" y2="40"></line><line x1="0" y1="80" y2="80"></line><line x1="60" y1="0" x2="60"></line><line x1="160" y1="0" x2="160"></line></g><path d="M20 50 Q 60 38 90 56 Q 120 76 150 64 Q 180 50 180 86 Q 130 100 70 96 Q 30 92 20 76 Z" fill="rgba(42,111,168,0.32)" stroke="#2A6FA8" stroke-width="0.7"></path><path d="M40 60 Q 80 54 110 70 Q 140 84 160 78 Q 165 90 130 92 Q 80 90 50 82 Z" fill="rgba(11,83,148,0.36)" stroke="#0B5394" stroke-width="0.6"></path><circle cx="120" cy="74" r="3.2" fill="#005EA2" stroke="#F4F6F9" stroke-width="1.3"></circle><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#6B6B6B">2.13 in/hr · MOD</text></svg>'),ua=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><rect fill="#E8ECF2"></rect><g stroke="#D9D6CC" stroke-width="0.6"><line x1="0" y1="40" y2="40"></line><line x1="0" y1="80" y2="80"></line><line x1="60" y1="0" x2="60"></line><line x1="160" y1="0" x2="160"></line></g><path d="M180 92 Q 200 88 215 96 Q 220 105 200 104 Q 185 102 180 96 Z" fill="rgba(42,111,168,0.18)" stroke="#2A6FA8" stroke-width="0.5" stroke-dasharray="2 2"></path><circle cx="120" cy="60" r="3.2" fill="#005EA2" stroke="#F4F6F9" stroke-width="1.3"></circle><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#6B6B6B">no ponding · MOD</text></svg>'),ga=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><defs><pattern id="rt-s2-rgb" x="0" y="0" width="6" height="6" patternUnits="userSpaceOnUse"><rect width="6" height="6" fill="#7A8E6A"></rect><rect x="0" y="0" width="3" height="3" fill="#8D9C7A"></rect><rect x="3" y="3" width="3" height="3" fill="#69795D"></rect></pattern></defs><rect fill="url(#rt-s2-rgb)"></rect><rect x="0" y="55" height="6" fill="#A8A496"></rect><rect x="115" y="0" width="8" fill="#A8A496"></rect><ellipse cx="50" cy="92" rx="6" ry="3" fill="#2A6FA8" fill-opacity="0.65"></ellipse><text x="6" y="14" font-size="9" font-family="IBM Plex Mono" fill="#F4F6F9">PRITHVI · 0.3%</text><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#F4F6F9">scene 2026-05-02</text></svg>'),ha=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><rect fill="#E8ECF2"></rect><rect x="0" y="0" width="80" height="60" fill="#C66"></rect><rect x="80" y="0" width="60" height="60" fill="#C66"></rect><rect x="140" y="0" width="100" height="38" fill="#C66"></rect><rect x="140" y="38" width="100" height="22" fill="#5B7FB4"></rect><rect x="0" y="60" width="100" height="60" fill="#C66"></rect><rect x="100" y="60" width="50" height="40" fill="#5B8A4A"></rect><rect x="150" y="60" width="50" height="60" fill="#D9C75A"></rect><rect x="200" y="60" width="40" height="60" fill="#C66"></rect><rect x="100" y="100" width="50" height="20" fill="#A89A78"></rect><text x="6" y="14" font-size="9" font-family="IBM Plex Mono" fill="#F4F6F9">LULC · TerraMind</text><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#F4F6F9">scene 2026-05-02</text></svg>'),ma=me('<rect fill="rgba(42,111,168,0.55)" stroke="#2A6FA8" stroke-width="0.4"></rect>'),fa=me('<svg width="100%" aria-hidden="true" class="svelte-1lx1psy"><rect fill="#3A3A38"></rect><!><text x="6" y="14" font-size="9" font-family="IBM Plex Mono" fill="#F4F6F9">BLDG · TerraMind</text><text font-size="8" font-family="IBM Plex Mono" text-anchor="end" fill="#F4F6F9">36.2% built</text></svg>'),_a=p('<div class="thumb-placeholder svelte-1lx1psy">raster preview</div>');function Pe(R,e){var M=xe(),i=ee(M);{var g=o=>{var s=ca();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=r(s);_(l,"width",240),_(l,"height",120);var b=n(l),N=r(b);_(N,"x2",240);var u=n(N);_(u,"x2",240);var v=n(u);_(v,"y2",120);var w=n(v);_(w,"y2",120),t(b);var B=n(b,4);_(B,"x",234),_(B,"y",115),t(s),c(o,s)},d=o=>{var s=ua();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=r(s);_(l,"width",240),_(l,"height",120);var b=n(l),N=r(b);_(N,"x2",240);var u=n(N);_(u,"x2",240);var v=n(u);_(v,"y2",120);var w=n(v);_(w,"y2",120),t(b);var B=n(b,3);_(B,"x",234),_(B,"y",115),t(s),c(o,s)},x=o=>{var s=ga();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=n(r(s));_(l,"width",240),_(l,"height",120);var b=n(l);_(b,"width",240);var N=n(b);_(N,"height",120);var u=n(N,3);_(u,"x",234),_(u,"y",115),t(s),c(o,s)},h=o=>{var s=ha();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=r(s);_(l,"width",240),_(l,"height",120);var b=n(l,11);_(b,"x",234),_(b,"y",115),t(s),c(o,s)},k=o=>{var s=fa();_(s,"viewBox","0 0 240 120"),_(s,"height",120);var l=r(s);_(l,"width",240),_(l,"height",120);var b=n(l);te(b,16,()=>[[10,10,28,18],[42,10,30,16],[78,10,40,22],[124,10,32,18],[162,10,30,18],[198,10,32,18],[10,32,28,16],[42,30,30,18],[124,32,32,16],[162,32,30,16],[198,32,32,16],[10,55,28,18],[42,55,30,18],[78,55,40,18],[124,55,32,18],[162,55,30,18],[198,55,32,18],[10,80,28,16],[42,80,30,16],[78,80,40,16],[124,80,32,16],[162,80,30,16],[10,100,28,12],[42,100,30,12],[78,100,40,12]],de,(u,v)=>{var w=ma();C(()=>{_(w,"x",v[0]),_(w,"y",v[1]),_(w,"width",v[2]),_(w,"height",v[3])}),c(u,w)});var N=n(b,2);_(N,"x",234),_(N,"y",115),t(s),c(o,s)},y=o=>{var s=_a();c(o,s)};A(i,o=>{e.kind==="stormwater"?o(g):e.kind==="stormwater-dry"?o(d,1):e.kind==="prithvi"?o(x,2):e.kind==="lulc"?o(h,3):e.kind==="buildings"?o(k,4):o(y,-1)})}c(R,M)}var ya=p('<span class="illustrative svelte-1m43x1m" title="Illustrative rendering, not source pixels">illustrative</span>'),pa=p('<span class="svelte-1m43x1m"> </span>'),xa=p('<div class="raster-headline svelte-1m43x1m"><span class="svelte-1m43x1m"> </span> <!></div>'),ba=p('<div class="body-sub svelte-1m43x1m"> </div>'),wa=p('<div class="body body-raster svelte-1m43x1m"><div class="frame svelte-1m43x1m"><!> <!></div> <!> <!></div>');function ka(R,e){X(e,!0);var S=wa(),m=r(S),M=r(m);Pe(M,{get kind(){return e.card.rasterKind}});var i=n(M,2);{var g=y=>{var o=ya();c(y,o)};A(i,y=>{(e.card.illustrative||e.card.tier==="synthetic")&&y(g)})}t(m);var d=n(m,2);{var x=y=>{var o=xa(),s=r(o),l=r(s,!0);t(s);var b=n(s,2);{var N=u=>{var v=pa(),w=r(v);t(v),C(()=>f(w,`· ${e.card.subhead??""}`)),c(u,v)};A(b,u=>{e.card.subhead&&u(N)})}t(o),C(()=>{oe(s,`color: var(--tier-${e.card.tier??""});`),f(l,e.card.headline)}),c(y,o)};A(d,y=>{e.card.headline&&y(x)})}var h=n(d,2);{var k=y=>{var o=ba(),s=r(o,!0);t(o),C(()=>f(s,e.card.sub)),c(y,o)};A(h,y=>{e.card.sub&&y(k)})}t(S),c(R,S),J()}var Sa=p('<span class="illustrative svelte-1td276x" title="Illustrative rendering, not source pixels">illustrative</span>'),Ma=p('<span class="bar-seg svelte-1td276x"></span>'),Ca=p('<li class="svelte-1td276x"><span class="swatch svelte-1td276x"></span> <span class="legend-k svelte-1td276x"> </span> <span class="legend-pct svelte-1td276x"> </span></li>'),Na=p('<div class="bar svelte-1td276x" role="img" aria-label="LULC class mix"></div> <ul class="legend svelte-1td276x"></ul>',1),Ba=p('<div class="body-sub svelte-1td276x"> </div>'),Aa=p('<div class="body body-lulc svelte-1td276x"><div class="frame svelte-1td276x"><!> <!></div> <!> <!></div>');function La(R,e){X(e,!0);let S=q(()=>(e.card.classMix??[]).reduce((o,s)=>o+(s.pct||0),0)||1);var m=Aa(),M=r(m),i=r(M);{let o=q(()=>e.card.rasterKind??"lulc");Pe(i,{get kind(){return a(o)}})}var g=n(i,2);{var d=o=>{var s=Sa();c(o,s)};A(g,o=>{(e.card.illustrative||e.card.tier==="synthetic")&&o(d)})}t(M);var x=n(M,2);{var h=o=>{var s=Na(),l=ee(s);te(l,21,()=>e.card.classMix,N=>N.k,(N,u)=>{var v=Ma();let w;C(()=>{_(v,"title",`${a(u).k??""}: ${a(u).pct??""}%`),w=oe(v,"",w,{"flex-grow":a(u).pct/a(S),background:a(u).color})}),c(N,v)}),t(l);var b=n(l,2);te(b,21,()=>e.card.classMix,N=>N.k,(N,u)=>{var v=Ca(),w=r(v);let B;var E=n(w,2),D=r(E,!0);t(E);var H=n(E,2),I=r(H);t(H),t(v),C(()=>{B=oe(w,"",B,{background:a(u).color}),f(D,a(u).k),f(I,`${a(u).pct??""}%`)}),c(N,v)}),t(b),c(o,s)};A(x,o=>{var s;(s=e.card.classMix)!=null&&s.length&&o(h)})}var k=n(x,2);{var y=o=>{var s=Ba(),l=r(s,!0);t(s),C(()=>f(l,e.card.sub)),c(o,s)};A(k,o=>{e.card.sub&&o(y)})}t(m),c(R,m),J()}var Ra=p('<span class="reg-label svelte-1iup6im"> </span> <span class="reg-source svelte-1iup6im"> </span>',1),Fa=p('<span class="reg-silent svelte-1iup6im"> </span>'),Ea=p('<li><span class="reg-tag svelte-1iup6im"><!> <span> </span></span> <!></li>'),Pa=p('<div class="body-sub svelte-1iup6im"> </div>'),Ta=p('<div class="body body-register svelte-1iup6im"><ul class="reg-list svelte-1iup6im"></ul> <!></div>');function qa(R,e){X(e,!0);var S=Ta(),m=r(S);te(m,21,()=>e.card.registers??[],de,(g,d)=>{var x=Ea();let h;var k=r(x),y=r(k);ge(y,{get tier(){return a(d).tier},size:9,get color(){return`var(--tier-${a(d).tier??""})`}});var o=n(y,2),s=r(o,!0);t(o),t(k);var l=n(k,2);{var b=u=>{var v=Ra(),w=ee(v),B=r(w,!0);t(w);var E=n(w,2),D=r(E,!0);t(E),C(()=>{_(w,"title",a(d).detail?`${a(d).label} — ${a(d).detail}`:a(d).label),f(B,a(d).label),f(D,a(d).sourceId??"")}),c(u,v)},N=u=>{var v=Fa(),w=r(v,!0);t(v),C(()=>f(w,a(d).note)),c(u,v)};A(l,u=>{a(d).label?u(b):u(N,-1)})}t(x),C(()=>{h=ue(x,1,"reg-row svelte-1iup6im",null,h,{silent:!a(d).label}),_(k,"title",a(d).tier),f(s,a(d).reg)}),c(g,x)}),t(m);var M=n(m,2);{var i=g=>{var d=Pa(),x=r(d,!0);t(d),C(()=>f(x,e.card.sub)),c(g,d)};A(M,g=>{e.card.sub&&g(i)})}t(S),c(R,S),J()}var Ia=p('<div class="cell-aux svelte-1swqabu"> </div>'),Da=p('<div class="cell svelte-1swqabu"><div class="cell-tier svelte-1swqabu"><!> <span class="cell-label"> </span></div> <div class="cell-value svelte-1swqabu"> </div> <!></div>'),za=p('<div class="cell-aux svelte-1swqabu"> </div>'),Oa=p('<div class="cell svelte-1swqabu"><div class="cell-tier svelte-1swqabu"><!> <span class="cell-label"> </span></div> <div class="cell-value svelte-1swqabu"> </div> <!></div>'),Ha=p('<div class="cmp-delta svelte-1swqabu"> </div>'),Ya=p('<div class="body-sub svelte-1swqabu"> </div>'),ja=p('<div class="body body-comparison svelte-1swqabu"><div class="cmp-grid svelte-1swqabu"><!> <div class="divider svelte-1swqabu" aria-hidden="true">vs</div> <!></div> <!> <!></div>');function Wa(R,e){X(e,!0);var S=ja(),m=r(S),M=r(m);{var i=o=>{var s=Da(),l=r(s),b=r(l);ge(b,{get tier(){return e.card.left.tier},size:10,get color(){return`var(--tier-${e.card.left.tier??""})`}});var N=n(b,2),u=r(N,!0);t(N),t(l);var v=n(l,2),w=r(v,!0);t(v);var B=n(v,2);{var E=D=>{var H=Ia(),I=r(H,!0);t(H),C(()=>f(I,e.card.left.aux)),c(D,H)};A(B,D=>{e.card.left.aux&&D(E)})}t(s),C(()=>{f(u,e.card.left.label),oe(v,`color: var(--tier-${e.card.left.tier??""});`),f(w,e.card.left.value)}),c(o,s)};A(M,o=>{e.card.left&&o(i)})}var g=n(M,4);{var d=o=>{var s=Oa(),l=r(s),b=r(l);ge(b,{get tier(){return e.card.right.tier},size:10,get color(){return`var(--tier-${e.card.right.tier??""})`}});var N=n(b,2),u=r(N,!0);t(N),t(l);var v=n(l,2),w=r(v,!0);t(v);var B=n(v,2);{var E=D=>{var H=za(),I=r(H,!0);t(H),C(()=>f(I,e.card.right.aux)),c(D,H)};A(B,D=>{e.card.right.aux&&D(E)})}t(s),C(()=>{f(u,e.card.right.label),oe(v,`color: var(--tier-${e.card.right.tier??""});`),f(w,e.card.right.value)}),c(o,s)};A(g,o=>{e.card.right&&o(d)})}t(m);var x=n(m,2);{var h=o=>{var s=Ha(),l=r(s,!0);t(s),C(()=>f(l,e.card.delta)),c(o,s)};A(x,o=>{e.card.delta&&o(h)})}var k=n(x,2);{var y=o=>{var s=Ya(),l=r(s,!0);t(s),C(()=>f(l,e.card.sub)),c(o,s)};A(k,o=>{e.card.sub&&o(y)})}t(S),c(R,S),J()}var Ua=p('<div class="meta-row svelte-e40scu"><dt class="svelte-e40scu"> </dt> <dd class="svelte-e40scu"> </dd></div>'),Ga=p('<div class="body-sub svelte-e40scu"> </div>'),Ka=p('<div class="body body-meta svelte-e40scu"><dl class="meta-list svelte-e40scu"></dl> <!></div>');function Qa(R,e){X(e,!0);var S=Ka(),m=r(S);te(m,21,()=>e.card.metaRows??[],de,(g,d)=>{var x=Ua(),h=r(x),k=r(h,!0);t(h);var y=n(h,2),o=r(y,!0);t(y),t(x),C(()=>{f(k,a(d).k),f(o,a(d).v)}),c(g,x)}),t(m);var M=n(m,2);{var i=g=>{var d=Ga(),x=r(d,!0);t(d),C(()=>f(x,e.card.sub)),c(g,d)};A(M,g=>{e.card.sub&&g(i)})}t(S),c(R,S),J()}var Va=p('<div class="unknown svelte-1x6xqhh"> </div>');function Za(R,e){X(e,!0);var S=xe(),m=ee(S);{var M=u=>{Rt(u,{get card(){return e.card}})},i=u=>{It(u,{get card(){return e.card}})},g=u=>{Ht(u,{get card(){return e.card}})},d=u=>{Qt(u,{get card(){return e.card}})},x=u=>{Ee(u,{get card(){return e.card}})},h=u=>{na(u,{get card(){return e.card}})},k=u=>{va(u,{get card(){return e.card}})},y=u=>{ka(u,{get card(){return e.card}})},o=u=>{La(u,{get card(){return e.card}})},s=u=>{qa(u,{get card(){return e.card}})},l=u=>{Wa(u,{get card(){return e.card}})},b=u=>{Qa(u,{get card(){return e.card}})},N=u=>{var v=Va(),w=r(v);t(v),C(()=>f(w,`unknown variant: ${e.card.variant??""}`)),c(u,v)};A(m,u=>{e.card.variant==="headline"?u(M):e.card.variant==="tabular"?u(i,1):e.card.variant==="scalars"?u(g,2):e.card.variant==="spark"||e.card.variant==="histogram"?u(d,3):e.card.variant==="timeseries"?u(x,4):e.card.variant==="timeseries-ft"?u(h,5):e.card.variant==="forecast"?u(k,6):e.card.variant==="raster"||e.card.variant==="raster-pred"?u(y,7):e.card.variant==="lulc"?u(o,8):e.card.variant==="register"?u(s,9):e.card.variant==="comparison"?u(l,10):e.card.variant==="meta"?u(b,11):u(N,-1)})}c(R,S),J()}var Xa=p('<button type="button" class="fc-foot-cite svelte-1nuvnzu"><span class="fc-foot-docid svelte-1nuvnzu"> </span> <span class="fc-foot-arrow svelte-1nuvnzu" aria-hidden="true">→</span></button>'),Ja=p('<span class="fc-foot-docid fc-foot-docid-mute svelte-1nuvnzu"> </span>'),$a=p('<header class="fc-head svelte-1nuvnzu"><div class="fc-head-source svelte-1nuvnzu"><!> <span class="fc-head-source-label svelte-1nuvnzu"> </span></div> <span class="fc-head-vintage svelte-1nuvnzu"> </span></header> <h4 class="fc-title svelte-1nuvnzu"> </h4> <!> <footer class="fc-foot svelte-1nuvnzu"><!> <span><!> <span> </span></span></footer>',1);function Te(R,e){X(e,!0);let S=ie(e,"density",3,"comfortable"),m=ie(e,"linkedKey",3,null),M=q(()=>m()!=null&&e.card.mapLayer!=null&&e.card.mapLayer===m()),i=q(()=>Re[e.card.tier].short),g=q(()=>e.card.mapLayer!=null);function d(){var s;e.card.mapLayer&&((s=e.onLink)==null||s.call(e,e.card.mapLayer))}function x(){var s;e.card.mapLayer&&((s=e.onLink)==null||s.call(e,null))}function h(s){var l;s.stopPropagation(),e.card.citeId&&((l=e.onCite)==null||l.call(e,e.card.citeId))}function k(s){var l;a(g)&&(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),(l=e.onLink)==null||l.call(e,e.card.mapLayer??null))}var y=xe(),o=ee(y);st(o,()=>a(g)?"button":"article",!1,(s,l)=>{Xe(s,()=>({type:a(g)?"button":void 0,role:a(g)?"button":"article",class:`fc fc-${e.card.variant??""} fc-tier-${e.card.tier??""}`,"aria-labelledby":`fc-${e.card.id}-title`,"aria-label":`${Re[e.card.tier].label} card · ${e.card.title} · ${e.card.source}`,onpointerenter:d,onpointerleave:x,onfocus:d,onblur:x,onkeydown:k,[Je]:{"is-compact":S()==="compact","is-linked":a(M),"is-interactive":a(g),"has-illustrative":e.card.illustrative||e.card.tier==="synthetic"||e.card.variant==="comparison"}}),void 0,void 0,void 0,"svelte-1nuvnzu");var b=$a(),N=ee(b),u=r(N),v=r(u);ge(v,{get tier(){return e.card.tier},size:11,get color(){return`var(--tier-${e.card.tier??""})`}});var w=n(v,2),B=r(w,!0);t(w),t(u);var E=n(u,2),D=r(E);t(E),t(N);var H=n(N,2),I=r(H,!0);t(H);var z=n(H,2);Za(z,{get card(){return e.card}});var O=n(z,2),W=r(O);{var T=ae=>{var Q=Xa(),Z=r(Q),ne=r(Z,!0);t(Z),re(2),t(Q),C(()=>{_(Q,"title",`Open ${e.card.docId} in citation drawer`),f(ne,e.card.docId)}),Ne("click",Q,h),c(ae,Q)},P=ae=>{var Q=Ja(),Z=r(Q,!0);t(Q),C(()=>f(Z,e.card.docId)),c(ae,Q)};A(W,ae=>{e.card.citeId?ae(T):ae(P,-1)})}var L=n(W,2),F=r(L);ge(F,{get tier(){return e.card.tier},size:9,get color(){return`var(--tier-${e.card.tier??""})`}});var j=n(F,2),K=r(j,!0);t(j),t(L),t(O),C(()=>{_(w,"title",e.card.agency),f(B,e.card.source),f(D,`v. ${e.card.vintage??""}`),_(H,"id",`fc-${e.card.id}-title`),f(I,e.card.title),ue(L,1,`fc-tier-badge fc-tier-badge-${e.card.tier??""}`,"svelte-1nuvnzu"),_(L,"aria-label",`epistemic tier ${a(i)}`),f(K,a(i))}),c(l,b)}),c(R,y),J()}Ce(["click"]);var er=p('<span class="sep svelte-1qqbvs2">·</span> <span class="silent svelte-1qqbvs2"><strong class="svelte-1qqbvs2"> </strong> silent</span>',1),tr=p('<span class="sep svelte-1qqbvs2">·</span> <span class="warn svelte-1qqbvs2"><strong class="svelte-1qqbvs2"> </strong> warn</span>',1),ar=p('<span class="sep svelte-1qqbvs2">·</span> <span class="err svelte-1qqbvs2"><strong class="svelte-1qqbvs2"> </strong> errored</span>',1),rr=p('<span class="sep svelte-1qqbvs2">·</span> <span class="notinvoked svelte-1qqbvs2"><strong class="svelte-1qqbvs2"> </strong> not invoked</span>',1),sr=p('<span class="tally svelte-1qqbvs2"><span class="cards"> </span> <span class="sep svelte-1qqbvs2">·</span> <span class="fired"><strong class="svelte-1qqbvs2"> </strong> fired</span> <!> <!> <!> <!> <span class="sep svelte-1qqbvs2">·</span> <span class="ms"><strong class="svelte-1qqbvs2"> </strong></span></span>');function ir(R,e){X(e,!0);function S(T){return T.flatMap(P=>P.children?[P,...S(P.children)]:[P])}let m=q(()=>S(e.members)),M=q(()=>a(m).filter(T=>T.status==="fired"||T.status==="warned").length),i=q(()=>a(m).filter(T=>T.status==="silent_by_design").length),g=q(()=>a(m).filter(T=>T.status==="warned").length),d=q(()=>a(m).filter(T=>T.status==="errored").length),x=q(()=>a(m).filter(T=>T.status==="not_invoked").length),h=q(()=>e.members.reduce((T,P)=>Math.max(T,P.ms??0),0));function k(T){return T===0?"—":T<1e3?`${T}ms`:`${(T/1e3).toFixed(1)}s`}var y=sr(),o=r(y),s=r(o);t(o);var l=n(o,4),b=r(l),N=r(b,!0);t(b),re(),t(l);var u=n(l,2);{var v=T=>{var P=er(),L=n(ee(P),2),F=r(L),j=r(F,!0);t(F),re(),t(L),C(()=>f(j,a(i))),c(T,P)};A(u,T=>{a(i)>0&&T(v)})}var w=n(u,2);{var B=T=>{var P=tr(),L=n(ee(P),2),F=r(L),j=r(F,!0);t(F),re(),t(L),C(()=>f(j,a(g))),c(T,P)};A(w,T=>{a(g)>0&&T(B)})}var E=n(w,2);{var D=T=>{var P=ar(),L=n(ee(P),2),F=r(L),j=r(F,!0);t(F),re(),t(L),C(()=>f(j,a(d))),c(T,P)};A(E,T=>{a(d)>0&&T(D)})}var H=n(E,2);{var I=T=>{var P=rr(),L=n(ee(P),2),F=r(L),j=r(F,!0);t(F),re(),t(L),C(()=>f(j,a(x))),c(T,P)};A(H,T=>{a(x)>0&&T(I)})}var z=n(H,4),O=r(z),W=r(O,!0);t(O),t(z),t(y),C(T=>{f(s,`${e.cardCount??""} card${e.cardCount===1?"":"s"}`),f(N,a(M)),f(W,T)},[()=>k(a(h))]),c(R,y),J()}var nr=p('<span class="prov-tier svelte-qakefz"><!></span>'),lr=p('<span class="prov-note svelte-qakefz"> </span>'),or=p('<span class="prov-ms svelte-qakefz"> </span>'),dr=p('<li class="prov-children svelte-qakefz"><!></li>'),vr=p('<li><span class="prov-pip svelte-qakefz" aria-hidden="true"> </span> <span class="prov-id svelte-qakefz"> </span> <!> <span class="prov-name svelte-qakefz"> </span> <!> <!></li> <!>',1),cr=p('<ul class="prov-tree svelte-qakefz"></ul>');function qe(R,e){X(e,!0);let S=ie(e,"depth",3,0);function m(g){return{fired:"●",silent_by_design:"○",warned:"▲",errored:"■",not_invoked:"□"}[g]}function M(g){return g.status==="warned"?"#B7791F":g.status==="errored"?"#B91C1C":g.status==="silent_by_design"||g.status==="not_invoked"?"var(--ink-tertiary)":g.tier?`var(--tier-${g.tier})`:"var(--ink)"}var i=cr();te(i,21,()=>e.members,g=>g.id,(g,d)=>{var x=vr(),h=ee(x),k=r(h),y=r(k,!0);t(k);var o=n(k,2),s=r(o,!0);t(o);var l=n(o,2);{var b=I=>{var z=nr(),O=r(z);{let W=q(()=>`var(--tier-${a(d).tier})`);ge(O,{get tier(){return a(d).tier},size:9,get color(){return a(W)}})}t(z),c(I,z)};A(l,I=>{a(d).tier&&I(b)})}var N=n(l,2),u=r(N,!0);t(N);var v=n(N,2);{var w=I=>{var z=lr(),O=r(z);t(z),C(()=>f(O,`— ${a(d).note??""}`)),c(I,z)};A(v,I=>{a(d).note&&I(w)})}var B=n(v,2);{var E=I=>{var z=or(),O=r(z,!0);t(z),C(W=>f(O,W),[()=>a(d).ms<1e3?`${a(d).ms}ms`:`${(a(d).ms/1e3).toFixed(1)}s`]),c(I,z)};A(B,I=>{a(d).ms!=null&&I(E)})}t(h);var D=n(h,2);{var H=I=>{var z=dr(),O=r(z);{let W=q(()=>S()+1);qe(O,{get members(){return a(d).children},get depth(){return a(W)}})}t(z),c(I,z)};A(D,I=>{var z;(z=a(d).children)!=null&&z.length&&I(H)})}C((I,z)=>{ue(h,1,`prov-row prov-status-${a(d).status??""}`,"svelte-qakefz"),oe(k,`color: ${I??""};`),f(y,z),f(s,a(d).id),f(u,a(d).name)},[()=>M(a(d)),()=>m(a(d).status)]),c(g,x)}),t(i),C(()=>oe(i,`--depth: ${S()??""};`)),c(R,i),J()}var ur=p('<div class="silent svelte-16iv0n8"><span class="silent-tag svelte-16iv0n8">silent</span> <p class="silent-prose svelte-16iv0n8"><!></p></div>'),gr=p("<div></div>"),hr=p('<div class="prov-body svelte-16iv0n8"><!></div>'),mr=p('<section><header class="region-head svelte-16iv0n8"><div class="region-head-left svelte-16iv0n8"><span class="region-num svelte-16iv0n8"> </span> <h3 class="region-name svelte-16iv0n8"> </h3> <span class="region-role svelte-16iv0n8"> </span> <span class="region-tag svelte-16iv0n8"> </span></div> <!></header> <!> <div class="prov svelte-16iv0n8"><button type="button" class="prov-toggle svelte-16iv0n8"><span class="prov-caret svelte-16iv0n8" aria-hidden="true"> </span> <span class="prov-label"> </span> <span class="prov-meta svelte-16iv0n8"> </span></button> <!></div></section>');function fr(R,e){X(e,!0);let S=ie(e,"density",3,"comfortable"),m=ie(e,"provenanceMode",3,"smart"),M=ie(e,"linkedKey",3,null),i=q(()=>Me[e.stone]),g=q(()=>`${Be.indexOf(e.stone)+1}`.padStart(2,"0")),d=q(()=>e.stone==="capstone");function x(G){return G.flatMap(U=>U.children?[U,...x(U.children)]:[U])}let h=q(()=>x(e.trace.members)),k=q(()=>a(h).length),y=q(()=>a(h).some(G=>G.status==="warned"||G.status==="errored"||G.status==="not_invoked")),o=q(()=>m()==="all-expanded"?!0:m()==="all-collapsed"?!1:a(y)),s=Se(null),l=q(()=>a(s)??a(o));le(()=>{m(),pe(s,null)});var b=mr(),N=r(b),u=r(N),v=r(u),w=r(v,!0);t(v);var B=n(v,2),E=r(B,!0);t(B);var D=n(B,2),H=r(D);t(D);var I=n(D,2),z=r(I,!0);t(I),t(u);var O=n(u,2);ir(O,{get cardCount(){return e.cards.length},get members(){return e.trace.members}}),t(N);var W=n(N,2);{var T=G=>{var U=ur(),$=n(r(U),2),ve=r($);{var fe=he=>{var se=ye("No projection cards landed for this query. Atomic functions still ran (see provenance) and returned silence rather than confabulation.");c(he,se)},be=he=>{var se=ye("No cards for this Stone on this query.");c(he,se)};A(ve,he=>{e.stone==="lodestone"?he(fe):he(be,-1)})}t($),t(U),c(G,U)},P=G=>{var U=gr();let $;te(U,21,()=>e.cards,ve=>ve.id,(ve,fe)=>{Te(ve,{get card(){return a(fe)},get density(){return S()},get linkedKey(){return M()},get onCite(){return e.onCite},get onLink(){return e.onLink}})}),t(U),C(()=>$=ue(U,1,"rail svelte-16iv0n8",null,$,{"rail-capstone":a(d)})),c(G,U)};A(W,G=>{e.cards.length===0?G(T):G(P,-1)})}var L=n(W,2),F=r(L),j=r(F),K=r(j,!0);t(j);var ae=n(j,2),Q=r(ae);t(ae);var Z=n(ae,2),ne=r(Z);t(Z),t(F);var Y=n(F,2);{var V=G=>{var U=hr(),$=r(U);qe($,{get members(){return e.trace.members}}),t(U),C(()=>_(U,"id",`prov-body-${e.stone}`)),c(G,U)};A(Y,G=>{a(l)&&G(V)})}t(L),t(b),C(()=>{ue(b,1,`region region-${e.stone??""}`,"svelte-16iv0n8"),_(b,"aria-labelledby",`region-h-${e.stone}`),_(b,"data-stone",e.stone),f(w,a(g)),_(B,"id",`region-h-${e.stone}`),f(E,a(i).name),f(H,`· ${a(i).role??""}`),f(z,a(i).tag),_(F,"aria-expanded",a(l)),_(F,"aria-controls",`prov-body-${e.stone}`),f(K,a(l)?"▾":"▸"),f(Q,`${a(l)?"Hide":"Show"} provenance`),f(ne,`· ${a(k)??""} function${a(k)===1?"":"s"}`)}),Ne("click",F,()=>pe(s,!a(l))),c(R,b),J()}Ce(["click"]);var _r=p('<section class="region region-grammar svelte-gwg123" aria-label="Card grammar reference"><header class="region-head svelte-gwg123"><div class="region-head-left svelte-gwg123"><span class="region-num svelte-gwg123">SPEC</span> <h3 class="region-name svelte-gwg123">Card grammar</h3> <span class="region-role svelte-gwg123">· every body variant in the system</span> <span class="region-tag svelte-gwg123">stubs, not findings</span></div> <span class="grammar-count svelte-gwg123"> </span></header> <div class="rail svelte-gwg123"></div></section>');function yr(R,e){let S=ie(e,"density",3,"comfortable");const m=[{id:"grm-headline",stone:"cornerstone",tier:"modeled",variant:"headline",source:"FEMA",agency:"spec",vintage:"spec",title:"Single big number, scenario-tagged",headline:"Zone AE",subhead:"preliminary FIRM, panel ID",sub:"Use when the answer is one categorical state.",docId:"DS-HEADLINE"},{id:"grm-tabular",stone:"cornerstone",tier:"empirical",variant:"tabular",source:"USGS",agency:"spec",vintage:"spec",title:"Small table of observations",columns:["id","value","dist."],rows:[["ROW-001","1.2 m","0.18 mi"],["ROW-002","0.9 m","0.32 mi"],["ROW-003","0.7 m","0.41 mi"]],sub:"Use when 3–8 records each carry the same fields.",docId:"DS-TABULAR"},{id:"grm-scalars",stone:"touchstone",tier:"empirical",variant:"scalars",source:"NWS",agency:"spec",vintage:"spec",title:"Trio of scalar readings",scalars:[{value:"0.02 in",label:"precip · 24h"},{value:"11 mph",label:"wind"},{value:"63°F",label:"temp"}],sub:"Use for current-state dashboards.",docId:"DS-SCALARS"},{id:"grm-spark",stone:"touchstone",tier:"empirical",variant:"spark",source:"FloodNet",agency:"spec",vintage:"spec",title:"Sparkline of recent events",headline:"n events",subhead:"window · peak",spark:[1,2,4,3,7,12,8,5,3,2,4,9,6],docId:"DS-SPARK"},{id:"grm-histogram",stone:"touchstone",tier:"proxy",variant:"histogram",source:"NYC 311",agency:"spec",vintage:"spec",title:"Histogram of binned counts",headline:"n calls",subhead:"window · seasonal note",histogram:[3,2,1,0,1,4,7,12,18,11,5,3,4,2,1,0,2,3,8,9,4,2,1,0],docId:"DS-HIST"},{id:"grm-timeseries",stone:"lodestone",tier:"modeled",variant:"timeseries",source:"Granite TTM",agency:"spec",vintage:"spec",title:"Forecast curve with horizon",headline:"+0.41 m peak",subhead:"+38h · 90% CI",timeseries:{hours:96,peak:{x:38,y:41},peakLabel:"+0.41 m"},spatialNote:"regional",sub:"Spatial-index callout when station ≠ point-of-query.",docId:"DS-TS"},{id:"grm-forecast",stone:"lodestone",tier:"modeled",variant:"forecast",source:"NPCC4",agency:"spec",vintage:"spec",title:"Long-horizon scenario projections",forecast:[{year:2030,low:4,mid:6,high:9},{year:2050,low:13,mid:22,high:30},{year:2100,low:38,mid:71,high:114}],sub:"Use for decadal+ uncertainty cones.",docId:"DS-FCST"},{id:"grm-raster",stone:"cornerstone",tier:"modeled",variant:"raster",source:"NYC DEP",agency:"spec",vintage:"spec",title:"Raster snapshot, mapped layer",rasterKind:"stormwater",headline:"ponding",subhead:"scenario · pixel summary",sub:"Use for any 2D model output.",docId:"DS-RASTER"},{id:"grm-rasterpred",stone:"touchstone",tier:"modeled",variant:"raster-pred",source:"Prithvi-NYC",agency:"spec",vintage:"spec",title:"Raster prediction, illustrative",rasterKind:"prithvi",headline:"n% flooded",subhead:"model · scene id",illustrative:!0,sub:"Same chrome as raster + illustrative tag.",docId:"DS-RASTERPRED"},{id:"grm-register",stone:"keystone",tier:"empirical",variant:"register",source:"NYC OpenData",agency:"spec",vintage:"spec",title:"Composite register list",registers:[{reg:"MTA",tier:"empirical",label:"Station entrance",detail:"0.18 mi · 5",sourceId:"MTA-X",note:null},{reg:"NYCHA",tier:"empirical",label:"Development",detail:"0.41 mi · 2,878 res.",sourceId:"NYCHA-Y",note:null},{reg:"DOH",tier:"empirical",label:null,detail:null,sourceId:null,note:"no acute-care hospital within 1.0 mi"}],sub:"Use when many specialists join into one Stone.",docId:"DS-REGISTER"},{id:"grm-comparison",stone:"keystone",tier:"synthetic",variant:"comparison",source:"EMP × SYN",agency:"spec",vintage:"spec",title:"Documented vs. interpreted",left:{tier:"empirical",label:"documented",value:"31.4%",aux:"n polygons"},right:{tier:"synthetic",label:"interpreted",value:"29.8%",aux:"n polygons"},delta:"Δ = −1.6 pp · agreement strong",sub:"Use to surface model–ground-truth deltas.",docId:"DS-CMP"},{id:"grm-meta",stone:"capstone",tier:"modeled",variant:"meta",source:"Mellea",agency:"spec",vintage:"spec",title:"Capstone reconciliation",metaRows:[{k:"claims",v:"12 / 12 grounded"},{k:"tier mix",v:"EMP 5 · MOD 4 · PRX 2 · SYN 1"},{k:"tier-1 freshness",v:"median 38 d"},{k:"warnings",v:"0"}],sub:"Use to expose the synthesis layer's audit.",docId:"DS-META"}];var M=_r(),i=r(M),g=n(r(i),2),d=r(g);t(g),t(i);var x=n(i,2);te(x,21,()=>m,h=>h.id,(h,k)=>{Te(h,{get card(){return a(k)},get density(){return S()}})}),t(x),t(M),C(()=>f(d,`${m.length??""} variants`)),c(R,M)}var pr=p('<section class="findings svelte-ci42t5" aria-label="Findings, grouped by Stone"><header class="findings-head svelte-ci42t5"><h2 class="findings-h2 svelte-ci42t5">Findings · grouped by Stone</h2> <span class="findings-tagline svelte-ci42t5">cards = what each Stone found · provenance collapses below</span></header> <!> <!> <!></section>');function Er(R,e){X(e,!0);let S=ie(e,"density",3,"comfortable"),m=ie(e,"provenanceMode",3,"smart"),M=ie(e,"showGrammar",3,!1),i=ie(e,"linkedKey",3,null),g=q(()=>{const s={cornerstone:[],keystone:[],touchstone:[],lodestone:[],capstone:[]};for(const l of e.data.cards)s[l.stone].push(l);return s}),d=q(()=>{const s={cornerstone:{key:"cornerstone",members:[]},keystone:{key:"keystone",members:[]},touchstone:{key:"touchstone",members:[]},lodestone:{key:"lodestone",members:[]},capstone:{key:"capstone",members:[]}};for(const l of e.data.stones)s[l.key]=l;return s});var x=pr(),h=n(r(x),2);Nt(h,{get cards(){return e.data.cards},get stones(){return e.data.stones},get wallSeconds(){return e.data.wallSeconds},get cacheHit(){return e.data.cacheHit}});var k=n(h,2);te(k,16,()=>Be,s=>s,(s,l)=>{fr(s,{get stone(){return l},get cards(){return a(g)[l]},get trace(){return a(d)[l]},get density(){return S()},get provenanceMode(){return m()},get linkedKey(){return i()},get onCite(){return e.onCite},get onLink(){return e.onLink}})});var y=n(k,2);{var o=s=>{yr(s,{get density(){return S()}})};A(y,s=>{M()&&s(o)})}t(x),c(R,x),J()}const xr={cornerstone:[{id:"CORN-001",name:"sandy_inundation.lookup",stepNames:["sandy_inundation","sandy_nta"],tier:"empirical",skipReason:"Sandy 2012 inundation: query outside NYC bounds"},{id:"CORN-002",name:"dep_stormwater.lookup",stepNames:["dep_stormwater","dep_extreme_2080_nta","dep_moderate_2050_nta","dep_moderate_current_nta"],tier:"modeled",skipReason:"NYC DEP stormwater scenarios: query outside NYC bounds"},{id:"CORN-003",name:"usgs_hwm.spatial_join",stepNames:["ida_hwm_2021"],tier:"empirical",skipReason:"USGS Ida HWMs: no marks within 800 m of address"},{id:"CORN-004",name:"prithvi_water.lookup",stepNames:["prithvi_eo_v2"],tier:"modeled",skipReason:"Prithvi-EO Ida polygons: no polygons within 500 m"},{id:"CORN-005",name:"microtopo.dem_hand_twi",stepNames:["microtopo_lidar","microtopo_nta"],tier:"proxy",skipReason:"USGS 3DEP DEM: query outside NYC raster coverage"}],keystone:[{id:"KEY-001",name:"mta_entrance_exposure",stepNames:["mta_entrance_exposure"],tier:"empirical",skipReason:"no entrances within radius"},{id:"KEY-002",name:"nycha.development_join",stepNames:["nycha_development_exposure"],tier:"empirical",skipReason:"no NYCHA developments within 1.0 mi"},{id:"KEY-003",name:"doe.school_join",stepNames:["doe_school_exposure"],tier:"empirical",skipReason:"no DOE schools within 1.0 mi"},{id:"KEY-004",name:"doh.facility_join",stepNames:["doh_hospital_exposure"],tier:"empirical",skipReason:"no acute-care hospitals within 1.0 mi"},{id:"KEY-005",name:"pluto.lot_lookup",stepNames:["pluto_lookup"],tier:"empirical",skipReason:"PLUTO join skipped: queried address not in NYC PLUTO dataset"},{id:"KEY-006",name:"terramind.buildings",stepNames:["terramind_buildings","terramind_synthesis"],tier:"modeled",skipReason:"TerraMind Buildings adapter: heavy specialist disabled (RIPRAP_HEAVY_SPECIALISTS=0)"}],touchstone:[{id:"TCH-001",name:"floodnet.history",stepNames:["floodnet"],tier:"empirical",skipReason:"FloodNet sensor: no deployments within 600 m"},{id:"TCH-002",name:"nyc311.flood_complaints",stepNames:["nyc311","nyc311_nta"],tier:"proxy",skipReason:"NYC 311: no flood-relevant complaints within 200 m"},{id:"TCH-003",name:"nws_obs.metar",stepNames:["nws_obs"],tier:"empirical",skipReason:"NWS hourly METAR: nearest ASOS reports no precipitation"},{id:"TCH-004",name:"noaa_coops.recent",stepNames:["noaa_tides"],tier:"empirical",skipReason:"NOAA tide gauge: nearest station >25 km from address"},{id:"TCH-005",name:"prithvi_nyc_pluvial",stepNames:["prithvi_eo_live"],tier:"modeled",skipReason:"Prithvi-NYC-Pluvial: live segmentation specialist disabled or no <30% cloud Sentinel-2 in last 120 d"},{id:"TCH-006",name:"terramind.lulc",stepNames:["terramind_lulc"],tier:"synthetic",skipReason:"TerraMind LULC adapter: heavy specialist disabled or eo_chip fetch silent"}],lodestone:[{id:"LOD-001",name:"nws_alerts.flood_relevant",stepNames:["nws_alerts"],tier:"modeled",skipReason:"NWS public alerts: no active flood-relevant alerts at this address"},{id:"LOD-002",name:"ttm_battery_surge.zero_shot",stepNames:["ttm_forecast"],tier:"modeled",skipReason:"Granite TTM r2 zero-shot: forecast not interesting (peak |residual| < 0.3 ft)"},{id:"LOD-003",name:"ttm_battery_surge.fine_tune",stepNames:["ttm_battery_surge"],tier:"modeled",skipReason:"Granite TTM Battery fine-tune: forecast not interesting (peak |residual| < 0.3 m)"},{id:"LOD-004",name:"ttm_311_forecast",stepNames:["ttm_311_forecast"],tier:"modeled",skipReason:"NYC 311 weekly forecast: no per-address history to extrapolate"},{id:"LOD-005",name:"floodnet_forecast",stepNames:["floodnet_forecast"],tier:"modeled",skipReason:"FloodNet sensor recurrence: sensor has < silent-floor historical events; forecast omitted"},{id:"LOD-006",name:"npcc4.slr_projection",stepNames:["npcc4_projection"],tier:"modeled",skipReason:"NPCC4 SLR projection: not yet wired into FSM (static reference card on hold)"}],capstone:[{id:"CAP-001",name:"rag.granite_embedding",stepNames:["rag_granite_embedding"],tier:"proxy",skipReason:"Granite Embedding RAG: no policy retrieval (out-of-NYC scope)"},{id:"CAP-002",name:"gliner.typed_extraction",stepNames:["gliner_extract"],tier:"proxy",skipReason:"GLiNER typed extraction: no RAG hits to extract over"},{id:"CAP-003",name:"granite41.compose_briefing",stepNames:["reconcile_granite41","mellea_reconcile_address","reconcile_neighborhood","reconcile_development","reconcile_live_now"],tier:"modeled",skipReason:"Reconciler did not run (no grounded data available)"},{id:"CAP-004",name:"mellea.grounding_check",stepNames:["mellea_grounding"],tier:"modeled",skipReason:"Mellea grounding-check: rolled into reconcile step on this run"}]};function Pr(R,e){const S=xr[R]??[],m=new Map;for(const g of e)m.set(g.name,g);const M=[],i=new Set;for(const g of S){let d;for(const x of g.stepNames){const h=m.get(x);if(h){d=h,i.add(x);break}}d?M.push({...d,id:g.id,name:g.name,tier:d.tier??g.tier??null}):M.push({id:g.id,name:g.name,status:"not_invoked",tier:g.tier??null,note:g.skipReason})}for(const g of e)i.has(g.name)||M.push(g);return M}export{Lr as C,Er as F,Fr as M,Rr as R,Pr as f};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
web/sveltekit/build/_app/immutable/chunks/sQImrWTX.js DELETED
@@ -1 +0,0 @@
1
- var rt=e=>{throw TypeError(e)};var Dt=(e,t,n)=>t.has(e)||rt("Cannot "+n);var y=(e,t,n)=>(Dt(e,t,"read from private field"),n?n.call(e):t.get(e)),A=(e,t,n)=>t.has(e)?rt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);import{bf as Pe,bg as Vt,ai as at,a4 as T,o as I,a5 as O,ar as we,bh as Bt}from"./BTUA7_xE.js";const M=[];function Ke(e,t=Pe){let n=null;const a=new Set;function r(o){if(Vt(e,o)&&(e=o,n)){const l=!M.length;for(const c of a)c[1](),M.push(c,e);if(l){for(let c=0;c<M.length;c+=2)M[c][0](M[c+1]);M.length=0}}}function i(o){r(o(e))}function s(o,l=Pe){const c=[o,l];return a.add(c),a.size===1&&(n=t(r,i)||Pe),o(e),()=>{a.delete(c),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:s}}class Me{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class ze{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Fe extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Kt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Mt(e){return e.split("%25").map(decodeURI).join("%25")}function zt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function $e({href:e}){return e.split("#")[0]}function C(){}function Ft(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function Gt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const Ht=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&X.delete(Ge(e)),Ht(e,t));const X=new Map;function Wt(e,t){const n=Ge(e,t),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const s=a.getAttribute("data-ttl");return s&&X.set(n,{body:r,init:i,ttl:1e3*Number(s)}),a.getAttribute("data-b64")!==null&&(r=Gt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function Jt(e,t,n){if(X.size>0){const a=Ge(e,n),r=X.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(r.body,r.init);X.delete(a)}}return window.fetch(t,n)}function Ge(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${Ft(...r)}"]`}return a}const Yt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Xt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Zt(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const s=a.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return Ce(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return Ce(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=Yt.exec(l),[,u,w,p,f]=d;return t.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&s[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return Ce(l)}).join("")}).join("")}/?$`),params:t}}function Qt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Zt(e){return e.slice(1).split("/").filter(Qt)}function en(e,t,n){const a={},r=e.slice(1),i=r.filter(o=>o!==void 0);let s=0;for(let o=0;o<t.length;o+=1){const l=t[o];let c=r[o-s];if(l.chained&&l.rest&&s&&(c=r.slice(o-s,o+1).filter(d=>d).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=t[o+1],u=r[o+1];d&&!d.rest&&d.optional&&u&&l.chained&&(s=0),!d&&!u&&Object.keys(a).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return a}function Ce(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function tn({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([o,[l,c,d]])=>{const{pattern:u,params:w}=Xt(o),p={id:o,exec:f=>{const m=u.exec(f);if(m)return en(m,w,a)},errors:[1,...d||[]].map(f=>e[f]),layouts:[0,...c||[]].map(s),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(o){const l=o<0;return l&&(o=~o),[l,e[o]]}function s(o){return o===void 0?o:[r.has(o),e[o]]}}function wt(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ot(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}var ht;const U=((ht=globalThis.__sveltekit_1072qog)==null?void 0:ht.base)??"";var pt;const nn=((pt=globalThis.__sveltekit_1072qog)==null?void 0:pt.assets)??U??"",rn="1778116586771",vt="sveltekit:snapshot",yt="sveltekit:scroll",bt="sveltekit:states",an="sveltekit:pageurl",F="sveltekit:history",Z="sveltekit:navigation",D={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Ue=location.origin;function He(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function B(){return{x:pageXOffset,y:pageYOffset}}function z(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const st={...D,"":D.hover};function kt(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function St(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=kt(e)}}function qe(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";a.hash=`#${o}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||Ae(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),s=(a==null?void 0:a.origin)===Ue&&e.hasAttribute("download");return{url:a,external:i,target:r,download:s}}function ve(e){let t=null,n=null,a=null,r=null,i=null,s=null,o=e;for(;o&&o!==document.documentElement;)a===null&&(a=z(o,"preload-code")),r===null&&(r=z(o,"preload-data")),t===null&&(t=z(o,"keepfocus")),n===null&&(n=z(o,"noscroll")),i===null&&(i=z(o,"reload")),s===null&&(s=z(o,"replacestate")),o=kt(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:st[a??"off"],preload_data:st[r??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(s)}}function it(e){const t=Ke(e);let n=!0;function a(){n=!0,t.update(s=>s)}function r(s){n=!1,t.set(s)}function i(s){let o;return t.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:a,set:r,subscribe:i}}const Et={v:C};function on(){const{set:e,subscribe:t}=Ke(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${nn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const s=(await r.json()).version!==rn;return s&&(e(!0),Et.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:t,check:a}}function Ae(e,t,n){return e.origin!==Ue||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Pn(e){}const Rt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Rt];const sn=new Set([...Rt]);[...sn];function ln(e){return e.filter(t=>t!=null)}function me(e,t){return e+"/"+t}function We(e){return e instanceof Me||e instanceof Fe?e.status:500}function cn(e){return e instanceof Fe?e.text:"Internal Error"}let R,ee,je;const fn=at.toString().includes("$$")||/function \w+\(\) \{\}/.test(at.toString()),lt="a:";var oe,se,ie,le,ce,fe,ue,de,gt,he,mt,pe,_t;fn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(lt)},ee={current:null},je={current:!1}):(R=new(gt=class{constructor(){A(this,oe,T({}));A(this,se,T(null));A(this,ie,T(null));A(this,le,T({}));A(this,ce,T({id:null}));A(this,fe,T({}));A(this,ue,T(-1));A(this,de,T(new URL(lt)))}get data(){return I(y(this,oe))}set data(t){O(y(this,oe),t)}get form(){return I(y(this,se))}set form(t){O(y(this,se),t)}get error(){return I(y(this,ie))}set error(t){O(y(this,ie),t)}get params(){return I(y(this,le))}set params(t){O(y(this,le),t)}get route(){return I(y(this,ce))}set route(t){O(y(this,ce),t)}get state(){return I(y(this,fe))}set state(t){O(y(this,fe),t)}get status(){return I(y(this,ue))}set status(t){O(y(this,ue),t)}get url(){return I(y(this,de))}set url(t){O(y(this,de),t)}},oe=new WeakMap,se=new WeakMap,ie=new WeakMap,le=new WeakMap,ce=new WeakMap,fe=new WeakMap,ue=new WeakMap,de=new WeakMap,gt),ee=new(mt=class{constructor(){A(this,he,T(null))}get current(){return I(y(this,he))}set current(t){O(y(this,he),t)}},he=new WeakMap,mt),je=new(_t=class{constructor(){A(this,pe,T(!1))}get current(){return I(y(this,pe))}set current(t){O(y(this,pe),t)}},pe=new WeakMap,_t),Et.v=()=>je.current=!0);function un(e){Object.assign(R,e)}const dn=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const N=wt(yt)??{},te=wt(vt)??{},j={url:it({}),page:it({}),navigating:Ke(null),updated:on()};function Je(e){N[e]=B()}function hn(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function ne(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(C)}async function xt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}let Ye,De,ye,P,Ve,S;const be=[],ke=[];let v=null;function Se(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const _e=new Map,Lt=new Set,pn=new Set,Q=new Set;let _={branch:[],error:null,url:null},Ut=!1,Ee=!1,ct=!0,re=!1,Y=!1,At=!1,Xe=!1,Tt,k,L,V;const Re=new Set,ft=new Map,ut=new Map;async function Nn(e,t,n){var i,s,o,l;globalThis.__sveltekit_1072qog&&(globalThis.__sveltekit_1072qog.query,globalThis.__sveltekit_1072qog.prerender),document.URL!==location.href&&(location.href=location.href),S=e,await((s=(i=e.hooks).init)==null?void 0:s.call(i)),Ye=tn(e),P=document.documentElement,Ve=t,De=e.nodes[0],ye=e.nodes[1],De(),ye(),k=(o=history.state)==null?void 0:o[F],L=(l=history.state)==null?void 0:l[Z],k||(k=L=Date.now(),history.replaceState({...history.state,[F]:k,[Z]:L},""));const a=N[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Ln(Ve,n)):(await G({type:"enter",url:He(S.hash?Tn(new URL(location.href)):location.href),replace_state:!0}),r()),xn()}function gn(){be.length=0,Xe=!1}function It(e){ke.some(t=>t==null?void 0:t.snapshot)&&(te[e]=ke.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function Ot(e){var t;(t=te[e])==null||t.forEach((n,a)=>{var r,i;(i=(r=ke[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function dt(){Je(k),ot(yt,N),It(L),ot(vt,te)}async function Pt(e,t,n,a){let r,i;t.invalidateAll&&Se(),await G({type:"goto",url:He(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{if(t.invalidateAll){Xe=!0,r=new Set;for(const[s,o]of ft)for(const l of o.keys())r.add(me(s,l));i=new Set;for(const[s,o]of ut)for(const l of o.keys())i.add(me(s,l))}t.invalidate&&t.invalidate.forEach(Rn)}}),t.invalidateAll&&we().then(we).then(()=>{for(const[s,o]of ft)for(const[l,{resource:c}]of o)r!=null&&r.has(me(s,l))&&c.refresh();for(const[s,o]of ut)for(const[l,{resource:c}]of o)i!=null&&i.has(me(s,l))&&c.reconnect()})}async function mn(e){if(e.id!==(v==null?void 0:v.id)){Se();const t={};Re.add(t),v={id:e.id,token:t,promise:Ct({...e,preload:t}).then(n=>(Re.delete(t),n.type==="loaded"&&n.state.error&&Se(),n)),fork:null}}return v.promise}async function Ne(e){var n;const t=(n=await Te(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(a=>a[1]()))}async function $t(e,t,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...e.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(R,e.props.page),Tt=new S.root({target:t,props:{...e.props,stores:j,components:ke},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),Ot(L),n){const s={from:null,to:{...a,scroll:N[k]??B()},willUnload:!1,type:"enter",complete:Promise.resolve()};Q.forEach(o=>o(s))}Ee=!0}async function xe({url:e,params:t,branch:n,errors:a,status:r,error:i,route:s,form:o}){let l="never";if(U&&(e.pathname===U||e.pathname===U+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);e.pathname=Kt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:s},props:{constructors:ln(n).map(f=>f.node.component),page:nt(R)}};o!==void 0&&(c.props.form=o);let d={},u=!R,w=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const m=n[f],h=_.branch[f];(m==null?void 0:m.data)!==(h==null?void 0:h.data)&&(u=!0),m&&(d={...d,...m.data},u&&(c.props[`data_${w}`]=d),w+=1)}return(!_.url||e.href!==_.url.href||_.error!==i||o!==void 0&&o!==R.form||u)&&(c.props.page={error:i,params:t,route:{id:(s==null?void 0:s.id)??null},state:{},status:r,url:new URL(e),form:o??null,data:u?d:R.data}),c}async function Qe({loader:e,parent:t,url:n,params:a,route:r,server_data_node:i}){var c,d;let s=null;const o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:s,uses:o}:null,data:s??(i==null?void 0:i.data)??null,slash:((d=l.universal)==null?void 0:d.trailingSlash)??(i==null?void 0:i.slash)}}function _n(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const i=Ee?Jt(a,r.href,t):Wt(a,t);return{resolved:r,promise:i}}function wn(e,t,n,a,r,i){if(Xe)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const s of r.search_params)if(a.has(s))return!0;for(const s of r.params)if(i[s]!==_.params[s])return!0;for(const s of r.dependencies)if(be.some(o=>o(new URL(s))))return!0;return!1}function Ze(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function vn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(s=>i.includes(s))&&i.every(s=>r.includes(s))&&n.delete(a)}return n}function yn({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:nt(R),constructors:[]}}}async function Ct({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if((v==null?void 0:v.id)===e)return Re.delete(v.token),v.promise;const{errors:s,layouts:o,leaf:l}=r,c=[...o,l];s.forEach(h=>h==null?void 0:h().catch(C)),c.forEach(h=>h==null?void 0:h[1]().catch(C));const d=_.url?e!==Le(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=vn(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var $;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!wn(p,u,d,w,($=b.universal)==null?void 0:$.uses,a)?b:(p=!0,Qe({loader:h[1],url:n,params:a,route:r,parent:async()=>{var ge;const q={};for(let K=0;K<g;K+=1)Object.assign(q,(ge=await f[K])==null?void 0:ge.data);return q},server_data_node:Ze(h[0]?{type:"skip"}:null,h[0]?b==null?void 0:b.server:void 0)}))});for(const h of f)h.catch(C);const m=[];for(let h=0;h<c.length;h+=1)if(c[h])try{m.push(await f[h])}catch(g){if(g instanceof ze)return{type:"redirect",location:g.location};if(Re.has(i))return yn({error:await ae(g,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let b=We(g),x;if(g instanceof Me)x=g.body;else{if(await j.updated.check())return await xt(),await ne(n);x=await ae(g,{params:a,url:n,route:{id:r.id}})}const $=await bn(h,m,s);return $?xe({url:n,params:a,branch:m.slice(0,$.idx).concat($.node),errors:s,status:b,error:x,route:r}):await Nt(n,{id:r.id},x,b)}else m.push(void 0);return xe({url:n,params:a,branch:m,errors:s,status:200,error:null,route:r,form:t?void 0:null})}async function bn(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function et({status:e,error:t,url:n,route:a}){const r={};let i=null;try{const s=await Qe({loader:De,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:Ze(i)}),o={node:await ye(),loader:ye,universal:null,server:null,data:null};return xe({url:n,params:r,branch:[s,o],status:e,error:t,errors:[],route:null})}catch(s){if(s instanceof ze)return Pt(new URL(s.location,location.href),{},0);throw s}}async function kn(e){const t=e.href;if(_e.has(t))return _e.get(t);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(e),fetch:async(i,s)=>_n(i,s,e).promise})??e;if(typeof r=="string"){const i=new URL(e);S.hash?i.hash=r:i.pathname=r,r=i}return r})();_e.set(t,a),n=await a}catch{_e.delete(t);return}return n}async function Te(e,t){if(e&&!Ae(e,U,S.hash)){const n=await kn(e);if(!n)return;const a=Sn(n);for(const r of Ye){const i=r.exec(a);if(i)return{id:Le(e),invalidating:t,route:r,params:zt(i),url:e}}}}function Sn(e){return Mt(S.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function Le(e){return(S.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:a,event:r,scroll:i}){let s=!1;const o=tt(_,n,e,t,i??null);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return re||Lt.forEach(c=>c(l)),s?null:o}async function G({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=C,block:d=C,event:u}){var K;const w=V;V=l;const p=await Te(t,!1),f=e==="enter"?tt(_,p,t,e):jt({url:t,type:e,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),V===l&&(V=w);return}const m=k,h=L;c(),re=!0,Ee&&f.navigation.type!=="enter"&&j.navigating.set(ee.current=f.navigation);let g=p&&await Ct(p);if(!g){if(Ae(t,U,S.hash))return await ne(t,i);g=await Nt(t,{id:null},await ae(new Fe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(p==null?void 0:p.url)||t,V!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(o<20){await G({type:e,url:new URL(g.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),f.fulfil(void 0);return}g=await et({status:500,error:await ae(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await j.updated.check()&&(await xt(),await ne(t,i));if(gn(),Je(m),It(h),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),s=n?n.state:s,!n){const E=i?0:1,H={[F]:k+=E,[Z]:L+=E,[bt]:s};(i?history.replaceState:history.pushState).call(history,H,"",t),i||hn(k,L)}const b=p&&(v==null?void 0:v.id)===p.id?v.fork:null;v!=null&&v.fork&&!b&&Se(),v=null,g.props.page.state=s;let x;if(Ee){const E=(await Promise.all(Array.from(pn,W=>W(f.navigation)))).filter(W=>typeof W=="function");if(E.length>0){let W=function(){E.forEach(Oe=>{Q.delete(Oe)})};E.push(W),E.forEach(Oe=>{Q.add(Oe)})}const H=f.navigation.to;_={...g.state,nav:{params:H.params,route:H.route,url:H.url}},g.props.page&&(g.props.page.url=t);const Ie=b&&await b;Ie?x=Ie.commit():(J=null,Tt.$set(g.props),J&&Object.assign(g.props.page,J),un(g.props.page),x=(K=Bt)==null?void 0:K()),At=!0}else await $t(g,Ve,!1);const{activeElement:$}=document;await x,await we(),await we();let q=null;if(ct){const E=n?n.scroll:r?B():null;E?scrollTo(E.x,E.y):(q=t.hash&&document.getElementById(qt(t)))?q.scrollIntoView():scrollTo(0,0)}const ge=document.activeElement!==$&&document.activeElement!==document.body;!a&&!ge&&An(t,!q),ct=!0,g.props.page&&(J&&Object.assign(g.props.page,J),Object.assign(R,g.props.page)),re=!1,e==="popstate"&&Ot(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=B()),Q.forEach(E=>E(f.navigation)),j.navigating.set(ee.current=null)}async function Nt(e,t,n,a,r){return e.origin===Ue&&e.pathname===location.pathname&&!Ut?await et({status:a,error:n,url:e,route:t}):await ne(e,r)}function En(){let e,t={element:void 0,href:void 0},n;P.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(e),e=setTimeout(()=>{i(l,D.hover)},20)});function a(o){o.defaultPrevented||i(o.composedPath()[0],D.tap)}P.addEventListener("mousedown",a),P.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Ne(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(o,l){const c=St(o,P),d=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=qe(c,U,S.hash);if(w||p)return;const f=ve(c),m=u&&Le(_.url)===Le(u);if(!(f.reload||m))if(l<=f.preload_data){t={element:c,href:c.href},n=D.tap;const h=await Te(u,!1);if(!h)return;mn(h)}else l<=f.preload_code&&(t={element:c,href:c.href},n=l,Ne(u))}function s(){r.disconnect();for(const o of P.querySelectorAll("a")){const{url:l,external:c,download:d}=qe(o,U,S.hash);if(c||d)continue;const u=ve(o);u.reload||(u.preload_code===D.viewport&&r.observe(o),u.preload_code===D.eager&&Ne(l))}}Q.add(s),s()}function ae(e,t){if(e instanceof Me)return e.body;const n=We(e),a=cn(e);return S.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function qn(e,t={}){return e=new URL(He(e)),e.origin!==Ue?Promise.reject(new Error("goto: invalid URL")):Pt(e,t,0)}function Rn(e){if(typeof e=="function")be.push(e);else{const{href:t}=new URL(e,location.href);be.push(n=>n.href===t)}}function xn(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(dt(),!re){const r=tt(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};Lt.forEach(s=>s(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&dt()}),(t=navigator.connection)!=null&&t.saveData||En(),P.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=St(n.composedPath()[0],P);if(!a)return;const{url:r,external:i,target:s,download:o}=qe(a,U,S.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const l=ve(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===$e(location);if(i||l.reload&&(!w||!u)){jt({url:r,type:"link",event:n})?re=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,Je(k),e(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await G({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),P.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const o=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Ae(o,U,!1))return;const l=n.target,c=ve(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);o.search=new URLSearchParams(d).toString(),G({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!Be){if((a=n.state)!=null&&a[F]){const r=n.state[F];if(V={},r===k)return;const i=N[r],s=n.state[bt]??{},o=new URL(n.state[an]??location.href),l=n.state[Z],c=_.url?$e(location)===$e(_.url):!1;if(l===L&&(At||c)){s!==R.state&&(R.state=s),e(o),N[k]=B(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await G({type:"popstate",url:o,popped:{state:s,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:V,event:n})}else if(!Y){const r=new URL(location.href);e(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[F]:++k,[Z]:L},"",location.href))});for(const n of document.querySelectorAll("link"))dn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&j.navigating.set(ee.current=null)});function e(n){_.url=R.url=n,j.page.set(nt(R)),j.page.notify()}}async function Ln(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:s,data:o,form:l}){Ut=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await Te(c,!1)||{}),d=Ye.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=o[h];return g!=null&&g.uses&&(g.uses=Un(g.uses)),Qe({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let x=0;x<h;x+=1)Object.assign(b,(await p[x]).data);return b},server_data_node:Ze(g)})}),f=await Promise.all(p);if(d){const m=d.layouts;for(let h=0;h<m.length;h++)m[h]||f.splice(h,0,void 0)}u=await xe({url:c,params:r,branch:f,status:t,error:n,errors:d==null?void 0:d.errors,form:l,route:d??null})}catch(p){if(p instanceof ze){await ne(new URL(p.location,location.href));return}u=await et({status:We(p),error:await ae(p,{url:c,params:r,route:i}),url:c,route:i}),e.textContent="",w=!1}finally{}u.props.page&&(u.props.page.state={}),await $t(u,e,w)}function Un(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let Be=!1;function An(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=qt(e);if(a&&document.getElementById(a)){const{x:i,y:s}=B();setTimeout(()=>{const o=history.state;Be=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(o,"",e),t&&scrollTo(i,s),Be=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let s=0;s<r.rangeCount;s+=1)i.push(r.getRangeAt(s));setTimeout(()=>{if(r.rangeCount===i.length){for(let s=0;s<r.rangeCount;s+=1){const o=i[s],l=r.getRangeAt(s);if(o.commonAncestorContainer!==l.commonAncestorContainer||o.startContainer!==l.startContainer||o.endContainer!==l.endContainer||o.startOffset!==l.startOffset||o.endOffset!==l.endOffset)return}r.removeAllRanges()}})}}}function tt(e,t,n,a,r=null){var c,d;let i,s;const o=new Promise((u,w)=>{i=u,s=w});return o.catch(C),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:B()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((d=t==null?void 0:t.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!t,type:a,complete:o},fulfil:i,reject:s}}function nt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Tn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(S.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Nn as a,qn as g,Pn as l,R as p,j as s};
 
 
web/sveltekit/build/_app/immutable/entry/{app.BJix1erd.js → app.C74wsJjh.js} RENAMED
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.xQyF6Vnl.js","../chunks/CWw6qgC_.js","../chunks/BTUA7_xE.js","../chunks/DxQlA7U2.js","../chunks/Bd-v_9Ud.js","../chunks/CW0zSL4D.js","../chunks/CbyeixEA.js","../chunks/33K0dtcD.js","../chunks/DCD6_LXk.js","../chunks/B0XoTt7U.js","../assets/RipMark.ClxF_PAC.css","../chunks/DixtWtwq.js","../assets/0.DiQNUxm-.css","../nodes/1.BfclScXS.js","../nodes/2.ecCZIVph.js","../chunks/cDW0xQNP.js","../chunks/25_y8TFd.js","../chunks/CXQd8Y6F.js","../chunks/D907np-5.js","../assets/2.BD53GLFY.css","../nodes/3.3dbioiXY.js","../chunks/BatqQaKj.js","../assets/Briefing.Dmn9LgiV.css","../assets/3.BZfqQRM0.css","../nodes/4.qvdqEXFv.js","../chunks/BZuv-XBZ.js","../assets/stoneRegistry.bHiraU77.css","../assets/4.D4-aMRnd.css","../nodes/5.BFrkSt3u.js"])))=>i.map(i=>d[i]);
2
- var S=e=>{throw TypeError(e)};var M=(e,t,r)=>t.has(e)||S("Cannot "+r);var c=(e,t,r)=>(M(e,t,"read from private field"),r?r.call(e):t.get(e)),p=(e,t,r)=>t.has(e)?S("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),I=(e,t,r,n)=>(M(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);import{b as L,_ as b}from"../chunks/CXQd8Y6F.js";import{h as N,n as W,d as X,a3 as Z,q as $,v as tt,i as et,e as B,an as rt,j as at,a5 as A,ah as st,o as l,ao as nt,ap as ot,L as it,p as ct,aq as ut,am as dt,ai as mt,ar as _t,f as x,s as lt,a as ft,a4 as j,c as ht,r as vt,t as gt,al as k}from"../chunks/BTUA7_xE.js";import{h as yt,m as Et,u as bt,a as R,c as w,f as F,t as Rt,s as Pt}from"../chunks/CWw6qgC_.js";import{B as Ot,i as D}from"../chunks/Bd-v_9Ud.js";import{p as q}from"../chunks/CW0zSL4D.js";function V(e,t,r){var n;N&&(n=at,W());var o=new Ot(e);X(()=>{var i=t()??null;if(N){var a=$(n),s=a===rt,_=i!==null;if(s!==_){var P=tt();et(P),o.anchor=P,B(!1),o.ensure(i,i&&(y=>r(y,i))),B(!0);return}}o.ensure(i,i&&(y=>r(y,i)))},Z)}function Tt(e){return class extends xt{constructor(t){super({component:e,...t})}}}var f,d;class xt{constructor(t){p(this,f);p(this,d);var i;var r=new Map,n=(a,s)=>{var _=it(s,!1,!1);return r.set(a,_),_};const o=new Proxy({...t.props||{},$$events:{}},{get(a,s){return l(r.get(s)??n(s,Reflect.get(a,s)))},has(a,s){return s===st?!0:(l(r.get(s)??n(s,Reflect.get(a,s))),Reflect.has(a,s))},set(a,s,_){return A(r.get(s)??n(s,_),_),Reflect.set(a,s,_)}});I(this,d,(t.hydrate?yt:Et)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((i=t==null?void 0:t.props)!=null&&i.$$host)||t.sync===!1)&&nt(),I(this,f,o.$$events);for(const a of Object.keys(c(this,d)))a==="$set"||a==="$destroy"||a==="$on"||ot(this,a,{get(){return c(this,d)[a]},set(s){c(this,d)[a]=s},enumerable:!0});c(this,d).$set=a=>{Object.assign(o,a)},c(this,d).$destroy=()=>{bt(c(this,d))}}$set(t){c(this,d).$set(t)}$on(t,r){c(this,f)[t]=c(this,f)[t]||[];const n=(...o)=>r.call(this,...o);return c(this,f)[t].push(n),()=>{c(this,f)[t]=c(this,f)[t].filter(o=>o!==n)}}$destroy(){c(this,d).$destroy()}}f=new WeakMap,d=new WeakMap;const St={};var At=F('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),pt=F("<!> <!>",1);function It(e,t){ct(t,!0);let r=q(t,"components",23,()=>[]),n=q(t,"data_0",3,null),o=q(t,"data_1",3,null);ut(()=>t.stores.page.set(t.page)),dt(()=>{t.stores,t.page,t.constructors,r(),t.form,n(),o(),t.stores.page.notify()});let i=j(!1),a=j(!1),s=j(null);mt(()=>{const u=t.stores.page.subscribe(()=>{l(i)&&(A(a,!0),_t().then(()=>{A(s,document.title||"untitled page",!0)}))});return A(i,!0),u});const _=k(()=>t.constructors[1]);var P=pt(),y=x(P);{var G=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(m,jt)=>{var C=w(),K=x(C);V(K,()=>l(_),(Q,U)=>{L(U(Q,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),T=>r()[1]=T,()=>{var T;return(T=r())==null?void 0:T[1]})}),R(m,C)},$$slots:{default:!0}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)},H=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)};D(y,u=>{t.constructors[1]?u(G):u(H,-1)})}var z=lt(y,2);{var J=u=>{var h=At(),v=ht(h);{var O=g=>{var E=Rt();gt(()=>Pt(E,l(s))),R(g,E)};D(v,g=>{l(a)&&g(O)})}vt(h),R(u,h)};D(z,u=>{l(i)&&u(J)})}R(e,P),ft()}const Mt=Tt(It),Nt=[()=>b(()=>import("../nodes/0.xQyF6Vnl.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url),()=>b(()=>import("../nodes/1.BfclScXS.js"),__vite__mapDeps([13,1,2,6,7]),import.meta.url),()=>b(()=>import("../nodes/2.ecCZIVph.js"),__vite__mapDeps([14,1,2,11,15,8,9,5,10,16,7,17,18,19]),import.meta.url),()=>b(()=>import("../nodes/3.3dbioiXY.js"),__vite__mapDeps([20,1,2,4,16,15,6,7,21,5,3,9,22,23]),import.meta.url),()=>b(()=>import("../nodes/4.qvdqEXFv.js"),__vite__mapDeps([24,1,2,4,6,7,21,16,5,3,9,22,25,17,18,26,11,27]),import.meta.url),()=>b(()=>import("../nodes/5.BFrkSt3u.js"),__vite__mapDeps([28,1,2,21,4,16,5,3,9,22,25,17,18,26]),import.meta.url)],Bt=[],Ft={"/":[2],"/print/[queryId]":[3],"/q/sample":[5],"/q/[queryId]":[4]},Y={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},Lt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.decode])),Yt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.encode])),Gt=!1,Ht=(e,t)=>Lt[e](t);export{Ht as decode,Lt as decoders,Ft as dictionary,Yt as encoders,Gt as hash,Y as hooks,St as matchers,Nt as nodes,Mt as root,Bt as server_loads};
 
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.WjwQ9Jo9.js","../chunks/CWw6qgC_.js","../chunks/BTUA7_xE.js","../chunks/DxQlA7U2.js","../chunks/Bd-v_9Ud.js","../chunks/CW0zSL4D.js","../chunks/B-yumwKg.js","../chunks/BRRh3tKo.js","../chunks/DCD6_LXk.js","../chunks/B0XoTt7U.js","../assets/RipMark.ClxF_PAC.css","../chunks/DixtWtwq.js","../assets/0.DiQNUxm-.css","../nodes/1.DFlTxVC8.js","../nodes/2.jyZRUUOQ.js","../chunks/cDW0xQNP.js","../chunks/25_y8TFd.js","../chunks/CXQd8Y6F.js","../chunks/D907np-5.js","../assets/2.BD53GLFY.css","../nodes/3.D-7M_E8S.js","../chunks/BatqQaKj.js","../assets/Briefing.Dmn9LgiV.css","../assets/3.BZfqQRM0.css","../nodes/4.ChLTC4vz.js","../chunks/C3emz_VZ.js","../assets/stoneRegistry.bHiraU77.css","../assets/4.C9CQZyPb.css","../nodes/5.CuscLKzC.js"])))=>i.map(i=>d[i]);
2
+ var S=e=>{throw TypeError(e)};var M=(e,t,r)=>t.has(e)||S("Cannot "+r);var c=(e,t,r)=>(M(e,t,"read from private field"),r?r.call(e):t.get(e)),p=(e,t,r)=>t.has(e)?S("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),I=(e,t,r,n)=>(M(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);import{b as L,_ as b}from"../chunks/CXQd8Y6F.js";import{h as N,n as W,d as X,a3 as Z,q as $,v as tt,i as et,e as B,an as rt,j as at,a5 as A,ah as st,o as l,ao as nt,ap as ot,L as it,p as ct,aq as ut,am as dt,ai as mt,ar as _t,f as x,s as lt,a as ft,a4 as j,c as ht,r as vt,t as gt,al as k}from"../chunks/BTUA7_xE.js";import{h as yt,m as Et,u as bt,a as R,c as w,f as F,t as Rt,s as Pt}from"../chunks/CWw6qgC_.js";import{B as Ot,i as D}from"../chunks/Bd-v_9Ud.js";import{p as q}from"../chunks/CW0zSL4D.js";function V(e,t,r){var n;N&&(n=at,W());var o=new Ot(e);X(()=>{var i=t()??null;if(N){var a=$(n),s=a===rt,_=i!==null;if(s!==_){var P=tt();et(P),o.anchor=P,B(!1),o.ensure(i,i&&(y=>r(y,i))),B(!0);return}}o.ensure(i,i&&(y=>r(y,i)))},Z)}function Tt(e){return class extends xt{constructor(t){super({component:e,...t})}}}var f,d;class xt{constructor(t){p(this,f);p(this,d);var i;var r=new Map,n=(a,s)=>{var _=it(s,!1,!1);return r.set(a,_),_};const o=new Proxy({...t.props||{},$$events:{}},{get(a,s){return l(r.get(s)??n(s,Reflect.get(a,s)))},has(a,s){return s===st?!0:(l(r.get(s)??n(s,Reflect.get(a,s))),Reflect.has(a,s))},set(a,s,_){return A(r.get(s)??n(s,_),_),Reflect.set(a,s,_)}});I(this,d,(t.hydrate?yt:Et)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((i=t==null?void 0:t.props)!=null&&i.$$host)||t.sync===!1)&&nt(),I(this,f,o.$$events);for(const a of Object.keys(c(this,d)))a==="$set"||a==="$destroy"||a==="$on"||ot(this,a,{get(){return c(this,d)[a]},set(s){c(this,d)[a]=s},enumerable:!0});c(this,d).$set=a=>{Object.assign(o,a)},c(this,d).$destroy=()=>{bt(c(this,d))}}$set(t){c(this,d).$set(t)}$on(t,r){c(this,f)[t]=c(this,f)[t]||[];const n=(...o)=>r.call(this,...o);return c(this,f)[t].push(n),()=>{c(this,f)[t]=c(this,f)[t].filter(o=>o!==n)}}$destroy(){c(this,d).$destroy()}}f=new WeakMap,d=new WeakMap;const St={};var At=F('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),pt=F("<!> <!>",1);function It(e,t){ct(t,!0);let r=q(t,"components",23,()=>[]),n=q(t,"data_0",3,null),o=q(t,"data_1",3,null);ut(()=>t.stores.page.set(t.page)),dt(()=>{t.stores,t.page,t.constructors,r(),t.form,n(),o(),t.stores.page.notify()});let i=j(!1),a=j(!1),s=j(null);mt(()=>{const u=t.stores.page.subscribe(()=>{l(i)&&(A(a,!0),_t().then(()=>{A(s,document.title||"untitled page",!0)}))});return A(i,!0),u});const _=k(()=>t.constructors[1]);var P=pt(),y=x(P);{var G=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(m,jt)=>{var C=w(),K=x(C);V(K,()=>l(_),(Q,U)=>{L(U(Q,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),T=>r()[1]=T,()=>{var T;return(T=r())==null?void 0:T[1]})}),R(m,C)},$$slots:{default:!0}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)},H=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)};D(y,u=>{t.constructors[1]?u(G):u(H,-1)})}var z=lt(y,2);{var J=u=>{var h=At(),v=ht(h);{var O=g=>{var E=Rt();gt(()=>Pt(E,l(s))),R(g,E)};D(v,g=>{l(a)&&g(O)})}vt(h),R(u,h)};D(z,u=>{l(i)&&u(J)})}R(e,P),ft()}const Mt=Tt(It),Nt=[()=>b(()=>import("../nodes/0.WjwQ9Jo9.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url),()=>b(()=>import("../nodes/1.DFlTxVC8.js"),__vite__mapDeps([13,1,2,6,7]),import.meta.url),()=>b(()=>import("../nodes/2.jyZRUUOQ.js"),__vite__mapDeps([14,1,2,11,15,8,9,5,10,16,7,17,18,19]),import.meta.url),()=>b(()=>import("../nodes/3.D-7M_E8S.js"),__vite__mapDeps([20,1,2,4,16,15,6,7,21,5,3,9,22,23]),import.meta.url),()=>b(()=>import("../nodes/4.ChLTC4vz.js"),__vite__mapDeps([24,1,2,4,6,7,21,16,5,3,9,22,25,17,18,26,11,27]),import.meta.url),()=>b(()=>import("../nodes/5.CuscLKzC.js"),__vite__mapDeps([28,1,2,21,4,16,5,3,9,22,25,17,18,26]),import.meta.url)],Bt=[],Ft={"/":[2],"/print/[queryId]":[3],"/q/sample":[5],"/q/[queryId]":[4]},Y={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},Lt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.decode])),Yt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.encode])),Gt=!1,Ht=(e,t)=>Lt[e](t);export{Ht as decode,Lt as decoders,Ft as dictionary,Yt as encoders,Gt as hash,Y as hooks,St as matchers,Nt as nodes,Mt as root,Bt as server_loads};
web/sveltekit/build/_app/immutable/entry/app.CUih6yVd.js DELETED
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.BxBHE18q.js","../chunks/CWw6qgC_.js","../chunks/BTUA7_xE.js","../chunks/DxQlA7U2.js","../chunks/Bd-v_9Ud.js","../chunks/CW0zSL4D.js","../chunks/Bi6ZzEYr.js","../chunks/Drrr58vi.js","../chunks/DCD6_LXk.js","../chunks/B0XoTt7U.js","../assets/RipMark.ClxF_PAC.css","../chunks/DixtWtwq.js","../assets/0.DiQNUxm-.css","../nodes/1.CACU6xpH.js","../nodes/2.r9Hskt8G.js","../chunks/cDW0xQNP.js","../chunks/25_y8TFd.js","../chunks/CXQd8Y6F.js","../chunks/CAMdvC-O.js","../assets/2.BD53GLFY.css","../nodes/3.8oxxQc2N.js","../chunks/BatqQaKj.js","../assets/Briefing.Dmn9LgiV.css","../assets/3.BZfqQRM0.css","../nodes/4.DimYym0_.js","../chunks/WSwxEsIs.js","../assets/stoneRegistry.bHiraU77.css","../assets/4.C9CQZyPb.css","../nodes/5.CAO5QWZA.js"])))=>i.map(i=>d[i]);
2
- var S=e=>{throw TypeError(e)};var M=(e,t,r)=>t.has(e)||S("Cannot "+r);var c=(e,t,r)=>(M(e,t,"read from private field"),r?r.call(e):t.get(e)),p=(e,t,r)=>t.has(e)?S("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),I=(e,t,r,n)=>(M(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);import{b as L,_ as b}from"../chunks/CXQd8Y6F.js";import{h as N,n as W,d as X,a3 as Z,q as $,v as tt,i as et,e as B,an as rt,j as at,a5 as A,ah as st,o as l,ao as nt,ap as ot,L as it,p as ct,aq as ut,am as dt,ai as mt,ar as _t,f as x,s as lt,a as ft,a4 as j,c as ht,r as vt,t as gt,al as k}from"../chunks/BTUA7_xE.js";import{h as yt,m as Et,u as bt,a as R,c as w,f as F,t as Rt,s as Pt}from"../chunks/CWw6qgC_.js";import{B as Ot,i as D}from"../chunks/Bd-v_9Ud.js";import{p as q}from"../chunks/CW0zSL4D.js";function V(e,t,r){var n;N&&(n=at,W());var o=new Ot(e);X(()=>{var i=t()??null;if(N){var a=$(n),s=a===rt,_=i!==null;if(s!==_){var P=tt();et(P),o.anchor=P,B(!1),o.ensure(i,i&&(y=>r(y,i))),B(!0);return}}o.ensure(i,i&&(y=>r(y,i)))},Z)}function Tt(e){return class extends xt{constructor(t){super({component:e,...t})}}}var f,d;class xt{constructor(t){p(this,f);p(this,d);var i;var r=new Map,n=(a,s)=>{var _=it(s,!1,!1);return r.set(a,_),_};const o=new Proxy({...t.props||{},$$events:{}},{get(a,s){return l(r.get(s)??n(s,Reflect.get(a,s)))},has(a,s){return s===st?!0:(l(r.get(s)??n(s,Reflect.get(a,s))),Reflect.has(a,s))},set(a,s,_){return A(r.get(s)??n(s,_),_),Reflect.set(a,s,_)}});I(this,d,(t.hydrate?yt:Et)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((i=t==null?void 0:t.props)!=null&&i.$$host)||t.sync===!1)&&nt(),I(this,f,o.$$events);for(const a of Object.keys(c(this,d)))a==="$set"||a==="$destroy"||a==="$on"||ot(this,a,{get(){return c(this,d)[a]},set(s){c(this,d)[a]=s},enumerable:!0});c(this,d).$set=a=>{Object.assign(o,a)},c(this,d).$destroy=()=>{bt(c(this,d))}}$set(t){c(this,d).$set(t)}$on(t,r){c(this,f)[t]=c(this,f)[t]||[];const n=(...o)=>r.call(this,...o);return c(this,f)[t].push(n),()=>{c(this,f)[t]=c(this,f)[t].filter(o=>o!==n)}}$destroy(){c(this,d).$destroy()}}f=new WeakMap,d=new WeakMap;const St={};var At=F('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),pt=F("<!> <!>",1);function It(e,t){ct(t,!0);let r=q(t,"components",23,()=>[]),n=q(t,"data_0",3,null),o=q(t,"data_1",3,null);ut(()=>t.stores.page.set(t.page)),dt(()=>{t.stores,t.page,t.constructors,r(),t.form,n(),o(),t.stores.page.notify()});let i=j(!1),a=j(!1),s=j(null);mt(()=>{const u=t.stores.page.subscribe(()=>{l(i)&&(A(a,!0),_t().then(()=>{A(s,document.title||"untitled page",!0)}))});return A(i,!0),u});const _=k(()=>t.constructors[1]);var P=pt(),y=x(P);{var G=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(m,jt)=>{var C=w(),K=x(C);V(K,()=>l(_),(Q,U)=>{L(U(Q,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),T=>r()[1]=T,()=>{var T;return(T=r())==null?void 0:T[1]})}),R(m,C)},$$slots:{default:!0}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)},H=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)};D(y,u=>{t.constructors[1]?u(G):u(H,-1)})}var z=lt(y,2);{var J=u=>{var h=At(),v=ht(h);{var O=g=>{var E=Rt();gt(()=>Pt(E,l(s))),R(g,E)};D(v,g=>{l(a)&&g(O)})}vt(h),R(u,h)};D(z,u=>{l(i)&&u(J)})}R(e,P),ft()}const Mt=Tt(It),Nt=[()=>b(()=>import("../nodes/0.BxBHE18q.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url),()=>b(()=>import("../nodes/1.CACU6xpH.js"),__vite__mapDeps([13,1,2,6,7]),import.meta.url),()=>b(()=>import("../nodes/2.r9Hskt8G.js"),__vite__mapDeps([14,1,2,11,15,8,9,5,10,16,7,17,18,19]),import.meta.url),()=>b(()=>import("../nodes/3.8oxxQc2N.js"),__vite__mapDeps([20,1,2,4,16,15,6,7,21,5,3,9,22,23]),import.meta.url),()=>b(()=>import("../nodes/4.DimYym0_.js"),__vite__mapDeps([24,1,2,4,6,7,21,16,5,3,9,22,25,17,18,26,11,27]),import.meta.url),()=>b(()=>import("../nodes/5.CAO5QWZA.js"),__vite__mapDeps([28,1,2,21,4,16,5,3,9,22,25,17,18,26]),import.meta.url)],Bt=[],Ft={"/":[2],"/print/[queryId]":[3],"/q/sample":[5],"/q/[queryId]":[4]},Y={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},Lt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.decode])),Yt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.encode])),Gt=!1,Ht=(e,t)=>Lt[e](t);export{Ht as decode,Lt as decoders,Ft as dictionary,Yt as encoders,Gt as hash,Y as hooks,St as matchers,Nt as nodes,Mt as root,Bt as server_loads};
 
 
 
web/sveltekit/build/_app/immutable/entry/app.C_JcOYY7.js DELETED
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.CRsWI93d.js","../chunks/CWw6qgC_.js","../chunks/BTUA7_xE.js","../chunks/DxQlA7U2.js","../chunks/Bd-v_9Ud.js","../chunks/CW0zSL4D.js","../chunks/B5Keu-3_.js","../chunks/sQImrWTX.js","../chunks/DCD6_LXk.js","../chunks/B0XoTt7U.js","../assets/RipMark.ClxF_PAC.css","../chunks/DixtWtwq.js","../assets/0.DiQNUxm-.css","../nodes/1.Ci2_HRpo.js","../nodes/2.C5KRyfXe.js","../chunks/cDW0xQNP.js","../chunks/25_y8TFd.js","../chunks/CXQd8Y6F.js","../chunks/D907np-5.js","../assets/2.BD53GLFY.css","../nodes/3.DlUo7y5-.js","../chunks/BatqQaKj.js","../assets/Briefing.Dmn9LgiV.css","../assets/3.BZfqQRM0.css","../nodes/4.g6dgS5cL.js","../chunks/BZuv-XBZ.js","../assets/stoneRegistry.bHiraU77.css","../assets/4.D4-aMRnd.css","../nodes/5.BFrkSt3u.js"])))=>i.map(i=>d[i]);
2
- var S=e=>{throw TypeError(e)};var M=(e,t,r)=>t.has(e)||S("Cannot "+r);var c=(e,t,r)=>(M(e,t,"read from private field"),r?r.call(e):t.get(e)),p=(e,t,r)=>t.has(e)?S("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),I=(e,t,r,n)=>(M(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);import{b as L,_ as b}from"../chunks/CXQd8Y6F.js";import{h as N,n as W,d as X,a3 as Z,q as $,v as tt,i as et,e as B,an as rt,j as at,a5 as A,ah as st,o as l,ao as nt,ap as ot,L as it,p as ct,aq as ut,am as dt,ai as mt,ar as _t,f as x,s as lt,a as ft,a4 as j,c as ht,r as vt,t as gt,al as k}from"../chunks/BTUA7_xE.js";import{h as yt,m as Et,u as bt,a as R,c as w,f as F,t as Rt,s as Pt}from"../chunks/CWw6qgC_.js";import{B as Ot,i as D}from"../chunks/Bd-v_9Ud.js";import{p as q}from"../chunks/CW0zSL4D.js";function V(e,t,r){var n;N&&(n=at,W());var o=new Ot(e);X(()=>{var i=t()??null;if(N){var a=$(n),s=a===rt,_=i!==null;if(s!==_){var P=tt();et(P),o.anchor=P,B(!1),o.ensure(i,i&&(y=>r(y,i))),B(!0);return}}o.ensure(i,i&&(y=>r(y,i)))},Z)}function Tt(e){return class extends xt{constructor(t){super({component:e,...t})}}}var f,d;class xt{constructor(t){p(this,f);p(this,d);var i;var r=new Map,n=(a,s)=>{var _=it(s,!1,!1);return r.set(a,_),_};const o=new Proxy({...t.props||{},$$events:{}},{get(a,s){return l(r.get(s)??n(s,Reflect.get(a,s)))},has(a,s){return s===st?!0:(l(r.get(s)??n(s,Reflect.get(a,s))),Reflect.has(a,s))},set(a,s,_){return A(r.get(s)??n(s,_),_),Reflect.set(a,s,_)}});I(this,d,(t.hydrate?yt:Et)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((i=t==null?void 0:t.props)!=null&&i.$$host)||t.sync===!1)&&nt(),I(this,f,o.$$events);for(const a of Object.keys(c(this,d)))a==="$set"||a==="$destroy"||a==="$on"||ot(this,a,{get(){return c(this,d)[a]},set(s){c(this,d)[a]=s},enumerable:!0});c(this,d).$set=a=>{Object.assign(o,a)},c(this,d).$destroy=()=>{bt(c(this,d))}}$set(t){c(this,d).$set(t)}$on(t,r){c(this,f)[t]=c(this,f)[t]||[];const n=(...o)=>r.call(this,...o);return c(this,f)[t].push(n),()=>{c(this,f)[t]=c(this,f)[t].filter(o=>o!==n)}}$destroy(){c(this,d).$destroy()}}f=new WeakMap,d=new WeakMap;const St={};var At=F('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),pt=F("<!> <!>",1);function It(e,t){ct(t,!0);let r=q(t,"components",23,()=>[]),n=q(t,"data_0",3,null),o=q(t,"data_1",3,null);ut(()=>t.stores.page.set(t.page)),dt(()=>{t.stores,t.page,t.constructors,r(),t.form,n(),o(),t.stores.page.notify()});let i=j(!1),a=j(!1),s=j(null);mt(()=>{const u=t.stores.page.subscribe(()=>{l(i)&&(A(a,!0),_t().then(()=>{A(s,document.title||"untitled page",!0)}))});return A(i,!0),u});const _=k(()=>t.constructors[1]);var P=pt(),y=x(P);{var G=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(m,jt)=>{var C=w(),K=x(C);V(K,()=>l(_),(Q,U)=>{L(U(Q,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),T=>r()[1]=T,()=>{var T;return(T=r())==null?void 0:T[1]})}),R(m,C)},$$slots:{default:!0}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)},H=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)};D(y,u=>{t.constructors[1]?u(G):u(H,-1)})}var z=lt(y,2);{var J=u=>{var h=At(),v=ht(h);{var O=g=>{var E=Rt();gt(()=>Pt(E,l(s))),R(g,E)};D(v,g=>{l(a)&&g(O)})}vt(h),R(u,h)};D(z,u=>{l(i)&&u(J)})}R(e,P),ft()}const Mt=Tt(It),Nt=[()=>b(()=>import("../nodes/0.CRsWI93d.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url),()=>b(()=>import("../nodes/1.Ci2_HRpo.js"),__vite__mapDeps([13,1,2,6,7]),import.meta.url),()=>b(()=>import("../nodes/2.C5KRyfXe.js"),__vite__mapDeps([14,1,2,11,15,8,9,5,10,16,7,17,18,19]),import.meta.url),()=>b(()=>import("../nodes/3.DlUo7y5-.js"),__vite__mapDeps([20,1,2,4,16,15,6,7,21,5,3,9,22,23]),import.meta.url),()=>b(()=>import("../nodes/4.g6dgS5cL.js"),__vite__mapDeps([24,1,2,4,6,7,21,16,5,3,9,22,25,17,18,26,11,27]),import.meta.url),()=>b(()=>import("../nodes/5.BFrkSt3u.js"),__vite__mapDeps([28,1,2,21,4,16,5,3,9,22,25,17,18,26]),import.meta.url)],Bt=[],Ft={"/":[2],"/print/[queryId]":[3],"/q/sample":[5],"/q/[queryId]":[4]},Y={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},Lt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.decode])),Yt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.encode])),Gt=!1,Ht=(e,t)=>Lt[e](t);export{Ht as decode,Lt as decoders,Ft as dictionary,Yt as encoders,Gt as hash,Y as hooks,St as matchers,Nt as nodes,Mt as root,Bt as server_loads};
 
 
 
web/sveltekit/build/_app/immutable/entry/app.DtHxgVfE.js DELETED
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.LAFF30Kg.js","../chunks/CWw6qgC_.js","../chunks/BTUA7_xE.js","../chunks/DxQlA7U2.js","../chunks/Bd-v_9Ud.js","../chunks/CW0zSL4D.js","../chunks/BbRPgcjS.js","../chunks/BgqmyNr8.js","../chunks/DCD6_LXk.js","../chunks/B0XoTt7U.js","../assets/RipMark.ClxF_PAC.css","../chunks/DixtWtwq.js","../assets/0.DiQNUxm-.css","../nodes/1.MkU5tCTk.js","../nodes/2.vc91Ib0z.js","../chunks/cDW0xQNP.js","../chunks/25_y8TFd.js","../chunks/CXQd8Y6F.js","../chunks/D907np-5.js","../assets/2.BD53GLFY.css","../nodes/3.B7oy3YuI.js","../chunks/BatqQaKj.js","../assets/Briefing.Dmn9LgiV.css","../assets/3.BZfqQRM0.css","../nodes/4.B_VNCC6U.js","../chunks/BZuv-XBZ.js","../assets/stoneRegistry.bHiraU77.css","../assets/4.C9CQZyPb.css","../nodes/5.BFrkSt3u.js"])))=>i.map(i=>d[i]);
2
- var S=e=>{throw TypeError(e)};var M=(e,t,r)=>t.has(e)||S("Cannot "+r);var c=(e,t,r)=>(M(e,t,"read from private field"),r?r.call(e):t.get(e)),p=(e,t,r)=>t.has(e)?S("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),I=(e,t,r,n)=>(M(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);import{b as L,_ as b}from"../chunks/CXQd8Y6F.js";import{h as N,n as W,d as X,a3 as Z,q as $,v as tt,i as et,e as B,an as rt,j as at,a5 as A,ah as st,o as l,ao as nt,ap as ot,L as it,p as ct,aq as ut,am as dt,ai as mt,ar as _t,f as x,s as lt,a as ft,a4 as j,c as ht,r as vt,t as gt,al as k}from"../chunks/BTUA7_xE.js";import{h as yt,m as Et,u as bt,a as R,c as w,f as F,t as Rt,s as Pt}from"../chunks/CWw6qgC_.js";import{B as Ot,i as D}from"../chunks/Bd-v_9Ud.js";import{p as q}from"../chunks/CW0zSL4D.js";function V(e,t,r){var n;N&&(n=at,W());var o=new Ot(e);X(()=>{var i=t()??null;if(N){var a=$(n),s=a===rt,_=i!==null;if(s!==_){var P=tt();et(P),o.anchor=P,B(!1),o.ensure(i,i&&(y=>r(y,i))),B(!0);return}}o.ensure(i,i&&(y=>r(y,i)))},Z)}function Tt(e){return class extends xt{constructor(t){super({component:e,...t})}}}var f,d;class xt{constructor(t){p(this,f);p(this,d);var i;var r=new Map,n=(a,s)=>{var _=it(s,!1,!1);return r.set(a,_),_};const o=new Proxy({...t.props||{},$$events:{}},{get(a,s){return l(r.get(s)??n(s,Reflect.get(a,s)))},has(a,s){return s===st?!0:(l(r.get(s)??n(s,Reflect.get(a,s))),Reflect.has(a,s))},set(a,s,_){return A(r.get(s)??n(s,_),_),Reflect.set(a,s,_)}});I(this,d,(t.hydrate?yt:Et)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((i=t==null?void 0:t.props)!=null&&i.$$host)||t.sync===!1)&&nt(),I(this,f,o.$$events);for(const a of Object.keys(c(this,d)))a==="$set"||a==="$destroy"||a==="$on"||ot(this,a,{get(){return c(this,d)[a]},set(s){c(this,d)[a]=s},enumerable:!0});c(this,d).$set=a=>{Object.assign(o,a)},c(this,d).$destroy=()=>{bt(c(this,d))}}$set(t){c(this,d).$set(t)}$on(t,r){c(this,f)[t]=c(this,f)[t]||[];const n=(...o)=>r.call(this,...o);return c(this,f)[t].push(n),()=>{c(this,f)[t]=c(this,f)[t].filter(o=>o!==n)}}$destroy(){c(this,d).$destroy()}}f=new WeakMap,d=new WeakMap;const St={};var At=F('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),pt=F("<!> <!>",1);function It(e,t){ct(t,!0);let r=q(t,"components",23,()=>[]),n=q(t,"data_0",3,null),o=q(t,"data_1",3,null);ut(()=>t.stores.page.set(t.page)),dt(()=>{t.stores,t.page,t.constructors,r(),t.form,n(),o(),t.stores.page.notify()});let i=j(!1),a=j(!1),s=j(null);mt(()=>{const u=t.stores.page.subscribe(()=>{l(i)&&(A(a,!0),_t().then(()=>{A(s,document.title||"untitled page",!0)}))});return A(i,!0),u});const _=k(()=>t.constructors[1]);var P=pt(),y=x(P);{var G=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(m,jt)=>{var C=w(),K=x(C);V(K,()=>l(_),(Q,U)=>{L(U(Q,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),T=>r()[1]=T,()=>{var T;return(T=r())==null?void 0:T[1]})}),R(m,C)},$$slots:{default:!0}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)},H=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)};D(y,u=>{t.constructors[1]?u(G):u(H,-1)})}var z=lt(y,2);{var J=u=>{var h=At(),v=ht(h);{var O=g=>{var E=Rt();gt(()=>Pt(E,l(s))),R(g,E)};D(v,g=>{l(a)&&g(O)})}vt(h),R(u,h)};D(z,u=>{l(i)&&u(J)})}R(e,P),ft()}const Mt=Tt(It),Nt=[()=>b(()=>import("../nodes/0.LAFF30Kg.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url),()=>b(()=>import("../nodes/1.MkU5tCTk.js"),__vite__mapDeps([13,1,2,6,7]),import.meta.url),()=>b(()=>import("../nodes/2.vc91Ib0z.js"),__vite__mapDeps([14,1,2,11,15,8,9,5,10,16,7,17,18,19]),import.meta.url),()=>b(()=>import("../nodes/3.B7oy3YuI.js"),__vite__mapDeps([20,1,2,4,16,15,6,7,21,5,3,9,22,23]),import.meta.url),()=>b(()=>import("../nodes/4.B_VNCC6U.js"),__vite__mapDeps([24,1,2,4,6,7,21,16,5,3,9,22,25,17,18,26,11,27]),import.meta.url),()=>b(()=>import("../nodes/5.BFrkSt3u.js"),__vite__mapDeps([28,1,2,21,4,16,5,3,9,22,25,17,18,26]),import.meta.url)],Bt=[],Ft={"/":[2],"/print/[queryId]":[3],"/q/sample":[5],"/q/[queryId]":[4]},Y={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},Lt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.decode])),Yt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.encode])),Gt=!1,Ht=(e,t)=>Lt[e](t);export{Ht as decode,Lt as decoders,Ft as dictionary,Yt as encoders,Gt as hash,Y as hooks,St as matchers,Nt as nodes,Mt as root,Bt as server_loads};
 
 
 
web/sveltekit/build/_app/immutable/entry/app.KWIsKmKE.js DELETED
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.CazXc5O3.js","../chunks/CWw6qgC_.js","../chunks/BTUA7_xE.js","../chunks/DxQlA7U2.js","../chunks/Bd-v_9Ud.js","../chunks/CW0zSL4D.js","../chunks/CR2ah4JU.js","../chunks/BS22DDzI.js","../chunks/DCD6_LXk.js","../chunks/B0XoTt7U.js","../assets/RipMark.ClxF_PAC.css","../chunks/DixtWtwq.js","../assets/0.DiQNUxm-.css","../nodes/1.DAYBHRm_.js","../nodes/2.BWdMPQ08.js","../chunks/cDW0xQNP.js","../chunks/25_y8TFd.js","../chunks/CXQd8Y6F.js","../chunks/CAMdvC-O.js","../assets/2.BD53GLFY.css","../nodes/3.CCCKMFSZ.js","../chunks/BatqQaKj.js","../assets/Briefing.Dmn9LgiV.css","../assets/3.BZfqQRM0.css","../nodes/4.EWSC3JuC.js","../chunks/CC8czMej.js","../assets/stoneRegistry.bHiraU77.css","../assets/4.C9CQZyPb.css","../nodes/5.Dg_H9faC.js"])))=>i.map(i=>d[i]);
2
- var S=e=>{throw TypeError(e)};var M=(e,t,r)=>t.has(e)||S("Cannot "+r);var c=(e,t,r)=>(M(e,t,"read from private field"),r?r.call(e):t.get(e)),p=(e,t,r)=>t.has(e)?S("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),I=(e,t,r,n)=>(M(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);import{b as L,_ as b}from"../chunks/CXQd8Y6F.js";import{h as N,n as W,d as X,a3 as Z,q as $,v as tt,i as et,e as B,an as rt,j as at,a5 as A,ah as st,o as l,ao as nt,ap as ot,L as it,p as ct,aq as ut,am as dt,ai as mt,ar as _t,f as x,s as lt,a as ft,a4 as j,c as ht,r as vt,t as gt,al as k}from"../chunks/BTUA7_xE.js";import{h as yt,m as Et,u as bt,a as R,c as w,f as F,t as Rt,s as Pt}from"../chunks/CWw6qgC_.js";import{B as Ot,i as D}from"../chunks/Bd-v_9Ud.js";import{p as q}from"../chunks/CW0zSL4D.js";function V(e,t,r){var n;N&&(n=at,W());var o=new Ot(e);X(()=>{var i=t()??null;if(N){var a=$(n),s=a===rt,_=i!==null;if(s!==_){var P=tt();et(P),o.anchor=P,B(!1),o.ensure(i,i&&(y=>r(y,i))),B(!0);return}}o.ensure(i,i&&(y=>r(y,i)))},Z)}function Tt(e){return class extends xt{constructor(t){super({component:e,...t})}}}var f,d;class xt{constructor(t){p(this,f);p(this,d);var i;var r=new Map,n=(a,s)=>{var _=it(s,!1,!1);return r.set(a,_),_};const o=new Proxy({...t.props||{},$$events:{}},{get(a,s){return l(r.get(s)??n(s,Reflect.get(a,s)))},has(a,s){return s===st?!0:(l(r.get(s)??n(s,Reflect.get(a,s))),Reflect.has(a,s))},set(a,s,_){return A(r.get(s)??n(s,_),_),Reflect.set(a,s,_)}});I(this,d,(t.hydrate?yt:Et)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((i=t==null?void 0:t.props)!=null&&i.$$host)||t.sync===!1)&&nt(),I(this,f,o.$$events);for(const a of Object.keys(c(this,d)))a==="$set"||a==="$destroy"||a==="$on"||ot(this,a,{get(){return c(this,d)[a]},set(s){c(this,d)[a]=s},enumerable:!0});c(this,d).$set=a=>{Object.assign(o,a)},c(this,d).$destroy=()=>{bt(c(this,d))}}$set(t){c(this,d).$set(t)}$on(t,r){c(this,f)[t]=c(this,f)[t]||[];const n=(...o)=>r.call(this,...o);return c(this,f)[t].push(n),()=>{c(this,f)[t]=c(this,f)[t].filter(o=>o!==n)}}$destroy(){c(this,d).$destroy()}}f=new WeakMap,d=new WeakMap;const St={};var At=F('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),pt=F("<!> <!>",1);function It(e,t){ct(t,!0);let r=q(t,"components",23,()=>[]),n=q(t,"data_0",3,null),o=q(t,"data_1",3,null);ut(()=>t.stores.page.set(t.page)),dt(()=>{t.stores,t.page,t.constructors,r(),t.form,n(),o(),t.stores.page.notify()});let i=j(!1),a=j(!1),s=j(null);mt(()=>{const u=t.stores.page.subscribe(()=>{l(i)&&(A(a,!0),_t().then(()=>{A(s,document.title||"untitled page",!0)}))});return A(i,!0),u});const _=k(()=>t.constructors[1]);var P=pt(),y=x(P);{var G=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(m,jt)=>{var C=w(),K=x(C);V(K,()=>l(_),(Q,U)=>{L(U(Q,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),T=>r()[1]=T,()=>{var T;return(T=r())==null?void 0:T[1]})}),R(m,C)},$$slots:{default:!0}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)},H=u=>{const h=k(()=>t.constructors[0]);var v=w(),O=x(v);V(O,()=>l(h),(g,E)=>{L(E(g,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),m=>r()[0]=m,()=>{var m;return(m=r())==null?void 0:m[0]})}),R(u,v)};D(y,u=>{t.constructors[1]?u(G):u(H,-1)})}var z=lt(y,2);{var J=u=>{var h=At(),v=ht(h);{var O=g=>{var E=Rt();gt(()=>Pt(E,l(s))),R(g,E)};D(v,g=>{l(a)&&g(O)})}vt(h),R(u,h)};D(z,u=>{l(i)&&u(J)})}R(e,P),ft()}const Mt=Tt(It),Nt=[()=>b(()=>import("../nodes/0.CazXc5O3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url),()=>b(()=>import("../nodes/1.DAYBHRm_.js"),__vite__mapDeps([13,1,2,6,7]),import.meta.url),()=>b(()=>import("../nodes/2.BWdMPQ08.js"),__vite__mapDeps([14,1,2,11,15,8,9,5,10,16,7,17,18,19]),import.meta.url),()=>b(()=>import("../nodes/3.CCCKMFSZ.js"),__vite__mapDeps([20,1,2,4,16,15,6,7,21,5,3,9,22,23]),import.meta.url),()=>b(()=>import("../nodes/4.EWSC3JuC.js"),__vite__mapDeps([24,1,2,4,6,7,21,16,5,3,9,22,25,17,18,26,11,27]),import.meta.url),()=>b(()=>import("../nodes/5.Dg_H9faC.js"),__vite__mapDeps([28,1,2,21,4,16,5,3,9,22,25,17,18,26]),import.meta.url)],Bt=[],Ft={"/":[2],"/print/[queryId]":[3],"/q/sample":[5],"/q/[queryId]":[4]},Y={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},Lt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.decode])),Yt=Object.fromEntries(Object.entries(Y.transport).map(([e,t])=>[e,t.encode])),Gt=!1,Ht=(e,t)=>Lt[e](t);export{Ht as decode,Lt as decoders,Ft as dictionary,Yt as encoders,Gt as hash,Y as hooks,St as matchers,Nt as nodes,Mt as root,Bt as server_loads};
 
 
 
web/sveltekit/build/_app/immutable/entry/start.BkS8JQ5_.js DELETED
@@ -1 +0,0 @@
1
- import{l as o,a as r}from"../chunks/BgqmyNr8.js";export{o as load_css,r as start};
 
 
web/sveltekit/build/_app/immutable/entry/start.Bs_Nr3wJ.js DELETED
@@ -1 +0,0 @@
1
- import{l as o,a as r}from"../chunks/BS22DDzI.js";export{o as load_css,r as start};
 
 
web/sveltekit/build/_app/immutable/entry/start.CNQZC3fg.js DELETED
@@ -1 +0,0 @@
1
- import{l as o,a as r}from"../chunks/sQImrWTX.js";export{o as load_css,r as start};
 
 
web/sveltekit/build/_app/immutable/entry/start.CUNz9P5k.js DELETED
@@ -1 +0,0 @@
1
- import{l as o,a as r}from"../chunks/Drrr58vi.js";export{o as load_css,r as start};
 
 
web/sveltekit/build/_app/immutable/entry/start.D9d5J30B.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import{l as o,a as r}from"../chunks/BRRh3tKo.js";export{o as load_css,r as start};
web/sveltekit/build/_app/immutable/entry/start.DcdyosVQ.js DELETED
@@ -1 +0,0 @@
1
- import{l as o,a as r}from"../chunks/33K0dtcD.js";export{o as load_css,r as start};
 
 
web/sveltekit/build/_app/immutable/nodes/0.CRsWI93d.js DELETED
@@ -1,2 +0,0 @@
1
- import{c as E,a as u,s as M,f as v,d as z,e as H}from"../chunks/CWw6qgC_.js";import{p as O,f as R,o as p,a as $,al as f,s as t,c as o,r as i,t as P,aR as L}from"../chunks/BTUA7_xE.js";import{b as r,s as W}from"../chunks/DxQlA7U2.js";import{i as x}from"../chunks/Bd-v_9Ud.js";import{p as B}from"../chunks/CW0zSL4D.js";import{p as D}from"../chunks/B5Keu-3_.js";import{R as U}from"../chunks/DCD6_LXk.js";import{s as G}from"../chunks/B0XoTt7U.js";import"../chunks/DixtWtwq.js";const V=!0,J=!0,K="never",xe=Object.freeze(Object.defineProperty({__proto__:null,prerender:V,ssr:J,trailingSlash:K},Symbol.toStringTag,{value:"Module"}));var Q=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-step svelte-1bjixce"> </span>',1),X=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-progress svelte-1bjixce"> </span>',1),Z=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-err svelte-1bjixce"> </span>',1),ee=v('<span class="status svelte-1bjixce" aria-live="polite" aria-atomic="true"><span class="status-dot svelte-1bjixce" aria-hidden="true"></span> <span class="status-phase svelte-1bjixce"> </span> <!> <!> <!></span>');function ae(h,l){O(l,!0);const N={geocode:"geocoding",nta_resolve:"resolving NTA",sandy_inundation:"Sandy 2012",dep_stormwater:"DEP scenarios",floodnet:"FloodNet sensors",nyc311:"NYC 311 history",noaa_tides:"NOAA tides",nws_alerts:"NWS alerts",nws_obs:"NWS hourly obs",ttm_forecast:"TTM r2 surge (zero-shot)",ttm_311_forecast:"TTM r2 weekly 311",ttm_battery_surge:"TTM Battery (NYC fine-tune)",floodnet_forecast:"FloodNet recurrence forecast",ida_hwm_2021:"Ida 2021 HWMs",prithvi_eo_v2:"Ida 2021 polygons (baked lookup)",prithvi_eo_live:"Prithvi-NYC-Pluvial v2 segmentation",microtopo_lidar:"LiDAR microtopo",mta_entrance_exposure:"MTA entrances",nycha_development_exposure:"NYCHA developments",doe_school_exposure:"DOE schools",doh_hospital_exposure:"NYS DOH hospitals",terramind_synthesis:"TerraMind v1 synthesis",terramind_lulc:"TerraMind LULC",terramind_buildings:"TerraMind Buildings",eo_chip_fetch:"fetching S2/S1/DEM chip",rag_granite_embedding:"RAG retrieval",gliner_extract:"GLiNER typed extraction"};let T=f(()=>r.phase!=="idle"&&r.phase!=="done"),k=f(()=>{switch(r.phase){case"planning":return"planning intent";case"specialists":return"gathering evidence";case"reconciling":return"reconciling";case"streaming":return r.attempt>1?`writing (reroll ${r.attempt-1})`:"writing briefing";case"error":return"error";default:return""}}),g=f(()=>{const a=r.activeStep;return a?N[a]??a:null}),m=f(()=>{if(r.phase!=="specialists"&&r.phase!=="reconciling")return null;const a=r.firedCount,d=r.totalSpecialists;return d?`${a}/${d}`:a>0?`${a}`:null}),w=f(()=>r.phase==="error"?"err":"live");var A=E(),_=R(A);{var j=a=>{var d=ee(),e=t(o(d),2),C=o(e,!0);i(e);var S=t(e,2);{var s=n=>{var b=Q(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(g))),u(n,b)};x(S,n=>{p(g)&&n(s)})}var c=t(S,2);{var F=n=>{var b=X(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(m))),u(n,b)};x(c,n=>{p(m)&&n(F)})}var Y=t(c,2);{var I=n=>{var b=Z(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,r.errorMessage)),u(n,b)};x(Y,n=>{r.phase==="error"&&r.errorMessage&&n(I)})}i(d),P(()=>{G(d,"data-kind",p(w)),M(C,p(k))}),u(a,d)};x(_,a=>{p(T)&&a(j)})}u(h,A),$()}var re=v('<button type="button" class="app-header-query" aria-label="Edit query"><span class="app-header-query-icon" aria-hidden="true">⌕</span> <span class="app-header-query-text"> </span> <span class="app-header-query-edit">edit</span></button>'),te=v('<button type="button" class="app-header-link app-header-link-button svelte-f1belb" aria-label="Open curated PDF view of completed briefing in new tab">export PDF</button>'),se=v('<header class="app-header no-print" data-screen-label="App header"><div class="app-header-inner"><div class="app-header-left"><a href="/" class="riprap-wordmark" aria-label="Riprap — home"><!>riprap</a> <span class="app-header-sep">/</span> <span class="app-header-context">flood-exposure briefing</span></div> <div class="app-header-mid"><!></div> <div class="app-header-right"><a class="app-header-link" href="#methodology">methodology</a> <!> <!></div></div></header>');function ne(h,l){O(l,!0);let N=B(l,"query",3,null);function T(){if(typeof window>"u")return;const s=D.params.queryId??(D.url.pathname==="/q/sample"?"sample":"");s&&window.open(`/print/${encodeURIComponent(s)}`,"_blank","noopener")}var k=se(),g=o(k),m=o(g),w=o(m),A=o(w);U(A,{size:20}),L(),i(w),L(4),i(m);var _=t(m,2),j=o(_);{var a=s=>{var c=re(),F=t(o(c),2),Y=o(F,!0);i(F),L(2),i(c),P(()=>M(Y,N())),H("click",c,function(...I){var n;(n=l.onResetCold)==null||n.apply(this,I)}),u(s,c)};x(j,s=>{N()&&s(a)})}i(_);var d=t(_,2),e=t(o(d),2);{var C=s=>{var c=te();H("click",c,T),u(s,c)};x(e,s=>{r.ready&&s(C)})}var S=t(e,2);ae(S,{}),i(d),i(g),i(k),u(h,k),$()}z(["click"]);var oe=v(`<footer class="app-footer no-print"><div class="app-footer-inner"><p class="app-footer-guard"><strong>Riprap does not predict damage.</strong> This tool is for professional analytical work, not personal property decisions.
2
- For residents, see <a href="https://www.floodhelpny.org">FloodHelpNY</a> · <a href="https://www.floodnet.nyc">FloodNet NYC</a>.</p> <p class="app-footer-build">All foundation models Apache-2.0 · All data from public-record federal, state, and city sources · No commercial APIs contacted at runtime · Riprap v0.4.6 · build 2026-05-06</p> <p class="app-footer-credits">Dam mark: <a href="https://thenounproject.com/icon/dam-4516918/">"Dam" by Chintuza</a> via the Noun Project, CC-BY 3.0.</p></div></footer>`);function ie(h){var l=oe();u(h,l)}var pe=v('<a href="#region-briefing" class="skip-link">Skip to briefing</a> <a href="#region-map" class="skip-link" style="left: -9999px;">Skip to map</a> <a href="#region-trace" class="skip-link" style="left: -9999px;">Skip to trace</a>',1);function le(h){var l=pe();L(4),u(h,l)}var de=v("<!> <!>",1),ce=v('<!> <main class="svelte-12qhfyh"><!></main> <!>',1);function ke(h,l){O(l,!0);let N=f(()=>()=>{const e=D.params.queryId;if(!e)return null;try{return decodeURIComponent(e)}catch{return e}}),T=f(()=>D.url.pathname.startsWith("/print/")),k=f(()=>D.url.pathname==="/"),g=f(()=>p(T)||p(k));var m=ce(),w=R(m);{var A=e=>{var C=de(),S=R(C);le(S);var s=t(S,2);{let c=f(()=>p(N)());ne(s,{get query(){return p(c)},onResetCold:()=>window.location.href="/"})}u(e,C)};x(w,e=>{p(g)||e(A)})}var _=t(w,2),j=o(_);W(j,()=>l.children),i(_);var a=t(_,2);{var d=e=>{ie(e)};x(a,e=>{p(g)||e(d)})}u(h,m),$()}export{ke as component,xe as universal};
 
 
 
web/sveltekit/build/_app/immutable/nodes/0.CazXc5O3.js DELETED
@@ -1,2 +0,0 @@
1
- import{c as E,a as u,s as M,f as v,d as z,e as H}from"../chunks/CWw6qgC_.js";import{p as O,f as R,o as p,a as $,al as f,s as t,c as o,r as i,t as P,aR as L}from"../chunks/BTUA7_xE.js";import{b as r,s as W}from"../chunks/DxQlA7U2.js";import{i as x}from"../chunks/Bd-v_9Ud.js";import{p as B}from"../chunks/CW0zSL4D.js";import{p as D}from"../chunks/CR2ah4JU.js";import{R as U}from"../chunks/DCD6_LXk.js";import{s as G}from"../chunks/B0XoTt7U.js";import"../chunks/DixtWtwq.js";const V=!0,J=!0,K="never",xe=Object.freeze(Object.defineProperty({__proto__:null,prerender:V,ssr:J,trailingSlash:K},Symbol.toStringTag,{value:"Module"}));var Q=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-step svelte-1bjixce"> </span>',1),X=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-progress svelte-1bjixce"> </span>',1),Z=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-err svelte-1bjixce"> </span>',1),ee=v('<span class="status svelte-1bjixce" aria-live="polite" aria-atomic="true"><span class="status-dot svelte-1bjixce" aria-hidden="true"></span> <span class="status-phase svelte-1bjixce"> </span> <!> <!> <!></span>');function ae(h,l){O(l,!0);const N={geocode:"geocoding",nta_resolve:"resolving NTA",sandy_inundation:"Sandy 2012",dep_stormwater:"DEP scenarios",floodnet:"FloodNet sensors",nyc311:"NYC 311 history",noaa_tides:"NOAA tides",nws_alerts:"NWS alerts",nws_obs:"NWS hourly obs",ttm_forecast:"TTM r2 surge (zero-shot)",ttm_311_forecast:"TTM r2 weekly 311",ttm_battery_surge:"TTM Battery (NYC fine-tune)",floodnet_forecast:"FloodNet recurrence forecast",ida_hwm_2021:"Ida 2021 HWMs",prithvi_eo_v2:"Ida 2021 polygons (baked lookup)",prithvi_eo_live:"Prithvi-NYC-Pluvial v2 segmentation",microtopo_lidar:"LiDAR microtopo",mta_entrance_exposure:"MTA entrances",nycha_development_exposure:"NYCHA developments",doe_school_exposure:"DOE schools",doh_hospital_exposure:"NYS DOH hospitals",terramind_synthesis:"TerraMind v1 synthesis",terramind_lulc:"TerraMind LULC",terramind_buildings:"TerraMind Buildings",eo_chip_fetch:"fetching S2/S1/DEM chip",rag_granite_embedding:"RAG retrieval",gliner_extract:"GLiNER typed extraction"};let T=f(()=>r.phase!=="idle"&&r.phase!=="done"),k=f(()=>{switch(r.phase){case"planning":return"planning intent";case"specialists":return"gathering evidence";case"reconciling":return"reconciling";case"streaming":return r.attempt>1?`writing (reroll ${r.attempt-1})`:"writing briefing";case"error":return"error";default:return""}}),g=f(()=>{const a=r.activeStep;return a?N[a]??a:null}),m=f(()=>{if(r.phase!=="specialists"&&r.phase!=="reconciling")return null;const a=r.firedCount,d=r.totalSpecialists;return d?`${a}/${d}`:a>0?`${a}`:null}),w=f(()=>r.phase==="error"?"err":"live");var A=E(),_=R(A);{var j=a=>{var d=ee(),e=t(o(d),2),C=o(e,!0);i(e);var S=t(e,2);{var s=n=>{var b=Q(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(g))),u(n,b)};x(S,n=>{p(g)&&n(s)})}var c=t(S,2);{var F=n=>{var b=X(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(m))),u(n,b)};x(c,n=>{p(m)&&n(F)})}var Y=t(c,2);{var I=n=>{var b=Z(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,r.errorMessage)),u(n,b)};x(Y,n=>{r.phase==="error"&&r.errorMessage&&n(I)})}i(d),P(()=>{G(d,"data-kind",p(w)),M(C,p(k))}),u(a,d)};x(_,a=>{p(T)&&a(j)})}u(h,A),$()}var re=v('<button type="button" class="app-header-query" aria-label="Edit query"><span class="app-header-query-icon" aria-hidden="true">⌕</span> <span class="app-header-query-text"> </span> <span class="app-header-query-edit">edit</span></button>'),te=v('<button type="button" class="app-header-link app-header-link-button svelte-f1belb" aria-label="Open curated PDF view of completed briefing in new tab">export PDF</button>'),se=v('<header class="app-header no-print" data-screen-label="App header"><div class="app-header-inner"><div class="app-header-left"><a href="/" class="riprap-wordmark" aria-label="Riprap — home"><!>riprap</a> <span class="app-header-sep">/</span> <span class="app-header-context">flood-exposure briefing</span></div> <div class="app-header-mid"><!></div> <div class="app-header-right"><a class="app-header-link" href="#methodology">methodology</a> <!> <!></div></div></header>');function ne(h,l){O(l,!0);let N=B(l,"query",3,null);function T(){if(typeof window>"u")return;const s=D.params.queryId??(D.url.pathname==="/q/sample"?"sample":"");s&&window.open(`/print/${encodeURIComponent(s)}`,"_blank","noopener")}var k=se(),g=o(k),m=o(g),w=o(m),A=o(w);U(A,{size:20}),L(),i(w),L(4),i(m);var _=t(m,2),j=o(_);{var a=s=>{var c=re(),F=t(o(c),2),Y=o(F,!0);i(F),L(2),i(c),P(()=>M(Y,N())),H("click",c,function(...I){var n;(n=l.onResetCold)==null||n.apply(this,I)}),u(s,c)};x(j,s=>{N()&&s(a)})}i(_);var d=t(_,2),e=t(o(d),2);{var C=s=>{var c=te();H("click",c,T),u(s,c)};x(e,s=>{r.ready&&s(C)})}var S=t(e,2);ae(S,{}),i(d),i(g),i(k),u(h,k),$()}z(["click"]);var oe=v(`<footer class="app-footer no-print"><div class="app-footer-inner"><p class="app-footer-guard"><strong>Riprap does not predict damage.</strong> This tool is for professional analytical work, not personal property decisions.
2
- For residents, see <a href="https://www.floodhelpny.org">FloodHelpNY</a> · <a href="https://www.floodnet.nyc">FloodNet NYC</a>.</p> <p class="app-footer-build">All foundation models Apache-2.0 · All data from public-record federal, state, and city sources · No commercial APIs contacted at runtime · Riprap v0.5.0 · build 2026-05-07</p> <p class="app-footer-credits">Dam mark: <a href="https://thenounproject.com/icon/dam-4516918/">"Dam" by Chintuza</a> via the Noun Project, CC-BY 3.0.</p></div></footer>`);function ie(h){var l=oe();u(h,l)}var pe=v('<a href="#region-briefing" class="skip-link">Skip to briefing</a> <a href="#region-map" class="skip-link" style="left: -9999px;">Skip to map</a> <a href="#region-trace" class="skip-link" style="left: -9999px;">Skip to trace</a>',1);function le(h){var l=pe();L(4),u(h,l)}var de=v("<!> <!>",1),ce=v('<!> <main class="svelte-12qhfyh"><!></main> <!>',1);function ke(h,l){O(l,!0);let N=f(()=>()=>{const e=D.params.queryId;if(!e)return null;try{return decodeURIComponent(e)}catch{return e}}),T=f(()=>D.url.pathname.startsWith("/print/")),k=f(()=>D.url.pathname==="/"),g=f(()=>p(T)||p(k));var m=ce(),w=R(m);{var A=e=>{var C=de(),S=R(C);le(S);var s=t(S,2);{let c=f(()=>p(N)());ne(s,{get query(){return p(c)},onResetCold:()=>window.location.href="/"})}u(e,C)};x(w,e=>{p(g)||e(A)})}var _=t(w,2),j=o(_);W(j,()=>l.children),i(_);var a=t(_,2);{var d=e=>{ie(e)};x(a,e=>{p(g)||e(d)})}u(h,m),$()}export{ke as component,xe as universal};
 
 
 
web/sveltekit/build/_app/immutable/nodes/0.LAFF30Kg.js DELETED
@@ -1,2 +0,0 @@
1
- import{c as E,a as u,s as M,f as v,d as z,e as H}from"../chunks/CWw6qgC_.js";import{p as O,f as R,o as p,a as $,al as f,s as t,c as o,r as i,t as P,aR as L}from"../chunks/BTUA7_xE.js";import{b as r,s as W}from"../chunks/DxQlA7U2.js";import{i as x}from"../chunks/Bd-v_9Ud.js";import{p as B}from"../chunks/CW0zSL4D.js";import{p as D}from"../chunks/BbRPgcjS.js";import{R as U}from"../chunks/DCD6_LXk.js";import{s as G}from"../chunks/B0XoTt7U.js";import"../chunks/DixtWtwq.js";const V=!0,J=!0,K="never",xe=Object.freeze(Object.defineProperty({__proto__:null,prerender:V,ssr:J,trailingSlash:K},Symbol.toStringTag,{value:"Module"}));var Q=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-step svelte-1bjixce"> </span>',1),X=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-progress svelte-1bjixce"> </span>',1),Z=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-err svelte-1bjixce"> </span>',1),ee=v('<span class="status svelte-1bjixce" aria-live="polite" aria-atomic="true"><span class="status-dot svelte-1bjixce" aria-hidden="true"></span> <span class="status-phase svelte-1bjixce"> </span> <!> <!> <!></span>');function ae(h,l){O(l,!0);const N={geocode:"geocoding",nta_resolve:"resolving NTA",sandy_inundation:"Sandy 2012",dep_stormwater:"DEP scenarios",floodnet:"FloodNet sensors",nyc311:"NYC 311 history",noaa_tides:"NOAA tides",nws_alerts:"NWS alerts",nws_obs:"NWS hourly obs",ttm_forecast:"TTM r2 surge (zero-shot)",ttm_311_forecast:"TTM r2 weekly 311",ttm_battery_surge:"TTM Battery (NYC fine-tune)",floodnet_forecast:"FloodNet recurrence forecast",ida_hwm_2021:"Ida 2021 HWMs",prithvi_eo_v2:"Ida 2021 polygons (baked lookup)",prithvi_eo_live:"Prithvi-NYC-Pluvial v2 segmentation",microtopo_lidar:"LiDAR microtopo",mta_entrance_exposure:"MTA entrances",nycha_development_exposure:"NYCHA developments",doe_school_exposure:"DOE schools",doh_hospital_exposure:"NYS DOH hospitals",terramind_synthesis:"TerraMind v1 synthesis",terramind_lulc:"TerraMind LULC",terramind_buildings:"TerraMind Buildings",eo_chip_fetch:"fetching S2/S1/DEM chip",rag_granite_embedding:"RAG retrieval",gliner_extract:"GLiNER typed extraction"};let T=f(()=>r.phase!=="idle"&&r.phase!=="done"),k=f(()=>{switch(r.phase){case"planning":return"planning intent";case"specialists":return"gathering evidence";case"reconciling":return"reconciling";case"streaming":return r.attempt>1?`writing (reroll ${r.attempt-1})`:"writing briefing";case"error":return"error";default:return""}}),g=f(()=>{const a=r.activeStep;return a?N[a]??a:null}),m=f(()=>{if(r.phase!=="specialists"&&r.phase!=="reconciling")return null;const a=r.firedCount,d=r.totalSpecialists;return d?`${a}/${d}`:a>0?`${a}`:null}),w=f(()=>r.phase==="error"?"err":"live");var A=E(),_=R(A);{var j=a=>{var d=ee(),e=t(o(d),2),C=o(e,!0);i(e);var S=t(e,2);{var s=n=>{var b=Q(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(g))),u(n,b)};x(S,n=>{p(g)&&n(s)})}var c=t(S,2);{var F=n=>{var b=X(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(m))),u(n,b)};x(c,n=>{p(m)&&n(F)})}var Y=t(c,2);{var I=n=>{var b=Z(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,r.errorMessage)),u(n,b)};x(Y,n=>{r.phase==="error"&&r.errorMessage&&n(I)})}i(d),P(()=>{G(d,"data-kind",p(w)),M(C,p(k))}),u(a,d)};x(_,a=>{p(T)&&a(j)})}u(h,A),$()}var re=v('<button type="button" class="app-header-query" aria-label="Edit query"><span class="app-header-query-icon" aria-hidden="true">⌕</span> <span class="app-header-query-text"> </span> <span class="app-header-query-edit">edit</span></button>'),te=v('<button type="button" class="app-header-link app-header-link-button svelte-f1belb" aria-label="Open curated PDF view of completed briefing in new tab">export PDF</button>'),se=v('<header class="app-header no-print" data-screen-label="App header"><div class="app-header-inner"><div class="app-header-left"><a href="/" class="riprap-wordmark" aria-label="Riprap — home"><!>riprap</a> <span class="app-header-sep">/</span> <span class="app-header-context">flood-exposure briefing</span></div> <div class="app-header-mid"><!></div> <div class="app-header-right"><a class="app-header-link" href="#methodology">methodology</a> <!> <!></div></div></header>');function ne(h,l){O(l,!0);let N=B(l,"query",3,null);function T(){if(typeof window>"u")return;const s=D.params.queryId??(D.url.pathname==="/q/sample"?"sample":"");s&&window.open(`/print/${encodeURIComponent(s)}`,"_blank","noopener")}var k=se(),g=o(k),m=o(g),w=o(m),A=o(w);U(A,{size:20}),L(),i(w),L(4),i(m);var _=t(m,2),j=o(_);{var a=s=>{var c=re(),F=t(o(c),2),Y=o(F,!0);i(F),L(2),i(c),P(()=>M(Y,N())),H("click",c,function(...I){var n;(n=l.onResetCold)==null||n.apply(this,I)}),u(s,c)};x(j,s=>{N()&&s(a)})}i(_);var d=t(_,2),e=t(o(d),2);{var C=s=>{var c=te();H("click",c,T),u(s,c)};x(e,s=>{r.ready&&s(C)})}var S=t(e,2);ae(S,{}),i(d),i(g),i(k),u(h,k),$()}z(["click"]);var oe=v(`<footer class="app-footer no-print"><div class="app-footer-inner"><p class="app-footer-guard"><strong>Riprap does not predict damage.</strong> This tool is for professional analytical work, not personal property decisions.
2
- For residents, see <a href="https://www.floodhelpny.org">FloodHelpNY</a> · <a href="https://www.floodnet.nyc">FloodNet NYC</a>.</p> <p class="app-footer-build">All foundation models Apache-2.0 · All data from public-record federal, state, and city sources · No commercial APIs contacted at runtime · Riprap v0.4.6 · build 2026-05-06</p> <p class="app-footer-credits">Dam mark: <a href="https://thenounproject.com/icon/dam-4516918/">"Dam" by Chintuza</a> via the Noun Project, CC-BY 3.0.</p></div></footer>`);function ie(h){var l=oe();u(h,l)}var pe=v('<a href="#region-briefing" class="skip-link">Skip to briefing</a> <a href="#region-map" class="skip-link" style="left: -9999px;">Skip to map</a> <a href="#region-trace" class="skip-link" style="left: -9999px;">Skip to trace</a>',1);function le(h){var l=pe();L(4),u(h,l)}var de=v("<!> <!>",1),ce=v('<!> <main class="svelte-12qhfyh"><!></main> <!>',1);function ke(h,l){O(l,!0);let N=f(()=>()=>{const e=D.params.queryId;if(!e)return null;try{return decodeURIComponent(e)}catch{return e}}),T=f(()=>D.url.pathname.startsWith("/print/")),k=f(()=>D.url.pathname==="/"),g=f(()=>p(T)||p(k));var m=ce(),w=R(m);{var A=e=>{var C=de(),S=R(C);le(S);var s=t(S,2);{let c=f(()=>p(N)());ne(s,{get query(){return p(c)},onResetCold:()=>window.location.href="/"})}u(e,C)};x(w,e=>{p(g)||e(A)})}var _=t(w,2),j=o(_);W(j,()=>l.children),i(_);var a=t(_,2);{var d=e=>{ie(e)};x(a,e=>{p(g)||e(d)})}u(h,m),$()}export{ke as component,xe as universal};
 
 
 
web/sveltekit/build/_app/immutable/nodes/{0.BxBHE18q.js → 0.WjwQ9Jo9.js} RENAMED
@@ -1,2 +1,2 @@
1
- import{c as E,a as u,s as M,f as v,d as z,e as H}from"../chunks/CWw6qgC_.js";import{p as O,f as R,o as p,a as $,al as f,s as t,c as o,r as i,t as P,aR as L}from"../chunks/BTUA7_xE.js";import{b as r,s as W}from"../chunks/DxQlA7U2.js";import{i as x}from"../chunks/Bd-v_9Ud.js";import{p as B}from"../chunks/CW0zSL4D.js";import{p as D}from"../chunks/Bi6ZzEYr.js";import{R as U}from"../chunks/DCD6_LXk.js";import{s as G}from"../chunks/B0XoTt7U.js";import"../chunks/DixtWtwq.js";const V=!0,J=!0,K="never",xe=Object.freeze(Object.defineProperty({__proto__:null,prerender:V,ssr:J,trailingSlash:K},Symbol.toStringTag,{value:"Module"}));var Q=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-step svelte-1bjixce"> </span>',1),X=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-progress svelte-1bjixce"> </span>',1),Z=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-err svelte-1bjixce"> </span>',1),ee=v('<span class="status svelte-1bjixce" aria-live="polite" aria-atomic="true"><span class="status-dot svelte-1bjixce" aria-hidden="true"></span> <span class="status-phase svelte-1bjixce"> </span> <!> <!> <!></span>');function ae(h,l){O(l,!0);const N={geocode:"geocoding",nta_resolve:"resolving NTA",sandy_inundation:"Sandy 2012",dep_stormwater:"DEP scenarios",floodnet:"FloodNet sensors",nyc311:"NYC 311 history",noaa_tides:"NOAA tides",nws_alerts:"NWS alerts",nws_obs:"NWS hourly obs",ttm_forecast:"TTM r2 surge (zero-shot)",ttm_311_forecast:"TTM r2 weekly 311",ttm_battery_surge:"TTM Battery (NYC fine-tune)",floodnet_forecast:"FloodNet recurrence forecast",ida_hwm_2021:"Ida 2021 HWMs",prithvi_eo_v2:"Ida 2021 polygons (baked lookup)",prithvi_eo_live:"Prithvi-NYC-Pluvial v2 segmentation",microtopo_lidar:"LiDAR microtopo",mta_entrance_exposure:"MTA entrances",nycha_development_exposure:"NYCHA developments",doe_school_exposure:"DOE schools",doh_hospital_exposure:"NYS DOH hospitals",terramind_synthesis:"TerraMind v1 synthesis",terramind_lulc:"TerraMind LULC",terramind_buildings:"TerraMind Buildings",eo_chip_fetch:"fetching S2/S1/DEM chip",rag_granite_embedding:"RAG retrieval",gliner_extract:"GLiNER typed extraction"};let T=f(()=>r.phase!=="idle"&&r.phase!=="done"),k=f(()=>{switch(r.phase){case"planning":return"planning intent";case"specialists":return"gathering evidence";case"reconciling":return"reconciling";case"streaming":return r.attempt>1?`writing (reroll ${r.attempt-1})`:"writing briefing";case"error":return"error";default:return""}}),g=f(()=>{const a=r.activeStep;return a?N[a]??a:null}),m=f(()=>{if(r.phase!=="specialists"&&r.phase!=="reconciling")return null;const a=r.firedCount,d=r.totalSpecialists;return d?`${a}/${d}`:a>0?`${a}`:null}),w=f(()=>r.phase==="error"?"err":"live");var A=E(),_=R(A);{var j=a=>{var d=ee(),e=t(o(d),2),C=o(e,!0);i(e);var S=t(e,2);{var s=n=>{var b=Q(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(g))),u(n,b)};x(S,n=>{p(g)&&n(s)})}var c=t(S,2);{var F=n=>{var b=X(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(m))),u(n,b)};x(c,n=>{p(m)&&n(F)})}var Y=t(c,2);{var I=n=>{var b=Z(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,r.errorMessage)),u(n,b)};x(Y,n=>{r.phase==="error"&&r.errorMessage&&n(I)})}i(d),P(()=>{G(d,"data-kind",p(w)),M(C,p(k))}),u(a,d)};x(_,a=>{p(T)&&a(j)})}u(h,A),$()}var re=v('<button type="button" class="app-header-query" aria-label="Edit query"><span class="app-header-query-icon" aria-hidden="true">⌕</span> <span class="app-header-query-text"> </span> <span class="app-header-query-edit">edit</span></button>'),te=v('<button type="button" class="app-header-link app-header-link-button svelte-f1belb" aria-label="Open curated PDF view of completed briefing in new tab">export PDF</button>'),se=v('<header class="app-header no-print" data-screen-label="App header"><div class="app-header-inner"><div class="app-header-left"><a href="/" class="riprap-wordmark" aria-label="Riprap — home"><!>riprap</a> <span class="app-header-sep">/</span> <span class="app-header-context">flood-exposure briefing</span></div> <div class="app-header-mid"><!></div> <div class="app-header-right"><a class="app-header-link" href="#methodology">methodology</a> <!> <!></div></div></header>');function ne(h,l){O(l,!0);let N=B(l,"query",3,null);function T(){if(typeof window>"u")return;const s=D.params.queryId??(D.url.pathname==="/q/sample"?"sample":"");s&&window.open(`/print/${encodeURIComponent(s)}`,"_blank","noopener")}var k=se(),g=o(k),m=o(g),w=o(m),A=o(w);U(A,{size:20}),L(),i(w),L(4),i(m);var _=t(m,2),j=o(_);{var a=s=>{var c=re(),F=t(o(c),2),Y=o(F,!0);i(F),L(2),i(c),P(()=>M(Y,N())),H("click",c,function(...I){var n;(n=l.onResetCold)==null||n.apply(this,I)}),u(s,c)};x(j,s=>{N()&&s(a)})}i(_);var d=t(_,2),e=t(o(d),2);{var C=s=>{var c=te();H("click",c,T),u(s,c)};x(e,s=>{r.ready&&s(C)})}var S=t(e,2);ae(S,{}),i(d),i(g),i(k),u(h,k),$()}z(["click"]);var oe=v(`<footer class="app-footer no-print"><div class="app-footer-inner"><p class="app-footer-guard"><strong>Riprap does not predict damage.</strong> This tool is for professional analytical work, not personal property decisions.
2
  For residents, see <a href="https://www.floodhelpny.org">FloodHelpNY</a> · <a href="https://www.floodnet.nyc">FloodNet NYC</a>.</p> <p class="app-footer-build">All foundation models Apache-2.0 · All data from public-record federal, state, and city sources · No commercial APIs contacted at runtime · Riprap v0.5.0 · build 2026-05-07</p> <p class="app-footer-credits">Dam mark: <a href="https://thenounproject.com/icon/dam-4516918/">"Dam" by Chintuza</a> via the Noun Project, CC-BY 3.0.</p></div></footer>`);function ie(h){var l=oe();u(h,l)}var pe=v('<a href="#region-briefing" class="skip-link">Skip to briefing</a> <a href="#region-map" class="skip-link" style="left: -9999px;">Skip to map</a> <a href="#region-trace" class="skip-link" style="left: -9999px;">Skip to trace</a>',1);function le(h){var l=pe();L(4),u(h,l)}var de=v("<!> <!>",1),ce=v('<!> <main class="svelte-12qhfyh"><!></main> <!>',1);function ke(h,l){O(l,!0);let N=f(()=>()=>{const e=D.params.queryId;if(!e)return null;try{return decodeURIComponent(e)}catch{return e}}),T=f(()=>D.url.pathname.startsWith("/print/")),k=f(()=>D.url.pathname==="/"),g=f(()=>p(T)||p(k));var m=ce(),w=R(m);{var A=e=>{var C=de(),S=R(C);le(S);var s=t(S,2);{let c=f(()=>p(N)());ne(s,{get query(){return p(c)},onResetCold:()=>window.location.href="/"})}u(e,C)};x(w,e=>{p(g)||e(A)})}var _=t(w,2),j=o(_);W(j,()=>l.children),i(_);var a=t(_,2);{var d=e=>{ie(e)};x(a,e=>{p(g)||e(d)})}u(h,m),$()}export{ke as component,xe as universal};
 
1
+ import{c as E,a as u,s as M,f as v,d as z,e as H}from"../chunks/CWw6qgC_.js";import{p as O,f as R,o as p,a as $,al as f,s as t,c as o,r as i,t as P,aR as L}from"../chunks/BTUA7_xE.js";import{b as r,s as W}from"../chunks/DxQlA7U2.js";import{i as x}from"../chunks/Bd-v_9Ud.js";import{p as B}from"../chunks/CW0zSL4D.js";import{p as D}from"../chunks/B-yumwKg.js";import{R as U}from"../chunks/DCD6_LXk.js";import{s as G}from"../chunks/B0XoTt7U.js";import"../chunks/DixtWtwq.js";const V=!0,J=!0,K="never",xe=Object.freeze(Object.defineProperty({__proto__:null,prerender:V,ssr:J,trailingSlash:K},Symbol.toStringTag,{value:"Module"}));var Q=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-step svelte-1bjixce"> </span>',1),X=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-progress svelte-1bjixce"> </span>',1),Z=v('<span class="status-sep svelte-1bjixce">·</span> <span class="status-err svelte-1bjixce"> </span>',1),ee=v('<span class="status svelte-1bjixce" aria-live="polite" aria-atomic="true"><span class="status-dot svelte-1bjixce" aria-hidden="true"></span> <span class="status-phase svelte-1bjixce"> </span> <!> <!> <!></span>');function ae(h,l){O(l,!0);const N={geocode:"geocoding",nta_resolve:"resolving NTA",sandy_inundation:"Sandy 2012",dep_stormwater:"DEP scenarios",floodnet:"FloodNet sensors",nyc311:"NYC 311 history",noaa_tides:"NOAA tides",nws_alerts:"NWS alerts",nws_obs:"NWS hourly obs",ttm_forecast:"TTM r2 surge (zero-shot)",ttm_311_forecast:"TTM r2 weekly 311",ttm_battery_surge:"TTM Battery (NYC fine-tune)",floodnet_forecast:"FloodNet recurrence forecast",ida_hwm_2021:"Ida 2021 HWMs",prithvi_eo_v2:"Ida 2021 polygons (baked lookup)",prithvi_eo_live:"Prithvi-NYC-Pluvial v2 segmentation",microtopo_lidar:"LiDAR microtopo",mta_entrance_exposure:"MTA entrances",nycha_development_exposure:"NYCHA developments",doe_school_exposure:"DOE schools",doh_hospital_exposure:"NYS DOH hospitals",terramind_synthesis:"TerraMind v1 synthesis",terramind_lulc:"TerraMind LULC",terramind_buildings:"TerraMind Buildings",eo_chip_fetch:"fetching S2/S1/DEM chip",rag_granite_embedding:"RAG retrieval",gliner_extract:"GLiNER typed extraction"};let T=f(()=>r.phase!=="idle"&&r.phase!=="done"),k=f(()=>{switch(r.phase){case"planning":return"planning intent";case"specialists":return"gathering evidence";case"reconciling":return"reconciling";case"streaming":return r.attempt>1?`writing (reroll ${r.attempt-1})`:"writing briefing";case"error":return"error";default:return""}}),g=f(()=>{const a=r.activeStep;return a?N[a]??a:null}),m=f(()=>{if(r.phase!=="specialists"&&r.phase!=="reconciling")return null;const a=r.firedCount,d=r.totalSpecialists;return d?`${a}/${d}`:a>0?`${a}`:null}),w=f(()=>r.phase==="error"?"err":"live");var A=E(),_=R(A);{var j=a=>{var d=ee(),e=t(o(d),2),C=o(e,!0);i(e);var S=t(e,2);{var s=n=>{var b=Q(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(g))),u(n,b)};x(S,n=>{p(g)&&n(s)})}var c=t(S,2);{var F=n=>{var b=X(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,p(m))),u(n,b)};x(c,n=>{p(m)&&n(F)})}var Y=t(c,2);{var I=n=>{var b=Z(),y=t(R(b),2),q=o(y,!0);i(y),P(()=>M(q,r.errorMessage)),u(n,b)};x(Y,n=>{r.phase==="error"&&r.errorMessage&&n(I)})}i(d),P(()=>{G(d,"data-kind",p(w)),M(C,p(k))}),u(a,d)};x(_,a=>{p(T)&&a(j)})}u(h,A),$()}var re=v('<button type="button" class="app-header-query" aria-label="Edit query"><span class="app-header-query-icon" aria-hidden="true">⌕</span> <span class="app-header-query-text"> </span> <span class="app-header-query-edit">edit</span></button>'),te=v('<button type="button" class="app-header-link app-header-link-button svelte-f1belb" aria-label="Open curated PDF view of completed briefing in new tab">export PDF</button>'),se=v('<header class="app-header no-print" data-screen-label="App header"><div class="app-header-inner"><div class="app-header-left"><a href="/" class="riprap-wordmark" aria-label="Riprap — home"><!>riprap</a> <span class="app-header-sep">/</span> <span class="app-header-context">flood-exposure briefing</span></div> <div class="app-header-mid"><!></div> <div class="app-header-right"><a class="app-header-link" href="#methodology">methodology</a> <!> <!></div></div></header>');function ne(h,l){O(l,!0);let N=B(l,"query",3,null);function T(){if(typeof window>"u")return;const s=D.params.queryId??(D.url.pathname==="/q/sample"?"sample":"");s&&window.open(`/print/${encodeURIComponent(s)}`,"_blank","noopener")}var k=se(),g=o(k),m=o(g),w=o(m),A=o(w);U(A,{size:20}),L(),i(w),L(4),i(m);var _=t(m,2),j=o(_);{var a=s=>{var c=re(),F=t(o(c),2),Y=o(F,!0);i(F),L(2),i(c),P(()=>M(Y,N())),H("click",c,function(...I){var n;(n=l.onResetCold)==null||n.apply(this,I)}),u(s,c)};x(j,s=>{N()&&s(a)})}i(_);var d=t(_,2),e=t(o(d),2);{var C=s=>{var c=te();H("click",c,T),u(s,c)};x(e,s=>{r.ready&&s(C)})}var S=t(e,2);ae(S,{}),i(d),i(g),i(k),u(h,k),$()}z(["click"]);var oe=v(`<footer class="app-footer no-print"><div class="app-footer-inner"><p class="app-footer-guard"><strong>Riprap does not predict damage.</strong> This tool is for professional analytical work, not personal property decisions.
2
  For residents, see <a href="https://www.floodhelpny.org">FloodHelpNY</a> · <a href="https://www.floodnet.nyc">FloodNet NYC</a>.</p> <p class="app-footer-build">All foundation models Apache-2.0 · All data from public-record federal, state, and city sources · No commercial APIs contacted at runtime · Riprap v0.5.0 · build 2026-05-07</p> <p class="app-footer-credits">Dam mark: <a href="https://thenounproject.com/icon/dam-4516918/">"Dam" by Chintuza</a> via the Noun Project, CC-BY 3.0.</p></div></footer>`);function ie(h){var l=oe();u(h,l)}var pe=v('<a href="#region-briefing" class="skip-link">Skip to briefing</a> <a href="#region-map" class="skip-link" style="left: -9999px;">Skip to map</a> <a href="#region-trace" class="skip-link" style="left: -9999px;">Skip to trace</a>',1);function le(h){var l=pe();L(4),u(h,l)}var de=v("<!> <!>",1),ce=v('<!> <main class="svelte-12qhfyh"><!></main> <!>',1);function ke(h,l){O(l,!0);let N=f(()=>()=>{const e=D.params.queryId;if(!e)return null;try{return decodeURIComponent(e)}catch{return e}}),T=f(()=>D.url.pathname.startsWith("/print/")),k=f(()=>D.url.pathname==="/"),g=f(()=>p(T)||p(k));var m=ce(),w=R(m);{var A=e=>{var C=de(),S=R(C);le(S);var s=t(S,2);{let c=f(()=>p(N)());ne(s,{get query(){return p(c)},onResetCold:()=>window.location.href="/"})}u(e,C)};x(w,e=>{p(g)||e(A)})}var _=t(w,2),j=o(_);W(j,()=>l.children),i(_);var a=t(_,2);{var d=e=>{ie(e)};x(a,e=>{p(g)||e(d)})}u(h,m),$()}export{ke as component,xe as universal};