@buley/hexgrid-3d 3.1.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/HexGridEnhanced.d.ts +15 -0
- package/dist/HexGridEnhanced.d.ts.map +1 -0
- package/dist/HexGridEnhanced.js +1 -0
- package/dist/Snapshot.d.ts +594 -0
- package/dist/Snapshot.d.ts.map +1 -0
- package/dist/Snapshot.js +757 -0
- package/dist/adapters/DashAdapter.d.ts +18 -0
- package/dist/adapters/DashAdapter.d.ts.map +1 -0
- package/dist/adapters/DashAdapter.js +42 -0
- package/dist/adapters.d.ts +53 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +14 -0
- package/dist/algorithms/AdvancedStatistics.d.ts +52 -0
- package/dist/algorithms/AdvancedStatistics.d.ts.map +1 -0
- package/dist/algorithms/AdvancedStatistics.js +307 -0
- package/dist/algorithms/BayesianStatistics.d.ts +86 -0
- package/dist/algorithms/BayesianStatistics.d.ts.map +1 -0
- package/dist/algorithms/BayesianStatistics.js +263 -0
- package/dist/algorithms/FlowField.d.ts +55 -0
- package/dist/algorithms/FlowField.d.ts.map +1 -0
- package/dist/algorithms/FlowField.js +80 -0
- package/dist/algorithms/FlowField3D.d.ts +166 -0
- package/dist/algorithms/FlowField3D.d.ts.map +1 -0
- package/dist/algorithms/FlowField3D.js +327 -0
- package/dist/algorithms/FluidEngineFactory.d.ts +15 -0
- package/dist/algorithms/FluidEngineFactory.d.ts.map +1 -0
- package/dist/algorithms/FluidEngineFactory.js +41 -0
- package/dist/algorithms/FluidSimulation.d.ts +41 -0
- package/dist/algorithms/FluidSimulation.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulation.js +74 -0
- package/dist/algorithms/FluidSimulation3D.d.ts +137 -0
- package/dist/algorithms/FluidSimulation3D.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulation3D.js +464 -0
- package/dist/algorithms/FluidSimulation3DGPU.d.ts +41 -0
- package/dist/algorithms/FluidSimulation3DGPU.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulation3DGPU.js +468 -0
- package/dist/algorithms/FluidSimulationWebNN.d.ts +56 -0
- package/dist/algorithms/FluidSimulationWebNN.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulationWebNN.js +84 -0
- package/dist/algorithms/GraphAlgorithms.d.ts +48 -0
- package/dist/algorithms/GraphAlgorithms.d.ts.map +1 -0
- package/dist/algorithms/GraphAlgorithms.js +122 -0
- package/dist/algorithms/OutlierDetection.d.ts +49 -0
- package/dist/algorithms/OutlierDetection.d.ts.map +1 -0
- package/dist/algorithms/OutlierDetection.js +284 -0
- package/dist/algorithms/ParticleSystem.d.ts +36 -0
- package/dist/algorithms/ParticleSystem.d.ts.map +1 -0
- package/dist/algorithms/ParticleSystem.js +59 -0
- package/dist/algorithms/ParticleSystem3D.d.ts +206 -0
- package/dist/algorithms/ParticleSystem3D.d.ts.map +1 -0
- package/dist/algorithms/ParticleSystem3D.js +371 -0
- package/dist/algorithms/index.d.ts +19 -0
- package/dist/algorithms/index.d.ts.map +1 -0
- package/{src/algorithms/index.ts → dist/algorithms/index.js} +4 -2
- package/dist/compat.d.ts +24 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +88 -0
- package/dist/components/HexGrid.d.ts +5 -0
- package/dist/components/HexGrid.d.ts.map +1 -0
- package/dist/components/HexGrid.js +39 -0
- package/dist/components/NarrationOverlay.d.ts +16 -0
- package/dist/components/NarrationOverlay.d.ts.map +1 -0
- package/dist/components/NarrationOverlay.js +132 -0
- package/{src/components/index.ts → dist/components/index.d.ts} +1 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +1 -0
- package/dist/features.d.ts +54 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +74 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +0 -9
- package/dist/lib/narration.d.ts +12 -0
- package/dist/lib/narration.d.ts.map +1 -0
- package/dist/lib/narration.js +8 -0
- package/dist/lib/stats-tracker.d.ts +7 -0
- package/dist/lib/stats-tracker.d.ts.map +1 -0
- package/dist/lib/stats-tracker.js +22 -0
- package/dist/lib/theme-colors.d.ts +7 -0
- package/dist/lib/theme-colors.d.ts.map +1 -0
- package/dist/lib/theme-colors.js +10 -0
- package/dist/math/HexCoordinates.d.ts +140 -0
- package/dist/math/HexCoordinates.d.ts.map +1 -0
- package/dist/math/HexCoordinates.js +741 -0
- package/dist/math/Matrix4.d.ts +9 -0
- package/dist/math/Matrix4.d.ts.map +1 -0
- package/dist/math/Matrix4.js +19 -0
- package/dist/math/Quaternion.d.ts +11 -0
- package/dist/math/Quaternion.d.ts.map +1 -0
- package/dist/math/Quaternion.js +23 -0
- package/dist/math/SpatialIndex.d.ts +34 -0
- package/dist/math/SpatialIndex.d.ts.map +1 -0
- package/dist/math/SpatialIndex.js +75 -0
- package/dist/math/Vector3.d.ts +110 -0
- package/dist/math/Vector3.d.ts.map +1 -0
- package/dist/math/Vector3.js +426 -0
- package/dist/math/index.d.ts +11 -0
- package/dist/math/index.d.ts.map +1 -0
- package/{src/math/index.ts → dist/math/index.js} +0 -1
- package/dist/note-adapter.d.ts +44 -0
- package/dist/note-adapter.d.ts.map +1 -0
- package/dist/note-adapter.js +86 -0
- package/dist/ontology-adapter.d.ts +13 -0
- package/dist/ontology-adapter.d.ts.map +1 -0
- package/dist/ontology-adapter.js +65 -0
- package/dist/stores/index.d.ts +2 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/uiStore.d.ts +18 -0
- package/dist/stores/uiStore.d.ts.map +1 -0
- package/dist/stores/uiStore.js +77 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types.d.ts +126 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/utils/image-utils.d.ts +13 -0
- package/dist/utils/image-utils.d.ts.map +1 -0
- package/dist/utils/image-utils.js +23 -0
- package/dist/wasm/HexGridWasmWrapper.d.ts +131 -0
- package/dist/wasm/HexGridWasmWrapper.d.ts.map +1 -0
- package/dist/wasm/HexGridWasmWrapper.js +610 -0
- package/dist/wasm/index.d.ts +7 -0
- package/dist/wasm/index.d.ts.map +1 -0
- package/{src/wasm/index.ts → dist/wasm/index.js} +0 -1
- package/dist/webgpu/WebGPUContext.d.ts +20 -0
- package/dist/webgpu/WebGPUContext.d.ts.map +1 -0
- package/dist/webgpu/WebGPUContext.js +60 -0
- package/dist/webnn/WebNNContext.d.ts +38 -0
- package/dist/webnn/WebNNContext.d.ts.map +1 -0
- package/dist/webnn/WebNNContext.js +66 -0
- package/dist/workers/hexgrid-math.d.ts +79 -0
- package/dist/workers/hexgrid-math.d.ts.map +1 -0
- package/dist/workers/hexgrid-math.js +136 -0
- package/dist/workers/hexgrid-worker.worker.d.ts +35 -0
- package/dist/workers/hexgrid-worker.worker.d.ts.map +1 -0
- package/dist/workers/hexgrid-worker.worker.js +2014 -0
- package/package.json +24 -7
- package/.eslintrc.json +0 -28
- package/build_log.txt +0 -500
- package/build_src_log.txt +0 -8
- package/examples/basic-usage.tsx +0 -52
- package/public/hexgrid-worker.js +0 -2475
- package/rust/Cargo.toml +0 -41
- package/rust/src/lib.rs +0 -740
- package/rust/src/math.rs +0 -574
- package/rust/src/spatial.rs +0 -245
- package/rust/src/statistics.rs +0 -496
- package/site/.eslintrc.json +0 -3
- package/site/DEPLOYMENT.md +0 -196
- package/site/INDEX.md +0 -127
- package/site/QUICK_START.md +0 -86
- package/site/README.md +0 -85
- package/site/SITE_SUMMARY.md +0 -180
- package/site/next.config.js +0 -12
- package/site/package.json +0 -26
- package/site/src/app/docs/page.tsx +0 -272
- package/site/src/app/examples/page.tsx +0 -151
- package/site/src/app/globals.css +0 -160
- package/site/src/app/layout.tsx +0 -39
- package/site/src/app/page.tsx +0 -235
- package/site/tsconfig.json +0 -29
- package/site/vercel.json +0 -6
- package/src/HexGridEnhanced.ts +0 -16
- package/src/Snapshot.ts +0 -1607
- package/src/adapters/DashAdapter.ts +0 -57
- package/src/adapters.ts +0 -63
- package/src/algorithms/AdvancedStatistics.ts +0 -362
- package/src/algorithms/BayesianStatistics.ts +0 -348
- package/src/algorithms/FlowField.ts +0 -150
- package/src/algorithms/FlowField3D.ts +0 -573
- package/src/algorithms/FluidEngineFactory.ts +0 -44
- package/src/algorithms/FluidSimulation.ts +0 -115
- package/src/algorithms/FluidSimulation3D.ts +0 -664
- package/src/algorithms/FluidSimulation3DGPU.ts +0 -408
- package/src/algorithms/FluidSimulationWebNN.ts +0 -141
- package/src/algorithms/GraphAlgorithms.ts +0 -191
- package/src/algorithms/OutlierDetection.ts +0 -425
- package/src/algorithms/ParticleSystem.ts +0 -95
- package/src/algorithms/ParticleSystem3D.ts +0 -567
- package/src/compat.ts +0 -96
- package/src/components/HexGrid.tsx +0 -61
- package/src/components/NarrationOverlay.tsx +0 -309
- package/src/features.ts +0 -125
- package/src/lib/narration.ts +0 -17
- package/src/lib/stats-tracker.ts +0 -25
- package/src/lib/theme-colors.ts +0 -12
- package/src/math/HexCoordinates.ts +0 -863
- package/src/math/Matrix4.ts +0 -25
- package/src/math/Quaternion.ts +0 -37
- package/src/math/SpatialIndex.ts +0 -114
- package/src/math/Vector3.ts +0 -540
- package/src/note-adapter.ts +0 -132
- package/src/ontology-adapter.ts +0 -84
- package/src/stores/uiStore.ts +0 -85
- package/src/types/index.ts +0 -3
- package/src/types/shared-utils.d.ts +0 -10
- package/src/types/wgsl.d.ts +0 -4
- package/src/types.ts +0 -164
- package/src/utils/image-utils.ts +0 -28
- package/src/wasm/HexGridWasmWrapper.ts +0 -801
- package/src/webgpu/WebGPUContext.ts +0 -71
- package/src/webgpu/shaders/fluid_sim.wgsl +0 -140
- package/src/webnn/WebNNContext.ts +0 -99
- package/src/workers/hexgrid-math.ts +0 -182
- package/src/workers/hexgrid-worker.worker.ts +0 -2781
- package/tsconfig.json +0 -26
- /package/{src/stores/index.ts → dist/stores/index.js} +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Axial } from './math/HexCoordinates';
|
|
2
|
+
import type { Vector2 } from './math/Vector3';
|
|
3
|
+
export interface EnhancedHexCell {
|
|
4
|
+
index: number;
|
|
5
|
+
axial: Axial;
|
|
6
|
+
position: Vector2;
|
|
7
|
+
owner: number;
|
|
8
|
+
population: number;
|
|
9
|
+
infection: number;
|
|
10
|
+
infectedBy: number;
|
|
11
|
+
}
|
|
12
|
+
export interface EnhancedHexGridEngine {
|
|
13
|
+
cells?: EnhancedHexCell[];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=HexGridEnhanced.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HexGridEnhanced.d.ts","sourceRoot":"","sources":["../src/HexGridEnhanced.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Snapshot API
|
|
3
|
+
*
|
|
4
|
+
* Single comprehensive API to get ALL statistics, predictions, and insights
|
|
5
|
+
* about the current game state in one easy method call.
|
|
6
|
+
*
|
|
7
|
+
* @module Snapshot
|
|
8
|
+
*
|
|
9
|
+
* @example Basic Usage
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { generateSnapshot } from '@buley/hexgrid-3d'
|
|
12
|
+
*
|
|
13
|
+
* const snapshot = generateSnapshot(cells, history, conquests, getNeighbors)
|
|
14
|
+
*
|
|
15
|
+
* // Access player data
|
|
16
|
+
* console.log(snapshot.players[0].winProbability) // 0.72
|
|
17
|
+
* console.log(snapshot.players[0].sparklineAscii) // "▁▂▃▅▆█"
|
|
18
|
+
*
|
|
19
|
+
* // Access game state
|
|
20
|
+
* console.log(snapshot.indices.dominance) // 0.65
|
|
21
|
+
* console.log(snapshot.predictions.likelyWinner) // 2
|
|
22
|
+
*
|
|
23
|
+
* // Get insights
|
|
24
|
+
* console.log(snapshot.insights)
|
|
25
|
+
* // ["🏆 Player 2 dominates with 65.2% of territory",
|
|
26
|
+
* // "🚀 Leader's territory growing steadily"]
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example Full Response Object
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // GameSnapshot example response:
|
|
32
|
+
* const exampleSnapshot: GameSnapshot = {
|
|
33
|
+
* timestamp: 1705678800000,
|
|
34
|
+
* turnNumber: 45,
|
|
35
|
+
* totalCells: 1000,
|
|
36
|
+
* occupiedCells: 850,
|
|
37
|
+
* playerCount: 4,
|
|
38
|
+
*
|
|
39
|
+
* players: [{
|
|
40
|
+
* id: 2,
|
|
41
|
+
* cellCount: 320,
|
|
42
|
+
* shareOfTotal: 0.376,
|
|
43
|
+
* rank: 1,
|
|
44
|
+
* historyLength: 45,
|
|
45
|
+
* history: [10, 15, 22, 35, ...],
|
|
46
|
+
* recentTrend: 'growing',
|
|
47
|
+
* trendSlope: 4.2,
|
|
48
|
+
* trendConfidence: 0.89,
|
|
49
|
+
* winProbability: 0.72,
|
|
50
|
+
* winCredibleInterval: [0.58, 0.84],
|
|
51
|
+
* forecastNext10: [325, 330, 338, ...],
|
|
52
|
+
* kalmanEstimate: 322.5,
|
|
53
|
+
* kalmanUncertainty: 12.3,
|
|
54
|
+
* conquestRate: 0.15,
|
|
55
|
+
* conquestRateCI: [0.12, 0.18],
|
|
56
|
+
* avgGrowthPerTurn: 6.8,
|
|
57
|
+
* volatility: 0.23,
|
|
58
|
+
* numRegions: 2,
|
|
59
|
+
* largestRegionSize: 290,
|
|
60
|
+
* borderCellCount: 85,
|
|
61
|
+
* compactness: 0.72,
|
|
62
|
+
* sparklineAscii: "▁▂▃▄▅▆▇█",
|
|
63
|
+
* sparklineSvgPath: "M0,30 L10,25 L20,18...",
|
|
64
|
+
* leadOverSecond: 45,
|
|
65
|
+
* turnsUntilOvertake: null
|
|
66
|
+
* }, ...],
|
|
67
|
+
*
|
|
68
|
+
* inequality: {
|
|
69
|
+
* gini: 0.42,
|
|
70
|
+
* theil: 0.35,
|
|
71
|
+
* atkinson: 0.28,
|
|
72
|
+
* herfindahl: 0.31,
|
|
73
|
+
* paretoRatio: 0.72,
|
|
74
|
+
* zipfCoefficient: 1.15,
|
|
75
|
+
* interpretation: "Emerging dominance"
|
|
76
|
+
* },
|
|
77
|
+
*
|
|
78
|
+
* indices: {
|
|
79
|
+
* dominance: 0.65,
|
|
80
|
+
* volatility: 0.35,
|
|
81
|
+
* predictability: 0.72,
|
|
82
|
+
* competitiveness: 0.45,
|
|
83
|
+
* stability: 0.68
|
|
84
|
+
* },
|
|
85
|
+
*
|
|
86
|
+
* predictions: {
|
|
87
|
+
* likelyWinner: 2,
|
|
88
|
+
* winnerConfidence: 0.72,
|
|
89
|
+
* estimatedTurnsToVictory: 25,
|
|
90
|
+
* isEndgame: false,
|
|
91
|
+
* secondPlaceChallenger: 3,
|
|
92
|
+
* comebackPossibility: 0.28
|
|
93
|
+
* },
|
|
94
|
+
*
|
|
95
|
+
* anomalies: {
|
|
96
|
+
* outliers: [{ playerId: 4, type: 'growth_explosion', ... }],
|
|
97
|
+
* hasAnomalies: true,
|
|
98
|
+
* anomalyCount: 1
|
|
99
|
+
* },
|
|
100
|
+
*
|
|
101
|
+
* insights: [
|
|
102
|
+
* "📈 Player 2 leads with majority control (37.6%)",
|
|
103
|
+
* "🚀 Leader's territory growing steadily (slope: 4.2/turn)",
|
|
104
|
+
* "🎯 Player 3 has 22.5% chance of winning"
|
|
105
|
+
* ]
|
|
106
|
+
* }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
import { type TerritoryStats } from './algorithms/AdvancedStatistics';
|
|
110
|
+
import { type ProbabilitySnapshot } from './algorithms/BayesianStatistics';
|
|
111
|
+
import { type OutlierResult, type TimeSeriesAnomaly, type GameAnomaly, type MultivariateOutlierResult } from './algorithms/OutlierDetection';
|
|
112
|
+
/**
|
|
113
|
+
* Player-specific statistics
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const player: PlayerSnapshot = {
|
|
118
|
+
* id: 1,
|
|
119
|
+
* cellCount: 150,
|
|
120
|
+
* shareOfTotal: 0.25,
|
|
121
|
+
* rank: 2,
|
|
122
|
+
* historyLength: 30,
|
|
123
|
+
* history: [10, 15, 25, 40, 60, 90, 120, 150],
|
|
124
|
+
* recentTrend: 'growing',
|
|
125
|
+
* trendSlope: 5.2,
|
|
126
|
+
* trendConfidence: 0.92,
|
|
127
|
+
* winProbability: 0.35,
|
|
128
|
+
* winCredibleInterval: [0.22, 0.48],
|
|
129
|
+
* forecastNext10: [155, 162, 170, 178, 186, 195, 204, 213, 223, 233],
|
|
130
|
+
* kalmanEstimate: 152.3,
|
|
131
|
+
* kalmanUncertainty: 8.5,
|
|
132
|
+
* conquestRate: 0.12,
|
|
133
|
+
* conquestRateCI: [0.08, 0.16],
|
|
134
|
+
* avgGrowthPerTurn: 4.8,
|
|
135
|
+
* volatility: 0.18,
|
|
136
|
+
* numRegions: 1,
|
|
137
|
+
* largestRegionSize: 150,
|
|
138
|
+
* borderCellCount: 42,
|
|
139
|
+
* compactness: 0.78,
|
|
140
|
+
* sparklineAscii: "▁▂▃▄▅▆▇█",
|
|
141
|
+
* sparklineSvgPath: "M0,30 L12.5,25 L25,18 L37.5,12...",
|
|
142
|
+
* leadOverSecond: null, // not the leader
|
|
143
|
+
* turnsUntilOvertake: 8
|
|
144
|
+
* }
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export interface PlayerSnapshot {
|
|
148
|
+
/** Unique player identifier */
|
|
149
|
+
id: number;
|
|
150
|
+
/** Current number of cells owned */
|
|
151
|
+
cellCount: number;
|
|
152
|
+
/** Fraction of total occupied cells (0-1) */
|
|
153
|
+
shareOfTotal: number;
|
|
154
|
+
/** Current ranking (1 = leader) */
|
|
155
|
+
rank: number;
|
|
156
|
+
/** Number of turns of history available */
|
|
157
|
+
historyLength: number;
|
|
158
|
+
/** Territory count history (last 20 turns unless includeFullHistory=true) */
|
|
159
|
+
history: number[];
|
|
160
|
+
/** Recent territory trend direction */
|
|
161
|
+
recentTrend: 'growing' | 'shrinking' | 'stable';
|
|
162
|
+
/** Linear regression slope (cells per turn) */
|
|
163
|
+
trendSlope: number;
|
|
164
|
+
/** R² confidence in trend (0-1) */
|
|
165
|
+
trendConfidence: number;
|
|
166
|
+
/** Bayesian probability of winning (0-1) */
|
|
167
|
+
winProbability: number;
|
|
168
|
+
/** 95% credible interval for win probability */
|
|
169
|
+
winCredibleInterval: [number, number];
|
|
170
|
+
/** Forecasted territory for next 10 turns */
|
|
171
|
+
forecastNext10: number[];
|
|
172
|
+
/** Kalman filter smoothed estimate */
|
|
173
|
+
kalmanEstimate: number;
|
|
174
|
+
/** Kalman filter uncertainty (±) */
|
|
175
|
+
kalmanUncertainty: number;
|
|
176
|
+
/** Bayesian conquest success rate */
|
|
177
|
+
conquestRate: number;
|
|
178
|
+
/** 95% credible interval for conquest rate */
|
|
179
|
+
conquestRateCI: [number, number];
|
|
180
|
+
/** Average cells gained per turn */
|
|
181
|
+
avgGrowthPerTurn: number;
|
|
182
|
+
/** Territory volatility (coefficient of variation) */
|
|
183
|
+
volatility: number;
|
|
184
|
+
/** Number of disconnected territory regions */
|
|
185
|
+
numRegions: number;
|
|
186
|
+
/** Size of largest connected region */
|
|
187
|
+
largestRegionSize: number;
|
|
188
|
+
/** Number of cells on territory border */
|
|
189
|
+
borderCellCount: number;
|
|
190
|
+
/** Territory shape compactness (0-1, higher = more compact) */
|
|
191
|
+
compactness: number;
|
|
192
|
+
/** ASCII sparkline visualization of history */
|
|
193
|
+
sparklineAscii: string;
|
|
194
|
+
/** SVG path data for sparkline */
|
|
195
|
+
sparklineSvgPath: string;
|
|
196
|
+
/** Lead over second place (null if not leader) */
|
|
197
|
+
leadOverSecond: number | null;
|
|
198
|
+
/** Estimated turns until this player could overtake leader */
|
|
199
|
+
turnsUntilOvertake: number | null;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Inequality metrics for territory distribution
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* const inequality: InequalityMetrics = {
|
|
207
|
+
* gini: 0.42, // 0=equal, 1=one player has all
|
|
208
|
+
* theil: 0.35, // 0=equal, higher=more unequal
|
|
209
|
+
* atkinson: 0.28, // Sensitive to lower end of distribution
|
|
210
|
+
* herfindahl: 0.31, // Market concentration (0.25=4 equal players)
|
|
211
|
+
* paretoRatio: 0.72, // Top player's share of total
|
|
212
|
+
* zipfCoefficient: 1.15, // Power law exponent
|
|
213
|
+
* interpretation: "Emerging dominance - one player pulling ahead"
|
|
214
|
+
* }
|
|
215
|
+
* ```
|
|
216
|
+
*/
|
|
217
|
+
export interface InequalityMetrics {
|
|
218
|
+
gini: number;
|
|
219
|
+
theil: number;
|
|
220
|
+
atkinson: number;
|
|
221
|
+
herfindahl: number;
|
|
222
|
+
paretoRatio: number;
|
|
223
|
+
zipfCoefficient: number;
|
|
224
|
+
interpretation: string;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Diversity/entropy metrics for territory distribution
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```typescript
|
|
231
|
+
* const diversity: DiversityMetrics = {
|
|
232
|
+
* shannon: 1.85, // Bits of information
|
|
233
|
+
* normalized: 0.92, // 0-1, relative to max possible
|
|
234
|
+
* renyi: 1.78, // Generalized entropy (order 2)
|
|
235
|
+
* tsallis: 1.52, // Non-extensive entropy
|
|
236
|
+
* interpretation: "High diversity - competitive game"
|
|
237
|
+
* }
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
export interface DiversityMetrics {
|
|
241
|
+
shannon: number;
|
|
242
|
+
normalized: number;
|
|
243
|
+
renyi: number;
|
|
244
|
+
tsallis: number;
|
|
245
|
+
interpretation: string;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Distribution statistics for territory counts
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```typescript
|
|
252
|
+
* const distribution: DistributionMetrics = {
|
|
253
|
+
* mean: 250,
|
|
254
|
+
* median: 220,
|
|
255
|
+
* stdDev: 85,
|
|
256
|
+
* skewness: 0.65, // Positive = right-skewed
|
|
257
|
+
* kurtosis: 2.8, // 3 = normal distribution
|
|
258
|
+
* coefficientOfVariation: 0.34,
|
|
259
|
+
* iqr: 120, // Interquartile range
|
|
260
|
+
* min: 85,
|
|
261
|
+
* max: 420,
|
|
262
|
+
* range: 335
|
|
263
|
+
* }
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export interface DistributionMetrics {
|
|
267
|
+
mean: number;
|
|
268
|
+
median: number;
|
|
269
|
+
stdDev: number;
|
|
270
|
+
skewness: number;
|
|
271
|
+
kurtosis: number;
|
|
272
|
+
coefficientOfVariation: number;
|
|
273
|
+
iqr: number;
|
|
274
|
+
min: number;
|
|
275
|
+
max: number;
|
|
276
|
+
range: number;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Game state indices (0-1 scale)
|
|
280
|
+
*
|
|
281
|
+
* @example
|
|
282
|
+
* ```typescript
|
|
283
|
+
* const indices: GameIndices = {
|
|
284
|
+
* dominance: 0.65, // One player controls 65% relative
|
|
285
|
+
* volatility: 0.35, // 35% average change per turn
|
|
286
|
+
* predictability: 0.72, // 72% confidence in predictions
|
|
287
|
+
* competitiveness: 0.45, // 45% competitive (55% decided)
|
|
288
|
+
* stability: 0.68 // 68% stable territories
|
|
289
|
+
* }
|
|
290
|
+
* ```
|
|
291
|
+
*/
|
|
292
|
+
export interface GameIndices {
|
|
293
|
+
/** How dominated by a single player (0=even, 1=total domination) */
|
|
294
|
+
dominance: number;
|
|
295
|
+
/** How much territory changes each turn (0=static, 1=chaotic) */
|
|
296
|
+
volatility: number;
|
|
297
|
+
/** How predictable outcomes are (0=random, 1=deterministic) */
|
|
298
|
+
predictability: number;
|
|
299
|
+
/** How close the competition (0=decided, 1=neck-and-neck) */
|
|
300
|
+
competitiveness: number;
|
|
301
|
+
/** How stable territory boundaries are (0=fluid, 1=locked) */
|
|
302
|
+
stability: number;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Game outcome predictions
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```typescript
|
|
309
|
+
* const predictions: GamePredictions = {
|
|
310
|
+
* likelyWinner: 2,
|
|
311
|
+
* winnerConfidence: 0.72,
|
|
312
|
+
* estimatedTurnsToVictory: 25,
|
|
313
|
+
* isEndgame: false,
|
|
314
|
+
* secondPlaceChallenger: 3,
|
|
315
|
+
* comebackPossibility: 0.28
|
|
316
|
+
* }
|
|
317
|
+
* ```
|
|
318
|
+
*/
|
|
319
|
+
export interface GamePredictions {
|
|
320
|
+
/** Player ID most likely to win */
|
|
321
|
+
likelyWinner: number | null;
|
|
322
|
+
/** Confidence in winner prediction (0-1) */
|
|
323
|
+
winnerConfidence: number;
|
|
324
|
+
/** Estimated turns until victory condition */
|
|
325
|
+
estimatedTurnsToVictory: number | null;
|
|
326
|
+
/** Whether game is in endgame phase */
|
|
327
|
+
isEndgame: boolean;
|
|
328
|
+
/** Second place player who could challenge */
|
|
329
|
+
secondPlaceChallenger: number | null;
|
|
330
|
+
/** Probability of comeback by non-leader */
|
|
331
|
+
comebackPossibility: number;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Territory topology metrics
|
|
335
|
+
*
|
|
336
|
+
* @example
|
|
337
|
+
* ```typescript
|
|
338
|
+
* const topology: TopologyMetrics = {
|
|
339
|
+
* totalRegions: 8,
|
|
340
|
+
* averageRegionSize: 125,
|
|
341
|
+
* territoryFragmentation: 0.35,
|
|
342
|
+
* borderCellPercentage: 0.42,
|
|
343
|
+
* avgCompactness: 0.68
|
|
344
|
+
* }
|
|
345
|
+
* ```
|
|
346
|
+
*/
|
|
347
|
+
export interface TopologyMetrics {
|
|
348
|
+
/** Total disconnected regions across all players */
|
|
349
|
+
totalRegions: number;
|
|
350
|
+
/** Average cells per region */
|
|
351
|
+
averageRegionSize: number;
|
|
352
|
+
/** How fragmented territories are (0=solid, 1=scattered) */
|
|
353
|
+
territoryFragmentation: number;
|
|
354
|
+
/** Percentage of cells that are border cells */
|
|
355
|
+
borderCellPercentage: number;
|
|
356
|
+
/** Average compactness across all territories */
|
|
357
|
+
avgCompactness: number;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Time series analysis metrics
|
|
361
|
+
*
|
|
362
|
+
* @example
|
|
363
|
+
* ```typescript
|
|
364
|
+
* const timeSeries: TimeSeriesMetrics = {
|
|
365
|
+
* overallTrend: 'divergent', // Players spreading apart
|
|
366
|
+
* changePoints: [12, 28, 45], // Turn numbers where behavior changed
|
|
367
|
+
* trendStrength: 0.78, // Strength of overall trend
|
|
368
|
+
* autocorrelation: 0.65, // How correlated with past values
|
|
369
|
+
* seasonality: false // No periodic patterns detected
|
|
370
|
+
* }
|
|
371
|
+
* ```
|
|
372
|
+
*/
|
|
373
|
+
export interface TimeSeriesMetrics {
|
|
374
|
+
/** Overall trend type */
|
|
375
|
+
overallTrend: 'convergent' | 'divergent' | 'cyclical' | 'chaotic';
|
|
376
|
+
/** Turn numbers where significant changes occurred */
|
|
377
|
+
changePoints: number[];
|
|
378
|
+
/** Strength of overall trend (0-1) */
|
|
379
|
+
trendStrength: number;
|
|
380
|
+
/** Autocorrelation coefficient */
|
|
381
|
+
autocorrelation: number;
|
|
382
|
+
/** Whether periodic patterns detected */
|
|
383
|
+
seasonality: boolean;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Comparison metrics with past states
|
|
387
|
+
*
|
|
388
|
+
* @example
|
|
389
|
+
* ```typescript
|
|
390
|
+
* const comparisons: ComparisonMetrics = {
|
|
391
|
+
* vs5TurnsAgo: { 1: 15, 2: 8, 3: -12, 4: -11 }, // Territory change
|
|
392
|
+
* vs10TurnsAgo: { 1: 45, 2: 22, 3: -35, 4: -32 },
|
|
393
|
+
* divergenceFromUniform: 0.42, // How far from equal distribution
|
|
394
|
+
* divergenceFromPrevious: 0.08 // How much changed from last turn
|
|
395
|
+
* }
|
|
396
|
+
* ```
|
|
397
|
+
*/
|
|
398
|
+
export interface ComparisonMetrics {
|
|
399
|
+
/** Territory change per player vs 5 turns ago */
|
|
400
|
+
vs5TurnsAgo: {
|
|
401
|
+
[playerId: number]: number;
|
|
402
|
+
};
|
|
403
|
+
/** Territory change per player vs 10 turns ago */
|
|
404
|
+
vs10TurnsAgo: {
|
|
405
|
+
[playerId: number]: number;
|
|
406
|
+
};
|
|
407
|
+
/** KL divergence from uniform distribution */
|
|
408
|
+
divergenceFromUniform: number;
|
|
409
|
+
/** JS divergence from previous turn */
|
|
410
|
+
divergenceFromPrevious: number;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Anomaly detection summary
|
|
414
|
+
*
|
|
415
|
+
* @example
|
|
416
|
+
* ```typescript
|
|
417
|
+
* const anomalies: AnomalySummary = {
|
|
418
|
+
* outliers: [{
|
|
419
|
+
* playerId: 2,
|
|
420
|
+
* type: 'growth_explosion',
|
|
421
|
+
* severity: 3.2,
|
|
422
|
+
* timestamp: 1705678800000,
|
|
423
|
+
* description: 'Unusual territory gain: +45 cells in one turn',
|
|
424
|
+
* metrics: { growth: 45, avgGrowth: 5.2, zscore: 3.2 }
|
|
425
|
+
* }],
|
|
426
|
+
* hasAnomalies: true,
|
|
427
|
+
* anomalyCount: 1,
|
|
428
|
+
* mostSevere: 'growth_explosion'
|
|
429
|
+
* }
|
|
430
|
+
* ```
|
|
431
|
+
*/
|
|
432
|
+
export interface AnomalySummary {
|
|
433
|
+
/** Detected game anomalies */
|
|
434
|
+
outliers: GameAnomaly[];
|
|
435
|
+
/** Whether any anomalies were detected */
|
|
436
|
+
hasAnomalies: boolean;
|
|
437
|
+
/** Total count of anomalies */
|
|
438
|
+
anomalyCount: number;
|
|
439
|
+
/** Type of most severe anomaly (if any) */
|
|
440
|
+
mostSevere: string | null;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Complete game snapshot with all statistics
|
|
444
|
+
*
|
|
445
|
+
* @example Full Response Structure
|
|
446
|
+
* ```typescript
|
|
447
|
+
* const snapshot: GameSnapshot = {
|
|
448
|
+
* timestamp: 1705678800000,
|
|
449
|
+
* turnNumber: 45,
|
|
450
|
+
* totalCells: 1000,
|
|
451
|
+
* occupiedCells: 850,
|
|
452
|
+
* playerCount: 4,
|
|
453
|
+
*
|
|
454
|
+
* players: [
|
|
455
|
+
* { id: 2, cellCount: 320, shareOfTotal: 0.376, rank: 1, ... },
|
|
456
|
+
* { id: 1, cellCount: 210, shareOfTotal: 0.247, rank: 2, ... },
|
|
457
|
+
* { id: 3, cellCount: 180, shareOfTotal: 0.212, rank: 3, ... },
|
|
458
|
+
* { id: 4, cellCount: 140, shareOfTotal: 0.165, rank: 4, ... }
|
|
459
|
+
* ],
|
|
460
|
+
*
|
|
461
|
+
* territoryStats: { ... },
|
|
462
|
+
*
|
|
463
|
+
* inequality: {
|
|
464
|
+
* gini: 0.42,
|
|
465
|
+
* theil: 0.35,
|
|
466
|
+
* atkinson: 0.28,
|
|
467
|
+
* herfindahl: 0.31,
|
|
468
|
+
* paretoRatio: 0.72,
|
|
469
|
+
* zipfCoefficient: 1.15,
|
|
470
|
+
* interpretation: "Emerging dominance"
|
|
471
|
+
* },
|
|
472
|
+
*
|
|
473
|
+
* diversity: {
|
|
474
|
+
* shannon: 1.85,
|
|
475
|
+
* normalized: 0.92,
|
|
476
|
+
* renyi: 1.78,
|
|
477
|
+
* tsallis: 1.52,
|
|
478
|
+
* interpretation: "High diversity"
|
|
479
|
+
* },
|
|
480
|
+
*
|
|
481
|
+
* distribution: {
|
|
482
|
+
* mean: 212.5, median: 195, stdDev: 68.2,
|
|
483
|
+
* skewness: 0.65, kurtosis: 2.8,
|
|
484
|
+
* coefficientOfVariation: 0.32,
|
|
485
|
+
* iqr: 95, min: 140, max: 320, range: 180
|
|
486
|
+
* },
|
|
487
|
+
*
|
|
488
|
+
* indices: {
|
|
489
|
+
* dominance: 0.65,
|
|
490
|
+
* volatility: 0.35,
|
|
491
|
+
* predictability: 0.72,
|
|
492
|
+
* competitiveness: 0.45,
|
|
493
|
+
* stability: 0.68
|
|
494
|
+
* },
|
|
495
|
+
*
|
|
496
|
+
* predictions: {
|
|
497
|
+
* likelyWinner: 2,
|
|
498
|
+
* winnerConfidence: 0.72,
|
|
499
|
+
* estimatedTurnsToVictory: 25,
|
|
500
|
+
* isEndgame: false,
|
|
501
|
+
* secondPlaceChallenger: 1,
|
|
502
|
+
* comebackPossibility: 0.28
|
|
503
|
+
* },
|
|
504
|
+
*
|
|
505
|
+
* anomalies: {
|
|
506
|
+
* outliers: [],
|
|
507
|
+
* hasAnomalies: false,
|
|
508
|
+
* anomalyCount: 0,
|
|
509
|
+
* mostSevere: null
|
|
510
|
+
* },
|
|
511
|
+
*
|
|
512
|
+
* probability: { winProbabilities: Map, ... },
|
|
513
|
+
* topology: { totalRegions: 8, ... },
|
|
514
|
+
* timeSeries: { overallTrend: 'divergent', ... },
|
|
515
|
+
* comparisons: { vs5TurnsAgo: {...}, ... },
|
|
516
|
+
*
|
|
517
|
+
* insights: [
|
|
518
|
+
* "📈 Player 2 leads with 37.6% of territory",
|
|
519
|
+
* "🚀 Leader's territory growing steadily",
|
|
520
|
+
* "🎯 72% confidence in Player 2 victory"
|
|
521
|
+
* ]
|
|
522
|
+
* }
|
|
523
|
+
* ```
|
|
524
|
+
*/
|
|
525
|
+
export interface GameSnapshot {
|
|
526
|
+
/** Unix timestamp when snapshot was generated */
|
|
527
|
+
timestamp: number;
|
|
528
|
+
/** Current turn number */
|
|
529
|
+
turnNumber: number;
|
|
530
|
+
/** Total cells on the grid */
|
|
531
|
+
totalCells: number;
|
|
532
|
+
/** Number of cells with an owner */
|
|
533
|
+
occupiedCells: number;
|
|
534
|
+
/** Number of active players */
|
|
535
|
+
playerCount: number;
|
|
536
|
+
/** Detailed stats for each player, sorted by rank */
|
|
537
|
+
players: PlayerSnapshot[];
|
|
538
|
+
/** Aggregate territory statistics */
|
|
539
|
+
territoryStats: TerritoryStats;
|
|
540
|
+
/** Inequality measures for territory distribution */
|
|
541
|
+
inequality: InequalityMetrics;
|
|
542
|
+
/** Diversity/entropy measures */
|
|
543
|
+
diversity: DiversityMetrics;
|
|
544
|
+
/** Statistical distribution of territory counts */
|
|
545
|
+
distribution: DistributionMetrics;
|
|
546
|
+
/** Normalized game state indicators */
|
|
547
|
+
indices: GameIndices;
|
|
548
|
+
/** Game outcome predictions */
|
|
549
|
+
predictions: GamePredictions;
|
|
550
|
+
/** Detected anomalies and outliers */
|
|
551
|
+
anomalies: AnomalySummary;
|
|
552
|
+
/** Full Bayesian probability analysis */
|
|
553
|
+
probability: ProbabilitySnapshot;
|
|
554
|
+
/** Territory topology metrics */
|
|
555
|
+
topology: TopologyMetrics;
|
|
556
|
+
/** Time series analysis */
|
|
557
|
+
timeSeries: TimeSeriesMetrics;
|
|
558
|
+
/** Comparisons with past states */
|
|
559
|
+
comparisons: ComparisonMetrics;
|
|
560
|
+
/** Human-readable insights and observations */
|
|
561
|
+
insights: string[];
|
|
562
|
+
}
|
|
563
|
+
export type { TerritoryStats, ProbabilitySnapshot, OutlierResult, TimeSeriesAnomaly, GameAnomaly, MultivariateOutlierResult, };
|
|
564
|
+
export interface SnapshotConfig {
|
|
565
|
+
/** Number of turns for forecasting */
|
|
566
|
+
forecastHorizon?: number;
|
|
567
|
+
/** Number of Monte Carlo samples */
|
|
568
|
+
monteCarloSamples?: number;
|
|
569
|
+
/** Include detailed history */
|
|
570
|
+
includeFullHistory?: boolean;
|
|
571
|
+
/** Calculate topology (can be expensive) */
|
|
572
|
+
calculateTopology?: boolean;
|
|
573
|
+
/** Generate insights */
|
|
574
|
+
generateInsights?: boolean;
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* Generate comprehensive snapshot from game state
|
|
578
|
+
*/
|
|
579
|
+
export declare function generateSnapshot(cells: {
|
|
580
|
+
owner: number;
|
|
581
|
+
population?: number;
|
|
582
|
+
}[], territoryHistory: Map<number, number[]>, conquestCounts: Map<number, {
|
|
583
|
+
successes: number;
|
|
584
|
+
opportunities: number;
|
|
585
|
+
}>, getNeighbors: (cellIndex: number) => number[], config?: SnapshotConfig): GameSnapshot;
|
|
586
|
+
/**
|
|
587
|
+
* Format snapshot as human-readable text
|
|
588
|
+
*/
|
|
589
|
+
export declare function formatSnapshotAsText(snapshot: GameSnapshot): string;
|
|
590
|
+
/**
|
|
591
|
+
* Export snapshot as JSON (removes functions)
|
|
592
|
+
*/
|
|
593
|
+
export declare function exportSnapshotAsJSON(snapshot: GameSnapshot): string;
|
|
594
|
+
//# sourceMappingURL=Snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Snapshot.d.ts","sourceRoot":"","sources":["../src/Snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GG;AAEH,OAAO,EA2BL,KAAK,cAAc,EACpB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAsBL,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAaL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC/B,MAAM,+BAA+B,CAAC;AAWvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IAGX,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IAGb,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAChD,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IAGxB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,6CAA6C;IAC7C,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAG1B,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,oCAAoC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IAGnB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IAGpB,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IAGzB,kDAAkD;IAClD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8DAA8D;IAC9D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,4CAA4C;IAC5C,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gDAAgD;IAChD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,YAAY,EAAE,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAClE,sDAAsD;IACtD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,WAAW,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC5C,kDAAkD;IAClD,YAAY,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,8CAA8C;IAC9C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uCAAuC;IACvC,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,0CAA0C;IAC1C,YAAY,EAAE,OAAO,CAAC;IACtB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AACH,MAAM,WAAW,YAAY;IAE3B,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IAGtB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,OAAO,EAAE,cAAc,EAAE,CAAC;IAG1B,qCAAqC;IACrC,cAAc,EAAE,cAAc,CAAC;IAG/B,qDAAqD;IACrD,UAAU,EAAE,iBAAiB,CAAC;IAG9B,iCAAiC;IACjC,SAAS,EAAE,gBAAgB,CAAC;IAG5B,mDAAmD;IACnD,YAAY,EAAE,mBAAmB,CAAC;IAGlC,uCAAuC;IACvC,OAAO,EAAE,WAAW,CAAC;IAGrB,+BAA+B;IAC/B,WAAW,EAAE,eAAe,CAAC;IAG7B,sCAAsC;IACtC,SAAS,EAAE,cAAc,CAAC;IAG1B,yCAAyC;IACzC,WAAW,EAAE,mBAAmB,CAAC;IAGjC,iCAAiC;IACjC,QAAQ,EAAE,eAAe,CAAC;IAG1B,2BAA2B;IAC3B,UAAU,EAAE,iBAAiB,CAAC;IAG9B,mCAAmC;IACnC,WAAW,EAAE,iBAAiB,CAAC;IAG/B,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAGD,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,yBAAyB,GAC1B,CAAC;AAMF,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAC/C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACvC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAAE,EAC7C,MAAM,GAAE,cAAmB,GAC1B,YAAY,CA6tBd;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAuHnE;AAQD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAWnE"}
|