matterbridge-eve-room 1.1.0 → 1.2.0-dev.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/CHANGELOG.md +12 -0
- package/dist/index.js +0 -7
- package/dist/platform.js +6 -18
- package/npm-shrinkwrap.json +39 -9
- package/package.json +2 -39
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/platform.d.ts +0 -16
- package/dist/platform.d.ts.map +0 -1
- package/dist/platform.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.2.0-dev.1] - 2025-02-01
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- [package]: Require Matterbridge 2.1.0.
|
|
10
|
+
- [package]: Update package.
|
|
11
|
+
- [package]: Update dependencies.
|
|
12
|
+
|
|
13
|
+
<a href="https://www.buymeacoffee.com/luligugithub">
|
|
14
|
+
<img src="./yellow-button.png" alt="Buy me a coffee" width="120">
|
|
15
|
+
</a>
|
|
16
|
+
|
|
5
17
|
## [1.1.0] - 2024-12-14
|
|
6
18
|
|
|
7
19
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
import { EveRoomPlatform } from './platform.js';
|
|
2
|
-
/**
|
|
3
|
-
* This is the standard interface for MatterBridge plugins.
|
|
4
|
-
* Each plugin should export a default function that follows this signature.
|
|
5
|
-
*
|
|
6
|
-
* @param matterbridge - An instance of MatterBridge
|
|
7
|
-
*/
|
|
8
2
|
export default function initializePlugin(matterbridge, log, config) {
|
|
9
3
|
return new EveRoomPlatform(matterbridge, log, config);
|
|
10
4
|
}
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
package/dist/platform.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RelativeHumidityMeasurement, TemperatureMeasurement, airQualitySensor,
|
|
1
|
+
import { RelativeHumidityMeasurement, TemperatureMeasurement, airQualitySensor, MatterbridgeAccessoryPlatform, AirQuality, TotalVolatileOrganicCompoundsConcentrationMeasurement, MatterbridgeEndpoint, powerSource, } from 'matterbridge';
|
|
2
2
|
import { EveHistory, MatterHistory } from 'matter-history';
|
|
3
3
|
export class EveRoomPlatform extends MatterbridgeAccessoryPlatform {
|
|
4
4
|
room;
|
|
@@ -6,35 +6,24 @@ export class EveRoomPlatform extends MatterbridgeAccessoryPlatform {
|
|
|
6
6
|
interval;
|
|
7
7
|
minTemperature = 0;
|
|
8
8
|
maxTemperature = 0;
|
|
9
|
-
createMutableDevice(definition, options = {}, debug = false) {
|
|
10
|
-
let device;
|
|
11
|
-
if (this.matterbridge.edge === true)
|
|
12
|
-
device = new MatterbridgeEndpoint(definition, options, debug);
|
|
13
|
-
else
|
|
14
|
-
device = new MatterbridgeDevice(definition, options, debug);
|
|
15
|
-
return device;
|
|
16
|
-
}
|
|
17
9
|
constructor(matterbridge, log, config) {
|
|
18
10
|
super(matterbridge, log, config);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
throw new Error(`This plugin requires Matterbridge version >= "1.6.6". Please update Matterbridge from ${this.matterbridge.matterbridgeVersion} to the latest version in the frontend."`);
|
|
11
|
+
if (this.verifyMatterbridgeVersion === undefined || typeof this.verifyMatterbridgeVersion !== 'function' || !this.verifyMatterbridgeVersion('2.1.0')) {
|
|
12
|
+
throw new Error(`This plugin requires Matterbridge version >= "2.1.0". Please update Matterbridge from ${this.matterbridge.matterbridgeVersion} to the latest version in the frontend."`);
|
|
22
13
|
}
|
|
23
14
|
this.log.info('Initializing platform:', this.config.name);
|
|
24
15
|
}
|
|
25
16
|
async onStart(reason) {
|
|
26
17
|
this.log.info('onStart called with reason:', reason ?? 'none');
|
|
27
18
|
this.history = new MatterHistory(this.log, 'Eve room', { filePath: this.matterbridge.matterbridgeDirectory, edge: this.matterbridge.edge });
|
|
28
|
-
this.room =
|
|
19
|
+
this.room = new MatterbridgeEndpoint([airQualitySensor, powerSource], { uniqueStorageKey: 'Eve room' }, this.config.debug);
|
|
29
20
|
this.room.createDefaultIdentifyClusterServer();
|
|
30
21
|
this.room.createDefaultBasicInformationClusterServer('Eve room', '0x84224975', 4874, 'Eve Systems', 0x27, 'Eve Room 20EAM9901', 1416, '1.2.11', 1, '1.0.0');
|
|
31
22
|
this.room.createDefaultAirQualityClusterServer(AirQuality.AirQualityEnum.Good);
|
|
32
23
|
this.room.createDefaultTvocMeasurementClusterServer();
|
|
33
24
|
this.room.createDefaultTemperatureMeasurementClusterServer(20 * 100);
|
|
34
25
|
this.room.createDefaultRelativeHumidityMeasurementClusterServer(50 * 100);
|
|
35
|
-
|
|
36
|
-
// this.room.createDefaultPowerSourceRechargableBatteryClusterServer(87);
|
|
37
|
-
// Add the EveHistory cluster to the device as last cluster!
|
|
26
|
+
this.room.createDefaultPowerSourceRechargeableBatteryClusterServer(87);
|
|
38
27
|
this.history.createRoomEveHistoryClusterServer(this.room, this.log);
|
|
39
28
|
this.history.autoPilot(this.room);
|
|
40
29
|
await this.registerDevice(this.room);
|
|
@@ -51,7 +40,7 @@ export class EveRoomPlatform extends MatterbridgeAccessoryPlatform {
|
|
|
51
40
|
async onConfigure() {
|
|
52
41
|
this.log.info('onConfigure called');
|
|
53
42
|
if (!this.matterbridge.edge)
|
|
54
|
-
await this.room?.setAttribute(EveHistory.Cluster.id, 'TemperatureDisplayUnits', 0
|
|
43
|
+
await this.room?.setAttribute(EveHistory.Cluster.id, 'TemperatureDisplayUnits', 0, this.log);
|
|
55
44
|
this.interval = setInterval(async () => {
|
|
56
45
|
if (!this.room || !this.history)
|
|
57
46
|
return;
|
|
@@ -84,4 +73,3 @@ export class EveRoomPlatform extends MatterbridgeAccessoryPlatform {
|
|
|
84
73
|
await this.unregisterAllDevices();
|
|
85
74
|
}
|
|
86
75
|
}
|
|
87
|
-
//# sourceMappingURL=platform.js.map
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-eve-room",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-dev.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "matterbridge-eve-room",
|
|
9
|
-
"version": "1.
|
|
9
|
+
"version": "1.2.0-dev.1",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"matter-history": "1.1.17-dev.
|
|
12
|
+
"matter-history": "1.1.17-dev.8",
|
|
13
13
|
"node-ansi-logger": "3.0.0",
|
|
14
14
|
"node-persist-manager": "1.0.8"
|
|
15
15
|
},
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"node_modules/matter-history": {
|
|
21
|
-
"version": "1.1.17-dev.
|
|
22
|
-
"resolved": "https://registry.npmjs.org/matter-history/-/matter-history-1.1.17-dev.
|
|
23
|
-
"integrity": "sha512-
|
|
21
|
+
"version": "1.1.17-dev.8",
|
|
22
|
+
"resolved": "https://registry.npmjs.org/matter-history/-/matter-history-1.1.17-dev.8.tgz",
|
|
23
|
+
"integrity": "sha512-r/qr30WlJkLbmFVhF6fbeTPZFaLaznYBZVhZuPPAeCY0Y1FN+YdqKzUd59jAeSMQQZNGmPqOuHnOlrkzczKA1g==",
|
|
24
24
|
"hasShrinkwrap": true,
|
|
25
25
|
"license": "Apache-2.0",
|
|
26
26
|
"dependencies": {
|
|
@@ -71,10 +71,13 @@
|
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"node_modules/node-persist": {
|
|
74
|
-
"version": "4.0.
|
|
75
|
-
"resolved": "https://registry.npmjs.org/node-persist/-/node-persist-4.0.
|
|
76
|
-
"integrity": "sha512-
|
|
74
|
+
"version": "4.0.4",
|
|
75
|
+
"resolved": "https://registry.npmjs.org/node-persist/-/node-persist-4.0.4.tgz",
|
|
76
|
+
"integrity": "sha512-8sPAz/7tw1mCCc8xBG4f0wi+flHkSSgQeX998iQ75Pu27evA6UUWCjSE7xnrYTg2q33oU5leJ061EKPDv6BocQ==",
|
|
77
77
|
"license": "MIT",
|
|
78
|
+
"dependencies": {
|
|
79
|
+
"p-limit": "^3.1.0"
|
|
80
|
+
},
|
|
78
81
|
"engines": {
|
|
79
82
|
"node": ">=10.12.0"
|
|
80
83
|
}
|
|
@@ -94,6 +97,33 @@
|
|
|
94
97
|
"type": "buymeacoffee",
|
|
95
98
|
"url": "https://www.buymeacoffee.com/luligugithub"
|
|
96
99
|
}
|
|
100
|
+
},
|
|
101
|
+
"node_modules/p-limit": {
|
|
102
|
+
"version": "3.1.0",
|
|
103
|
+
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
|
104
|
+
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
|
105
|
+
"license": "MIT",
|
|
106
|
+
"dependencies": {
|
|
107
|
+
"yocto-queue": "^0.1.0"
|
|
108
|
+
},
|
|
109
|
+
"engines": {
|
|
110
|
+
"node": ">=10"
|
|
111
|
+
},
|
|
112
|
+
"funding": {
|
|
113
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"node_modules/yocto-queue": {
|
|
117
|
+
"version": "0.1.0",
|
|
118
|
+
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
|
119
|
+
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
|
|
120
|
+
"license": "MIT",
|
|
121
|
+
"engines": {
|
|
122
|
+
"node": ">=10"
|
|
123
|
+
},
|
|
124
|
+
"funding": {
|
|
125
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
126
|
+
}
|
|
97
127
|
}
|
|
98
128
|
}
|
|
99
129
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-eve-room",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-dev.1",
|
|
4
4
|
"description": "Matterbridge eve room with history",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
|
-
"types": "dist/index.d.ts",
|
|
10
9
|
"repository": {
|
|
11
10
|
"type": "git",
|
|
12
11
|
"url": "git+https://github.com/Luligu/matterbridge-eve-room.git"
|
|
@@ -32,44 +31,8 @@
|
|
|
32
31
|
"engines": {
|
|
33
32
|
"node": ">=18.0.0 <19.0.0 || >=20.0.0 <21.0.0 || >=22.0.0 <23.0.0"
|
|
34
33
|
},
|
|
35
|
-
"scripts": {
|
|
36
|
-
"build": "tsc",
|
|
37
|
-
"watch": "tsc --watch",
|
|
38
|
-
"start": "matterbridge",
|
|
39
|
-
"start:bridge": "matterbridge -bridge",
|
|
40
|
-
"start:childbridge": "matterbridge -childbridge",
|
|
41
|
-
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
42
|
-
"test:verbose": "node --experimental-vm-modules node_modules/jest/bin/jest.js --verbose",
|
|
43
|
-
"test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
|
|
44
|
-
"test:coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage",
|
|
45
|
-
"lint": "eslint --max-warnings=0 .",
|
|
46
|
-
"lint:fix": "eslint --fix --max-warnings=0 .",
|
|
47
|
-
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,md}\"",
|
|
48
|
-
"format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,css,md}\"",
|
|
49
|
-
"clean": "npx rimraf tsconfig.tsbuildinfo ./dist",
|
|
50
|
-
"cleanBuild": "npm run clean && tsc",
|
|
51
|
-
"deepClean": "npx rimraf tsconfig.tsbuildinfo package-lock.json npm-shrinkwrap.json ./dist ./node_modules",
|
|
52
|
-
"deepCleanBuild": "npm run deepClean && npm install && npm link matterbridge && npm run build",
|
|
53
|
-
"checkDependencies": "npx npm-check-updates",
|
|
54
|
-
"updateDependencies": "npx npm-check-updates -u && npm install && npm link matterbridge && npm run build",
|
|
55
|
-
"prepublishOnly": "npm pkg delete devDependencies && npm install --omit=dev && npm shrinkwrap",
|
|
56
|
-
"buildProduction": "npm run clean && tsc --project tsconfig.production.json",
|
|
57
|
-
"npmPack": "copy package.json package.log && npm run buildProduction && npm pkg delete devDependencies && npm pkg delete scripts && npx rimraf ./node_modules && npm install --omit=dev && npm shrinkwrap && npm pack && copy package.log package.json && npm run deepCleanBuild && npm run deepCleanBuild",
|
|
58
|
-
"npmPublishTagDev": "copy package.json package.log && npm run buildProduction && npm pkg delete devDependencies && npm pkg delete scripts && npx rimraf ./node_modules && npm install --omit=dev && npm shrinkwrap && npm publish --tag dev && copy package.log package.json && npm run deepCleanBuild",
|
|
59
|
-
"npmPublishTagLatest": "copy package.json package.log && npm run buildProduction && npm pkg delete devDependencies && npm pkg delete scripts && npx rimraf ./node_modules && npm install --omit=dev && npm shrinkwrap && npm publish --tag latest && copy package.log package.json && npm run deepCleanBuild",
|
|
60
|
-
"matterbridge:add": "matterbridge -add .\\",
|
|
61
|
-
"matterbridge:remove": "matterbridge -remove .\\",
|
|
62
|
-
"matterbridge:enable": "matterbridge -enable .\\",
|
|
63
|
-
"matterbridge:disable": "matterbridge -disable .\\",
|
|
64
|
-
"matterbridge:list": "matterbridge -list",
|
|
65
|
-
"history:local": "npm install ../matter-history && npm run deepCleanBuild",
|
|
66
|
-
"history:dev": "npm install matter-history@dev && npm run deepCleanBuild",
|
|
67
|
-
"history": "npm install matter-history && npm run deepCleanBuild",
|
|
68
|
-
"dev:link": "npm link matterbridge",
|
|
69
|
-
"dev:unlink": "npm unlink matterbridge"
|
|
70
|
-
},
|
|
71
34
|
"dependencies": {
|
|
72
|
-
"matter-history": "1.1.17-dev.
|
|
35
|
+
"matter-history": "1.1.17-dev.8",
|
|
73
36
|
"node-ansi-logger": "3.0.0",
|
|
74
37
|
"node-persist-manager": "1.0.8"
|
|
75
38
|
}
|
package/dist/index.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Matterbridge, PlatformConfig } from 'matterbridge';
|
|
2
|
-
import { AnsiLogger } from 'matterbridge/logger';
|
|
3
|
-
import { EveRoomPlatform } from './platform.js';
|
|
4
|
-
/**
|
|
5
|
-
* This is the standard interface for MatterBridge plugins.
|
|
6
|
-
* Each plugin should export a default function that follows this signature.
|
|
7
|
-
*
|
|
8
|
-
* @param matterbridge - An instance of MatterBridge
|
|
9
|
-
*/
|
|
10
|
-
export default function initializePlugin(matterbridge: Matterbridge, log: AnsiLogger, config: PlatformConfig): EveRoomPlatform;
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,mBAE3G"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAA0B,EAAE,GAAe,EAAE,MAAsB;IAC1G,OAAO,IAAI,eAAe,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC"}
|
package/dist/platform.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Matterbridge, MatterbridgeDevice, MatterbridgeAccessoryPlatform, PlatformConfig, DeviceTypeDefinition, EndpointOptions, AtLeastOne } from 'matterbridge';
|
|
2
|
-
import { MatterHistory } from 'matter-history';
|
|
3
|
-
import { AnsiLogger } from 'matterbridge/logger';
|
|
4
|
-
export declare class EveRoomPlatform extends MatterbridgeAccessoryPlatform {
|
|
5
|
-
room: MatterbridgeDevice | undefined;
|
|
6
|
-
history: MatterHistory | undefined;
|
|
7
|
-
interval: NodeJS.Timeout | undefined;
|
|
8
|
-
minTemperature: number;
|
|
9
|
-
maxTemperature: number;
|
|
10
|
-
createMutableDevice(definition: DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>, options?: EndpointOptions, debug?: boolean): MatterbridgeDevice;
|
|
11
|
-
constructor(matterbridge: Matterbridge, log: AnsiLogger, config: PlatformConfig);
|
|
12
|
-
onStart(reason?: string): Promise<void>;
|
|
13
|
-
onConfigure(): Promise<void>;
|
|
14
|
-
onShutdown(reason?: string): Promise<void>;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=platform.d.ts.map
|
package/dist/platform.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,EAGd,oBAAoB,EACpB,eAAe,EACf,UAAU,EAEX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAuC,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,eAAgB,SAAQ,6BAA6B;IAChE,IAAI,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IACrC,cAAc,SAAK;IACnB,cAAc,SAAK;IAEnB,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,GAAE,eAAoB,EAAE,KAAK,UAAQ,GAAG,kBAAkB;gBAO9I,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;IAahE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IAmCvB,WAAW;IA+BX,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM;CAM1C"}
|
package/dist/platform.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,EAEhB,kBAAkB,EAClB,6BAA6B,EAE7B,UAAU,EACV,qDAAqD,EAIrD,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2B,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpF,MAAM,OAAO,eAAgB,SAAQ,6BAA6B;IAChE,IAAI,CAAiC;IACrC,OAAO,CAA4B;IACnC,QAAQ,CAA6B;IACrC,cAAc,GAAG,CAAC,CAAC;IACnB,cAAc,GAAG,CAAC,CAAC;IAEnB,mBAAmB,CAAC,UAAmE,EAAE,UAA2B,EAAE,EAAE,KAAK,GAAG,KAAK;QACnI,IAAI,MAA0B,CAAC;QAC/B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI;YAAE,MAAM,GAAG,IAAI,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAkC,CAAC;;YAC/H,MAAM,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY,YAA0B,EAAE,GAAe,EAAE,MAAsB;QAC7E,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAEjC,kDAAkD;QAClD,IAAI,IAAI,CAAC,yBAAyB,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,yBAAyB,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrJ,MAAM,IAAI,KAAK,CACb,yFAAyF,IAAI,CAAC,YAAY,CAAC,mBAAmB,0CAA0C,CACzK,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAe;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;QAE/D,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5I,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAC;QACxH,IAAI,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5J,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC,IAAI,CAAC,yCAAyC,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,gDAAgD,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAE1E,8EAA8E;QAC9E,yEAAyE;QAEzE,4DAA4D;QAC5D,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC9E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE;YACtG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uCAAuC,gBAAgB,YAAY,aAAa,EAAE,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEQ,KAAK,CAAC,WAAW;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEpC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,yBAAyB,2CAAmC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExJ,IAAI,CAAC,QAAQ,GAAG,WAAW,CACzB,KAAK,IAAI,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YACxC,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;gBAAE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;YACjE,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;gBAAE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;YACjE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACjE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;YAC9E,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,qDAAqD,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/H,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACzH,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACzH,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9G,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhH,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5F,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,UAAU,SAAS,GAAG,iBAAiB,WAAW,UAAU,IAAI,CAAC,cAAc,SAAS,IAAI,CAAC,cAAc,eAAe,QAAQ,EAAE,CAAC,CAAC;QACzK,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,MAAe;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,IAAI;YAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACnF,CAAC;CACF"}
|