zigbee-herdsman 0.56.2 → 0.57.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.
Files changed (61) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +14 -0
  3. package/dist/adapter/adapter.d.ts.map +1 -1
  4. package/dist/adapter/adapter.js +9 -1
  5. package/dist/adapter/adapter.js.map +1 -1
  6. package/dist/adapter/tstype.d.ts +1 -1
  7. package/dist/adapter/tstype.d.ts.map +1 -1
  8. package/dist/adapter/zboss/adapter/index.d.ts +3 -0
  9. package/dist/adapter/zboss/adapter/index.d.ts.map +1 -0
  10. package/dist/adapter/zboss/adapter/index.js +6 -0
  11. package/dist/adapter/zboss/adapter/index.js.map +1 -0
  12. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts +55 -0
  13. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -0
  14. package/dist/adapter/zboss/adapter/zbossAdapter.js +391 -0
  15. package/dist/adapter/zboss/adapter/zbossAdapter.js.map +1 -0
  16. package/dist/adapter/zboss/commands.d.ts +19 -0
  17. package/dist/adapter/zboss/commands.d.ts.map +1 -0
  18. package/dist/adapter/zboss/commands.js +1064 -0
  19. package/dist/adapter/zboss/commands.js.map +1 -0
  20. package/dist/adapter/zboss/consts.d.ts +9 -0
  21. package/dist/adapter/zboss/consts.d.ts.map +1 -0
  22. package/dist/adapter/zboss/consts.js +12 -0
  23. package/dist/adapter/zboss/consts.js.map +1 -0
  24. package/dist/adapter/zboss/driver.d.ts +62 -0
  25. package/dist/adapter/zboss/driver.d.ts.map +1 -0
  26. package/dist/adapter/zboss/driver.js +332 -0
  27. package/dist/adapter/zboss/driver.js.map +1 -0
  28. package/dist/adapter/zboss/enums.d.ts +279 -0
  29. package/dist/adapter/zboss/enums.d.ts.map +1 -0
  30. package/dist/adapter/zboss/enums.js +327 -0
  31. package/dist/adapter/zboss/enums.js.map +1 -0
  32. package/dist/adapter/zboss/frame.d.ts +29 -0
  33. package/dist/adapter/zboss/frame.d.ts.map +1 -0
  34. package/dist/adapter/zboss/frame.js +155 -0
  35. package/dist/adapter/zboss/frame.js.map +1 -0
  36. package/dist/adapter/zboss/reader.d.ts +8 -0
  37. package/dist/adapter/zboss/reader.d.ts.map +1 -0
  38. package/dist/adapter/zboss/reader.js +58 -0
  39. package/dist/adapter/zboss/reader.js.map +1 -0
  40. package/dist/adapter/zboss/types.d.ts +1 -0
  41. package/dist/adapter/zboss/types.d.ts.map +1 -0
  42. package/dist/adapter/zboss/types.js +2 -0
  43. package/dist/adapter/zboss/types.js.map +1 -0
  44. package/dist/adapter/zboss/uart.d.ts +37 -0
  45. package/dist/adapter/zboss/uart.d.ts.map +1 -0
  46. package/dist/adapter/zboss/uart.js +369 -0
  47. package/dist/adapter/zboss/uart.js.map +1 -0
  48. package/dist/adapter/zboss/utils.d.ts +9 -0
  49. package/dist/adapter/zboss/utils.d.ts.map +1 -0
  50. package/dist/adapter/zboss/utils.js +56 -0
  51. package/dist/adapter/zboss/utils.js.map +1 -0
  52. package/dist/adapter/zboss/writer.d.ts +14 -0
  53. package/dist/adapter/zboss/writer.d.ts.map +1 -0
  54. package/dist/adapter/zboss/writer.js +43 -0
  55. package/dist/adapter/zboss/writer.js.map +1 -0
  56. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  57. package/dist/zspec/zcl/definition/cluster.js +0 -115
  58. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  59. package/dist/zspec/zcl/definition/tstype.d.ts +1 -1
  60. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  61. package/package.json +7 -8
@@ -0,0 +1,369 @@
1
+ "use strict";
2
+ /* istanbul ignore file */
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ZBOSSUart = void 0;
8
+ const net_1 = require("net");
9
+ const stream_1 = __importDefault(require("stream"));
10
+ const utils_1 = require("../../utils");
11
+ const logger_1 = require("../../utils/logger");
12
+ const wait_1 = __importDefault(require("../../utils/wait"));
13
+ const serialPort_1 = require("../serialPort");
14
+ const socketPortUtils_1 = __importDefault(require("../socketPortUtils"));
15
+ const consts_1 = require("./consts");
16
+ const frame_1 = require("./frame");
17
+ const reader_1 = require("./reader");
18
+ const utils_2 = require("./utils");
19
+ const writer_1 = require("./writer");
20
+ const NS = 'zh:zboss:uart';
21
+ class ZBOSSUart extends stream_1.default {
22
+ portOptions;
23
+ serialPort;
24
+ socketPort;
25
+ writer;
26
+ reader;
27
+ closing = false;
28
+ sendSeq = 0; // next frame number to send
29
+ recvSeq = 0; // next frame number to receive
30
+ ackSeq = 0; // next number after the last accepted frame
31
+ waitress;
32
+ queue;
33
+ inReset = false;
34
+ constructor(options) {
35
+ super();
36
+ this.portOptions = options;
37
+ this.serialPort = undefined;
38
+ this.socketPort = undefined;
39
+ this.writer = new writer_1.ZBOSSWriter();
40
+ this.reader = new reader_1.ZBOSSReader();
41
+ this.queue = new utils_1.Queue(1);
42
+ this.waitress = new utils_1.Waitress(this.waitressValidator, this.waitressTimeoutFormatter);
43
+ }
44
+ async resetNcp() {
45
+ if (this.closing) {
46
+ return false;
47
+ }
48
+ logger_1.logger.info(`NCP reset`, NS);
49
+ try {
50
+ if (!this.portOpen) {
51
+ await this.openPort();
52
+ }
53
+ return true;
54
+ }
55
+ catch (err) {
56
+ logger_1.logger.error(`Failed to init port with error ${err}`, NS);
57
+ return false;
58
+ }
59
+ }
60
+ get portOpen() {
61
+ if (this.closing) {
62
+ return false;
63
+ }
64
+ if (socketPortUtils_1.default.isTcpPath(this.portOptions.path)) {
65
+ return this.socketPort && !this.socketPort.closed;
66
+ }
67
+ else {
68
+ return this.serialPort && this.serialPort.isOpen;
69
+ }
70
+ }
71
+ async start() {
72
+ if (!this.portOpen) {
73
+ return false;
74
+ }
75
+ logger_1.logger.info(`UART starting`, NS);
76
+ try {
77
+ if (this.serialPort != null) {
78
+ // clear read/write buffers
79
+ await this.serialPort.asyncFlush();
80
+ }
81
+ }
82
+ catch (err) {
83
+ logger_1.logger.error(`Error while flushing before start: ${err}`, NS);
84
+ }
85
+ return true;
86
+ }
87
+ async stop() {
88
+ this.closing = true;
89
+ this.queue.clear();
90
+ await this.closePort();
91
+ this.closing = false;
92
+ logger_1.logger.info(`UART stopped`, NS);
93
+ }
94
+ async openPort() {
95
+ await this.closePort();
96
+ if (!socketPortUtils_1.default.isTcpPath(this.portOptions.path)) {
97
+ const serialOpts = {
98
+ path: this.portOptions.path,
99
+ baudRate: typeof this.portOptions.baudRate === 'number' ? this.portOptions.baudRate : 115200,
100
+ rtscts: typeof this.portOptions.rtscts === 'boolean' ? this.portOptions.rtscts : false,
101
+ autoOpen: false,
102
+ };
103
+ //@ts-expect-error Jest testing
104
+ if (this.portOptions.binding != null) {
105
+ //@ts-expect-error Jest testing
106
+ serialOpts.binding = this.portOptions.binding;
107
+ }
108
+ logger_1.logger.debug(`Opening serial port with ${JSON.stringify(serialOpts)}`, NS);
109
+ this.serialPort = new serialPort_1.SerialPort(serialOpts);
110
+ this.writer.pipe(this.serialPort);
111
+ this.serialPort.pipe(this.reader);
112
+ this.reader.on('data', this.onPackage.bind(this));
113
+ try {
114
+ await this.serialPort.asyncOpen();
115
+ logger_1.logger.info(`Serial port opened`, NS);
116
+ this.serialPort.once('close', this.onPortClose.bind(this));
117
+ this.serialPort.on('error', this.onPortError.bind(this));
118
+ }
119
+ catch (error) {
120
+ await this.stop();
121
+ throw error;
122
+ }
123
+ }
124
+ else {
125
+ const info = socketPortUtils_1.default.parseTcpPath(this.portOptions.path);
126
+ logger_1.logger.debug(`Opening TCP socket with ${info.host}:${info.port}`, NS);
127
+ this.socketPort = new net_1.Socket();
128
+ this.socketPort.setNoDelay(true);
129
+ this.socketPort.setKeepAlive(true, 15000);
130
+ this.writer.pipe(this.socketPort);
131
+ this.socketPort.pipe(this.reader);
132
+ this.reader.on('data', this.onPackage.bind(this));
133
+ return new Promise((resolve, reject) => {
134
+ const openError = async (err) => {
135
+ await this.stop();
136
+ reject(err);
137
+ };
138
+ this.socketPort?.on('connect', () => {
139
+ logger_1.logger.debug(`Socket connected`, NS);
140
+ });
141
+ this.socketPort?.on('ready', async () => {
142
+ logger_1.logger.info(`Socket ready`, NS);
143
+ this.socketPort?.removeListener('error', openError);
144
+ this.socketPort?.once('close', this.onPortClose.bind(this));
145
+ this.socketPort?.on('error', this.onPortError.bind(this));
146
+ resolve();
147
+ });
148
+ this.socketPort?.once('error', openError);
149
+ this.socketPort?.connect(info.port, info.host);
150
+ });
151
+ }
152
+ }
153
+ async closePort() {
154
+ if (this.serialPort?.isOpen) {
155
+ try {
156
+ await this.serialPort.asyncFlushAndClose();
157
+ }
158
+ catch (err) {
159
+ logger_1.logger.error(`Failed to close serial port ${err}.`, NS);
160
+ }
161
+ this.serialPort.removeAllListeners();
162
+ this.serialPort = undefined;
163
+ }
164
+ else if (this.socketPort != undefined && !this.socketPort.closed) {
165
+ this.socketPort.destroy();
166
+ this.socketPort.removeAllListeners();
167
+ this.socketPort = undefined;
168
+ }
169
+ }
170
+ async onPortClose(err) {
171
+ logger_1.logger.info(`Port closed. Error? ${err ?? 'no'}`, NS);
172
+ if (this.inReset) {
173
+ await (0, wait_1.default)(3000);
174
+ await this.openPort();
175
+ this.inReset = false;
176
+ }
177
+ }
178
+ async onPortError(error) {
179
+ logger_1.logger.info(`Port error: ${error}`, NS);
180
+ }
181
+ async onPackage(data) {
182
+ if (this.inReset)
183
+ return;
184
+ const len = data.readUInt16LE(0);
185
+ const pType = data.readUInt8(2);
186
+ const pFlags = data.readUInt8(3);
187
+ const isACK = (pFlags & 0x1) === 1;
188
+ const retransmit = ((pFlags >> 1) & 0x1) === 1;
189
+ const sequence = (pFlags >> 2) & 0x3;
190
+ const ACKseq = (pFlags >> 4) & 0x3;
191
+ const isFirst = ((pFlags >> 6) & 0x1) === 1;
192
+ const isLast = ((pFlags >> 7) & 0x1) === 1;
193
+ logger_1.logger.debug(`<-- package type ${pType}, flags ${pFlags.toString(16)}` + `${JSON.stringify({ isACK, retransmit, sequence, ACKseq, isFirst, isLast })}`, NS);
194
+ if (pType !== consts_1.ZBOSS_NCP_API_HL) {
195
+ logger_1.logger.error(`<-- Wrong package type: ${pType}`, NS);
196
+ return;
197
+ }
198
+ if (isACK) {
199
+ // ACKseq is received
200
+ this.handleACK(ACKseq);
201
+ return;
202
+ }
203
+ if (len <= 5) {
204
+ logger_1.logger.debug(`<-- Empty package`, NS);
205
+ return;
206
+ }
207
+ // header crc
208
+ const hCRC = data.readUInt8(4);
209
+ const hCRC8 = (0, utils_2.crc8)(data.subarray(0, 4));
210
+ if (hCRC !== hCRC8) {
211
+ logger_1.logger.error(`<-- Wrong package header crc: is ${hCRC}, expected ${hCRC8}`, NS);
212
+ return;
213
+ }
214
+ // body crc
215
+ const bCRC = data.readUInt16LE(5);
216
+ const body = data.subarray(7);
217
+ const bodyCRC16 = (0, utils_2.crc16)(body);
218
+ if (bCRC !== bodyCRC16) {
219
+ logger_1.logger.error(`<-- Wrong package body crc: is ${bCRC}, expected ${bodyCRC16}`, NS);
220
+ return;
221
+ }
222
+ this.recvSeq = sequence;
223
+ // Send ACK
224
+ logger_1.logger.debug(`--> ACK (${this.recvSeq})`, NS);
225
+ await this.sendACK(this.recvSeq);
226
+ try {
227
+ logger_1.logger.debug(`<-- FRAME: ${body.toString('hex')}`, NS);
228
+ const frame = (0, frame_1.readZBOSSFrame)(body);
229
+ if (frame) {
230
+ this.emit('frame', frame);
231
+ }
232
+ }
233
+ catch (error) {
234
+ logger_1.logger.debug(`<-- error ${error.stack}`, NS);
235
+ }
236
+ }
237
+ async sendFrame(frame) {
238
+ try {
239
+ const buf = (0, frame_1.writeZBOSSFrame)(frame);
240
+ logger_1.logger.debug(`--> FRAME: ${buf.toString('hex')}`, NS);
241
+ let flags = (this.sendSeq & 0x03) << 2; // sequence
242
+ flags = flags | consts_1.ZBOSS_FLAG_FIRST_FRAGMENT | consts_1.ZBOSS_FLAG_LAST_FRAGMENT;
243
+ const pack = this.makePack(flags, buf);
244
+ const isACK = (flags & 0x1) === 1;
245
+ const retransmit = ((flags >> 1) & 0x1) === 1;
246
+ const sequence = (flags >> 2) & 0x3;
247
+ const ACKseq = (flags >> 4) & 0x3;
248
+ const isFirst = ((flags >> 6) & 0x1) === 1;
249
+ const isLast = ((flags >> 7) & 0x1) === 1;
250
+ logger_1.logger.debug(`--> package type ${consts_1.ZBOSS_NCP_API_HL}, flags ${flags.toString(16)}` +
251
+ `${JSON.stringify({ isACK, retransmit, sequence, ACKseq, isFirst, isLast })}`, NS);
252
+ logger_1.logger.debug(`--> PACK: ${pack.toString('hex')}`, NS);
253
+ await this.sendDATA(pack);
254
+ }
255
+ catch (error) {
256
+ logger_1.logger.debug(`--> error ${error.stack}`, NS);
257
+ }
258
+ }
259
+ async sendDATA(data, isACK = false) {
260
+ const seq = this.sendSeq;
261
+ const nextSeq = this.sendSeq;
262
+ const ackSeq = this.recvSeq;
263
+ return this.queue.execute(async () => {
264
+ try {
265
+ logger_1.logger.debug(`--> DATA (${seq},${ackSeq},0): ${data.toString('hex')}`, NS);
266
+ if (!isACK) {
267
+ const waiter = this.waitFor(nextSeq);
268
+ this.writeBuffer(data);
269
+ logger_1.logger.debug(`-?- waiting (${nextSeq})`, NS);
270
+ await waiter.start().promise;
271
+ logger_1.logger.debug(`-+- waiting (${nextSeq}) success`, NS);
272
+ }
273
+ else {
274
+ this.writeBuffer(data);
275
+ }
276
+ }
277
+ catch (e1) {
278
+ logger_1.logger.error(`--> Error: ${e1}`, NS);
279
+ logger_1.logger.error(`-!- break waiting (${nextSeq})`, NS);
280
+ logger_1.logger.error(`Can't send DATA frame (${seq},${ackSeq},0): ${data.toString('hex')}`, NS);
281
+ throw new Error(`sendDATA error: try 1: ${e1}`);
282
+ // try {
283
+ // await Wait(500);
284
+ // const waiter = this.waitFor(nextSeq);
285
+ // logger.debug(`->> DATA (${seq},${ackSeq},1): ${data.toString('hex')}`, NS);
286
+ // this.writeBuffer(data);
287
+ // logger.debug(`-?- rewaiting (${nextSeq})`, NS);
288
+ // await waiter.start().promise;
289
+ // logger.debug(`-+- rewaiting (${nextSeq}) success`, NS);
290
+ // } catch (e2) {
291
+ // logger.error(`--> Error: ${e2}`, NS);
292
+ // logger.error(`-!- break rewaiting (${nextSeq})`, NS);
293
+ // logger.error(`Can't resend DATA frame (${seq},${ackSeq},1): ${data.toString('hex')}`, NS);
294
+ // throw new Error(`sendDATA error: try 1: ${e1}, try 2: ${e2}`);
295
+ // }
296
+ }
297
+ });
298
+ }
299
+ handleACK(ackSeq) {
300
+ /* Handle an acknowledgement package */
301
+ // next number after the last accepted package
302
+ this.ackSeq = ackSeq & 0x03;
303
+ logger_1.logger.debug(`<-- ACK (${this.ackSeq})`, NS);
304
+ const handled = this.waitress.resolve(this.ackSeq);
305
+ if (!handled && this.sendSeq !== this.ackSeq) {
306
+ // Packet confirmation received for {ackSeq}, but was expected {sendSeq}
307
+ // This happens when the chip has not yet received of the packet {sendSeq} from us,
308
+ // but has already sent us the next one.
309
+ logger_1.logger.debug(`Unexpected packet sequence ${this.ackSeq} | ${this.sendSeq}`, NS);
310
+ }
311
+ else {
312
+ // next
313
+ this.sendSeq = { 0: 1, 1: 2, 2: 3, 3: 1 }[this.sendSeq] || 1;
314
+ }
315
+ return handled;
316
+ }
317
+ async sendACK(ackNum, retransmit = false) {
318
+ /* Construct a acknowledgement package */
319
+ let flags = (ackNum & 0x03) << 4; // ACKseq
320
+ flags |= 0x01; // isACK
321
+ if (retransmit) {
322
+ flags |= 0x02; // retransmit
323
+ }
324
+ const ackPackage = this.makePack(flags, undefined);
325
+ const isACK = (flags & 0x1) === 1;
326
+ const sequence = (flags >> 2) & 0x3;
327
+ const ACKseq = (flags >> 4) & 0x3;
328
+ const isFirst = ((flags >> 6) & 0x1) === 1;
329
+ const isLast = ((flags >> 7) & 0x1) === 1;
330
+ logger_1.logger.debug(`--> package type ${consts_1.ZBOSS_NCP_API_HL}, flags ${flags.toString(16)}` +
331
+ `${JSON.stringify({ isACK, retransmit, sequence, ACKseq, isFirst, isLast })}`, NS);
332
+ logger_1.logger.debug(`--> ACK: ${ackPackage.toString('hex')}`, NS);
333
+ await this.sendDATA(ackPackage, true);
334
+ }
335
+ writeBuffer(buffer) {
336
+ logger_1.logger.debug(`--> [${buffer.toString('hex')}]`, NS);
337
+ this.writer.push(buffer);
338
+ }
339
+ makePack(flags, data) {
340
+ /* Construct a package */
341
+ const packLen = 5 + (data ? data.length + 2 : 0);
342
+ const header = Buffer.alloc(7);
343
+ header.writeUint16BE(consts_1.SIGNATURE);
344
+ header.writeUint16LE(packLen, 2);
345
+ header.writeUint8(consts_1.ZBOSS_NCP_API_HL, 4);
346
+ header.writeUint8(flags, 5);
347
+ const hCRC8 = (0, utils_2.crc8)(header.subarray(2, 6));
348
+ header.writeUint8(hCRC8, 6);
349
+ if (data) {
350
+ const pCRC16 = Buffer.alloc(2);
351
+ pCRC16.writeUint16LE((0, utils_2.crc16)(data));
352
+ return Buffer.concat([header, pCRC16, data]);
353
+ }
354
+ else {
355
+ return header;
356
+ }
357
+ }
358
+ waitFor(sequence, timeout = 2000) {
359
+ return this.waitress.waitFor(sequence, timeout);
360
+ }
361
+ waitressTimeoutFormatter(matcher, timeout) {
362
+ return `${matcher} after ${timeout}ms`;
363
+ }
364
+ waitressValidator(sequence, matcher) {
365
+ return sequence === matcher;
366
+ }
367
+ }
368
+ exports.ZBOSSUart = ZBOSSUart;
369
+ //# sourceMappingURL=uart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uart.js","sourceRoot":"","sources":["../../../src/adapter/zboss/uart.ts"],"names":[],"mappings":";AAAA,0BAA0B;;;;;;AAE1B,6BAA2B;AAC3B,oDAAkC;AAElC,uCAA4C;AAC5C,+CAA0C;AAC1C,4DAAoC;AACpC,8CAAyC;AACzC,yEAAiD;AAEjD,qCAA0G;AAC1G,mCAAoE;AACpE,qCAAqC;AACrC,mCAAoC;AACpC,qCAAqC;AAErC,MAAM,EAAE,GAAG,eAAe,CAAC;AAE3B,MAAa,SAAU,SAAQ,gBAAY;IACtB,WAAW,CAAoB;IACxC,UAAU,CAAc;IACxB,UAAU,CAAU;IACpB,MAAM,CAAc;IACpB,MAAM,CAAc;IACpB,OAAO,GAAY,KAAK,CAAC;IACzB,OAAO,GAAG,CAAC,CAAC,CAAC,4BAA4B;IACzC,OAAO,GAAG,CAAC,CAAC,CAAC,+BAA+B;IAC5C,MAAM,GAAG,CAAC,CAAC,CAAC,4CAA4C;IACxD,QAAQ,CAA2B;IACnC,KAAK,CAAQ;IACd,OAAO,GAAG,KAAK,CAAC;IAEvB,YAAY,OAA0B;QAClC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAW,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAW,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAQ,CAAiB,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxG,CAAC;IAEM,KAAK,CAAC,QAAQ;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAE7B,IAAI,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,CAAC;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,eAAM,CAAC,KAAK,CAAC,kCAAkC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YAE1D,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,yBAAe,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAK,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACtD,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACrD,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAEjC,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBAC1B,2BAA2B;gBAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YACvC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,eAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,eAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,QAAQ;QAClB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAEvB,IAAI,CAAC,yBAAe,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAK,CAAC,EAAE,CAAC;YACrD,MAAM,UAAU,GAAG;gBACf,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAK;gBAC5B,QAAQ,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBAC5F,MAAM,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;gBACtF,QAAQ,EAAE,KAAK;aAClB,CAAC;YAEF,+BAA+B;YAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;gBACnC,+BAA+B;gBAC/B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAClD,CAAC;YAED,eAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3E,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAU,CAAC,UAAU,CAAC,CAAC;YAE7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAElD,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBAClC,eAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;gBAEtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3D,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBAElB,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,GAAG,yBAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAK,CAAC,CAAC;YAClE,eAAM,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC,UAAU,GAAG,IAAI,YAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAE1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAElD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;gBACzC,MAAM,SAAS,GAAG,KAAK,EAAE,GAAU,EAAiB,EAAE;oBAClD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;oBAElB,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC;gBAEF,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;oBAChC,eAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,IAAmB,EAAE;oBACnD,eAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;oBAChC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBACpD,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC5D,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAE1D,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAE1C,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,SAAS;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,eAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAChC,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACjE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAChC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,GAAoB;QAC1C,eAAM,CAAC,IAAI,CAAC,uBAAuB,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,IAAA,cAAI,EAAC,IAAI,CAAC,CAAC;YACjB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAAY;QAClC,eAAM,CAAC,IAAI,CAAC,eAAe,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAY;QAChC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACrC,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACnC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,eAAM,CAAC,KAAK,CACR,oBAAoB,KAAK,WAAW,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC,EAAE,EACvI,EAAE,CACL,CAAC;QAEF,IAAI,KAAK,KAAK,yBAAgB,EAAE,CAAC;YAC7B,eAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACrD,OAAO;QACX,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACR,qBAAqB;YACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO;QACX,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACX,eAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YACtC,OAAO;QACX,CAAC;QAED,aAAa;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAA,YAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACjB,eAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,cAAc,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAChF,OAAO;QACX,CAAC;QAED,WAAW;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,eAAM,CAAC,KAAK,CAAC,kCAAkC,IAAI,cAAc,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAClF,OAAO;QACX,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,WAAW;QACX,eAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjC,IAAI,CAAC;YACD,eAAM,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,eAAM,CAAC,KAAK,CAAC,aAAc,KAAe,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,KAAiB;QACpC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC;YACnC,eAAM,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;YACnD,KAAK,GAAG,KAAK,GAAG,kCAAyB,GAAG,iCAAwB,CAAC;YACrE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;YACpC,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;YAClC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,eAAM,CAAC,KAAK,CACR,oBAAoB,yBAAgB,WAAW,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;gBAC/D,GAAG,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC,EAAE,EAC/E,EAAE,CACL,CAAC;YACF,eAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,eAAM,CAAC,KAAK,CAAC,aAAc,KAAe,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,QAAiB,KAAK;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAO,KAAK,IAAmB,EAAE;YACtD,IAAI,CAAC;gBACD,eAAM,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,MAAM,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBACvB,eAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC7C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC;oBAC7B,eAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,WAAW,EAAE,EAAE,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACV,eAAM,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrC,eAAM,CAAC,KAAK,CAAC,sBAAsB,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC;gBACnD,eAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,IAAI,MAAM,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxF,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;gBAChD,QAAQ;gBACR,uBAAuB;gBACvB,4CAA4C;gBAC5C,kFAAkF;gBAClF,8BAA8B;gBAC9B,sDAAsD;gBACtD,oCAAoC;gBACpC,8DAA8D;gBAC9D,iBAAiB;gBACjB,4CAA4C;gBAC5C,4DAA4D;gBAC5D,iGAAiG;gBACjG,qEAAqE;gBACrE,IAAI;YACR,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,SAAS,CAAC,MAAc;QAC5B,uCAAuC;QACvC,8CAA8C;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAE5B,eAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,wEAAwE;YACxE,mFAAmF;YACnF,wCAAwC;YACxC,eAAM,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACJ,OAAO;YACP,IAAI,CAAC,OAAO,GAAG,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,aAAsB,KAAK;QAC7D,yCAAyC;QAEzC,IAAI,KAAK,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC3C,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ;QACvB,IAAI,UAAU,EAAE,CAAC;YACb,KAAK,IAAI,IAAI,CAAC,CAAC,aAAa;QAChC,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACpC,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QAClC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,eAAM,CAAC,KAAK,CACR,oBAAoB,yBAAgB,WAAW,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YAC/D,GAAG,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC,EAAE,EAC/E,EAAE,CACL,CAAC;QACF,eAAM,CAAC,KAAK,CAAC,aAAa,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,WAAW,CAAC,MAAc;QAC9B,eAAM,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAEO,QAAQ,CAAC,KAAa,EAAE,IAAa;QACzC,yBAAyB;QACzB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,aAAa,CAAC,kBAAS,CAAC,CAAC;QAChC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,UAAU,CAAC,yBAAgB,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAA,YAAI,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,aAAa,CAAC,IAAA,aAAK,EAAC,IAAI,CAAC,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,CAAC;QAClB,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,QAAgB,EAAE,OAAO,GAAG,IAAI;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAEO,wBAAwB,CAAC,OAAe,EAAE,OAAe;QAC7D,OAAO,GAAG,OAAO,UAAU,OAAO,IAAI,CAAC;IAC3C,CAAC;IAEO,iBAAiB,CAAC,QAAgB,EAAE,OAAe;QACvD,OAAO,QAAQ,KAAK,OAAO,CAAC;IAChC,CAAC;CACJ;AA7YD,8BA6YC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * width=16 poly=0x1021 init=0x0000 refin=true refout=true xorout=0x0000 check=0x2189 residue=0x0000 name="CRC-16/KERMIT"
3
+ */
4
+ export declare function crc16(data: Buffer): number;
5
+ /**
6
+ * width=8 poly=0x4d init=0xff refin=true refout=true xorout=0xff check=0xd8 name="CRC-8/KOOP"
7
+ */
8
+ export declare function crc8(data: Buffer): number;
9
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/adapter/zboss/utils.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ1C;AAeD;;GAEG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQzC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /* istanbul ignore file */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.crc16 = crc16;
5
+ exports.crc8 = crc8;
6
+ const crc16Table = [
7
+ 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108,
8
+ 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399,
9
+ 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e,
10
+ 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
11
+ 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44,
12
+ 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5,
13
+ 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862,
14
+ 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
15
+ 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483,
16
+ 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710,
17
+ 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1,
18
+ 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
19
+ 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf,
20
+ 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c,
21
+ 0x3de3, 0x2c6a, 0x1ef1, 0x0f78,
22
+ ];
23
+ /**
24
+ * width=16 poly=0x1021 init=0x0000 refin=true refout=true xorout=0x0000 check=0x2189 residue=0x0000 name="CRC-16/KERMIT"
25
+ */
26
+ function crc16(data) {
27
+ let crc = 0x0000;
28
+ for (const byte of data) {
29
+ crc = crc16Table[(crc ^ byte) & 0xff] ^ ((crc >> 8) & 0xff);
30
+ }
31
+ return crc ^ (0x0 & 0xffff);
32
+ }
33
+ const crc8Table = [
34
+ 0xea, 0xd4, 0x96, 0xa8, 0x12, 0x2c, 0x6e, 0x50, 0x7f, 0x41, 0x03, 0x3d, 0x87, 0xb9, 0xfb, 0xc5, 0xa5, 0x9b, 0xd9, 0xe7, 0x5d, 0x63, 0x21, 0x1f,
35
+ 0x30, 0x0e, 0x4c, 0x72, 0xc8, 0xf6, 0xb4, 0x8a, 0x74, 0x4a, 0x08, 0x36, 0x8c, 0xb2, 0xf0, 0xce, 0xe1, 0xdf, 0x9d, 0xa3, 0x19, 0x27, 0x65, 0x5b,
36
+ 0x3b, 0x05, 0x47, 0x79, 0xc3, 0xfd, 0xbf, 0x81, 0xae, 0x90, 0xd2, 0xec, 0x56, 0x68, 0x2a, 0x14, 0xb3, 0x8d, 0xcf, 0xf1, 0x4b, 0x75, 0x37, 0x09,
37
+ 0x26, 0x18, 0x5a, 0x64, 0xde, 0xe0, 0xa2, 0x9c, 0xfc, 0xc2, 0x80, 0xbe, 0x04, 0x3a, 0x78, 0x46, 0x69, 0x57, 0x15, 0x2b, 0x91, 0xaf, 0xed, 0xd3,
38
+ 0x2d, 0x13, 0x51, 0x6f, 0xd5, 0xeb, 0xa9, 0x97, 0xb8, 0x86, 0xc4, 0xfa, 0x40, 0x7e, 0x3c, 0x02, 0x62, 0x5c, 0x1e, 0x20, 0x9a, 0xa4, 0xe6, 0xd8,
39
+ 0xf7, 0xc9, 0x8b, 0xb5, 0x0f, 0x31, 0x73, 0x4d, 0x58, 0x66, 0x24, 0x1a, 0xa0, 0x9e, 0xdc, 0xe2, 0xcd, 0xf3, 0xb1, 0x8f, 0x35, 0x0b, 0x49, 0x77,
40
+ 0x17, 0x29, 0x6b, 0x55, 0xef, 0xd1, 0x93, 0xad, 0x82, 0xbc, 0xfe, 0xc0, 0x7a, 0x44, 0x06, 0x38, 0xc6, 0xf8, 0xba, 0x84, 0x3e, 0x00, 0x42, 0x7c,
41
+ 0x53, 0x6d, 0x2f, 0x11, 0xab, 0x95, 0xd7, 0xe9, 0x89, 0xb7, 0xf5, 0xcb, 0x71, 0x4f, 0x0d, 0x33, 0x1c, 0x22, 0x60, 0x5e, 0xe4, 0xda, 0x98, 0xa6,
42
+ 0x01, 0x3f, 0x7d, 0x43, 0xf9, 0xc7, 0x85, 0xbb, 0x94, 0xaa, 0xe8, 0xd6, 0x6c, 0x52, 0x10, 0x2e, 0x4e, 0x70, 0x32, 0x0c, 0xb6, 0x88, 0xca, 0xf4,
43
+ 0xdb, 0xe5, 0xa7, 0x99, 0x23, 0x1d, 0x5f, 0x61, 0x9f, 0xa1, 0xe3, 0xdd, 0x67, 0x59, 0x1b, 0x25, 0x0a, 0x34, 0x76, 0x48, 0xf2, 0xcc, 0x8e, 0xb0,
44
+ 0xd0, 0xee, 0xac, 0x92, 0x28, 0x16, 0x54, 0x6a, 0x45, 0x7b, 0x39, 0x07, 0xbd, 0x83, 0xc1, 0xff,
45
+ ];
46
+ /**
47
+ * width=8 poly=0x4d init=0xff refin=true refout=true xorout=0xff check=0xd8 name="CRC-8/KOOP"
48
+ */
49
+ function crc8(data) {
50
+ let crc = 0x00;
51
+ for (const byte of data) {
52
+ crc = crc8Table[(crc ^ byte) & 0xff];
53
+ }
54
+ return crc;
55
+ }
56
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/adapter/zboss/utils.ts"],"names":[],"mappings":";AAAA,0BAA0B;;AAuB1B,sBAQC;AAkBD,oBAQC;AAvDD,MAAM,UAAU,GAAG;IACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9I,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CACjC,CAAC;AAEF;;GAEG;AACH,SAAgB,KAAK,CAAC,IAAY;IAC9B,IAAI,GAAG,GAAG,MAAM,CAAC;IAEjB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACtB,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,SAAS,GAAG;IACd,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9I,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACjG,CAAC;AACF;;GAEG;AACH,SAAgB,IAAI,CAAC,IAAY;IAC7B,IAAI,GAAG,GAAG,IAAI,CAAC;IAEf,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACtB,GAAG,GAAG,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Readable, ReadableOptions } from 'stream';
2
+ export declare class ZBOSSWriter extends Readable {
3
+ private bytesToWrite;
4
+ constructor(opts?: ReadableOptions);
5
+ private writeBytes;
6
+ writeByte(byte: number): void;
7
+ writeAvailable(): boolean;
8
+ /**
9
+ * If there is anything to send, send to the port.
10
+ */
11
+ writeFlush(): void;
12
+ _read(): void;
13
+ }
14
+ //# sourceMappingURL=writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/adapter/zboss/writer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAE,eAAe,EAAC,MAAM,QAAQ,CAAC;AAEjD,qBAAa,WAAY,SAAQ,QAAQ;IACrC,OAAO,CAAC,YAAY,CAAW;gBAEnB,IAAI,CAAC,EAAE,eAAe;IAMlC,OAAO,CAAC,UAAU;IAWX,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,cAAc,IAAI,OAAO;IAUhC;;OAEG;IACI,UAAU,IAAI,IAAI;IAMlB,KAAK,IAAI,IAAI;CACvB"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /* istanbul ignore file */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ZBOSSWriter = void 0;
5
+ const stream_1 = require("stream");
6
+ class ZBOSSWriter extends stream_1.Readable {
7
+ bytesToWrite;
8
+ constructor(opts) {
9
+ super(opts);
10
+ this.bytesToWrite = [];
11
+ }
12
+ writeBytes() {
13
+ const buffer = Buffer.from(this.bytesToWrite);
14
+ this.bytesToWrite = [];
15
+ // expensive and very verbose, enable locally only if necessary
16
+ // logger.debug(`>>>> [FRAME raw=${buffer.toString('hex')}]`, NS);
17
+ // this.push(buffer);
18
+ this.emit('data', buffer);
19
+ }
20
+ writeByte(byte) {
21
+ this.bytesToWrite.push(byte);
22
+ }
23
+ writeAvailable() {
24
+ if (this.readableLength < this.readableHighWaterMark) {
25
+ return true;
26
+ }
27
+ else {
28
+ this.writeFlush();
29
+ return false;
30
+ }
31
+ }
32
+ /**
33
+ * If there is anything to send, send to the port.
34
+ */
35
+ writeFlush() {
36
+ if (this.bytesToWrite.length) {
37
+ this.writeBytes();
38
+ }
39
+ }
40
+ _read() { }
41
+ }
42
+ exports.ZBOSSWriter = ZBOSSWriter;
43
+ //# sourceMappingURL=writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/adapter/zboss/writer.ts"],"names":[],"mappings":";AAAA,0BAA0B;;;AAE1B,mCAAiD;AAEjD,MAAa,WAAY,SAAQ,iBAAQ;IAC7B,YAAY,CAAW;IAE/B,YAAY,IAAsB;QAC9B,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IAC3B,CAAC;IAEO,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,+DAA+D;QAC/D,kEAAkE;QAElE,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEM,SAAS,CAAC,IAAY;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,cAAc;QACjB,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;OAEG;IACI,UAAU;QACb,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC;IACL,CAAC;IAEM,KAAK,KAAU,CAAC;CAC1B;AA5CD,kCA4CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../../../src/zspec/zcl/definition/cluster.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,iBAAiB,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAExD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CA6nK/E,CAAC"}
1
+ {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../../../src/zspec/zcl/definition/cluster.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,iBAAiB,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAExD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CA0gK/E,CAAC"}