homebridge-midea-platform 0.1.0
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/LICENSE +176 -0
- package/README.md +9 -0
- package/config.schema.json +137 -0
- package/dist/accessory/AccessoryFactory.d.ts +8 -0
- package/dist/accessory/AccessoryFactory.d.ts.map +1 -0
- package/dist/accessory/AccessoryFactory.js +17 -0
- package/dist/accessory/AccessoryFactory.js.map +1 -0
- package/dist/accessory/AirConditionerAccessory.d.ts +25 -0
- package/dist/accessory/AirConditionerAccessory.d.ts.map +1 -0
- package/dist/accessory/AirConditionerAccessory.js +182 -0
- package/dist/accessory/AirConditionerAccessory.js.map +1 -0
- package/dist/accessory/BaseAccessory.d.ts +9 -0
- package/dist/accessory/BaseAccessory.d.ts.map +1 -0
- package/dist/accessory/BaseAccessory.js +29 -0
- package/dist/accessory/BaseAccessory.js.map +1 -0
- package/dist/core/MideaCloud.d.ts +32 -0
- package/dist/core/MideaCloud.d.ts.map +1 -0
- package/dist/core/MideaCloud.js +152 -0
- package/dist/core/MideaCloud.js.map +1 -0
- package/dist/core/MideaConstants.d.ts +41 -0
- package/dist/core/MideaConstants.d.ts.map +1 -0
- package/dist/core/MideaConstants.js +56 -0
- package/dist/core/MideaConstants.js.map +1 -0
- package/dist/core/MideaDevice.d.ts +58 -0
- package/dist/core/MideaDevice.d.ts.map +1 -0
- package/dist/core/MideaDevice.js +263 -0
- package/dist/core/MideaDevice.js.map +1 -0
- package/dist/core/MideaDiscover.d.ts +17 -0
- package/dist/core/MideaDiscover.d.ts.map +1 -0
- package/dist/core/MideaDiscover.js +129 -0
- package/dist/core/MideaDiscover.js.map +1 -0
- package/dist/core/MideaMessage.d.ts +76 -0
- package/dist/core/MideaMessage.d.ts.map +1 -0
- package/dist/core/MideaMessage.js +186 -0
- package/dist/core/MideaMessage.js.map +1 -0
- package/dist/core/MideaPacketBuilder.d.ts +11 -0
- package/dist/core/MideaPacketBuilder.d.ts.map +1 -0
- package/dist/core/MideaPacketBuilder.js +60 -0
- package/dist/core/MideaPacketBuilder.js.map +1 -0
- package/dist/core/MideaSecurity.d.ts +35 -0
- package/dist/core/MideaSecurity.d.ts.map +1 -0
- package/dist/core/MideaSecurity.js +168 -0
- package/dist/core/MideaSecurity.js.map +1 -0
- package/dist/core/MideaUtils.d.ts +18 -0
- package/dist/core/MideaUtils.d.ts.map +1 -0
- package/dist/core/MideaUtils.js +187 -0
- package/dist/core/MideaUtils.js.map +1 -0
- package/dist/devices/DeviceFactory.d.ts +8 -0
- package/dist/devices/DeviceFactory.d.ts.map +1 -0
- package/dist/devices/DeviceFactory.js +17 -0
- package/dist/devices/DeviceFactory.js.map +1 -0
- package/dist/devices/ac/MideaACDevice.d.ts +80 -0
- package/dist/devices/ac/MideaACDevice.d.ts.map +1 -0
- package/dist/devices/ac/MideaACDevice.js +271 -0
- package/dist/devices/ac/MideaACDevice.js.map +1 -0
- package/dist/devices/ac/MideaACMessage.d.ts +90 -0
- package/dist/devices/ac/MideaACMessage.d.ts.map +1 -0
- package/dist/devices/ac/MideaACMessage.js +528 -0
- package/dist/devices/ac/MideaACMessage.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/platform.d.ts +20 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +110 -0
- package/dist/platform.js.map +1 -0
- package/dist/settings.d.ts +9 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +12 -0
- package/dist/settings.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LocalSecurity = exports.CloudSecurity = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const MideaConstants_1 = require("./MideaConstants");
|
|
6
|
+
const MideaUtils_1 = require("./MideaUtils");
|
|
7
|
+
class CloudSecurity {
|
|
8
|
+
constructor(use_china_server = false) {
|
|
9
|
+
this.use_china_server = use_china_server;
|
|
10
|
+
this.HMAC_KEY = 'PROD_VnoClJI9aikS8dyy';
|
|
11
|
+
this.IOT_KEY = 'meicloud';
|
|
12
|
+
this.LOGIN_KEY = 'ac21b9f9cbfe4ca5a88562ef25e2b768';
|
|
13
|
+
this.IOT_KEY_CHINA = 'prod_secret123@muc';
|
|
14
|
+
this.LOGIN_KEY_CHINA = 'ad0ee21d48a64bf49f4fb583ab76e799';
|
|
15
|
+
this.iot_key = this.use_china_server ? this.IOT_KEY_CHINA : this.IOT_KEY;
|
|
16
|
+
this.login_key = this.use_china_server ? this.LOGIN_KEY_CHINA : this.LOGIN_KEY;
|
|
17
|
+
}
|
|
18
|
+
// Generate a HMAC signature for the provided data and random data.
|
|
19
|
+
sign(data, random) {
|
|
20
|
+
const message = `${this.iot_key}${data}${random}`;
|
|
21
|
+
return (0, crypto_1.createHmac)('sha256', this.HMAC_KEY).update(message).digest('hex');
|
|
22
|
+
}
|
|
23
|
+
// Encrypt the password for cloud API password.
|
|
24
|
+
encrpytPassword(loginId, password) {
|
|
25
|
+
const m1 = (0, crypto_1.createHash)('sha256').update(password);
|
|
26
|
+
const login_hash = `${loginId}${m1.digest('hex')}${this.login_key}`;
|
|
27
|
+
const m2 = (0, crypto_1.createHash)('sha256').update(login_hash);
|
|
28
|
+
return m2.digest('hex');
|
|
29
|
+
}
|
|
30
|
+
// Encrypts password for cloud API iampwd field.
|
|
31
|
+
encrpytIAMPassword(loginId, password) {
|
|
32
|
+
const m1 = (0, crypto_1.createHash)('md5').update(password);
|
|
33
|
+
const m2 = (0, crypto_1.createHash)('md5').update(m1.digest('hex'));
|
|
34
|
+
if (this.use_china_server) {
|
|
35
|
+
return m2.digest('hex');
|
|
36
|
+
}
|
|
37
|
+
const login_hash = `${loginId}${m2.digest('hex')}${this.login_key}`;
|
|
38
|
+
const sha = (0, crypto_1.createHash)('sha256').update(login_hash);
|
|
39
|
+
return sha.digest('hex');
|
|
40
|
+
}
|
|
41
|
+
static getUDPID(device_id_buf) {
|
|
42
|
+
const data = (0, crypto_1.createHash)('sha256').update(device_id_buf).digest();
|
|
43
|
+
const output = Buffer.alloc(16);
|
|
44
|
+
for (let i = 0; i < 16; i++) {
|
|
45
|
+
output[i] = data[i] ^ data[i + 16];
|
|
46
|
+
}
|
|
47
|
+
return output.toString('hex');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.CloudSecurity = CloudSecurity;
|
|
51
|
+
class LocalSecurity {
|
|
52
|
+
constructor() {
|
|
53
|
+
// private static readonly SIGN_KEY = Buffer.from('xhdiwjnchekd4d512chdjx5d8e4c394D2D7S', 'utf-8');
|
|
54
|
+
// public static readonly ENC_KEY = createHash('md5').update(this.SIGN_KEY).digest();
|
|
55
|
+
this.aes_key = Buffer.from('6a92ef406bad2f0359baad994171ea6d', 'hex');
|
|
56
|
+
this.salt = Buffer.from('78686469776a6e6368656b6434643531326368646a783564386534633339344432443753', 'hex');
|
|
57
|
+
this.iv = Buffer.alloc(16);
|
|
58
|
+
this.request_count = 0;
|
|
59
|
+
this.response_count = 0;
|
|
60
|
+
}
|
|
61
|
+
aes_cbc_encrpyt(raw, key) {
|
|
62
|
+
const cipher = (0, crypto_1.createCipheriv)('aes-256-cbc', key, this.iv);
|
|
63
|
+
cipher.setAutoPadding(false);
|
|
64
|
+
return Buffer.concat([cipher.update(raw), cipher.final()]);
|
|
65
|
+
}
|
|
66
|
+
aes_cbc_decrypt(raw, key) {
|
|
67
|
+
const decipher = (0, crypto_1.createDecipheriv)('aes-256-cbc', key, this.iv);
|
|
68
|
+
decipher.setAutoPadding(false);
|
|
69
|
+
return Buffer.concat([decipher.update(raw), decipher.final()]);
|
|
70
|
+
}
|
|
71
|
+
aes_encrypt(data) {
|
|
72
|
+
const cipher = (0, crypto_1.createCipheriv)('aes-128-ecb', this.aes_key, null);
|
|
73
|
+
return Buffer.concat([cipher.update(data), cipher.final()]);
|
|
74
|
+
}
|
|
75
|
+
aes_decrypt(data) {
|
|
76
|
+
const decipher = (0, crypto_1.createDecipheriv)('aes-128-ecb', this.aes_key, null);
|
|
77
|
+
return Buffer.concat([decipher.update(data), decipher.final()]);
|
|
78
|
+
}
|
|
79
|
+
encode32_data(raw) {
|
|
80
|
+
return (0, crypto_1.createHash)('md5').update(Buffer.concat([raw, this.salt])).digest();
|
|
81
|
+
}
|
|
82
|
+
tcp_key_from_resp(response, key) {
|
|
83
|
+
if (response.toString() === 'ERROR') {
|
|
84
|
+
throw Error('Authentication response is ERROR, cannot get TCP key.');
|
|
85
|
+
}
|
|
86
|
+
if (response.length !== 64) {
|
|
87
|
+
throw Error('Authentication response has unexpected data length, cannot get TCP key..');
|
|
88
|
+
}
|
|
89
|
+
const payload = response.subarray(0, 32);
|
|
90
|
+
const sign = response.subarray(32, response.length);
|
|
91
|
+
const plain = this.aes_cbc_decrypt(payload, key);
|
|
92
|
+
if ((0, crypto_1.createHash)('sha256').update(plain).digest().compare(sign) !== 0) {
|
|
93
|
+
throw Error('Authentication sign does not match, cannot get TCP key.');
|
|
94
|
+
}
|
|
95
|
+
this.tcp_key = (0, MideaUtils_1.strxor)(plain, key);
|
|
96
|
+
this.request_count = 0;
|
|
97
|
+
this.response_count = 0;
|
|
98
|
+
return this.tcp_key;
|
|
99
|
+
}
|
|
100
|
+
encode_8370(data, message_type) {
|
|
101
|
+
let header = Buffer.from([0x83, 0x70]);
|
|
102
|
+
let size = data.length;
|
|
103
|
+
let padding = 0;
|
|
104
|
+
if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST || message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
|
|
105
|
+
if ((size + 2) % 16 !== 0) {
|
|
106
|
+
padding = 16 - (size + 2 & 0xf);
|
|
107
|
+
size += padding + 32;
|
|
108
|
+
data = Buffer.concat([data, (0, crypto_1.randomBytes)(padding)]);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
header = Buffer.concat([header, (0, MideaUtils_1.numberToUint8Array)(size, 2, 'big')]);
|
|
112
|
+
header = Buffer.concat([header, Buffer.from([0x20, padding << 4 | message_type])]);
|
|
113
|
+
data = Buffer.concat([(0, MideaUtils_1.numberToUint8Array)(this.request_count, 2, 'big'), data]);
|
|
114
|
+
this.request_count += 1;
|
|
115
|
+
if (this.request_count >= 0xFFFF) {
|
|
116
|
+
this.request_count = 0;
|
|
117
|
+
}
|
|
118
|
+
if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST || message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
|
|
119
|
+
const sign = (0, crypto_1.createHash)('sha256').update(Buffer.concat([header, data])).digest();
|
|
120
|
+
data = Buffer.concat([this.aes_cbc_encrpyt(data, this.tcp_key), sign]);
|
|
121
|
+
}
|
|
122
|
+
return Buffer.concat([header, data]);
|
|
123
|
+
}
|
|
124
|
+
decode_8370(data) {
|
|
125
|
+
if (data.length < 6) {
|
|
126
|
+
return [[], data];
|
|
127
|
+
}
|
|
128
|
+
const header = data.subarray(0, 6);
|
|
129
|
+
if (header[0] !== 0x83 || header[1] !== 0x70) {
|
|
130
|
+
throw new Error('Not an 8370 message.');
|
|
131
|
+
}
|
|
132
|
+
const size = header.subarray(2, 4).readUInt16BE() + 8;
|
|
133
|
+
let leftover = Buffer.alloc(0);
|
|
134
|
+
if (data.length < size) {
|
|
135
|
+
return [[], data];
|
|
136
|
+
}
|
|
137
|
+
else if (data.length > size) {
|
|
138
|
+
leftover = data.subarray(size, data.length);
|
|
139
|
+
data = data.subarray(0, size);
|
|
140
|
+
}
|
|
141
|
+
if (header[4] !== 0x20) {
|
|
142
|
+
throw new Error('Missing byte 4');
|
|
143
|
+
}
|
|
144
|
+
const padding = header[5] >> 4;
|
|
145
|
+
const message_type_received = header[5] & 0xF;
|
|
146
|
+
data = data.subarray(6, data.length);
|
|
147
|
+
if ([MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE, MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST].includes(message_type_received)) {
|
|
148
|
+
const sign = data.subarray(data.length - 32, data.length);
|
|
149
|
+
data = data.subarray(0, data.length - 32);
|
|
150
|
+
data = this.aes_cbc_decrypt(data, this.tcp_key);
|
|
151
|
+
if ((0, crypto_1.createHash)('sha256').update(Buffer.concat([header, data])).digest().compare(sign) !== 0) {
|
|
152
|
+
throw new Error('Sign does not match');
|
|
153
|
+
}
|
|
154
|
+
if (padding) {
|
|
155
|
+
data = data.subarray(0, data.length - padding);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
this.response_count = data.subarray(0, 2).readUInt16BE();
|
|
159
|
+
data = data.subarray(2, data.length);
|
|
160
|
+
if (leftover.length > 0) {
|
|
161
|
+
const [packets, incomplete] = this.decode_8370(leftover);
|
|
162
|
+
return [[data, ...packets], incomplete];
|
|
163
|
+
}
|
|
164
|
+
return [[data], leftover];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.LocalSecurity = LocalSecurity;
|
|
168
|
+
//# sourceMappingURL=MideaSecurity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MideaSecurity.js","sourceRoot":"","sources":["../../src/core/MideaSecurity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { Logger } from 'homebridge';
|
|
4
|
+
import { Endianness } from './MideaConstants';
|
|
5
|
+
import { Socket } from 'net';
|
|
6
|
+
export declare function numberToUint8Array(num: number, byte_length: number, endianness: Endianness): Uint8Array;
|
|
7
|
+
export declare function strxor(a: Buffer, b: Buffer): Buffer;
|
|
8
|
+
export declare function calculate(data: Buffer): number;
|
|
9
|
+
export declare class PromiseSocket {
|
|
10
|
+
private innerSok;
|
|
11
|
+
private readonly logger;
|
|
12
|
+
constructor(innerSok: Socket, logger: Logger);
|
|
13
|
+
connect(port: number, host: string): Promise<void>;
|
|
14
|
+
write(data: string | Buffer, encoding?: BufferEncoding): Promise<void>;
|
|
15
|
+
read(size: number): Promise<Buffer>;
|
|
16
|
+
readAll(): Promise<Buffer>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=MideaUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MideaUtils.d.ts","sourceRoot":"","sources":["../../src/core/MideaUtils.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,cAO1F;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAY1C;AAqCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,UAarC;AAGD,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAzC,QAAQ,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAE9D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc;IA4BpD,IAAI,CAAC,IAAI,EAAE,MAAM;IAsCjB,OAAO;CAiCd"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PromiseSocket = exports.calculate = exports.strxor = exports.numberToUint8Array = void 0;
|
|
4
|
+
function numberToUint8Array(num, byte_length, endianness) {
|
|
5
|
+
const arr = new Uint8Array(byte_length);
|
|
6
|
+
for (let i = 0; i < byte_length; i++) {
|
|
7
|
+
arr[i] = num % 256;
|
|
8
|
+
num = Math.floor(num / 256);
|
|
9
|
+
}
|
|
10
|
+
return endianness === 'big' ? arr.reverse() : arr;
|
|
11
|
+
}
|
|
12
|
+
exports.numberToUint8Array = numberToUint8Array;
|
|
13
|
+
function strxor(a, b) {
|
|
14
|
+
if (a.length !== b.length) {
|
|
15
|
+
throw Error('strxor: a and b must have the same length!');
|
|
16
|
+
}
|
|
17
|
+
const output = Buffer.alloc(a.length);
|
|
18
|
+
for (let i = 0; i < a.length; i++) {
|
|
19
|
+
output[i] = a[i] ^ b[i];
|
|
20
|
+
}
|
|
21
|
+
return output;
|
|
22
|
+
}
|
|
23
|
+
exports.strxor = strxor;
|
|
24
|
+
const CRC8_854_TABLE = [
|
|
25
|
+
0x00, 0x5E, 0xBC, 0xE2, 0x61, 0x3F, 0xDD, 0x83,
|
|
26
|
+
0xC2, 0x9C, 0x7E, 0x20, 0xA3, 0xFD, 0x1F, 0x41,
|
|
27
|
+
0x9D, 0xC3, 0x21, 0x7F, 0xFC, 0xA2, 0x40, 0x1E,
|
|
28
|
+
0x5F, 0x01, 0xE3, 0xBD, 0x3E, 0x60, 0x82, 0xDC,
|
|
29
|
+
0x23, 0x7D, 0x9F, 0xC1, 0x42, 0x1C, 0xFE, 0xA0,
|
|
30
|
+
0xE1, 0xBF, 0x5D, 0x03, 0x80, 0xDE, 0x3C, 0x62,
|
|
31
|
+
0xBE, 0xE0, 0x02, 0x5C, 0xDF, 0x81, 0x63, 0x3D,
|
|
32
|
+
0x7C, 0x22, 0xC0, 0x9E, 0x1D, 0x43, 0xA1, 0xFF,
|
|
33
|
+
0x46, 0x18, 0xFA, 0xA4, 0x27, 0x79, 0x9B, 0xC5,
|
|
34
|
+
0x84, 0xDA, 0x38, 0x66, 0xE5, 0xBB, 0x59, 0x07,
|
|
35
|
+
0xDB, 0x85, 0x67, 0x39, 0xBA, 0xE4, 0x06, 0x58,
|
|
36
|
+
0x19, 0x47, 0xA5, 0xFB, 0x78, 0x26, 0xC4, 0x9A,
|
|
37
|
+
0x65, 0x3B, 0xD9, 0x87, 0x04, 0x5A, 0xB8, 0xE6,
|
|
38
|
+
0xA7, 0xF9, 0x1B, 0x45, 0xC6, 0x98, 0x7A, 0x24,
|
|
39
|
+
0xF8, 0xA6, 0x44, 0x1A, 0x99, 0xC7, 0x25, 0x7B,
|
|
40
|
+
0x3A, 0x64, 0x86, 0xD8, 0x5B, 0x05, 0xE7, 0xB9,
|
|
41
|
+
0x8C, 0xD2, 0x30, 0x6E, 0xED, 0xB3, 0x51, 0x0F,
|
|
42
|
+
0x4E, 0x10, 0xF2, 0xAC, 0x2F, 0x71, 0x93, 0xCD,
|
|
43
|
+
0x11, 0x4F, 0xAD, 0xF3, 0x70, 0x2E, 0xCC, 0x92,
|
|
44
|
+
0xD3, 0x8D, 0x6F, 0x31, 0xB2, 0xEC, 0x0E, 0x50,
|
|
45
|
+
0xAF, 0xF1, 0x13, 0x4D, 0xCE, 0x90, 0x72, 0x2C,
|
|
46
|
+
0x6D, 0x33, 0xD1, 0x8F, 0x0C, 0x52, 0xB0, 0xEE,
|
|
47
|
+
0x32, 0x6C, 0x8E, 0xD0, 0x53, 0x0D, 0xEF, 0xB1,
|
|
48
|
+
0xF0, 0xAE, 0x4C, 0x12, 0x91, 0xCF, 0x2D, 0x73,
|
|
49
|
+
0xCA, 0x94, 0x76, 0x28, 0xAB, 0xF5, 0x17, 0x49,
|
|
50
|
+
0x08, 0x56, 0xB4, 0xEA, 0x69, 0x37, 0xD5, 0x8B,
|
|
51
|
+
0x57, 0x09, 0xEB, 0xB5, 0x36, 0x68, 0x8A, 0xD4,
|
|
52
|
+
0x95, 0xCB, 0x29, 0x77, 0xF4, 0xAA, 0x48, 0x16,
|
|
53
|
+
0xE9, 0xB7, 0x55, 0x0B, 0x88, 0xD6, 0x34, 0x6A,
|
|
54
|
+
0x2B, 0x75, 0x97, 0xC9, 0x4A, 0x14, 0xF6, 0xA8,
|
|
55
|
+
0x74, 0x2A, 0xC8, 0x96, 0x15, 0x4B, 0xA9, 0xF7,
|
|
56
|
+
0xB6, 0xE8, 0x0A, 0x54, 0xD7, 0x89, 0x6B, 0x35,
|
|
57
|
+
];
|
|
58
|
+
function calculate(data) {
|
|
59
|
+
let crc = 0;
|
|
60
|
+
for (let i = 0; i < data.length; i++) {
|
|
61
|
+
let k = crc ^ data[i];
|
|
62
|
+
if (k > 256) {
|
|
63
|
+
k -= 256;
|
|
64
|
+
}
|
|
65
|
+
if (k < 0) {
|
|
66
|
+
k += 256;
|
|
67
|
+
}
|
|
68
|
+
crc = CRC8_854_TABLE[k];
|
|
69
|
+
}
|
|
70
|
+
return crc;
|
|
71
|
+
}
|
|
72
|
+
exports.calculate = calculate;
|
|
73
|
+
class PromiseSocket {
|
|
74
|
+
constructor(innerSok, logger) {
|
|
75
|
+
this.innerSok = innerSok;
|
|
76
|
+
this.logger = logger;
|
|
77
|
+
}
|
|
78
|
+
connect(port, host) {
|
|
79
|
+
return new Promise((resolve, reject) => {
|
|
80
|
+
const errorHandler = (err) => {
|
|
81
|
+
reject(err);
|
|
82
|
+
removeListeners();
|
|
83
|
+
};
|
|
84
|
+
this.innerSok.connect(port, host, () => {
|
|
85
|
+
resolve();
|
|
86
|
+
removeListeners();
|
|
87
|
+
});
|
|
88
|
+
this.innerSok.on('error', errorHandler);
|
|
89
|
+
const removeListeners = () => {
|
|
90
|
+
this.innerSok.removeListener('error', errorHandler);
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async write(data, encoding) {
|
|
95
|
+
return new Promise((resolve, reject) => {
|
|
96
|
+
const errorHandler = (err) => {
|
|
97
|
+
reject(err);
|
|
98
|
+
removeListeners();
|
|
99
|
+
};
|
|
100
|
+
const removeListeners = () => {
|
|
101
|
+
this.innerSok.removeListener('error', errorHandler);
|
|
102
|
+
};
|
|
103
|
+
this.innerSok.on('error', errorHandler);
|
|
104
|
+
try {
|
|
105
|
+
this.innerSok.write(data, encoding, (err) => {
|
|
106
|
+
if (err) {
|
|
107
|
+
reject(err);
|
|
108
|
+
removeListeners();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
resolve();
|
|
112
|
+
removeListeners();
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
reject(err);
|
|
117
|
+
removeListeners();
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
async read(size) {
|
|
122
|
+
return new Promise((resolve, reject) => {
|
|
123
|
+
let buf = Buffer.alloc(0);
|
|
124
|
+
const dataHandler = (data) => {
|
|
125
|
+
buf = Buffer.concat([buf, data]);
|
|
126
|
+
if (buf.length >= size) {
|
|
127
|
+
resolve(buf);
|
|
128
|
+
removeListeners();
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
const timeoutHandler = () => {
|
|
132
|
+
resolve(buf);
|
|
133
|
+
removeListeners();
|
|
134
|
+
};
|
|
135
|
+
const endHandler = () => {
|
|
136
|
+
resolve(buf);
|
|
137
|
+
removeListeners();
|
|
138
|
+
};
|
|
139
|
+
const errorHandler = (err) => {
|
|
140
|
+
reject(err);
|
|
141
|
+
removeListeners();
|
|
142
|
+
};
|
|
143
|
+
this.innerSok.on('data', dataHandler);
|
|
144
|
+
this.innerSok.on('timeout', timeoutHandler);
|
|
145
|
+
this.innerSok.on('end', endHandler);
|
|
146
|
+
this.innerSok.on('error', errorHandler);
|
|
147
|
+
const removeListeners = () => {
|
|
148
|
+
this.innerSok.removeListener('data', dataHandler);
|
|
149
|
+
this.innerSok.removeListener('timeout', timeoutHandler);
|
|
150
|
+
this.innerSok.removeListener('end', endHandler);
|
|
151
|
+
this.innerSok.removeListener('error', errorHandler);
|
|
152
|
+
};
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
async readAll() {
|
|
156
|
+
return new Promise((resolve, reject) => {
|
|
157
|
+
let buf = Buffer.alloc(0);
|
|
158
|
+
const dataHandler = (data) => {
|
|
159
|
+
buf = Buffer.concat([buf, data]);
|
|
160
|
+
};
|
|
161
|
+
const endHandler = () => {
|
|
162
|
+
resolve(buf);
|
|
163
|
+
removeListeners();
|
|
164
|
+
};
|
|
165
|
+
const errorHandler = (err) => {
|
|
166
|
+
reject(err);
|
|
167
|
+
removeListeners();
|
|
168
|
+
};
|
|
169
|
+
const timeoutHandler = () => {
|
|
170
|
+
resolve(buf);
|
|
171
|
+
removeListeners();
|
|
172
|
+
};
|
|
173
|
+
this.innerSok.on('data', dataHandler);
|
|
174
|
+
this.innerSok.on('timeout', timeoutHandler);
|
|
175
|
+
this.innerSok.on('end', endHandler);
|
|
176
|
+
this.innerSok.on('error', errorHandler);
|
|
177
|
+
const removeListeners = () => {
|
|
178
|
+
this.innerSok.removeListener('data', dataHandler);
|
|
179
|
+
this.innerSok.removeListener('timeout', timeoutHandler);
|
|
180
|
+
this.innerSok.removeListener('end', endHandler);
|
|
181
|
+
this.innerSok.removeListener('error', errorHandler);
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.PromiseSocket = PromiseSocket;
|
|
187
|
+
//# sourceMappingURL=MideaUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MideaUtils.js","sourceRoot":"","sources":["../../src/core/MideaUtils.ts"],"names":[],"mappings":";;;AAIA,SAAgB,kBAAkB,CAAC,GAAW,EAAE,WAAmB,EAAE,UAAsB;IACzF,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KAC7B;IACD,OAAO,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,CAAC;AAPD,gDAOC;AAED,SAAgB,MAAM,CAAC,CAAS,EAAE,CAAS;IAEzC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;QACzB,MAAM,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC3D;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACzB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAZD,wBAYC;AAED,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Logger } from 'homebridge';
|
|
2
|
+
import { DeviceInfo } from '../core/MideaConstants';
|
|
3
|
+
import MideaACDevice from './ac/MideaACDevice';
|
|
4
|
+
import { KeyToken } from '../core/MideaSecurity';
|
|
5
|
+
export default class DeviceFactory {
|
|
6
|
+
static createDevice(logger: Logger, device_info: DeviceInfo, token: KeyToken, key: KeyToken): MideaACDevice | undefined;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=DeviceFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeviceFactory.d.ts","sourceRoot":"","sources":["../../src/devices/DeviceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAc,MAAM,wBAAwB,CAAC;AAChE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,aAAa;WAClB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ;CAMnG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const MideaConstants_1 = require("../core/MideaConstants");
|
|
7
|
+
const MideaACDevice_1 = __importDefault(require("./ac/MideaACDevice"));
|
|
8
|
+
class DeviceFactory {
|
|
9
|
+
static createDevice(logger, device_info, token, key) {
|
|
10
|
+
switch (device_info.type) {
|
|
11
|
+
case MideaConstants_1.DeviceType.AIR_CONDITIONER:
|
|
12
|
+
return new MideaACDevice_1.default(logger, device_info, token, key);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.default = DeviceFactory;
|
|
17
|
+
//# sourceMappingURL=DeviceFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeviceFactory.js","sourceRoot":"","sources":["../../src/devices/DeviceFactory.ts"],"names":[],"mappings":";;;;;AACA,2DAAgE;AAChE,uEAA+C;AAG/C,MAAqB,aAAa;IACzB,MAAM,CAAC,YAAY,CAAC,MAAc,EAAE,WAAuB,EAAE,KAAe,EAAE,GAAa;QAChG,QAAQ,WAAW,CAAC,IAAI,EAAE;YACxB,KAAK,2BAAU,CAAC,eAAe;gBAC7B,OAAO,IAAI,uBAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC7D;IACH,CAAC;CACF;AAPD,gCAOC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Logger } from 'homebridge';
|
|
3
|
+
import { DeviceInfo } from '../../core/MideaConstants';
|
|
4
|
+
import MideaDevice, { DeviceAttributesBase } from '../../core/MideaDevice';
|
|
5
|
+
import { KeyToken } from '../../core/MideaSecurity';
|
|
6
|
+
import { MessageGeneralSet, MessageNewProtocolQuery, MessagePowerQuery, MessageQuery, MessageSubProtocolSet } from './MideaACMessage';
|
|
7
|
+
interface DeviceAttributes extends DeviceAttributesBase {
|
|
8
|
+
PROMPT_TONE: boolean;
|
|
9
|
+
POWER: boolean;
|
|
10
|
+
MODE: number;
|
|
11
|
+
TARGET_TEMPERATURE: number;
|
|
12
|
+
FAN_SPEED: number;
|
|
13
|
+
SWING_VERTICAL: boolean;
|
|
14
|
+
SWING_HORIZONTAL: boolean;
|
|
15
|
+
SMART_EYE: boolean;
|
|
16
|
+
DRY: boolean;
|
|
17
|
+
AUX_HEATING: boolean;
|
|
18
|
+
BOOST_MODE: boolean;
|
|
19
|
+
SLEEP_MODE: boolean;
|
|
20
|
+
FROST_PROTECT: boolean;
|
|
21
|
+
COMFORT_MODE: boolean;
|
|
22
|
+
ECO_MODE: boolean;
|
|
23
|
+
NATURAL_WIND: boolean;
|
|
24
|
+
TEMP_FAHRENHEIT: boolean;
|
|
25
|
+
SCREEN_DISPLAY: boolean;
|
|
26
|
+
SCREEN_DISPLAY_NEW: boolean;
|
|
27
|
+
FULL_DUST: boolean;
|
|
28
|
+
INDOOR_TEMPERATURE?: number;
|
|
29
|
+
OUTDOOR_TEMPERATURE?: number;
|
|
30
|
+
INDIRECT_WIND: boolean;
|
|
31
|
+
INDOOR_HUMIDITY?: number;
|
|
32
|
+
BREEZELESS: boolean;
|
|
33
|
+
TOTAL_ENERGY_CONSUMPTION?: number;
|
|
34
|
+
CURRENT_ENERGY_CONSUMPTION?: number;
|
|
35
|
+
REALTIME_POWER: number;
|
|
36
|
+
FRESH_AIR_POWER: boolean;
|
|
37
|
+
FRESH_AIR_FAN_SPEED: number;
|
|
38
|
+
FRESH_AIR_MODE?: string;
|
|
39
|
+
FRESH_AIR_1: boolean;
|
|
40
|
+
FRESH_AIR_2: boolean;
|
|
41
|
+
}
|
|
42
|
+
export default class MideaACDevice extends MideaDevice {
|
|
43
|
+
readonly FRESH_AIR_FAN_SPEEDS: {
|
|
44
|
+
0: string;
|
|
45
|
+
20: string;
|
|
46
|
+
40: string;
|
|
47
|
+
60: string;
|
|
48
|
+
80: string;
|
|
49
|
+
100: string;
|
|
50
|
+
};
|
|
51
|
+
readonly FRESH_AIR_FAN_SPEEDS_REVERSE: {
|
|
52
|
+
100: string;
|
|
53
|
+
80: string;
|
|
54
|
+
60: string;
|
|
55
|
+
40: string;
|
|
56
|
+
20: string;
|
|
57
|
+
0: string;
|
|
58
|
+
};
|
|
59
|
+
attributes: DeviceAttributes;
|
|
60
|
+
private fresh_air_version?;
|
|
61
|
+
private readonly DEFAULT_TEMPERATURE_STEP;
|
|
62
|
+
private temperature_step?;
|
|
63
|
+
private used_subprotocol;
|
|
64
|
+
private bb_sn8_flag;
|
|
65
|
+
private bb_timer;
|
|
66
|
+
private readonly DEFAULT_POWER_ANALYSIS_METHOD;
|
|
67
|
+
private power_analysis_method?;
|
|
68
|
+
constructor(logger: Logger, device_info: DeviceInfo, token: KeyToken, key: KeyToken);
|
|
69
|
+
build_query(): (MessageQuery | MessagePowerQuery | MessageNewProtocolQuery)[];
|
|
70
|
+
process_message(msg: Buffer): void;
|
|
71
|
+
make_message_set(): MessageGeneralSet;
|
|
72
|
+
make_subprotocol_message_set(): MessageSubProtocolSet;
|
|
73
|
+
make_message_unique_set(): MessageGeneralSet | MessageSubProtocolSet;
|
|
74
|
+
set_attribute(attributes: Partial<DeviceAttributes>): Promise<void>;
|
|
75
|
+
set_target_temperature(target_temperature: number, mode: number): Promise<void>;
|
|
76
|
+
set_swing(swing_horizontal: boolean, swing_vertical: boolean): Promise<void>;
|
|
77
|
+
protected set_subtype(): void;
|
|
78
|
+
}
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=MideaACDevice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MideaACDevice.d.ts","sourceRoot":"","sources":["../../../src/devices/ac/MideaACDevice.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,WAAW,EAAE,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAqB,iBAAiB,EAAE,uBAAuB,EAAyB,iBAAiB,EAAE,YAAY,EAA+C,qBAAqB,EAAwB,MAAM,kBAAkB,CAAC;AAEnP,UAAU,gBAAiB,SAAQ,oBAAoB;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IAEpD,QAAQ,CAAC,oBAAoB;;;;;;;MAO3B;IAEF,QAAQ,CAAC,4BAA4B;;;;;;;MAOnC;IAEK,UAAU,EAAE,gBAAgB,CAAC;IAEpC,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAO;IAChD,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAK;IACnD,OAAO,CAAC,qBAAqB,CAAC,CAAS;gBAGrC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,QAAQ;IAwCf,WAAW;IAeX,eAAe,CAAC,GAAG,EAAE,MAAM;IAqD3B,gBAAgB;IAsBhB,4BAA4B;IAiB5B,uBAAuB,IAAI,iBAAiB,GAAG,qBAAqB;IAI9D,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAuEnD,sBAAsB,CAAC,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAc/D,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO;IASlE,SAAS,CAAC,WAAW,IAAI,IAAI;CAG9B"}
|