homebridge 2.0.0-alpha.42 → 2.0.0-alpha.44
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/api.d.ts +64 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +54 -0
- package/dist/api.js.map +1 -1
- package/dist/bridgeService.d.ts +1 -4
- package/dist/bridgeService.d.ts.map +1 -1
- package/dist/bridgeService.js +5 -10
- package/dist/bridgeService.js.map +1 -1
- package/dist/bridgeTypes.d.ts +54 -0
- package/dist/bridgeTypes.d.ts.map +1 -0
- package/dist/bridgeTypes.js +8 -0
- package/dist/bridgeTypes.js.map +1 -0
- package/dist/childBridgeFork.d.ts +2 -6
- package/dist/childBridgeFork.d.ts.map +1 -1
- package/dist/childBridgeFork.js +34 -93
- package/dist/childBridgeFork.js.map +1 -1
- package/dist/childBridgeService.d.ts +9 -7
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js +9 -2
- package/dist/childBridgeService.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -3
- package/dist/cli.js.map +1 -1
- package/dist/ipcService.d.ts +2 -12
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/ipcService.js +0 -7
- package/dist/ipcService.js.map +1 -1
- package/dist/matter/index.d.ts +1 -1
- package/dist/matter/index.d.ts.map +1 -1
- package/dist/matter/index.js.map +1 -1
- package/dist/matter/matterAccessoryCache.d.ts +73 -0
- package/dist/matter/matterAccessoryCache.d.ts.map +1 -0
- package/dist/matter/matterAccessoryCache.js +168 -0
- package/dist/matter/matterAccessoryCache.js.map +1 -0
- package/dist/matter/matterBehaviors.d.ts +123 -0
- package/dist/matter/matterBehaviors.d.ts.map +1 -0
- package/dist/matter/matterBehaviors.js +582 -0
- package/dist/matter/matterBehaviors.js.map +1 -0
- package/dist/matter/matterConfigValidator.d.ts +0 -1
- package/dist/matter/matterConfigValidator.d.ts.map +1 -1
- package/dist/matter/matterConfigValidator.js +15 -45
- package/dist/matter/matterConfigValidator.js.map +1 -1
- package/dist/matter/matterErrorHandler.d.ts +1 -1
- package/dist/matter/matterErrorHandler.d.ts.map +1 -1
- package/dist/matter/matterErrorHandler.js +35 -22
- package/dist/matter/matterErrorHandler.js.map +1 -1
- package/dist/matter/matterNetworkMonitor.d.ts +3 -0
- package/dist/matter/matterNetworkMonitor.d.ts.map +1 -1
- package/dist/matter/matterNetworkMonitor.js +49 -26
- package/dist/matter/matterNetworkMonitor.js.map +1 -1
- package/dist/matter/matterServer.d.ts +80 -5
- package/dist/matter/matterServer.d.ts.map +1 -1
- package/dist/matter/matterServer.js +512 -60
- package/dist/matter/matterServer.js.map +1 -1
- package/dist/matter/matterSharedTypes.d.ts +27 -21
- package/dist/matter/matterSharedTypes.d.ts.map +1 -1
- package/dist/matter/matterSharedTypes.js +3 -0
- package/dist/matter/matterSharedTypes.js.map +1 -1
- package/dist/matter/matterStorage.d.ts +17 -3
- package/dist/matter/matterStorage.d.ts.map +1 -1
- package/dist/matter/matterStorage.js +135 -38
- package/dist/matter/matterStorage.js.map +1 -1
- package/dist/matter/matterTypes.d.ts +68 -19
- package/dist/matter/matterTypes.d.ts.map +1 -1
- package/dist/matter/matterTypes.js.map +1 -1
- package/dist/matter/matterValidation.d.ts +57 -0
- package/dist/matter/matterValidation.d.ts.map +1 -0
- package/dist/matter/matterValidation.js +100 -0
- package/dist/matter/matterValidation.js.map +1 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +2 -4
- package/dist/plugin.js.map +1 -1
- package/dist/server.d.ts +0 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +69 -52
- package/dist/server.js.map +1 -1
- package/package.json +5 -5
- package/dist/matter/matterDiagnostics.d.ts +0 -121
- package/dist/matter/matterDiagnostics.d.ts.map +0 -1
- package/dist/matter/matterDiagnostics.js +0 -323
- package/dist/matter/matterDiagnostics.js.map +0 -1
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
/* global NodeJS */
|
|
2
|
-
/**
|
|
3
|
-
* Matter Diagnostics
|
|
4
|
-
*
|
|
5
|
-
* Comprehensive diagnostics and health monitoring for Matter integration
|
|
6
|
-
*/
|
|
7
|
-
import * as os from 'node:os';
|
|
8
|
-
import process from 'node:process';
|
|
9
|
-
import { Logger } from '../logger.js';
|
|
10
|
-
import { errorHandler } from './matterErrorHandler.js';
|
|
11
|
-
import { networkMonitor } from './matterNetworkMonitor.js';
|
|
12
|
-
const log = Logger.withPrefix('Matter');
|
|
13
|
-
export class MatterDiagnostics {
|
|
14
|
-
static instance;
|
|
15
|
-
performanceMetrics;
|
|
16
|
-
diagnosticInterval = null;
|
|
17
|
-
isDiagnosticsEnabled = false;
|
|
18
|
-
lastHealthStatus = null;
|
|
19
|
-
constructor() {
|
|
20
|
-
this.performanceMetrics = {
|
|
21
|
-
syncTimes: [],
|
|
22
|
-
startTime: new Date(),
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
static getInstance() {
|
|
26
|
-
if (!MatterDiagnostics.instance) {
|
|
27
|
-
MatterDiagnostics.instance = new MatterDiagnostics();
|
|
28
|
-
}
|
|
29
|
-
return MatterDiagnostics.instance;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Start diagnostics collection
|
|
33
|
-
*/
|
|
34
|
-
startDiagnostics(intervalMs = 60000) {
|
|
35
|
-
if (this.isDiagnosticsEnabled) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
this.isDiagnosticsEnabled = true;
|
|
39
|
-
log.debug('Starting Matter diagnostics collection');
|
|
40
|
-
// Collect diagnostics periodically
|
|
41
|
-
this.diagnosticInterval = setInterval(() => {
|
|
42
|
-
// Fire-and-forget with error handling
|
|
43
|
-
this.collectAndLogDiagnostics().catch((error) => {
|
|
44
|
-
log.debug('Failed to collect diagnostics:', error);
|
|
45
|
-
});
|
|
46
|
-
}, intervalMs);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Stop diagnostics collection
|
|
50
|
-
*/
|
|
51
|
-
stopDiagnostics() {
|
|
52
|
-
if (this.diagnosticInterval) {
|
|
53
|
-
clearInterval(this.diagnosticInterval);
|
|
54
|
-
this.diagnosticInterval = null;
|
|
55
|
-
}
|
|
56
|
-
this.isDiagnosticsEnabled = false;
|
|
57
|
-
log.debug('Stopped Matter diagnostics collection');
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Record sync performance
|
|
61
|
-
*/
|
|
62
|
-
recordSyncTime(timeMs) {
|
|
63
|
-
this.performanceMetrics.syncTimes.push(timeMs);
|
|
64
|
-
// Keep only last 100 measurements
|
|
65
|
-
if (this.performanceMetrics.syncTimes.length > 100) {
|
|
66
|
-
this.performanceMetrics.syncTimes.shift();
|
|
67
|
-
}
|
|
68
|
-
// Log warning for slow syncs
|
|
69
|
-
if (timeMs > 1000) {
|
|
70
|
-
log.warn(`Slow Matter sync detected: ${timeMs}ms`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Collect all diagnostic information
|
|
75
|
-
*/
|
|
76
|
-
async collectDiagnostics(matterInfo) {
|
|
77
|
-
return {
|
|
78
|
-
timestamp: new Date(),
|
|
79
|
-
system: this.collectSystemInfo(),
|
|
80
|
-
matter: matterInfo || this.getDefaultMatterInfo(),
|
|
81
|
-
network: this.collectNetworkInfo(),
|
|
82
|
-
errors: this.collectErrorInfo(),
|
|
83
|
-
performance: this.collectPerformanceInfo(),
|
|
84
|
-
health: this.assessHealth(),
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Collect system information
|
|
89
|
-
*/
|
|
90
|
-
collectSystemInfo() {
|
|
91
|
-
const totalMem = os.totalmem();
|
|
92
|
-
const freeMem = os.freemem();
|
|
93
|
-
const usedMem = totalMem - freeMem;
|
|
94
|
-
const cpus = os.cpus();
|
|
95
|
-
const avgLoad = os.loadavg()[0];
|
|
96
|
-
return {
|
|
97
|
-
platform: os.platform(),
|
|
98
|
-
arch: os.arch(),
|
|
99
|
-
nodeVersion: process.version,
|
|
100
|
-
uptime: os.uptime(),
|
|
101
|
-
memory: {
|
|
102
|
-
total: totalMem,
|
|
103
|
-
free: freeMem,
|
|
104
|
-
used: usedMem,
|
|
105
|
-
percentage: (usedMem / totalMem) * 100,
|
|
106
|
-
},
|
|
107
|
-
cpu: {
|
|
108
|
-
model: cpus[0]?.model || 'Unknown',
|
|
109
|
-
cores: cpus.length,
|
|
110
|
-
usage: avgLoad,
|
|
111
|
-
},
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Get default Matter info
|
|
116
|
-
*/
|
|
117
|
-
getDefaultMatterInfo() {
|
|
118
|
-
return {
|
|
119
|
-
enabled: false,
|
|
120
|
-
initialized: false,
|
|
121
|
-
running: false,
|
|
122
|
-
deviceCount: 0,
|
|
123
|
-
bridgeCount: 0,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Collect network information
|
|
128
|
-
*/
|
|
129
|
-
collectNetworkInfo() {
|
|
130
|
-
const status = networkMonitor.getStatus();
|
|
131
|
-
return {
|
|
132
|
-
online: status.isOnline,
|
|
133
|
-
interfaces: status.interfaces,
|
|
134
|
-
primaryInterface: status.primaryInterface,
|
|
135
|
-
lastCheck: status.lastCheck,
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Collect error information
|
|
140
|
-
*/
|
|
141
|
-
collectErrorInfo() {
|
|
142
|
-
const errorStats = errorHandler.getErrorStats();
|
|
143
|
-
let total = 0;
|
|
144
|
-
const byType = {};
|
|
145
|
-
const recent = [];
|
|
146
|
-
for (const [type, stats] of Object.entries(errorStats)) {
|
|
147
|
-
total += stats.count;
|
|
148
|
-
byType[type] = stats.count;
|
|
149
|
-
if (stats.lastError) {
|
|
150
|
-
recent.push({
|
|
151
|
-
type,
|
|
152
|
-
message: stats.lastError.message,
|
|
153
|
-
timestamp: stats.lastError.timestamp,
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
// Sort recent errors by timestamp
|
|
158
|
-
recent.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
|
|
159
|
-
return {
|
|
160
|
-
total,
|
|
161
|
-
byType,
|
|
162
|
-
recent: recent.slice(0, 10), // Keep only 10 most recent
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Collect performance information
|
|
167
|
-
*/
|
|
168
|
-
collectPerformanceInfo() {
|
|
169
|
-
const syncTimes = this.performanceMetrics.syncTimes;
|
|
170
|
-
const avgSyncTime = syncTimes.length > 0
|
|
171
|
-
? syncTimes.reduce((a, b) => a + b, 0) / syncTimes.length
|
|
172
|
-
: 0;
|
|
173
|
-
return {
|
|
174
|
-
syncLatency: syncTimes.slice(-10), // Last 10 measurements
|
|
175
|
-
averageSyncTime: avgSyncTime,
|
|
176
|
-
memoryUsage: process.memoryUsage().heapUsed,
|
|
177
|
-
eventLoopLag: 0, // Would need additional monitoring
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Assess overall health
|
|
182
|
-
*/
|
|
183
|
-
assessHealth() {
|
|
184
|
-
const issues = [];
|
|
185
|
-
const recommendations = [];
|
|
186
|
-
// Check network
|
|
187
|
-
const networkStatus = networkMonitor.getStatus();
|
|
188
|
-
if (!networkStatus.isOnline) {
|
|
189
|
-
issues.push('Network is offline');
|
|
190
|
-
recommendations.push('Check network connectivity');
|
|
191
|
-
}
|
|
192
|
-
else if (networkStatus.consecutiveFailures > 0) {
|
|
193
|
-
issues.push('Intermittent network issues detected');
|
|
194
|
-
recommendations.push('Monitor network stability');
|
|
195
|
-
}
|
|
196
|
-
// Check errors
|
|
197
|
-
const errorStats = errorHandler.getErrorStats();
|
|
198
|
-
const totalErrors = Object.values(errorStats)
|
|
199
|
-
.reduce((sum, stat) => sum + stat.count, 0);
|
|
200
|
-
if (totalErrors > 10) {
|
|
201
|
-
issues.push(`High error rate: ${totalErrors} errors`);
|
|
202
|
-
recommendations.push('Review error logs for patterns');
|
|
203
|
-
}
|
|
204
|
-
// Check performance
|
|
205
|
-
const perfInfo = this.collectPerformanceInfo();
|
|
206
|
-
if (perfInfo.averageSyncTime > 500) {
|
|
207
|
-
issues.push(`Slow sync performance: ${perfInfo.averageSyncTime.toFixed(0)}ms average`);
|
|
208
|
-
recommendations.push('Consider reducing device count or optimizing sync frequency');
|
|
209
|
-
}
|
|
210
|
-
// Check memory (raised threshold to 95% to reduce false positives)
|
|
211
|
-
const systemInfo = this.collectSystemInfo();
|
|
212
|
-
if (systemInfo.memory.percentage > 95) {
|
|
213
|
-
issues.push(`High memory usage: ${systemInfo.memory.percentage.toFixed(1)}%`);
|
|
214
|
-
recommendations.push('Consider increasing system memory or reducing load');
|
|
215
|
-
}
|
|
216
|
-
else if (systemInfo.memory.percentage > 90) {
|
|
217
|
-
// Only log in debug mode for 90-95% range
|
|
218
|
-
log.debug(`Memory usage at ${systemInfo.memory.percentage.toFixed(1)}%`);
|
|
219
|
-
}
|
|
220
|
-
// Determine overall health
|
|
221
|
-
let overall;
|
|
222
|
-
if (issues.length === 0) {
|
|
223
|
-
overall = 'healthy';
|
|
224
|
-
}
|
|
225
|
-
else if (issues.length <= 2) {
|
|
226
|
-
overall = 'degraded';
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
overall = 'unhealthy';
|
|
230
|
-
}
|
|
231
|
-
return {
|
|
232
|
-
overall,
|
|
233
|
-
issues,
|
|
234
|
-
recommendations,
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Collect and log diagnostics
|
|
239
|
-
*/
|
|
240
|
-
async collectAndLogDiagnostics() {
|
|
241
|
-
const diagnostics = await this.collectDiagnostics();
|
|
242
|
-
// Only log health status if it changed or is unhealthy
|
|
243
|
-
if (diagnostics.health.overall !== this.lastHealthStatus) {
|
|
244
|
-
this.lastHealthStatus = diagnostics.health.overall;
|
|
245
|
-
if (diagnostics.health.overall !== 'healthy') {
|
|
246
|
-
log.warn(`Matter health status: ${diagnostics.health.overall}`);
|
|
247
|
-
for (const issue of diagnostics.health.issues) {
|
|
248
|
-
log.warn(` - ${issue}`);
|
|
249
|
-
}
|
|
250
|
-
for (const recommendation of diagnostics.health.recommendations) {
|
|
251
|
-
log.info(` 💡 ${recommendation}`);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
log.info('Matter health status: healthy');
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
// Log debug information
|
|
259
|
-
log.debug('Matter diagnostics:', {
|
|
260
|
-
health: diagnostics.health.overall,
|
|
261
|
-
errors: diagnostics.errors.total,
|
|
262
|
-
devices: diagnostics.matter.deviceCount,
|
|
263
|
-
avgSyncTime: `${diagnostics.performance.averageSyncTime.toFixed(0)}ms`,
|
|
264
|
-
memory: `${(diagnostics.system.memory.percentage).toFixed(1)}%`,
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Generate diagnostic report
|
|
269
|
-
*/
|
|
270
|
-
async generateReport(matterInfo) {
|
|
271
|
-
const diagnostics = await this.collectDiagnostics(matterInfo);
|
|
272
|
-
return `
|
|
273
|
-
Matter Diagnostics Report
|
|
274
|
-
========================
|
|
275
|
-
Generated: ${diagnostics.timestamp.toISOString()}
|
|
276
|
-
|
|
277
|
-
System Information
|
|
278
|
-
------------------
|
|
279
|
-
Platform: ${diagnostics.system.platform} (${diagnostics.system.arch})
|
|
280
|
-
Node Version: ${diagnostics.system.nodeVersion}
|
|
281
|
-
System Uptime: ${(diagnostics.system.uptime / 3600).toFixed(1)} hours
|
|
282
|
-
Memory: ${(diagnostics.system.memory.used / 1024 / 1024 / 1024).toFixed(1)}GB / ${(diagnostics.system.memory.total / 1024 / 1024 / 1024).toFixed(1)}GB (${diagnostics.system.memory.percentage.toFixed(1)}%)
|
|
283
|
-
CPU: ${diagnostics.system.cpu.model} (${diagnostics.system.cpu.cores} cores)
|
|
284
|
-
|
|
285
|
-
Matter Status
|
|
286
|
-
-------------
|
|
287
|
-
Enabled: ${diagnostics.matter.enabled}
|
|
288
|
-
Initialized: ${diagnostics.matter.initialized}
|
|
289
|
-
Running: ${diagnostics.matter.running}
|
|
290
|
-
Port: ${diagnostics.matter.port || 'N/A'}
|
|
291
|
-
Devices: ${diagnostics.matter.deviceCount}
|
|
292
|
-
Bridges: ${diagnostics.matter.bridgeCount}
|
|
293
|
-
|
|
294
|
-
Network Status
|
|
295
|
-
--------------
|
|
296
|
-
Online: ${diagnostics.network.online}
|
|
297
|
-
Interfaces: ${diagnostics.network.interfaces.join(', ') || 'None'}
|
|
298
|
-
Primary: ${diagnostics.network.primaryInterface || 'N/A'}
|
|
299
|
-
Last Check: ${diagnostics.network.lastCheck.toISOString()}
|
|
300
|
-
|
|
301
|
-
Error Summary
|
|
302
|
-
-------------
|
|
303
|
-
Total Errors: ${diagnostics.errors.total}
|
|
304
|
-
${Object.entries(diagnostics.errors.byType)
|
|
305
|
-
.map(([type, count]) => ` ${type}: ${count}`)
|
|
306
|
-
.join('\n')}
|
|
307
|
-
|
|
308
|
-
Performance
|
|
309
|
-
-----------
|
|
310
|
-
Average Sync Time: ${diagnostics.performance.averageSyncTime.toFixed(0)}ms
|
|
311
|
-
Memory Usage: ${(diagnostics.performance.memoryUsage / 1024 / 1024).toFixed(1)}MB
|
|
312
|
-
|
|
313
|
-
Health Assessment
|
|
314
|
-
-----------------
|
|
315
|
-
Overall: ${diagnostics.health.overall.toUpperCase()}
|
|
316
|
-
${diagnostics.health.issues.length > 0 ? `Issues:\n${diagnostics.health.issues.map(i => ` - ${i}`).join('\n')}` : ''}
|
|
317
|
-
${diagnostics.health.recommendations.length > 0 ? `Recommendations:\n${diagnostics.health.recommendations.map(r => ` - ${r}`).join('\n')}` : ''}
|
|
318
|
-
`;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
// Export singleton instance
|
|
322
|
-
export const diagnostics = MatterDiagnostics.getInstance();
|
|
323
|
-
//# sourceMappingURL=matterDiagnostics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"matterDiagnostics.js","sourceRoot":"","sources":["../../src/matter/matterDiagnostics.ts"],"names":[],"mappings":"AAAA,mBAAmB;AAEnB;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAsEvC,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAC,QAAQ,CAAmB;IAClC,kBAAkB,CAGzB;IAEO,kBAAkB,GAA0B,IAAI,CAAA;IAChD,oBAAoB,GAAG,KAAK,CAAA;IAC5B,gBAAgB,GAAgD,IAAI,CAAA;IAE5E;QACE,IAAI,CAAC,kBAAkB,GAAG;YACxB,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAChC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAA;QACtD,CAAC;QACD,OAAO,iBAAiB,CAAC,QAAQ,CAAA;IACnC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,UAAU,GAAG,KAAK;QACjC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,OAAM;QACR,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAA;QAChC,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAEnD,mCAAmC;QACnC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;YACzC,sCAAsC;YACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9C,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAA;YACpD,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE,UAAU,CAAC,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAChC,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAA;QACjC,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;IACpD,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAc;QAC3B,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE9C,kCAAkC;QAClC,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACnD,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QAC3C,CAAC;QAED,6BAA6B;QAC7B,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,8BAA8B,MAAM,IAAI,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,UAAuB;QAC9C,OAAO;YACL,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAChC,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,oBAAoB,EAAE;YACjD,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAClC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC/B,WAAW,EAAE,IAAI,CAAC,sBAAsB,EAAE;YAC1C,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;SAC5B,CAAA;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;QAC5B,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;QAElC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAE/B,OAAO;YACL,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;YACvB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;YACf,WAAW,EAAE,OAAO,CAAC,OAAO;YAC5B,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE;YACnB,MAAM,EAAE;gBACN,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,GAAG;aACvC;YACD,GAAG,EAAE;gBACH,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS;gBAClC,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,KAAK,EAAE,OAAO;aACf;SACF,CAAA;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;SACf,CAAA;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAA;QACzC,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,QAAQ;YACvB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAA;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAA;QAC/C,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,MAAM,MAAM,GAA2B,EAAE,CAAA;QACzC,MAAM,MAAM,GAA8D,EAAE,CAAA;QAE5E,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,KAAK,IAAI,KAAK,CAAC,KAAK,CAAA;YACpB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAA;YAE1B,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;oBAChC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS;iBACrC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;QAEpE,OAAO;YACL,KAAK;YACL,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,2BAA2B;SACzD,CAAA;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAA;QACnD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YACtC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM;YACzD,CAAC,CAAC,CAAC,CAAA;QAEL,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,uBAAuB;YAC1D,eAAe,EAAE,WAAW;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ;YAC3C,YAAY,EAAE,CAAC,EAAE,mCAAmC;SACrD,CAAA;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,eAAe,GAAa,EAAE,CAAA;QAEpC,gBAAgB;QAChB,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,EAAE,CAAA;QAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YACjC,eAAe,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QACpD,CAAC;aAAM,IAAI,aAAa,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;YACnD,eAAe,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACnD,CAAC;QAED,eAAe;QACf,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAA;QAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;aAC1C,MAAM,CAAC,CAAC,GAAG,EAAE,IAAS,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAElD,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,oBAAoB,WAAW,SAAS,CAAC,CAAA;YACrD,eAAe,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QACxD,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC9C,IAAI,QAAQ,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,0BAA0B,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;YACtF,eAAe,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;QACrF,CAAC;QAED,mEAAmE;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC3C,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,sBAAsB,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC7E,eAAe,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;QAC5E,CAAC;aAAM,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;YAC7C,0CAA0C;YAC1C,GAAG,CAAC,KAAK,CAAC,mBAAmB,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC1E,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAA6C,CAAA;QACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,SAAS,CAAA;QACrB,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,UAAU,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,WAAW,CAAA;QACvB,CAAC;QAED,OAAO;YACL,OAAO;YACP,MAAM;YACN,eAAe;SAChB,CAAA;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB;QACpC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAEnD,uDAAuD;QACvD,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzD,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAA;YAElD,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,CAAC,yBAAyB,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC/D,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC9C,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAA;gBAC1B,CAAC;gBACD,KAAK,MAAM,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;oBAChE,GAAG,CAAC,IAAI,CAAC,QAAQ,cAAc,EAAE,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE;YAC/B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO;YAClC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK;YAChC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW;YACvC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YACtE,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;SAChE,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAAuB;QAC1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAE7D,OAAO;;;aAGE,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE;;;;YAIpC,WAAW,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI;gBACnD,WAAW,CAAC,MAAM,CAAC,WAAW;iBAC7B,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;UACpD,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;OAClM,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;;;;WAIzD,WAAW,CAAC,MAAM,CAAC,OAAO;eACtB,WAAW,CAAC,MAAM,CAAC,WAAW;WAClC,WAAW,CAAC,MAAM,CAAC,OAAO;QAC7B,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK;WAC7B,WAAW,CAAC,MAAM,CAAC,WAAW;WAC9B,WAAW,CAAC,MAAM,CAAC,WAAW;;;;UAI/B,WAAW,CAAC,OAAO,CAAC,MAAM;cACtB,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM;WACtD,WAAW,CAAC,OAAO,CAAC,gBAAgB,IAAI,KAAK;cAC1C,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;;;;gBAIzC,WAAW,CAAC,MAAM,CAAC,KAAK;EACtC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;aACxC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC;aAC7C,IAAI,CAAC,IAAI,CAAC;;;;qBAIQ,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvD,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;;;;WAInE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;EACjD,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;EACnH,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;CAC/I,CAAA;IACC,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAA"}
|